import * as class_variance_authority_types from 'class-variance-authority/types'; import { VariantProps } from 'class-variance-authority'; import React__default from 'react'; import { BadgeProps } from './badge.js'; import { Link } from './link.js'; import '@base-ui/react/button'; /** * Surface colours the header can be themed with, sharing the Masthead's and * SkipLink's four-name vocabulary (`dark`, `light`, `white`, `grey`) — the three * components stack at the top of the page and a service picks one word for the * whole chrome. * * Every pair is WCAG 2.2 AAA (1.4.6, 7:1), computed from the masterbrand oklch * tokens. Light mode: grey-800 on white 15.1:1, grey-800 on grey-100 13.8:1, * white on primary-800 14.4:1, white on grey-800 15.1:1. Dark mode deepens each * surface onto the same family's dark step and clears AAA more comfortably * still (17.2:1–20.2:1). * * Unlike the Masthead — a brand strip whose light/white/grey surfaces are frozen * across themes — the header is the page's own surface, so all four follow the * theme. Pair `Header color="dark"` with `Masthead color="dark"` when a service * wants the two to match in both modes. */ declare const headerColors: { dark: string; light: string; white: string; grey: string; }; type HeaderColor = keyof typeof headerColors; declare const headerVariants: (props?: ({ color?: "white" | "grey" | "light" | "dark" | null | undefined; } & class_variance_authority_types.ClassProp) | undefined) => string; declare const headerContainerVariants: (props?: ({ container?: "fluid" | "contained" | null | undefined; } & class_variance_authority_types.ClassProp) | undefined) => string; type HeaderBrandProps = React__default.ComponentPropsWithoutRef<'div'> & { /** Home-page target for the brand link. Defaults to `/`. */ href?: React__default.ComponentPropsWithoutRef['href']; /** * Service or site name shown beside the logo. Renders as a ``, never a * heading: the brand sits in the `banner` landmark ahead of `
`, so any * heading here would land in the outline *before* the page's own `

` — * the first heading a screen-reader user meets would be the site name * repeated on every page, and the outline would open at a lower level and * then jump up to 1. The heading that describes the page belongs to its main * content. */ sitename?: React__default.ReactNode; /** * Version string shown in a Badge beside the brand. Sits outside the link, * so it never becomes part of the home link's accessible name. */ version?: React__default.ReactNode; /** * Visually-hidden prefix announced before `version`, giving the bare number * context for screen readers ("2.1.0" → "Version 2.1.0"). Pass an empty * string to suppress. */ versionLabel?: string; /** * Props forwarded to the version `Badge` — `size`, `color`, `variant`, * `className` and the rest of its API. Use it when the badge has to meet a * house rule the default does not, most often a minimum type size: * * ```tsx * * ``` * * An explicit value always wins — including `color`, whose surface-aware * default exists to stop the badge painting itself the same colour as a dark * header. Overriding it is the same trade as supplying your own `logo` node: * the contrast is then yours to check. * * `undefined` and `null` do *not* win: they fall back to the defaults, so a * conditional like `{ color: cond ? 'accent' : undefined }` keeps the * surface-aware colour on the falsy branch rather than dropping the badge to * cva's own `primary` default. * * `children` is excluded — the badge's content is `version` and * `versionLabel`. */ badgeProps?: Omit; /** * `true` (default) renders the NSW Government waratah, `false` omits it, and * a node replaces it — pass an agency lockup here. */ logo?: boolean | React__default.ReactNode; /** * Accessible name for the brand link. Left unset by default: the link's name * is then its visible content — "NSW Government" (from `Logo`'s * visually-hidden text) plus `sitename` — which keeps the visible label * inside the accessible name (WCAG 2.2, 2.5.3 Label in Name). Overriding it * with something like "Home page" would break that, so set it only when the * brand renders no text at all. */ label?: string; ref?: React__default.Ref; }; /** * Logo, site name and optional version badge, linked to the home page. Sits at * the start of the `Header` row. * * The link renders through `Link`, so it picks up the framework link component * from `LinkProvider` (next/link et al) rather than hardcoding one. */ declare function HeaderBrand({ className, href, sitename, version, versionLabel, badgeProps, logo, label, children, ref, ...props }: HeaderBrandProps): React__default.JSX.Element; type HeaderActionsProps = React__default.ComponentPropsWithoutRef<'div'> & { ref?: React__default.Ref; }; /** * Trailing cluster of header controls — search, theme switcher, sign-in, and * the like. Deliberately unopinionated about what goes in it: site search and * theme switching are app concerns (they need routing and a theme provider), * so the design system supplies the slot and its spacing rather than the * widgets. * * Not a `nav` landmark: a row of controls is not a set of navigation links, and * an extra landmark on every page buries the ones that matter. Wrap genuine * navigation in your own `