import { type AnchorHTMLAttributes, type ComponentPropsWithoutRef, type ReactNode } from 'react'; import { type VariantProps } from 'class-variance-authority'; export interface PublicHeaderHandle { openMenu: () => void; closeMenu: () => void; getMenuOpen: () => boolean; } export interface PublicHeaderProps extends Omit, 'children'>, VariantProps { /** Logo lockup, typically ``. */ logo: ReactNode; /** Optional href for the logo link. Defaults to `/`. */ homeHref?: string; /** Accessible label for the logo link (falls back to `t('publicHeader.homeLabel')`). */ homeLabel?: string; /** Primary nav links rendered inline ≥ md, collapsed into the mobile sheet below md. */ navSlot?: ReactNode; /** Right-side actions (sign-in / register / role-switch CTAs). */ actionsSlot?: ReactNode; /** Sticky behaviour. Default `none`. */ sticky?: 'none' | 'top' | 'scroll-up'; /** Pixel offset above which `sticky="scroll-up"` engages and `transparent` fades to default. */ stickyOffset?: number; /** Override the mobile menu trigger's accessible label (`t('publicHeader.openMenu')`). */ menuLabel?: string; /** Override the navigation landmark label (`t('publicHeader.primaryNavLabel')`). */ navLabel?: string; /** * Keep `actionsSlot` visible inline at every breakpoint instead of * collapsing it into the mobile menu. When there is no `navSlot`, the * mobile menu trigger is omitted entirely (nothing left to collapse) — use * this for a header whose only action is a single always-relevant control, * e.g. a public signer's "Sign out". Default `false`. */ persistActions?: boolean; /** Consumer-supplied instance id, surfaced as `data-component-id`. */ id?: string; } export interface PublicHeaderNavLinkProps extends Omit, 'children'> { href: string; active?: boolean; children: ReactNode; } export interface PublicHeaderNavDropdownProps { /** Trigger label (the visible nav item text). */ label: ReactNode; /** * `false` (default) renders a single-card dropdown anchored near the trigger * (Settori-style). `true` renders a wide multi-card mega-menu spanning the * pill's full inline width (Soluzioni-style). */ wide?: boolean; /** Cards / content inside the dropdown panel. */ children: ReactNode; /** Optional id; not required — used only for analytics / test selectors. */ id?: string; } export interface PublicHeaderDropdownCardProps { /** * Optional href — when provided the card title becomes a clickable * anchor with a `→` arrow indicator. Without href, the title is * a static heading (Settori-style). */ href?: string; title: ReactNode; /** Optional subtitle / muted helper text under the title. */ subtitle?: ReactNode; /** Sub-list contents (typically PublicHeader.DropdownLink children). */ children?: ReactNode; } export interface PublicHeaderDropdownLinkProps extends Omit, 'children'> { href: string; active?: boolean; children: ReactNode; } declare const rootVariants: (props?: ({ variant?: "dark" | "transparent" | "brand" | "pill" | null | undefined; sticky?: "top" | "none" | "scroll-up" | null | undefined; } & import("class-variance-authority/types").ClassProp) | undefined) => string; export declare const PublicHeader: import("react").ForwardRefExoticComponent> & { NavLink: import("react").ForwardRefExoticComponent>; NavDropdown: import("react").ForwardRefExoticComponent>; DropdownCard: import("react").ForwardRefExoticComponent>; DropdownLink: import("react").ForwardRefExoticComponent>; }; export {}; //# sourceMappingURL=public-header.d.ts.map