{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "ds-header",
  "title": "Header",
  "description": "Container semântico banner com variantes default/blurred/transparent/solid, sticky, tamanhos sm/md/lg e skip link i18n. Base para todos os headers.",
  "dependencies": [
    "class-variance-authority"
  ],
  "registryDependencies": [
    "@lema-ds/ui-i18n",
    "@lema-ds/ds-locale-provider"
  ],
  "files": [
    {
      "path": "components/ds/ds-header.tsx",
      "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\nimport { UI_I18N, type UILocale } from \"@/lib/ui-i18n\"\nimport { useUILocale } from \"@/components/ui/ds-locale-provider\"\n\n// ── Types ──────────────────────────────────────────────────────────────────\n\nexport interface HeaderProps\n  extends\n    React.HTMLAttributes<HTMLElement>,\n    VariantProps<typeof headerVariants> {\n  /** Makes header stick to top */\n  sticky?: boolean\n  /** Show border bottom */\n  bordered?: boolean\n  locale?: UILocale\n  /** Skip link target id */\n  skipLinkTarget?: string\n}\n\nexport interface HeaderContainerProps\n  extends\n    React.HTMLAttributes<HTMLDivElement>,\n    VariantProps<typeof headerContainerVariants> {}\n\n// ── Variants ───────────────────────────────────────────────────────────────\n\nexport const headerVariants = cva(\n  \"relative w-full border-border bg-background\",\n  {\n    variants: {\n      variant: {\n        default: \"border-b\",\n        blurred:\n          \"border-b bg-background/80 backdrop-blur-xl supports-[backdrop-filter]:bg-background/60\",\n        transparent: \"border-transparent bg-transparent\",\n        solid: \"border-b bg-card shadow-sm\",\n      },\n      size: {\n        sm: \"\",\n        md: \"\",\n        lg: \"\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"md\",\n    },\n  }\n)\n\nexport const headerContainerVariants = cva(\n  \"mx-auto flex w-full max-w-7xl items-center justify-between gap-4\",\n  {\n    variants: {\n      size: {\n        sm: \"h-14 px-4\",\n        md: \"h-16 px-4 sm:px-6\",\n        lg: \"h-20 px-4 sm:px-6 lg:px-8\",\n      },\n    },\n    defaultVariants: {\n      size: \"md\",\n    },\n  }\n)\n\n// ── Context ────────────────────────────────────────────────────────────────\n\ntype HeaderContextValue = {\n  size: \"sm\" | \"md\" | \"lg\"\n}\n\nconst HeaderContext = React.createContext<HeaderContextValue>({\n  size: \"md\",\n})\n\nexport function useHeaderContext() {\n  return React.useContext(HeaderContext)\n}\n\n// ── Component ──────────────────────────────────────────────────────────────\n\nexport const Header = React.forwardRef<HTMLElement, HeaderProps>(\n  (\n    {\n      className,\n      variant = \"default\",\n      size = \"md\",\n      sticky = true,\n      bordered = true,\n      locale: localeProp,\n      skipLinkTarget = \"main-content\",\n      children,\n      ...props\n    },\n    ref\n  ) => {\n    const locale = useUILocale(localeProp)\n    return (\n      <HeaderContext.Provider value={{ size: size ?? \"md\" }}>\n        <header\n          ref={ref}\n          data-slot=\"header\"\n          data-variant={variant}\n          data-size={size}\n          role=\"banner\"\n          className={cn(\n            headerVariants({ variant, size }),\n            sticky && \"sticky top-0 z-40\",\n            !bordered && \"border-transparent\",\n            className\n          )}\n          {...props}\n        >\n          <a\n            href={`#${skipLinkTarget}`}\n            className=\"sr-only focus:not-sr-only focus:absolute focus:top-2 focus:left-2 focus:z-50 focus:rounded-md focus:bg-primary focus:px-4 focus:py-2 focus:text-sm focus:font-medium focus:text-primary-foreground focus:ring-2 focus:ring-ring focus:ring-offset-2\"\n          >\n            {UI_I18N[locale].header.skipToContent}\n          </a>\n          {children}\n        </header>\n      </HeaderContext.Provider>\n    )\n  }\n)\nHeader.displayName = \"Header\"\n\nexport const HeaderContainer = React.forwardRef<\n  HTMLDivElement,\n  HeaderContainerProps\n>(({ className, size, children, ...props }, ref) => {\n  const ctx = useHeaderContext()\n  const resolvedSize = size ?? ctx.size\n  return (\n    <div\n      ref={ref}\n      data-slot=\"header-container\"\n      className={cn(headerContainerVariants({ size: resolvedSize }), className)}\n      {...props}\n    >\n      {children}\n    </div>\n  )\n})\nHeaderContainer.displayName = \"HeaderContainer\"\n",
      "type": "registry:ui"
    }
  ],
  "type": "registry:ui"
}
