@salemcobalt/ui 0.2.0-rc.5 → 0.2.0-rc.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -46,7 +46,7 @@ declare function Badge({ tone, variant, size, dot, className, children, ...rest
46
46
 
47
47
  type CardVariant = 'outlined' | 'elevated' | 'filled';
48
48
  type CardPadding = 'none' | 'sm' | 'md' | 'lg';
49
- type CardElement = 'div' | 'article' | 'section' | 'li' | 'a' | 'button';
49
+ type CardElement = 'div' | 'article' | 'section' | 'nav' | 'li' | 'a' | 'button';
50
50
  interface CardProps extends useRender.ComponentProps<'div'> {
51
51
  /** `outlined` hairline (default), `elevated` floats, `filled` is an inset region. */
52
52
  variant?: CardVariant | undefined;
@@ -56,7 +56,7 @@ interface CardProps extends useRender.ComponentProps<'div'> {
56
56
  interactive?: boolean | undefined;
57
57
  /** Accent border with a 1px inset, for the active row or chosen option. */
58
58
  selected?: boolean | undefined;
59
- /** Element to render when `render` is not given. */
59
+ /** Element to render when `render` is not given. Use `nav` (with an `aria-label`) for a carded navigation landmark. */
60
60
  as?: CardElement | undefined;
61
61
  }
62
62
  /** A bordered surface that groups related content. Compose the inside with Stack and Inline. */
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils/cx.ts","../src/components/Button/Button.tsx","../src/components/Badge/Badge.tsx","../src/components/Card/Card.tsx","../src/components/Stack/Stack.tsx","../src/components/Inline/Inline.tsx","../src/components/Kbd/Kbd.tsx","../src/components/Dialog/Dialog.tsx","../src/components/Icon/Icon.tsx","../src/icons/icons.gen.tsx","../src/icons/icon-names.gen.ts","../src/components/IconButton/IconButton.tsx","../src/components/Tooltip/Tooltip.tsx","../src/components/Menu/Menu.tsx","../src/components/Input/Input.tsx","../src/components/Field/FieldShell.tsx","../src/components/Textarea/Textarea.tsx","../src/components/Select/Select.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/Switch/Switch.tsx","../src/components/Tabs/Tabs.tsx","../src/components/Toolbar/Toolbar.tsx","../src/components/Banner/Banner.tsx","../src/components/Spinner/Spinner.tsx","../src/components/Progress/Progress.tsx","../src/components/Heading/Heading.tsx","../src/components/Text/Text.tsx","../src/components/Table/Table.tsx","../src/components/Stat/Stat.tsx","../src/components/Chip/Chip.tsx","../src/components/Disclosure/Disclosure.tsx","../src/components/EmptyState/EmptyState.tsx","../src/components/Skeleton/Skeleton.tsx","../src/index.ts"],"sourcesContent":["/** Joins class names, dropping falsy entries. */\nexport function cx(...parts: Array<string | false | null | undefined>): string {\n return parts.filter(Boolean).join(' ');\n}\n","import type { ComponentPropsWithRef, MouseEvent, ReactNode } from 'react';\nimport { cx } from '../../utils/cx';\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'ghost' | 'danger';\nexport type ButtonSize = 'sm' | 'md' | 'lg';\n\nexport interface ButtonProps extends ComponentPropsWithRef<'button'> {\n /** `primary` for the one main action in a view, `secondary` for the rest, `ghost` in toolbars and rows, `danger` for destructive confirmations. */\n variant?: ButtonVariant | undefined;\n /** 32, 40 or 48px tall. Compact density shrinks each by one step. */\n size?: ButtonSize | undefined;\n /** A 16px icon before the label. */\n iconStart?: ReactNode | undefined;\n /** A 16px icon after the label. */\n iconEnd?: ReactNode | undefined;\n /** Keeps the width, hides the label, shows a spinner, sets `aria-busy` and ignores clicks. */\n loading?: boolean | undefined;\n /** Stretches to the container. */\n fullWidth?: boolean | undefined;\n}\n\n/** The one way to trigger an action. Renders a native `<button>`; `type` defaults to `button`. */\nexport function Button({\n variant = 'primary',\n size = 'md',\n iconStart,\n iconEnd,\n loading = false,\n fullWidth = false,\n type = 'button',\n className,\n children,\n onClick,\n ...rest\n}: ButtonProps) {\n const handleClick = (event: MouseEvent<HTMLButtonElement>) => {\n if (loading) {\n event.preventDefault();\n return;\n }\n onClick?.(event);\n };\n return (\n <button\n type={type}\n className={cx('sc-button', className)}\n data-variant={variant}\n data-size={size}\n data-loading={loading || undefined}\n data-full-width={fullWidth || undefined}\n aria-busy={loading || undefined}\n onClick={handleClick}\n {...rest}\n >\n {iconStart ? (\n <span className=\"sc-button__icon\" aria-hidden=\"true\">\n {iconStart}\n </span>\n ) : null}\n <span className=\"sc-button__label\">{children}</span>\n {iconEnd ? (\n <span className=\"sc-button__icon\" aria-hidden=\"true\">\n {iconEnd}\n </span>\n ) : null}\n {loading ? <span className=\"sc-button__spinner\" aria-hidden=\"true\" /> : null}\n </button>\n );\n}\n","import type { ComponentPropsWithRef } from 'react';\nimport { cx } from '../../utils/cx';\n\nexport type BadgeTone = 'neutral' | 'accent' | 'success' | 'warning' | 'danger' | 'info';\nexport type BadgeVariant = 'soft' | 'solid' | 'outline';\nexport type BadgeSize = 'sm' | 'md';\n\nexport interface BadgeProps extends ComponentPropsWithRef<'span'> {\n /** Color reinforces the status; the word is the status. */\n tone?: BadgeTone | undefined;\n /** `soft` tinted fill (default), `solid` filled, `outline` hairline. */\n variant?: BadgeVariant | undefined;\n /** `md` 24px (default) or `sm` 20px for table rows and Card headers. */\n size?: BadgeSize | undefined;\n /** A 6px dot before the label for scannable lists. */\n dot?: boolean | undefined;\n}\n\n/** One or two words of status beside a thing. Text only; never clickable. */\nexport function Badge({\n tone = 'neutral',\n variant = 'soft',\n size = 'md',\n dot = false,\n className,\n children,\n ...rest\n}: BadgeProps) {\n return (\n <span\n className={cx('sc-badge', className)}\n data-tone={tone}\n data-variant={variant}\n data-size={size}\n {...rest}\n >\n {dot ? <span className=\"sc-badge__dot\" aria-hidden=\"true\" /> : null}\n {children}\n </span>\n );\n}\n","import { useRender } from '@base-ui/react/use-render';\nimport { cx } from '../../utils/cx';\n\nexport type CardVariant = 'outlined' | 'elevated' | 'filled';\nexport type CardPadding = 'none' | 'sm' | 'md' | 'lg';\nexport type CardElement = 'div' | 'article' | 'section' | 'li' | 'a' | 'button';\n\nexport interface CardProps extends useRender.ComponentProps<'div'> {\n /** `outlined` hairline (default), `elevated` floats, `filled` is an inset region. */\n variant?: CardVariant | undefined;\n /** `none`, `sm` 12px, `md` 16px (default), `lg` 24px. */\n padding?: CardPadding | undefined;\n /** Hover lifts the card and the whole card is the target. Render it as `a` or `button` so it is a real control. */\n interactive?: boolean | undefined;\n /** Accent border with a 1px inset, for the active row or chosen option. */\n selected?: boolean | undefined;\n /** Element to render when `render` is not given. */\n as?: CardElement | undefined;\n}\n\n/** A bordered surface that groups related content. Compose the inside with Stack and Inline. */\nexport function Card({\n variant = 'outlined',\n padding = 'md',\n interactive = false,\n selected = false,\n as = 'div',\n render,\n className,\n ref,\n ...rest\n}: CardProps) {\n return useRender({\n render,\n ref,\n defaultTagName: as,\n props: {\n className: cx('sc-card', className),\n 'data-variant': variant,\n 'data-padding': padding,\n 'data-interactive': interactive || undefined,\n 'data-selected': selected || undefined,\n ...rest,\n },\n });\n}\n","import { createElement, type ComponentPropsWithRef, type ReactNode } from 'react';\nimport type { SpacingSize } from '../../types';\nimport { cx } from '../../utils/cx';\n\nexport type StackAlign = 'stretch' | 'start' | 'center' | 'end';\nexport type StackJustify = 'start' | 'center' | 'end' | 'between';\nexport type StackElement =\n | 'div'\n | 'section'\n | 'article'\n | 'ul'\n | 'ol'\n | 'li'\n | 'nav'\n | 'form'\n | 'fieldset'\n | 'header'\n | 'footer'\n | 'main'\n | 'aside'\n | 'dl';\n\nexport interface StackProps extends ComponentPropsWithRef<'div'> {\n /** Gap from the spacing scale. Default `sm` (12px). */\n gap?: SpacingSize | undefined;\n /** Cross-axis alignment. Default `stretch`. */\n align?: StackAlign | undefined;\n /** Main-axis distribution. Default `start`. */\n justify?: StackJustify | undefined;\n /** Element to render. Use `ul`/`ol` for lists and `li` for an item that stacks its own content, so semantics survive the layout. */\n as?: StackElement | undefined;\n /** Lays out as `inline-flex`. */\n inline?: boolean | undefined;\n children?: ReactNode | undefined;\n}\n\n/** Vertical flex layout with a token gap. The only way children should be spaced vertically. */\nexport function Stack({\n gap = 'sm',\n align = 'stretch',\n justify = 'start',\n as = 'div',\n inline = false,\n className,\n ...rest\n}: StackProps) {\n return createElement(as, {\n className: cx('sc-stack', className),\n 'data-gap': gap,\n 'data-align': align,\n 'data-justify': justify,\n 'data-inline': inline || undefined,\n ...rest,\n });\n}\n","import { createElement, type ComponentPropsWithRef, type ReactNode } from 'react';\nimport type { SpacingSize } from '../../types';\nimport { cx } from '../../utils/cx';\n\nexport type InlineAlign = 'center' | 'start' | 'end' | 'baseline' | 'stretch';\nexport type InlineJustify = 'start' | 'center' | 'end' | 'between';\nexport type InlineElement =\n 'div' | 'span' | 'ul' | 'ol' | 'li' | 'nav' | 'header' | 'footer' | 'p' | 'label' | 'dd';\n\nexport interface InlineProps extends ComponentPropsWithRef<'div'> {\n /** Gap from the spacing scale. Default `xs` (8px). */\n gap?: SpacingSize | undefined;\n /** Cross-axis alignment. Default `center`; use `baseline` when mixing text sizes. */\n align?: InlineAlign | undefined;\n /** Main-axis distribution. Default `start`. */\n justify?: InlineJustify | undefined;\n /** Wraps by default; `false` for toolbars that scroll. */\n wrap?: boolean | undefined;\n /** Element to render. Use `ul`/`ol` for a row of items and `li` for an item laid out as a row. */\n as?: InlineElement | undefined;\n children?: ReactNode | undefined;\n}\n\n/** Horizontal flex layout that wraps. For rows of buttons, badges, metadata and key combinations. */\nexport function Inline({\n gap = 'xs',\n align = 'center',\n justify = 'start',\n wrap = true,\n as = 'div',\n className,\n ...rest\n}: InlineProps) {\n return createElement(as, {\n className: cx('sc-inline', className),\n 'data-gap': gap,\n 'data-align': align,\n 'data-justify': justify,\n 'data-nowrap': wrap ? undefined : '',\n ...rest,\n });\n}\n","import { Children, Fragment, type ComponentPropsWithRef, type ReactNode } from 'react';\nimport { cx } from '../../utils/cx';\n\nexport type KbdProps = ComponentPropsWithRef<'kbd'>;\n\n/** A single key, rendered like a keycap. One Kbd per key; group keys with `Kbd.Group`. */\nfunction KbdBase({ className, ...rest }: KbdProps) {\n return <kbd className={cx('sc-kbd', className)} {...rest} />;\n}\n\nexport interface KbdGroupProps extends ComponentPropsWithRef<'span'> {\n /** The readable combination, announced instead of the symbols: \"Command K\". */\n label: string;\n /** `plus` (default) draws a muted + between keys; `space` leaves a gap. */\n separator?: 'plus' | 'space' | undefined;\n children?: ReactNode | undefined;\n}\n\n/** Groups the keys of one shortcut. */\nfunction KbdGroup({ label, separator = 'plus', className, children, ...rest }: KbdGroupProps) {\n const keys = Children.toArray(children);\n return (\n <span role=\"group\" aria-label={label} className={cx('sc-kbd-group', className)} {...rest}>\n {keys.map((key, i) => (\n <Fragment key={i}>\n {i > 0 && separator === 'plus' ? (\n <span className=\"sc-kbd-group__sep\" aria-hidden=\"true\">\n +\n </span>\n ) : null}\n {key}\n </Fragment>\n ))}\n </span>\n );\n}\n\nexport const Kbd = Object.assign(KbdBase, { Group: KbdGroup });\n","import { Dialog as BaseDialog } from '@base-ui/react/dialog';\nimport type { ComponentPropsWithRef, ReactNode } from 'react';\nimport { Inline, type InlineProps } from '../Inline/Inline';\nimport { XIcon } from '../../icons/icons.gen';\nimport { cx } from '../../utils/cx';\n\nexport type DialogSize = 'sm' | 'md' | 'lg';\nexport type DialogVariant = 'dialog' | 'sheet';\n\nexport interface DialogRootProps {\n /** Controlled open state. */\n open?: boolean | undefined;\n /** Initial open state when uncontrolled. */\n defaultOpen?: boolean | undefined;\n /** Called when the dialog opens or closes. */\n onOpenChange?: ((open: boolean) => void) | undefined;\n /** When `false`, Esc and backdrop clicks no longer close the dialog. Default `true`. */\n dismissible?: boolean | undefined;\n children?: ReactNode | undefined;\n}\n\n/** Owns the open state. Wrap a `Dialog.Trigger` and a `Dialog.Content`. */\nfunction Root({ dismissible = true, onOpenChange, open, defaultOpen, children }: DialogRootProps) {\n return (\n <BaseDialog.Root\n open={open}\n defaultOpen={defaultOpen}\n disablePointerDismissal={!dismissible}\n onOpenChange={(next, details) => {\n if (\n !dismissible &&\n !next &&\n (details.reason === 'escape-key' || details.reason === 'outside-press')\n ) {\n details.cancel();\n return;\n }\n onOpenChange?.(next);\n }}\n >\n {children}\n </BaseDialog.Root>\n );\n}\n\n/** Opens the dialog. Pass the Button through `render`: `<Dialog.Trigger render={<Button />}>Open</Dialog.Trigger>`. */\nconst Trigger = BaseDialog.Trigger;\n\nexport interface DialogContentProps extends Omit<BaseDialog.Popup.Props, 'className'> {\n /**\n * Maximum width: `sm` 400px for yes/no, `md` 560px (default) for a short form, `lg` 720px rarely.\n * Every size clamps to the viewport minus a 16px gutter, so a 390px phone gets a 358px dialog.\n */\n size?: DialogSize | undefined;\n /**\n * `dialog` (default) centres the popup. `sheet` is the same on wide viewports but below 640px it\n * becomes a bottom sheet: full width, rounded top, title and actions pinned while `Dialog.Body`\n * scrolls, padding that clears the home indicator. Use it for forms and pickers opened from a list.\n */\n variant?: DialogVariant | undefined;\n className?: string | undefined;\n}\n\n/**\n * Portal, backdrop and the popup. Focus moves inside on open and returns to the trigger on close.\n * Menus, selects and tooltips opened from inside render above it (`--sc-z-dropdown` > `--sc-z-dialog`).\n */\nfunction Content({ size = 'md', variant = 'dialog', className, children, ...rest }: DialogContentProps) {\n return (\n <BaseDialog.Portal>\n <BaseDialog.Backdrop className=\"sc-dialog__backdrop\" />\n <BaseDialog.Popup\n className={cx('sc-dialog__popup', className)}\n data-size={size}\n data-variant={variant}\n aria-modal=\"true\"\n {...rest}\n >\n {children}\n </BaseDialog.Popup>\n </BaseDialog.Portal>\n );\n}\n\nexport interface DialogTitleProps extends Omit<BaseDialog.Title.Props, 'className'> {\n className?: string | undefined;\n}\n\n/** Required. Labels the dialog; a question or a statement. Renders an `<h2>`. */\nfunction Title({ className, ...rest }: DialogTitleProps) {\n return <BaseDialog.Title className={cx('sc-dialog__title', className)} {...rest} />;\n}\n\nexport interface DialogDescriptionProps extends Omit<BaseDialog.Description.Props, 'className'> {\n className?: string | undefined;\n}\n\n/** Optional, muted. Says what will happen. */\nfunction Description({ className, ...rest }: DialogDescriptionProps) {\n return <BaseDialog.Description className={cx('sc-dialog__description', className)} {...rest} />;\n}\n\nexport type DialogBodyProps = ComponentPropsWithRef<'div'>;\n\n/** Free content between the description and the actions. In a `sheet` it is the part that scrolls. */\nfunction Body({ className, ...rest }: DialogBodyProps) {\n return <div className={cx('sc-dialog__body', className)} {...rest} />;\n}\n\nexport type DialogActionsProps = Omit<InlineProps, 'justify'>;\n\n/** Right-aligned row of Buttons. Put the confirming action last. */\nfunction Actions({ className, ...rest }: DialogActionsProps) {\n return <Inline justify=\"end\" className={cx('sc-dialog__actions', className)} {...rest} />;\n}\n\nexport interface DialogCloseProps extends Omit<BaseDialog.Close.Props, 'className'> {\n className?: string | undefined;\n}\n\n/** With no children or `render`, the × in the corner. Otherwise wraps any Button: `<Dialog.Close render={<Button variant=\"secondary\" />}>Cancel</Dialog.Close>`. */\nfunction Close({ className, children, render, ...rest }: DialogCloseProps) {\n if (children === undefined && render === undefined) {\n return (\n <BaseDialog.Close className={cx('sc-dialog__close', className)} aria-label=\"Close\" {...rest}>\n <XIcon />\n </BaseDialog.Close>\n );\n }\n return (\n <BaseDialog.Close className={className} render={render} {...rest}>\n {children}\n </BaseDialog.Close>\n );\n}\n\n/** A modal that interrupts for a decision or a short form. Built on Base UI's Dialog. */\nexport const Dialog = { Root, Trigger, Content, Title, Description, Body, Actions, Close };\n","import type { ComponentPropsWithRef, ReactNode } from 'react';\nimport { cx } from '../../utils/cx';\n\nexport type IconSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'em';\n\nexport interface IconProps extends Omit<ComponentPropsWithRef<'svg'>, 'children'> {\n /** `xs` 12, `sm` 14, `md` 16 (default), `lg` 20, `xl` 24, or `em` to follow the surrounding font size. */\n size?: IconSize | undefined;\n /** Gives the icon an accessible name (`role=\"img\"`). Without it the icon is decorative and hidden from assistive tech. */\n title?: string | undefined;\n /** The glyph: `<path>`, `<circle>` … on a 16×16 grid, stroke `currentColor`. */\n children: ReactNode;\n}\n\n/** Props of a shipped icon such as `PlayIcon`: everything `Icon` takes except the glyph. */\nexport type IconGlyphProps = Omit<IconProps, 'children'>;\n\n/**\n * The frame every icon renders in: a 16×16 outline in `currentColor`, sized by `size`, decorative unless\n * `title` is given. Use the shipped `<Name>Icon` components, or wrap your own paths.\n */\nexport function Icon({ size = 'md', title, className, children, ...rest }: IconProps) {\n return (\n <svg\n className={cx('sc-icon', className)}\n data-size={size}\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n focusable=\"false\"\n aria-hidden={title ? undefined : true}\n role={title ? 'img' : undefined}\n aria-label={title}\n {...rest}\n >\n {children}\n </svg>\n );\n}\n","// Generated by scripts/build-icons.mjs from src/icons/svg/*.svg. Do not edit; add an SVG and run `pnpm build`.\nimport { Icon, type IconGlyphProps } from '../components/Icon/Icon';\n\n/** `archive` */\nexport function ArchiveIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <rect x=\"2.25\" y=\"2.75\" width=\"11.5\" height=\"3\" rx=\".75\" />\n <path d=\"M3.25 5.75v6.5a1 1 0 0 0 1 1h7.5a1 1 0 0 0 1-1v-6.5M6.5 8.75h3\" />\n </Icon>\n );\n}\n\n/** `arrow-down` */\nexport function ArrowDownIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"M8 3v10M4 9l4 4 4-4\" />\n </Icon>\n );\n}\n\n/** `arrow-left` */\nexport function ArrowLeftIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"M13 8H3M7 4 3 8l4 4\" />\n </Icon>\n );\n}\n\n/** `arrow-right` */\nexport function ArrowRightIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"M3 8h10M9 4l4 4-4 4\" />\n </Icon>\n );\n}\n\n/** `arrow-up` */\nexport function ArrowUpIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"M8 13V3M4 7l4-4 4 4\" />\n </Icon>\n );\n}\n\n/** `bell` */\nexport function BellIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"M4 6.5a4 4 0 0 1 8 0v3l1.25 2H2.75L4 9.5z\" />\n <path d=\"M6.5 13.5a1.5 1.5 0 0 0 3 0\" />\n </Icon>\n );\n}\n\n/** `briefcase` */\nexport function BriefcaseIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <rect x=\"2\" y=\"4.75\" width=\"12\" height=\"8.5\" rx=\"1\" />\n <path d=\"M5.5 4.75V3.5a1 1 0 0 1 1-1h3a1 1 0 0 1 1 1v1.25M2 8.5h12\" />\n </Icon>\n );\n}\n\n/** `calendar` */\nexport function CalendarIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <rect x=\"2.5\" y=\"3.25\" width=\"11\" height=\"10\" rx=\"1\" />\n <path d=\"M2.5 6.75h11M5.5 1.75v3M10.5 1.75v3\" />\n </Icon>\n );\n}\n\n/** `check` */\nexport function CheckIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"m3 8.5 3.5 3.5L13 4.5\" />\n </Icon>\n );\n}\n\n/** `chevron-down` */\nexport function ChevronDownIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"m4 6 4 4 4-4\" />\n </Icon>\n );\n}\n\n/** `chevron-left` */\nexport function ChevronLeftIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"m10 4-4 4 4 4\" />\n </Icon>\n );\n}\n\n/** `chevron-right` */\nexport function ChevronRightIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"m6 4 4 4-4 4\" />\n </Icon>\n );\n}\n\n/** `chevron-up` */\nexport function ChevronUpIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"m4 10 4-4 4 4\" />\n </Icon>\n );\n}\n\n/** `circle-check` */\nexport function CircleCheckIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <circle cx=\"8\" cy=\"8\" r=\"6\" />\n <path d=\"m5.25 8 2 2 3.5-4\" />\n </Icon>\n );\n}\n\n/** `circle-x` */\nexport function CircleXIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <circle cx=\"8\" cy=\"8\" r=\"6\" />\n <path d=\"m6 6 4 4M10 6l-4 4\" />\n </Icon>\n );\n}\n\n/** `clock` */\nexport function ClockIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <circle cx=\"8\" cy=\"8\" r=\"6\" />\n <path d=\"M8 4.75V8l2.25 1.5\" />\n </Icon>\n );\n}\n\n/** `copy` */\nexport function CopyIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <rect x=\"6\" y=\"6\" width=\"7.5\" height=\"7.5\" rx=\"1\" />\n <path d=\"M4 10H3.25a1 1 0 0 1-1-1V3.25a1 1 0 0 1 1-1H9a1 1 0 0 1 1 1V4\" />\n </Icon>\n );\n}\n\n/** `document` */\nexport function DocumentIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"M9 2.25H4.5a1 1 0 0 0-1 1v9.5a1 1 0 0 0 1 1h7a1 1 0 0 0 1-1V5.75z\" />\n <path d=\"M9 2.25v3.5h3.5M6 8.5h4M6 11h4\" />\n </Icon>\n );\n}\n\n/** `download` */\nexport function DownloadIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"M8 2.5v8M4.75 7.25 8 10.5l3.25-3.25\" />\n <path d=\"M2.75 11v1.5a1 1 0 0 0 1 1h8.5a1 1 0 0 0 1-1V11\" />\n </Icon>\n );\n}\n\n/** `edit` */\nexport function EditIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"m10.75 2.75 2.5 2.5-7.5 7.5H3.25v-2.5z\" />\n </Icon>\n );\n}\n\n/** `external-link` */\nexport function ExternalLinkIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"M9 2.75h4.25V7M13.25 2.75 7.5 8.5\" />\n <path d=\"M11.25 9v3.25a1 1 0 0 1-1 1h-6.5a1 1 0 0 1-1-1v-6.5a1 1 0 0 1 1-1H7\" />\n </Icon>\n );\n}\n\n/** `eye` */\nexport function EyeIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"M1.75 8s2.25-4.25 6.25-4.25S14.25 8 14.25 8s-2.25 4.25-6.25 4.25S1.75 8 1.75 8z\" />\n <circle cx=\"8\" cy=\"8\" r=\"2\" />\n </Icon>\n );\n}\n\n/** `filter` */\nexport function FilterIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"M2.5 3h11l-4.25 5v4.25L6.75 13.5V8z\" />\n </Icon>\n );\n}\n\n/** `flag` */\nexport function FlagIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"M3.5 14V2.75\" />\n <path d=\"M3.5 2.75h8.75l-2.25 3 2.25 3H3.5\" />\n </Icon>\n );\n}\n\n/** `inbox` */\nexport function InboxIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"M2 9v3.25a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V9l-1.6-4.6a1 1 0 0 0-.95-.65H4.55a1 1 0 0 0-.95.65z\" />\n <path d=\"M2 9h3.25l1 2h3.5l1-2H14\" />\n </Icon>\n );\n}\n\n/** `info` */\nexport function InfoIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <circle cx=\"8\" cy=\"8\" r=\"6\" />\n <path d=\"M8 7.25V11M8 5.25v.01\" />\n </Icon>\n );\n}\n\n/** `link` */\nexport function LinkIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"M6.75 9.25a2.5 2.5 0 0 0 3.54 0l2-2a2.5 2.5 0 0 0-3.54-3.54l-.75.75\" />\n <path d=\"M9.25 6.75a2.5 2.5 0 0 0-3.54 0l-2 2a2.5 2.5 0 0 0 3.54 3.54l.75-.75\" />\n </Icon>\n );\n}\n\n/** `mail` */\nexport function MailIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <rect x=\"2\" y=\"3.5\" width=\"12\" height=\"9\" rx=\"1\" />\n <path d=\"m2.5 4.5 5.5 4.25L13.5 4.5\" />\n </Icon>\n );\n}\n\n/** `map-pin` */\nexport function MapPinIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"M8 14s4.5-3.9 4.5-7.5a4.5 4.5 0 1 0-9 0C3.5 10.1 8 14 8 14z\" />\n <circle cx=\"8\" cy=\"6.5\" r=\"1.5\" />\n </Icon>\n );\n}\n\n/** `menu` */\nexport function MenuIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"M2.5 4.5h11M2.5 8h11M2.5 11.5h11\" />\n </Icon>\n );\n}\n\n/** `minus` */\nexport function MinusIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"M3 8h10\" />\n </Icon>\n );\n}\n\n/** `moon` */\nexport function MoonIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"M13.25 9.5A5.5 5.5 0 0 1 6.5 2.75 5.5 5.5 0 1 0 13.25 9.5z\" />\n </Icon>\n );\n}\n\n/** `more-horizontal` */\nexport function MoreHorizontalIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <circle cx=\"3.5\" cy=\"8\" r=\"1.25\" fill=\"currentColor\" stroke=\"none\" />\n <circle cx=\"8\" cy=\"8\" r=\"1.25\" fill=\"currentColor\" stroke=\"none\" />\n <circle cx=\"12.5\" cy=\"8\" r=\"1.25\" fill=\"currentColor\" stroke=\"none\" />\n </Icon>\n );\n}\n\n/** `more-vertical` */\nexport function MoreVerticalIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <circle cx=\"8\" cy=\"3.5\" r=\"1.25\" fill=\"currentColor\" stroke=\"none\" />\n <circle cx=\"8\" cy=\"8\" r=\"1.25\" fill=\"currentColor\" stroke=\"none\" />\n <circle cx=\"8\" cy=\"12.5\" r=\"1.25\" fill=\"currentColor\" stroke=\"none\" />\n </Icon>\n );\n}\n\n/** `pause` */\nexport function PauseIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <rect x=\"3.75\" y=\"2.75\" width=\"3\" height=\"10.5\" rx=\".75\" />\n <rect x=\"9.25\" y=\"2.75\" width=\"3\" height=\"10.5\" rx=\".75\" />\n </Icon>\n );\n}\n\n/** `play` */\nexport function PlayIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"M4.5 2.75v10.5L13 8z\" />\n </Icon>\n );\n}\n\n/** `plus` */\nexport function PlusIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"M8 3v10M3 8h10\" />\n </Icon>\n );\n}\n\n/** `refresh` */\nexport function RefreshIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"M2.75 8a5.25 5.25 0 0 1 9-3.7l1.5 1.45\" />\n <path d=\"M13.25 2.25v3.5h-3.5\" />\n <path d=\"M13.25 8a5.25 5.25 0 0 1-9 3.7l-1.5-1.45\" />\n <path d=\"M2.75 13.75v-3.5h3.5\" />\n </Icon>\n );\n}\n\n/** `search` */\nexport function SearchIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <circle cx=\"7\" cy=\"7\" r=\"4.5\" />\n <path d=\"m10.5 10.5 3 3\" />\n </Icon>\n );\n}\n\n/** `settings` */\nexport function SettingsIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"M13.01 6.42 14.67 6.94v2.12l-1.66.52-.35.84.8 1.55-1.49 1.49-1.55-.8-.84.35-.52 1.66H6.94l-.52-1.66-.84-.35-1.55.8-1.49-1.49.8-1.55-.35-.84-1.66-.52V6.94l1.66-.52.35-.84-.8-1.55 1.49-1.49 1.55.8.84-.35.52-1.66h2.12l.52 1.66.84.35 1.55-.8 1.49 1.49-.8 1.55z\" />\n <circle cx=\"8\" cy=\"8\" r=\"2.25\" />\n </Icon>\n );\n}\n\n/** `star` */\nexport function StarIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"m8 2.25 1.8 3.8 4.2.55-3.1 2.9.8 4.15L8 11.6l-3.7 2.05.8-4.15L2 6.6l4.2-.55z\" />\n </Icon>\n );\n}\n\n/** `sun` */\nexport function SunIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <circle cx=\"8\" cy=\"8\" r=\"3\" />\n <path d=\"M8 1.75v1.5M8 12.75v1.5M1.75 8h1.5M12.75 8h1.5M3.58 3.58l1.06 1.06M11.36 11.36l1.06 1.06M3.58 12.42l1.06-1.06M11.36 4.64l1.06-1.06\" />\n </Icon>\n );\n}\n\n/** `thumbs-down` */\nexport function ThumbsDownIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"M5 2.5H3a.5.5 0 0 0-.5.5v5.5a.5.5 0 0 0 .5.5h2\" />\n <path d=\"M5 9l2.5 4.5a1.5 1.5 0 0 0 1.5-1.5V9.5h3.25a1.25 1.25 0 0 0 1.23-1.45l-.9-5a1.25 1.25 0 0 0-1.23-1.05H5z\" />\n </Icon>\n );\n}\n\n/** `thumbs-up` */\nexport function ThumbsUpIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"M5 13.5H3a.5.5 0 0 1-.5-.5V7.5A.5.5 0 0 1 3 7h2\" />\n <path d=\"M5 7l2.5-4.5a1.5 1.5 0 0 1 1.5 1.5v2.5h3.25a1.25 1.25 0 0 1 1.23 1.45l-.9 5a1.25 1.25 0 0 1-1.23 1.05H5z\" />\n </Icon>\n );\n}\n\n/** `trash` */\nexport function TrashIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"M2.75 4.25h10.5M6.25 4.25V3a.75.75 0 0 1 .75-.75h2A.75.75 0 0 1 9.75 3v1.25\" />\n <path d=\"M4 4.25l.5 8.5a1 1 0 0 0 1 .95h5a1 1 0 0 0 1-.95l.5-8.5\" />\n <path d=\"M6.5 7v4M9.5 7v4\" />\n </Icon>\n );\n}\n\n/** `undo` */\nexport function UndoIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"M3 7h7a3.5 3.5 0 0 1 0 7H6\" />\n <path d=\"M6 4 3 7l3 3\" />\n </Icon>\n );\n}\n\n/** `user` */\nexport function UserIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <circle cx=\"8\" cy=\"5.25\" r=\"2.75\" />\n <path d=\"M2.75 13.75a5.25 5.25 0 0 1 10.5 0\" />\n </Icon>\n );\n}\n\n/** `warning` */\nexport function WarningIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"M8 2.5 1.75 13.25h12.5z\" />\n <path d=\"M8 6.5v3M8 11.5v.01\" />\n </Icon>\n );\n}\n\n/** `x` */\nexport function XIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"M4 4l8 8M12 4l-8 8\" />\n </Icon>\n );\n}\n","// Generated by scripts/build-icons.mjs from src/icons/svg/*.svg. Do not edit; add an SVG and run `pnpm build`.\n/** Every icon shipped by this package, as `<Name>Icon` components. */\nexport const iconNames = [\n 'archive',\n 'arrow-down',\n 'arrow-left',\n 'arrow-right',\n 'arrow-up',\n 'bell',\n 'briefcase',\n 'calendar',\n 'check',\n 'chevron-down',\n 'chevron-left',\n 'chevron-right',\n 'chevron-up',\n 'circle-check',\n 'circle-x',\n 'clock',\n 'copy',\n 'document',\n 'download',\n 'edit',\n 'external-link',\n 'eye',\n 'filter',\n 'flag',\n 'inbox',\n 'info',\n 'link',\n 'mail',\n 'map-pin',\n 'menu',\n 'minus',\n 'moon',\n 'more-horizontal',\n 'more-vertical',\n 'pause',\n 'play',\n 'plus',\n 'refresh',\n 'search',\n 'settings',\n 'star',\n 'sun',\n 'thumbs-down',\n 'thumbs-up',\n 'trash',\n 'undo',\n 'user',\n 'warning',\n 'x',\n] as const;\nexport type IconName = (typeof iconNames)[number];\n","import { useRender } from '@base-ui/react/use-render';\nimport type { MouseEvent, ReactNode } from 'react';\nimport { Tooltip, type TooltipSide } from '../Tooltip/Tooltip';\nimport type { ButtonSize, ButtonVariant } from '../Button/Button';\nimport { cx } from '../../utils/cx';\n\nexport interface IconButtonProps extends Omit<useRender.ComponentProps<'button'>, 'children' | 'aria-label'> {\n /** Required. The accessible name, and the tooltip text when `tooltip` is `true`. */\n label: string;\n /** The icon, usually a shipped `<Name>Icon`. It is decorative; `label` names the button. Optional only so a popup trigger can supply it through `render`. */\n children?: ReactNode | undefined;\n /** `ghost` (default) in toolbars and rows, `secondary` when it must read as a button, `primary` and `danger` rarely. */\n variant?: ButtonVariant | undefined;\n /** Square: 32, 40 or 48px. Compact density shrinks each by one step. */\n size?: ButtonSize | undefined;\n /** `true` shows `label` as a tooltip on hover and focus; a string shows that text instead. */\n tooltip?: boolean | string | undefined;\n /** Side the tooltip opens on. Default `top`. */\n tooltipSide?: TooltipSide | undefined;\n /** Fully round, for avatars and floating actions. */\n round?: boolean | undefined;\n /** Shows a spinner, sets `aria-busy` and ignores clicks. */\n loading?: boolean | undefined;\n}\n\n/**\n * A square Button for one icon. Always named by `label`; use `tooltip` to show that name on hover.\n * Renders a `<button>` unless `render` gives another element: `render={<a href=\"/settings\" />}` or a\n * Next.js `<Link href=\"/settings\" />` makes it a link with the same look and name.\n */\nexport function IconButton({\n label,\n children,\n variant = 'ghost',\n size = 'md',\n tooltip,\n tooltipSide = 'top',\n round = false,\n loading = false,\n type,\n className,\n onClick,\n render,\n ref,\n ...rest\n}: IconButtonProps) {\n const handleClick = (event: MouseEvent<HTMLButtonElement>) => {\n if (loading) {\n event.preventDefault();\n return;\n }\n onClick?.(event);\n };\n const button = useRender({\n render,\n ref,\n defaultTagName: 'button',\n props: {\n // `type` only means something on a real button; a rendered link keeps its own attributes.\n type: render ? type : (type ?? 'button'),\n className: cx('sc-button', 'sc-icon-button', className),\n 'data-variant': variant,\n 'data-size': size,\n 'data-round': round || undefined,\n 'data-loading': loading || undefined,\n 'aria-busy': loading || undefined,\n 'aria-label': label,\n onClick: handleClick,\n ...rest,\n children: (\n <>\n <span className=\"sc-button__icon\" aria-hidden=\"true\">\n {children}\n </span>\n {loading ? <span className=\"sc-button__spinner\" aria-hidden=\"true\" /> : null}\n </>\n ),\n },\n });\n if (!tooltip) return button;\n return (\n <Tooltip content={tooltip === true ? label : tooltip} side={tooltipSide}>\n {button}\n </Tooltip>\n );\n}\n","import { Tooltip as BaseTooltip } from '@base-ui/react/tooltip';\nimport type { ReactElement, ReactNode } from 'react';\nimport { cx } from '../../utils/cx';\n\nexport type TooltipSide = 'top' | 'bottom' | 'left' | 'right';\nexport type TooltipAlign = 'start' | 'center' | 'end';\n\nexport interface TooltipProps {\n /** The hint. Short text; never anything the user cannot do without. */\n content: ReactNode;\n /** The trigger: one element that takes a ref and spreads props, such as `IconButton`, `Button` or `Badge`. */\n children: ReactElement;\n /** Which side of the trigger the hint opens on; flips when there is no room. Default `top`. */\n side?: TooltipSide | undefined;\n /** Alignment along that side. Default `center`. */\n align?: TooltipAlign | undefined;\n /** Hover delay in ms before opening. Default 300; inside `Tooltip.Provider` sibling tooltips open instantly once one is open. */\n delay?: number | undefined;\n /** Delay in ms before closing. Default 0. */\n closeDelay?: number | undefined;\n /** Controlled open state. */\n open?: boolean | undefined;\n /** Initial open state when uncontrolled. */\n defaultOpen?: boolean | undefined;\n /** Called when the hint opens or closes. */\n onOpenChange?: ((open: boolean) => void) | undefined;\n /** Never opens. */\n disabled?: boolean | undefined;\n className?: string | undefined;\n}\n\n/**\n * A hint that opens on hover and keyboard focus. Supplementary only: touch devices never see it and\n * screen readers hear the trigger's own name, so the trigger must already be labelled.\n */\nfunction TooltipBase({\n content,\n children,\n side = 'top',\n align = 'center',\n delay = 300,\n closeDelay,\n open,\n defaultOpen,\n onOpenChange,\n disabled,\n className,\n}: TooltipProps) {\n return (\n <BaseTooltip.Root\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange ? (next) => onOpenChange(next) : undefined}\n disabled={disabled}\n >\n <BaseTooltip.Trigger render={children} delay={delay} closeDelay={closeDelay} />\n <BaseTooltip.Portal>\n <BaseTooltip.Positioner side={side} align={align} sideOffset={6} className=\"sc-tooltip__positioner\">\n <BaseTooltip.Popup role=\"tooltip\" className={cx('sc-tooltip', className)}>\n <BaseTooltip.Arrow className=\"sc-tooltip__arrow\" />\n {content}\n </BaseTooltip.Popup>\n </BaseTooltip.Positioner>\n </BaseTooltip.Portal>\n </BaseTooltip.Root>\n );\n}\n\n/** Wrap a toolbar or a row of icon buttons so moving between them skips the delay. */\nconst Provider = BaseTooltip.Provider;\n\nexport const Tooltip = Object.assign(TooltipBase, { Provider });\n","import { Menu as BaseMenu } from '@base-ui/react/menu';\nimport type { ReactNode } from 'react';\nimport { Button } from '../Button/Button';\nimport { CheckIcon, ChevronDownIcon } from '../../icons/icons.gen';\nimport { cx } from '../../utils/cx';\n\nexport type MenuSide = 'top' | 'bottom' | 'left' | 'right';\nexport type MenuAlign = 'start' | 'center' | 'end';\nexport type MenuItemTone = 'default' | 'danger';\n\nexport interface MenuRootProps {\n /** Controlled open state. */\n open?: boolean | undefined;\n /** Initial open state when uncontrolled. */\n defaultOpen?: boolean | undefined;\n /** Called when the menu opens or closes. */\n onOpenChange?: ((open: boolean) => void) | undefined;\n /** Disables the trigger. */\n disabled?: boolean | undefined;\n /** Default `true`: the page behind the menu is inert until it closes. */\n modal?: boolean | undefined;\n children?: ReactNode | undefined;\n}\n\n/** Owns the open state. Wrap a `Menu.Trigger` and a `Menu.Content`. */\nfunction Root({ open, defaultOpen, onOpenChange, disabled, modal = true, children }: MenuRootProps) {\n return (\n <BaseMenu.Root\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange ? (next) => onOpenChange(next) : undefined}\n disabled={disabled}\n modal={modal}\n >\n {children}\n </BaseMenu.Root>\n );\n}\n\nexport interface MenuTriggerProps extends Omit<BaseMenu.Trigger.Props, 'className'> {\n className?: string | undefined;\n}\n\n/**\n * Opens the menu. With no `render` it is a secondary Button with a chevron; pass any Button or\n * IconButton through `render`: `<Menu.Trigger render={<IconButton label=\"More\" />}><MoreHorizontalIcon /></Menu.Trigger>`.\n */\nfunction Trigger({ render, className, children, ...rest }: MenuTriggerProps) {\n return (\n <BaseMenu.Trigger\n render={render ?? <Button variant=\"secondary\" iconEnd={<ChevronDownIcon />} className={className} />}\n className={render ? className : undefined}\n {...rest}\n >\n {children}\n </BaseMenu.Trigger>\n );\n}\n\nexport interface MenuContentProps extends Omit<BaseMenu.Popup.Props, 'className'> {\n /** Side of the trigger the menu opens on; flips when there is no room. Default `bottom`. */\n side?: MenuSide | undefined;\n /** Alignment along that side. Default `start`. */\n align?: MenuAlign | undefined;\n /** Distance from the trigger in px. Default 4. */\n sideOffset?: number | undefined;\n className?: string | undefined;\n}\n\n/** Portal, positioner and the popup. Items go inside. */\nfunction Content({\n side = 'bottom',\n align = 'start',\n sideOffset = 4,\n className,\n children,\n ...rest\n}: MenuContentProps) {\n return (\n <BaseMenu.Portal>\n <BaseMenu.Positioner side={side} align={align} sideOffset={sideOffset} className=\"sc-menu__positioner\">\n <BaseMenu.Popup className={cx('sc-menu', className)} {...rest}>\n {children}\n </BaseMenu.Popup>\n </BaseMenu.Positioner>\n </BaseMenu.Portal>\n );\n}\n\ninterface ItemSlots {\n /** A 16px icon before the label. */\n icon?: ReactNode | undefined;\n /** Muted text at the end: a shortcut (`<Kbd>`) or a count. */\n trailing?: ReactNode | undefined;\n /** `danger` for destructive actions; put them last, after a separator. */\n tone?: MenuItemTone | undefined;\n}\n\nfunction ItemBody({\n icon,\n trailing,\n children,\n}: {\n icon?: ReactNode;\n trailing?: ReactNode;\n children?: ReactNode;\n}) {\n return (\n <>\n <span className=\"sc-menu__icon\" aria-hidden=\"true\">\n {icon}\n </span>\n <span className=\"sc-menu__label\">{children}</span>\n {trailing !== undefined ? <span className=\"sc-menu__trailing\">{trailing}</span> : null}\n </>\n );\n}\n\nexport interface MenuItemProps extends Omit<BaseMenu.Item.Props, 'className'>, ItemSlots {\n className?: string | undefined;\n}\n\n/** One action. Closes the menu when activated. */\nfunction Item({ icon, trailing, tone = 'default', className, children, ...rest }: MenuItemProps) {\n return (\n <BaseMenu.Item className={cx('sc-menu__item', className)} data-tone={tone} {...rest}>\n <ItemBody icon={icon} trailing={trailing}>\n {children}\n </ItemBody>\n </BaseMenu.Item>\n );\n}\n\nexport interface MenuLinkItemProps extends Omit<BaseMenu.LinkItem.Props, 'className'>, ItemSlots {\n className?: string | undefined;\n}\n\n/** An item that navigates: renders an `<a href>`. */\nfunction LinkItem({ icon, trailing, tone = 'default', className, children, ...rest }: MenuLinkItemProps) {\n return (\n <BaseMenu.LinkItem className={cx('sc-menu__item', className)} data-tone={tone} {...rest}>\n <ItemBody icon={icon} trailing={trailing}>\n {children}\n </ItemBody>\n </BaseMenu.LinkItem>\n );\n}\n\nexport interface MenuCheckboxItemProps extends Omit<\n BaseMenu.CheckboxItem.Props,\n 'className' | 'onCheckedChange'\n> {\n /** Called with the next checked state. */\n onCheckedChange?: ((checked: boolean) => void) | undefined;\n /** Muted text at the end. */\n trailing?: ReactNode | undefined;\n className?: string | undefined;\n}\n\n/** A toggle. Stays open when activated so several can be flipped at once; pass `closeOnClick` to close. */\nfunction CheckboxItem({ trailing, onCheckedChange, className, children, ...rest }: MenuCheckboxItemProps) {\n return (\n <BaseMenu.CheckboxItem\n className={cx('sc-menu__item', className)}\n onCheckedChange={onCheckedChange ? (checked) => onCheckedChange(checked) : undefined}\n {...rest}\n >\n <BaseMenu.CheckboxItemIndicator className=\"sc-menu__icon sc-menu__indicator\">\n <CheckIcon size=\"sm\" />\n </BaseMenu.CheckboxItemIndicator>\n <span className=\"sc-menu__label\">{children}</span>\n {trailing !== undefined ? <span className=\"sc-menu__trailing\">{trailing}</span> : null}\n </BaseMenu.CheckboxItem>\n );\n}\n\nexport interface MenuRadioGroupProps<Value extends string = string> extends Omit<\n BaseMenu.RadioGroup.Props,\n 'className' | 'value' | 'defaultValue' | 'onValueChange'\n> {\n /** Controlled selected value. */\n value?: Value | undefined;\n /** Initial value when uncontrolled. */\n defaultValue?: Value | undefined;\n /** Called with the next selected value. */\n onValueChange?: ((value: Value) => void) | undefined;\n /** A heading for the group, rendered above the items. */\n label?: ReactNode | undefined;\n className?: string | undefined;\n}\n\n/** A set of `Menu.RadioItem`s where exactly one is selected. */\nfunction RadioGroup<Value extends string = string>({\n label,\n onValueChange,\n className,\n children,\n ...rest\n}: MenuRadioGroupProps<Value>) {\n return (\n <BaseMenu.RadioGroup\n className={cx('sc-menu__group', className)}\n onValueChange={onValueChange ? (value: Value) => onValueChange(value) : undefined}\n {...rest}\n >\n {label !== undefined ? (\n <BaseMenu.GroupLabel className=\"sc-menu__group-label\">{label}</BaseMenu.GroupLabel>\n ) : null}\n {children}\n </BaseMenu.RadioGroup>\n );\n}\n\nexport interface MenuRadioItemProps extends Omit<BaseMenu.RadioItem.Props, 'className' | 'value'> {\n value: string;\n /** Muted text at the end. */\n trailing?: ReactNode | undefined;\n className?: string | undefined;\n}\n\n/** One choice in a `Menu.RadioGroup`. Stays open when chosen; pass `closeOnClick` to close. */\nfunction RadioItem({ trailing, className, children, ...rest }: MenuRadioItemProps) {\n return (\n <BaseMenu.RadioItem className={cx('sc-menu__item', className)} {...rest}>\n <BaseMenu.RadioItemIndicator className=\"sc-menu__icon sc-menu__indicator\">\n <span className=\"sc-menu__radio-dot\" />\n </BaseMenu.RadioItemIndicator>\n <span className=\"sc-menu__label\">{children}</span>\n {trailing !== undefined ? <span className=\"sc-menu__trailing\">{trailing}</span> : null}\n </BaseMenu.RadioItem>\n );\n}\n\nexport interface MenuGroupProps extends Omit<BaseMenu.Group.Props, 'className'> {\n /** A heading for the group, rendered above the items. */\n label?: ReactNode | undefined;\n className?: string | undefined;\n}\n\n/** Labels a run of items. */\nfunction Group({ label, className, children, ...rest }: MenuGroupProps) {\n return (\n <BaseMenu.Group className={cx('sc-menu__group', className)} {...rest}>\n {label !== undefined ? (\n <BaseMenu.GroupLabel className=\"sc-menu__group-label\">{label}</BaseMenu.GroupLabel>\n ) : null}\n {children}\n </BaseMenu.Group>\n );\n}\n\nexport interface MenuSeparatorProps extends Omit<BaseMenu.Separator.Props, 'className'> {\n className?: string | undefined;\n}\n\n/** A hairline between runs of items. */\nfunction Separator({ className, ...rest }: MenuSeparatorProps) {\n return <BaseMenu.Separator className={cx('sc-menu__separator', className)} {...rest} />;\n}\n\n/** A dropdown of actions on a trigger, with full keyboard support. Built on Base UI's Menu. */\nexport const Menu = {\n Root,\n Trigger,\n Content,\n Item,\n LinkItem,\n CheckboxItem,\n RadioGroup,\n RadioItem,\n Group,\n Separator,\n};\n","import { Field } from '@base-ui/react/field';\nimport type { ComponentPropsWithRef, ReactNode } from 'react';\nimport { FieldShell, type FieldProps } from '../Field/FieldShell';\n\nexport interface InputProps\n extends\n Omit<ComponentPropsWithRef<'input'>, 'size' | 'name' | 'disabled' | 'required' | 'className'>,\n FieldProps {\n /** A 16px icon inside the start edge, for search and URL fields. Decorative. */\n iconStart?: ReactNode | undefined;\n /** A 16px icon inside the end edge. Decorative; use an `IconButton` outside the field for an action. */\n iconEnd?: ReactNode | undefined;\n /** Called with the string value on every change, beside the native `onChange`. */\n onValueChange?: ((value: string) => void) | undefined;\n}\n\n/**\n * A labelled single-line text field. Renders a native `<input>` inside Base UI's Field, so every native\n * attribute passes through: `type=\"date\" | \"time\" | \"number\" | \"url\" | …` keep the same height and\n * `iconStart` slot; `list=\"id\"` with a `<datalist>` beside it gives native suggestions. Date and time\n * fields show the browser's picker at the end edge, so leave `iconEnd` off those.\n */\nexport function Input({\n label,\n hideLabel,\n description,\n error,\n invalid,\n required,\n disabled,\n name,\n size,\n className,\n iconStart,\n iconEnd,\n onValueChange,\n ...rest\n}: InputProps) {\n return (\n <FieldShell\n label={label}\n hideLabel={hideLabel}\n description={description}\n error={error}\n invalid={invalid}\n required={required}\n disabled={disabled}\n name={name}\n size={size}\n className={className}\n >\n <span\n className=\"sc-input-wrap\"\n data-icon-start={iconStart ? '' : undefined}\n data-icon-end={iconEnd ? '' : undefined}\n >\n {iconStart ? (\n <span className=\"sc-input__icon\" data-side=\"start\" aria-hidden=\"true\">\n {iconStart}\n </span>\n ) : null}\n <Field.Control\n className=\"sc-input\"\n required={required}\n onValueChange={onValueChange ? (value) => onValueChange(value) : undefined}\n {...rest}\n />\n {iconEnd ? (\n <span className=\"sc-input__icon\" data-side=\"end\" aria-hidden=\"true\">\n {iconEnd}\n </span>\n ) : null}\n </span>\n </FieldShell>\n );\n}\n","import { Field } from '@base-ui/react/field';\nimport type { ReactNode } from 'react';\nimport { cx } from '../../utils/cx';\n\nexport type ControlSize = 'sm' | 'md' | 'lg';\n\n/** Props shared by every labelled form control: Input, Textarea, Select. */\nexport interface FieldProps {\n /** Required. The visible label; use `hideLabel` to keep it for assistive tech only. */\n label: ReactNode;\n /** Visually hides the label (a search box with an icon, a table filter). */\n hideLabel?: boolean | undefined;\n /** Help text under the control, wired with `aria-describedby`. */\n description?: ReactNode | undefined;\n /** The error message. When given the control is invalid and the message is announced. */\n error?: ReactNode | undefined;\n /** Marks the control invalid without a message. */\n invalid?: boolean | undefined;\n /** Shows a mark after the label and sets the native `required`. */\n required?: boolean | undefined;\n disabled?: boolean | undefined;\n /** Identifies the value when a form is submitted. */\n name?: string | undefined;\n /** Control height: 32, 40 (default) or 48px. Compact density shrinks each by one step. */\n size?: ControlSize | undefined;\n /** Class on the wrapper, not the control. */\n className?: string | undefined;\n}\n\ninterface FieldShellProps extends FieldProps {\n children: ReactNode;\n}\n\n/** Internal: Field.Root with label, control slot, description and error in the right order and ARIA. */\nexport function FieldShell({\n label,\n hideLabel = false,\n description,\n error,\n invalid = false,\n required = false,\n disabled = false,\n name,\n size = 'md',\n className,\n children,\n}: FieldShellProps) {\n return (\n <Field.Root\n className={cx('sc-field', className)}\n name={name}\n disabled={disabled}\n invalid={invalid || error != null}\n data-size={size}\n >\n <Field.Label className={cx('sc-field__label', hideLabel && 'sc-visually-hidden')}>\n {label}\n {required ? (\n <span className=\"sc-field__required\" aria-hidden=\"true\">\n *\n </span>\n ) : null}\n </Field.Label>\n {children}\n {description != null ? (\n <Field.Description className=\"sc-field__description\">{description}</Field.Description>\n ) : null}\n {error != null ? (\n <Field.Error className=\"sc-field__error\" match>\n {error}\n </Field.Error>\n ) : null}\n </Field.Root>\n );\n}\n","import { Field } from '@base-ui/react/field';\nimport type { ComponentPropsWithRef } from 'react';\nimport { FieldShell, type FieldProps } from '../Field/FieldShell';\n\nexport type TextareaVariant = 'default' | 'code';\n\nexport interface TextareaProps\n extends\n Omit<ComponentPropsWithRef<'textarea'>, 'name' | 'disabled' | 'required' | 'className'>,\n Omit<FieldProps, 'size'> {\n /** Visible lines. Default 3. */\n rows?: number | undefined;\n /** `vertical` (default) lets the user drag it taller; `none` fixes the height. */\n resize?: 'vertical' | 'none' | undefined;\n /**\n * `code` for Markdown, JSON and other source: monospace, `tab-size: 2`, spellcheck, autocorrect and\n * autocapitalize off. Add the native `wrap=\"off\"` to keep long lines on one line and scroll sideways.\n */\n variant?: TextareaVariant | undefined;\n /** Called with the string value on every change, beside the native `onChange`. */\n onValueChange?: ((value: string) => void) | undefined;\n}\n\n/** A labelled multi-line text field. Renders a native `<textarea>` inside Base UI's Field. */\nexport function Textarea({\n label,\n hideLabel,\n description,\n error,\n invalid,\n required,\n disabled,\n name,\n className,\n rows = 3,\n resize = 'vertical',\n variant = 'default',\n onValueChange,\n spellCheck,\n autoCorrect,\n autoCapitalize,\n ...rest\n}: TextareaProps) {\n const code = variant === 'code';\n return (\n <FieldShell\n label={label}\n hideLabel={hideLabel}\n description={description}\n error={error}\n invalid={invalid}\n required={required}\n disabled={disabled}\n name={name}\n className={className}\n >\n <Field.Control\n render={\n <textarea\n rows={rows}\n spellCheck={spellCheck ?? (code ? false : undefined)}\n autoCorrect={autoCorrect ?? (code ? 'off' : undefined)}\n autoCapitalize={autoCapitalize ?? (code ? 'off' : undefined)}\n {...rest}\n />\n }\n className=\"sc-input sc-textarea\"\n data-resize={resize}\n data-variant={code ? 'code' : undefined}\n required={required}\n onValueChange={onValueChange ? (value) => onValueChange(value) : undefined}\n />\n </FieldShell>\n );\n}\n","import { Select as BaseSelect } from '@base-ui/react/select';\nimport { useState, type KeyboardEvent, type ReactNode } from 'react';\nimport { FieldShell, type FieldProps } from '../Field/FieldShell';\nimport { CheckIcon, ChevronDownIcon, XIcon } from '../../icons/icons.gen';\n\nexport interface SelectOption<Value extends string = string> {\n value: Value;\n label: ReactNode;\n disabled?: boolean | undefined;\n}\n\nexport interface SelectGroup<Value extends string = string> {\n /** Heading shown above the group's options. */\n label: ReactNode;\n options: SelectOption<Value>[];\n}\n\nexport interface SelectProps<Value extends string = string> extends FieldProps {\n /** Flat options, or groups of options with a heading. */\n options: Array<SelectOption<Value> | SelectGroup<Value>>;\n /** Controlled value; `null` for none, which shows `placeholder`. No sentinel option needed. */\n value?: Value | null | undefined;\n /** Initial value when uncontrolled; `null` (default) for none. */\n defaultValue?: Value | null | undefined;\n /** Called with the chosen value, or `null` when the field is cleared. */\n onValueChange?: ((value: Value | null) => void) | undefined;\n /** Shown in the trigger while nothing is chosen. */\n placeholder?: ReactNode | undefined;\n /**\n * Shows an × beside the chevron while a value is chosen; pressing it, or Backspace/Delete on the\n * focused trigger, sets the value to `null` and calls `onValueChange(null)`.\n */\n clearable?: boolean | undefined;\n /** Accessible name of the clear button. Default \"Clear\". */\n clearLabel?: string | undefined;\n /** Prevents choosing a different option. */\n readOnly?: boolean | undefined;\n /** Stretches the trigger to the container. */\n fullWidth?: boolean | undefined;\n id?: string | undefined;\n}\n\nfunction isGroup<V extends string>(entry: SelectOption<V> | SelectGroup<V>): entry is SelectGroup<V> {\n return 'options' in entry;\n}\n\nfunction Option<V extends string>({ option }: { option: SelectOption<V> }) {\n return (\n <BaseSelect.Item value={option.value} disabled={option.disabled} className=\"sc-select__item\">\n <BaseSelect.ItemIndicator className=\"sc-select__indicator\">\n <CheckIcon size=\"sm\" />\n </BaseSelect.ItemIndicator>\n <BaseSelect.ItemText className=\"sc-select__item-text\">{option.label}</BaseSelect.ItemText>\n </BaseSelect.Item>\n );\n}\n\n/**\n * A labelled single-choice dropdown. Built on Base UI's Select so the list is styled and keyboard\n * complete; submits like a native select through `name`.\n */\nexport function Select<Value extends string = string>({\n label,\n hideLabel,\n description,\n error,\n invalid,\n required,\n disabled,\n name,\n size = 'md',\n className,\n options,\n value,\n defaultValue,\n onValueChange,\n placeholder = 'Choose…',\n clearable = false,\n clearLabel = 'Clear',\n readOnly,\n fullWidth = false,\n id,\n}: SelectProps<Value>) {\n const items = options.flatMap((entry) => (isGroup(entry) ? entry.options : [entry]));\n const [internal, setInternal] = useState<Value | null>(defaultValue ?? null);\n const controlled = value !== undefined;\n const current = controlled ? value : internal;\n const setValue = (next: Value | null) => {\n if (!controlled) setInternal(next);\n onValueChange?.(next);\n };\n const canClear = clearable && current != null && !disabled && !readOnly;\n const onTriggerKeyDown = (event: KeyboardEvent<HTMLButtonElement>) => {\n if (canClear && (event.key === 'Backspace' || event.key === 'Delete')) {\n event.preventDefault();\n setValue(null);\n }\n };\n return (\n <FieldShell\n label={label}\n hideLabel={hideLabel}\n description={description}\n error={error}\n invalid={invalid}\n required={required}\n disabled={disabled}\n name={name}\n size={size}\n className={className}\n >\n <BaseSelect.Root<Value | null>\n items={items}\n value={current}\n onValueChange={(next) => setValue(next)}\n disabled={disabled}\n required={required}\n readOnly={readOnly}\n >\n <span className=\"sc-select__wrap\" data-full-width={fullWidth || undefined}>\n <BaseSelect.Trigger\n id={id}\n className=\"sc-select\"\n data-size={size}\n data-full-width={fullWidth || undefined}\n data-clearable={canClear || undefined}\n onKeyDown={onTriggerKeyDown}\n >\n <BaseSelect.Value className=\"sc-select__value\" placeholder={placeholder} />\n <BaseSelect.Icon className=\"sc-select__icon\">\n <ChevronDownIcon />\n </BaseSelect.Icon>\n </BaseSelect.Trigger>\n {canClear ? (\n <button\n type=\"button\"\n className=\"sc-select__clear\"\n aria-label={clearLabel}\n onClick={() => setValue(null)}\n >\n <XIcon size=\"sm\" />\n </button>\n ) : null}\n </span>\n <BaseSelect.Portal>\n <BaseSelect.Positioner\n className=\"sc-select__positioner\"\n sideOffset={4}\n alignItemWithTrigger={false}\n >\n <BaseSelect.Popup className=\"sc-select__popup\">\n <BaseSelect.List>\n {options.map((entry, i) =>\n isGroup(entry) ? (\n <BaseSelect.Group key={i} className=\"sc-select__group\">\n <BaseSelect.GroupLabel className=\"sc-select__group-label\">\n {entry.label}\n </BaseSelect.GroupLabel>\n {entry.options.map((option) => (\n <Option key={option.value} option={option} />\n ))}\n </BaseSelect.Group>\n ) : (\n <Option key={entry.value} option={entry} />\n ),\n )}\n </BaseSelect.List>\n </BaseSelect.Popup>\n </BaseSelect.Positioner>\n </BaseSelect.Portal>\n </BaseSelect.Root>\n </FieldShell>\n );\n}\n","import { Checkbox as BaseCheckbox } from '@base-ui/react/checkbox';\nimport { useId, type ReactNode } from 'react';\nimport { CheckIcon, MinusIcon } from '../../icons/icons.gen';\nimport { cx } from '../../utils/cx';\n\nexport interface CheckboxProps extends Omit<\n BaseCheckbox.Root.Props,\n 'className' | 'onCheckedChange' | 'render' | 'children'\n> {\n /** Required. The visible label; clicking it toggles the box. */\n label: ReactNode;\n /** Help text under the label, wired with `aria-describedby`. */\n description?: ReactNode | undefined;\n /** Called with the next checked state. */\n onCheckedChange?: ((checked: boolean) => void) | undefined;\n className?: string | undefined;\n}\n\n/** A labelled checkbox. `indeterminate` shows a dash for \"some of these\". Built on Base UI's Checkbox. */\nexport function Checkbox({\n label,\n description,\n onCheckedChange,\n className,\n disabled,\n ...rest\n}: CheckboxProps) {\n const descriptionId = useId();\n return (\n <div className={cx('sc-choice', className)} data-disabled={disabled || undefined}>\n <label className=\"sc-choice__control\">\n <BaseCheckbox.Root\n className=\"sc-checkbox\"\n disabled={disabled}\n aria-describedby={description != null ? descriptionId : undefined}\n onCheckedChange={onCheckedChange ? (checked) => onCheckedChange(checked) : undefined}\n {...rest}\n >\n <BaseCheckbox.Indicator className=\"sc-checkbox__indicator\">\n <CheckIcon size=\"sm\" className=\"sc-checkbox__check\" />\n <MinusIcon size=\"sm\" className=\"sc-checkbox__dash\" />\n </BaseCheckbox.Indicator>\n </BaseCheckbox.Root>\n <span className=\"sc-choice__label\">{label}</span>\n </label>\n {description != null ? (\n <span className=\"sc-choice__description\" id={descriptionId}>\n {description}\n </span>\n ) : null}\n </div>\n );\n}\n","import { Switch as BaseSwitch } from '@base-ui/react/switch';\nimport { useId, type ReactNode } from 'react';\nimport { cx } from '../../utils/cx';\n\nexport interface SwitchProps extends Omit<\n BaseSwitch.Root.Props,\n 'className' | 'onCheckedChange' | 'render' | 'children'\n> {\n /** Required. The visible label; clicking it flips the switch. */\n label: ReactNode;\n /** Help text under the label, wired with `aria-describedby`. */\n description?: ReactNode | undefined;\n /** Called with the next checked state. */\n onCheckedChange?: ((checked: boolean) => void) | undefined;\n /** `end` (default) puts the switch before the label; `start` puts the label first and the switch at the row's end. */\n labelPosition?: 'start' | 'end' | undefined;\n className?: string | undefined;\n}\n\n/** A labelled on/off switch for settings that apply at once. Built on Base UI's Switch. */\nexport function Switch({\n label,\n description,\n onCheckedChange,\n labelPosition = 'end',\n className,\n disabled,\n ...rest\n}: SwitchProps) {\n const descriptionId = useId();\n return (\n <div\n className={cx('sc-choice', className)}\n data-disabled={disabled || undefined}\n data-label-position={labelPosition}\n >\n <label className=\"sc-choice__control\">\n <BaseSwitch.Root\n className=\"sc-switch\"\n disabled={disabled}\n aria-describedby={description != null ? descriptionId : undefined}\n onCheckedChange={onCheckedChange ? (checked) => onCheckedChange(checked) : undefined}\n {...rest}\n >\n <BaseSwitch.Thumb className=\"sc-switch__thumb\" />\n </BaseSwitch.Root>\n <span className=\"sc-choice__label\">{label}</span>\n </label>\n {description != null ? (\n <span className=\"sc-choice__description\" id={descriptionId}>\n {description}\n </span>\n ) : null}\n </div>\n );\n}\n","import { Tabs as BaseTabs } from '@base-ui/react/tabs';\nimport type { ReactNode } from 'react';\nimport { cx } from '../../utils/cx';\n\nexport interface TabsRootProps extends Omit<\n BaseTabs.Root.Props,\n 'className' | 'value' | 'defaultValue' | 'onValueChange'\n> {\n /** Controlled active tab. */\n value?: string | undefined;\n /** Initial active tab when uncontrolled. Defaults to the first enabled tab. */\n defaultValue?: string | undefined;\n /** Called with the value of the newly active tab. */\n onValueChange?: ((value: string) => void) | undefined;\n className?: string | undefined;\n}\n\n/** Owns the active tab. Wrap a `Tabs.List` and one `Tabs.Panel` per tab. */\nfunction Root({ className, onValueChange, ...rest }: TabsRootProps) {\n return (\n <BaseTabs.Root\n className={cx('sc-tabs', className)}\n onValueChange={onValueChange ? (value) => onValueChange(String(value)) : undefined}\n {...rest}\n />\n );\n}\n\nexport interface TabsListProps extends Omit<BaseTabs.List.Props, 'className'> {\n /** Names the set of tabs for assistive tech: \"Inbox sections\". */\n 'aria-label': string;\n /** Tabs share the width equally instead of sizing to their labels. */\n fill?: boolean | undefined;\n className?: string | undefined;\n}\n\n/** The row of tabs with the sliding indicator. Arrow keys move between tabs; Enter or Space activates. */\nfunction List({ fill = false, className, children, ...rest }: TabsListProps) {\n return (\n <BaseTabs.List className={cx('sc-tabs__list', className)} data-fill={fill || undefined} {...rest}>\n {children}\n <BaseTabs.Indicator className=\"sc-tabs__indicator\" />\n </BaseTabs.List>\n );\n}\n\nexport interface TabsTabProps extends Omit<BaseTabs.Tab.Props, 'className' | 'value'> {\n value: string;\n /** A 16px icon before the label. */\n icon?: ReactNode | undefined;\n /** A count after the label, muted: `12`. */\n count?: ReactNode | undefined;\n className?: string | undefined;\n}\n\n/** One tab. */\nfunction Tab({ icon, count, className, children, ...rest }: TabsTabProps) {\n return (\n <BaseTabs.Tab className={cx('sc-tabs__tab', className)} {...rest}>\n {icon ? (\n <span className=\"sc-tabs__icon\" aria-hidden=\"true\">\n {icon}\n </span>\n ) : null}\n <span className=\"sc-tabs__label\">{children}</span>\n {count != null ? (\n <>\n {' '}\n <span className=\"sc-tabs__count\">{count}</span>\n </>\n ) : null}\n </BaseTabs.Tab>\n );\n}\n\nexport interface TabsPanelProps extends Omit<BaseTabs.Panel.Props, 'className' | 'value'> {\n value: string;\n className?: string | undefined;\n}\n\n/** The content of one tab. Unmounted while hidden unless `keepMounted`. */\nfunction Panel({ className, ...rest }: TabsPanelProps) {\n return <BaseTabs.Panel className={cx('sc-tabs__panel', className)} {...rest} />;\n}\n\n/** Switches between sections of one view. Built on Base UI's Tabs. */\nexport const Tabs = { Root, List, Tab, Panel };\n","import { Toolbar as BaseToolbar } from '@base-ui/react/toolbar';\nimport type { SpacingSize } from '../../types';\nimport { cx } from '../../utils/cx';\n\nexport interface ToolbarRootProps extends Omit<BaseToolbar.Root.Props, 'className'> {\n /** Required. Names the toolbar for assistive tech: \"Inbox actions\". */\n 'aria-label': string;\n /** Wraps onto new lines on narrow widths (default). `false` keeps one line that overflows. */\n wrap?: boolean | undefined;\n /** Gap between items and groups. Default `xs`. */\n gap?: SpacingSize | undefined;\n className?: string | undefined;\n}\n\n/**\n * A row of controls with one tab stop: Tab enters, arrow keys move between items, Tab leaves. Put every\n * control through `Toolbar.Button` (`render={<IconButton … />}`) so it joins the roving focus.\n */\nfunction Root({ wrap = true, gap = 'xs', className, ...rest }: ToolbarRootProps) {\n return (\n <BaseToolbar.Root\n className={cx('sc-toolbar', className)}\n data-wrap={wrap || undefined}\n data-gap={gap}\n {...rest}\n />\n );\n}\n\nexport interface ToolbarGroupProps extends Omit<BaseToolbar.Group.Props, 'className'> {\n /** Names the group: \"Playback\". */\n 'aria-label'?: string | undefined;\n /** Gap inside the group. Default `2xs`. */\n gap?: SpacingSize | undefined;\n className?: string | undefined;\n}\n\n/** Keeps related controls together with a tighter gap. */\nfunction Group({ gap = '2xs', className, ...rest }: ToolbarGroupProps) {\n return <BaseToolbar.Group className={cx('sc-toolbar__group', className)} data-gap={gap} {...rest} />;\n}\n\nexport interface ToolbarSeparatorProps extends Omit<BaseToolbar.Separator.Props, 'className'> {\n className?: string | undefined;\n}\n\n/** A hairline between groups. */\nfunction Separator({ className, ...rest }: ToolbarSeparatorProps) {\n return <BaseToolbar.Separator className={cx('sc-toolbar__separator', className)} {...rest} />;\n}\n\nexport interface ToolbarButtonProps extends Omit<BaseToolbar.Button.Props, 'className'> {\n className?: string | undefined;\n}\n\n/**\n * Joins a control to the toolbar's keyboard navigation. Pass the real control through `render`:\n * `<Toolbar.Button render={<IconButton label=\"Pause\" tooltip />}><PauseIcon /></Toolbar.Button>`.\n * For a Menu, nest: `<Toolbar.Button render={<Menu.Trigger render={<IconButton … />} />}>`.\n */\nconst Button = BaseToolbar.Button;\n\nexport interface ToolbarLinkProps extends Omit<BaseToolbar.Link.Props, 'className'> {\n className?: string | undefined;\n}\n\n/**\n * A link that joins the toolbar's keyboard navigation. With no `render` it is a plain `<a>`; for an\n * icon link pass an IconButton that itself renders the anchor (or a Next.js `Link`):\n * `<Toolbar.Link render={<IconButton label=\"Settings\" tooltip render={<a href=\"/settings\" />} />}><SettingsIcon /></Toolbar.Link>`.\n */\nconst Link = BaseToolbar.Link;\n\nexport interface ToolbarSpacerProps {\n className?: string | undefined;\n}\n\n/** Pushes what follows to the far end. */\nfunction Spacer({ className }: ToolbarSpacerProps) {\n return <div className={cx('sc-toolbar__spacer', className)} aria-hidden=\"true\" />;\n}\n\n/** A horizontal container of controls. Built on Base UI's Toolbar. */\nexport const Toolbar = { Root, Group, Separator, Button, Link, Spacer };\n","import { useState, type ComponentPropsWithRef, type ReactNode } from 'react';\nimport { IconButton } from '../IconButton/IconButton';\nimport { CircleCheckIcon, CircleXIcon, InfoIcon, WarningIcon, XIcon } from '../../icons/icons.gen';\nimport { cx } from '../../utils/cx';\n\nexport type BannerTone = 'info' | 'success' | 'warning' | 'danger' | 'neutral';\n\nexport interface BannerProps extends ComponentPropsWithRef<'div'> {\n /** Colour and default icon. `warning` and `danger` are announced as alerts; the rest as status. */\n tone?: BannerTone | undefined;\n /** Replaces the tone's icon; `false` removes it. */\n icon?: ReactNode | false | undefined;\n /** One Button, usually `variant=\"ghost\" size=\"sm\"`, at the end of the strip. */\n action?: ReactNode | undefined;\n /** Shows a close button that hides the banner. */\n dismissible?: boolean | undefined;\n /** Called when the close button is pressed. */\n onDismiss?: (() => void) | undefined;\n /** Controlled visibility when dismissible. */\n open?: boolean | undefined;\n /** Accessible name of the close button. Default \"Dismiss\". */\n dismissLabel?: string | undefined;\n}\n\nconst toneIcons: Record<BannerTone, ReactNode> = {\n info: <InfoIcon />,\n success: <CircleCheckIcon />,\n warning: <WarningIcon />,\n danger: <CircleXIcon />,\n neutral: null,\n};\n\n/** A single-line status strip across the top of a view: paused, offline, \"3 new since you looked\". */\nexport function Banner({\n tone = 'info',\n icon,\n action,\n dismissible = false,\n onDismiss,\n open,\n dismissLabel = 'Dismiss',\n role,\n className,\n children,\n ...rest\n}: BannerProps) {\n const [dismissed, setDismissed] = useState(false);\n const visible = open ?? !dismissed;\n if (!visible) return null;\n const glyph = icon === false ? null : (icon ?? toneIcons[tone]);\n return (\n <div\n role={role ?? (tone === 'warning' || tone === 'danger' ? 'alert' : 'status')}\n className={cx('sc-banner', className)}\n data-tone={tone}\n {...rest}\n >\n {glyph ? (\n <span className=\"sc-banner__icon\" aria-hidden=\"true\">\n {glyph}\n </span>\n ) : null}\n <div className=\"sc-banner__body\">{children}</div>\n {action ? <div className=\"sc-banner__action\">{action}</div> : null}\n {dismissible ? (\n <IconButton\n label={dismissLabel}\n size=\"sm\"\n className=\"sc-banner__dismiss\"\n onClick={() => {\n setDismissed(true);\n onDismiss?.();\n }}\n >\n <XIcon />\n </IconButton>\n ) : null}\n </div>\n );\n}\n","import type { ComponentPropsWithRef } from 'react';\nimport type { IconSize } from '../Icon/Icon';\nimport { cx } from '../../utils/cx';\n\nexport interface SpinnerProps extends ComponentPropsWithRef<'span'> {\n /** `xs` 12, `sm` 14, `md` 16 (default), `lg` 20, `xl` 24, or `em` to follow the font size. */\n size?: IconSize | undefined;\n /** What is happening, announced once as a status. Default \"Loading\". */\n label?: string | undefined;\n /** Hides it from assistive tech when the text beside it already says what is happening. */\n decorative?: boolean | undefined;\n}\n\n/** An indeterminate activity indicator in `currentColor`. Slows down, never stops, under reduced motion. */\nexport function Spinner({\n size = 'md',\n label = 'Loading',\n decorative = false,\n className,\n ...rest\n}: SpinnerProps) {\n return (\n <span\n className={cx('sc-spinner', className)}\n data-size={size}\n role={decorative ? undefined : 'status'}\n aria-label={decorative ? undefined : label}\n aria-hidden={decorative || undefined}\n {...rest}\n >\n <svg\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.75\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <circle className=\"sc-spinner__track\" cx=\"8\" cy=\"8\" r=\"6.25\" />\n <circle className=\"sc-spinner__arc\" cx=\"8\" cy=\"8\" r=\"6.25\" strokeLinecap=\"round\" />\n </svg>\n </span>\n );\n}\n","import { Progress as BaseProgress } from '@base-ui/react/progress';\nimport type { ComponentPropsWithRef, ReactNode } from 'react';\nimport { Spinner } from '../Spinner/Spinner';\nimport { cx } from '../../utils/cx';\n\nexport type ProgressTone = 'accent' | 'success' | 'warning' | 'danger' | 'neutral';\nexport type ProgressSize = 'sm' | 'md';\nexport type ProgressVariant = 'bar' | 'inline';\n\nexport interface ProgressProps extends Omit<ComponentPropsWithRef<'div'>, 'children'> {\n /** Current value. Omit or pass `null` while the amount of work is unknown (indeterminate). */\n value?: number | null | undefined;\n /** Default 100. Pass the total so `value` can be a count: `value={460} max={859}`. */\n max?: number | undefined;\n /** Default 0. */\n min?: number | undefined;\n /** What is happening: \"Verifying\". Visible, and names the bar for assistive tech. */\n label?: ReactNode | undefined;\n /** Detail at the end: \"460 of 859 · 3 min elapsed\". A string also becomes `aria-valuetext`. */\n valueText?: ReactNode | undefined;\n /** Shows the percentage when `valueText` is not given. */\n showValue?: boolean | undefined;\n /** Fill colour. Default `accent`; `success` when done, `danger` when it failed. */\n tone?: ProgressTone | undefined;\n /** Bar thickness: `sm` 4px, `md` 8px (default). Inline uses the text size. */\n size?: ProgressSize | undefined;\n /** `bar` (default) is label, value and a track; `inline` is a Spinner beside the text for toolbars and buttons. */\n variant?: ProgressVariant | undefined;\n /** Names the bar when there is no `label`. */\n 'aria-label'?: string | undefined;\n}\n\n/**\n * Says that something is processing and, when known, how far along it is. Built on Base UI's Progress:\n * `role=\"progressbar\"` with the aria value attributes, or none while indeterminate.\n */\nexport function Progress({\n value,\n max = 100,\n min = 0,\n label,\n valueText,\n showValue = false,\n tone = 'accent',\n size = 'md',\n variant = 'bar',\n className,\n ...rest\n}: ProgressProps) {\n const current = value ?? null;\n const hasValueText = valueText != null || (showValue && current !== null);\n return (\n <BaseProgress.Root\n value={current}\n max={max}\n min={min}\n getAriaValueText={(formatted) => (typeof valueText === 'string' ? valueText : (formatted ?? ''))}\n className={cx('sc-progress', className)}\n data-variant={variant}\n data-tone={tone}\n data-size={size}\n {...rest}\n >\n {variant === 'inline' ? <Spinner size=\"sm\" decorative className=\"sc-progress__spinner\" /> : null}\n {label != null ? <BaseProgress.Label className=\"sc-progress__label\">{label}</BaseProgress.Label> : null}\n {hasValueText ? (\n <BaseProgress.Value className=\"sc-progress__value\">\n {(formatted) => (valueText != null ? valueText : formatted)}\n </BaseProgress.Value>\n ) : null}\n {variant === 'bar' ? (\n <BaseProgress.Track className=\"sc-progress__track\">\n <BaseProgress.Indicator className=\"sc-progress__indicator\" />\n </BaseProgress.Track>\n ) : null}\n </BaseProgress.Root>\n );\n}\n","import { createElement, type ComponentPropsWithRef } from 'react';\nimport { cx } from '../../utils/cx';\n\nexport type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;\nexport type HeadingSize = 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | '5xl';\nexport type HeadingElement = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'div' | 'span' | 'p';\nexport type TextTone = 'default' | 'muted' | 'subtle' | 'accent' | 'success' | 'warning' | 'danger' | 'info';\n\nexport interface HeadingProps extends ComponentPropsWithRef<'h2'> {\n /** The outline level, rendered as `h1`–`h6`. Default 2. */\n level?: HeadingLevel | undefined;\n /** Visual size from the type scale, independent of the level. Defaults by level: 3xl, 2xl, xl, lg, md, sm. */\n size?: HeadingSize | undefined;\n /** Render a different element and keep the look; `div`/`span` for a card title that is not an outline entry. */\n as?: HeadingElement | undefined;\n /** Colour. Default is the text colour. */\n tone?: TextTone | undefined;\n /** One line with an ellipsis. */\n truncate?: boolean | undefined;\n}\n\nconst sizeByLevel: Record<HeadingLevel, HeadingSize> = {\n 1: '3xl',\n 2: '2xl',\n 3: 'xl',\n 4: 'lg',\n 5: 'md',\n 6: 'sm',\n};\n\n/** A heading from the type scale. `level` is the semantics, `size` the look; they are set separately on purpose. */\nexport function Heading({\n level = 2,\n size,\n as,\n tone = 'default',\n truncate = false,\n className,\n ...rest\n}: HeadingProps) {\n return createElement(as ?? `h${level}`, {\n className: cx('sc-heading', className),\n 'data-size': size ?? sizeByLevel[level],\n 'data-tone': tone,\n 'data-truncate': truncate || undefined,\n ...rest,\n });\n}\n","import { createElement, type ComponentPropsWithRef, type CSSProperties, type ReactElement } from 'react';\nimport type { TextTone } from '../Heading/Heading';\nimport { cx } from '../../utils/cx';\n\nexport type TextSize = 'xs' | 'sm' | 'md' | 'lg';\nexport type TextWeight = 'regular' | 'medium' | 'semibold';\nexport type TextAlign = 'start' | 'center' | 'end';\nexport type TextElement =\n | 'p'\n | 'span'\n | 'div'\n | 'label'\n | 'li'\n | 'dt'\n | 'dd'\n | 'strong'\n | 'em'\n | 'small'\n | 'time'\n | 'figcaption'\n | 'legend';\n\nexport interface TextProps extends ComponentPropsWithRef<'p'> {\n /** Element to render. Default `p`; `span` inside other text. */\n as?: TextElement | undefined;\n /** `xs` 12 captions, `sm` 14 UI text (default), `md` body copy, `lg` lede. */\n size?: TextSize | undefined;\n /** Colour. `muted` for metadata, `subtle` for placeholders, status tones for inline status. */\n tone?: TextTone | undefined;\n weight?: TextWeight | undefined;\n align?: TextAlign | undefined;\n /** `true` keeps one line with an ellipsis; a number clamps to that many lines. */\n truncate?: boolean | number | undefined;\n /** Tabular figures, for numbers that line up in columns. */\n numeric?: boolean | undefined;\n}\n\n/** Running text and labels from the type scale. Parents own spacing: Text has no margins. */\nexport function Text({\n as = 'p',\n size = 'sm',\n tone = 'default',\n weight = 'regular',\n align,\n truncate = false,\n numeric = false,\n className,\n style,\n ...rest\n}: TextProps): ReactElement {\n const clamp = typeof truncate === 'number' ? truncate : undefined;\n return createElement(as, {\n className: cx('sc-text', className),\n 'data-size': size,\n 'data-tone': tone,\n 'data-weight': weight,\n 'data-align': align,\n 'data-truncate': truncate === true ? '' : clamp !== undefined ? 'clamp' : undefined,\n 'data-numeric': numeric || undefined,\n style: clamp !== undefined ? ({ ...style, '--sc-text-lines': clamp } as CSSProperties) : style,\n ...rest,\n });\n}\n","import type { ComponentPropsWithRef, CSSProperties, ReactNode } from 'react';\nimport { ArrowDownIcon, ArrowUpIcon } from '../../icons/icons.gen';\nimport { cx } from '../../utils/cx';\n\nexport type TableAlign = 'start' | 'center' | 'end';\nexport type TableDensity = 'comfortable' | 'compact';\nexport type TableSortDirection = 'ascending' | 'descending' | 'none';\n\nexport interface TableRootProps extends Omit<ComponentPropsWithRef<'table'>, 'style'> {\n /** Column headers stay visible while the table scrolls. Give `maxHeight` to scroll inside the table; otherwise they stick to the page. */\n stickyHeader?: boolean | undefined;\n /** Limits the height and scrolls rows inside; pairs with `stickyHeader`. A CSS length. */\n maxHeight?: string | undefined;\n /** `compact` tightens row height and padding; `data-density=\"compact\"` on an ancestor does the same. */\n density?: TableDensity | undefined;\n /** Hairlines between rows (default) or none. */\n divided?: boolean | undefined;\n /** `fixed` column widths from the first row, for truncating cells. Default `auto`. */\n layout?: 'auto' | 'fixed' | undefined;\n /** Style and class for the scrolling wrapper; `className` goes on the `<table>`. */\n wrapperClassName?: string | undefined;\n wrapperStyle?: CSSProperties | undefined;\n style?: CSSProperties | undefined;\n children?: ReactNode | undefined;\n}\n\n/** A semantic `<table>` in a horizontally scrolling wrapper. Compose `Table.Head`, `Table.Body`, `Table.Row`, `Table.Header`, `Table.Cell`. */\nfunction Root({\n stickyHeader = false,\n maxHeight,\n density,\n divided = true,\n layout = 'auto',\n wrapperClassName,\n wrapperStyle,\n className,\n style,\n children,\n ...rest\n}: TableRootProps) {\n return (\n <div\n className={cx('sc-table-wrap', wrapperClassName)}\n data-sticky-header={stickyHeader || undefined}\n data-scroll={maxHeight ? '' : undefined}\n style={maxHeight ? { ...wrapperStyle, maxBlockSize: maxHeight } : wrapperStyle}\n >\n <table\n className={cx('sc-table', className)}\n data-density={density}\n data-divided={divided || undefined}\n data-layout={layout}\n style={style}\n {...rest}\n >\n {children}\n </table>\n </div>\n );\n}\n\nexport type TableCaptionProps = ComponentPropsWithRef<'caption'>;\n\n/** Names the table for assistive tech; visually a muted line above it. */\nfunction Caption({ className, ...rest }: TableCaptionProps) {\n return <caption className={cx('sc-table__caption', className)} {...rest} />;\n}\n\nexport type TableHeadProps = ComponentPropsWithRef<'thead'>;\nfunction Head({ className, ...rest }: TableHeadProps) {\n return <thead className={cx('sc-table__head', className)} {...rest} />;\n}\n\nexport type TableBodyProps = ComponentPropsWithRef<'tbody'>;\nfunction Body({ className, ...rest }: TableBodyProps) {\n return <tbody className={cx('sc-table__body', className)} {...rest} />;\n}\n\nexport type TableFootProps = ComponentPropsWithRef<'tfoot'>;\nfunction Foot({ className, ...rest }: TableFootProps) {\n return <tfoot className={cx('sc-table__foot', className)} {...rest} />;\n}\n\nexport interface TableRowProps extends ComponentPropsWithRef<'tr'> {\n /** Accent wash, for the current row. */\n selected?: boolean | undefined;\n /** Hover wash and pointer; make the primary cell a link or button for the real target. */\n interactive?: boolean | undefined;\n}\n\nfunction Row({ selected = false, interactive = false, className, ...rest }: TableRowProps) {\n return (\n <tr\n className={cx('sc-table__row', className)}\n data-selected={selected || undefined}\n data-interactive={interactive || undefined}\n aria-selected={selected || undefined}\n {...rest}\n />\n );\n}\n\ninterface CellSlots {\n /** Horizontal alignment. Default `start`; `end` for numbers. */\n align?: TableAlign | undefined;\n /** Tabular figures and end alignment. */\n numeric?: boolean | undefined;\n /** No wrapping. */\n nowrap?: boolean | undefined;\n /** One line with an ellipsis; needs `layout=\"fixed\"` or a `width`. */\n truncate?: boolean | undefined;\n /** Column width as a CSS length, on headers. */\n width?: string | undefined;\n}\n\nexport interface TableHeaderProps extends Omit<ComponentPropsWithRef<'th'>, 'align' | 'width'>, CellSlots {\n /** Renders the label as a button that sorts the column. The table stays controlled: sort the rows yourself in `onSort`. */\n sortable?: boolean | undefined;\n /** The column's current sort, reflected as `aria-sort`. `none` (default) for every column but the sorted one. */\n sortDirection?: TableSortDirection | undefined;\n /** Called with the direction to apply: `ascending` first, then it toggles. */\n onSort?: ((direction: Exclude<TableSortDirection, 'none'>) => void) | undefined;\n}\n\n/** A `<th>`; `scope` defaults to `col`, pass `row` for the first cell of a row. */\nfunction Header({\n align,\n numeric = false,\n nowrap = false,\n truncate = false,\n width,\n sortable = false,\n sortDirection = 'none',\n onSort,\n scope = 'col',\n className,\n style,\n children,\n ...rest\n}: TableHeaderProps) {\n const sorted = sortable && sortDirection !== 'none';\n return (\n <th\n scope={scope}\n className={cx('sc-table__header', className)}\n data-align={align ?? (numeric ? 'end' : undefined)}\n data-numeric={numeric || undefined}\n data-nowrap={nowrap || undefined}\n data-truncate={truncate || undefined}\n data-sortable={sortable || undefined}\n data-sorted={sorted ? sortDirection : undefined}\n aria-sort={sorted ? sortDirection : undefined}\n style={width ? { ...style, inlineSize: width } : style}\n {...rest}\n >\n {sortable ? (\n <button\n type=\"button\"\n className=\"sc-table__sort\"\n onClick={() => onSort?.(sortDirection === 'ascending' ? 'descending' : 'ascending')}\n >\n <span className=\"sc-table__sort-label\">{children}</span>\n <span className=\"sc-table__sort-icon\" aria-hidden=\"true\">\n {sortDirection === 'descending' ? <ArrowDownIcon size=\"xs\" /> : <ArrowUpIcon size=\"xs\" />}\n </span>\n </button>\n ) : (\n children\n )}\n </th>\n );\n}\n\nexport interface TableCellProps extends Omit<ComponentPropsWithRef<'td'>, 'align' | 'width'>, CellSlots {}\n\nfunction Cell({\n align,\n numeric = false,\n nowrap = false,\n truncate = false,\n width,\n className,\n style,\n ...rest\n}: TableCellProps) {\n return (\n <td\n className={cx('sc-table__cell', className)}\n data-align={align ?? (numeric ? 'end' : undefined)}\n data-numeric={numeric || undefined}\n data-nowrap={nowrap || undefined}\n data-truncate={truncate || undefined}\n style={width ? { ...style, inlineSize: width } : style}\n {...rest}\n />\n );\n}\n\n/** Rows of records with column headers. Native table elements, so screen readers get rows and columns. */\nexport const Table = { Root, Caption, Head, Body, Foot, Row, Header, Cell };\n","import { createElement, type ComponentPropsWithRef, type ReactNode } from 'react';\nimport { ArrowDownIcon, ArrowRightIcon, ArrowUpIcon } from '../../icons/icons.gen';\nimport { cx } from '../../utils/cx';\n\nexport type StatTrend = 'up' | 'down' | 'flat';\nexport type StatDeltaTone = 'positive' | 'negative' | 'neutral';\nexport type StatElement = 'div' | 'li' | 'article';\nexport type StatVariant = 'outlined' | 'filled' | 'plain';\nexport type StatSize = 'sm' | 'md';\n\nexport interface StatProps extends Omit<ComponentPropsWithRef<'div'>, 'children'> {\n /** What the number is: \"Applications\", \"Reply rate\". */\n label: ReactNode;\n /** The number, already formatted: \"1,204\", \"37%\". */\n value: ReactNode;\n /** The change beside the value: \"+12\", \"−3.1 pts\", \"same as last week\". */\n delta?: ReactNode | undefined;\n /** Colour of the delta: `positive` green, `negative` red, `neutral` muted (default). Say which is good; up is not always good. */\n deltaTone?: StatDeltaTone | undefined;\n /** Arrow before the delta. */\n trend?: StatTrend | undefined;\n /** Muted line under the value: \"last 7 days\", \"of 2,000 budget\". */\n hint?: ReactNode | undefined;\n /** A 20px icon in the corner. Decorative. */\n icon?: ReactNode | undefined;\n /** `outlined` surface (default), `filled` inset, `plain` no surface for a row of stats inside a Card. */\n variant?: StatVariant | undefined;\n /** `md` (default) or `sm` for dense rows. */\n size?: StatSize | undefined;\n /** Element to render; `li` in a list of stats. */\n as?: StatElement | undefined;\n}\n\nconst trendIcons: Record<StatTrend, ReactNode> = {\n up: <ArrowUpIcon size=\"xs\" />,\n down: <ArrowDownIcon size=\"xs\" />,\n flat: <ArrowRightIcon size=\"xs\" />,\n};\n\n/** One number with its label: a KPI tile. The value is text, so it reads as \"Applications, 1,204, up 12\". */\nexport function Stat({\n label,\n value,\n delta,\n deltaTone = 'neutral',\n trend,\n hint,\n icon,\n variant = 'outlined',\n size = 'md',\n as = 'div',\n className,\n ...rest\n}: StatProps) {\n return createElement(\n as,\n {\n className: cx('sc-stat', className),\n 'data-variant': variant,\n 'data-size': size,\n ...rest,\n },\n <>\n <div className=\"sc-stat__label\">{label}</div>\n {icon ? (\n <span className=\"sc-stat__icon\" aria-hidden=\"true\">\n {icon}\n </span>\n ) : null}\n <div className=\"sc-stat__value\">{value}</div>\n {delta != null ? (\n <div className=\"sc-stat__delta\" data-tone={deltaTone}>\n {trend ? (\n <span className=\"sc-stat__trend\" aria-hidden=\"true\">\n {trendIcons[trend]}\n </span>\n ) : null}\n {trend ? (\n <span className=\"sc-visually-hidden\">{trend === 'flat' ? 'unchanged' : trend} </span>\n ) : null}\n {delta}\n </div>\n ) : null}\n {hint != null ? <div className=\"sc-stat__hint\">{hint}</div> : null}\n </>,\n );\n}\n","import type { ComponentPropsWithRef, KeyboardEvent, MouseEvent, ReactNode } from 'react';\nimport { XIcon } from '../../icons/icons.gen';\nimport { cx } from '../../utils/cx';\n\nexport type ChipTone = 'neutral' | 'accent' | 'success' | 'warning' | 'danger' | 'info';\nexport type ChipSize = 'sm' | 'md';\n\nexport interface ChipProps extends Omit<ComponentPropsWithRef<'span'>, 'onClick' | 'onRemove'> {\n /** The chip text. Keep it to a word or three. */\n children: ReactNode;\n /** A 14px icon before the text. Decorative. */\n icon?: ReactNode | undefined;\n /** Colour. `neutral` (default) for filters, a status tone when the chip is the status. */\n tone?: ChipTone | undefined;\n /** `md` 32px (default) or `sm` 24px inside table rows and Card headers. */\n size?: ChipSize | undefined;\n /** Filled and `aria-pressed`. Use with `onClick` for a toggling filter chip. */\n selected?: boolean | undefined;\n /** Makes the chip a `<button>` that toggles; `selected` is reflected as `aria-pressed`. */\n onClick?: ((event: MouseEvent<HTMLButtonElement>) => void) | undefined;\n /**\n * Adds a labelled × that calls this. Backspace or Delete on the focused chip (or on the ×) removes it\n * too. Focus is yours to manage after removal: move it to the next chip or the filter input.\n */\n onRemove?: (() => void) | undefined;\n /** Accessible name of the ×. Default \"Remove\" followed by the chip text when that text is a string. */\n removeLabel?: string | undefined;\n disabled?: boolean | undefined;\n}\n\n/**\n * A small pill: an applied filter, a tag, a selectable option in a row of a few. `onClick` makes it a\n * toggle button, `onRemove` adds the ×, and the two combine. Plain text otherwise.\n */\nexport function Chip({\n children,\n icon,\n tone = 'neutral',\n size = 'md',\n selected = false,\n onClick,\n onRemove,\n removeLabel,\n disabled = false,\n className,\n ...rest\n}: ChipProps) {\n const interactive = onClick !== undefined;\n const removeName = removeLabel ?? (typeof children === 'string' ? `Remove ${children}` : 'Remove');\n const handleRemoveKey = (event: KeyboardEvent<HTMLElement>) => {\n if (onRemove && !disabled && (event.key === 'Backspace' || event.key === 'Delete')) {\n event.preventDefault();\n onRemove();\n }\n };\n const shared = {\n className: cx('sc-chip', className),\n 'data-tone': tone,\n 'data-size': size,\n 'data-selected': selected || undefined,\n 'data-removable': onRemove ? '' : undefined,\n 'data-disabled': disabled || undefined,\n };\n const body = (\n <>\n {icon ? (\n <span className=\"sc-chip__icon\" aria-hidden=\"true\">\n {icon}\n </span>\n ) : null}\n <span className=\"sc-chip__label\">{children}</span>\n </>\n );\n const remove = onRemove ? (\n <button\n type=\"button\"\n className=\"sc-chip__remove\"\n aria-label={removeName}\n disabled={disabled}\n onClick={(event) => {\n event.stopPropagation();\n onRemove();\n }}\n onKeyDown={handleRemoveKey}\n >\n <XIcon size=\"xs\" />\n </button>\n ) : null;\n\n if (interactive) {\n return (\n <span {...shared} {...rest}>\n <button\n type=\"button\"\n className=\"sc-chip__action\"\n aria-pressed={selected}\n disabled={disabled}\n onClick={onClick}\n onKeyDown={handleRemoveKey}\n >\n {body}\n </button>\n {remove}\n </span>\n );\n }\n return (\n <span {...shared} {...rest}>\n {body}\n {remove}\n </span>\n );\n}\n","import {\n type CSSProperties,\n useEffect,\n useRef,\n useState,\n type ComponentPropsWithRef,\n type ReactNode,\n type SyntheticEvent,\n} from 'react';\nimport { ChevronDownIcon } from '../../icons/icons.gen';\nimport { cx } from '../../utils/cx';\n\nexport interface DisclosureProps extends Omit<ComponentPropsWithRef<'details'>, 'open' | 'onToggle'> {\n /** Required. The summary line, a verb phrase: \"Show full description\". */\n summary: ReactNode;\n /** Replaces `summary` while open: \"Show less\". */\n summaryOpen?: ReactNode | undefined;\n /** Controlled open state. */\n open?: boolean | undefined;\n /** Initial open state when uncontrolled. */\n defaultOpen?: boolean | undefined;\n /** Called when the user toggles it. */\n onOpenChange?: ((open: boolean) => void) | undefined;\n /**\n * While closed, shows this many lines of the content fading out, so a long description still reads\n * as a teaser. Puts the summary line under the preview. Needs `::details-content` (2025 browsers);\n * older ones show the summary alone.\n */\n previewLines?: number | undefined;\n /** Puts the summary line above (default) or below the content. Defaults to `end` with `previewLines`. */\n summaryPosition?: 'start' | 'end' | undefined;\n children?: ReactNode | undefined;\n}\n\n/**\n * A native `<details>` collapse with a styled summary. Works without JavaScript, is announced as a\n * disclosure, and shares `name` with siblings for an exclusive group.\n */\nexport function Disclosure({\n summary,\n summaryOpen,\n open,\n defaultOpen = false,\n onOpenChange,\n previewLines,\n summaryPosition,\n className,\n style,\n children,\n ref,\n ...rest\n}: DisclosureProps) {\n const controlled = open !== undefined;\n const [internal, setInternal] = useState(defaultOpen);\n const isOpen = controlled ? open : internal;\n const inner = useRef<HTMLDetailsElement | null>(null);\n // A native toggle flips the element itself; when controlled and the parent declines, put it back.\n useEffect(() => {\n if (controlled && inner.current && inner.current.open !== open) inner.current.open = open;\n });\n const onToggle = (event: SyntheticEvent<HTMLDetailsElement>) => {\n const next = event.currentTarget.open;\n if (next === isOpen) return;\n if (!controlled) setInternal(next);\n onOpenChange?.(next);\n };\n const position = summaryPosition ?? (previewLines ? 'end' : 'start');\n return (\n <details\n ref={(node) => {\n inner.current = node;\n if (typeof ref === 'function') ref(node);\n else if (ref) ref.current = node;\n }}\n className={cx('sc-disclosure', className)}\n open={isOpen}\n onToggle={onToggle}\n data-summary-position={position}\n data-preview={previewLines ? '' : undefined}\n style={previewLines ? ({ ...style, '--_lines': previewLines } as CSSProperties) : style}\n {...rest}\n >\n <summary className=\"sc-disclosure__summary\">\n <ChevronDownIcon className=\"sc-disclosure__chevron\" />\n <span className=\"sc-disclosure__summary-text\">\n {isOpen && summaryOpen != null ? summaryOpen : summary}\n </span>\n </summary>\n <div className=\"sc-disclosure__content\">{children}</div>\n </details>\n );\n}\n","import { createElement, type ComponentPropsWithRef, type ReactNode } from 'react';\nimport { cx } from '../../utils/cx';\n\nexport type EmptyStateSize = 'sm' | 'md';\nexport type EmptyStateElement = 'div' | 'section' | 'li';\n\nexport interface EmptyStateProps extends Omit<ComponentPropsWithRef<'div'>, 'title'> {\n /** Required. What is empty, as a short statement: \"No applications yet\". */\n title: ReactNode;\n /** One sentence on why, or what to do: \"Postings you apply to show up here.\" */\n description?: ReactNode | undefined;\n /** A 24px icon in a muted circle above the title. Decorative. */\n icon?: ReactNode | undefined;\n /** The actions, usually one primary Button and at most one secondary. Rendered in an Inline. */\n children?: ReactNode | undefined;\n /** `md` (default) for a whole view or panel, `sm` inside a Card or a table body. */\n size?: EmptyStateSize | undefined;\n /** Element to render. Default `div`. */\n as?: EmptyStateElement | undefined;\n}\n\n/**\n * Centred placeholder for a view with nothing in it: an icon, a title, a sentence and the action that\n * fills it. Say what is missing and the next step; never apologise.\n */\nexport function EmptyState({\n title,\n description,\n icon,\n children,\n size = 'md',\n as = 'div',\n className,\n ...rest\n}: EmptyStateProps) {\n return createElement(\n as,\n { className: cx('sc-empty-state', className), 'data-size': size, ...rest },\n icon ? (\n <span className=\"sc-empty-state__icon\" aria-hidden=\"true\">\n {icon}\n </span>\n ) : null,\n <p className=\"sc-empty-state__title\">{title}</p>,\n description != null ? <p className=\"sc-empty-state__description\">{description}</p> : null,\n children != null ? <div className=\"sc-empty-state__actions\">{children}</div> : null,\n );\n}\n","import type { ComponentPropsWithRef, CSSProperties } from 'react';\nimport { cx } from '../../utils/cx';\n\nexport type SkeletonVariant = 'text' | 'rect' | 'circle';\n\nexport interface SkeletonProps extends ComponentPropsWithRef<'span'> {\n /** `text` (default) is one line of the current font size; `rect` a block; `circle` an avatar. */\n variant?: SkeletonVariant | undefined;\n /** Any CSS length. Default: text `100%`, rect `100%`, circle `40px`. */\n width?: string | number | undefined;\n /** Any CSS length. Default: text `1em` (one line), rect `80px`, circle = `width`. */\n height?: string | number | undefined;\n /** For `text`: how many lines; the last is shorter. Default 1. */\n lines?: number | undefined;\n /** Hides the shimmer. Default `false`; reduced motion hides it anyway. */\n still?: boolean | undefined;\n}\n\n/**\n * A placeholder shape shown while real content loads. It is hidden from assistive tech: put\n * `aria-busy=\"true\"` on the region being filled, or a `Spinner` with a label beside it, so the loading\n * state is announced once instead of per block.\n */\nexport function Skeleton({\n variant = 'text',\n width,\n height,\n lines = 1,\n still = false,\n className,\n style,\n ...rest\n}: SkeletonProps) {\n const size: CSSProperties = {\n ...style,\n ...(width !== undefined ? { inlineSize: width } : {}),\n ...(height !== undefined ? { blockSize: height } : {}),\n };\n if (variant === 'text' && lines > 1) {\n return (\n <span className={cx('sc-skeleton-lines', className)} aria-hidden=\"true\" style={style} {...rest}>\n {Array.from({ length: lines }, (_, i) => (\n <span\n key={i}\n className=\"sc-skeleton\"\n data-variant=\"text\"\n data-still={still || undefined}\n data-last={i === lines - 1 || undefined}\n style={width !== undefined ? { inlineSize: width } : undefined}\n />\n ))}\n </span>\n );\n }\n return (\n <span\n className={cx('sc-skeleton', className)}\n data-variant={variant}\n data-still={still || undefined}\n aria-hidden=\"true\"\n style={size}\n {...rest}\n />\n );\n}\n","export { Button, type ButtonProps, type ButtonSize, type ButtonVariant } from './components/Button/Button';\nexport {\n Badge,\n type BadgeProps,\n type BadgeSize,\n type BadgeTone,\n type BadgeVariant,\n} from './components/Badge/Badge';\nexport {\n Card,\n type CardElement,\n type CardPadding,\n type CardProps,\n type CardVariant,\n} from './components/Card/Card';\nexport {\n Stack,\n type StackAlign,\n type StackElement,\n type StackJustify,\n type StackProps,\n} from './components/Stack/Stack';\nexport {\n Inline,\n type InlineAlign,\n type InlineElement,\n type InlineJustify,\n type InlineProps,\n} from './components/Inline/Inline';\nexport { Kbd, type KbdGroupProps, type KbdProps } from './components/Kbd/Kbd';\nexport {\n Dialog,\n type DialogActionsProps,\n type DialogBodyProps,\n type DialogCloseProps,\n type DialogContentProps,\n type DialogDescriptionProps,\n type DialogRootProps,\n type DialogSize,\n type DialogTitleProps,\n type DialogVariant,\n} from './components/Dialog/Dialog';\nexport { Icon, type IconGlyphProps, type IconProps, type IconSize } from './components/Icon/Icon';\nexport * from './icons/icons.gen';\nexport { iconNames, type IconName } from './icons/icon-names.gen';\nexport { IconButton, type IconButtonProps } from './components/IconButton/IconButton';\nexport {\n Tooltip,\n type TooltipAlign,\n type TooltipProps,\n type TooltipSide,\n} from './components/Tooltip/Tooltip';\nexport {\n Menu,\n type MenuAlign,\n type MenuCheckboxItemProps,\n type MenuContentProps,\n type MenuGroupProps,\n type MenuItemProps,\n type MenuItemTone,\n type MenuLinkItemProps,\n type MenuRadioGroupProps,\n type MenuRadioItemProps,\n type MenuRootProps,\n type MenuSeparatorProps,\n type MenuSide,\n type MenuTriggerProps,\n} from './components/Menu/Menu';\nexport type { ControlSize, FieldProps } from './components/Field/FieldShell';\nexport { Input, type InputProps } from './components/Input/Input';\nexport { Textarea, type TextareaProps, type TextareaVariant } from './components/Textarea/Textarea';\nexport { Select, type SelectGroup, type SelectOption, type SelectProps } from './components/Select/Select';\nexport { Checkbox, type CheckboxProps } from './components/Checkbox/Checkbox';\nexport { Switch, type SwitchProps } from './components/Switch/Switch';\nexport {\n Tabs,\n type TabsListProps,\n type TabsPanelProps,\n type TabsRootProps,\n type TabsTabProps,\n} from './components/Tabs/Tabs';\nexport {\n Toolbar,\n type ToolbarButtonProps,\n type ToolbarGroupProps,\n type ToolbarLinkProps,\n type ToolbarRootProps,\n type ToolbarSeparatorProps,\n type ToolbarSpacerProps,\n} from './components/Toolbar/Toolbar';\nexport { Banner, type BannerProps, type BannerTone } from './components/Banner/Banner';\nexport { Spinner, type SpinnerProps } from './components/Spinner/Spinner';\nexport {\n Progress,\n type ProgressProps,\n type ProgressSize,\n type ProgressTone,\n type ProgressVariant,\n} from './components/Progress/Progress';\nexport {\n Heading,\n type HeadingElement,\n type HeadingLevel,\n type HeadingProps,\n type HeadingSize,\n type TextTone,\n} from './components/Heading/Heading';\nexport {\n Text,\n type TextAlign,\n type TextElement,\n type TextProps,\n type TextSize,\n type TextWeight,\n} from './components/Text/Text';\nexport {\n Table,\n type TableAlign,\n type TableBodyProps,\n type TableCaptionProps,\n type TableCellProps,\n type TableDensity,\n type TableFootProps,\n type TableHeadProps,\n type TableHeaderProps,\n type TableRootProps,\n type TableRowProps,\n type TableSortDirection,\n} from './components/Table/Table';\nexport {\n Stat,\n type StatDeltaTone,\n type StatElement,\n type StatProps,\n type StatSize,\n type StatTrend,\n type StatVariant,\n} from './components/Stat/Stat';\nexport { Chip, type ChipProps, type ChipSize, type ChipTone } from './components/Chip/Chip';\nexport { Disclosure, type DisclosureProps } from './components/Disclosure/Disclosure';\nexport {\n EmptyState,\n type EmptyStateElement,\n type EmptyStateProps,\n type EmptyStateSize,\n} from './components/EmptyState/EmptyState';\nexport { Skeleton, type SkeletonProps, type SkeletonVariant } from './components/Skeleton/Skeleton';\nexport type { SpacingSize } from './types';\nexport const version = '0.1.1';\n"],"mappings":"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","names":["jsx","jsxs","createElement","createElement","jsx","jsxs","jsx","jsx","jsxs","jsx","jsxs","useRender","jsx","jsxs","Fragment","jsx","jsxs","useRender","Fragment","jsx","jsxs","Root","Trigger","Content","Field","jsx","jsxs","jsx","jsxs","Field","Field","jsx","Field","jsx","jsxs","jsx","jsxs","useId","jsx","jsxs","useId","Fragment","jsx","jsxs","Root","jsx","Root","Group","Separator","Button","useState","jsx","jsxs","useState","jsx","jsxs","jsx","jsxs","createElement","createElement","createElement","createElement","jsx","jsxs","Root","Body","createElement","Fragment","jsx","jsxs","createElement","Fragment","jsx","jsxs","useState","jsx","jsxs","useState","createElement","jsx","createElement","jsx"]}
1
+ {"version":3,"sources":["../src/utils/cx.ts","../src/components/Button/Button.tsx","../src/components/Badge/Badge.tsx","../src/components/Card/Card.tsx","../src/components/Stack/Stack.tsx","../src/components/Inline/Inline.tsx","../src/components/Kbd/Kbd.tsx","../src/components/Dialog/Dialog.tsx","../src/components/Icon/Icon.tsx","../src/icons/icons.gen.tsx","../src/icons/icon-names.gen.ts","../src/components/IconButton/IconButton.tsx","../src/components/Tooltip/Tooltip.tsx","../src/components/Menu/Menu.tsx","../src/components/Input/Input.tsx","../src/components/Field/FieldShell.tsx","../src/components/Textarea/Textarea.tsx","../src/components/Select/Select.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/Switch/Switch.tsx","../src/components/Tabs/Tabs.tsx","../src/components/Toolbar/Toolbar.tsx","../src/components/Banner/Banner.tsx","../src/components/Spinner/Spinner.tsx","../src/components/Progress/Progress.tsx","../src/components/Heading/Heading.tsx","../src/components/Text/Text.tsx","../src/components/Table/Table.tsx","../src/components/Stat/Stat.tsx","../src/components/Chip/Chip.tsx","../src/components/Disclosure/Disclosure.tsx","../src/components/EmptyState/EmptyState.tsx","../src/components/Skeleton/Skeleton.tsx","../src/index.ts"],"sourcesContent":["/** Joins class names, dropping falsy entries. */\nexport function cx(...parts: Array<string | false | null | undefined>): string {\n return parts.filter(Boolean).join(' ');\n}\n","import type { ComponentPropsWithRef, MouseEvent, ReactNode } from 'react';\nimport { cx } from '../../utils/cx';\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'ghost' | 'danger';\nexport type ButtonSize = 'sm' | 'md' | 'lg';\n\nexport interface ButtonProps extends ComponentPropsWithRef<'button'> {\n /** `primary` for the one main action in a view, `secondary` for the rest, `ghost` in toolbars and rows, `danger` for destructive confirmations. */\n variant?: ButtonVariant | undefined;\n /** 32, 40 or 48px tall. Compact density shrinks each by one step. */\n size?: ButtonSize | undefined;\n /** A 16px icon before the label. */\n iconStart?: ReactNode | undefined;\n /** A 16px icon after the label. */\n iconEnd?: ReactNode | undefined;\n /** Keeps the width, hides the label, shows a spinner, sets `aria-busy` and ignores clicks. */\n loading?: boolean | undefined;\n /** Stretches to the container. */\n fullWidth?: boolean | undefined;\n}\n\n/** The one way to trigger an action. Renders a native `<button>`; `type` defaults to `button`. */\nexport function Button({\n variant = 'primary',\n size = 'md',\n iconStart,\n iconEnd,\n loading = false,\n fullWidth = false,\n type = 'button',\n className,\n children,\n onClick,\n ...rest\n}: ButtonProps) {\n const handleClick = (event: MouseEvent<HTMLButtonElement>) => {\n if (loading) {\n event.preventDefault();\n return;\n }\n onClick?.(event);\n };\n return (\n <button\n type={type}\n className={cx('sc-button', className)}\n data-variant={variant}\n data-size={size}\n data-loading={loading || undefined}\n data-full-width={fullWidth || undefined}\n aria-busy={loading || undefined}\n onClick={handleClick}\n {...rest}\n >\n {iconStart ? (\n <span className=\"sc-button__icon\" aria-hidden=\"true\">\n {iconStart}\n </span>\n ) : null}\n <span className=\"sc-button__label\">{children}</span>\n {iconEnd ? (\n <span className=\"sc-button__icon\" aria-hidden=\"true\">\n {iconEnd}\n </span>\n ) : null}\n {loading ? <span className=\"sc-button__spinner\" aria-hidden=\"true\" /> : null}\n </button>\n );\n}\n","import type { ComponentPropsWithRef } from 'react';\nimport { cx } from '../../utils/cx';\n\nexport type BadgeTone = 'neutral' | 'accent' | 'success' | 'warning' | 'danger' | 'info';\nexport type BadgeVariant = 'soft' | 'solid' | 'outline';\nexport type BadgeSize = 'sm' | 'md';\n\nexport interface BadgeProps extends ComponentPropsWithRef<'span'> {\n /** Color reinforces the status; the word is the status. */\n tone?: BadgeTone | undefined;\n /** `soft` tinted fill (default), `solid` filled, `outline` hairline. */\n variant?: BadgeVariant | undefined;\n /** `md` 24px (default) or `sm` 20px for table rows and Card headers. */\n size?: BadgeSize | undefined;\n /** A 6px dot before the label for scannable lists. */\n dot?: boolean | undefined;\n}\n\n/** One or two words of status beside a thing. Text only; never clickable. */\nexport function Badge({\n tone = 'neutral',\n variant = 'soft',\n size = 'md',\n dot = false,\n className,\n children,\n ...rest\n}: BadgeProps) {\n return (\n <span\n className={cx('sc-badge', className)}\n data-tone={tone}\n data-variant={variant}\n data-size={size}\n {...rest}\n >\n {dot ? <span className=\"sc-badge__dot\" aria-hidden=\"true\" /> : null}\n {children}\n </span>\n );\n}\n","import { useRender } from '@base-ui/react/use-render';\nimport { cx } from '../../utils/cx';\n\nexport type CardVariant = 'outlined' | 'elevated' | 'filled';\nexport type CardPadding = 'none' | 'sm' | 'md' | 'lg';\nexport type CardElement = 'div' | 'article' | 'section' | 'nav' | 'li' | 'a' | 'button';\n\nexport interface CardProps extends useRender.ComponentProps<'div'> {\n /** `outlined` hairline (default), `elevated` floats, `filled` is an inset region. */\n variant?: CardVariant | undefined;\n /** `none`, `sm` 12px, `md` 16px (default), `lg` 24px. */\n padding?: CardPadding | undefined;\n /** Hover lifts the card and the whole card is the target. Render it as `a` or `button` so it is a real control. */\n interactive?: boolean | undefined;\n /** Accent border with a 1px inset, for the active row or chosen option. */\n selected?: boolean | undefined;\n /** Element to render when `render` is not given. Use `nav` (with an `aria-label`) for a carded navigation landmark. */\n as?: CardElement | undefined;\n}\n\n/** A bordered surface that groups related content. Compose the inside with Stack and Inline. */\nexport function Card({\n variant = 'outlined',\n padding = 'md',\n interactive = false,\n selected = false,\n as = 'div',\n render,\n className,\n ref,\n ...rest\n}: CardProps) {\n return useRender({\n render,\n ref,\n defaultTagName: as,\n props: {\n className: cx('sc-card', className),\n 'data-variant': variant,\n 'data-padding': padding,\n 'data-interactive': interactive || undefined,\n 'data-selected': selected || undefined,\n ...rest,\n },\n });\n}\n","import { createElement, type ComponentPropsWithRef, type ReactNode } from 'react';\nimport type { SpacingSize } from '../../types';\nimport { cx } from '../../utils/cx';\n\nexport type StackAlign = 'stretch' | 'start' | 'center' | 'end';\nexport type StackJustify = 'start' | 'center' | 'end' | 'between';\nexport type StackElement =\n | 'div'\n | 'section'\n | 'article'\n | 'ul'\n | 'ol'\n | 'li'\n | 'nav'\n | 'form'\n | 'fieldset'\n | 'header'\n | 'footer'\n | 'main'\n | 'aside'\n | 'dl';\n\nexport interface StackProps extends ComponentPropsWithRef<'div'> {\n /** Gap from the spacing scale. Default `sm` (12px). */\n gap?: SpacingSize | undefined;\n /** Cross-axis alignment. Default `stretch`. */\n align?: StackAlign | undefined;\n /** Main-axis distribution. Default `start`. */\n justify?: StackJustify | undefined;\n /** Element to render. Use `ul`/`ol` for lists and `li` for an item that stacks its own content, so semantics survive the layout. */\n as?: StackElement | undefined;\n /** Lays out as `inline-flex`. */\n inline?: boolean | undefined;\n children?: ReactNode | undefined;\n}\n\n/** Vertical flex layout with a token gap. The only way children should be spaced vertically. */\nexport function Stack({\n gap = 'sm',\n align = 'stretch',\n justify = 'start',\n as = 'div',\n inline = false,\n className,\n ...rest\n}: StackProps) {\n return createElement(as, {\n className: cx('sc-stack', className),\n 'data-gap': gap,\n 'data-align': align,\n 'data-justify': justify,\n 'data-inline': inline || undefined,\n ...rest,\n });\n}\n","import { createElement, type ComponentPropsWithRef, type ReactNode } from 'react';\nimport type { SpacingSize } from '../../types';\nimport { cx } from '../../utils/cx';\n\nexport type InlineAlign = 'center' | 'start' | 'end' | 'baseline' | 'stretch';\nexport type InlineJustify = 'start' | 'center' | 'end' | 'between';\nexport type InlineElement =\n 'div' | 'span' | 'ul' | 'ol' | 'li' | 'nav' | 'header' | 'footer' | 'p' | 'label' | 'dd';\n\nexport interface InlineProps extends ComponentPropsWithRef<'div'> {\n /** Gap from the spacing scale. Default `xs` (8px). */\n gap?: SpacingSize | undefined;\n /** Cross-axis alignment. Default `center`; use `baseline` when mixing text sizes. */\n align?: InlineAlign | undefined;\n /** Main-axis distribution. Default `start`. */\n justify?: InlineJustify | undefined;\n /** Wraps by default; `false` for toolbars that scroll. */\n wrap?: boolean | undefined;\n /** Element to render. Use `ul`/`ol` for a row of items and `li` for an item laid out as a row. */\n as?: InlineElement | undefined;\n children?: ReactNode | undefined;\n}\n\n/** Horizontal flex layout that wraps. For rows of buttons, badges, metadata and key combinations. */\nexport function Inline({\n gap = 'xs',\n align = 'center',\n justify = 'start',\n wrap = true,\n as = 'div',\n className,\n ...rest\n}: InlineProps) {\n return createElement(as, {\n className: cx('sc-inline', className),\n 'data-gap': gap,\n 'data-align': align,\n 'data-justify': justify,\n 'data-nowrap': wrap ? undefined : '',\n ...rest,\n });\n}\n","import { Children, Fragment, type ComponentPropsWithRef, type ReactNode } from 'react';\nimport { cx } from '../../utils/cx';\n\nexport type KbdProps = ComponentPropsWithRef<'kbd'>;\n\n/** A single key, rendered like a keycap. One Kbd per key; group keys with `Kbd.Group`. */\nfunction KbdBase({ className, ...rest }: KbdProps) {\n return <kbd className={cx('sc-kbd', className)} {...rest} />;\n}\n\nexport interface KbdGroupProps extends ComponentPropsWithRef<'span'> {\n /** The readable combination, announced instead of the symbols: \"Command K\". */\n label: string;\n /** `plus` (default) draws a muted + between keys; `space` leaves a gap. */\n separator?: 'plus' | 'space' | undefined;\n children?: ReactNode | undefined;\n}\n\n/** Groups the keys of one shortcut. */\nfunction KbdGroup({ label, separator = 'plus', className, children, ...rest }: KbdGroupProps) {\n const keys = Children.toArray(children);\n return (\n <span role=\"group\" aria-label={label} className={cx('sc-kbd-group', className)} {...rest}>\n {keys.map((key, i) => (\n <Fragment key={i}>\n {i > 0 && separator === 'plus' ? (\n <span className=\"sc-kbd-group__sep\" aria-hidden=\"true\">\n +\n </span>\n ) : null}\n {key}\n </Fragment>\n ))}\n </span>\n );\n}\n\nexport const Kbd = Object.assign(KbdBase, { Group: KbdGroup });\n","import { Dialog as BaseDialog } from '@base-ui/react/dialog';\nimport type { ComponentPropsWithRef, ReactNode } from 'react';\nimport { Inline, type InlineProps } from '../Inline/Inline';\nimport { XIcon } from '../../icons/icons.gen';\nimport { cx } from '../../utils/cx';\n\nexport type DialogSize = 'sm' | 'md' | 'lg';\nexport type DialogVariant = 'dialog' | 'sheet';\n\nexport interface DialogRootProps {\n /** Controlled open state. */\n open?: boolean | undefined;\n /** Initial open state when uncontrolled. */\n defaultOpen?: boolean | undefined;\n /** Called when the dialog opens or closes. */\n onOpenChange?: ((open: boolean) => void) | undefined;\n /** When `false`, Esc and backdrop clicks no longer close the dialog. Default `true`. */\n dismissible?: boolean | undefined;\n children?: ReactNode | undefined;\n}\n\n/** Owns the open state. Wrap a `Dialog.Trigger` and a `Dialog.Content`. */\nfunction Root({ dismissible = true, onOpenChange, open, defaultOpen, children }: DialogRootProps) {\n return (\n <BaseDialog.Root\n open={open}\n defaultOpen={defaultOpen}\n disablePointerDismissal={!dismissible}\n onOpenChange={(next, details) => {\n if (\n !dismissible &&\n !next &&\n (details.reason === 'escape-key' || details.reason === 'outside-press')\n ) {\n details.cancel();\n return;\n }\n onOpenChange?.(next);\n }}\n >\n {children}\n </BaseDialog.Root>\n );\n}\n\n/** Opens the dialog. Pass the Button through `render`: `<Dialog.Trigger render={<Button />}>Open</Dialog.Trigger>`. */\nconst Trigger = BaseDialog.Trigger;\n\nexport interface DialogContentProps extends Omit<BaseDialog.Popup.Props, 'className'> {\n /**\n * Maximum width: `sm` 400px for yes/no, `md` 560px (default) for a short form, `lg` 720px rarely.\n * Every size clamps to the viewport minus a 16px gutter, so a 390px phone gets a 358px dialog.\n */\n size?: DialogSize | undefined;\n /**\n * `dialog` (default) centres the popup. `sheet` is the same on wide viewports but below 640px it\n * becomes a bottom sheet: full width, rounded top, title and actions pinned while `Dialog.Body`\n * scrolls, padding that clears the home indicator. Use it for forms and pickers opened from a list.\n */\n variant?: DialogVariant | undefined;\n className?: string | undefined;\n}\n\n/**\n * Portal, backdrop and the popup. Focus moves inside on open and returns to the trigger on close.\n * Menus, selects and tooltips opened from inside render above it (`--sc-z-dropdown` > `--sc-z-dialog`).\n */\nfunction Content({ size = 'md', variant = 'dialog', className, children, ...rest }: DialogContentProps) {\n return (\n <BaseDialog.Portal>\n <BaseDialog.Backdrop className=\"sc-dialog__backdrop\" />\n <BaseDialog.Popup\n className={cx('sc-dialog__popup', className)}\n data-size={size}\n data-variant={variant}\n aria-modal=\"true\"\n {...rest}\n >\n {children}\n </BaseDialog.Popup>\n </BaseDialog.Portal>\n );\n}\n\nexport interface DialogTitleProps extends Omit<BaseDialog.Title.Props, 'className'> {\n className?: string | undefined;\n}\n\n/** Required. Labels the dialog; a question or a statement. Renders an `<h2>`. */\nfunction Title({ className, ...rest }: DialogTitleProps) {\n return <BaseDialog.Title className={cx('sc-dialog__title', className)} {...rest} />;\n}\n\nexport interface DialogDescriptionProps extends Omit<BaseDialog.Description.Props, 'className'> {\n className?: string | undefined;\n}\n\n/** Optional, muted. Says what will happen. */\nfunction Description({ className, ...rest }: DialogDescriptionProps) {\n return <BaseDialog.Description className={cx('sc-dialog__description', className)} {...rest} />;\n}\n\nexport type DialogBodyProps = ComponentPropsWithRef<'div'>;\n\n/** Free content between the description and the actions. In a `sheet` it is the part that scrolls. */\nfunction Body({ className, ...rest }: DialogBodyProps) {\n return <div className={cx('sc-dialog__body', className)} {...rest} />;\n}\n\nexport type DialogActionsProps = Omit<InlineProps, 'justify'>;\n\n/** Right-aligned row of Buttons. Put the confirming action last. */\nfunction Actions({ className, ...rest }: DialogActionsProps) {\n return <Inline justify=\"end\" className={cx('sc-dialog__actions', className)} {...rest} />;\n}\n\nexport interface DialogCloseProps extends Omit<BaseDialog.Close.Props, 'className'> {\n className?: string | undefined;\n}\n\n/** With no children or `render`, the × in the corner. Otherwise wraps any Button: `<Dialog.Close render={<Button variant=\"secondary\" />}>Cancel</Dialog.Close>`. */\nfunction Close({ className, children, render, ...rest }: DialogCloseProps) {\n if (children === undefined && render === undefined) {\n return (\n <BaseDialog.Close className={cx('sc-dialog__close', className)} aria-label=\"Close\" {...rest}>\n <XIcon />\n </BaseDialog.Close>\n );\n }\n return (\n <BaseDialog.Close className={className} render={render} {...rest}>\n {children}\n </BaseDialog.Close>\n );\n}\n\n/** A modal that interrupts for a decision or a short form. Built on Base UI's Dialog. */\nexport const Dialog = { Root, Trigger, Content, Title, Description, Body, Actions, Close };\n","import type { ComponentPropsWithRef, ReactNode } from 'react';\nimport { cx } from '../../utils/cx';\n\nexport type IconSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'em';\n\nexport interface IconProps extends Omit<ComponentPropsWithRef<'svg'>, 'children'> {\n /** `xs` 12, `sm` 14, `md` 16 (default), `lg` 20, `xl` 24, or `em` to follow the surrounding font size. */\n size?: IconSize | undefined;\n /** Gives the icon an accessible name (`role=\"img\"`). Without it the icon is decorative and hidden from assistive tech. */\n title?: string | undefined;\n /** The glyph: `<path>`, `<circle>` … on a 16×16 grid, stroke `currentColor`. */\n children: ReactNode;\n}\n\n/** Props of a shipped icon such as `PlayIcon`: everything `Icon` takes except the glyph. */\nexport type IconGlyphProps = Omit<IconProps, 'children'>;\n\n/**\n * The frame every icon renders in: a 16×16 outline in `currentColor`, sized by `size`, decorative unless\n * `title` is given. Use the shipped `<Name>Icon` components, or wrap your own paths.\n */\nexport function Icon({ size = 'md', title, className, children, ...rest }: IconProps) {\n return (\n <svg\n className={cx('sc-icon', className)}\n data-size={size}\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n focusable=\"false\"\n aria-hidden={title ? undefined : true}\n role={title ? 'img' : undefined}\n aria-label={title}\n {...rest}\n >\n {children}\n </svg>\n );\n}\n","// Generated by scripts/build-icons.mjs from src/icons/svg/*.svg. Do not edit; add an SVG and run `pnpm build`.\nimport { Icon, type IconGlyphProps } from '../components/Icon/Icon';\n\n/** `archive` */\nexport function ArchiveIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <rect x=\"2.25\" y=\"2.75\" width=\"11.5\" height=\"3\" rx=\".75\" />\n <path d=\"M3.25 5.75v6.5a1 1 0 0 0 1 1h7.5a1 1 0 0 0 1-1v-6.5M6.5 8.75h3\" />\n </Icon>\n );\n}\n\n/** `arrow-down` */\nexport function ArrowDownIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"M8 3v10M4 9l4 4 4-4\" />\n </Icon>\n );\n}\n\n/** `arrow-left` */\nexport function ArrowLeftIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"M13 8H3M7 4 3 8l4 4\" />\n </Icon>\n );\n}\n\n/** `arrow-right` */\nexport function ArrowRightIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"M3 8h10M9 4l4 4-4 4\" />\n </Icon>\n );\n}\n\n/** `arrow-up` */\nexport function ArrowUpIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"M8 13V3M4 7l4-4 4 4\" />\n </Icon>\n );\n}\n\n/** `bell` */\nexport function BellIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"M4 6.5a4 4 0 0 1 8 0v3l1.25 2H2.75L4 9.5z\" />\n <path d=\"M6.5 13.5a1.5 1.5 0 0 0 3 0\" />\n </Icon>\n );\n}\n\n/** `briefcase` */\nexport function BriefcaseIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <rect x=\"2\" y=\"4.75\" width=\"12\" height=\"8.5\" rx=\"1\" />\n <path d=\"M5.5 4.75V3.5a1 1 0 0 1 1-1h3a1 1 0 0 1 1 1v1.25M2 8.5h12\" />\n </Icon>\n );\n}\n\n/** `calendar` */\nexport function CalendarIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <rect x=\"2.5\" y=\"3.25\" width=\"11\" height=\"10\" rx=\"1\" />\n <path d=\"M2.5 6.75h11M5.5 1.75v3M10.5 1.75v3\" />\n </Icon>\n );\n}\n\n/** `check` */\nexport function CheckIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"m3 8.5 3.5 3.5L13 4.5\" />\n </Icon>\n );\n}\n\n/** `chevron-down` */\nexport function ChevronDownIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"m4 6 4 4 4-4\" />\n </Icon>\n );\n}\n\n/** `chevron-left` */\nexport function ChevronLeftIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"m10 4-4 4 4 4\" />\n </Icon>\n );\n}\n\n/** `chevron-right` */\nexport function ChevronRightIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"m6 4 4 4-4 4\" />\n </Icon>\n );\n}\n\n/** `chevron-up` */\nexport function ChevronUpIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"m4 10 4-4 4 4\" />\n </Icon>\n );\n}\n\n/** `circle-check` */\nexport function CircleCheckIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <circle cx=\"8\" cy=\"8\" r=\"6\" />\n <path d=\"m5.25 8 2 2 3.5-4\" />\n </Icon>\n );\n}\n\n/** `circle-x` */\nexport function CircleXIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <circle cx=\"8\" cy=\"8\" r=\"6\" />\n <path d=\"m6 6 4 4M10 6l-4 4\" />\n </Icon>\n );\n}\n\n/** `clock` */\nexport function ClockIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <circle cx=\"8\" cy=\"8\" r=\"6\" />\n <path d=\"M8 4.75V8l2.25 1.5\" />\n </Icon>\n );\n}\n\n/** `copy` */\nexport function CopyIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <rect x=\"6\" y=\"6\" width=\"7.5\" height=\"7.5\" rx=\"1\" />\n <path d=\"M4 10H3.25a1 1 0 0 1-1-1V3.25a1 1 0 0 1 1-1H9a1 1 0 0 1 1 1V4\" />\n </Icon>\n );\n}\n\n/** `document` */\nexport function DocumentIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"M9 2.25H4.5a1 1 0 0 0-1 1v9.5a1 1 0 0 0 1 1h7a1 1 0 0 0 1-1V5.75z\" />\n <path d=\"M9 2.25v3.5h3.5M6 8.5h4M6 11h4\" />\n </Icon>\n );\n}\n\n/** `download` */\nexport function DownloadIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"M8 2.5v8M4.75 7.25 8 10.5l3.25-3.25\" />\n <path d=\"M2.75 11v1.5a1 1 0 0 0 1 1h8.5a1 1 0 0 0 1-1V11\" />\n </Icon>\n );\n}\n\n/** `edit` */\nexport function EditIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"m10.75 2.75 2.5 2.5-7.5 7.5H3.25v-2.5z\" />\n </Icon>\n );\n}\n\n/** `external-link` */\nexport function ExternalLinkIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"M9 2.75h4.25V7M13.25 2.75 7.5 8.5\" />\n <path d=\"M11.25 9v3.25a1 1 0 0 1-1 1h-6.5a1 1 0 0 1-1-1v-6.5a1 1 0 0 1 1-1H7\" />\n </Icon>\n );\n}\n\n/** `eye` */\nexport function EyeIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"M1.75 8s2.25-4.25 6.25-4.25S14.25 8 14.25 8s-2.25 4.25-6.25 4.25S1.75 8 1.75 8z\" />\n <circle cx=\"8\" cy=\"8\" r=\"2\" />\n </Icon>\n );\n}\n\n/** `filter` */\nexport function FilterIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"M2.5 3h11l-4.25 5v4.25L6.75 13.5V8z\" />\n </Icon>\n );\n}\n\n/** `flag` */\nexport function FlagIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"M3.5 14V2.75\" />\n <path d=\"M3.5 2.75h8.75l-2.25 3 2.25 3H3.5\" />\n </Icon>\n );\n}\n\n/** `inbox` */\nexport function InboxIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"M2 9v3.25a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V9l-1.6-4.6a1 1 0 0 0-.95-.65H4.55a1 1 0 0 0-.95.65z\" />\n <path d=\"M2 9h3.25l1 2h3.5l1-2H14\" />\n </Icon>\n );\n}\n\n/** `info` */\nexport function InfoIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <circle cx=\"8\" cy=\"8\" r=\"6\" />\n <path d=\"M8 7.25V11M8 5.25v.01\" />\n </Icon>\n );\n}\n\n/** `link` */\nexport function LinkIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"M6.75 9.25a2.5 2.5 0 0 0 3.54 0l2-2a2.5 2.5 0 0 0-3.54-3.54l-.75.75\" />\n <path d=\"M9.25 6.75a2.5 2.5 0 0 0-3.54 0l-2 2a2.5 2.5 0 0 0 3.54 3.54l.75-.75\" />\n </Icon>\n );\n}\n\n/** `mail` */\nexport function MailIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <rect x=\"2\" y=\"3.5\" width=\"12\" height=\"9\" rx=\"1\" />\n <path d=\"m2.5 4.5 5.5 4.25L13.5 4.5\" />\n </Icon>\n );\n}\n\n/** `map-pin` */\nexport function MapPinIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"M8 14s4.5-3.9 4.5-7.5a4.5 4.5 0 1 0-9 0C3.5 10.1 8 14 8 14z\" />\n <circle cx=\"8\" cy=\"6.5\" r=\"1.5\" />\n </Icon>\n );\n}\n\n/** `menu` */\nexport function MenuIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"M2.5 4.5h11M2.5 8h11M2.5 11.5h11\" />\n </Icon>\n );\n}\n\n/** `minus` */\nexport function MinusIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"M3 8h10\" />\n </Icon>\n );\n}\n\n/** `moon` */\nexport function MoonIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"M13.25 9.5A5.5 5.5 0 0 1 6.5 2.75 5.5 5.5 0 1 0 13.25 9.5z\" />\n </Icon>\n );\n}\n\n/** `more-horizontal` */\nexport function MoreHorizontalIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <circle cx=\"3.5\" cy=\"8\" r=\"1.25\" fill=\"currentColor\" stroke=\"none\" />\n <circle cx=\"8\" cy=\"8\" r=\"1.25\" fill=\"currentColor\" stroke=\"none\" />\n <circle cx=\"12.5\" cy=\"8\" r=\"1.25\" fill=\"currentColor\" stroke=\"none\" />\n </Icon>\n );\n}\n\n/** `more-vertical` */\nexport function MoreVerticalIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <circle cx=\"8\" cy=\"3.5\" r=\"1.25\" fill=\"currentColor\" stroke=\"none\" />\n <circle cx=\"8\" cy=\"8\" r=\"1.25\" fill=\"currentColor\" stroke=\"none\" />\n <circle cx=\"8\" cy=\"12.5\" r=\"1.25\" fill=\"currentColor\" stroke=\"none\" />\n </Icon>\n );\n}\n\n/** `pause` */\nexport function PauseIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <rect x=\"3.75\" y=\"2.75\" width=\"3\" height=\"10.5\" rx=\".75\" />\n <rect x=\"9.25\" y=\"2.75\" width=\"3\" height=\"10.5\" rx=\".75\" />\n </Icon>\n );\n}\n\n/** `play` */\nexport function PlayIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"M4.5 2.75v10.5L13 8z\" />\n </Icon>\n );\n}\n\n/** `plus` */\nexport function PlusIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"M8 3v10M3 8h10\" />\n </Icon>\n );\n}\n\n/** `refresh` */\nexport function RefreshIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"M2.75 8a5.25 5.25 0 0 1 9-3.7l1.5 1.45\" />\n <path d=\"M13.25 2.25v3.5h-3.5\" />\n <path d=\"M13.25 8a5.25 5.25 0 0 1-9 3.7l-1.5-1.45\" />\n <path d=\"M2.75 13.75v-3.5h3.5\" />\n </Icon>\n );\n}\n\n/** `search` */\nexport function SearchIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <circle cx=\"7\" cy=\"7\" r=\"4.5\" />\n <path d=\"m10.5 10.5 3 3\" />\n </Icon>\n );\n}\n\n/** `settings` */\nexport function SettingsIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"M13.01 6.42 14.67 6.94v2.12l-1.66.52-.35.84.8 1.55-1.49 1.49-1.55-.8-.84.35-.52 1.66H6.94l-.52-1.66-.84-.35-1.55.8-1.49-1.49.8-1.55-.35-.84-1.66-.52V6.94l1.66-.52.35-.84-.8-1.55 1.49-1.49 1.55.8.84-.35.52-1.66h2.12l.52 1.66.84.35 1.55-.8 1.49 1.49-.8 1.55z\" />\n <circle cx=\"8\" cy=\"8\" r=\"2.25\" />\n </Icon>\n );\n}\n\n/** `star` */\nexport function StarIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"m8 2.25 1.8 3.8 4.2.55-3.1 2.9.8 4.15L8 11.6l-3.7 2.05.8-4.15L2 6.6l4.2-.55z\" />\n </Icon>\n );\n}\n\n/** `sun` */\nexport function SunIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <circle cx=\"8\" cy=\"8\" r=\"3\" />\n <path d=\"M8 1.75v1.5M8 12.75v1.5M1.75 8h1.5M12.75 8h1.5M3.58 3.58l1.06 1.06M11.36 11.36l1.06 1.06M3.58 12.42l1.06-1.06M11.36 4.64l1.06-1.06\" />\n </Icon>\n );\n}\n\n/** `thumbs-down` */\nexport function ThumbsDownIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"M5 2.5H3a.5.5 0 0 0-.5.5v5.5a.5.5 0 0 0 .5.5h2\" />\n <path d=\"M5 9l2.5 4.5a1.5 1.5 0 0 0 1.5-1.5V9.5h3.25a1.25 1.25 0 0 0 1.23-1.45l-.9-5a1.25 1.25 0 0 0-1.23-1.05H5z\" />\n </Icon>\n );\n}\n\n/** `thumbs-up` */\nexport function ThumbsUpIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"M5 13.5H3a.5.5 0 0 1-.5-.5V7.5A.5.5 0 0 1 3 7h2\" />\n <path d=\"M5 7l2.5-4.5a1.5 1.5 0 0 1 1.5 1.5v2.5h3.25a1.25 1.25 0 0 1 1.23 1.45l-.9 5a1.25 1.25 0 0 1-1.23 1.05H5z\" />\n </Icon>\n );\n}\n\n/** `trash` */\nexport function TrashIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"M2.75 4.25h10.5M6.25 4.25V3a.75.75 0 0 1 .75-.75h2A.75.75 0 0 1 9.75 3v1.25\" />\n <path d=\"M4 4.25l.5 8.5a1 1 0 0 0 1 .95h5a1 1 0 0 0 1-.95l.5-8.5\" />\n <path d=\"M6.5 7v4M9.5 7v4\" />\n </Icon>\n );\n}\n\n/** `undo` */\nexport function UndoIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"M3 7h7a3.5 3.5 0 0 1 0 7H6\" />\n <path d=\"M6 4 3 7l3 3\" />\n </Icon>\n );\n}\n\n/** `user` */\nexport function UserIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <circle cx=\"8\" cy=\"5.25\" r=\"2.75\" />\n <path d=\"M2.75 13.75a5.25 5.25 0 0 1 10.5 0\" />\n </Icon>\n );\n}\n\n/** `warning` */\nexport function WarningIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"M8 2.5 1.75 13.25h12.5z\" />\n <path d=\"M8 6.5v3M8 11.5v.01\" />\n </Icon>\n );\n}\n\n/** `x` */\nexport function XIcon(props: IconGlyphProps) {\n return (\n <Icon {...props}>\n <path d=\"M4 4l8 8M12 4l-8 8\" />\n </Icon>\n );\n}\n","// Generated by scripts/build-icons.mjs from src/icons/svg/*.svg. Do not edit; add an SVG and run `pnpm build`.\n/** Every icon shipped by this package, as `<Name>Icon` components. */\nexport const iconNames = [\n 'archive',\n 'arrow-down',\n 'arrow-left',\n 'arrow-right',\n 'arrow-up',\n 'bell',\n 'briefcase',\n 'calendar',\n 'check',\n 'chevron-down',\n 'chevron-left',\n 'chevron-right',\n 'chevron-up',\n 'circle-check',\n 'circle-x',\n 'clock',\n 'copy',\n 'document',\n 'download',\n 'edit',\n 'external-link',\n 'eye',\n 'filter',\n 'flag',\n 'inbox',\n 'info',\n 'link',\n 'mail',\n 'map-pin',\n 'menu',\n 'minus',\n 'moon',\n 'more-horizontal',\n 'more-vertical',\n 'pause',\n 'play',\n 'plus',\n 'refresh',\n 'search',\n 'settings',\n 'star',\n 'sun',\n 'thumbs-down',\n 'thumbs-up',\n 'trash',\n 'undo',\n 'user',\n 'warning',\n 'x',\n] as const;\nexport type IconName = (typeof iconNames)[number];\n","import { useRender } from '@base-ui/react/use-render';\nimport type { MouseEvent, ReactNode } from 'react';\nimport { Tooltip, type TooltipSide } from '../Tooltip/Tooltip';\nimport type { ButtonSize, ButtonVariant } from '../Button/Button';\nimport { cx } from '../../utils/cx';\n\nexport interface IconButtonProps extends Omit<useRender.ComponentProps<'button'>, 'children' | 'aria-label'> {\n /** Required. The accessible name, and the tooltip text when `tooltip` is `true`. */\n label: string;\n /** The icon, usually a shipped `<Name>Icon`. It is decorative; `label` names the button. Optional only so a popup trigger can supply it through `render`. */\n children?: ReactNode | undefined;\n /** `ghost` (default) in toolbars and rows, `secondary` when it must read as a button, `primary` and `danger` rarely. */\n variant?: ButtonVariant | undefined;\n /** Square: 32, 40 or 48px. Compact density shrinks each by one step. */\n size?: ButtonSize | undefined;\n /** `true` shows `label` as a tooltip on hover and focus; a string shows that text instead. */\n tooltip?: boolean | string | undefined;\n /** Side the tooltip opens on. Default `top`. */\n tooltipSide?: TooltipSide | undefined;\n /** Fully round, for avatars and floating actions. */\n round?: boolean | undefined;\n /** Shows a spinner, sets `aria-busy` and ignores clicks. */\n loading?: boolean | undefined;\n}\n\n/**\n * A square Button for one icon. Always named by `label`; use `tooltip` to show that name on hover.\n * Renders a `<button>` unless `render` gives another element: `render={<a href=\"/settings\" />}` or a\n * Next.js `<Link href=\"/settings\" />` makes it a link with the same look and name.\n */\nexport function IconButton({\n label,\n children,\n variant = 'ghost',\n size = 'md',\n tooltip,\n tooltipSide = 'top',\n round = false,\n loading = false,\n type,\n className,\n onClick,\n render,\n ref,\n ...rest\n}: IconButtonProps) {\n const handleClick = (event: MouseEvent<HTMLButtonElement>) => {\n if (loading) {\n event.preventDefault();\n return;\n }\n onClick?.(event);\n };\n const button = useRender({\n render,\n ref,\n defaultTagName: 'button',\n props: {\n // `type` only means something on a real button; a rendered link keeps its own attributes.\n type: render ? type : (type ?? 'button'),\n className: cx('sc-button', 'sc-icon-button', className),\n 'data-variant': variant,\n 'data-size': size,\n 'data-round': round || undefined,\n 'data-loading': loading || undefined,\n 'aria-busy': loading || undefined,\n 'aria-label': label,\n onClick: handleClick,\n ...rest,\n children: (\n <>\n <span className=\"sc-button__icon\" aria-hidden=\"true\">\n {children}\n </span>\n {loading ? <span className=\"sc-button__spinner\" aria-hidden=\"true\" /> : null}\n </>\n ),\n },\n });\n if (!tooltip) return button;\n return (\n <Tooltip content={tooltip === true ? label : tooltip} side={tooltipSide}>\n {button}\n </Tooltip>\n );\n}\n","import { Tooltip as BaseTooltip } from '@base-ui/react/tooltip';\nimport type { ReactElement, ReactNode } from 'react';\nimport { cx } from '../../utils/cx';\n\nexport type TooltipSide = 'top' | 'bottom' | 'left' | 'right';\nexport type TooltipAlign = 'start' | 'center' | 'end';\n\nexport interface TooltipProps {\n /** The hint. Short text; never anything the user cannot do without. */\n content: ReactNode;\n /** The trigger: one element that takes a ref and spreads props, such as `IconButton`, `Button` or `Badge`. */\n children: ReactElement;\n /** Which side of the trigger the hint opens on; flips when there is no room. Default `top`. */\n side?: TooltipSide | undefined;\n /** Alignment along that side. Default `center`. */\n align?: TooltipAlign | undefined;\n /** Hover delay in ms before opening. Default 300; inside `Tooltip.Provider` sibling tooltips open instantly once one is open. */\n delay?: number | undefined;\n /** Delay in ms before closing. Default 0. */\n closeDelay?: number | undefined;\n /** Controlled open state. */\n open?: boolean | undefined;\n /** Initial open state when uncontrolled. */\n defaultOpen?: boolean | undefined;\n /** Called when the hint opens or closes. */\n onOpenChange?: ((open: boolean) => void) | undefined;\n /** Never opens. */\n disabled?: boolean | undefined;\n className?: string | undefined;\n}\n\n/**\n * A hint that opens on hover and keyboard focus. Supplementary only: touch devices never see it and\n * screen readers hear the trigger's own name, so the trigger must already be labelled.\n */\nfunction TooltipBase({\n content,\n children,\n side = 'top',\n align = 'center',\n delay = 300,\n closeDelay,\n open,\n defaultOpen,\n onOpenChange,\n disabled,\n className,\n}: TooltipProps) {\n return (\n <BaseTooltip.Root\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange ? (next) => onOpenChange(next) : undefined}\n disabled={disabled}\n >\n <BaseTooltip.Trigger render={children} delay={delay} closeDelay={closeDelay} />\n <BaseTooltip.Portal>\n <BaseTooltip.Positioner side={side} align={align} sideOffset={6} className=\"sc-tooltip__positioner\">\n <BaseTooltip.Popup role=\"tooltip\" className={cx('sc-tooltip', className)}>\n <BaseTooltip.Arrow className=\"sc-tooltip__arrow\" />\n {content}\n </BaseTooltip.Popup>\n </BaseTooltip.Positioner>\n </BaseTooltip.Portal>\n </BaseTooltip.Root>\n );\n}\n\n/** Wrap a toolbar or a row of icon buttons so moving between them skips the delay. */\nconst Provider = BaseTooltip.Provider;\n\nexport const Tooltip = Object.assign(TooltipBase, { Provider });\n","import { Menu as BaseMenu } from '@base-ui/react/menu';\nimport type { ReactNode } from 'react';\nimport { Button } from '../Button/Button';\nimport { CheckIcon, ChevronDownIcon } from '../../icons/icons.gen';\nimport { cx } from '../../utils/cx';\n\nexport type MenuSide = 'top' | 'bottom' | 'left' | 'right';\nexport type MenuAlign = 'start' | 'center' | 'end';\nexport type MenuItemTone = 'default' | 'danger';\n\nexport interface MenuRootProps {\n /** Controlled open state. */\n open?: boolean | undefined;\n /** Initial open state when uncontrolled. */\n defaultOpen?: boolean | undefined;\n /** Called when the menu opens or closes. */\n onOpenChange?: ((open: boolean) => void) | undefined;\n /** Disables the trigger. */\n disabled?: boolean | undefined;\n /** Default `true`: the page behind the menu is inert until it closes. */\n modal?: boolean | undefined;\n children?: ReactNode | undefined;\n}\n\n/** Owns the open state. Wrap a `Menu.Trigger` and a `Menu.Content`. */\nfunction Root({ open, defaultOpen, onOpenChange, disabled, modal = true, children }: MenuRootProps) {\n return (\n <BaseMenu.Root\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange ? (next) => onOpenChange(next) : undefined}\n disabled={disabled}\n modal={modal}\n >\n {children}\n </BaseMenu.Root>\n );\n}\n\nexport interface MenuTriggerProps extends Omit<BaseMenu.Trigger.Props, 'className'> {\n className?: string | undefined;\n}\n\n/**\n * Opens the menu. With no `render` it is a secondary Button with a chevron; pass any Button or\n * IconButton through `render`: `<Menu.Trigger render={<IconButton label=\"More\" />}><MoreHorizontalIcon /></Menu.Trigger>`.\n */\nfunction Trigger({ render, className, children, ...rest }: MenuTriggerProps) {\n return (\n <BaseMenu.Trigger\n render={render ?? <Button variant=\"secondary\" iconEnd={<ChevronDownIcon />} className={className} />}\n className={render ? className : undefined}\n {...rest}\n >\n {children}\n </BaseMenu.Trigger>\n );\n}\n\nexport interface MenuContentProps extends Omit<BaseMenu.Popup.Props, 'className'> {\n /** Side of the trigger the menu opens on; flips when there is no room. Default `bottom`. */\n side?: MenuSide | undefined;\n /** Alignment along that side. Default `start`. */\n align?: MenuAlign | undefined;\n /** Distance from the trigger in px. Default 4. */\n sideOffset?: number | undefined;\n className?: string | undefined;\n}\n\n/** Portal, positioner and the popup. Items go inside. */\nfunction Content({\n side = 'bottom',\n align = 'start',\n sideOffset = 4,\n className,\n children,\n ...rest\n}: MenuContentProps) {\n return (\n <BaseMenu.Portal>\n <BaseMenu.Positioner side={side} align={align} sideOffset={sideOffset} className=\"sc-menu__positioner\">\n <BaseMenu.Popup className={cx('sc-menu', className)} {...rest}>\n {children}\n </BaseMenu.Popup>\n </BaseMenu.Positioner>\n </BaseMenu.Portal>\n );\n}\n\ninterface ItemSlots {\n /** A 16px icon before the label. */\n icon?: ReactNode | undefined;\n /** Muted text at the end: a shortcut (`<Kbd>`) or a count. */\n trailing?: ReactNode | undefined;\n /** `danger` for destructive actions; put them last, after a separator. */\n tone?: MenuItemTone | undefined;\n}\n\nfunction ItemBody({\n icon,\n trailing,\n children,\n}: {\n icon?: ReactNode;\n trailing?: ReactNode;\n children?: ReactNode;\n}) {\n return (\n <>\n <span className=\"sc-menu__icon\" aria-hidden=\"true\">\n {icon}\n </span>\n <span className=\"sc-menu__label\">{children}</span>\n {trailing !== undefined ? <span className=\"sc-menu__trailing\">{trailing}</span> : null}\n </>\n );\n}\n\nexport interface MenuItemProps extends Omit<BaseMenu.Item.Props, 'className'>, ItemSlots {\n className?: string | undefined;\n}\n\n/** One action. Closes the menu when activated. */\nfunction Item({ icon, trailing, tone = 'default', className, children, ...rest }: MenuItemProps) {\n return (\n <BaseMenu.Item className={cx('sc-menu__item', className)} data-tone={tone} {...rest}>\n <ItemBody icon={icon} trailing={trailing}>\n {children}\n </ItemBody>\n </BaseMenu.Item>\n );\n}\n\nexport interface MenuLinkItemProps extends Omit<BaseMenu.LinkItem.Props, 'className'>, ItemSlots {\n className?: string | undefined;\n}\n\n/** An item that navigates: renders an `<a href>`. */\nfunction LinkItem({ icon, trailing, tone = 'default', className, children, ...rest }: MenuLinkItemProps) {\n return (\n <BaseMenu.LinkItem className={cx('sc-menu__item', className)} data-tone={tone} {...rest}>\n <ItemBody icon={icon} trailing={trailing}>\n {children}\n </ItemBody>\n </BaseMenu.LinkItem>\n );\n}\n\nexport interface MenuCheckboxItemProps extends Omit<\n BaseMenu.CheckboxItem.Props,\n 'className' | 'onCheckedChange'\n> {\n /** Called with the next checked state. */\n onCheckedChange?: ((checked: boolean) => void) | undefined;\n /** Muted text at the end. */\n trailing?: ReactNode | undefined;\n className?: string | undefined;\n}\n\n/** A toggle. Stays open when activated so several can be flipped at once; pass `closeOnClick` to close. */\nfunction CheckboxItem({ trailing, onCheckedChange, className, children, ...rest }: MenuCheckboxItemProps) {\n return (\n <BaseMenu.CheckboxItem\n className={cx('sc-menu__item', className)}\n onCheckedChange={onCheckedChange ? (checked) => onCheckedChange(checked) : undefined}\n {...rest}\n >\n <BaseMenu.CheckboxItemIndicator className=\"sc-menu__icon sc-menu__indicator\">\n <CheckIcon size=\"sm\" />\n </BaseMenu.CheckboxItemIndicator>\n <span className=\"sc-menu__label\">{children}</span>\n {trailing !== undefined ? <span className=\"sc-menu__trailing\">{trailing}</span> : null}\n </BaseMenu.CheckboxItem>\n );\n}\n\nexport interface MenuRadioGroupProps<Value extends string = string> extends Omit<\n BaseMenu.RadioGroup.Props,\n 'className' | 'value' | 'defaultValue' | 'onValueChange'\n> {\n /** Controlled selected value. */\n value?: Value | undefined;\n /** Initial value when uncontrolled. */\n defaultValue?: Value | undefined;\n /** Called with the next selected value. */\n onValueChange?: ((value: Value) => void) | undefined;\n /** A heading for the group, rendered above the items. */\n label?: ReactNode | undefined;\n className?: string | undefined;\n}\n\n/** A set of `Menu.RadioItem`s where exactly one is selected. */\nfunction RadioGroup<Value extends string = string>({\n label,\n onValueChange,\n className,\n children,\n ...rest\n}: MenuRadioGroupProps<Value>) {\n return (\n <BaseMenu.RadioGroup\n className={cx('sc-menu__group', className)}\n onValueChange={onValueChange ? (value: Value) => onValueChange(value) : undefined}\n {...rest}\n >\n {label !== undefined ? (\n <BaseMenu.GroupLabel className=\"sc-menu__group-label\">{label}</BaseMenu.GroupLabel>\n ) : null}\n {children}\n </BaseMenu.RadioGroup>\n );\n}\n\nexport interface MenuRadioItemProps extends Omit<BaseMenu.RadioItem.Props, 'className' | 'value'> {\n value: string;\n /** Muted text at the end. */\n trailing?: ReactNode | undefined;\n className?: string | undefined;\n}\n\n/** One choice in a `Menu.RadioGroup`. Stays open when chosen; pass `closeOnClick` to close. */\nfunction RadioItem({ trailing, className, children, ...rest }: MenuRadioItemProps) {\n return (\n <BaseMenu.RadioItem className={cx('sc-menu__item', className)} {...rest}>\n <BaseMenu.RadioItemIndicator className=\"sc-menu__icon sc-menu__indicator\">\n <span className=\"sc-menu__radio-dot\" />\n </BaseMenu.RadioItemIndicator>\n <span className=\"sc-menu__label\">{children}</span>\n {trailing !== undefined ? <span className=\"sc-menu__trailing\">{trailing}</span> : null}\n </BaseMenu.RadioItem>\n );\n}\n\nexport interface MenuGroupProps extends Omit<BaseMenu.Group.Props, 'className'> {\n /** A heading for the group, rendered above the items. */\n label?: ReactNode | undefined;\n className?: string | undefined;\n}\n\n/** Labels a run of items. */\nfunction Group({ label, className, children, ...rest }: MenuGroupProps) {\n return (\n <BaseMenu.Group className={cx('sc-menu__group', className)} {...rest}>\n {label !== undefined ? (\n <BaseMenu.GroupLabel className=\"sc-menu__group-label\">{label}</BaseMenu.GroupLabel>\n ) : null}\n {children}\n </BaseMenu.Group>\n );\n}\n\nexport interface MenuSeparatorProps extends Omit<BaseMenu.Separator.Props, 'className'> {\n className?: string | undefined;\n}\n\n/** A hairline between runs of items. */\nfunction Separator({ className, ...rest }: MenuSeparatorProps) {\n return <BaseMenu.Separator className={cx('sc-menu__separator', className)} {...rest} />;\n}\n\n/** A dropdown of actions on a trigger, with full keyboard support. Built on Base UI's Menu. */\nexport const Menu = {\n Root,\n Trigger,\n Content,\n Item,\n LinkItem,\n CheckboxItem,\n RadioGroup,\n RadioItem,\n Group,\n Separator,\n};\n","import { Field } from '@base-ui/react/field';\nimport type { ComponentPropsWithRef, ReactNode } from 'react';\nimport { FieldShell, type FieldProps } from '../Field/FieldShell';\n\nexport interface InputProps\n extends\n Omit<ComponentPropsWithRef<'input'>, 'size' | 'name' | 'disabled' | 'required' | 'className'>,\n FieldProps {\n /** A 16px icon inside the start edge, for search and URL fields. Decorative. */\n iconStart?: ReactNode | undefined;\n /** A 16px icon inside the end edge. Decorative; use an `IconButton` outside the field for an action. */\n iconEnd?: ReactNode | undefined;\n /** Called with the string value on every change, beside the native `onChange`. */\n onValueChange?: ((value: string) => void) | undefined;\n}\n\n/**\n * A labelled single-line text field. Renders a native `<input>` inside Base UI's Field, so every native\n * attribute passes through: `type=\"date\" | \"time\" | \"number\" | \"url\" | …` keep the same height and\n * `iconStart` slot; `list=\"id\"` with a `<datalist>` beside it gives native suggestions. Date and time\n * fields show the browser's picker at the end edge, so leave `iconEnd` off those.\n */\nexport function Input({\n label,\n hideLabel,\n description,\n error,\n invalid,\n required,\n disabled,\n name,\n size,\n className,\n iconStart,\n iconEnd,\n onValueChange,\n ...rest\n}: InputProps) {\n return (\n <FieldShell\n label={label}\n hideLabel={hideLabel}\n description={description}\n error={error}\n invalid={invalid}\n required={required}\n disabled={disabled}\n name={name}\n size={size}\n className={className}\n >\n <span\n className=\"sc-input-wrap\"\n data-icon-start={iconStart ? '' : undefined}\n data-icon-end={iconEnd ? '' : undefined}\n >\n {iconStart ? (\n <span className=\"sc-input__icon\" data-side=\"start\" aria-hidden=\"true\">\n {iconStart}\n </span>\n ) : null}\n <Field.Control\n className=\"sc-input\"\n required={required}\n onValueChange={onValueChange ? (value) => onValueChange(value) : undefined}\n {...rest}\n />\n {iconEnd ? (\n <span className=\"sc-input__icon\" data-side=\"end\" aria-hidden=\"true\">\n {iconEnd}\n </span>\n ) : null}\n </span>\n </FieldShell>\n );\n}\n","import { Field } from '@base-ui/react/field';\nimport type { ReactNode } from 'react';\nimport { cx } from '../../utils/cx';\n\nexport type ControlSize = 'sm' | 'md' | 'lg';\n\n/** Props shared by every labelled form control: Input, Textarea, Select. */\nexport interface FieldProps {\n /** Required. The visible label; use `hideLabel` to keep it for assistive tech only. */\n label: ReactNode;\n /** Visually hides the label (a search box with an icon, a table filter). */\n hideLabel?: boolean | undefined;\n /** Help text under the control, wired with `aria-describedby`. */\n description?: ReactNode | undefined;\n /** The error message. When given the control is invalid and the message is announced. */\n error?: ReactNode | undefined;\n /** Marks the control invalid without a message. */\n invalid?: boolean | undefined;\n /** Shows a mark after the label and sets the native `required`. */\n required?: boolean | undefined;\n disabled?: boolean | undefined;\n /** Identifies the value when a form is submitted. */\n name?: string | undefined;\n /** Control height: 32, 40 (default) or 48px. Compact density shrinks each by one step. */\n size?: ControlSize | undefined;\n /** Class on the wrapper, not the control. */\n className?: string | undefined;\n}\n\ninterface FieldShellProps extends FieldProps {\n children: ReactNode;\n}\n\n/** Internal: Field.Root with label, control slot, description and error in the right order and ARIA. */\nexport function FieldShell({\n label,\n hideLabel = false,\n description,\n error,\n invalid = false,\n required = false,\n disabled = false,\n name,\n size = 'md',\n className,\n children,\n}: FieldShellProps) {\n return (\n <Field.Root\n className={cx('sc-field', className)}\n name={name}\n disabled={disabled}\n invalid={invalid || error != null}\n data-size={size}\n >\n <Field.Label className={cx('sc-field__label', hideLabel && 'sc-visually-hidden')}>\n {label}\n {required ? (\n <span className=\"sc-field__required\" aria-hidden=\"true\">\n *\n </span>\n ) : null}\n </Field.Label>\n {children}\n {description != null ? (\n <Field.Description className=\"sc-field__description\">{description}</Field.Description>\n ) : null}\n {error != null ? (\n <Field.Error className=\"sc-field__error\" match>\n {error}\n </Field.Error>\n ) : null}\n </Field.Root>\n );\n}\n","import { Field } from '@base-ui/react/field';\nimport type { ComponentPropsWithRef } from 'react';\nimport { FieldShell, type FieldProps } from '../Field/FieldShell';\n\nexport type TextareaVariant = 'default' | 'code';\n\nexport interface TextareaProps\n extends\n Omit<ComponentPropsWithRef<'textarea'>, 'name' | 'disabled' | 'required' | 'className'>,\n Omit<FieldProps, 'size'> {\n /** Visible lines. Default 3. */\n rows?: number | undefined;\n /** `vertical` (default) lets the user drag it taller; `none` fixes the height. */\n resize?: 'vertical' | 'none' | undefined;\n /**\n * `code` for Markdown, JSON and other source: monospace, `tab-size: 2`, spellcheck, autocorrect and\n * autocapitalize off. Add the native `wrap=\"off\"` to keep long lines on one line and scroll sideways.\n */\n variant?: TextareaVariant | undefined;\n /** Called with the string value on every change, beside the native `onChange`. */\n onValueChange?: ((value: string) => void) | undefined;\n}\n\n/** A labelled multi-line text field. Renders a native `<textarea>` inside Base UI's Field. */\nexport function Textarea({\n label,\n hideLabel,\n description,\n error,\n invalid,\n required,\n disabled,\n name,\n className,\n rows = 3,\n resize = 'vertical',\n variant = 'default',\n onValueChange,\n spellCheck,\n autoCorrect,\n autoCapitalize,\n ...rest\n}: TextareaProps) {\n const code = variant === 'code';\n return (\n <FieldShell\n label={label}\n hideLabel={hideLabel}\n description={description}\n error={error}\n invalid={invalid}\n required={required}\n disabled={disabled}\n name={name}\n className={className}\n >\n <Field.Control\n render={\n <textarea\n rows={rows}\n spellCheck={spellCheck ?? (code ? false : undefined)}\n autoCorrect={autoCorrect ?? (code ? 'off' : undefined)}\n autoCapitalize={autoCapitalize ?? (code ? 'off' : undefined)}\n {...rest}\n />\n }\n className=\"sc-input sc-textarea\"\n data-resize={resize}\n data-variant={code ? 'code' : undefined}\n required={required}\n onValueChange={onValueChange ? (value) => onValueChange(value) : undefined}\n />\n </FieldShell>\n );\n}\n","import { Select as BaseSelect } from '@base-ui/react/select';\nimport { useState, type KeyboardEvent, type ReactNode } from 'react';\nimport { FieldShell, type FieldProps } from '../Field/FieldShell';\nimport { CheckIcon, ChevronDownIcon, XIcon } from '../../icons/icons.gen';\n\nexport interface SelectOption<Value extends string = string> {\n value: Value;\n label: ReactNode;\n disabled?: boolean | undefined;\n}\n\nexport interface SelectGroup<Value extends string = string> {\n /** Heading shown above the group's options. */\n label: ReactNode;\n options: SelectOption<Value>[];\n}\n\nexport interface SelectProps<Value extends string = string> extends FieldProps {\n /** Flat options, or groups of options with a heading. */\n options: Array<SelectOption<Value> | SelectGroup<Value>>;\n /** Controlled value; `null` for none, which shows `placeholder`. No sentinel option needed. */\n value?: Value | null | undefined;\n /** Initial value when uncontrolled; `null` (default) for none. */\n defaultValue?: Value | null | undefined;\n /** Called with the chosen value, or `null` when the field is cleared. */\n onValueChange?: ((value: Value | null) => void) | undefined;\n /** Shown in the trigger while nothing is chosen. */\n placeholder?: ReactNode | undefined;\n /**\n * Shows an × beside the chevron while a value is chosen; pressing it, or Backspace/Delete on the\n * focused trigger, sets the value to `null` and calls `onValueChange(null)`.\n */\n clearable?: boolean | undefined;\n /** Accessible name of the clear button. Default \"Clear\". */\n clearLabel?: string | undefined;\n /** Prevents choosing a different option. */\n readOnly?: boolean | undefined;\n /** Stretches the trigger to the container. */\n fullWidth?: boolean | undefined;\n id?: string | undefined;\n}\n\nfunction isGroup<V extends string>(entry: SelectOption<V> | SelectGroup<V>): entry is SelectGroup<V> {\n return 'options' in entry;\n}\n\nfunction Option<V extends string>({ option }: { option: SelectOption<V> }) {\n return (\n <BaseSelect.Item value={option.value} disabled={option.disabled} className=\"sc-select__item\">\n <BaseSelect.ItemIndicator className=\"sc-select__indicator\">\n <CheckIcon size=\"sm\" />\n </BaseSelect.ItemIndicator>\n <BaseSelect.ItemText className=\"sc-select__item-text\">{option.label}</BaseSelect.ItemText>\n </BaseSelect.Item>\n );\n}\n\n/**\n * A labelled single-choice dropdown. Built on Base UI's Select so the list is styled and keyboard\n * complete; submits like a native select through `name`.\n */\nexport function Select<Value extends string = string>({\n label,\n hideLabel,\n description,\n error,\n invalid,\n required,\n disabled,\n name,\n size = 'md',\n className,\n options,\n value,\n defaultValue,\n onValueChange,\n placeholder = 'Choose…',\n clearable = false,\n clearLabel = 'Clear',\n readOnly,\n fullWidth = false,\n id,\n}: SelectProps<Value>) {\n const items = options.flatMap((entry) => (isGroup(entry) ? entry.options : [entry]));\n const [internal, setInternal] = useState<Value | null>(defaultValue ?? null);\n const controlled = value !== undefined;\n const current = controlled ? value : internal;\n const setValue = (next: Value | null) => {\n if (!controlled) setInternal(next);\n onValueChange?.(next);\n };\n const canClear = clearable && current != null && !disabled && !readOnly;\n const onTriggerKeyDown = (event: KeyboardEvent<HTMLButtonElement>) => {\n if (canClear && (event.key === 'Backspace' || event.key === 'Delete')) {\n event.preventDefault();\n setValue(null);\n }\n };\n return (\n <FieldShell\n label={label}\n hideLabel={hideLabel}\n description={description}\n error={error}\n invalid={invalid}\n required={required}\n disabled={disabled}\n name={name}\n size={size}\n className={className}\n >\n <BaseSelect.Root<Value | null>\n items={items}\n value={current}\n onValueChange={(next) => setValue(next)}\n disabled={disabled}\n required={required}\n readOnly={readOnly}\n >\n <span className=\"sc-select__wrap\" data-full-width={fullWidth || undefined}>\n <BaseSelect.Trigger\n id={id}\n className=\"sc-select\"\n data-size={size}\n data-full-width={fullWidth || undefined}\n data-clearable={canClear || undefined}\n onKeyDown={onTriggerKeyDown}\n >\n <BaseSelect.Value className=\"sc-select__value\" placeholder={placeholder} />\n <BaseSelect.Icon className=\"sc-select__icon\">\n <ChevronDownIcon />\n </BaseSelect.Icon>\n </BaseSelect.Trigger>\n {canClear ? (\n <button\n type=\"button\"\n className=\"sc-select__clear\"\n aria-label={clearLabel}\n onClick={() => setValue(null)}\n >\n <XIcon size=\"sm\" />\n </button>\n ) : null}\n </span>\n <BaseSelect.Portal>\n <BaseSelect.Positioner\n className=\"sc-select__positioner\"\n sideOffset={4}\n alignItemWithTrigger={false}\n >\n <BaseSelect.Popup className=\"sc-select__popup\">\n <BaseSelect.List>\n {options.map((entry, i) =>\n isGroup(entry) ? (\n <BaseSelect.Group key={i} className=\"sc-select__group\">\n <BaseSelect.GroupLabel className=\"sc-select__group-label\">\n {entry.label}\n </BaseSelect.GroupLabel>\n {entry.options.map((option) => (\n <Option key={option.value} option={option} />\n ))}\n </BaseSelect.Group>\n ) : (\n <Option key={entry.value} option={entry} />\n ),\n )}\n </BaseSelect.List>\n </BaseSelect.Popup>\n </BaseSelect.Positioner>\n </BaseSelect.Portal>\n </BaseSelect.Root>\n </FieldShell>\n );\n}\n","import { Checkbox as BaseCheckbox } from '@base-ui/react/checkbox';\nimport { useId, type ReactNode } from 'react';\nimport { CheckIcon, MinusIcon } from '../../icons/icons.gen';\nimport { cx } from '../../utils/cx';\n\nexport interface CheckboxProps extends Omit<\n BaseCheckbox.Root.Props,\n 'className' | 'onCheckedChange' | 'render' | 'children'\n> {\n /** Required. The visible label; clicking it toggles the box. */\n label: ReactNode;\n /** Help text under the label, wired with `aria-describedby`. */\n description?: ReactNode | undefined;\n /** Called with the next checked state. */\n onCheckedChange?: ((checked: boolean) => void) | undefined;\n className?: string | undefined;\n}\n\n/** A labelled checkbox. `indeterminate` shows a dash for \"some of these\". Built on Base UI's Checkbox. */\nexport function Checkbox({\n label,\n description,\n onCheckedChange,\n className,\n disabled,\n ...rest\n}: CheckboxProps) {\n const descriptionId = useId();\n return (\n <div className={cx('sc-choice', className)} data-disabled={disabled || undefined}>\n <label className=\"sc-choice__control\">\n <BaseCheckbox.Root\n className=\"sc-checkbox\"\n disabled={disabled}\n aria-describedby={description != null ? descriptionId : undefined}\n onCheckedChange={onCheckedChange ? (checked) => onCheckedChange(checked) : undefined}\n {...rest}\n >\n <BaseCheckbox.Indicator className=\"sc-checkbox__indicator\">\n <CheckIcon size=\"sm\" className=\"sc-checkbox__check\" />\n <MinusIcon size=\"sm\" className=\"sc-checkbox__dash\" />\n </BaseCheckbox.Indicator>\n </BaseCheckbox.Root>\n <span className=\"sc-choice__label\">{label}</span>\n </label>\n {description != null ? (\n <span className=\"sc-choice__description\" id={descriptionId}>\n {description}\n </span>\n ) : null}\n </div>\n );\n}\n","import { Switch as BaseSwitch } from '@base-ui/react/switch';\nimport { useId, type ReactNode } from 'react';\nimport { cx } from '../../utils/cx';\n\nexport interface SwitchProps extends Omit<\n BaseSwitch.Root.Props,\n 'className' | 'onCheckedChange' | 'render' | 'children'\n> {\n /** Required. The visible label; clicking it flips the switch. */\n label: ReactNode;\n /** Help text under the label, wired with `aria-describedby`. */\n description?: ReactNode | undefined;\n /** Called with the next checked state. */\n onCheckedChange?: ((checked: boolean) => void) | undefined;\n /** `end` (default) puts the switch before the label; `start` puts the label first and the switch at the row's end. */\n labelPosition?: 'start' | 'end' | undefined;\n className?: string | undefined;\n}\n\n/** A labelled on/off switch for settings that apply at once. Built on Base UI's Switch. */\nexport function Switch({\n label,\n description,\n onCheckedChange,\n labelPosition = 'end',\n className,\n disabled,\n ...rest\n}: SwitchProps) {\n const descriptionId = useId();\n return (\n <div\n className={cx('sc-choice', className)}\n data-disabled={disabled || undefined}\n data-label-position={labelPosition}\n >\n <label className=\"sc-choice__control\">\n <BaseSwitch.Root\n className=\"sc-switch\"\n disabled={disabled}\n aria-describedby={description != null ? descriptionId : undefined}\n onCheckedChange={onCheckedChange ? (checked) => onCheckedChange(checked) : undefined}\n {...rest}\n >\n <BaseSwitch.Thumb className=\"sc-switch__thumb\" />\n </BaseSwitch.Root>\n <span className=\"sc-choice__label\">{label}</span>\n </label>\n {description != null ? (\n <span className=\"sc-choice__description\" id={descriptionId}>\n {description}\n </span>\n ) : null}\n </div>\n );\n}\n","import { Tabs as BaseTabs } from '@base-ui/react/tabs';\nimport type { ReactNode } from 'react';\nimport { cx } from '../../utils/cx';\n\nexport interface TabsRootProps extends Omit<\n BaseTabs.Root.Props,\n 'className' | 'value' | 'defaultValue' | 'onValueChange'\n> {\n /** Controlled active tab. */\n value?: string | undefined;\n /** Initial active tab when uncontrolled. Defaults to the first enabled tab. */\n defaultValue?: string | undefined;\n /** Called with the value of the newly active tab. */\n onValueChange?: ((value: string) => void) | undefined;\n className?: string | undefined;\n}\n\n/** Owns the active tab. Wrap a `Tabs.List` and one `Tabs.Panel` per tab. */\nfunction Root({ className, onValueChange, ...rest }: TabsRootProps) {\n return (\n <BaseTabs.Root\n className={cx('sc-tabs', className)}\n onValueChange={onValueChange ? (value) => onValueChange(String(value)) : undefined}\n {...rest}\n />\n );\n}\n\nexport interface TabsListProps extends Omit<BaseTabs.List.Props, 'className'> {\n /** Names the set of tabs for assistive tech: \"Inbox sections\". */\n 'aria-label': string;\n /** Tabs share the width equally instead of sizing to their labels. */\n fill?: boolean | undefined;\n className?: string | undefined;\n}\n\n/** The row of tabs with the sliding indicator. Arrow keys move between tabs; Enter or Space activates. */\nfunction List({ fill = false, className, children, ...rest }: TabsListProps) {\n return (\n <BaseTabs.List className={cx('sc-tabs__list', className)} data-fill={fill || undefined} {...rest}>\n {children}\n <BaseTabs.Indicator className=\"sc-tabs__indicator\" />\n </BaseTabs.List>\n );\n}\n\nexport interface TabsTabProps extends Omit<BaseTabs.Tab.Props, 'className' | 'value'> {\n value: string;\n /** A 16px icon before the label. */\n icon?: ReactNode | undefined;\n /** A count after the label, muted: `12`. */\n count?: ReactNode | undefined;\n className?: string | undefined;\n}\n\n/** One tab. */\nfunction Tab({ icon, count, className, children, ...rest }: TabsTabProps) {\n return (\n <BaseTabs.Tab className={cx('sc-tabs__tab', className)} {...rest}>\n {icon ? (\n <span className=\"sc-tabs__icon\" aria-hidden=\"true\">\n {icon}\n </span>\n ) : null}\n <span className=\"sc-tabs__label\">{children}</span>\n {count != null ? (\n <>\n {' '}\n <span className=\"sc-tabs__count\">{count}</span>\n </>\n ) : null}\n </BaseTabs.Tab>\n );\n}\n\nexport interface TabsPanelProps extends Omit<BaseTabs.Panel.Props, 'className' | 'value'> {\n value: string;\n className?: string | undefined;\n}\n\n/** The content of one tab. Unmounted while hidden unless `keepMounted`. */\nfunction Panel({ className, ...rest }: TabsPanelProps) {\n return <BaseTabs.Panel className={cx('sc-tabs__panel', className)} {...rest} />;\n}\n\n/** Switches between sections of one view. Built on Base UI's Tabs. */\nexport const Tabs = { Root, List, Tab, Panel };\n","import { Toolbar as BaseToolbar } from '@base-ui/react/toolbar';\nimport type { SpacingSize } from '../../types';\nimport { cx } from '../../utils/cx';\n\nexport interface ToolbarRootProps extends Omit<BaseToolbar.Root.Props, 'className'> {\n /** Required. Names the toolbar for assistive tech: \"Inbox actions\". */\n 'aria-label': string;\n /** Wraps onto new lines on narrow widths (default). `false` keeps one line that overflows. */\n wrap?: boolean | undefined;\n /** Gap between items and groups. Default `xs`. */\n gap?: SpacingSize | undefined;\n className?: string | undefined;\n}\n\n/**\n * A row of controls with one tab stop: Tab enters, arrow keys move between items, Tab leaves. Put every\n * control through `Toolbar.Button` (`render={<IconButton … />}`) so it joins the roving focus.\n */\nfunction Root({ wrap = true, gap = 'xs', className, ...rest }: ToolbarRootProps) {\n return (\n <BaseToolbar.Root\n className={cx('sc-toolbar', className)}\n data-wrap={wrap || undefined}\n data-gap={gap}\n {...rest}\n />\n );\n}\n\nexport interface ToolbarGroupProps extends Omit<BaseToolbar.Group.Props, 'className'> {\n /** Names the group: \"Playback\". */\n 'aria-label'?: string | undefined;\n /** Gap inside the group. Default `2xs`. */\n gap?: SpacingSize | undefined;\n className?: string | undefined;\n}\n\n/** Keeps related controls together with a tighter gap. */\nfunction Group({ gap = '2xs', className, ...rest }: ToolbarGroupProps) {\n return <BaseToolbar.Group className={cx('sc-toolbar__group', className)} data-gap={gap} {...rest} />;\n}\n\nexport interface ToolbarSeparatorProps extends Omit<BaseToolbar.Separator.Props, 'className'> {\n className?: string | undefined;\n}\n\n/** A hairline between groups. */\nfunction Separator({ className, ...rest }: ToolbarSeparatorProps) {\n return <BaseToolbar.Separator className={cx('sc-toolbar__separator', className)} {...rest} />;\n}\n\nexport interface ToolbarButtonProps extends Omit<BaseToolbar.Button.Props, 'className'> {\n className?: string | undefined;\n}\n\n/**\n * Joins a control to the toolbar's keyboard navigation. Pass the real control through `render`:\n * `<Toolbar.Button render={<IconButton label=\"Pause\" tooltip />}><PauseIcon /></Toolbar.Button>`.\n * For a Menu, nest: `<Toolbar.Button render={<Menu.Trigger render={<IconButton … />} />}>`.\n */\nconst Button = BaseToolbar.Button;\n\nexport interface ToolbarLinkProps extends Omit<BaseToolbar.Link.Props, 'className'> {\n className?: string | undefined;\n}\n\n/**\n * A link that joins the toolbar's keyboard navigation. With no `render` it is a plain `<a>`; for an\n * icon link pass an IconButton that itself renders the anchor (or a Next.js `Link`):\n * `<Toolbar.Link render={<IconButton label=\"Settings\" tooltip render={<a href=\"/settings\" />} />}><SettingsIcon /></Toolbar.Link>`.\n */\nconst Link = BaseToolbar.Link;\n\nexport interface ToolbarSpacerProps {\n className?: string | undefined;\n}\n\n/** Pushes what follows to the far end. */\nfunction Spacer({ className }: ToolbarSpacerProps) {\n return <div className={cx('sc-toolbar__spacer', className)} aria-hidden=\"true\" />;\n}\n\n/** A horizontal container of controls. Built on Base UI's Toolbar. */\nexport const Toolbar = { Root, Group, Separator, Button, Link, Spacer };\n","import { useState, type ComponentPropsWithRef, type ReactNode } from 'react';\nimport { IconButton } from '../IconButton/IconButton';\nimport { CircleCheckIcon, CircleXIcon, InfoIcon, WarningIcon, XIcon } from '../../icons/icons.gen';\nimport { cx } from '../../utils/cx';\n\nexport type BannerTone = 'info' | 'success' | 'warning' | 'danger' | 'neutral';\n\nexport interface BannerProps extends ComponentPropsWithRef<'div'> {\n /** Colour and default icon. `warning` and `danger` are announced as alerts; the rest as status. */\n tone?: BannerTone | undefined;\n /** Replaces the tone's icon; `false` removes it. */\n icon?: ReactNode | false | undefined;\n /** One Button, usually `variant=\"ghost\" size=\"sm\"`, at the end of the strip. */\n action?: ReactNode | undefined;\n /** Shows a close button that hides the banner. */\n dismissible?: boolean | undefined;\n /** Called when the close button is pressed. */\n onDismiss?: (() => void) | undefined;\n /** Controlled visibility when dismissible. */\n open?: boolean | undefined;\n /** Accessible name of the close button. Default \"Dismiss\". */\n dismissLabel?: string | undefined;\n}\n\nconst toneIcons: Record<BannerTone, ReactNode> = {\n info: <InfoIcon />,\n success: <CircleCheckIcon />,\n warning: <WarningIcon />,\n danger: <CircleXIcon />,\n neutral: null,\n};\n\n/** A single-line status strip across the top of a view: paused, offline, \"3 new since you looked\". */\nexport function Banner({\n tone = 'info',\n icon,\n action,\n dismissible = false,\n onDismiss,\n open,\n dismissLabel = 'Dismiss',\n role,\n className,\n children,\n ...rest\n}: BannerProps) {\n const [dismissed, setDismissed] = useState(false);\n const visible = open ?? !dismissed;\n if (!visible) return null;\n const glyph = icon === false ? null : (icon ?? toneIcons[tone]);\n return (\n <div\n role={role ?? (tone === 'warning' || tone === 'danger' ? 'alert' : 'status')}\n className={cx('sc-banner', className)}\n data-tone={tone}\n {...rest}\n >\n {glyph ? (\n <span className=\"sc-banner__icon\" aria-hidden=\"true\">\n {glyph}\n </span>\n ) : null}\n <div className=\"sc-banner__body\">{children}</div>\n {action ? <div className=\"sc-banner__action\">{action}</div> : null}\n {dismissible ? (\n <IconButton\n label={dismissLabel}\n size=\"sm\"\n className=\"sc-banner__dismiss\"\n onClick={() => {\n setDismissed(true);\n onDismiss?.();\n }}\n >\n <XIcon />\n </IconButton>\n ) : null}\n </div>\n );\n}\n","import type { ComponentPropsWithRef } from 'react';\nimport type { IconSize } from '../Icon/Icon';\nimport { cx } from '../../utils/cx';\n\nexport interface SpinnerProps extends ComponentPropsWithRef<'span'> {\n /** `xs` 12, `sm` 14, `md` 16 (default), `lg` 20, `xl` 24, or `em` to follow the font size. */\n size?: IconSize | undefined;\n /** What is happening, announced once as a status. Default \"Loading\". */\n label?: string | undefined;\n /** Hides it from assistive tech when the text beside it already says what is happening. */\n decorative?: boolean | undefined;\n}\n\n/** An indeterminate activity indicator in `currentColor`. Slows down, never stops, under reduced motion. */\nexport function Spinner({\n size = 'md',\n label = 'Loading',\n decorative = false,\n className,\n ...rest\n}: SpinnerProps) {\n return (\n <span\n className={cx('sc-spinner', className)}\n data-size={size}\n role={decorative ? undefined : 'status'}\n aria-label={decorative ? undefined : label}\n aria-hidden={decorative || undefined}\n {...rest}\n >\n <svg\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.75\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <circle className=\"sc-spinner__track\" cx=\"8\" cy=\"8\" r=\"6.25\" />\n <circle className=\"sc-spinner__arc\" cx=\"8\" cy=\"8\" r=\"6.25\" strokeLinecap=\"round\" />\n </svg>\n </span>\n );\n}\n","import { Progress as BaseProgress } from '@base-ui/react/progress';\nimport type { ComponentPropsWithRef, ReactNode } from 'react';\nimport { Spinner } from '../Spinner/Spinner';\nimport { cx } from '../../utils/cx';\n\nexport type ProgressTone = 'accent' | 'success' | 'warning' | 'danger' | 'neutral';\nexport type ProgressSize = 'sm' | 'md';\nexport type ProgressVariant = 'bar' | 'inline';\n\nexport interface ProgressProps extends Omit<ComponentPropsWithRef<'div'>, 'children'> {\n /** Current value. Omit or pass `null` while the amount of work is unknown (indeterminate). */\n value?: number | null | undefined;\n /** Default 100. Pass the total so `value` can be a count: `value={460} max={859}`. */\n max?: number | undefined;\n /** Default 0. */\n min?: number | undefined;\n /** What is happening: \"Verifying\". Visible, and names the bar for assistive tech. */\n label?: ReactNode | undefined;\n /** Detail at the end: \"460 of 859 · 3 min elapsed\". A string also becomes `aria-valuetext`. */\n valueText?: ReactNode | undefined;\n /** Shows the percentage when `valueText` is not given. */\n showValue?: boolean | undefined;\n /** Fill colour. Default `accent`; `success` when done, `danger` when it failed. */\n tone?: ProgressTone | undefined;\n /** Bar thickness: `sm` 4px, `md` 8px (default). Inline uses the text size. */\n size?: ProgressSize | undefined;\n /** `bar` (default) is label, value and a track; `inline` is a Spinner beside the text for toolbars and buttons. */\n variant?: ProgressVariant | undefined;\n /** Names the bar when there is no `label`. */\n 'aria-label'?: string | undefined;\n}\n\n/**\n * Says that something is processing and, when known, how far along it is. Built on Base UI's Progress:\n * `role=\"progressbar\"` with the aria value attributes, or none while indeterminate.\n */\nexport function Progress({\n value,\n max = 100,\n min = 0,\n label,\n valueText,\n showValue = false,\n tone = 'accent',\n size = 'md',\n variant = 'bar',\n className,\n ...rest\n}: ProgressProps) {\n const current = value ?? null;\n const hasValueText = valueText != null || (showValue && current !== null);\n return (\n <BaseProgress.Root\n value={current}\n max={max}\n min={min}\n getAriaValueText={(formatted) => (typeof valueText === 'string' ? valueText : (formatted ?? ''))}\n className={cx('sc-progress', className)}\n data-variant={variant}\n data-tone={tone}\n data-size={size}\n {...rest}\n >\n {variant === 'inline' ? <Spinner size=\"sm\" decorative className=\"sc-progress__spinner\" /> : null}\n {label != null ? <BaseProgress.Label className=\"sc-progress__label\">{label}</BaseProgress.Label> : null}\n {hasValueText ? (\n <BaseProgress.Value className=\"sc-progress__value\">\n {(formatted) => (valueText != null ? valueText : formatted)}\n </BaseProgress.Value>\n ) : null}\n {variant === 'bar' ? (\n <BaseProgress.Track className=\"sc-progress__track\">\n <BaseProgress.Indicator className=\"sc-progress__indicator\" />\n </BaseProgress.Track>\n ) : null}\n </BaseProgress.Root>\n );\n}\n","import { createElement, type ComponentPropsWithRef } from 'react';\nimport { cx } from '../../utils/cx';\n\nexport type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;\nexport type HeadingSize = 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | '5xl';\nexport type HeadingElement = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'div' | 'span' | 'p';\nexport type TextTone = 'default' | 'muted' | 'subtle' | 'accent' | 'success' | 'warning' | 'danger' | 'info';\n\nexport interface HeadingProps extends ComponentPropsWithRef<'h2'> {\n /** The outline level, rendered as `h1`–`h6`. Default 2. */\n level?: HeadingLevel | undefined;\n /** Visual size from the type scale, independent of the level. Defaults by level: 3xl, 2xl, xl, lg, md, sm. */\n size?: HeadingSize | undefined;\n /** Render a different element and keep the look; `div`/`span` for a card title that is not an outline entry. */\n as?: HeadingElement | undefined;\n /** Colour. Default is the text colour. */\n tone?: TextTone | undefined;\n /** One line with an ellipsis. */\n truncate?: boolean | undefined;\n}\n\nconst sizeByLevel: Record<HeadingLevel, HeadingSize> = {\n 1: '3xl',\n 2: '2xl',\n 3: 'xl',\n 4: 'lg',\n 5: 'md',\n 6: 'sm',\n};\n\n/** A heading from the type scale. `level` is the semantics, `size` the look; they are set separately on purpose. */\nexport function Heading({\n level = 2,\n size,\n as,\n tone = 'default',\n truncate = false,\n className,\n ...rest\n}: HeadingProps) {\n return createElement(as ?? `h${level}`, {\n className: cx('sc-heading', className),\n 'data-size': size ?? sizeByLevel[level],\n 'data-tone': tone,\n 'data-truncate': truncate || undefined,\n ...rest,\n });\n}\n","import { createElement, type ComponentPropsWithRef, type CSSProperties, type ReactElement } from 'react';\nimport type { TextTone } from '../Heading/Heading';\nimport { cx } from '../../utils/cx';\n\nexport type TextSize = 'xs' | 'sm' | 'md' | 'lg';\nexport type TextWeight = 'regular' | 'medium' | 'semibold';\nexport type TextAlign = 'start' | 'center' | 'end';\nexport type TextElement =\n | 'p'\n | 'span'\n | 'div'\n | 'label'\n | 'li'\n | 'dt'\n | 'dd'\n | 'strong'\n | 'em'\n | 'small'\n | 'time'\n | 'figcaption'\n | 'legend';\n\nexport interface TextProps extends ComponentPropsWithRef<'p'> {\n /** Element to render. Default `p`; `span` inside other text. */\n as?: TextElement | undefined;\n /** `xs` 12 captions, `sm` 14 UI text (default), `md` body copy, `lg` lede. */\n size?: TextSize | undefined;\n /** Colour. `muted` for metadata, `subtle` for placeholders, status tones for inline status. */\n tone?: TextTone | undefined;\n weight?: TextWeight | undefined;\n align?: TextAlign | undefined;\n /** `true` keeps one line with an ellipsis; a number clamps to that many lines. */\n truncate?: boolean | number | undefined;\n /** Tabular figures, for numbers that line up in columns. */\n numeric?: boolean | undefined;\n}\n\n/** Running text and labels from the type scale. Parents own spacing: Text has no margins. */\nexport function Text({\n as = 'p',\n size = 'sm',\n tone = 'default',\n weight = 'regular',\n align,\n truncate = false,\n numeric = false,\n className,\n style,\n ...rest\n}: TextProps): ReactElement {\n const clamp = typeof truncate === 'number' ? truncate : undefined;\n return createElement(as, {\n className: cx('sc-text', className),\n 'data-size': size,\n 'data-tone': tone,\n 'data-weight': weight,\n 'data-align': align,\n 'data-truncate': truncate === true ? '' : clamp !== undefined ? 'clamp' : undefined,\n 'data-numeric': numeric || undefined,\n style: clamp !== undefined ? ({ ...style, '--sc-text-lines': clamp } as CSSProperties) : style,\n ...rest,\n });\n}\n","import type { ComponentPropsWithRef, CSSProperties, ReactNode } from 'react';\nimport { ArrowDownIcon, ArrowUpIcon } from '../../icons/icons.gen';\nimport { cx } from '../../utils/cx';\n\nexport type TableAlign = 'start' | 'center' | 'end';\nexport type TableDensity = 'comfortable' | 'compact';\nexport type TableSortDirection = 'ascending' | 'descending' | 'none';\n\nexport interface TableRootProps extends Omit<ComponentPropsWithRef<'table'>, 'style'> {\n /** Column headers stay visible while the table scrolls. Give `maxHeight` to scroll inside the table; otherwise they stick to the page. */\n stickyHeader?: boolean | undefined;\n /** Limits the height and scrolls rows inside; pairs with `stickyHeader`. A CSS length. */\n maxHeight?: string | undefined;\n /** `compact` tightens row height and padding; `data-density=\"compact\"` on an ancestor does the same. */\n density?: TableDensity | undefined;\n /** Hairlines between rows (default) or none. */\n divided?: boolean | undefined;\n /** `fixed` column widths from the first row, for truncating cells. Default `auto`. */\n layout?: 'auto' | 'fixed' | undefined;\n /** Style and class for the scrolling wrapper; `className` goes on the `<table>`. */\n wrapperClassName?: string | undefined;\n wrapperStyle?: CSSProperties | undefined;\n style?: CSSProperties | undefined;\n children?: ReactNode | undefined;\n}\n\n/** A semantic `<table>` in a horizontally scrolling wrapper. Compose `Table.Head`, `Table.Body`, `Table.Row`, `Table.Header`, `Table.Cell`. */\nfunction Root({\n stickyHeader = false,\n maxHeight,\n density,\n divided = true,\n layout = 'auto',\n wrapperClassName,\n wrapperStyle,\n className,\n style,\n children,\n ...rest\n}: TableRootProps) {\n return (\n <div\n className={cx('sc-table-wrap', wrapperClassName)}\n data-sticky-header={stickyHeader || undefined}\n data-scroll={maxHeight ? '' : undefined}\n style={maxHeight ? { ...wrapperStyle, maxBlockSize: maxHeight } : wrapperStyle}\n >\n <table\n className={cx('sc-table', className)}\n data-density={density}\n data-divided={divided || undefined}\n data-layout={layout}\n style={style}\n {...rest}\n >\n {children}\n </table>\n </div>\n );\n}\n\nexport type TableCaptionProps = ComponentPropsWithRef<'caption'>;\n\n/** Names the table for assistive tech; visually a muted line above it. */\nfunction Caption({ className, ...rest }: TableCaptionProps) {\n return <caption className={cx('sc-table__caption', className)} {...rest} />;\n}\n\nexport type TableHeadProps = ComponentPropsWithRef<'thead'>;\nfunction Head({ className, ...rest }: TableHeadProps) {\n return <thead className={cx('sc-table__head', className)} {...rest} />;\n}\n\nexport type TableBodyProps = ComponentPropsWithRef<'tbody'>;\nfunction Body({ className, ...rest }: TableBodyProps) {\n return <tbody className={cx('sc-table__body', className)} {...rest} />;\n}\n\nexport type TableFootProps = ComponentPropsWithRef<'tfoot'>;\nfunction Foot({ className, ...rest }: TableFootProps) {\n return <tfoot className={cx('sc-table__foot', className)} {...rest} />;\n}\n\nexport interface TableRowProps extends ComponentPropsWithRef<'tr'> {\n /** Accent wash, for the current row. */\n selected?: boolean | undefined;\n /** Hover wash and pointer; make the primary cell a link or button for the real target. */\n interactive?: boolean | undefined;\n}\n\nfunction Row({ selected = false, interactive = false, className, ...rest }: TableRowProps) {\n return (\n <tr\n className={cx('sc-table__row', className)}\n data-selected={selected || undefined}\n data-interactive={interactive || undefined}\n aria-selected={selected || undefined}\n {...rest}\n />\n );\n}\n\ninterface CellSlots {\n /** Horizontal alignment. Default `start`; `end` for numbers. */\n align?: TableAlign | undefined;\n /** Tabular figures and end alignment. */\n numeric?: boolean | undefined;\n /** No wrapping. */\n nowrap?: boolean | undefined;\n /** One line with an ellipsis; needs `layout=\"fixed\"` or a `width`. */\n truncate?: boolean | undefined;\n /** Column width as a CSS length, on headers. */\n width?: string | undefined;\n}\n\nexport interface TableHeaderProps extends Omit<ComponentPropsWithRef<'th'>, 'align' | 'width'>, CellSlots {\n /** Renders the label as a button that sorts the column. The table stays controlled: sort the rows yourself in `onSort`. */\n sortable?: boolean | undefined;\n /** The column's current sort, reflected as `aria-sort`. `none` (default) for every column but the sorted one. */\n sortDirection?: TableSortDirection | undefined;\n /** Called with the direction to apply: `ascending` first, then it toggles. */\n onSort?: ((direction: Exclude<TableSortDirection, 'none'>) => void) | undefined;\n}\n\n/** A `<th>`; `scope` defaults to `col`, pass `row` for the first cell of a row. */\nfunction Header({\n align,\n numeric = false,\n nowrap = false,\n truncate = false,\n width,\n sortable = false,\n sortDirection = 'none',\n onSort,\n scope = 'col',\n className,\n style,\n children,\n ...rest\n}: TableHeaderProps) {\n const sorted = sortable && sortDirection !== 'none';\n return (\n <th\n scope={scope}\n className={cx('sc-table__header', className)}\n data-align={align ?? (numeric ? 'end' : undefined)}\n data-numeric={numeric || undefined}\n data-nowrap={nowrap || undefined}\n data-truncate={truncate || undefined}\n data-sortable={sortable || undefined}\n data-sorted={sorted ? sortDirection : undefined}\n aria-sort={sorted ? sortDirection : undefined}\n style={width ? { ...style, inlineSize: width } : style}\n {...rest}\n >\n {sortable ? (\n <button\n type=\"button\"\n className=\"sc-table__sort\"\n onClick={() => onSort?.(sortDirection === 'ascending' ? 'descending' : 'ascending')}\n >\n <span className=\"sc-table__sort-label\">{children}</span>\n <span className=\"sc-table__sort-icon\" aria-hidden=\"true\">\n {sortDirection === 'descending' ? <ArrowDownIcon size=\"xs\" /> : <ArrowUpIcon size=\"xs\" />}\n </span>\n </button>\n ) : (\n children\n )}\n </th>\n );\n}\n\nexport interface TableCellProps extends Omit<ComponentPropsWithRef<'td'>, 'align' | 'width'>, CellSlots {}\n\nfunction Cell({\n align,\n numeric = false,\n nowrap = false,\n truncate = false,\n width,\n className,\n style,\n ...rest\n}: TableCellProps) {\n return (\n <td\n className={cx('sc-table__cell', className)}\n data-align={align ?? (numeric ? 'end' : undefined)}\n data-numeric={numeric || undefined}\n data-nowrap={nowrap || undefined}\n data-truncate={truncate || undefined}\n style={width ? { ...style, inlineSize: width } : style}\n {...rest}\n />\n );\n}\n\n/** Rows of records with column headers. Native table elements, so screen readers get rows and columns. */\nexport const Table = { Root, Caption, Head, Body, Foot, Row, Header, Cell };\n","import { createElement, type ComponentPropsWithRef, type ReactNode } from 'react';\nimport { ArrowDownIcon, ArrowRightIcon, ArrowUpIcon } from '../../icons/icons.gen';\nimport { cx } from '../../utils/cx';\n\nexport type StatTrend = 'up' | 'down' | 'flat';\nexport type StatDeltaTone = 'positive' | 'negative' | 'neutral';\nexport type StatElement = 'div' | 'li' | 'article';\nexport type StatVariant = 'outlined' | 'filled' | 'plain';\nexport type StatSize = 'sm' | 'md';\n\nexport interface StatProps extends Omit<ComponentPropsWithRef<'div'>, 'children'> {\n /** What the number is: \"Applications\", \"Reply rate\". */\n label: ReactNode;\n /** The number, already formatted: \"1,204\", \"37%\". */\n value: ReactNode;\n /** The change beside the value: \"+12\", \"−3.1 pts\", \"same as last week\". */\n delta?: ReactNode | undefined;\n /** Colour of the delta: `positive` green, `negative` red, `neutral` muted (default). Say which is good; up is not always good. */\n deltaTone?: StatDeltaTone | undefined;\n /** Arrow before the delta. */\n trend?: StatTrend | undefined;\n /** Muted line under the value: \"last 7 days\", \"of 2,000 budget\". */\n hint?: ReactNode | undefined;\n /** A 20px icon in the corner. Decorative. */\n icon?: ReactNode | undefined;\n /** `outlined` surface (default), `filled` inset, `plain` no surface for a row of stats inside a Card. */\n variant?: StatVariant | undefined;\n /** `md` (default) or `sm` for dense rows. */\n size?: StatSize | undefined;\n /** Element to render; `li` in a list of stats. */\n as?: StatElement | undefined;\n}\n\nconst trendIcons: Record<StatTrend, ReactNode> = {\n up: <ArrowUpIcon size=\"xs\" />,\n down: <ArrowDownIcon size=\"xs\" />,\n flat: <ArrowRightIcon size=\"xs\" />,\n};\n\n/** One number with its label: a KPI tile. The value is text, so it reads as \"Applications, 1,204, up 12\". */\nexport function Stat({\n label,\n value,\n delta,\n deltaTone = 'neutral',\n trend,\n hint,\n icon,\n variant = 'outlined',\n size = 'md',\n as = 'div',\n className,\n ...rest\n}: StatProps) {\n return createElement(\n as,\n {\n className: cx('sc-stat', className),\n 'data-variant': variant,\n 'data-size': size,\n ...rest,\n },\n <>\n <div className=\"sc-stat__label\">{label}</div>\n {icon ? (\n <span className=\"sc-stat__icon\" aria-hidden=\"true\">\n {icon}\n </span>\n ) : null}\n <div className=\"sc-stat__value\">{value}</div>\n {delta != null ? (\n <div className=\"sc-stat__delta\" data-tone={deltaTone}>\n {trend ? (\n <span className=\"sc-stat__trend\" aria-hidden=\"true\">\n {trendIcons[trend]}\n </span>\n ) : null}\n {trend ? (\n <span className=\"sc-visually-hidden\">{trend === 'flat' ? 'unchanged' : trend} </span>\n ) : null}\n {delta}\n </div>\n ) : null}\n {hint != null ? <div className=\"sc-stat__hint\">{hint}</div> : null}\n </>,\n );\n}\n","import type { ComponentPropsWithRef, KeyboardEvent, MouseEvent, ReactNode } from 'react';\nimport { XIcon } from '../../icons/icons.gen';\nimport { cx } from '../../utils/cx';\n\nexport type ChipTone = 'neutral' | 'accent' | 'success' | 'warning' | 'danger' | 'info';\nexport type ChipSize = 'sm' | 'md';\n\nexport interface ChipProps extends Omit<ComponentPropsWithRef<'span'>, 'onClick' | 'onRemove'> {\n /** The chip text. Keep it to a word or three. */\n children: ReactNode;\n /** A 14px icon before the text. Decorative. */\n icon?: ReactNode | undefined;\n /** Colour. `neutral` (default) for filters, a status tone when the chip is the status. */\n tone?: ChipTone | undefined;\n /** `md` 32px (default) or `sm` 24px inside table rows and Card headers. */\n size?: ChipSize | undefined;\n /** Filled and `aria-pressed`. Use with `onClick` for a toggling filter chip. */\n selected?: boolean | undefined;\n /** Makes the chip a `<button>` that toggles; `selected` is reflected as `aria-pressed`. */\n onClick?: ((event: MouseEvent<HTMLButtonElement>) => void) | undefined;\n /**\n * Adds a labelled × that calls this. Backspace or Delete on the focused chip (or on the ×) removes it\n * too. Focus is yours to manage after removal: move it to the next chip or the filter input.\n */\n onRemove?: (() => void) | undefined;\n /** Accessible name of the ×. Default \"Remove\" followed by the chip text when that text is a string. */\n removeLabel?: string | undefined;\n disabled?: boolean | undefined;\n}\n\n/**\n * A small pill: an applied filter, a tag, a selectable option in a row of a few. `onClick` makes it a\n * toggle button, `onRemove` adds the ×, and the two combine. Plain text otherwise.\n */\nexport function Chip({\n children,\n icon,\n tone = 'neutral',\n size = 'md',\n selected = false,\n onClick,\n onRemove,\n removeLabel,\n disabled = false,\n className,\n ...rest\n}: ChipProps) {\n const interactive = onClick !== undefined;\n const removeName = removeLabel ?? (typeof children === 'string' ? `Remove ${children}` : 'Remove');\n const handleRemoveKey = (event: KeyboardEvent<HTMLElement>) => {\n if (onRemove && !disabled && (event.key === 'Backspace' || event.key === 'Delete')) {\n event.preventDefault();\n onRemove();\n }\n };\n const shared = {\n className: cx('sc-chip', className),\n 'data-tone': tone,\n 'data-size': size,\n 'data-selected': selected || undefined,\n 'data-removable': onRemove ? '' : undefined,\n 'data-disabled': disabled || undefined,\n };\n const body = (\n <>\n {icon ? (\n <span className=\"sc-chip__icon\" aria-hidden=\"true\">\n {icon}\n </span>\n ) : null}\n <span className=\"sc-chip__label\">{children}</span>\n </>\n );\n const remove = onRemove ? (\n <button\n type=\"button\"\n className=\"sc-chip__remove\"\n aria-label={removeName}\n disabled={disabled}\n onClick={(event) => {\n event.stopPropagation();\n onRemove();\n }}\n onKeyDown={handleRemoveKey}\n >\n <XIcon size=\"xs\" />\n </button>\n ) : null;\n\n if (interactive) {\n return (\n <span {...shared} {...rest}>\n <button\n type=\"button\"\n className=\"sc-chip__action\"\n aria-pressed={selected}\n disabled={disabled}\n onClick={onClick}\n onKeyDown={handleRemoveKey}\n >\n {body}\n </button>\n {remove}\n </span>\n );\n }\n return (\n <span {...shared} {...rest}>\n {body}\n {remove}\n </span>\n );\n}\n","import {\n type CSSProperties,\n useEffect,\n useRef,\n useState,\n type ComponentPropsWithRef,\n type ReactNode,\n type SyntheticEvent,\n} from 'react';\nimport { ChevronDownIcon } from '../../icons/icons.gen';\nimport { cx } from '../../utils/cx';\n\nexport interface DisclosureProps extends Omit<ComponentPropsWithRef<'details'>, 'open' | 'onToggle'> {\n /** Required. The summary line, a verb phrase: \"Show full description\". */\n summary: ReactNode;\n /** Replaces `summary` while open: \"Show less\". */\n summaryOpen?: ReactNode | undefined;\n /** Controlled open state. */\n open?: boolean | undefined;\n /** Initial open state when uncontrolled. */\n defaultOpen?: boolean | undefined;\n /** Called when the user toggles it. */\n onOpenChange?: ((open: boolean) => void) | undefined;\n /**\n * While closed, shows this many lines of the content fading out, so a long description still reads\n * as a teaser. Puts the summary line under the preview. Needs `::details-content` (2025 browsers);\n * older ones show the summary alone.\n */\n previewLines?: number | undefined;\n /** Puts the summary line above (default) or below the content. Defaults to `end` with `previewLines`. */\n summaryPosition?: 'start' | 'end' | undefined;\n children?: ReactNode | undefined;\n}\n\n/**\n * A native `<details>` collapse with a styled summary. Works without JavaScript, is announced as a\n * disclosure, and shares `name` with siblings for an exclusive group.\n */\nexport function Disclosure({\n summary,\n summaryOpen,\n open,\n defaultOpen = false,\n onOpenChange,\n previewLines,\n summaryPosition,\n className,\n style,\n children,\n ref,\n ...rest\n}: DisclosureProps) {\n const controlled = open !== undefined;\n const [internal, setInternal] = useState(defaultOpen);\n const isOpen = controlled ? open : internal;\n const inner = useRef<HTMLDetailsElement | null>(null);\n // A native toggle flips the element itself; when controlled and the parent declines, put it back.\n useEffect(() => {\n if (controlled && inner.current && inner.current.open !== open) inner.current.open = open;\n });\n const onToggle = (event: SyntheticEvent<HTMLDetailsElement>) => {\n const next = event.currentTarget.open;\n if (next === isOpen) return;\n if (!controlled) setInternal(next);\n onOpenChange?.(next);\n };\n const position = summaryPosition ?? (previewLines ? 'end' : 'start');\n return (\n <details\n ref={(node) => {\n inner.current = node;\n if (typeof ref === 'function') ref(node);\n else if (ref) ref.current = node;\n }}\n className={cx('sc-disclosure', className)}\n open={isOpen}\n onToggle={onToggle}\n data-summary-position={position}\n data-preview={previewLines ? '' : undefined}\n style={previewLines ? ({ ...style, '--_lines': previewLines } as CSSProperties) : style}\n {...rest}\n >\n <summary className=\"sc-disclosure__summary\">\n <ChevronDownIcon className=\"sc-disclosure__chevron\" />\n <span className=\"sc-disclosure__summary-text\">\n {isOpen && summaryOpen != null ? summaryOpen : summary}\n </span>\n </summary>\n <div className=\"sc-disclosure__content\">{children}</div>\n </details>\n );\n}\n","import { createElement, type ComponentPropsWithRef, type ReactNode } from 'react';\nimport { cx } from '../../utils/cx';\n\nexport type EmptyStateSize = 'sm' | 'md';\nexport type EmptyStateElement = 'div' | 'section' | 'li';\n\nexport interface EmptyStateProps extends Omit<ComponentPropsWithRef<'div'>, 'title'> {\n /** Required. What is empty, as a short statement: \"No applications yet\". */\n title: ReactNode;\n /** One sentence on why, or what to do: \"Postings you apply to show up here.\" */\n description?: ReactNode | undefined;\n /** A 24px icon in a muted circle above the title. Decorative. */\n icon?: ReactNode | undefined;\n /** The actions, usually one primary Button and at most one secondary. Rendered in an Inline. */\n children?: ReactNode | undefined;\n /** `md` (default) for a whole view or panel, `sm` inside a Card or a table body. */\n size?: EmptyStateSize | undefined;\n /** Element to render. Default `div`. */\n as?: EmptyStateElement | undefined;\n}\n\n/**\n * Centred placeholder for a view with nothing in it: an icon, a title, a sentence and the action that\n * fills it. Say what is missing and the next step; never apologise.\n */\nexport function EmptyState({\n title,\n description,\n icon,\n children,\n size = 'md',\n as = 'div',\n className,\n ...rest\n}: EmptyStateProps) {\n return createElement(\n as,\n { className: cx('sc-empty-state', className), 'data-size': size, ...rest },\n icon ? (\n <span className=\"sc-empty-state__icon\" aria-hidden=\"true\">\n {icon}\n </span>\n ) : null,\n <p className=\"sc-empty-state__title\">{title}</p>,\n description != null ? <p className=\"sc-empty-state__description\">{description}</p> : null,\n children != null ? <div className=\"sc-empty-state__actions\">{children}</div> : null,\n );\n}\n","import type { ComponentPropsWithRef, CSSProperties } from 'react';\nimport { cx } from '../../utils/cx';\n\nexport type SkeletonVariant = 'text' | 'rect' | 'circle';\n\nexport interface SkeletonProps extends ComponentPropsWithRef<'span'> {\n /** `text` (default) is one line of the current font size; `rect` a block; `circle` an avatar. */\n variant?: SkeletonVariant | undefined;\n /** Any CSS length. Default: text `100%`, rect `100%`, circle `40px`. */\n width?: string | number | undefined;\n /** Any CSS length. Default: text `1em` (one line), rect `80px`, circle = `width`. */\n height?: string | number | undefined;\n /** For `text`: how many lines; the last is shorter. Default 1. */\n lines?: number | undefined;\n /** Hides the shimmer. Default `false`; reduced motion hides it anyway. */\n still?: boolean | undefined;\n}\n\n/**\n * A placeholder shape shown while real content loads. It is hidden from assistive tech: put\n * `aria-busy=\"true\"` on the region being filled, or a `Spinner` with a label beside it, so the loading\n * state is announced once instead of per block.\n */\nexport function Skeleton({\n variant = 'text',\n width,\n height,\n lines = 1,\n still = false,\n className,\n style,\n ...rest\n}: SkeletonProps) {\n const size: CSSProperties = {\n ...style,\n ...(width !== undefined ? { inlineSize: width } : {}),\n ...(height !== undefined ? { blockSize: height } : {}),\n };\n if (variant === 'text' && lines > 1) {\n return (\n <span className={cx('sc-skeleton-lines', className)} aria-hidden=\"true\" style={style} {...rest}>\n {Array.from({ length: lines }, (_, i) => (\n <span\n key={i}\n className=\"sc-skeleton\"\n data-variant=\"text\"\n data-still={still || undefined}\n data-last={i === lines - 1 || undefined}\n style={width !== undefined ? { inlineSize: width } : undefined}\n />\n ))}\n </span>\n );\n }\n return (\n <span\n className={cx('sc-skeleton', className)}\n data-variant={variant}\n data-still={still || undefined}\n aria-hidden=\"true\"\n style={size}\n {...rest}\n />\n );\n}\n","export { Button, type ButtonProps, type ButtonSize, type ButtonVariant } from './components/Button/Button';\nexport {\n Badge,\n type BadgeProps,\n type BadgeSize,\n type BadgeTone,\n type BadgeVariant,\n} from './components/Badge/Badge';\nexport {\n Card,\n type CardElement,\n type CardPadding,\n type CardProps,\n type CardVariant,\n} from './components/Card/Card';\nexport {\n Stack,\n type StackAlign,\n type StackElement,\n type StackJustify,\n type StackProps,\n} from './components/Stack/Stack';\nexport {\n Inline,\n type InlineAlign,\n type InlineElement,\n type InlineJustify,\n type InlineProps,\n} from './components/Inline/Inline';\nexport { Kbd, type KbdGroupProps, type KbdProps } from './components/Kbd/Kbd';\nexport {\n Dialog,\n type DialogActionsProps,\n type DialogBodyProps,\n type DialogCloseProps,\n type DialogContentProps,\n type DialogDescriptionProps,\n type DialogRootProps,\n type DialogSize,\n type DialogTitleProps,\n type DialogVariant,\n} from './components/Dialog/Dialog';\nexport { Icon, type IconGlyphProps, type IconProps, type IconSize } from './components/Icon/Icon';\nexport * from './icons/icons.gen';\nexport { iconNames, type IconName } from './icons/icon-names.gen';\nexport { IconButton, type IconButtonProps } from './components/IconButton/IconButton';\nexport {\n Tooltip,\n type TooltipAlign,\n type TooltipProps,\n type TooltipSide,\n} from './components/Tooltip/Tooltip';\nexport {\n Menu,\n type MenuAlign,\n type MenuCheckboxItemProps,\n type MenuContentProps,\n type MenuGroupProps,\n type MenuItemProps,\n type MenuItemTone,\n type MenuLinkItemProps,\n type MenuRadioGroupProps,\n type MenuRadioItemProps,\n type MenuRootProps,\n type MenuSeparatorProps,\n type MenuSide,\n type MenuTriggerProps,\n} from './components/Menu/Menu';\nexport type { ControlSize, FieldProps } from './components/Field/FieldShell';\nexport { Input, type InputProps } from './components/Input/Input';\nexport { Textarea, type TextareaProps, type TextareaVariant } from './components/Textarea/Textarea';\nexport { Select, type SelectGroup, type SelectOption, type SelectProps } from './components/Select/Select';\nexport { Checkbox, type CheckboxProps } from './components/Checkbox/Checkbox';\nexport { Switch, type SwitchProps } from './components/Switch/Switch';\nexport {\n Tabs,\n type TabsListProps,\n type TabsPanelProps,\n type TabsRootProps,\n type TabsTabProps,\n} from './components/Tabs/Tabs';\nexport {\n Toolbar,\n type ToolbarButtonProps,\n type ToolbarGroupProps,\n type ToolbarLinkProps,\n type ToolbarRootProps,\n type ToolbarSeparatorProps,\n type ToolbarSpacerProps,\n} from './components/Toolbar/Toolbar';\nexport { Banner, type BannerProps, type BannerTone } from './components/Banner/Banner';\nexport { Spinner, type SpinnerProps } from './components/Spinner/Spinner';\nexport {\n Progress,\n type ProgressProps,\n type ProgressSize,\n type ProgressTone,\n type ProgressVariant,\n} from './components/Progress/Progress';\nexport {\n Heading,\n type HeadingElement,\n type HeadingLevel,\n type HeadingProps,\n type HeadingSize,\n type TextTone,\n} from './components/Heading/Heading';\nexport {\n Text,\n type TextAlign,\n type TextElement,\n type TextProps,\n type TextSize,\n type TextWeight,\n} from './components/Text/Text';\nexport {\n Table,\n type TableAlign,\n type TableBodyProps,\n type TableCaptionProps,\n type TableCellProps,\n type TableDensity,\n type TableFootProps,\n type TableHeadProps,\n type TableHeaderProps,\n type TableRootProps,\n type TableRowProps,\n type TableSortDirection,\n} from './components/Table/Table';\nexport {\n Stat,\n type StatDeltaTone,\n type StatElement,\n type StatProps,\n type StatSize,\n type StatTrend,\n type StatVariant,\n} from './components/Stat/Stat';\nexport { Chip, type ChipProps, type ChipSize, type ChipTone } from './components/Chip/Chip';\nexport { Disclosure, type DisclosureProps } from './components/Disclosure/Disclosure';\nexport {\n EmptyState,\n type EmptyStateElement,\n type EmptyStateProps,\n type EmptyStateSize,\n} from './components/EmptyState/EmptyState';\nexport { Skeleton, type SkeletonProps, type SkeletonVariant } from './components/Skeleton/Skeleton';\nexport type { SpacingSize } from './types';\nexport const version = '0.1.1';\n"],"mappings":"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","names":["jsx","jsxs","createElement","createElement","jsx","jsxs","jsx","jsx","jsxs","jsx","jsxs","useRender","jsx","jsxs","Fragment","jsx","jsxs","useRender","Fragment","jsx","jsxs","Root","Trigger","Content","Field","jsx","jsxs","jsx","jsxs","Field","Field","jsx","Field","jsx","jsxs","jsx","jsxs","useId","jsx","jsxs","useId","Fragment","jsx","jsxs","Root","jsx","Root","Group","Separator","Button","useState","jsx","jsxs","useState","jsx","jsxs","jsx","jsxs","createElement","createElement","createElement","createElement","jsx","jsxs","Root","Body","createElement","Fragment","jsx","jsxs","createElement","Fragment","jsx","jsxs","useState","jsx","jsxs","useState","createElement","jsx","createElement","jsx"]}
package/dist/styles.css CHANGED
@@ -1,4 +1,4 @@
1
- /* @salemcobalt/ui 0.2.0-rc.5 — requires @salemcobalt/tokens/css. */
1
+ /* @salemcobalt/ui 0.2.0-rc.7 — requires @salemcobalt/tokens/css. */
2
2
  @layer sc {
3
3
  /* ---- base.css ---- */
4
4
  /* Shared: focus ring, reduced motion. Component files follow. */
@@ -514,6 +514,9 @@
514
514
  --_p: var(--sc-spacing-lg);
515
515
  }
516
516
  .sc-card[data-variant='elevated'] {
517
+ /* Hover and pressed washes inside a raised surface use the raised tokens, so they show against it (docs/adr/0003). */
518
+ --sc-color-surface-hover: var(--sc-color-surface-raised-hover);
519
+ --sc-color-surface-active: var(--sc-color-surface-raised-active);
517
520
  box-shadow: var(--sc-elevation-1);
518
521
  border-color: transparent;
519
522
  }
@@ -750,6 +753,9 @@
750
753
  padding: var(--sc-spacing-lg);
751
754
  border-radius: var(--sc-radius-xl);
752
755
  background: var(--sc-color-surface-raised);
756
+ /* Hover and pressed washes inside a raised surface use the raised tokens, so they show against it (docs/adr/0003). */
757
+ --sc-color-surface-hover: var(--sc-color-surface-raised-hover);
758
+ --sc-color-surface-active: var(--sc-color-surface-raised-active);
753
759
  color: var(--sc-color-text-default);
754
760
  border: var(--sc-border-width-hairline) solid var(--sc-color-border-default);
755
761
  box-shadow: var(--sc-elevation-3);
@@ -1007,6 +1013,9 @@
1007
1013
  padding: var(--sc-spacing-2xs);
1008
1014
  border-radius: var(--sc-radius-lg);
1009
1015
  background: var(--sc-color-surface-raised);
1016
+ /* Hover and pressed washes inside a raised surface use the raised tokens, so they show against it (docs/adr/0003). */
1017
+ --sc-color-surface-hover: var(--sc-color-surface-raised-hover);
1018
+ --sc-color-surface-active: var(--sc-color-surface-raised-active);
1010
1019
  color: var(--sc-color-text-default);
1011
1020
  border: var(--sc-border-width-hairline) solid var(--sc-color-border-default);
1012
1021
  box-shadow: var(--sc-elevation-2);
@@ -1042,7 +1051,7 @@
1042
1051
  border-radius: var(--sc-radius-sm);
1043
1052
  color: var(--sc-color-text-default);
1044
1053
  text-decoration: none;
1045
- cursor: default;
1054
+ cursor: pointer;
1046
1055
  user-select: none;
1047
1056
  outline: 0;
1048
1057
  }
@@ -1398,6 +1407,9 @@
1398
1407
  padding: var(--sc-spacing-2xs);
1399
1408
  border-radius: var(--sc-radius-lg);
1400
1409
  background: var(--sc-color-surface-raised);
1410
+ /* Hover and pressed washes inside a raised surface use the raised tokens, so they show against it (docs/adr/0003). */
1411
+ --sc-color-surface-hover: var(--sc-color-surface-raised-hover);
1412
+ --sc-color-surface-active: var(--sc-color-surface-raised-active);
1401
1413
  color: var(--sc-color-text-default);
1402
1414
  border: var(--sc-border-width-hairline) solid var(--sc-color-border-default);
1403
1415
  box-shadow: var(--sc-elevation-2);
@@ -1425,7 +1437,7 @@
1425
1437
  padding-inline: var(--sc-spacing-xs);
1426
1438
  padding-block: var(--sc-spacing-2xs);
1427
1439
  border-radius: var(--sc-radius-sm);
1428
- cursor: default;
1440
+ cursor: pointer;
1429
1441
  user-select: none;
1430
1442
  outline: 0;
1431
1443
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salemcobalt/ui",
3
- "version": "0.2.0-rc.5",
3
+ "version": "0.2.0-rc.7",
4
4
  "description": "React components for the Salem Cobalt design system: Button, IconButton, Icon set, Badge, Card, Stack, Inline, Kbd, Dialog, Tooltip, Menu, Toolbar, Banner, Spinner, Progress, Tabs, Input, Textarea, Select, Checkbox, Switch, Heading, Text, Table, Stat, Chip, Disclosure, EmptyState, Skeleton.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -33,7 +33,7 @@
33
33
  "peerDependencies": {
34
34
  "react": "^19.0.0",
35
35
  "react-dom": "^19.0.0",
36
- "@salemcobalt/tokens": "^0.2.0-rc.5"
36
+ "@salemcobalt/tokens": "^0.2.0-rc.7"
37
37
  },
38
38
  "dependencies": {
39
39
  "@base-ui/react": "^1.9.0",
@@ -56,7 +56,7 @@
56
56
  "tsup": "^9.0.0",
57
57
  "typescript": "^5.9.3",
58
58
  "vitest": "^5.0.5",
59
- "@salemcobalt/tokens": "^0.2.0-rc.5"
59
+ "@salemcobalt/tokens": "^0.2.0-rc.7"
60
60
  },
61
61
  "publishConfig": {
62
62
  "access": "public"