UNPKG

@nordcom/nordstar

Version:

An opinionated component library for building human-centric user interfaces.

596 lines (524 loc) 25.7 kB
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 { }