{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "layout",
  "dependencies": [
    "@lexingtonthemes/seo"
  ],
  "files": [
    {
      "path": "src/components/ui/layout/layout.astro",
      "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport \"@/styles/global.css\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"html\">\n\nconst { class: className, lang, ...props } = Astro.props\n---\n\n<html\n  class={cn(\n    \"bg-background text-foreground has-data-[variant=inset]:bg-sidebar overscroll-none scroll-smooth\",\n    className\n  )}\n  data-slot=\"layout\"\n  lang={Astro.currentLocale || \"en\"}\n  {...props}\n>\n  <slot />\n</html>\n\n<style is:global>\n  :root {\n    --container: 1280px;\n    color-scheme: light;\n  }\n\n  .dark {\n    color-scheme: dark;\n  }\n</style>\n",
      "type": "registry:ui"
    },
    {
      "path": "src/components/ui/layout/layout-head.astro",
      "content": "---\nimport type { ImageMetadata } from \"astro\"\nimport { getImage } from \"astro:assets\"\nimport { AstroSeo } from \"@lexingtonthemes/seo\"\n\ntype Props = {\n  name?: string\n  title?: string\n  description?: string\n  image?: {\n    src?: ImageMetadata | string\n    alt?: string\n  }\n  noindex?: boolean\n  nofollow?: boolean\n  canonical?: string\n}\n\nconst baseUrl = Astro.site?.origin || Astro.url.origin\nconst pagePathname = Astro.url.pathname.endsWith(\"/\")\n  ? Astro.url.pathname\n  : `${Astro.url.pathname}/`\n\nconst {\n  name,\n  title,\n  description,\n  image,\n  noindex,\n  nofollow,\n  canonical,\n  ...props\n} = Astro.props\n\nconst resolvedCanonical = new URL(canonical || pagePathname, baseUrl).toString()\n\nconst toImageMimeType = (format?: string) => {\n  if (!format) return undefined\n  if (format.includes(\"/\")) return format\n  if (format === \"jpg\") return \"image/jpeg\"\n  return `image/${format}`\n}\n\nconst transformedImage =\n  image?.src && typeof image.src !== \"string\"\n    ? await getImage({\n        src: image.src,\n        format: \"png\",\n        width: 1200,\n        height: 630,\n        quality: \"medium\",\n      })\n    : undefined\n\nconst openGraphImage =\n  typeof image?.src === \"string\"\n    ? {\n        url: new URL(image.src, baseUrl).toString(),\n        alt: image.alt,\n      }\n    : transformedImage\n      ? {\n          url: new URL(transformedImage.src, baseUrl).toString(),\n          alt: image?.alt,\n          width: transformedImage.attributes.width,\n          height: transformedImage.attributes.height,\n          type: toImageMimeType(transformedImage.attributes.format),\n        }\n      : undefined\n---\n\n<head data-slot=\"layout-head\" {...props}>\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n  <meta name=\"generator\" content={Astro.generator} />\n  <meta charset=\"utf-8\" />\n  <AstroSeo\n    title={title}\n    description={description}\n    canonical={resolvedCanonical}\n    noindex={noindex}\n    nofollow={nofollow}\n    openGraph={{\n      url: resolvedCanonical,\n      type: \"website\",\n      ...(name && { site_name: name }),\n      ...(openGraphImage && {\n        images: [\n          {\n            ...openGraphImage,\n            ...(openGraphImage.url.startsWith(\"https://\") && {\n              secureUrl: openGraphImage.url,\n            }),\n          },\n        ],\n      }),\n    }}\n  />\n  <slot name=\"head\" />\n  <slot />\n</head>\n",
      "type": "registry:ui"
    },
    {
      "path": "src/components/ui/layout/layout-body.astro",
      "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"body\">\n\nconst { class: className, ...props } = Astro.props\n---\n\n<body\n  class={cn(\n    \"bg-background text-foreground overscroll-none antialiased\",\n    className\n  )}\n  data-slot=\"layout-body\"\n  {...props}\n>\n  <slot />\n</body>\n\n<style is:global>\n  body {\n    font-family: var(--font-sans), ui-sans-serif, system-ui, sans-serif;\n  }\n</style>\n",
      "type": "registry:ui"
    },
    {
      "path": "src/components/ui/layout/layout-main.astro",
      "content": "---\nimport type { HTMLAttributes } from \"astro/types\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype Props = HTMLAttributes<\"main\">\n\nconst { class: className, ...props } = Astro.props\n---\n\n<main\n  data-slot=\"layout-main\"\n  class={cn(\n    \"@container flex flex-col in-data-[slot=sidebar-inset]:rounded-[inherit]\",\n    className\n  )}\n  {...props}\n>\n  <slot />\n</main>\n",
      "type": "registry:ui"
    },
    {
      "path": "src/components/ui/layout/index.ts",
      "content": "export { default as Layout } from \"./layout.astro\"\nexport { default as LayoutBody } from \"./layout-body.astro\"\nexport { default as LayoutHead } from \"./layout-head.astro\"\nexport { default as LayoutMain } from \"./layout-main.astro\"\n",
      "type": "registry:ui"
    }
  ],
  "type": "registry:ui"
}