import { ReactElement, ReactNode } from "react"; //#region src/components/landing.d.ts /** * A home screen's one shape: a greeting and a box in the upper fold, three * columns of what the reader reaches from it below. The chat home and the * law home render from these, so a reader who has learned one has learned * the other, and the two cannot drift apart. */ type LandingLayoutProps = { /** Header-slot actions that belong to the page rather than the fold. */ actions?: ReactNode | undefined; /** The greeting and the box; centred in the upper fold. */ hero: ReactNode; /** The columns; take the rest of the height, each scrolling on its own. */ children: ReactNode; /** Below the columns, in its own bounded scroll: crawlable navigation. */ footer?: ReactNode | undefined; }; export declare const LandingLayout: ({ actions, hero, children, footer }: LandingLayoutProps) => import("react").JSX.Element; type LandingGreetingProps = { /** The mark in the tile: the product mark, or the section's icon. */ icon: ReactNode; /** The one line under the tile, as the page's heading. */ children: ReactNode; }; export declare const LandingGreeting: ({ icon, children }: LandingGreetingProps) => import("react").JSX.Element; /** A column's heading: an icon and a sentence-case label, as a link or a trigger. */ export declare const LANDING_SECTION_HEADING_CLASS = "text-foreground hover:bg-accent/50 focus-visible:ring-ring [&>svg]:text-muted-foreground flex items-center gap-2 rounded-md px-2 py-0.5 text-sm font-semibold outline-none focus-visible:ring-2"; /** A row of a column, as a link or a button. Its text lines up with the * heading's label; the icon slot under the heading icon stays empty unless * the icon identifies the row (a matter's colour). */ export declare const LANDING_ROW_CLASS = "group hover:bg-accent/50 focus-visible:ring-ring rounded-md px-2 py-1.5 text-start outline-none focus-visible:ring-2"; type LandingSectionProps = { children: ReactNode; heading: ReactNode; }; /** A column: its heading stays put, its rows scroll beneath it. The rows get * the same ring room as the hero box, since the viewport clips a flush row's * focus ring; the heading takes the same inset so the labels stay aligned. */ export declare const LandingSection: ({ children, heading }: LandingSectionProps) => import("react").JSX.Element; type LandingButtonProps = { icon?: ReactElement; meta?: ReactNode | undefined; onClick: () => void; title: ReactNode; }; export declare const LandingButton: ({ icon, meta, onClick, title }: LandingButtonProps) => import("react").JSX.Element; type LandingItemTextProps = { icon?: ReactElement; iconTone?: "muted" | "matter" | undefined; meta?: ReactNode | undefined; title: ReactNode; }; export declare const LandingItemText: ({ icon, iconTone, meta, title }: LandingItemTextProps) => import("react").JSX.Element; type LandingRowIconProps = { children: ReactElement; tone?: "muted" | "matter" | undefined; }; export declare const LandingRowIcon: ({ children, tone }: LandingRowIconProps) => import("react").JSX.Element; type LandingEmptyProps = { children: ReactNode; }; export declare const LandingEmpty: ({ children }: LandingEmptyProps) => import("react").JSX.Element; //#endregion