@nordcom/nordstar
Version:
An opinionated component library for building human-centric user interfaces.
596 lines (524 loc) • 25.7 kB
TypeScript
import { ClassProp } from 'class-variance-authority/types';
import { ClassValue } from 'clsx';
import { ComponentProps } from 'react';
import { ComponentPropsWithoutRef } from 'react';
import { ElementType } from 'react';
import { FC } from 'react';
import { ForwardRefExoticComponent } from 'react';
import { ForwardRefRenderFunction } from 'react';
import { HTMLAttributes } from 'react';
import { HTMLInputTypeAttribute } from 'react';
import { JSX } from 'react';
import * as Primitive from '@radix-ui/react-accordion';
import * as Primitive_2 from '@radix-ui/react-dropdown-menu';
import * as Primitive_3 from '@radix-ui/react-select';
import * as Primitive_4 from '@radix-ui/react-switch';
import * as Primitive_5 from '@radix-ui/react-tooltip';
import { PropsWithoutRef } from 'react';
import { ReactElement } from 'react';
import { ReactNode } from 'react';
import { RefAttributes } from 'react';
import { VariantProps } from 'class-variance-authority';
import { WeakValidationMap } from 'prop-types';
/**
* `<Accented/>`, a transparent inline wrapper that highlights text with an accent color.
*
* @remarks
* Renders with `display: contents`, so it only affects inherited properties such as
* `color`. Box-level utilities (padding, background, borders) passed via `className`
* have no effect unless `display` is also overridden.
*
* @param {object} props - `<Accented/>` props.
* @param {As} [props.as='span'] - The element to render the component as.
* @param {NordstarColor} [props.color='primary'] - The accent color; `default` inherits the surrounding color.
* @returns {React.ReactNode} The `<Accented/>` component.
*/
export declare const Accented: InternalForwardRefRenderFunction<"span", AccentedProps, never>;
export declare type AccentedProps = {
as?: As;
color?: NordstarColor;
};
/**
* `<Accordion/>`, a vertically stacked set of collapsible sections.
*
* Wraps `@radix-ui/react-accordion` as a compound component: compose `Accordion` with
* `Accordion.Item`s, each holding an `Accordion.Trigger` and `Accordion.Content`. Set `type="single"`
* (optionally `collapsible`) to allow one open section at a time, or `type="multiple"` for several.
* Radix handles the disclosure semantics, roving focus, and keyboard navigation; the surface is
* re-fitted to the Nordstar token contract, and the trigger chevron rotates on open.
*
* @param {object} props - Every `@radix-ui/react-accordion` Root prop (`type`, `collapsible`, `value`, …).
* @returns {React.ReactNode} The accordion root that scopes its items.
*
* @example
* ```tsx
* <Accordion type="single" collapsible>
* <Accordion.Item value="a">
* <Accordion.Trigger>Shipping</Accordion.Trigger>
* <Accordion.Content>Ships in 1–2 business days.</Accordion.Content>
* </Accordion.Item>
* </Accordion>
* ```
*/
export declare const Accordion: ((props: AccordionProps) => JSX.Element) & {
Content: ForwardRefExoticComponent<Omit<Primitive.AccordionContentProps & RefAttributes<HTMLDivElement>, "ref"> & RefAttributes<HTMLDivElement>>;
displayName: string;
Item: ForwardRefExoticComponent<Omit<Primitive.AccordionItemProps & RefAttributes<HTMLDivElement>, "ref"> & RefAttributes<HTMLDivElement>>;
Trigger: ForwardRefExoticComponent<Omit<Primitive.AccordionTriggerProps & RefAttributes<HTMLButtonElement>, "ref"> & RefAttributes<HTMLButtonElement>>;
};
export declare type AccordionContentProps = ComponentPropsWithoutRef<typeof Primitive.Content>;
export declare type AccordionItemProps = ComponentPropsWithoutRef<typeof Primitive.Item>;
export declare type AccordionProps = ComponentPropsWithoutRef<typeof Primitive.Root>;
export declare type AccordionTriggerProps = ComponentPropsWithoutRef<typeof Primitive.Trigger>;
export declare type As = ElementType;
export declare const Button: InternalForwardRefRenderFunction<"button", ButtonProps, never> & {
displayName: string;
};
declare type ButtonBaseProps = {
as?: As;
variant?: 'outline' | 'solid';
color?: NordstarColor;
icon?: ReactNode;
disabled?: boolean;
contentClassName?: string;
} & Omit<VariantProps<typeof variants>, 'color'>;
declare type ButtonIconProps = {
icon: ReactNode;
iconClassName?: string;
};
declare type ButtonNoIconProps = {
icon?: undefined;
iconClassName?: never;
};
export declare type ButtonProps = ButtonBaseProps & (ButtonIconProps | ButtonNoIconProps);
export declare const Card: InternalForwardRefRenderFunction<"section", CardProps, never> & {
Divider: (({ className, ...props }: CardDividerProps) => JSX.Element) & {
displayName: string;
};
displayName: string;
Header: (({ children, className, ...props }: HeaderProps_2) => JSX.Element) & {
displayName: string;
};
};
export declare type CardDividerProps = {} & ComponentProps<'hr'>;
export declare type CardProps = {
as?: As;
variant?: 'outline' | 'solid';
color?: NordstarColor;
borderless?: boolean;
padding?: boolean;
style?: CSSCustomProperties;
} & Omit<VariantProps<typeof variants_2>, 'color'>;
export declare function cn(...inputs: ClassValue[]): string | undefined;
export declare type CSSCustomProperties = {
[key: `--${string}`]: string | number;
} & React.CSSProperties;
export declare const Details: InternalForwardRefRenderFunction<"details", DetailsProps, never> & {
displayName: string;
};
export declare type DetailsProps = {
label: string;
style?: CSSCustomProperties;
};
/**
* `<DropdownMenu/>`, a menu of actions revealed by a trigger button.
*
* Wraps `@radix-ui/react-dropdown-menu` as a compound component. Compose `DropdownMenu` with
* `DropdownMenu.Trigger` and `DropdownMenu.Content`, then fill the content with `DropdownMenu.Item`s,
* `DropdownMenu.CheckboxItem`s, a `DropdownMenu.RadioGroup` of `DropdownMenu.RadioItem`s, and
* `DropdownMenu.Label`/`DropdownMenu.Separator` for structure. Nested `DropdownMenu.Sub` +
* `DropdownMenu.SubTrigger`/`DropdownMenu.SubContent` build submenus. Radix supplies the menu role,
* roving focus, typeahead, and pointer/keyboard dismissal; the surface is re-fitted to the Nordstar
* token contract and all indicator icons are inlined (no icon dependency).
*
* @param {object} props - Every `@radix-ui/react-dropdown-menu` Root prop (`open`, `modal`, …).
* @returns {React.ReactNode} The dropdown-menu root that scopes a trigger/content pair.
*
* @example
* ```tsx
* <DropdownMenu>
* <DropdownMenu.Trigger>Open</DropdownMenu.Trigger>
* <DropdownMenu.Content>
* <DropdownMenu.Item onSelect={save}>Save</DropdownMenu.Item>
* <DropdownMenu.Separator />
* <DropdownMenu.Item onSelect={remove}>Delete</DropdownMenu.Item>
* </DropdownMenu.Content>
* </DropdownMenu>
* ```
*/
export declare const DropdownMenu: ((props: DropdownMenuProps) => JSX.Element) & {
CheckboxItem: ForwardRefExoticComponent<Omit<Primitive_2.DropdownMenuCheckboxItemProps & RefAttributes<HTMLDivElement>, "ref"> & RefAttributes<HTMLDivElement>>;
Content: ForwardRefExoticComponent<Omit<Primitive_2.DropdownMenuContentProps & RefAttributes<HTMLDivElement>, "ref"> & RefAttributes<HTMLDivElement>>;
displayName: string;
Group: ForwardRefExoticComponent<Primitive_2.DropdownMenuGroupProps & RefAttributes<HTMLDivElement>>;
Item: ForwardRefExoticComponent<Omit<Primitive_2.DropdownMenuItemProps & RefAttributes<HTMLDivElement>, "ref"> & {
inset?: boolean;
} & RefAttributes<HTMLDivElement>>;
Label: ForwardRefExoticComponent<Omit<Primitive_2.DropdownMenuLabelProps & RefAttributes<HTMLDivElement>, "ref"> & {
inset?: boolean;
} & RefAttributes<HTMLDivElement>>;
RadioGroup: ForwardRefExoticComponent<Primitive_2.DropdownMenuRadioGroupProps & RefAttributes<HTMLDivElement>>;
RadioItem: ForwardRefExoticComponent<Omit<Primitive_2.DropdownMenuRadioItemProps & RefAttributes<HTMLDivElement>, "ref"> & RefAttributes<HTMLDivElement>>;
Separator: ForwardRefExoticComponent<Omit<Primitive_2.DropdownMenuSeparatorProps & RefAttributes<HTMLDivElement>, "ref"> & RefAttributes<HTMLDivElement>>;
Sub: FC<Primitive_2.DropdownMenuSubProps>;
SubContent: ForwardRefExoticComponent<Omit<Primitive_2.DropdownMenuSubContentProps & RefAttributes<HTMLDivElement>, "ref"> & RefAttributes<HTMLDivElement>>;
SubTrigger: ForwardRefExoticComponent<Omit<Primitive_2.DropdownMenuSubTriggerProps & RefAttributes<HTMLDivElement>, "ref"> & {
inset?: boolean;
} & RefAttributes<HTMLDivElement>>;
Trigger: ForwardRefExoticComponent<Primitive_2.DropdownMenuTriggerProps & RefAttributes<HTMLButtonElement>>;
};
export declare type DropdownMenuContentProps = ComponentPropsWithoutRef<typeof Primitive_2.Content>;
export declare type DropdownMenuItemProps = ComponentPropsWithoutRef<typeof Primitive_2.Item> & {
inset?: boolean;
};
export declare type DropdownMenuLabelProps = ComponentPropsWithoutRef<typeof Primitive_2.Label> & {
inset?: boolean;
};
export declare type DropdownMenuProps = ComponentPropsWithoutRef<typeof Primitive_2.Root>;
export declare function forwardRef<Component extends As, Props extends object, OmitKeys extends PropertyKey = never>(component: ForwardRefRenderFunction<unknown, PropsWithoutRef<RightJoinProps<PropsOf<Component>, Props> & {
as?: As;
}>>): InternalForwardRefRenderFunction<Component, Props, OmitKeys>;
export declare const Header: InternalForwardRefRenderFunction<"header", HeaderProps, never> & {
displayName: string;
Logo: InternalForwardRefRenderFunction<"section", HeaderLogoProps, never> & {
displayName: string;
};
Menu: InternalForwardRefRenderFunction<"nav", HeaderMenuProps, never> & {
displayName: string;
Link: InternalForwardRefRenderFunction<"a", HeaderMenuLinkProps, never> & {
displayName: string;
};
};
};
export declare type HeaderLogoProps = {
as?: As;
} & ComponentProps<'section'>;
export declare type HeaderMenuLinkProps = {
as?: As;
};
export declare type HeaderMenuProps = {
as?: As;
overflowShadow?: boolean;
};
export declare type HeaderProps = {
sticky?: boolean;
style?: CSSCustomProperties | undefined;
} & Omit<ComponentProps<'header'>, 'color'>;
declare type HeaderProps_2 = {} & HTMLAttributes<HTMLDivElement>;
/**
* `<Heading/>`, a component to render headings.
*
* @param {object} props - `<Heading/>` props.
* @param {string} [props.level='h1'] - The level of the heading.
* @param {As} [props.as] - The element to render the component as.
* @returns {ReactNode} The `<Heading/>` component.
*/
export declare const Heading: InternalForwardRefRenderFunction<"h1", HeadingProps, never>;
export declare type HeadingProps = {
level?: 'h1' | 'h2' | 'h3' | 'h4';
as?: As;
};
export declare const Input: InternalForwardRefRenderFunction<"textarea" | "input", InputProps<As>, never> & {
displayName: string;
};
declare type InputBaseProps = {
color?: NordstarColor;
label?: string;
} & Omit<VariantProps<typeof variants_3>, 'color'>;
declare type InputNumberProps = {
as?: Exclude<As, 'textarea'>;
value?: number;
defaultValue?: number;
type: 'number';
min?: number;
max?: number;
};
export declare type InputProps<T extends As> = InputBaseProps & (T extends 'textarea' ? InputTextAreaProps : T extends 'number' ? InputNumberProps : InputTextProps);
declare type InputTextAreaProps = {
as: 'textarea';
value?: string;
defaultValue?: string;
type?: never;
};
declare type InputTextProps = {
as?: Exclude<As, 'textarea'>;
value?: string;
defaultValue?: string;
type?: Exclude<HTMLInputTypeAttribute, 'number'>;
};
export declare type InternalForwardRefRenderFunction<Component extends As, Props extends object = {}, OmitKeys extends PropertyKey = never> = {
<AsComponent extends As = Component>(props: MergeWithAs<ComponentPropsWithoutRef<Component>, Omit<ComponentPropsWithoutRef<AsComponent>, OmitKeys>, Props, AsComponent>): ReactElement | null;
readonly $$typeof: symbol;
defaultProps?: Partial<Props> | undefined;
propTypes?: WeakValidationMap<Props> | undefined;
displayName?: string | undefined;
};
/**
* `<Kbd/>`, a keyboard-key indicator for documenting shortcuts.
*
* Renders a real `<kbd>` element by default so the markup is semantically a keyboard input
* and assistive tech announces it as such. The chip mirrors Nordstar's bordered, high-contrast
* surface language; pass `size` to fit it inline with surrounding text or in denser menus.
*
* @param {object} props - `<Kbd/>` props.
* @param {As} [props.as='kbd'] - The element to render the component as.
* @param {'sm' | 'md'} [props.size='md'] - The chip size.
* @returns {React.ReactNode} The `<Kbd/>` component.
*
* @example
* ```tsx
* <Kbd>⌘K</Kbd>
* <Kbd size="sm">Esc</Kbd>
* ```
*/
export declare const Kbd: InternalForwardRefRenderFunction<"kbd", KbdProps, never>;
export declare type KbdProps = {
as?: As;
/** Size of the key chip. Defaults to `'md'`. */
size?: 'sm' | 'md';
};
export declare const Label: InternalForwardRefRenderFunction<"label", LabelProps, never>;
export declare type LabelProps = {
as?: As;
color?: NordstarColor;
children?: ReactNode;
};
export declare type MergeWithAs<ComponentProps extends object, AsProps extends object, AdditionalProps extends object = {}, AsComponent extends As = As> = (RightJoinProps<ComponentProps, AdditionalProps> | RightJoinProps<AsProps, AdditionalProps>) & {
as?: AsComponent;
};
export declare type NordstarColor = 'default' | 'foreground' | 'primary' | 'secondary';
/**
* `<NordstarProvider/>`, a component that should wrap the entire application.
* @note When using Next.js make sure to to extract all providers into a client component used inside of your `RootLayout`.
*
* @param {object} props - `<NordstarProvider/>` props.
* @param {ReactNode | ReactNode[]} props.children - The children of the `<NordstarProvider/>` component.
* @param {string | undefined} [props.className] - The class name for the wrapper element.
* @param {NordstarTheme} [props.theme] - The theme to use for the application.
* @returns {ReactNode} The `<NordstarProvider/>` component.
*/
export declare const NordstarProvider: {
({ theme, children, className, ...props }: NordstarProviderProps): JSX.Element;
displayName: string;
};
export declare type NordstarProviderProps = {
theme: NordstarTheme;
children?: ReactNode | ReactNode[];
} & Omit<HTMLAttributes<HTMLDivElement>, 'children'>;
export declare type NordstarTheme = {
accents: {
primary: string;
secondary: string;
};
colors?: {
background?: string;
backgroundHighlight?: string;
foreground?: string;
foregroundHighlight?: string;
error?: string;
};
fonts: {
heading?: string;
body: string;
code?: string;
};
border?: {
width?: number;
radius?: string;
};
layout?: {
page?: {
width?: string;
spacing?: string;
};
section?: {
spacing?: string;
padding?: string;
};
block?: {
padding?: string;
};
};
duration?: {
short?: string;
medium?: string;
};
};
export declare type OmitCommonProps<Target, OmitAdditionalProps extends PropertyKey = never> = Omit<Target, 'as' | OmitAdditionalProps>;
export declare type PropsOf<T extends As> = ComponentPropsWithoutRef<T> & {
as?: As;
};
export declare type RightJoinProps<SourceProps extends object = {}, OverrideProps extends object = {}> = OmitCommonProps<SourceProps, keyof OverrideProps> & OverrideProps;
/**
* `<Select/>`, a dropdown for choosing a single option from a list.
*
* Wraps `@radix-ui/react-select` as a compound component: compose `Select` with `Select.Trigger`
* (which holds a `Select.Value`), then a `Select.Content` of `Select.Item`s, optionally organised
* with `Select.Group`, `Select.Label`, and `Select.Separator`. Radix provides typeahead, full
* keyboard control, collision-aware positioning, and native form integration; the surface is
* re-fitted to the Nordstar token contract. Controlled (`value` + `onValueChange`) and uncontrolled
* (`defaultValue`) usage both work.
*
* @param {object} props - Every `@radix-ui/react-select` Root prop.
* @returns {React.ReactNode} The select root that scopes a single trigger/content pair.
*
* @example
* ```tsx
* <Select defaultValue="apple">
* <Select.Trigger><Select.Value placeholder="Pick a fruit" /></Select.Trigger>
* <Select.Content>
* <Select.Item value="apple">Apple</Select.Item>
* <Select.Item value="pear">Pear</Select.Item>
* </Select.Content>
* </Select>
* ```
*/
export declare const Select: ((props: SelectProps) => JSX.Element) & {
Content: ForwardRefExoticComponent<Omit<Primitive_3.SelectContentProps & RefAttributes<HTMLDivElement>, "ref"> & RefAttributes<HTMLDivElement>>;
displayName: string;
Group: ForwardRefExoticComponent<Primitive_3.SelectGroupProps & RefAttributes<HTMLDivElement>>;
Item: ForwardRefExoticComponent<Omit<Primitive_3.SelectItemProps & RefAttributes<HTMLDivElement>, "ref"> & RefAttributes<HTMLDivElement>>;
Label: ForwardRefExoticComponent<Omit<Primitive_3.SelectLabelProps & RefAttributes<HTMLDivElement>, "ref"> & RefAttributes<HTMLDivElement>>;
Separator: ForwardRefExoticComponent<Omit<Primitive_3.SelectSeparatorProps & RefAttributes<HTMLDivElement>, "ref"> & RefAttributes<HTMLDivElement>>;
Trigger: ForwardRefExoticComponent<Omit<Primitive_3.SelectTriggerProps & RefAttributes<HTMLButtonElement>, "ref"> & RefAttributes<HTMLButtonElement>>;
Value: ForwardRefExoticComponent<Primitive_3.SelectValueProps & RefAttributes<HTMLSpanElement>>;
};
export declare type SelectContentProps = ComponentPropsWithoutRef<typeof Primitive_3.Content>;
export declare type SelectItemProps = ComponentPropsWithoutRef<typeof Primitive_3.Item>;
export declare type SelectProps = ComponentPropsWithoutRef<typeof Primitive_3.Root>;
export declare type SelectTriggerProps = ComponentPropsWithoutRef<typeof Primitive_3.Trigger>;
/**
* `<Separator/>`, a thin rule dividing content along one axis.
*
* Hand-rolled (no Radix dependency): the separator is a single element that mirrors the
* decorative-vs-semantic distinction the WAI-ARIA `separator` role makes. A decorative
* separator is hidden from assistive tech; a non-decorative one is announced with an
* explicit `aria-orientation` so screen-reader users perceive the grouping the line implies.
*
* @param {object} props - `<Separator/>` props.
* @param {As} [props.as='div'] - The element to render the component as.
* @param {'horizontal' | 'vertical'} [props.orientation='horizontal'] - The axis of the rule.
* @param {boolean} [props.decorative=true] - Hide the rule from the accessibility tree.
* @returns {React.ReactNode} The `<Separator/>` component.
*
* @example
* ```tsx
* <Separator />
* <Separator orientation="vertical" decorative={false} />
* ```
*/
export declare const Separator: InternalForwardRefRenderFunction<"div", SeparatorProps, never>;
export declare type SeparatorProps = {
as?: As;
/** Visual and semantic axis of the rule. Defaults to `'horizontal'`. */
orientation?: 'horizontal' | 'vertical';
/**
* When `true` (default) the rule is purely visual and removed from the accessibility
* tree (`role="none"`). Set to `false` when the divider conveys a real grouping
* boundary that assistive tech should announce (`role="separator"`).
*/
decorative?: boolean;
};
/**
* `<Switch/>`, a boolean toggle with an animated thumb that slides between off and on.
*
* Wraps `@radix-ui/react-switch`, so it is keyboard operable (Space/Enter), exposes the correct
* `switch` role and `aria-checked`, and integrates with native forms via `name`/`value`. Controlled
* (`checked` + `onCheckedChange`) and uncontrolled (`defaultChecked`) usage both work. The thumb and
* track are re-fitted to the Nordstar token contract; the `'default'` color resolves to `foreground`.
*
* @param {object} props - `<Switch/>` props. Accepts every `@radix-ui/react-switch` Root prop.
* @param {'sm' | 'md'} [props.size='md'] - The control size.
* @param {NordstarColor} [props.color='primary'] - The checked-state color scheme.
* @returns {React.ReactNode} The `<Switch/>` component.
*
* @example
* ```tsx
* <Switch defaultChecked color="primary" />
* <Switch checked={enabled} onCheckedChange={setEnabled} />
* ```
*/
export declare const Switch: ForwardRefExoticComponent<Omit<Primitive_4.SwitchProps & RefAttributes<HTMLButtonElement>, "ref"> & {
/** Size of the control. Defaults to `'md'`. */
size?: "sm" | "md";
/** Color scheme applied to the checked state. Defaults to `'primary'`. */
color?: NordstarColor;
} & RefAttributes<HTMLButtonElement>>;
export declare type SwitchProps = ComponentPropsWithoutRef<typeof Primitive_4.Root> & {
/** Size of the control. Defaults to `'md'`. */
size?: 'sm' | 'md';
/** Color scheme applied to the checked state. Defaults to `'primary'`. */
color?: NordstarColor;
};
/**
* `<Tooltip/>`, a floating label that explains an element on hover or keyboard focus.
*
* Wraps `@radix-ui/react-tooltip` as a compound component: mount `<Tooltip.Provider>` once near the
* root of the app (or section) to share open/close timing, then compose `<Tooltip>` with
* `<Tooltip.Trigger>` and `<Tooltip.Content>`. Radix handles focus, dismissal, collision-aware
* positioning, and the `aria-describedby` wiring; the content is re-fitted to the Nordstar token
* contract. Tooltips are supplementary — never put essential or interactive content inside one.
*
* @param {object} props - Every `@radix-ui/react-tooltip` Root prop (`open`, `defaultOpen`, `delayDuration`, …).
* @returns {React.ReactNode} The tooltip root that scopes a single trigger/content pair.
*
* @example
* ```tsx
* <Tooltip.Provider>
* <Tooltip>
* <Tooltip.Trigger>Hover me</Tooltip.Trigger>
* <Tooltip.Content>Helpful hint</Tooltip.Content>
* </Tooltip>
* </Tooltip.Provider>
* ```
*/
export declare const Tooltip: ((props: TooltipProps) => JSX.Element) & {
Content: ForwardRefExoticComponent<Omit<Primitive_5.TooltipContentProps & RefAttributes<HTMLDivElement>, "ref"> & RefAttributes<HTMLDivElement>>;
displayName: string;
Provider: FC<Primitive_5.TooltipProviderProps>;
Trigger: ForwardRefExoticComponent<Primitive_5.TooltipTriggerProps & RefAttributes<HTMLButtonElement>>;
};
export declare type TooltipContentProps = ComponentPropsWithoutRef<typeof Primitive_5.Content>;
export declare type TooltipProps = ComponentPropsWithoutRef<typeof Primitive_5.Root>;
declare const variants: (props?: ({
color?: "primary" | "secondary" | "foreground" | null | undefined;
variant?: "outline" | "solid" | null | undefined;
} & ClassProp) | undefined) => string;
declare const variants_2: (props?: ({
color?: "primary" | "secondary" | "foreground" | null | undefined;
variant?: "solid" | "outline" | null | undefined;
} & ClassProp) | undefined) => string;
declare const variants_3: (props?: ({
color?: "primary" | "secondary" | "foreground" | null | undefined;
variant?: "outline" | "solid" | null | undefined;
} & ClassProp) | undefined) => string;
/**
* `<View/>`, a component to render the main content of a page.
*
* @remarks
* `className`, `ref` and spread props target the inner content element (`as`,
* default `<article>`); use `outerClassName`/`outerAs` to style the landmark
* wrapper (default `<main>`). Only one `<View/>` per page should keep the default
* `outerAs="main"` — use `outerAs="section"` or `withoutWrapper` for secondary
* regions to avoid duplicate `<main>` landmarks.
*
* Both the wrapper and the content container set `min-w-0` so the component
* shrinks correctly inside flex/grid parents (e.g. app shells) instead of
* forcing a page-wide horizontal scrollbar when a single wide child (table,
* code block, carousel, long URL) would otherwise blow the layout out.
*
* @param {object} props - `<View/>` props.
* @param {As} [props.as] - The element to render the component as.
* @param {As} [props.outerAs] - The element to render the outer part of the component as.
* @param {boolean} [props.withoutWrapper] - Don't include the wrapper/outer part of the component.
* @param {string | undefined} [props.outerClassName] - The class name for the outer part of the component.
* @returns {ReactNode} The `<View/>` component.
*/
export declare const View: InternalForwardRefRenderFunction<"article", ViewProps, never>;
export declare type ViewProps = {
as?: As;
outerAs?: As;
withoutWrapper?: boolean;
outerClassName?: string | undefined;
};
export { }