silicaui-react 0.1.0 → 0.2.0

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.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/lib/cx.ts","../src/lib/merge-props.ts","../src/lib/config.tsx","../src/button.tsx","../src/badge.tsx","../src/input.tsx","../src/native-select.tsx","../src/textarea.tsx","../src/card.tsx","../src/alert.tsx","../src/progress.tsx","../src/avatar.tsx","../src/skeleton.tsx","../src/table.tsx","../src/divider.tsx","../src/kbd.tsx","../src/breadcrumb.tsx","../src/stat.tsx","../src/steps.tsx","../src/join.tsx","../src/menu.tsx","../src/collapse.tsx","../src/indicator.tsx","../src/loading.tsx","../src/prose.tsx","../src/typography.tsx","../src/navbar.tsx","../src/footer.tsx","../src/hero.tsx","../src/link.tsx","../src/mockup.tsx","../src/timeline.tsx","../src/carousel.tsx","../src/stack.tsx","../src/rating.tsx","../src/radial-progress.tsx","../src/pagination.tsx","../src/accordion.tsx","../src/chat.tsx","../src/range.tsx","../src/toast.tsx","../src/swap.tsx","../src/status.tsx","../src/countdown.tsx","../src/number-field.tsx","../src/drawer.tsx","../src/list.tsx","../src/file-input.tsx","../src/dock.tsx","../src/fieldset.tsx","../src/label.tsx","../src/validator.tsx","../src/diff.tsx","../src/mask.tsx","../src/meter.tsx","../src/scroll-area.tsx","../src/preview-card.tsx","../src/toolbar.tsx","../src/theme-controller.tsx","../src/navigation-menu.tsx","../src/menubar.tsx","../src/context-menu.tsx","../src/toggle-group.tsx","../src/field.tsx","../src/form.tsx","../src/radio-group.tsx","../src/checkbox-group.tsx","../src/slider.tsx","../src/switch.tsx","../src/collapsible.tsx","../src/alert-dialog.tsx","../src/filter.tsx","../src/select.tsx","../src/combobox.tsx","../src/autocomplete.tsx","../src/calendar.tsx","../src/date-picker.tsx","../src/tooltip.tsx","../src/dialog.tsx","../src/popover.tsx","../src/dropdown-menu.tsx","../src/tabs.tsx","../src/checkbox.tsx","../src/radio.tsx","../src/toggle.tsx","../src/tag-input.tsx","../src/empty-state.tsx","../src/lib/oklch.ts","../src/color-picker.tsx","../src/command-palette.tsx","../src/tree-view.tsx","../src/dropzone.tsx","../src/wizard.tsx"],"names":["React","React2","Button","jsx","React3","Badge","React4","Input","React5","NativeSelect","React6","Textarea","React7","Card","CardBody","CardTitle","CardActions","React8","Alert","AlertContent","AlertTitle","AlertDescription","AlertActions","React9","Progress","React10","Avatar","AvatarGroup","React11","Skeleton","React12","Table","React13","Divider","React14","Kbd","React15","Breadcrumb","React16","Stats","Stat","StatTitle","StatValue","StatDesc","StatFigure","React17","Steps","Step","React18","Join","React19","Menu","MenuItem","MenuTitle","React20","Collapse","CollapseTitle","CollapseContent","React21","Indicator","IndicatorItem","React22","Loading","React23","Prose","React24","Heading","Display","Text","React25","Navbar","NavbarStart","NavbarCenter","NavbarEnd","React26","Footer","FooterTitle","React27","Hero","HeroContent","HeroOverlay","React28","Link","React29","MockupWindow","MockupBrowser","jsxs","MockupCode","MockupCodeLine","MockupPhone","React30","Timeline","TimelineItem","TimelineStart","TimelineMiddle","TimelineEnd","React31","CarouselItem","React32","React33","React34","RadialProgress","PrevIcon","NextIcon","BaseAccordion","React37","Chat","ChatImage","ChatHeader","ChatFooter","ChatBubble","BaseSlider","BaseToast","React40","React41","Status","React42","BaseNumberField","BaseDialog","React45","List","ListRow","ListColGrow","ListTitle","React46","FileInput","React47","Dock","DockItem","DockLabel","React48","Fieldset","FieldsetLegend","FieldsetLabel","React49","Label","FloatingLabel","React50","Fragment","ValidatorHint","React51","Diff","React52","Mask","React53","Meter","BaseMeter","React54","ScrollArea","BaseScrollArea","BasePreviewCard","React56","Toolbar","BaseToolbar","ToolbarButton","ToolbarGroup","ToolbarLink","ToolbarSeparator","React57","BaseNav","React58","NavigationMenuItem","NavigationMenuTrigger","NavigationMenuContent","NavigationMenuLink","React59","Menubar","BaseMenubar","BaseMenu","MenubarTrigger","BaseContextMenu","React60","ContextMenuTrigger","React61","ToggleGroup","BaseToggleGroup","ToggleGroupItem","BaseToggle","React62","Field","BaseField","FieldLabel","FieldControl","FieldDescription","FieldError","React63","Form","BaseForm","React64","React65","React66","Slider","React67","Switch","BaseSwitch","ChevronIcon","BaseCollapsible","asRender","BaseAlertDialog","React70","CloseIcon","FilterItem","BaseSelect","ChevronDownIcon","CheckIcon","BaseCombobox","XIcon","BaseAutocomplete","range","BasePopover","React75","BaseTooltip","BaseTabs","React81","Checkbox","React82","Radio","React83","Toggle","React84","TagInput","React85","EmptyState","clamp","React86","ColorPicker","React87","React88","TreeView","React89","Dropzone","React90","Wizard"],"mappings":"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","file":"index.js","sourcesContent":["/** Tiny className joiner. Falsy parts are dropped. */\nexport function cx(\n ...parts: Array<string | false | null | undefined>\n): string {\n return parts.filter(Boolean).join(\" \");\n}\n","import { cx } from \"./cx\";\n\ntype Props = Record<string, unknown>;\n\n/**\n * Merge Silica's own props (`ours`) with the props of a user-supplied element\n * passed via `render` (`theirs`).\n *\n * Rules:\n * - `className` is concatenated (ours first).\n * - `style` is shallow-merged (theirs wins on conflict).\n * - `on*` event handlers present on both are composed (ours runs, then theirs).\n * - `children` defaults to ours (the button's label) unless we have none.\n * - Everything else: theirs wins, so `<Button render={<a href=\"…\" />}>` keeps\n * its own `href`, `target`, etc.\n */\nexport function mergeProps(ours: Props, theirs: Props): Props {\n const merged: Props = { ...ours, ...theirs };\n\n merged.className = cx(ours.className as string, theirs.className as string);\n\n if (ours.style || theirs.style) {\n merged.style = { ...(ours.style as object), ...(theirs.style as object) };\n }\n\n if (ours.children != null) {\n merged.children = ours.children;\n }\n\n for (const key of Object.keys(theirs)) {\n if (\n /^on[A-Z]/.test(key) &&\n typeof theirs[key] === \"function\" &&\n typeof ours[key] === \"function\"\n ) {\n const a = ours[key] as (...args: unknown[]) => void;\n const b = theirs[key] as (...args: unknown[]) => void;\n merged[key] = (...args: unknown[]) => {\n a(...args);\n b(...args);\n };\n }\n }\n\n return merged;\n}\n","import * as React from \"react\";\n\n/**\n * Runtime configuration shared by all Silica React components.\n *\n * `prefix` MUST match the `prefix` you set on `@plugin \"silicaui\"` in your CSS.\n * The CSS plugin emits `.<prefix>btn`; these components rebuild those class\n * names at runtime, so both sides have to agree on the prefix.\n */\nexport interface SilicaConfig {\n /** Prepended verbatim to every Silica class (e.g. `\"sx-\"` → `sx-btn`). */\n prefix: string;\n}\n\nconst DEFAULT_CONFIG: SilicaConfig = { prefix: \"\" };\n\nconst SilicaConfigContext = React.createContext<SilicaConfig>(DEFAULT_CONFIG);\n\nexport interface SilicaProviderProps extends Partial<SilicaConfig> {\n children: React.ReactNode;\n}\n\n/**\n * Provides Silica config to the components beneath it. Providers may be nested —\n * a client-site subtree can run under `prefix=\"st-\"` inside a platform shell on\n * `prefix=\"sx-\"`, and each Silica component picks up its nearest provider.\n *\n * <SilicaProvider prefix=\"sx-\">\n * <App />\n * </SilicaProvider>\n */\nexport function SilicaProvider({ prefix = \"\", children }: SilicaProviderProps) {\n const value = React.useMemo<SilicaConfig>(() => ({ prefix }), [prefix]);\n return (\n <SilicaConfigContext.Provider value={value}>\n {children}\n </SilicaConfigContext.Provider>\n );\n}\n\n/** Read the full Silica config from context (defaults to `{ prefix: \"\" }`). */\nexport function useSilicaConfig(): SilicaConfig {\n return React.useContext(SilicaConfigContext);\n}\n\n/**\n * Returns a class-name builder bound to the active prefix. `cn(\"btn\")` →\n * `\"sx-btn\"` when a `prefix=\"sx-\"` provider is in scope, or `\"btn\"` otherwise.\n * Passing a nullish/false value returns it unchanged, so it composes with the\n * same conditional style the components already use.\n */\nexport function useSilicaClass(): (name: string | false | null | undefined) => string | false | null | undefined {\n const { prefix } = React.useContext(SilicaConfigContext);\n return React.useCallback(\n (name) => (name ? `${prefix}${name}` : name),\n [prefix],\n );\n}\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { mergeProps } from \"./lib/merge-props\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor, SilicaSize } from \"./lib/tokens\";\n\n/** Semantic or custom color. Alias of the shared {@link SilicaColor}. */\nexport type ButtonColor = SilicaColor;\n\nexport type ButtonVariant =\n | \"solid\"\n | \"outline\"\n | \"soft\"\n | \"ghost\"\n | \"link\"\n | \"dash\";\n\nexport type ButtonSize = SilicaSize;\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n /** Semantic or custom color; maps to `btn-<color>`. */\n color?: ButtonColor;\n /** How the color is applied. Default `solid`. */\n variant?: ButtonVariant;\n /** Default `md`. */\n size?: ButtonSize;\n /** Icon-only button shape. */\n shape?: \"square\" | \"circle\";\n /** Full-width. */\n block?: boolean;\n /** Extra-wide. */\n wide?: boolean;\n /** Force the pressed look. */\n active?: boolean;\n /** Show a spinner, set `aria-busy`, and make the button non-interactive. */\n loading?: boolean;\n iconStart?: React.ReactNode;\n iconEnd?: React.ReactNode;\n /**\n * Render as a different element (e.g. an anchor or router link) while keeping\n * Silica's classes and behavior. Mirrors Base UI's `render` composition model.\n *\n * <Button render={<a href=\"/docs\" />}>Docs</Button>\n */\n render?: React.ReactElement;\n}\n\n/**\n * Silica Button — a thin wrapper that applies Silica's `btn` classes. It's a\n * presentational component, so it doesn't pull in a headless primitive; the\n * `render` prop covers polymorphism.\n */\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n function Button(\n {\n color,\n variant = \"solid\",\n size = \"md\",\n shape,\n block,\n wide,\n active,\n loading,\n disabled,\n iconStart,\n iconEnd,\n render,\n className,\n children,\n type,\n ...rest\n },\n ref,\n ) {\n // Bound to the active <SilicaProvider prefix>, so `sc(\"btn\")` → `sx-btn`.\n // `className` (the user's own utilities) is passed through untouched.\n const sc = useSilicaClass();\n const classes = cx(\n sc(\"btn\"),\n color && sc(`btn-${color}`),\n variant !== \"solid\" && sc(`btn-${variant}`),\n size !== \"md\" && sc(`btn-${size}`),\n shape && sc(`btn-${shape}`),\n block && sc(\"btn-block\"),\n wide && sc(\"btn-wide\"),\n active && sc(\"btn-active\"),\n className,\n );\n\n const isDisabled = Boolean(disabled) || Boolean(loading);\n const content = (\n <>\n {iconStart}\n {children}\n {iconEnd}\n </>\n );\n\n // Polymorphic path: render the user's element with our props merged in.\n if (render) {\n const ownProps: Record<string, unknown> = {\n ...rest,\n className: classes,\n children: content,\n ref,\n \"aria-busy\": loading || undefined,\n \"aria-disabled\": isDisabled || undefined,\n \"data-disabled\": isDisabled ? \"\" : undefined,\n };\n return React.cloneElement(\n render,\n mergeProps(ownProps, render.props as Record<string, unknown>),\n );\n }\n\n return (\n <button\n ref={ref}\n type={type ?? \"button\"}\n className={classes}\n disabled={isDisabled}\n aria-busy={loading || undefined}\n {...rest}\n >\n {content}\n </button>\n );\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { mergeProps } from \"./lib/merge-props\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor, SilicaSize } from \"./lib/tokens\";\n\nexport type BadgeColor = SilicaColor;\n\nexport type BadgeVariant = \"solid\" | \"outline\" | \"soft\" | \"ghost\" | \"dash\";\n\nexport type BadgeSize = SilicaSize;\n\nexport interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {\n /** Semantic or custom color; maps to `badge-<color>`. */\n color?: BadgeColor;\n /** How the color is applied. Default `solid`. */\n variant?: BadgeVariant;\n /** Default `md`. */\n size?: BadgeSize;\n /** Render as a different element while keeping Silica's classes. */\n render?: React.ReactElement;\n}\n\n/**\n * Silica Badge — a small pill for labels, counts, and statuses. Presentational;\n * `render` covers polymorphism (e.g. wrap a link).\n */\nexport const Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n function Badge(\n { color, variant = \"solid\", size = \"md\", render, className, children, ...rest },\n ref,\n ) {\n const sc = useSilicaClass();\n const classes = cx(\n sc(\"badge\"),\n color && sc(`badge-${color}`),\n variant !== \"solid\" && sc(`badge-${variant}`),\n size !== \"md\" && sc(`badge-${size}`),\n className,\n );\n\n if (render) {\n const ownProps: Record<string, unknown> = {\n ...rest,\n className: classes,\n children,\n ref,\n };\n return React.cloneElement(\n render,\n mergeProps(ownProps, render.props as Record<string, unknown>),\n );\n }\n\n return (\n <span ref={ref} className={classes} {...rest}>\n {children}\n </span>\n );\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor, SilicaSize } from \"./lib/tokens\";\n\nexport type InputColor = SilicaColor;\n\nexport type InputSize = SilicaSize;\n\nexport interface InputProps\n // Omit the native numeric `size` and string `color` so our token unions win.\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\" | \"color\"> {\n /** Accent color; maps to `input-<color>` (border + focus ring). */\n color?: InputColor;\n /** Default `md`. Matches same-size Button heights. */\n size?: InputSize;\n}\n\n/**\n * Silica Input — a single-line text field. Thin, presentational wrapper around a\n * native `<input>`, so all native attributes (`type`, `value`, `onChange`,\n * `placeholder`, `disabled`, …) pass straight through.\n */\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(\n function Input({ color, size = \"md\", className, type, ...rest }, ref) {\n const sc = useSilicaClass();\n const classes = cx(\n sc(\"input\"),\n color && sc(`input-${color}`),\n size !== \"md\" && sc(`input-${size}`),\n className,\n );\n\n return (\n <input ref={ref} type={type ?? \"text\"} className={classes} {...rest} />\n );\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor, SilicaSize } from \"./lib/tokens\";\n\nexport type NativeSelectColor = SilicaColor;\n\nexport type NativeSelectSize = SilicaSize;\n\nexport interface NativeSelectProps\n // Omit the native numeric `size` and string `color` so our token unions win.\n extends Omit<React.SelectHTMLAttributes<HTMLSelectElement>, \"size\" | \"color\"> {\n /** Accent color; maps to `select-<color>` (border + focus ring). */\n color?: NativeSelectColor;\n /** Default `md`. Matches same-size Input/Button heights. */\n size?: NativeSelectSize;\n}\n\n/**\n * Silica NativeSelect — a native `<select>` restyled to the field tier. Thin,\n * presentational wrapper: pass `<option>`s as children and all native\n * attributes (`value`, `defaultValue`, `onChange`, `disabled`, …) through.\n *\n * For a rich, searchable, fully-styled listbox (custom popup, groups, keyboard\n * typeahead, multi-select), use `Select` (the Base UI listbox) instead.\n */\nexport const NativeSelect = React.forwardRef<\n HTMLSelectElement,\n NativeSelectProps\n>(function NativeSelect({ color, size = \"md\", className, children, ...rest }, ref) {\n const sc = useSilicaClass();\n const classes = cx(\n sc(\"select\"),\n color && sc(`select-${color}`),\n size !== \"md\" && sc(`select-${size}`),\n className,\n );\n\n return (\n <select ref={ref} className={classes} {...rest}>\n {children}\n </select>\n );\n});\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor, SilicaSize } from \"./lib/tokens\";\n\nexport type TextareaColor = SilicaColor;\n\nexport type TextareaSize = SilicaSize;\n\nexport interface TextareaProps\n // Omit the native string `color` so our token union wins.\n extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, \"color\"> {\n /** Accent color; maps to `textarea-<color>` (border + focus ring). */\n color?: TextareaColor;\n /** Default `md`. */\n size?: TextareaSize;\n}\n\n/**\n * Silica Textarea — a multi-line text field. Thin, presentational wrapper around\n * a native `<textarea>`, so all native attributes (`value`, `rows`, `onChange`,\n * `placeholder`, `disabled`, …) pass straight through.\n */\nexport const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n function Textarea({ color, size = \"md\", className, ...rest }, ref) {\n const sc = useSilicaClass();\n const classes = cx(\n sc(\"textarea\"),\n color && sc(`textarea-${color}`),\n size !== \"md\" && sc(`textarea-${size}`),\n className,\n );\n\n return <textarea ref={ref} className={classes} {...rest} />;\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport type CardProps = React.HTMLAttributes<HTMLDivElement>;\n\n/**\n * Silica Card — a surface container. Compose it from parts:\n *\n * <Card>\n * <figure><img src={cover} alt=\"\" /></figure>\n * <CardBody>\n * <CardTitle>Heading</CardTitle>\n * <p>Body copy…</p>\n * <CardActions>\n * <Button color=\"primary\">Action</Button>\n * </CardActions>\n * </CardBody>\n * </Card>\n */\nexport const Card = React.forwardRef<HTMLDivElement, CardProps>(\n function Card({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <div ref={ref} className={cx(sc(\"card\"), className)} {...rest} />;\n },\n);\n\n/** Padded content stack inside a Card. */\nexport const CardBody = React.forwardRef<HTMLDivElement, CardProps>(\n function CardBody({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <div ref={ref} className={cx(sc(\"card-body\"), className)} {...rest} />;\n },\n);\n\n/** Card heading. Renders a `div` — pair with your own heading level if needed. */\nexport const CardTitle = React.forwardRef<HTMLDivElement, CardProps>(\n function CardTitle({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <div ref={ref} className={cx(sc(\"card-title\"), className)} {...rest} />;\n },\n);\n\n/** Right-aligned action row (buttons, links) at the bottom of a Card body. */\nexport const CardActions = React.forwardRef<HTMLDivElement, CardProps>(\n function CardActions({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <div ref={ref} className={cx(sc(\"card-actions\"), className)} {...rest} />\n );\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor, SilicaSize } from \"./lib/tokens\";\n\nexport type AlertColor = SilicaColor;\n\nexport type AlertSize = SilicaSize;\n\nexport type AlertVariant = \"solid\" | \"soft\" | \"outline\" | \"dash\";\n\nexport interface AlertProps\n // Omit the native string `color` so our token union wins.\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"color\"> {\n /** Semantic color; maps to `alert-<color>`. Omit for a neutral surface. */\n color?: AlertColor;\n /** Visual style. Default `solid`. */\n variant?: AlertVariant;\n /** Default `md`. */\n size?: AlertSize;\n}\n\n/**\n * Silica Alert — a feedback surface. Compose it from parts, like Card:\n *\n * // One-liner: icon + message\n * <Alert color=\"success\"><CheckIcon /> Your changes were saved.</Alert>\n *\n * // Structured: title + description + trailing actions\n * <Alert color=\"error\">\n * <XIcon />\n * <AlertContent>\n * <AlertTitle>Upload failed</AlertTitle>\n * <AlertDescription>The file exceeds the 5 MB limit.</AlertDescription>\n * </AlertContent>\n * <AlertActions>\n * <Button size=\"sm\" color=\"error\" variant=\"soft\">Retry</Button>\n * </AlertActions>\n * </Alert>\n *\n * A leading `<svg>` child is sized automatically. Defaults to `role=\"alert\"`\n * (assertive); pass `role=\"status\"` for a quieter, non-interrupting announcement.\n */\nexport const Alert = React.forwardRef<HTMLDivElement, AlertProps>(\n function Alert({ color, variant = \"solid\", size = \"md\", className, ...rest }, ref) {\n const sc = useSilicaClass();\n const classes = cx(\n sc(\"alert\"),\n color && sc(`alert-${color}`),\n variant !== \"solid\" && sc(`alert-${variant}`),\n size !== \"md\" && sc(`alert-${size}`),\n className,\n );\n return <div ref={ref} role=\"alert\" className={classes} {...rest} />;\n },\n);\n\n/** Growing middle column of an Alert — holds the title + description. */\nexport const AlertContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(function AlertContent({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <div ref={ref} className={cx(sc(\"alert-content\"), className)} {...rest} />\n );\n});\n\n/** Bold heading line of an Alert. */\nexport const AlertTitle = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(function AlertTitle({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <div ref={ref} className={cx(sc(\"alert-title\"), className)} {...rest} />\n );\n});\n\n/** Secondary message line under an AlertTitle. */\nexport const AlertDescription = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(function AlertDescription({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <div\n ref={ref}\n className={cx(sc(\"alert-description\"), className)}\n {...rest}\n />\n );\n});\n\n/** Trailing action group (buttons, links) at the end of an Alert row. */\nexport const AlertActions = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(function AlertActions({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <div ref={ref} className={cx(sc(\"alert-actions\"), className)} {...rest} />\n );\n});\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor, SilicaSize } from \"./lib/tokens\";\n\nexport type ProgressColor = SilicaColor;\n\nexport type ProgressSize = SilicaSize;\n\nexport interface ProgressProps\n // Omit the native string `color` so our token union wins.\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"color\" | \"children\"> {\n /** Fill color; maps to `progress-<color>`. Omit for a neutral bar. */\n color?: ProgressColor;\n /** Default `md`. Height lines up with same-size fields. */\n size?: ProgressSize;\n /**\n * Current value, from 0 to `max`. Omit entirely for an indeterminate\n * (unknown-duration) loading bar.\n */\n value?: number;\n /** Upper bound of `value`. Default `100`. */\n max?: number;\n}\n\n/**\n * Silica Progress — a task-completion bar (div-based, so it renders identically\n * across engines; see the CSS component for why not native `<progress>`).\n *\n * <Progress value={60} /> // 60%\n * <Progress color=\"success\" value={3} max={4} />\n * <Progress /> // indeterminate\n *\n * Exposes the ARIA `progressbar` role with the right value bounds; an\n * indeterminate bar omits `aria-valuenow` so assistive tech announces it as\n * busy rather than a fixed percentage.\n */\nexport const Progress = React.forwardRef<HTMLDivElement, ProgressProps>(\n function Progress({ color, size = \"md\", value, max = 100, className, ...rest }, ref) {\n const sc = useSilicaClass();\n const indeterminate = value == null;\n\n // Clamp to [0, max] and guard a zero/negative max before dividing.\n const pct =\n indeterminate || max <= 0\n ? 0\n : Math.max(0, Math.min(100, (value / max) * 100));\n\n const classes = cx(\n sc(\"progress\"),\n color && sc(`progress-${color}`),\n size !== \"md\" && sc(`progress-${size}`),\n indeterminate && sc(\"progress-indeterminate\"),\n className,\n );\n\n return (\n <div\n ref={ref}\n role=\"progressbar\"\n aria-valuemin={0}\n aria-valuemax={max}\n aria-valuenow={indeterminate ? undefined : value}\n className={classes}\n {...rest}\n >\n <div\n className={cx(sc(\"progress-bar\"))}\n style={indeterminate ? undefined : { width: `${pct}%` }}\n />\n </div>\n );\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor, SilicaSize } from \"./lib/tokens\";\n\nexport type AvatarColor = SilicaColor;\n\nexport type AvatarSize = SilicaSize;\n\nexport type AvatarShape = \"circle\" | \"rounded\";\n\nexport type AvatarStatus = \"online\" | \"offline\";\n\nexport interface AvatarProps\n // Omit the native string `color` so our token union wins.\n extends Omit<React.HTMLAttributes<HTMLSpanElement>, \"color\"> {\n /** Fallback-chip + ring color; maps to `avatar-<color>`. */\n color?: AvatarColor;\n /** Default `md`. */\n size?: AvatarSize;\n /** `circle` (default) or a `rounded` square. */\n shape?: AvatarShape;\n /** Draw an accent ring with a base-100 gap. */\n ring?: boolean;\n /** Presence dot in the corner. */\n status?: AvatarStatus;\n /** Photo URL. If it fails to load, the fallback `children` show instead. */\n src?: string;\n /** Accessible label for the photo / the initials fallback. */\n alt?: string;\n}\n\n/**\n * Silica Avatar — a photo, or an initials/icon fallback on a colored chip.\n *\n * <Avatar src={url} alt=\"Jane Doe\">JD</Avatar> // photo, falls back to \"JD\"\n * <Avatar color=\"primary\" alt=\"Ada Lovelace\">AL</Avatar> // initials chip\n * <Avatar color=\"accent\"><UserIcon /></Avatar> // icon fallback\n *\n * `children` are the fallback shown when there's no `src` or the image errors.\n * When falling back to initials with an `alt`, the container is exposed as an\n * `img` with that label so assistive tech announces the person, not \"JD\".\n */\nexport const Avatar = React.forwardRef<HTMLSpanElement, AvatarProps>(\n function Avatar(\n { color, size = \"md\", shape = \"circle\", ring = false, status, src, alt, className, children, ...rest },\n ref,\n ) {\n const sc = useSilicaClass();\n const [failed, setFailed] = React.useState(false);\n // A new src gets a fresh chance to load before we fall back again.\n React.useEffect(() => setFailed(false), [src]);\n const showImg = Boolean(src) && !failed;\n\n const classes = cx(\n sc(\"avatar\"),\n color && sc(`avatar-${color}`),\n size !== \"md\" && sc(`avatar-${size}`),\n shape === \"rounded\" && sc(\"avatar-rounded\"),\n ring && sc(\"avatar-ring\"),\n status && sc(`avatar-${status}`),\n className,\n );\n\n return (\n <span\n ref={ref}\n className={classes}\n // Label the initials fallback so it reads as the named person.\n role={!showImg && alt ? \"img\" : undefined}\n aria-label={!showImg ? alt : undefined}\n {...rest}\n >\n {showImg ? (\n <img src={src} alt={alt ?? \"\"} onError={() => setFailed(true)} />\n ) : (\n children\n )}\n </span>\n );\n },\n);\n\n/** Overlapping row of Avatars (`<Avatar>` children stack with a base-100 gap). */\nexport const AvatarGroup = React.forwardRef<\n HTMLSpanElement,\n React.HTMLAttributes<HTMLSpanElement>\n>(function AvatarGroup({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <span ref={ref} className={cx(sc(\"avatar-group\"), className)} {...rest} />\n );\n});\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport type SkeletonShape = \"block\" | \"circle\" | \"text\";\n\nexport interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * `block` (default, `--radius-field`), `circle` (avatar/dot placeholder), or\n * `text` (a pill-rounded line sized in `em`). Give it dimensions with\n * utilities or inline `style`.\n */\n shape?: SkeletonShape;\n}\n\n/**\n * Silica Skeleton — an animated placeholder for loading content.\n *\n * <Skeleton className=\"h-32 w-full\" /> // block\n * <Skeleton shape=\"circle\" className=\"h-12 w-12\" /> // avatar placeholder\n * <Skeleton shape=\"text\" className=\"w-40\" /> // one line of text\n *\n * Owns only the fill, radius, and shimmer — size it yourself. Marked\n * `aria-hidden` by default (it's decorative; announce loading with an\n * `aria-busy` region around it); override via props if you need otherwise.\n */\nexport const Skeleton = React.forwardRef<HTMLDivElement, SkeletonProps>(\n function Skeleton({ shape = \"block\", className, ...rest }, ref) {\n const sc = useSilicaClass();\n const classes = cx(\n sc(\"skeleton\"),\n shape === \"circle\" && sc(\"skeleton-circle\"),\n shape === \"text\" && sc(\"skeleton-text\"),\n className,\n );\n return <div ref={ref} aria-hidden className={classes} {...rest} />;\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaSize } from \"./lib/tokens\";\n\nexport type TableSize = SilicaSize;\n\nexport interface TableProps\n extends React.TableHTMLAttributes<HTMLTableElement> {\n /** Striped rows. */\n zebra?: boolean;\n /** Highlight the row under the cursor. */\n hover?: boolean;\n /** Default `md`. Scales cell padding + type. */\n size?: TableSize;\n /** Class for the horizontal-scroll wrapper (the outer `<div>`). */\n wrapperClassName?: string;\n}\n\n/**\n * Silica Table — a styled `<table>`. Compose it from plain semantic rows; the\n * CSS styles the native elements, so no per-cell classes are needed:\n *\n * <Table zebra hover>\n * <thead>\n * <tr><th>Name</th><th>Role</th></tr>\n * </thead>\n * <tbody>\n * <tr><td>Ada</td><td>Engineer</td></tr>\n * </tbody>\n * </Table>\n *\n * Auto-wrapped in an `overflow-x: auto` container so a wide table scrolls\n * instead of blowing out the page; `ref`/`className` land on the `<table>`.\n */\nexport const Table = React.forwardRef<HTMLTableElement, TableProps>(\n function Table(\n { zebra = false, hover = false, size = \"md\", className, wrapperClassName, ...rest },\n ref,\n ) {\n const sc = useSilicaClass();\n const classes = cx(\n sc(\"table\"),\n zebra && sc(\"table-zebra\"),\n hover && sc(\"table-hover\"),\n size !== \"md\" && sc(`table-${size}`),\n className,\n );\n return (\n <div className={wrapperClassName} style={{ overflowX: \"auto\" }}>\n <table ref={ref} className={classes} {...rest} />\n </div>\n );\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport type DividerOrientation = \"horizontal\" | \"vertical\";\n\nexport interface DividerProps extends React.HTMLAttributes<HTMLDivElement> {\n /** `horizontal` (default) or `vertical` (for row layouts). */\n orientation?: DividerOrientation;\n}\n\n/**\n * Silica Divider — a plain or labeled separator.\n *\n * <Divider /> // plain rule\n * <Divider>OR</Divider> // centered label with rules on each side\n * <Divider orientation=\"vertical\" /> // vertical rule inside a flex row\n */\nexport const Divider = React.forwardRef<HTMLDivElement, DividerProps>(\n function Divider({ orientation = \"horizontal\", className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <div\n ref={ref}\n role=\"separator\"\n className={cx(\n sc(\"divider\"),\n orientation === \"vertical\" && sc(\"divider-vertical\"),\n className,\n )}\n {...rest}\n />\n );\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaSize } from \"./lib/tokens\";\n\nexport type KbdSize = SilicaSize;\n\nexport interface KbdProps extends React.HTMLAttributes<HTMLElement> {\n /** Default `md`. Scales the (em-based) keycap with the surrounding text. */\n size?: KbdSize;\n}\n\n/**\n * Silica Kbd — an inline keyboard-key cap.\n *\n * Press <Kbd>⌘</Kbd> <Kbd>K</Kbd> to search.\n */\nexport const Kbd = React.forwardRef<HTMLElement, KbdProps>(\n function Kbd({ size = \"md\", className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <kbd\n ref={ref}\n className={cx(sc(\"kbd\"), size !== \"md\" && sc(`kbd-${size}`), className)}\n {...rest}\n />\n );\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport interface BreadcrumbProps extends React.HTMLAttributes<HTMLElement> {}\n\n/**\n * Silica Breadcrumb — a navigation trail. Pass `<li>` items as children; the\n * chevron separators are drawn by CSS, so no separator markup is needed.\n *\n * <Breadcrumb>\n * <li><a href=\"/\">Home</a></li>\n * <li><a href=\"/projects\">Projects</a></li>\n * <li><span aria-current=\"page\">Silica</span></li>\n * </Breadcrumb>\n */\nexport const Breadcrumb = React.forwardRef<HTMLElement, BreadcrumbProps>(\n function Breadcrumb({ className, children, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <nav\n ref={ref}\n aria-label=\"Breadcrumb\"\n className={cx(sc(\"breadcrumb\"), className)}\n {...rest}\n >\n <ol>{children}</ol>\n </nav>\n );\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport interface StatsProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Stack the blocks vertically instead of inline. */\n vertical?: boolean;\n}\n\n/** Container for a row (or column) of `<Stat>` blocks. */\nexport const Stats = React.forwardRef<HTMLDivElement, StatsProps>(\n function Stats({ vertical = false, className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <div\n ref={ref}\n className={cx(sc(\"stats\"), vertical && sc(\"stats-vertical\"), className)}\n {...rest}\n />\n );\n },\n);\n\nexport interface StatProps extends React.HTMLAttributes<HTMLDivElement> {}\n\n/**\n * Silica Stat — a single metric block. Compose from parts:\n *\n * <Stats>\n * <Stat>\n * <StatFigure><ChartIcon /></StatFigure>\n * <StatTitle>Revenue</StatTitle>\n * <StatValue>$42.8k</StatValue>\n * <StatDesc>↗︎ 12% this month</StatDesc>\n * </Stat>\n * </Stats>\n */\nexport const Stat = React.forwardRef<HTMLDivElement, StatProps>(\n function Stat({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <div ref={ref} className={cx(sc(\"stat\"), className)} {...rest} />;\n },\n);\n\n/** Muted label above the value. */\nexport const StatTitle = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(function StatTitle({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <div ref={ref} className={cx(sc(\"stat-title\"), className)} {...rest} />;\n});\n\n/** The headline metric. */\nexport const StatValue = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(function StatValue({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <div ref={ref} className={cx(sc(\"stat-value\"), className)} {...rest} />;\n});\n\n/** Secondary line under the value (trend, context). */\nexport const StatDesc = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(function StatDesc({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <div ref={ref} className={cx(sc(\"stat-desc\"), className)} {...rest} />;\n});\n\n/** Trailing figure/icon, centered beside the text (defaults to primary). */\nexport const StatFigure = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(function StatFigure({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <div ref={ref} className={cx(sc(\"stat-figure\"), className)} {...rest} />\n );\n});\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor } from \"./lib/tokens\";\n\nexport type StepColor = SilicaColor;\n\nexport interface StepsProps extends React.OlHTMLAttributes<HTMLOListElement> {}\n\n/**\n * Silica Steps — a horizontal progress tracker. Children are `<Step>`s; color\n * the ones up to (and including) the current step to show completion.\n *\n * <Steps>\n * <Step color=\"primary\" data-content=\"✓\">Cart</Step>\n * <Step color=\"primary\">Shipping</Step>\n * <Step>Payment</Step>\n * <Step>Done</Step>\n * </Steps>\n */\nexport const Steps = React.forwardRef<HTMLOListElement, StepsProps>(\n function Steps({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <ol ref={ref} className={cx(sc(\"steps\"), className)} {...rest} />;\n },\n);\n\nexport interface StepProps extends React.LiHTMLAttributes<HTMLLIElement> {\n /** Paints the node + incoming connector; maps to `step-<color>`. */\n color?: StepColor;\n /** Glyph shown in the node instead of its number (e.g. a check). */\n \"data-content\"?: string;\n}\n\n/** A single node + label in a `<Steps>` track. */\nexport const Step = React.forwardRef<HTMLLIElement, StepProps>(\n function Step({ color, className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <li\n ref={ref}\n className={cx(sc(\"step\"), color && sc(`step-${color}`), className)}\n {...rest}\n />\n );\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport type JoinOrientation = \"horizontal\" | \"vertical\";\n\nexport interface JoinProps extends React.HTMLAttributes<HTMLDivElement> {\n /** `horizontal` (default) or `vertical`. */\n orientation?: JoinOrientation;\n}\n\n/**\n * Silica Join — merges its children into one seamless segmented group.\n *\n * <Join>\n * <Button>Day</Button>\n * <Button>Week</Button>\n * <Button>Month</Button>\n * </Join>\n *\n * <Join>\n * <Input placeholder=\"Search…\" />\n * <Button color=\"primary\">Go</Button>\n * </Join>\n */\nexport const Join = React.forwardRef<HTMLDivElement, JoinProps>(\n function Join({ orientation = \"horizontal\", className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <div\n ref={ref}\n className={cx(\n sc(\"join\"),\n orientation === \"vertical\" && sc(\"join-vertical\"),\n className,\n )}\n {...rest}\n />\n );\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport interface MenuProps extends React.HTMLAttributes<HTMLUListElement> {}\n\n/**\n * Silica Menu — a styled list of links/actions.\n *\n * <Menu>\n * <MenuTitle>Workspace</MenuTitle>\n * <MenuItem><a href=\"/\" aria-current=\"page\">Overview</a></MenuItem>\n * <MenuItem><a href=\"/team\">Team</a></MenuItem>\n * <MenuItem><button type=\"button\">Sign out</button></MenuItem>\n * </Menu>\n */\nexport const Menu = React.forwardRef<HTMLUListElement, MenuProps>(\n function Menu({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <ul ref={ref} className={cx(sc(\"menu\"), className)} {...rest} />;\n },\n);\n\n/** A single item row — wraps an `<a>` or `<button>`. */\nexport const MenuItem = React.forwardRef<\n HTMLLIElement,\n React.LiHTMLAttributes<HTMLLIElement>\n>(function MenuItem({ className, ...rest }, ref) {\n return <li ref={ref} className={className} {...rest} />;\n});\n\n/** A muted section label between items. */\nexport const MenuTitle = React.forwardRef<\n HTMLLIElement,\n React.LiHTMLAttributes<HTMLLIElement>\n>(function MenuTitle({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <li ref={ref} className={cx(sc(\"menu-title\"), className)} {...rest} />\n );\n});\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport interface CollapseProps\n extends React.DetailsHTMLAttributes<HTMLDetailsElement> {\n /** Drop the surface for a flush, borderless accordion row. */\n ghost?: boolean;\n}\n\n/**\n * Silica Collapse — a native `<details>` disclosure. Give several the same\n * `name` for an exclusive accordion (only one open at a time).\n *\n * <Collapse>\n * <CollapseTitle>Shipping</CollapseTitle>\n * <CollapseContent>Ships in 2–3 business days.</CollapseContent>\n * </Collapse>\n *\n * <Collapse name=\"faq\" open>…</Collapse>\n * <Collapse name=\"faq\">…</Collapse>\n */\nexport const Collapse = React.forwardRef<HTMLDetailsElement, CollapseProps>(\n function Collapse({ ghost = false, className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <details\n ref={ref}\n className={cx(sc(\"collapse\"), ghost && sc(\"collapse-ghost\"), className)}\n {...rest}\n />\n );\n },\n);\n\n/** The clickable header (renders a `<summary>`). */\nexport const CollapseTitle = React.forwardRef<\n HTMLElement,\n React.HTMLAttributes<HTMLElement>\n>(function CollapseTitle({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <summary ref={ref} className={cx(sc(\"collapse-title\"), className)} {...rest} />\n );\n});\n\n/** The disclosed body. */\nexport const CollapseContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(function CollapseContent({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <div ref={ref} className={cx(sc(\"collapse-content\"), className)} {...rest} />\n );\n});\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport type IndicatorPlacement =\n | \"top-end\"\n | \"top-start\"\n | \"bottom-end\"\n | \"bottom-start\";\n\nexport interface IndicatorProps extends React.HTMLAttributes<HTMLSpanElement> {}\n\n/**\n * Silica Indicator — pins an overlay to a corner of its content.\n *\n * <Indicator>\n * <IndicatorItem><Badge color=\"error\" size=\"xs\">3</Badge></IndicatorItem>\n * <Button variant=\"outline\">Inbox</Button>\n * </Indicator>\n *\n * The item comes first; the element it decorates follows.\n */\nexport const Indicator = React.forwardRef<HTMLSpanElement, IndicatorProps>(\n function Indicator({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <span ref={ref} className={cx(sc(\"indicator\"), className)} {...rest} />\n );\n },\n);\n\nexport interface IndicatorItemProps\n extends React.HTMLAttributes<HTMLSpanElement> {\n /** Which corner. Default `top-end`. */\n placement?: IndicatorPlacement;\n}\n\n/** The pinned overlay (usually a Badge or dot). */\nexport const IndicatorItem = React.forwardRef<\n HTMLSpanElement,\n IndicatorItemProps\n>(function IndicatorItem({ placement = \"top-end\", className, ...rest }, ref) {\n const sc = useSilicaClass();\n const start = placement === \"top-start\" || placement === \"bottom-start\";\n const bottom = placement === \"bottom-end\" || placement === \"bottom-start\";\n return (\n <span\n ref={ref}\n className={cx(\n sc(\"indicator-item\"),\n start && sc(\"indicator-start\"),\n bottom && sc(\"indicator-bottom\"),\n className,\n )}\n {...rest}\n />\n );\n});\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaSize } from \"./lib/tokens\";\n\nexport type LoadingSize = SilicaSize;\n\nexport interface LoadingProps extends React.HTMLAttributes<HTMLSpanElement> {\n /** Default `md`. */\n size?: LoadingSize;\n /** Accessible label announced to assistive tech. Default \"Loading\". */\n label?: string;\n}\n\n/**\n * Silica Loading — a spinner. Inherits `currentColor`, so color it with a\n * `text-*` utility or let it match the surrounding text.\n *\n * <Loading />\n * <Loading size=\"sm\" className=\"text-primary\" />\n * <Button loading>Saving…</Button> // Button has its own built-in spinner\n */\nexport const Loading = React.forwardRef<HTMLSpanElement, LoadingProps>(\n function Loading({ size = \"md\", label = \"Loading\", className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <span\n ref={ref}\n role=\"status\"\n aria-label={label}\n className={cx(\n sc(\"loading\"),\n size !== \"md\" && sc(`loading-${size}`),\n className,\n )}\n {...rest}\n />\n );\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport type ProseSize = \"sm\" | \"md\" | \"lg\" | \"xl\";\n\nexport interface ProseProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Default `md`. Rescales the whole block by one root font-size. */\n size?: ProseSize;\n}\n\n/**\n * Silica Prose — typographic defaults for a block of rich/markdown content.\n * Wrap raw HTML (or a Markdown renderer's output) and it gets themed headings,\n * lists, quotes, code, tables, and rhythm — scoped to this block only.\n *\n * <Prose>\n * <h1>Title</h1>\n * <p>Body copy with a <a href=\"#\">link</a> and <code>inline code</code>.</p>\n * </Prose>\n *\n * <Prose dangerouslySetInnerHTML={{ __html: renderedMarkdown }} />\n *\n * Caps width at 65ch for readability — add `max-w-none` to remove.\n */\nexport const Prose = React.forwardRef<HTMLDivElement, ProseProps>(\n function Prose({ size = \"md\", className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <div\n ref={ref}\n className={cx(\n sc(\"prose\"),\n size !== \"md\" && sc(`prose-${size}`),\n className,\n )}\n {...rest}\n />\n );\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\n/**\n * Typography components for silicaui's UI type ramp (see the `typography` plugin\n * module). They keep the *semantic* element and its *visual* size independent: a\n * `<Heading level={1} size={3}>` is an `<h1>` for the document outline but reads\n * as an h3. With no `size`, a heading just inherits its tag's global default, so\n * `<Heading level={2} />` and a bare `<h2>` match.\n */\n\nexport type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;\n\nexport interface HeadingProps extends React.HTMLAttributes<HTMLHeadingElement> {\n /** Semantic level → renders `<h1>`…`<h6>`. Default 2. */\n level?: HeadingLevel;\n /** Visual size override (`1`–`6` or `\"display\"`); omit to use the tag default. */\n size?: HeadingLevel | \"display\";\n}\n\n/** A heading whose semantic level and visual size are set independently. */\nexport const Heading = React.forwardRef<HTMLHeadingElement, HeadingProps>(\n function Heading({ level = 2, size, className, ...rest }, ref) {\n const sc = useSilicaClass();\n const Tag = `h${level}` as \"h1\";\n // Only emit a size class when it differs from the tag's own default — a bare\n // `<h2>` and `<Heading level={2}>` should render identically.\n const sizeClass = size !== undefined && size !== level ? sc(size === \"display\" ? \"display\" : `h${size}`) : undefined;\n return <Tag ref={ref} className={cx(sizeClass, className)} {...rest} />;\n },\n);\n\nexport interface DisplayProps extends React.HTMLAttributes<HTMLHeadingElement> {\n /** Semantic level for the outline (the look is always `.display`). Default 1. */\n level?: HeadingLevel;\n}\n\n/** Oversized hero/display heading (`.display`) on a semantic heading element. */\nexport const Display = React.forwardRef<HTMLHeadingElement, DisplayProps>(\n function Display({ level = 1, className, ...rest }, ref) {\n const sc = useSilicaClass();\n const Tag = `h${level}` as \"h1\";\n return <Tag ref={ref} className={cx(sc(\"display\"), className)} {...rest} />;\n },\n);\n\nexport type TextVariant = \"body\" | \"lead\" | \"caption\";\n\nexport interface TextProps extends React.HTMLAttributes<HTMLElement> {\n /** `body` (default), `lead` (larger intro), or `caption` (small, muted). */\n variant?: TextVariant;\n /** Element to render. Default `p`. */\n as?: React.ElementType;\n}\n\n/** Body-copy text with a semantic variant. `body` carries no class (bare `<p>`). */\nexport const Text = React.forwardRef<HTMLElement, TextProps>(\n function Text({ variant = \"body\", as, className, ...rest }, ref) {\n const sc = useSilicaClass();\n const Tag = (as ?? \"p\") as React.ElementType;\n const variantClass = variant === \"lead\" ? sc(\"lead\") : variant === \"caption\" ? sc(\"caption\") : undefined;\n return <Tag ref={ref as React.Ref<HTMLElement>} className={cx(variantClass, className) || undefined} {...rest} />;\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport type NavbarProps = React.HTMLAttributes<HTMLDivElement>;\n\n/**\n * Silica Navbar — a top bar with optional start / center / end slots.\n *\n * <Navbar>\n * <NavbarStart><a className=\"text-lg font-bold\">Silica</a></NavbarStart>\n * <NavbarCenter>…nav links…</NavbarCenter>\n * <NavbarEnd><Button>Sign in</Button></NavbarEnd>\n * </Navbar>\n */\nexport const Navbar = React.forwardRef<HTMLDivElement, NavbarProps>(\n function Navbar({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <div ref={ref} className={cx(sc(\"navbar\"), className)} {...rest} />;\n },\n);\n\nexport const NavbarStart = React.forwardRef<HTMLDivElement, NavbarProps>(\n function NavbarStart({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <div ref={ref} className={cx(sc(\"navbar-start\"), className)} {...rest} />;\n },\n);\n\nexport const NavbarCenter = React.forwardRef<HTMLDivElement, NavbarProps>(\n function NavbarCenter({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <div ref={ref} className={cx(sc(\"navbar-center\"), className)} {...rest} />;\n },\n);\n\nexport const NavbarEnd = React.forwardRef<HTMLDivElement, NavbarProps>(\n function NavbarEnd({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <div ref={ref} className={cx(sc(\"navbar-end\"), className)} {...rest} />;\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport interface FooterProps extends React.HTMLAttributes<HTMLElement> {\n /** Center every column and its contents (single-row, centered footer). */\n center?: boolean;\n}\n\n/**\n * Silica Footer — a responsive multi-column site footer.\n *\n * <Footer>\n * <nav>\n * <FooterTitle>Product</FooterTitle>\n * <Link href=\"#\">Features</Link>\n * <Link href=\"#\">Pricing</Link>\n * </nav>\n * …more columns…\n * </Footer>\n *\n * Renders a `<footer>`. Each direct child (e.g. a `<nav>`) becomes a vertical\n * stack of links under its `<FooterTitle>`.\n */\nexport const Footer = React.forwardRef<HTMLElement, FooterProps>(\n function Footer({ center, className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <footer\n ref={ref}\n className={cx(sc(\"footer\"), center && sc(\"footer-center\"), className)}\n {...rest}\n />\n );\n },\n);\n\nexport type FooterTitleProps = React.HTMLAttributes<HTMLElement>;\n\n/** A small, muted, upper-cased heading for a footer column. Renders `<h6>`. */\nexport const FooterTitle = React.forwardRef<HTMLHeadingElement, FooterTitleProps>(\n function FooterTitle({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <h6 ref={ref} className={cx(sc(\"footer-title\"), className)} {...rest} />;\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport type HeroProps = React.HTMLAttributes<HTMLDivElement>;\n\n/**\n * Silica Hero — a full-width banner that centers its content.\n *\n * <Hero style={{ backgroundImage: `url(${img})` }}>\n * <HeroOverlay />\n * <HeroContent className=\"text-neutral-content text-center\">\n * <div>\n * <h1 className=\"text-5xl font-bold\">Ship faster</h1>\n * <p>…</p>\n * <Button color=\"primary\">Get started</Button>\n * </div>\n * </HeroContent>\n * </Hero>\n *\n * Set a background image via the `style` prop; add `<HeroOverlay />` to tint it.\n */\nexport const Hero = React.forwardRef<HTMLDivElement, HeroProps>(\n function Hero({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <div ref={ref} className={cx(sc(\"hero\"), className)} {...rest} />;\n },\n);\n\nexport const HeroContent = React.forwardRef<HTMLDivElement, HeroProps>(\n function HeroContent({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <div ref={ref} className={cx(sc(\"hero-content\"), className)} {...rest} />;\n },\n);\n\n/** A translucent dark layer that tints the hero's background image. */\nexport const HeroOverlay = React.forwardRef<HTMLDivElement, HeroProps>(\n function HeroOverlay({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <div ref={ref} className={cx(sc(\"hero-overlay\"), className)} {...rest} />;\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor } from \"./lib/tokens\";\n\nexport type LinkColor = SilicaColor;\n\nexport interface LinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n /** Accent color; maps to `link-<color>`. Defaults to the surrounding text color. */\n color?: LinkColor;\n /** Show the underline only on hover / focus. */\n hover?: boolean;\n}\n\n/**\n * Silica Link — a styled inline anchor.\n *\n * <Link href=\"/docs\">Docs</Link>\n * <Link href=\"/pricing\" color=\"primary\">Pricing</Link>\n * <Link href=\"#\" hover>Underlines on hover</Link>\n */\nexport const Link = React.forwardRef<HTMLAnchorElement, LinkProps>(\n function Link({ color, hover, className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <a\n ref={ref}\n className={cx(\n sc(\"link\"),\n hover && sc(\"link-hover\"),\n color && sc(`link-${color}`),\n className,\n )}\n {...rest}\n />\n );\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport type MockupWindowProps = React.HTMLAttributes<HTMLDivElement>;\n\n/**\n * Silica MockupWindow — an app window frame with faux traffic-light dots.\n *\n * <MockupWindow>\n * <div className=\"p-8 text-center\">Hello!</div>\n * </MockupWindow>\n */\nexport const MockupWindow = React.forwardRef<HTMLDivElement, MockupWindowProps>(\n function MockupWindow({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <div ref={ref} className={cx(sc(\"mockup-window\"), className)} {...rest} />;\n },\n);\n\nexport interface MockupBrowserProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Text shown in the faux address bar. */\n url?: string;\n /** Replace the address bar with custom toolbar content. */\n toolbar?: React.ReactNode;\n}\n\n/**\n * Silica MockupBrowser — a browser frame with a toolbar and faux address bar.\n *\n * <MockupBrowser url=\"https://silica.ui\">\n * <div className=\"p-8 text-center\">Your page</div>\n * </MockupBrowser>\n */\nexport const MockupBrowser = React.forwardRef<HTMLDivElement, MockupBrowserProps>(\n function MockupBrowser({ url, toolbar, className, children, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <div ref={ref} className={cx(sc(\"mockup-browser\"), className)} {...rest}>\n <div className={cx(sc(\"mockup-browser-toolbar\"))}>\n {toolbar ?? <div className={cx(sc(\"mockup-browser-input\"))}>{url}</div>}\n </div>\n {children}\n </div>\n );\n },\n);\n\nexport type MockupCodeProps = React.HTMLAttributes<HTMLDivElement>;\n\n/**\n * Silica MockupCode — a dark terminal / code block. Compose it from\n * `<MockupCodeLine>` rows (each renders a `<pre data-prefix>`).\n *\n * <MockupCode>\n * <MockupCodeLine prefix=\"$\">npm i silicaui</MockupCodeLine>\n * <MockupCodeLine prefix=\">\" className=\"text-success\">done</MockupCodeLine>\n * </MockupCode>\n */\nexport const MockupCode = React.forwardRef<HTMLDivElement, MockupCodeProps>(\n function MockupCode({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <div ref={ref} className={cx(sc(\"mockup-code\"), className)} {...rest} />;\n },\n);\n\nexport interface MockupCodeLineProps\n extends React.HTMLAttributes<HTMLPreElement> {\n /** Gutter prefix rendered before the line (e.g. `$`, `>`, a line number). */\n prefix?: string;\n}\n\n/** A single line inside `<MockupCode>`. Renders `<pre data-prefix>`. */\nexport const MockupCodeLine = React.forwardRef<HTMLPreElement, MockupCodeLineProps>(\n function MockupCodeLine({ prefix, className, ...rest }, ref) {\n return <pre ref={ref} data-prefix={prefix} className={className} {...rest} />;\n },\n);\n\nexport type MockupPhoneProps = React.HTMLAttributes<HTMLDivElement>;\n\n/**\n * Silica MockupPhone — a phone frame with a camera notch.\n *\n * <MockupPhone>\n * <div className=\"p-6 pt-10\">Your app screen</div>\n * </MockupPhone>\n *\n * Children render inside the display; the bezel and notch are supplied by the\n * frame. Give top content some `pt` so it clears the notch.\n */\nexport const MockupPhone = React.forwardRef<HTMLDivElement, MockupPhoneProps>(\n function MockupPhone({ className, children, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <div ref={ref} className={cx(sc(\"mockup-phone\"), className)} {...rest}>\n <div className={cx(sc(\"mockup-phone-display\"))}>{children}</div>\n </div>\n );\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport type TimelineOrientation = \"vertical\" | \"horizontal\";\n\nexport interface TimelineProps extends React.HTMLAttributes<HTMLUListElement> {\n /** `vertical` (default) or `horizontal`. */\n orientation?: TimelineOrientation;\n}\n\n/**\n * Silica Timeline — a sequence of dated events with a connecting rail.\n *\n * <Timeline>\n * <TimelineItem>\n * <TimelineStart>2021</TimelineStart>\n * <TimelineMiddle />\n * <TimelineEnd box>Founded</TimelineEnd>\n * </TimelineItem>\n * <TimelineItem>\n * <TimelineStart>2024</TimelineStart>\n * <TimelineMiddle />\n * <TimelineEnd box>Shipped 1.0</TimelineEnd>\n * </TimelineItem>\n * </Timeline>\n *\n * Renders `<ul>` / `<li>`. Any slot is optional — omit `<TimelineStart>` for a\n * one-sided timeline. `<TimelineMiddle>` renders a default dot when empty.\n */\nexport const Timeline = React.forwardRef<HTMLUListElement, TimelineProps>(\n function Timeline({ orientation = \"vertical\", className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <ul\n ref={ref}\n className={cx(\n sc(\"timeline\"),\n orientation === \"horizontal\" && sc(\"timeline-horizontal\"),\n className,\n )}\n {...rest}\n />\n );\n },\n);\n\nexport type TimelineItemProps = React.LiHTMLAttributes<HTMLLIElement>;\n\nexport const TimelineItem = React.forwardRef<HTMLLIElement, TimelineItemProps>(\n function TimelineItem({ className, ...rest }, ref) {\n return <li ref={ref} className={className} {...rest} />;\n },\n);\n\nexport type TimelineStartProps = React.HTMLAttributes<HTMLDivElement>;\n\n/** The opposite-side label (e.g. a date). */\nexport const TimelineStart = React.forwardRef<HTMLDivElement, TimelineStartProps>(\n function TimelineStart({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <div ref={ref} className={cx(sc(\"timeline-start\"), className)} {...rest} />;\n },\n);\n\nexport type TimelineMiddleProps = React.HTMLAttributes<HTMLDivElement>;\n\n/** The marker on the rail. Renders a default dot when given no children. */\nexport const TimelineMiddle = React.forwardRef<HTMLDivElement, TimelineMiddleProps>(\n function TimelineMiddle({ className, children, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <div ref={ref} className={cx(sc(\"timeline-middle\"), className)} {...rest}>\n {children ?? <span className={cx(sc(\"timeline-dot\"))} />}\n </div>\n );\n },\n);\n\nexport interface TimelineEndProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Wrap the content in a bordered card. */\n box?: boolean;\n}\n\n/** The event content. Set `box` to wrap it in a bordered card. */\nexport const TimelineEnd = React.forwardRef<HTMLDivElement, TimelineEndProps>(\n function TimelineEnd({ box, className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <div\n ref={ref}\n className={cx(sc(\"timeline-end\"), box && sc(\"timeline-box\"), className)}\n {...rest}\n />\n );\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport type CarouselSnap = \"start\" | \"center\" | \"end\";\nexport type CarouselOrientation = \"horizontal\" | \"vertical\";\n\nexport interface CarouselProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n /** Snap alignment of items. `start` (default), `center`, or `end`. */\n snap?: CarouselSnap;\n /** `horizontal` (default) or `vertical`. */\n orientation?: CarouselOrientation;\n /** Show prev/next controls. Default `true`. */\n controls?: boolean;\n /** Bottom indicators: `dots` (default), `numbers` (paged), or `false` to hide. */\n indicators?: boolean | \"dots\" | \"numbers\";\n /** Wrap around past the first/last slide. Default `false`. */\n loop?: boolean;\n /** Auto-advance every N ms (pauses on hover/focus). Off by default. */\n autoplay?: number;\n /** Called with the active slide index whenever it changes. */\n onChange?: (index: number) => void;\n /** Extra class for the scroll surface. */\n className?: string;\n}\n\nconst PrevIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" aria-hidden=\"true\">\n <path d=\"m15 18-6-6 6-6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\nconst NextIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" aria-hidden=\"true\">\n <path d=\"m9 18 6-6-6-6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\n\n/**\n * Silica Carousel — a scroll-snap strip driven by real prev/next controls and\n * dot indicators (with optional loop + autoplay), not just a scrollable list.\n *\n * <Carousel loop autoplay={4000} className=\"gap-4 rounded-box\">\n * <CarouselItem className=\"w-full\"><img … /></CarouselItem>\n * <CarouselItem className=\"w-full\"><img … /></CarouselItem>\n * </Carousel>\n */\nexport function Carousel({\n snap = \"start\",\n orientation = \"horizontal\",\n controls = true,\n indicators = true,\n loop = false,\n autoplay,\n onChange,\n className,\n children,\n ...rest\n}: CarouselProps) {\n const sc = useSilicaClass();\n const scrollRef = React.useRef<HTMLDivElement>(null);\n const horizontal = orientation !== \"vertical\";\n const count = React.Children.count(children);\n const [active, setActive] = React.useState(0);\n const [paused, setPaused] = React.useState(false);\n\n const goTo = React.useCallback(\n (i: number) => {\n const container = scrollRef.current;\n if (!container) return;\n const last = container.children.length - 1;\n const target = loop\n ? (i + container.children.length) % container.children.length\n : Math.max(0, Math.min(last, i));\n const el = container.children[target] as HTMLElement | undefined;\n if (!el) return;\n container.scrollTo({\n left: horizontal ? el.offsetLeft - container.offsetLeft : 0,\n top: horizontal ? 0 : el.offsetTop - container.offsetTop,\n behavior: \"smooth\",\n });\n },\n [horizontal, loop],\n );\n\n // Keep the active index in sync with manual scrolling / swiping.\n const handleScroll = React.useCallback(() => {\n const container = scrollRef.current;\n if (!container) return;\n const kids = Array.from(container.children) as HTMLElement[];\n const pos = horizontal ? container.scrollLeft : container.scrollTop;\n let nearest = 0;\n let best = Infinity;\n kids.forEach((k, i) => {\n const off = horizontal ? k.offsetLeft - container.offsetLeft : k.offsetTop - container.offsetTop;\n const d = Math.abs(off - pos);\n if (d < best) {\n best = d;\n nearest = i;\n }\n });\n setActive((prev) => (prev === nearest ? prev : nearest));\n }, [horizontal]);\n\n React.useEffect(() => {\n onChange?.(active);\n }, [active, onChange]);\n\n React.useEffect(() => {\n if (!autoplay || paused || count <= 1) return;\n const id = window.setInterval(() => {\n const next = active + 1 > count - 1 ? (loop ? 0 : active) : active + 1;\n if (next !== active) goTo(next);\n else if (loop) goTo(0);\n }, autoplay);\n return () => window.clearInterval(id);\n }, [autoplay, paused, active, count, loop, goTo]);\n\n const atStart = active === 0;\n const atEnd = active === count - 1;\n const indi = indicators === true ? \"dots\" : indicators;\n\n return (\n <div\n className={cx(sc(\"carousel-root\"))}\n onMouseEnter={() => setPaused(true)}\n onMouseLeave={() => setPaused(false)}\n onFocusCapture={() => setPaused(true)}\n onBlurCapture={() => setPaused(false)}\n >\n {controls && count > 1 && (\n <button\n type=\"button\"\n className={cx(sc(\"carousel-control\"), sc(\"carousel-prev\"))}\n onClick={() => goTo(active - 1)}\n disabled={!loop && atStart}\n aria-label=\"Previous slide\"\n >\n <PrevIcon />\n </button>\n )}\n\n <div\n ref={scrollRef}\n className={cx(\n sc(\"carousel\"),\n snap !== \"start\" && sc(`carousel-${snap}`),\n orientation === \"vertical\" && sc(\"carousel-vertical\"),\n className,\n )}\n onScroll={handleScroll}\n {...rest}\n >\n {children}\n </div>\n\n {controls && count > 1 && (\n <button\n type=\"button\"\n className={cx(sc(\"carousel-control\"), sc(\"carousel-next\"))}\n onClick={() => goTo(active + 1)}\n disabled={!loop && atEnd}\n aria-label=\"Next slide\"\n >\n <NextIcon />\n </button>\n )}\n\n {indi && count > 1 && (\n <div className={cx(sc(\"carousel-indicators\"))}>\n {Array.from({ length: count }, (_, i) =>\n indi === \"numbers\" ? (\n <button\n key={i}\n type=\"button\"\n className={cx(sc(\"carousel-number\"), i === active && sc(\"carousel-number-active\"))}\n onClick={() => goTo(i)}\n aria-label={`Go to slide ${i + 1}`}\n aria-current={i === active}\n >\n {i + 1}\n </button>\n ) : (\n <button\n key={i}\n type=\"button\"\n className={cx(sc(\"carousel-dot\"), i === active && sc(\"carousel-dot-active\"))}\n onClick={() => goTo(i)}\n aria-label={`Go to slide ${i + 1}`}\n aria-current={i === active}\n />\n ),\n )}\n </div>\n )}\n </div>\n );\n}\n\nexport type CarouselItemProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport const CarouselItem = React.forwardRef<HTMLDivElement, CarouselItemProps>(\n function CarouselItem({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <div ref={ref} className={cx(sc(\"carousel-item\"), className)} {...rest} />;\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport type StackPeek = \"top\" | \"bottom\" | \"start\" | \"end\";\n\nexport interface StackProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Which way the deck peeks. `top` (default), `bottom`, `start`, or `end`. */\n peek?: StackPeek;\n /** Make the deck clickable — sends the front card to the back to reveal the next. */\n interactive?: boolean;\n}\n\n/**\n * Silica Stack — layers its children into a peeking deck (first child on top).\n * With `interactive`, clicking (or Enter/Space) cycles the front card to the\n * back so you can flip through the deck; the re-stack animates.\n *\n * <Stack interactive>\n * <Card className=\"bg-primary text-primary-content\"><CardBody>1</CardBody></Card>\n * <Card className=\"bg-secondary text-secondary-content\"><CardBody>2</CardBody></Card>\n * <Card className=\"bg-accent text-accent-content\"><CardBody>3</CardBody></Card>\n * </Stack>\n */\nexport function Stack({\n peek = \"top\",\n interactive = false,\n className,\n children,\n onClick,\n onKeyDown,\n ...rest\n}: StackProps) {\n const sc = useSilicaClass();\n const items = React.useMemo(() => React.Children.toArray(children), [children]);\n const [order, setOrder] = React.useState<number[]>(() => items.map((_, i) => i));\n\n // Reset the order if the number of children changes.\n React.useEffect(() => {\n setOrder(items.map((_, i) => i));\n }, [items.length]);\n\n const cycle = React.useCallback(() => {\n // Move the front card to the back (slice avoids index access → no undefined).\n setOrder((o) => (o.length > 1 ? o.slice(1).concat(o.slice(0, 1)) : o));\n }, []);\n\n const ordered = order.map((i) => items[i]).filter(Boolean);\n\n const interactiveProps = interactive\n ? {\n role: \"button\" as const,\n tabIndex: 0,\n \"aria-label\": \"Cycle stack\",\n style: { cursor: \"pointer\", ...rest.style },\n onClick: (e: React.MouseEvent<HTMLDivElement>) => {\n cycle();\n onClick?.(e);\n },\n onKeyDown: (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n cycle();\n }\n onKeyDown?.(e);\n },\n }\n : { onClick, onKeyDown };\n\n return (\n <div\n className={cx(sc(\"stack\"), peek !== \"top\" && sc(`stack-${peek}`), className)}\n {...rest}\n {...interactiveProps}\n >\n {ordered}\n </div>\n );\n}\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor, SilicaSize } from \"./lib/tokens\";\n\nexport type RatingColor = SilicaColor;\nexport type RatingSize = SilicaSize;\n\nexport interface RatingProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\" | \"defaultValue\"> {\n /** Controlled value (number of filled stars). */\n value?: number;\n /** Initial value when uncontrolled. */\n defaultValue?: number;\n /** Called when the rating changes. */\n onChange?: (value: number) => void;\n /** Number of stars. Default 5. */\n max?: number;\n /** Accent color for filled stars. Default warning (gold). */\n color?: RatingColor;\n /** Star size. */\n size?: RatingSize;\n /** Render non-interactive. */\n readOnly?: boolean;\n /** Custom star icon (defaults to a filled star). */\n icon?: React.ReactNode;\n /** Accessible label for the group. */\n label?: string;\n}\n\nconst StarIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\">\n <path d=\"m12 2 3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z\" />\n </svg>\n);\n\n/**\n * Silica Rating — a row of star buttons.\n *\n * <Rating defaultValue={3} onChange={setStars} />\n * <Rating value={4.5 | 4} color=\"warning\" readOnly />\n *\n * Keyboard: arrow keys change the value; Home/End jump to 1/max.\n */\nexport function Rating({\n value,\n defaultValue = 0,\n onChange,\n max = 5,\n color,\n size,\n readOnly,\n icon,\n label = \"Rating\",\n className,\n ...rest\n}: RatingProps) {\n const sc = useSilicaClass();\n const isControlled = value !== undefined;\n const [internal, setInternal] = React.useState(defaultValue);\n const current = isControlled ? (value as number) : internal;\n const [hover, setHover] = React.useState<number | null>(null);\n const shown = hover ?? current;\n const refs = React.useRef<(HTMLButtonElement | null)[]>([]);\n\n const setValue = (v: number) => {\n if (readOnly) return;\n const next = v === current ? 0 : v; // click the current star to clear\n if (!isControlled) setInternal(next);\n onChange?.(next);\n };\n\n const focusStar = (i: number) => {\n const clamped = Math.max(1, Math.min(max, i));\n refs.current[clamped - 1]?.focus();\n if (!isControlled) setInternal(clamped);\n onChange?.(clamped);\n };\n\n const onKeyDown = (e: React.KeyboardEvent, i: number) => {\n if (readOnly) return;\n if (e.key === \"ArrowRight\" || e.key === \"ArrowUp\") {\n e.preventDefault();\n focusStar(i + 1);\n } else if (e.key === \"ArrowLeft\" || e.key === \"ArrowDown\") {\n e.preventDefault();\n focusStar(i - 1);\n } else if (e.key === \"Home\") {\n e.preventDefault();\n focusStar(1);\n } else if (e.key === \"End\") {\n e.preventDefault();\n focusStar(max);\n }\n };\n\n const activeIndex = current > 0 ? current - 1 : 0;\n\n return (\n <div\n role=\"radiogroup\"\n aria-label={label}\n className={cx(\n sc(\"rating\"),\n color && sc(`rating-${color}`),\n size && sc(`rating-${size}`),\n readOnly && sc(\"rating-readonly\"),\n className,\n )}\n onMouseLeave={() => setHover(null)}\n {...rest}\n >\n {Array.from({ length: max }, (_, idx) => {\n const starValue = idx + 1;\n return (\n <button\n key={starValue}\n ref={(el) => {\n refs.current[idx] = el;\n }}\n type=\"button\"\n role=\"radio\"\n aria-checked={current === starValue}\n aria-label={`${starValue} star${starValue === 1 ? \"\" : \"s\"}`}\n tabIndex={readOnly ? -1 : idx === activeIndex ? 0 : -1}\n disabled={readOnly}\n data-filled={starValue <= shown}\n className={cx(sc(\"rating-item\"))}\n onClick={() => setValue(starValue)}\n onMouseEnter={() => !readOnly && setHover(starValue)}\n onKeyDown={(e) => onKeyDown(e, starValue)}\n >\n {icon ?? <StarIcon />}\n </button>\n );\n })}\n </div>\n );\n}\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor } from \"./lib/tokens\";\n\nexport type RadialProgressColor = SilicaColor;\n\nexport interface RadialProgressProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Progress percentage, 0–100. */\n value: number;\n /** Overall diameter (any CSS length). Default `5rem`. */\n size?: string;\n /** Ring thickness (any CSS length). Default `0.5rem`. */\n thickness?: string;\n /** Accent color. Default primary. */\n color?: RadialProgressColor;\n}\n\n/**\n * Silica RadialProgress — a circular progress ring with a centered label.\n *\n * <RadialProgress value={70} color=\"success\" />\n * <RadialProgress value={40} size=\"7rem\" thickness=\"0.75rem\">40%</RadialProgress>\n *\n * Defaults the label to `{value}%`; pass children to override.\n */\nexport const RadialProgress = React.forwardRef<HTMLDivElement, RadialProgressProps>(\n function RadialProgress(\n { value, size = \"5rem\", thickness = \"0.5rem\", color, className, children, style, ...rest },\n ref,\n ) {\n const sc = useSilicaClass();\n const pct = Math.max(0, Math.min(100, value));\n return (\n <div\n ref={ref}\n role=\"progressbar\"\n aria-valuenow={Math.round(pct)}\n aria-valuemin={0}\n aria-valuemax={100}\n className={cx(sc(\"radial-progress\"), className)}\n style={\n {\n \"--value\": pct,\n \"--size\": size,\n \"--thickness\": thickness,\n ...(color ? { \"--radial-accent\": `var(--color-${color})` } : {}),\n ...style,\n } as React.CSSProperties\n }\n {...rest}\n >\n <span>{children ?? `${Math.round(pct)}%`}</span>\n </div>\n );\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor } from \"./lib/tokens\";\n\nexport type PaginationColor = SilicaColor;\nexport type PaginationSize = \"xs\" | \"sm\" | \"md\" | \"lg\";\n\nexport interface PaginationProps\n extends Omit<React.HTMLAttributes<HTMLElement>, \"onChange\"> {\n /** Current page (1-based). */\n page: number;\n /** Total number of pages. */\n count: number;\n /** Called with the new page. */\n onChange?: (page: number) => void;\n /** Pages shown on each side of the current page. Default 1. */\n siblingCount?: number;\n /** Pages shown at the start/end. Default 1. */\n boundaryCount?: number;\n /** Show prev/next arrows. Default `true`. */\n controls?: boolean;\n color?: PaginationColor;\n size?: PaginationSize;\n}\n\nconst range = (start: number, end: number): number[] =>\n Array.from({ length: Math.max(end - start + 1, 0) }, (_, i) => start + i);\n\n/** MUI-style page list with ellipses. */\nfunction paginationItems(\n page: number,\n count: number,\n siblingCount: number,\n boundaryCount: number,\n): (number | \"ellipsis\")[] {\n const startPages = range(1, Math.min(boundaryCount, count));\n const endPages = range(Math.max(count - boundaryCount + 1, boundaryCount + 1), count);\n\n const siblingsStart = Math.max(\n Math.min(page - siblingCount, count - boundaryCount - siblingCount * 2 - 1),\n boundaryCount + 2,\n );\n const firstEndPage = endPages.length > 0 ? (endPages[0] as number) : count + 1;\n const siblingsEnd = Math.min(\n Math.max(page + siblingCount, boundaryCount + siblingCount * 2 + 2),\n endPages.length > 0 ? firstEndPage - 2 : count - 1,\n );\n\n return [\n ...startPages,\n ...(siblingsStart > boundaryCount + 2\n ? [\"ellipsis\" as const]\n : boundaryCount + 1 < count - boundaryCount\n ? [boundaryCount + 1]\n : []),\n ...range(siblingsStart, siblingsEnd),\n ...(siblingsEnd < count - boundaryCount - 1\n ? [\"ellipsis\" as const]\n : count - boundaryCount > boundaryCount\n ? [count - boundaryCount]\n : []),\n ...endPages,\n ];\n}\n\nconst PrevIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" aria-hidden=\"true\">\n <path d=\"m15 18-6-6 6-6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\nconst NextIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" aria-hidden=\"true\">\n <path d=\"m9 18 6-6-6-6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\n\n/**\n * Silica Pagination — page controls with prev/next and ellipsis.\n *\n * <Pagination page={page} count={12} onChange={setPage} color=\"primary\" />\n */\nexport function Pagination({\n page,\n count,\n onChange,\n siblingCount = 1,\n boundaryCount = 1,\n controls = true,\n color,\n size,\n className,\n ...rest\n}: PaginationProps) {\n const sc = useSilicaClass();\n const items = paginationItems(page, count, siblingCount, boundaryCount);\n const go = (p: number) => {\n const clamped = Math.max(1, Math.min(count, p));\n if (clamped !== page) onChange?.(clamped);\n };\n\n return (\n <nav\n aria-label=\"Pagination\"\n className={cx(\n sc(\"pagination\"),\n color && sc(`pagination-${color}`),\n size && sc(`pagination-${size}`),\n className,\n )}\n {...rest}\n >\n {controls && (\n <button\n type=\"button\"\n className={cx(sc(\"pagination-item\"))}\n onClick={() => go(page - 1)}\n disabled={page <= 1}\n aria-label=\"Previous page\"\n >\n <PrevIcon />\n </button>\n )}\n\n {items.map((item, i) =>\n item === \"ellipsis\" ? (\n <span key={`e${i}`} className={cx(sc(\"pagination-ellipsis\"))} aria-hidden=\"true\">\n …\n </span>\n ) : (\n <button\n key={item}\n type=\"button\"\n className={cx(\n sc(\"pagination-item\"),\n item === page && sc(\"pagination-item-active\"),\n )}\n onClick={() => go(item)}\n aria-label={`Page ${item}`}\n aria-current={item === page ? \"page\" : undefined}\n >\n {item}\n </button>\n ),\n )}\n\n {controls && (\n <button\n type=\"button\"\n className={cx(sc(\"pagination-item\"))}\n onClick={() => go(page + 1)}\n disabled={page >= count}\n aria-label=\"Next page\"\n >\n <NextIcon />\n </button>\n )}\n </nav>\n );\n}\n","import * as React from \"react\";\nimport { Accordion as BaseAccordion } from \"@base-ui-components/react/accordion\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\ntype Styled<T extends React.ElementType> = Omit<\n React.ComponentPropsWithoutRef<T>,\n \"className\"\n> & { className?: string };\n\nconst ChevronIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" aria-hidden=\"true\">\n <path d=\"m6 9 6 6 6-6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\n\n/**\n * Silica Accordion — collapsible sections (Base UI behavior, animated height).\n *\n * <Accordion multiple={false} defaultValue={[\"a\"]}>\n * <AccordionItem value=\"a\">\n * <AccordionTrigger>What is Silica?</AccordionTrigger>\n * <AccordionPanel>A design system on one token model.</AccordionPanel>\n * </AccordionItem>\n * <AccordionItem value=\"b\">\n * <AccordionTrigger>Is it themeable?</AccordionTrigger>\n * <AccordionPanel>Yes — every color is a token.</AccordionPanel>\n * </AccordionItem>\n * </Accordion>\n */\nexport function Accordion({ className, ...rest }: Styled<typeof BaseAccordion.Root>) {\n const sc = useSilicaClass();\n return <BaseAccordion.Root className={cx(sc(\"accordion\"), className)} {...rest} />;\n}\n\nexport function AccordionItem({ className, ...rest }: Styled<typeof BaseAccordion.Item>) {\n const sc = useSilicaClass();\n return <BaseAccordion.Item className={cx(sc(\"accordion-item\"), className)} {...rest} />;\n}\n\nexport interface AccordionTriggerProps extends Styled<typeof BaseAccordion.Trigger> {\n /** Set false to omit the built-in chevron. */\n chevron?: boolean;\n}\n\nexport function AccordionTrigger({\n className,\n children,\n chevron = true,\n ...rest\n}: AccordionTriggerProps) {\n const sc = useSilicaClass();\n return (\n <BaseAccordion.Header className={cx(sc(\"accordion-header\"))}>\n <BaseAccordion.Trigger className={cx(sc(\"accordion-trigger\"), className)} {...rest}>\n <span>{children}</span>\n {chevron && <ChevronIcon />}\n </BaseAccordion.Trigger>\n </BaseAccordion.Header>\n );\n}\n\nexport function AccordionPanel({\n className,\n children,\n ...rest\n}: Styled<typeof BaseAccordion.Panel>) {\n const sc = useSilicaClass();\n return (\n <BaseAccordion.Panel className={cx(sc(\"accordion-panel\"), className)} {...rest}>\n <div className={cx(sc(\"accordion-content\"))}>{children}</div>\n </BaseAccordion.Panel>\n );\n}\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor } from \"./lib/tokens\";\n\nexport type ChatSide = \"start\" | \"end\";\nexport type ChatBubbleColor = SilicaColor;\n\nexport interface ChatProps extends React.HTMLAttributes<HTMLDivElement> {\n /** `start` (incoming, avatar left) or `end` (outgoing, avatar right). */\n side?: ChatSide;\n}\n\n/**\n * Silica Chat — a message row: avatar, header, bubble, footer.\n *\n * <Chat side=\"start\">\n * <ChatImage><Avatar>OW</Avatar></ChatImage>\n * <ChatHeader>Obi-Wan <time className=\"opacity-60\">12:45</time></ChatHeader>\n * <ChatBubble>You were the chosen one!</ChatBubble>\n * <ChatFooter>Seen</ChatFooter>\n * </Chat>\n * <Chat side=\"end\">\n * <ChatBubble color=\"primary\">I hate you!</ChatBubble>\n * </Chat>\n */\nexport const Chat = React.forwardRef<HTMLDivElement, ChatProps>(\n function Chat({ side = \"start\", className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <div ref={ref} className={cx(sc(\"chat\"), sc(`chat-${side}`), className)} {...rest} />\n );\n },\n);\n\nexport type ChatImageProps = React.HTMLAttributes<HTMLDivElement>;\nexport const ChatImage = React.forwardRef<HTMLDivElement, ChatImageProps>(\n function ChatImage({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <div ref={ref} className={cx(sc(\"chat-image\"), className)} {...rest} />;\n },\n);\n\nexport type ChatHeaderProps = React.HTMLAttributes<HTMLDivElement>;\nexport const ChatHeader = React.forwardRef<HTMLDivElement, ChatHeaderProps>(\n function ChatHeader({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <div ref={ref} className={cx(sc(\"chat-header\"), className)} {...rest} />;\n },\n);\n\nexport type ChatFooterProps = React.HTMLAttributes<HTMLDivElement>;\nexport const ChatFooter = React.forwardRef<HTMLDivElement, ChatFooterProps>(\n function ChatFooter({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <div ref={ref} className={cx(sc(\"chat-footer\"), className)} {...rest} />;\n },\n);\n\nexport interface ChatBubbleProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Bubble color; maps to `chat-bubble-<color>`. Default neutral base-200. */\n color?: ChatBubbleColor;\n}\nexport const ChatBubble = React.forwardRef<HTMLDivElement, ChatBubbleProps>(\n function ChatBubble({ color, className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <div\n ref={ref}\n className={cx(sc(\"chat-bubble\"), color && sc(`chat-bubble-${color}`), className)}\n {...rest}\n />\n );\n },\n);\n","import * as React from \"react\";\nimport { Slider as BaseSlider } from \"@base-ui-components/react/slider\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor } from \"./lib/tokens\";\n\ntype Styled<T extends React.ElementType> = Omit<\n React.ComponentPropsWithoutRef<T>,\n \"className\"\n> & { className?: string };\n\nexport type RangeColor = SilicaColor;\n\nexport interface RangeProps extends Styled<typeof BaseSlider.Root> {\n /** Accent color for the filled track + thumb. Default primary. */\n color?: RangeColor;\n}\n\n/**\n * Silica Range — a slider (Base UI behavior).\n *\n * <Range defaultValue={40} onValueChange={setV} />\n * <Range defaultValue={[20, 60]} color=\"success\" /> // two thumbs\n *\n * Pass an array value/defaultValue for a multi-thumb range.\n */\nexport function Range({ color, className, value, defaultValue, ...rest }: RangeProps) {\n const sc = useSilicaClass();\n const vals = value ?? defaultValue;\n const thumbCount = Array.isArray(vals) ? vals.length : 1;\n\n return (\n <BaseSlider.Root\n value={value}\n defaultValue={defaultValue}\n className={cx(sc(\"range\"), color && sc(`range-${color}`), className)}\n {...rest}\n >\n <BaseSlider.Control className={cx(sc(\"range-control\"))}>\n <BaseSlider.Track className={cx(sc(\"range-track\"))}>\n <BaseSlider.Indicator className={cx(sc(\"range-indicator\"))} />\n {Array.from({ length: thumbCount }, (_, i) => (\n <BaseSlider.Thumb\n key={i}\n index={thumbCount > 1 ? i : undefined}\n className={cx(sc(\"range-thumb\"))}\n />\n ))}\n </BaseSlider.Track>\n </BaseSlider.Control>\n </BaseSlider.Root>\n );\n}\n","import * as React from \"react\";\nimport { Toast as BaseToast } from \"@base-ui-components/react/toast\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport type ToastProviderProps = React.ComponentProps<typeof BaseToast.Provider>;\n\nconst CloseIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" aria-hidden=\"true\">\n <path d=\"m18 6-12 12M6 6l12 12\" strokeLinecap=\"round\" />\n </svg>\n);\n\n/** Renders the toasts from the manager into a fixed corner viewport. */\nfunction ToastList() {\n const { toasts } = BaseToast.useToastManager();\n const sc = useSilicaClass();\n return (\n <BaseToast.Portal>\n <BaseToast.Viewport className={cx(sc(\"toast-viewport\"))}>\n {toasts.map((toast) => (\n <BaseToast.Root key={toast.id} toast={toast} className={cx(sc(\"toast\"))}>\n <div className={cx(sc(\"toast-content\"))}>\n <BaseToast.Title className={cx(sc(\"toast-title\"))} />\n <BaseToast.Description className={cx(sc(\"toast-description\"))} />\n </div>\n <BaseToast.Close className={cx(sc(\"toast-close\"))} aria-label=\"Close\">\n <CloseIcon />\n </BaseToast.Close>\n </BaseToast.Root>\n ))}\n </BaseToast.Viewport>\n </BaseToast.Portal>\n );\n}\n\n/**\n * Silica ToastProvider — wrap your app once, then call `useToast().add(...)`.\n *\n * <ToastProvider>\n * <App />\n * </ToastProvider>\n *\n * const toast = useToast();\n * toast.add({ title: \"Saved\", description: \"Your changes are saved.\", type: \"success\" });\n */\nexport function ToastProvider({ children, ...rest }: ToastProviderProps) {\n return (\n <BaseToast.Provider {...rest}>\n {children}\n <ToastList />\n </BaseToast.Provider>\n );\n}\n\n/** Toast manager: `add`, `close`, `update`, and the live `toasts` list. */\nexport function useToast() {\n return BaseToast.useToastManager();\n}\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport type SwapVariant = \"fade\" | \"rotate\" | \"flip\";\n\nexport interface SwapProps\n extends Omit<React.HTMLAttributes<HTMLLabelElement>, \"onChange\"> {\n /** Shown when active (checked). */\n on: React.ReactNode;\n /** Shown when inactive. */\n off: React.ReactNode;\n /** Controlled active state. */\n active?: boolean;\n /** Initial state when uncontrolled. */\n defaultActive?: boolean;\n /** Called when toggled. */\n onActiveChange?: (active: boolean) => void;\n /** Transition style. `fade` (default), `rotate`, or `flip`. */\n variant?: SwapVariant;\n /** Accessible label. */\n label?: string;\n}\n\n/**\n * Silica Swap — cross-fades (or rotates/flips) between two icons on toggle.\n *\n * <Swap variant=\"rotate\" on={<CloseIcon />} off={<MenuIcon />} label=\"Menu\" />\n */\nexport function Swap({\n on,\n off,\n active,\n defaultActive,\n onActiveChange,\n variant = \"fade\",\n label,\n className,\n ...rest\n}: SwapProps) {\n const sc = useSilicaClass();\n const isControlled = active !== undefined;\n const [internal, setInternal] = React.useState(defaultActive ?? false);\n const checked = isControlled ? active : internal;\n\n return (\n <label\n className={cx(sc(\"swap\"), variant !== \"fade\" && sc(`swap-${variant}`), className)}\n {...rest}\n >\n <input\n type=\"checkbox\"\n checked={checked}\n aria-label={label}\n onChange={(e) => {\n if (!isControlled) setInternal(e.target.checked);\n onActiveChange?.(e.target.checked);\n }}\n />\n <span className={cx(sc(\"swap-on\"))}>{on}</span>\n <span className={cx(sc(\"swap-off\"))}>{off}</span>\n </label>\n );\n}\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor, SilicaSize } from \"./lib/tokens\";\n\nexport type StatusColor = SilicaColor;\nexport type StatusSize = SilicaSize;\n\nexport interface StatusProps extends React.HTMLAttributes<HTMLSpanElement> {\n /** Dot color. */\n color?: StatusColor;\n /** Dot size. */\n size?: StatusSize;\n /** Add an expanding \"ping\" ring. */\n ping?: boolean;\n /** Accessible label (e.g. \"Online\"). */\n label?: string;\n}\n\n/**\n * Silica Status — a small status dot, optionally pinging.\n *\n * <Status color=\"success\" ping label=\"Online\" />\n * <Status color=\"warning\" size=\"sm\" />\n */\nexport const Status = React.forwardRef<HTMLSpanElement, StatusProps>(\n function Status({ color, size, ping, label, className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <span\n ref={ref}\n role={label ? \"status\" : undefined}\n aria-label={label}\n className={cx(\n sc(\"status\"),\n color && sc(`status-${color}`),\n size && sc(`status-${size}`),\n ping && sc(\"status-ping\"),\n className,\n )}\n {...rest}\n />\n );\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport type CountdownUnit = \"days\" | \"hours\" | \"minutes\" | \"seconds\";\n\nexport interface CountdownProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Target time (a Date or epoch-ms timestamp). */\n to: Date | number;\n /** Which units to show. Default all four. */\n units?: CountdownUnit[];\n /** Drop the boxes for an inline number run. */\n plain?: boolean;\n /** Called once when the countdown reaches zero. */\n onComplete?: () => void;\n}\n\nconst pad = (n: number) => String(n).padStart(2, \"0\");\n\n/**\n * Silica Countdown — a live days/hours/minutes/seconds display.\n *\n * <Countdown to={launchDate} />\n * <Countdown to={Date.now() + 90_000} units={[\"minutes\", \"seconds\"]} plain />\n *\n * Client-only (ticks every second); render under a `\"use client\"` boundary.\n */\nexport function Countdown({\n to,\n units = [\"days\", \"hours\", \"minutes\", \"seconds\"],\n plain,\n onComplete,\n className,\n ...rest\n}: CountdownProps) {\n const sc = useSilicaClass();\n const target = typeof to === \"number\" ? to : to.getTime();\n const [now, setNow] = React.useState(() => Date.now());\n\n React.useEffect(() => {\n const id = window.setInterval(() => setNow(Date.now()), 1000);\n return () => window.clearInterval(id);\n }, []);\n\n const remaining = Math.max(0, target - now);\n const done = remaining === 0;\n\n const completedRef = React.useRef(false);\n React.useEffect(() => {\n if (done && !completedRef.current) {\n completedRef.current = true;\n onComplete?.();\n }\n if (!done) completedRef.current = false;\n }, [done, onComplete]);\n\n const total = Math.floor(remaining / 1000);\n const values: Record<CountdownUnit, number> = {\n days: Math.floor(total / 86400),\n hours: Math.floor((total % 86400) / 3600),\n minutes: Math.floor((total % 3600) / 60),\n seconds: total % 60,\n };\n\n return (\n <div\n className={cx(sc(\"countdown\"), plain && sc(\"countdown-plain\"), className)}\n role=\"timer\"\n {...rest}\n >\n {units.map((u) => (\n <div key={u} className={cx(sc(\"countdown-unit\"))}>\n <span className={cx(sc(\"countdown-value\"))}>\n {u === \"days\" ? values[u] : pad(values[u])}\n </span>\n <span className={cx(sc(\"countdown-label\"))}>{u}</span>\n </div>\n ))}\n </div>\n );\n}\n","import * as React from \"react\";\nimport { NumberField as BaseNumberField } from \"@base-ui-components/react/number-field\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\ntype Styled<T extends React.ElementType> = Omit<\n React.ComponentPropsWithoutRef<T>,\n \"className\"\n> & { className?: string };\n\nconst MinusIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" aria-hidden=\"true\">\n <path d=\"M5 12h14\" strokeLinecap=\"round\" />\n </svg>\n);\nconst PlusIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" aria-hidden=\"true\">\n <path d=\"M12 5v14M5 12h14\" strokeLinecap=\"round\" />\n </svg>\n);\n\nexport interface NumberFieldProps extends Styled<typeof BaseNumberField.Root> {\n /** Accessible label for the input. */\n label?: string;\n}\n\n/**\n * Silica NumberField — a stepper input (Base UI: clamping, keyboard, scrub).\n *\n * <NumberField defaultValue={1} min={0} max={10} onValueChange={setQty} />\n */\nexport function NumberField({ className, label, ...rest }: NumberFieldProps) {\n const sc = useSilicaClass();\n return (\n <BaseNumberField.Root className={cx(sc(\"number-field\"), className)} {...rest}>\n <BaseNumberField.Group className={cx(sc(\"number-field-group\"))}>\n <BaseNumberField.Decrement\n className={cx(sc(\"number-field-button\"), sc(\"number-field-decrement\"))}\n >\n <MinusIcon />\n </BaseNumberField.Decrement>\n <BaseNumberField.Input\n aria-label={label}\n className={cx(sc(\"number-field-input\"))}\n />\n <BaseNumberField.Increment\n className={cx(sc(\"number-field-button\"), sc(\"number-field-increment\"))}\n >\n <PlusIcon />\n </BaseNumberField.Increment>\n </BaseNumberField.Group>\n </BaseNumberField.Root>\n );\n}\n","import * as React from \"react\";\nimport { Dialog as BaseDialog } from \"@base-ui-components/react/dialog\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\ntype Styled<T extends React.ElementType> = Omit<\n React.ComponentPropsWithoutRef<T>,\n \"className\"\n> & { className?: string };\n\nconst asRender = (el: React.ReactElement) =>\n el as React.ReactElement<Record<string, unknown>>;\n\nexport type DrawerSide = \"left\" | \"right\" | \"top\" | \"bottom\";\nexport type DrawerProps = React.ComponentProps<typeof BaseDialog.Root>;\n\n/**\n * Silica Drawer — a panel that slides in from an edge (Base UI Dialog behavior).\n *\n * <Drawer>\n * <DrawerTrigger><Button>Menu</Button></DrawerTrigger>\n * <DrawerContent side=\"left\">\n * <DrawerTitle>Navigation</DrawerTitle>\n * <nav>…</nav>\n * <DrawerClose><Button variant=\"ghost\">Close</Button></DrawerClose>\n * </DrawerContent>\n * </Drawer>\n */\nexport const Drawer = BaseDialog.Root;\n\nexport function DrawerTrigger({ children }: { children: React.ReactElement }) {\n return <BaseDialog.Trigger render={asRender(children)} />;\n}\n\nexport function DrawerClose({ children }: { children: React.ReactElement }) {\n return <BaseDialog.Close render={asRender(children)} />;\n}\n\nexport interface DrawerContentProps\n extends Omit<Styled<typeof BaseDialog.Popup>, \"children\"> {\n children?: React.ReactNode;\n /** Edge the drawer slides from. Default `left`. */\n side?: DrawerSide;\n /** Class for the backdrop layer. */\n backdropClassName?: string;\n}\n\n/** Portals + backdrop + the edge-pinned sliding panel in one. */\nexport function DrawerContent({\n side = \"left\",\n className,\n backdropClassName,\n children,\n ...rest\n}: DrawerContentProps) {\n const sc = useSilicaClass();\n return (\n <BaseDialog.Portal>\n <BaseDialog.Backdrop className={cx(sc(\"drawer-backdrop\"), backdropClassName)} />\n <BaseDialog.Popup\n data-side={side}\n className={cx(sc(\"drawer-popup\"), className)}\n {...rest}\n >\n {children}\n </BaseDialog.Popup>\n </BaseDialog.Portal>\n );\n}\n\nexport function DrawerTitle({ className, ...rest }: Styled<typeof BaseDialog.Title>) {\n const sc = useSilicaClass();\n return <BaseDialog.Title className={cx(sc(\"drawer-title\"), className)} {...rest} />;\n}\n\nexport function DrawerDescription({\n className,\n ...rest\n}: Styled<typeof BaseDialog.Description>) {\n const sc = useSilicaClass();\n return (\n <BaseDialog.Description\n className={cx(sc(\"drawer-description\"), className)}\n {...rest}\n />\n );\n}\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport interface ListProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Add a hover highlight to rows (for interactive lists). */\n hover?: boolean;\n}\n\n/**\n * Silica List — a vertical list of rows.\n *\n * <List hover>\n * <ListTitle>Team</ListTitle>\n * <ListRow>\n * <Avatar size=\"sm\">AL</Avatar>\n * <ListColGrow>\n * <div className=\"font-medium\">Ada Lovelace</div>\n * <div className=\"text-sm opacity-60\">Owner</div>\n * </ListColGrow>\n * <Button size=\"sm\" variant=\"ghost\">Manage</Button>\n * </ListRow>\n * </List>\n */\nexport const List = React.forwardRef<HTMLDivElement, ListProps>(\n function List({ hover, className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <div ref={ref} className={cx(sc(\"list\"), hover && sc(\"list-hover\"), className)} {...rest} />\n );\n },\n);\n\nexport type ListRowProps = React.HTMLAttributes<HTMLDivElement>;\nexport const ListRow = React.forwardRef<HTMLDivElement, ListRowProps>(\n function ListRow({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <div ref={ref} className={cx(sc(\"list-row\"), className)} {...rest} />;\n },\n);\n\n/** The cell that should take the remaining width (title/body). */\nexport type ListColGrowProps = React.HTMLAttributes<HTMLDivElement>;\nexport const ListColGrow = React.forwardRef<HTMLDivElement, ListColGrowProps>(\n function ListColGrow({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <div ref={ref} className={cx(sc(\"list-col-grow\"), className)} {...rest} />;\n },\n);\n\nexport type ListTitleProps = React.HTMLAttributes<HTMLDivElement>;\nexport const ListTitle = React.forwardRef<HTMLDivElement, ListTitleProps>(\n function ListTitle({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <div ref={ref} className={cx(sc(\"list-title\"), className)} {...rest} />;\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport type FileInputSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface FileInputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"type\" | \"size\"> {\n size?: FileInputSize;\n}\n\n/**\n * Silica FileInput — a styled `<input type=\"file\">`.\n *\n * <FileInput onChange={(e) => setFile(e.target.files?.[0])} />\n * <FileInput accept=\"image/*\" multiple size=\"lg\" />\n */\nexport const FileInput = React.forwardRef<HTMLInputElement, FileInputProps>(\n function FileInput({ size, className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <input\n ref={ref}\n type=\"file\"\n className={cx(\n sc(\"file-input\"),\n size && size !== \"md\" && sc(`file-input-${size}`),\n className,\n )}\n {...rest}\n />\n );\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor } from \"./lib/tokens\";\n\nexport type DockColor = SilicaColor;\n\nexport interface DockProps extends React.HTMLAttributes<HTMLElement> {\n /** Accent color for the active item. Default primary. */\n color?: DockColor;\n}\n\n/**\n * Silica Dock — a bottom navigation bar of icon+label items.\n *\n * <Dock className=\"fixed inset-x-0 bottom-0\">\n * <DockItem active><HomeIcon /><DockLabel>Home</DockLabel></DockItem>\n * <DockItem><SearchIcon /><DockLabel>Search</DockLabel></DockItem>\n * <DockItem><UserIcon /><DockLabel>Profile</DockLabel></DockItem>\n * </Dock>\n */\nexport const Dock = React.forwardRef<HTMLElement, DockProps>(\n function Dock({ color, className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <nav\n ref={ref}\n className={cx(sc(\"dock\"), color && sc(`dock-${color}`), className)}\n {...rest}\n />\n );\n },\n);\n\nexport interface DockItemProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n /** Highlight this item as the current destination. */\n active?: boolean;\n}\n\nexport const DockItem = React.forwardRef<HTMLButtonElement, DockItemProps>(\n function DockItem({ active, className, type = \"button\", ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <button\n ref={ref}\n type={type}\n aria-current={active ? \"page\" : undefined}\n className={cx(sc(\"dock-item\"), active && sc(\"dock-item-active\"), className)}\n {...rest}\n />\n );\n },\n);\n\nexport type DockLabelProps = React.HTMLAttributes<HTMLSpanElement>;\nexport const DockLabel = React.forwardRef<HTMLSpanElement, DockLabelProps>(\n function DockLabel({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <span ref={ref} className={cx(sc(\"dock-label\"), className)} {...rest} />;\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport interface FieldsetProps\n extends React.FieldsetHTMLAttributes<HTMLFieldSetElement> {}\n\n/**\n * Silica Fieldset — a labeled, vertically-stacked group of form controls.\n *\n * <Fieldset>\n * <FieldsetLegend>Profile</FieldsetLegend>\n * <Input placeholder=\"Name\" />\n * <FieldsetLabel>Your full legal name.</FieldsetLabel>\n * </Fieldset>\n *\n * Renders a native `<fieldset>` (chrome reset in CSS) so `disabled` cascades to\n * every control inside it for free.\n */\nexport const Fieldset = React.forwardRef<HTMLFieldSetElement, FieldsetProps>(\n function Fieldset({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <fieldset ref={ref} className={cx(sc(\"fieldset\"), className)} {...rest} />\n );\n },\n);\n\nexport interface FieldsetLegendProps\n extends React.HTMLAttributes<HTMLLegendElement> {}\n\n/** The group heading. Renders a native `<legend>`. */\nexport const FieldsetLegend = React.forwardRef<\n HTMLLegendElement,\n FieldsetLegendProps\n>(function FieldsetLegend({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <legend ref={ref} className={cx(sc(\"fieldset-legend\"), className)} {...rest} />\n );\n});\n\nexport interface FieldsetLabelProps\n extends React.HTMLAttributes<HTMLSpanElement> {}\n\n/** Muted helper/hint text under a control. */\nexport const FieldsetLabel = React.forwardRef<\n HTMLSpanElement,\n FieldsetLabelProps\n>(function FieldsetLabel({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <span ref={ref} className={cx(sc(\"fieldset-label\"), className)} {...rest} />\n );\n});\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport interface LabelProps\n extends React.LabelHTMLAttributes<HTMLLabelElement> {}\n\n/**\n * Silica Label — a plain, muted caption for a control.\n *\n * <Label htmlFor=\"email\">Email</Label>\n * <Input id=\"email\" />\n */\nexport const Label = React.forwardRef<HTMLLabelElement, LabelProps>(\n function Label({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <label ref={ref} className={cx(sc(\"label\"), className)} {...rest} />;\n },\n);\n\nexport interface FloatingLabelProps\n extends Omit<React.LabelHTMLAttributes<HTMLLabelElement>, \"children\"> {\n /** Caption text that floats onto the border when the field is focused/filled. */\n label: React.ReactNode;\n /** The control (an `<Input>`, `<Textarea>`, `<select>`, …). */\n children: React.ReactElement<{ placeholder?: string }>;\n}\n\n/**\n * Silica FloatingLabel — a caption that rests inside the field and floats up on\n * focus or when the field has a value.\n *\n * <FloatingLabel label=\"Email\">\n * <Input type=\"email\" />\n * </FloatingLabel>\n *\n * The \"filled\" state relies on `:placeholder-shown`, so the control needs a\n * placeholder — one (a single space) is injected automatically if you don't set\n * your own.\n */\nexport const FloatingLabel = React.forwardRef<\n HTMLLabelElement,\n FloatingLabelProps\n>(function FloatingLabel({ label, children, className, ...rest }, ref) {\n const sc = useSilicaClass();\n // Guarantee a placeholder so the at-rest (non-floated) state resolves.\n const control = React.isValidElement(children)\n ? React.cloneElement(children, {\n placeholder: children.props.placeholder ?? \" \",\n })\n : children;\n return (\n <label\n ref={ref}\n className={cx(sc(\"floating-label\"), className)}\n {...rest}\n >\n {control}\n <span>{label}</span>\n </label>\n );\n});\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport interface ValidatorProps {\n /** A single form control to apply validity-driven coloring to. */\n children: React.ReactElement<{ className?: string }>;\n}\n\n/**\n * Silica Validator — recolors its child control by validity.\n *\n * <Validator><Input required type=\"email\" /></Validator>\n * <ValidatorHint>Enter a valid email address.</ValidatorHint>\n *\n * Adds the `validator` class to the child so the field flips to error/success\n * on `:user-invalid` / `:user-valid` (after the user interacts) or on an\n * explicit `aria-invalid`. For the hint to reveal itself, render `<ValidatorHint>`\n * as the immediate next sibling of the control.\n */\nexport function Validator({ children }: ValidatorProps) {\n const sc = useSilicaClass();\n if (!React.isValidElement(children)) return <>{children}</>;\n return React.cloneElement(children, {\n className: cx(sc(\"validator\"), children.props.className),\n });\n}\n\nexport interface ValidatorHintProps\n extends React.HTMLAttributes<HTMLParagraphElement> {}\n\n/** Error message that stays hidden until the preceding control is invalid. */\nexport const ValidatorHint = React.forwardRef<\n HTMLParagraphElement,\n ValidatorHintProps\n>(function ValidatorHint({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <p ref={ref} className={cx(sc(\"validator-hint\"), className)} {...rest} />\n );\n});\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport interface DiffProps\n extends Omit<React.HTMLAttributes<HTMLElement>, \"children\"> {\n /** The \"before\" layer (clipped from the split leftward). */\n before: React.ReactNode;\n /** The \"after\" layer (revealed to the right of the split). */\n after: React.ReactNode;\n /** Controlled split position, 0–100 (percent from the left edge). */\n position?: number;\n /** Uncontrolled initial split position, 0–100. Default `50`. */\n defaultPosition?: number;\n /** Fires with the new split position (0–100) as it changes. */\n onPositionChange?: (position: number) => void;\n}\n\nfunction DiffArrows() {\n return (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path\n d=\"m9 7-5 5 5 5M15 7l5 5-5 5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\n\nconst clamp = (n: number) => Math.max(0, Math.min(100, n));\n\n/**\n * Silica Diff — a draggable before/after comparison.\n *\n * <Diff\n * before={<img src={before} alt=\"before\" />}\n * after={<img src={after} alt=\"after\" />}\n * className=\"aspect-video\"\n * />\n *\n * Drag the handle (or click anywhere) to move the split; the handle is a slider,\n * so ←/→ nudge it (Shift for larger steps), Home/End snap to the edges.\n */\nexport const Diff = React.forwardRef<HTMLElement, DiffProps>(function Diff(\n {\n before,\n after,\n position,\n defaultPosition = 50,\n onPositionChange,\n className,\n style,\n ...rest\n },\n ref,\n) {\n const sc = useSilicaClass();\n const [internal, setInternal] = React.useState(clamp(defaultPosition));\n const pos = position === undefined ? internal : clamp(position);\n\n const rootRef = React.useRef<HTMLElement | null>(null);\n const dragging = React.useRef(false);\n\n const setRefs = React.useCallback(\n (node: HTMLElement | null) => {\n rootRef.current = node;\n if (typeof ref === \"function\") ref(node);\n else if (ref)\n (ref as React.MutableRefObject<HTMLElement | null>).current = node;\n },\n [ref],\n );\n\n const commit = (next: number) => {\n const clamped = clamp(next);\n if (position === undefined) setInternal(clamped);\n onPositionChange?.(clamped);\n };\n\n const positionFromClientX = (clientX: number) => {\n const el = rootRef.current;\n if (!el) return pos;\n const rect = el.getBoundingClientRect();\n if (rect.width === 0) return pos;\n return ((clientX - rect.left) / rect.width) * 100;\n };\n\n const onPointerDown = (e: React.PointerEvent<HTMLElement>) => {\n dragging.current = true;\n e.currentTarget.setPointerCapture?.(e.pointerId);\n commit(positionFromClientX(e.clientX));\n };\n const onPointerMove = (e: React.PointerEvent<HTMLElement>) => {\n if (!dragging.current) return;\n commit(positionFromClientX(e.clientX));\n };\n const endDrag = (e: React.PointerEvent<HTMLElement>) => {\n dragging.current = false;\n e.currentTarget.releasePointerCapture?.(e.pointerId);\n };\n\n const onKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n const step = e.shiftKey ? 10 : 2;\n if (e.key === \"ArrowLeft\") commit(pos - step);\n else if (e.key === \"ArrowRight\") commit(pos + step);\n else if (e.key === \"Home\") commit(0);\n else if (e.key === \"End\") commit(100);\n else return;\n e.preventDefault();\n };\n\n const styleVars = {\n ...style,\n [\"--diff-pos\"]: `${pos}%`,\n } as React.CSSProperties;\n\n return (\n <figure\n ref={setRefs}\n className={cx(sc(\"diff\"), className)}\n style={styleVars}\n onPointerDown={onPointerDown}\n onPointerMove={onPointerMove}\n onPointerUp={endDrag}\n onPointerCancel={endDrag}\n {...rest}\n >\n <div className={cx(sc(\"diff-item-1\"))}>{before}</div>\n <div className={cx(sc(\"diff-item-2\"))}>{after}</div>\n <div\n className={cx(sc(\"diff-resizer\"))}\n role=\"slider\"\n tabIndex={0}\n aria-label=\"Comparison position\"\n aria-valuemin={0}\n aria-valuemax={100}\n aria-valuenow={Math.round(pos)}\n onKeyDown={onKeyDown}\n >\n <span className={cx(sc(\"diff-grip\"))}>\n <DiffArrows />\n </span>\n </div>\n </figure>\n );\n});\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport type MaskVariant =\n | \"squircle\"\n | \"heart\"\n | \"circle\"\n | \"hexagon\"\n | \"hexagon-2\"\n | \"triangle\"\n | \"triangle-2\"\n | \"triangle-3\"\n | \"triangle-4\"\n | \"diamond\"\n | \"pentagon\"\n | \"star\"\n | \"star-2\"\n | \"decagon\"\n | \"parallelogram\";\n\nexport interface MaskProps extends React.HTMLAttributes<HTMLDivElement> {\n /** The shape to clip to. */\n variant: MaskVariant;\n}\n\n/**\n * Silica Mask — clips its content (usually an `<img>`) to a shape.\n *\n * <Mask variant=\"hexagon\" className=\"w-24 h-24\">\n * <img src={photo} alt=\"\" className=\"w-full h-full object-cover\" />\n * </Mask>\n *\n * Give the mask a size (via `className`/`style`); the shape scales to fill it.\n * You can also apply the classes directly to an `<img>` if you prefer.\n */\nexport const Mask = React.forwardRef<HTMLDivElement, MaskProps>(function Mask(\n { variant, className, ...rest },\n ref,\n) {\n const sc = useSilicaClass();\n return (\n <div\n ref={ref}\n className={cx(sc(\"mask\"), sc(`mask-${variant}`), className)}\n {...rest}\n />\n );\n});\n","import * as React from \"react\";\nimport { Meter as BaseMeter } from \"@base-ui-components/react/meter\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor, SilicaSize } from \"./lib/tokens\";\n\nexport type MeterColor = SilicaColor;\nexport type MeterSize = SilicaSize;\n\nexport interface MeterProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"color\"> {\n /** The current reading. */\n value: number;\n /** Range floor. Default `0`. */\n min?: number;\n /** Range ceiling. Default `100`. */\n max?: number;\n /** Fill color; maps to `meter-<color>`. */\n color?: MeterColor;\n /** Track height; default `md`. */\n size?: MeterSize;\n /** Optional label shown in the header row. */\n label?: React.ReactNode;\n /** Show the formatted value in the header row. Default `false`. */\n showValue?: boolean;\n /** `Intl.NumberFormat` options for the displayed value. */\n format?: Intl.NumberFormatOptions;\n}\n\n/**\n * Silica Meter — a static measurement within a known range (disk usage, score,\n * capacity). Behavior/accessibility from Base UI's Meter; look from Silica.\n *\n * <Meter value={72} label=\"Storage\" showValue color=\"warning\" />\n */\nexport const Meter = React.forwardRef<HTMLDivElement, MeterProps>(function Meter(\n {\n value,\n min = 0,\n max = 100,\n color,\n size = \"md\",\n label,\n showValue = false,\n format,\n className,\n ...rest\n },\n ref,\n) {\n const sc = useSilicaClass();\n const showHeader = label != null || showValue;\n return (\n <BaseMeter.Root\n ref={ref}\n value={value}\n min={min}\n max={max}\n format={format}\n className={cx(\n sc(\"meter\"),\n color && sc(`meter-${color}`),\n size !== \"md\" && sc(`meter-${size}`),\n className,\n )}\n {...rest}\n >\n {showHeader && (\n <div className={cx(sc(\"meter-header\"))}>\n {label != null && (\n <BaseMeter.Label className={cx(sc(\"meter-label\"))}>\n {label}\n </BaseMeter.Label>\n )}\n {showValue && <BaseMeter.Value className={cx(sc(\"meter-value\"))} />}\n </div>\n )}\n <BaseMeter.Track className={cx(sc(\"meter-track\"))}>\n <BaseMeter.Indicator className={cx(sc(\"meter-indicator\"))} />\n </BaseMeter.Track>\n </BaseMeter.Root>\n );\n});\n","import * as React from \"react\";\nimport { ScrollArea as BaseScrollArea } from \"@base-ui-components/react/scroll-area\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport type ScrollAreaOrientation = \"vertical\" | \"horizontal\" | \"both\";\n\nexport interface ScrollAreaProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Which scrollbars to render. Default `vertical`. */\n orientation?: ScrollAreaOrientation;\n}\n\n/**\n * Silica ScrollArea — a panel with custom overlay scrollbars.\n *\n * <ScrollArea className=\"h-64 w-72\">\n * <div className=\"p-4\">…long content…</div>\n * </ScrollArea>\n *\n * Give it a bounded size (via `className`/`style`); the content scrolls inside\n * and the overlay scrollbars fade in on hover. Use `orientation=\"both\"` for a\n * two-axis panel.\n */\nexport const ScrollArea = React.forwardRef<HTMLDivElement, ScrollAreaProps>(\n function ScrollArea({ orientation = \"vertical\", className, children, ...rest }, ref) {\n const sc = useSilicaClass();\n const showV = orientation === \"vertical\" || orientation === \"both\";\n const showH = orientation === \"horizontal\" || orientation === \"both\";\n return (\n <BaseScrollArea.Root\n ref={ref}\n className={cx(sc(\"scroll-area\"), className)}\n {...rest}\n >\n <BaseScrollArea.Viewport className={cx(sc(\"scroll-area-viewport\"))}>\n <BaseScrollArea.Content className={cx(sc(\"scroll-area-content\"))}>\n {children}\n </BaseScrollArea.Content>\n </BaseScrollArea.Viewport>\n {showV && (\n <BaseScrollArea.Scrollbar\n orientation=\"vertical\"\n className={cx(sc(\"scroll-area-scrollbar\"))}\n >\n <BaseScrollArea.Thumb className={cx(sc(\"scroll-area-thumb\"))} />\n </BaseScrollArea.Scrollbar>\n )}\n {showH && (\n <BaseScrollArea.Scrollbar\n orientation=\"horizontal\"\n className={cx(sc(\"scroll-area-scrollbar\"))}\n >\n <BaseScrollArea.Thumb className={cx(sc(\"scroll-area-thumb\"))} />\n </BaseScrollArea.Scrollbar>\n )}\n {orientation === \"both\" && (\n <BaseScrollArea.Corner className={cx(sc(\"scroll-area-corner\"))} />\n )}\n </BaseScrollArea.Root>\n );\n },\n);\n","import * as React from \"react\";\nimport { PreviewCard as BasePreviewCard } from \"@base-ui-components/react/preview-card\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\n// Derive side/align straight from Base UI so they never drift.\ntype PositionerProps = React.ComponentProps<typeof BasePreviewCard.Positioner>;\nexport type PreviewCardSide = NonNullable<PositionerProps[\"side\"]>;\nexport type PreviewCardAlign = NonNullable<PositionerProps[\"align\"]>;\n\nexport interface PreviewCardProps {\n /** The trigger (usually a link). Base UI merges hover/focus behavior onto it. */\n children: React.ReactElement;\n /** The card body shown on hover/focus. */\n content: React.ReactNode;\n /** Preferred side. Default `bottom` (flips to avoid collisions). */\n side?: PreviewCardSide;\n /** Alignment along that side. Default `center`. */\n align?: PreviewCardAlign;\n /** Gap between trigger and card, in px. Default `8`. */\n sideOffset?: number;\n /** Hover-open delay in ms. */\n delay?: number;\n /** Close delay in ms. */\n closeDelay?: number;\n /** Controlled open state. */\n open?: boolean;\n /** Uncontrolled initial open state. */\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n /** Show the little arrow. Default `false`. */\n arrow?: boolean;\n /** Extra class on the card surface. */\n className?: string;\n}\n\n/**\n * Silica PreviewCard — a hover/focus link preview (hovercard). Behavior from\n * Base UI, look from Silica's `.preview-card` CSS.\n *\n * <PreviewCard content={<UserPreview user={u} />}>\n * <Link href={u.url}>@{u.handle}</Link>\n * </PreviewCard>\n */\nexport function PreviewCard({\n children,\n content,\n side = \"bottom\",\n align = \"center\",\n sideOffset = 8,\n delay,\n closeDelay,\n open,\n defaultOpen,\n onOpenChange,\n arrow = false,\n className,\n}: PreviewCardProps) {\n const sc = useSilicaClass();\n return (\n <BasePreviewCard.Root\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n >\n <BasePreviewCard.Trigger\n // children is any valid element; Base UI's render wants its props typed\n // as an index — a safe cast, not a behavior change.\n render={children as React.ReactElement<Record<string, unknown>>}\n delay={delay}\n closeDelay={closeDelay}\n />\n <BasePreviewCard.Portal>\n <BasePreviewCard.Positioner\n side={side}\n align={align}\n sideOffset={sideOffset}\n >\n <BasePreviewCard.Popup className={cx(sc(\"preview-card\"), className)}>\n {arrow && (\n <BasePreviewCard.Arrow className={cx(sc(\"preview-card-arrow\"))} />\n )}\n {content}\n </BasePreviewCard.Popup>\n </BasePreviewCard.Positioner>\n </BasePreviewCard.Portal>\n </BasePreviewCard.Root>\n );\n}\n","import * as React from \"react\";\nimport { Toolbar as BaseToolbar } from \"@base-ui-components/react/toolbar\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\n// Narrow Base UI's `className` (which also allows a function) to a string so it\n// composes with cx().\ntype Styled<T extends React.ElementType> = Omit<\n React.ComponentPropsWithoutRef<T>,\n \"className\"\n> & { className?: string };\n\nexport type ToolbarProps = Styled<typeof BaseToolbar.Root>;\nexport type ToolbarButtonProps = Styled<typeof BaseToolbar.Button>;\nexport type ToolbarGroupProps = Styled<typeof BaseToolbar.Group>;\nexport type ToolbarLinkProps = Styled<typeof BaseToolbar.Link>;\nexport type ToolbarSeparatorProps = Styled<typeof BaseToolbar.Separator>;\n\n/**\n * Silica Toolbar — a group of controls with roving arrow-key focus.\n *\n * <Toolbar aria-label=\"Formatting\">\n * <ToolbarButton><BoldIcon /></ToolbarButton>\n * <ToolbarButton><ItalicIcon /></ToolbarButton>\n * <ToolbarSeparator />\n * <ToolbarLink href=\"/help\">Help</ToolbarLink>\n * </Toolbar>\n */\nexport const Toolbar = React.forwardRef<HTMLDivElement, ToolbarProps>(\n function Toolbar({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <BaseToolbar.Root\n ref={ref}\n className={cx(sc(\"toolbar\"), className)}\n {...rest}\n />\n );\n },\n);\n\nexport const ToolbarButton = React.forwardRef<\n HTMLButtonElement,\n ToolbarButtonProps\n>(function ToolbarButton({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <BaseToolbar.Button\n ref={ref}\n className={cx(sc(\"toolbar-button\"), className)}\n {...rest}\n />\n );\n});\n\nexport const ToolbarGroup = React.forwardRef<HTMLDivElement, ToolbarGroupProps>(\n function ToolbarGroup({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <BaseToolbar.Group\n ref={ref}\n className={cx(sc(\"toolbar-group\"), className)}\n {...rest}\n />\n );\n },\n);\n\nexport const ToolbarLink = React.forwardRef<HTMLAnchorElement, ToolbarLinkProps>(\n function ToolbarLink({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <BaseToolbar.Link\n ref={ref}\n className={cx(sc(\"toolbar-link\"), className)}\n {...rest}\n />\n );\n },\n);\n\nexport const ToolbarSeparator = React.forwardRef<\n HTMLDivElement,\n ToolbarSeparatorProps\n>(function ToolbarSeparator({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <BaseToolbar.Separator\n ref={ref}\n className={cx(sc(\"toolbar-separator\"), className)}\n {...rest}\n />\n );\n});\n","import * as React from \"react\";\nimport { Button } from \"./button\";\nimport type { ButtonColor, ButtonVariant } from \"./button\";\n\nexport interface ThemeControllerProps {\n /** The themes to cycle through. Default `[\"light\", \"dark\"]`. */\n themes?: string[];\n /** Controlled current theme. */\n value?: string;\n /** Uncontrolled initial theme (falls back to stored value, then the target's\n * current `data-theme`, then the first theme). */\n defaultValue?: string;\n /** Called with the new theme when it changes. */\n onChange?: (theme: string) => void;\n /** Element to set `data-theme` on. Default `document.documentElement`. */\n target?: HTMLElement | null | (() => HTMLElement | null);\n /** localStorage key for persistence; `null` disables it. Default `\"silica-theme\"`. */\n storageKey?: string | null;\n /** Show the current theme name next to the icon. */\n labels?: boolean;\n /** Button variant. Default `ghost`. */\n variant?: ButtonVariant;\n /** Button color. Default `neutral`. */\n color?: ButtonColor;\n className?: string;\n \"aria-label\"?: string;\n}\n\nfunction SunIcon() {\n return (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <circle cx=\"12\" cy=\"12\" r=\"4\" />\n <path\n d=\"M12 2v2M12 20v2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M2 12h2M20 12h2M4.9 19.1l1.4-1.4M17.7 6.3l1.4-1.4\"\n strokeLinecap=\"round\"\n />\n </svg>\n );\n}\n\nfunction MoonIcon() {\n return (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path\n d=\"M21 12.8A9 9 0 1 1 11.2 3a7 7 0 0 0 9.8 9.8Z\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\n\nfunction PaletteIcon() {\n return (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <circle cx=\"13.5\" cy=\"6.5\" r=\"1.5\" fill=\"currentColor\" stroke=\"none\" />\n <circle cx=\"17.5\" cy=\"10.5\" r=\"1.5\" fill=\"currentColor\" stroke=\"none\" />\n <circle cx=\"6.5\" cy=\"12.5\" r=\"1.5\" fill=\"currentColor\" stroke=\"none\" />\n <path d=\"M12 2a10 10 0 1 0 0 20c1.1 0 2-.9 2-2 0-.5-.2-1-.5-1.3-.3-.4-.5-.8-.5-1.2 0-1 .8-1.5 1.8-1.5H16a6 6 0 0 0 6-6c0-4.4-4.5-8-10-8Z\" />\n </svg>\n );\n}\n\n/**\n * Silica ThemeController — a control that switches the active `data-theme`.\n *\n * <ThemeController /> // light ⇄ dark toggle\n * <ThemeController themes={[\"light\",\"dark\",\"dim\"]} labels />\n *\n * Applies the theme to `document.documentElement` (or a `target`) and persists\n * it to localStorage. Cycles to the next theme on click; a plain light/dark pair\n * shows a sun/moon toggle.\n */\nexport function ThemeController({\n themes = [\"light\", \"dark\"],\n value,\n defaultValue,\n onChange,\n target,\n storageKey = \"silica-theme\",\n labels = false,\n variant = \"ghost\",\n color = \"neutral\",\n className,\n \"aria-label\": ariaLabel,\n}: ThemeControllerProps) {\n const getTarget = React.useCallback((): HTMLElement | null => {\n if (typeof target === \"function\") return target();\n if (target) return target;\n return typeof document !== \"undefined\" ? document.documentElement : null;\n }, [target]);\n\n const resolveInitial = (): string => {\n if (value) return value;\n if (typeof window !== \"undefined\") {\n if (storageKey) {\n const stored = window.localStorage.getItem(storageKey);\n if (stored && themes.includes(stored)) return stored;\n }\n const attr = getTarget()?.dataset.theme;\n if (attr && themes.includes(attr)) return attr;\n }\n return defaultValue ?? themes[0] ?? \"light\";\n };\n\n const [internal, setInternal] = React.useState<string>(resolveInitial);\n const current = value ?? internal;\n\n // Keep the target in sync with the current theme.\n React.useEffect(() => {\n const el = getTarget();\n if (el) el.dataset.theme = current;\n }, [current, getTarget]);\n\n const apply = (next: string) => {\n if (value === undefined) setInternal(next);\n const el = getTarget();\n if (el) el.dataset.theme = next;\n if (storageKey && typeof window !== \"undefined\") {\n window.localStorage.setItem(storageKey, next);\n }\n onChange?.(next);\n };\n\n const cycle = () => {\n const i = themes.indexOf(current);\n const next = themes[(i + 1) % themes.length] ?? themes[0] ?? current;\n apply(next);\n };\n\n const isLightDarkPair =\n themes.length === 2 &&\n themes.includes(\"light\") &&\n themes.includes(\"dark\");\n const icon = isLightDarkPair ? (\n current === \"dark\" ? (\n <SunIcon />\n ) : (\n <MoonIcon />\n )\n ) : (\n <PaletteIcon />\n );\n\n return (\n <Button\n type=\"button\"\n variant={variant}\n color={color}\n onClick={cycle}\n className={className}\n aria-label={ariaLabel ?? `Switch theme (current: ${current})`}\n title={`Theme: ${current}`}\n >\n {icon}\n {labels && <span className=\"capitalize\">{current}</span>}\n </Button>\n );\n}\n","import * as React from \"react\";\nimport { NavigationMenu as BaseNav } from \"@base-ui-components/react/navigation-menu\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\ntype Styled<T extends React.ElementType> = Omit<\n React.ComponentPropsWithoutRef<T>,\n \"className\"\n> & { className?: string };\n\ntype PositionerProps = React.ComponentProps<typeof BaseNav.Positioner>;\nexport type NavigationMenuSide = NonNullable<PositionerProps[\"side\"]>;\nexport type NavigationMenuAlign = NonNullable<PositionerProps[\"align\"]>;\n\nexport interface NavigationMenuProps\n extends Omit<Styled<typeof BaseNav.Root>, \"children\"> {\n children?: React.ReactNode;\n /** Preferred side for the dropdown panel. Default `bottom`. */\n side?: NavigationMenuSide;\n /** Alignment. Default `center`. */\n align?: NavigationMenuAlign;\n /** Gap between the bar and the panel, in px. Default `8`. */\n sideOffset?: number;\n}\n\nfunction ChevronDown() {\n return (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path d=\"m6 9 6 6 6-6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n );\n}\n\n/**\n * Silica NavigationMenu — a site-nav bar with rich dropdown panels (mega menu).\n * Behavior from Base UI (shared animated viewport that resizes between panels);\n * look from Silica.\n *\n * <NavigationMenu>\n * <NavigationMenuItem>\n * <NavigationMenuTrigger>Products</NavigationMenuTrigger>\n * <NavigationMenuContent>\n * <ul className=\"grid gap-1\">…</ul>\n * </NavigationMenuContent>\n * </NavigationMenuItem>\n * <NavigationMenuItem>\n * <NavigationMenuLink href=\"/pricing\">Pricing</NavigationMenuLink>\n * </NavigationMenuItem>\n * </NavigationMenu>\n */\nexport function NavigationMenu({\n children,\n className,\n side = \"bottom\",\n align = \"center\",\n sideOffset = 8,\n ...rest\n}: NavigationMenuProps) {\n const sc = useSilicaClass();\n return (\n <BaseNav.Root className={cx(sc(\"navigation-menu\"), className)} {...rest}>\n <BaseNav.List className={cx(sc(\"navigation-menu-list\"))}>\n {children}\n </BaseNav.List>\n <BaseNav.Portal>\n <BaseNav.Positioner\n className={cx(sc(\"navigation-menu-positioner\"))}\n side={side}\n align={align}\n sideOffset={sideOffset}\n >\n <BaseNav.Popup className={cx(sc(\"navigation-menu-popup\"))}>\n <BaseNav.Viewport\n className={cx(sc(\"navigation-menu-viewport\"))}\n />\n </BaseNav.Popup>\n </BaseNav.Positioner>\n </BaseNav.Portal>\n </BaseNav.Root>\n );\n}\n\nexport type NavigationMenuItemProps = Styled<typeof BaseNav.Item>;\n\n/** A bar item — holds either a Trigger + Content, or a Link. */\nexport const NavigationMenuItem = React.forwardRef<\n React.ComponentRef<typeof BaseNav.Item>,\n NavigationMenuItemProps\n>(function NavigationMenuItem({ className, ...rest }, ref) {\n return <BaseNav.Item ref={ref} className={className} {...rest} />;\n});\n\nexport type NavigationMenuTriggerProps = Styled<typeof BaseNav.Trigger>;\n\n/** Opens this item's panel; carries an auto-rotating chevron. */\nexport const NavigationMenuTrigger = React.forwardRef<\n HTMLButtonElement,\n NavigationMenuTriggerProps\n>(function NavigationMenuTrigger({ className, children, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <BaseNav.Trigger\n ref={ref}\n className={cx(sc(\"navigation-menu-trigger\"), className)}\n {...rest}\n >\n {children}\n <BaseNav.Icon className={cx(sc(\"navigation-menu-icon\"))}>\n <ChevronDown />\n </BaseNav.Icon>\n </BaseNav.Trigger>\n );\n});\n\nexport type NavigationMenuContentProps = Styled<typeof BaseNav.Content>;\n\n/** The dropdown panel for an item (teleported into the shared viewport). */\nexport const NavigationMenuContent = React.forwardRef<\n HTMLDivElement,\n NavigationMenuContentProps\n>(function NavigationMenuContent({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <BaseNav.Content\n ref={ref}\n className={cx(sc(\"navigation-menu-content\"), className)}\n {...rest}\n />\n );\n});\n\nexport type NavigationMenuLinkProps = Styled<typeof BaseNav.Link>;\n\n/** A plain bar link (no panel). */\nexport const NavigationMenuLink = React.forwardRef<\n HTMLAnchorElement,\n NavigationMenuLinkProps\n>(function NavigationMenuLink({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <BaseNav.Link\n ref={ref}\n className={cx(sc(\"navigation-menu-link\"), className)}\n {...rest}\n />\n );\n});\n","import * as React from \"react\";\nimport { Menubar as BaseMenubar } from \"@base-ui-components/react/menubar\";\nimport { Menu as BaseMenu } from \"@base-ui-components/react/menu\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\ntype Styled<T extends React.ElementType> = Omit<\n React.ComponentPropsWithoutRef<T>,\n \"className\"\n> & { className?: string };\n\ntype PositionerProps = React.ComponentProps<typeof BaseMenu.Positioner>;\nexport type MenubarSide = NonNullable<PositionerProps[\"side\"]>;\nexport type MenubarAlign = NonNullable<PositionerProps[\"align\"]>;\n\nexport type MenubarProps = Styled<typeof BaseMenubar>;\n\n/**\n * Silica Menubar — a bar of menus (File / Edit / View …). Behavior from Base UI\n * (arrow between menus, hover to switch once open, roving focus). Each menu is a\n * `MenubarMenu`; its popup reuses the shared `.dropdown*` surface.\n *\n * <Menubar>\n * <MenubarMenu>\n * <MenubarTrigger>File</MenubarTrigger>\n * <MenubarContent>\n * <MenubarItem>New</MenubarItem>\n * <MenubarSeparator />\n * <MenubarItem>Exit</MenubarItem>\n * </MenubarContent>\n * </MenubarMenu>\n * </Menubar>\n */\nexport const Menubar = React.forwardRef<HTMLDivElement, MenubarProps>(\n function Menubar({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <BaseMenubar ref={ref} className={cx(sc(\"menubar\"), className)} {...rest} />\n );\n },\n);\n\n/** A single menu within the bar. */\nexport const MenubarMenu = BaseMenu.Root;\n\nexport type MenubarTriggerProps = Styled<typeof BaseMenu.Trigger>;\n\nexport const MenubarTrigger = React.forwardRef<\n HTMLButtonElement,\n MenubarTriggerProps\n>(function MenubarTrigger({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <BaseMenu.Trigger\n ref={ref}\n className={cx(sc(\"menubar-trigger\"), className)}\n {...rest}\n />\n );\n});\n\nexport interface MenubarContentProps\n extends Omit<Styled<typeof BaseMenu.Popup>, \"children\"> {\n children?: React.ReactNode;\n side?: MenubarSide;\n align?: MenubarAlign;\n sideOffset?: number;\n}\n\n/** Portal + positioner + the menu popup (shared dropdown surface). */\nexport function MenubarContent({\n className,\n children,\n side = \"bottom\",\n align = \"start\",\n sideOffset = 6,\n ...rest\n}: MenubarContentProps) {\n const sc = useSilicaClass();\n return (\n <BaseMenu.Portal>\n <BaseMenu.Positioner side={side} align={align} sideOffset={sideOffset}>\n <BaseMenu.Popup className={cx(sc(\"dropdown\"), className)} {...rest}>\n {children}\n </BaseMenu.Popup>\n </BaseMenu.Positioner>\n </BaseMenu.Portal>\n );\n}\n\nexport function MenubarItem({\n className,\n ...rest\n}: Styled<typeof BaseMenu.Item>) {\n const sc = useSilicaClass();\n return (\n <BaseMenu.Item className={cx(sc(\"dropdown-item\"), className)} {...rest} />\n );\n}\n\nexport function MenubarSeparator({\n className,\n ...rest\n}: Styled<typeof BaseMenu.Separator>) {\n const sc = useSilicaClass();\n return (\n <BaseMenu.Separator\n className={cx(sc(\"dropdown-separator\"), className)}\n {...rest}\n />\n );\n}\n\nexport function MenubarGroup(\n props: React.ComponentProps<typeof BaseMenu.Group>,\n) {\n return <BaseMenu.Group {...props} />;\n}\n\nexport function MenubarLabel({\n className,\n ...rest\n}: Styled<typeof BaseMenu.GroupLabel>) {\n const sc = useSilicaClass();\n return (\n <BaseMenu.GroupLabel\n className={cx(sc(\"dropdown-label\"), className)}\n {...rest}\n />\n );\n}\n","import * as React from \"react\";\nimport { ContextMenu as BaseContextMenu } from \"@base-ui-components/react/context-menu\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\ntype Styled<T extends React.ElementType> = Omit<\n React.ComponentPropsWithoutRef<T>,\n \"className\"\n> & { className?: string };\n\nexport type ContextMenuProps = React.ComponentProps<typeof BaseContextMenu.Root>;\n\n/**\n * Silica ContextMenu — a right-click menu. Behavior from Base UI (opens at the\n * pointer, roving focus, typeahead, dismissal); its popup reuses the shared\n * `.dropdown*` surface.\n *\n * <ContextMenu>\n * <ContextMenuTrigger className=\"grid h-40 place-items-center rounded-box border border-dashed\">\n * Right-click here\n * </ContextMenuTrigger>\n * <ContextMenuContent>\n * <ContextMenuGroup>\n * <ContextMenuLabel>Actions</ContextMenuLabel>\n * <ContextMenuItem>Cut</ContextMenuItem>\n * <ContextMenuItem>Copy</ContextMenuItem>\n * </ContextMenuGroup>\n * <ContextMenuSeparator />\n * <ContextMenuItem disabled>Paste</ContextMenuItem>\n * </ContextMenuContent>\n * </ContextMenu>\n */\nexport const ContextMenu = BaseContextMenu.Root;\n\nexport type ContextMenuTriggerProps = Styled<typeof BaseContextMenu.Trigger>;\n\n/** The right-click area. */\nexport const ContextMenuTrigger = React.forwardRef<\n HTMLDivElement,\n ContextMenuTriggerProps\n>(function ContextMenuTrigger({ className, ...rest }, ref) {\n return <BaseContextMenu.Trigger ref={ref} className={className} {...rest} />;\n});\n\nexport interface ContextMenuContentProps\n extends Omit<Styled<typeof BaseContextMenu.Popup>, \"children\"> {\n children?: React.ReactNode;\n}\n\n/** Portal + positioner + the menu popup (shared dropdown surface). */\nexport function ContextMenuContent({\n className,\n children,\n ...rest\n}: ContextMenuContentProps) {\n const sc = useSilicaClass();\n return (\n <BaseContextMenu.Portal>\n <BaseContextMenu.Positioner>\n <BaseContextMenu.Popup className={cx(sc(\"dropdown\"), className)} {...rest}>\n {children}\n </BaseContextMenu.Popup>\n </BaseContextMenu.Positioner>\n </BaseContextMenu.Portal>\n );\n}\n\nexport function ContextMenuItem({\n className,\n ...rest\n}: Styled<typeof BaseContextMenu.Item>) {\n const sc = useSilicaClass();\n return (\n <BaseContextMenu.Item\n className={cx(sc(\"dropdown-item\"), className)}\n {...rest}\n />\n );\n}\n\nexport function ContextMenuSeparator({\n className,\n ...rest\n}: Styled<typeof BaseContextMenu.Separator>) {\n const sc = useSilicaClass();\n return (\n <BaseContextMenu.Separator\n className={cx(sc(\"dropdown-separator\"), className)}\n {...rest}\n />\n );\n}\n\nexport function ContextMenuGroup(\n props: React.ComponentProps<typeof BaseContextMenu.Group>,\n) {\n return <BaseContextMenu.Group {...props} />;\n}\n\nexport function ContextMenuLabel({\n className,\n ...rest\n}: Styled<typeof BaseContextMenu.GroupLabel>) {\n const sc = useSilicaClass();\n return (\n <BaseContextMenu.GroupLabel\n className={cx(sc(\"dropdown-label\"), className)}\n {...rest}\n />\n );\n}\n","import * as React from \"react\";\nimport { ToggleGroup as BaseToggleGroup } from \"@base-ui-components/react/toggle-group\";\nimport { Toggle as BaseToggle } from \"@base-ui-components/react/toggle\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\ntype Styled<T extends React.ElementType> = Omit<\n React.ComponentPropsWithoutRef<T>,\n \"className\"\n> & { className?: string };\n\nexport type ToggleGroupProps = Styled<typeof BaseToggleGroup>;\nexport type ToggleGroupItemProps = Styled<typeof BaseToggle>;\n\n/**\n * Silica ToggleGroup — a segmented control (single- or multi-select). Behavior\n * from Base UI (roving focus, pressed state); look from Silica. This is the\n * button-based control — for an on/off switch use `Toggle`.\n *\n * <ToggleGroup defaultValue={[\"list\"]}>\n * <ToggleGroupItem value=\"list\">List</ToggleGroupItem>\n * <ToggleGroupItem value=\"grid\">Grid</ToggleGroupItem>\n * </ToggleGroup>\n */\nexport const ToggleGroup = React.forwardRef<HTMLDivElement, ToggleGroupProps>(\n function ToggleGroup({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <BaseToggleGroup\n ref={ref}\n className={cx(sc(\"toggle-group\"), className)}\n {...rest}\n />\n );\n },\n);\n\n/** One selectable button within a ToggleGroup. */\nexport const ToggleGroupItem = React.forwardRef<\n HTMLButtonElement,\n ToggleGroupItemProps\n>(function ToggleGroupItem({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <BaseToggle\n ref={ref}\n className={cx(sc(\"toggle-group-item\"), className)}\n {...rest}\n />\n );\n});\n","import * as React from \"react\";\nimport { Field as BaseField } from \"@base-ui-components/react/field\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\ntype Styled<T extends React.ElementType> = Omit<\n React.ComponentPropsWithoutRef<T>,\n \"className\"\n> & { className?: string };\n\nexport type FieldProps = Styled<typeof BaseField.Root>;\nexport type FieldLabelProps = Styled<typeof BaseField.Label>;\nexport type FieldControlProps = Styled<typeof BaseField.Control>;\nexport type FieldDescriptionProps = Styled<typeof BaseField.Description>;\nexport type FieldErrorProps = Styled<typeof BaseField.Error>;\n\n/**\n * Silica Field — an accessible form field. Base UI wires the label, control,\n * description, and error together (ids, aria, validity tracking); Silica styles\n * them. Wrap any Silica control.\n *\n * <Field name=\"email\">\n * <FieldLabel>Email</FieldLabel>\n * <FieldControl type=\"email\" required placeholder=\"you@example.com\" />\n * <FieldDescription>We'll never share it.</FieldDescription>\n * <FieldError />\n * </Field>\n *\n * For a non-input control, pass it via `render`:\n * <FieldControl render={<Textarea />} />\n */\nexport const Field = React.forwardRef<HTMLDivElement, FieldProps>(function Field(\n { className, ...rest },\n ref,\n) {\n const sc = useSilicaClass();\n return (\n <BaseField.Root ref={ref} className={cx(sc(\"field\"), className)} {...rest} />\n );\n});\n\nexport const FieldLabel = React.forwardRef<HTMLLabelElement, FieldLabelProps>(\n function FieldLabel({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <BaseField.Label\n ref={ref}\n className={cx(sc(\"field-label\"), className)}\n {...rest}\n />\n );\n },\n);\n\n/**\n * The control. Defaults to a native input styled as a Silica `.input`; when you\n * pass `render` (a Textarea/Select/etc.), it carries its own styling instead.\n */\nexport const FieldControl = React.forwardRef<\n HTMLInputElement,\n FieldControlProps\n>(function FieldControl({ className, render, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <BaseField.Control\n ref={ref}\n render={render}\n className={cx(render ? undefined : sc(\"input\"), className)}\n {...rest}\n />\n );\n});\n\nexport const FieldDescription = React.forwardRef<\n HTMLParagraphElement,\n FieldDescriptionProps\n>(function FieldDescription({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <BaseField.Description\n ref={ref}\n className={cx(sc(\"field-description\"), className)}\n {...rest}\n />\n );\n});\n\n/** Error message; renders only when the field is invalid. */\nexport const FieldError = React.forwardRef<HTMLParagraphElement, FieldErrorProps>(\n function FieldError({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <BaseField.Error\n ref={ref}\n className={cx(sc(\"field-error\"), className)}\n {...rest}\n />\n );\n },\n);\n","import * as React from \"react\";\nimport { Form as BaseForm } from \"@base-ui-components/react/form\";\n\nexport type FormProps = React.ComponentPropsWithoutRef<typeof BaseForm>;\n\n/**\n * Silica Form — a `<form>` that coordinates its Fields' validation. Behavior\n * from Base UI: it runs each Field's validation on submit, focuses the first\n * invalid control, and accepts server-returned `errors` keyed by field `name`.\n * Presentational only otherwise — lay it out with `Field`s and utilities.\n *\n * <Form errors={serverErrors} onSubmit={…}>\n * <Field name=\"email\">…</Field>\n * <Button type=\"submit\">Save</Button>\n * </Form>\n */\nexport const Form = React.forwardRef<HTMLFormElement, FormProps>(function Form(\n props,\n ref,\n) {\n return <BaseForm ref={ref} {...props} />;\n});\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor, SilicaSize } from \"./lib/tokens\";\n\ninterface RadioGroupContextValue {\n name: string;\n value: string | undefined;\n select: (value: string) => void;\n disabled?: boolean;\n color?: SilicaColor;\n size?: SilicaSize;\n}\n\nconst RadioGroupContext = React.createContext<RadioGroupContextValue | null>(\n null,\n);\n\nexport type RadioGroupOrientation = \"vertical\" | \"horizontal\";\n\nexport interface RadioGroupProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\" | \"defaultValue\"> {\n /** Controlled selected value. */\n value?: string;\n /** Uncontrolled initial value. */\n defaultValue?: string;\n /** Fires with the newly-selected value. */\n onValueChange?: (value: string) => void;\n /** Shared radio `name` (auto-generated if omitted). */\n name?: string;\n /** Stack (`vertical`, default) or row (`horizontal`). */\n orientation?: RadioGroupOrientation;\n /** Disable every option. */\n disabled?: boolean;\n /** Default accent color for the options. */\n color?: SilicaColor;\n /** Default size for the options. */\n size?: SilicaSize;\n}\n\n/**\n * Silica RadioGroup — a managed set of radios (native inputs, so arrow-key\n * navigation comes free). Pair with `RadioOption`s.\n *\n * <RadioGroup defaultValue=\"card\" name=\"pay\">\n * <RadioOption value=\"card\">Card</RadioOption>\n * <RadioOption value=\"ach\">Bank transfer</RadioOption>\n * </RadioGroup>\n */\nexport function RadioGroup({\n value,\n defaultValue,\n onValueChange,\n name,\n orientation = \"vertical\",\n disabled,\n color,\n size,\n className,\n children,\n ...rest\n}: RadioGroupProps) {\n const sc = useSilicaClass();\n const autoName = React.useId();\n const [internal, setInternal] = React.useState<string | undefined>(\n defaultValue,\n );\n const current = value !== undefined ? value : internal;\n\n const select = React.useCallback(\n (v: string) => {\n if (value === undefined) setInternal(v);\n onValueChange?.(v);\n },\n [value, onValueChange],\n );\n\n const ctx = React.useMemo<RadioGroupContextValue>(\n () => ({ name: name ?? autoName, value: current, select, disabled, color, size }),\n [name, autoName, current, select, disabled, color, size],\n );\n\n return (\n <RadioGroupContext.Provider value={ctx}>\n <div\n role=\"radiogroup\"\n data-orientation={orientation}\n className={cx(sc(\"radio-group\"), className)}\n {...rest}\n >\n {children}\n </div>\n </RadioGroupContext.Provider>\n );\n}\n\nexport interface RadioOptionProps\n extends Omit<React.LabelHTMLAttributes<HTMLLabelElement>, \"onChange\"> {\n /** This option's value. */\n value: string;\n disabled?: boolean;\n color?: SilicaColor;\n size?: SilicaSize;\n}\n\n/** One labeled radio within a RadioGroup. */\nexport function RadioOption({\n value,\n disabled,\n color,\n size,\n className,\n children,\n ...rest\n}: RadioOptionProps) {\n const sc = useSilicaClass();\n const group = React.useContext(RadioGroupContext);\n const c = color ?? group?.color;\n const s = size ?? group?.size ?? \"md\";\n const isDisabled = disabled ?? group?.disabled;\n const radioClasses = cx(\n sc(\"radio\"),\n c && sc(`radio-${c}`),\n s !== \"md\" && sc(`radio-${s}`),\n );\n return (\n <label className={cx(sc(\"radio-option\"), className)} {...rest}>\n <input\n type=\"radio\"\n className={radioClasses}\n name={group?.name}\n value={value}\n checked={group ? group.value === value : undefined}\n onChange={group ? () => group.select(value) : undefined}\n disabled={isDisabled}\n />\n {children != null && <span>{children}</span>}\n </label>\n );\n}\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor, SilicaSize } from \"./lib/tokens\";\n\ninterface CheckboxGroupContextValue {\n value: string[];\n toggle: (value: string, checked: boolean) => void;\n disabled?: boolean;\n color?: SilicaColor;\n size?: SilicaSize;\n}\n\nconst CheckboxGroupContext =\n React.createContext<CheckboxGroupContextValue | null>(null);\n\nexport type CheckboxGroupOrientation = \"vertical\" | \"horizontal\";\n\nexport interface CheckboxGroupProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\" | \"defaultValue\"> {\n /** Controlled array of checked values. */\n value?: string[];\n /** Uncontrolled initial checked values. */\n defaultValue?: string[];\n /** Fires with the new array of checked values. */\n onValueChange?: (value: string[]) => void;\n /** Stack (`vertical`, default) or row (`horizontal`). */\n orientation?: CheckboxGroupOrientation;\n /** Disable every option. */\n disabled?: boolean;\n /** Default accent color for the options. */\n color?: SilicaColor;\n /** Default size for the options. */\n size?: SilicaSize;\n}\n\n/**\n * Silica CheckboxGroup — a managed set of checkboxes whose value is the array of\n * checked items. Pair with `CheckboxOption`s.\n *\n * <CheckboxGroup defaultValue={[\"email\"]}>\n * <CheckboxOption value=\"email\">Email</CheckboxOption>\n * <CheckboxOption value=\"sms\">SMS</CheckboxOption>\n * </CheckboxGroup>\n */\nexport function CheckboxGroup({\n value,\n defaultValue,\n onValueChange,\n orientation = \"vertical\",\n disabled,\n color,\n size,\n className,\n children,\n ...rest\n}: CheckboxGroupProps) {\n const sc = useSilicaClass();\n const [internal, setInternal] = React.useState<string[]>(defaultValue ?? []);\n const current = value !== undefined ? value : internal;\n\n const toggle = React.useCallback(\n (v: string, checked: boolean) => {\n const next = checked\n ? [...current, v]\n : current.filter((x) => x !== v);\n if (value === undefined) setInternal(next);\n onValueChange?.(next);\n },\n [current, value, onValueChange],\n );\n\n const ctx = React.useMemo<CheckboxGroupContextValue>(\n () => ({ value: current, toggle, disabled, color, size }),\n [current, toggle, disabled, color, size],\n );\n\n return (\n <CheckboxGroupContext.Provider value={ctx}>\n <div\n role=\"group\"\n data-orientation={orientation}\n className={cx(sc(\"checkbox-group\"), className)}\n {...rest}\n >\n {children}\n </div>\n </CheckboxGroupContext.Provider>\n );\n}\n\nexport interface CheckboxOptionProps\n extends Omit<React.LabelHTMLAttributes<HTMLLabelElement>, \"onChange\"> {\n /** This option's value. */\n value: string;\n disabled?: boolean;\n color?: SilicaColor;\n size?: SilicaSize;\n}\n\n/** One labeled checkbox within a CheckboxGroup. */\nexport function CheckboxOption({\n value,\n disabled,\n color,\n size,\n className,\n children,\n ...rest\n}: CheckboxOptionProps) {\n const sc = useSilicaClass();\n const group = React.useContext(CheckboxGroupContext);\n const c = color ?? group?.color;\n const s = size ?? group?.size ?? \"md\";\n const isDisabled = disabled ?? group?.disabled;\n const checkboxClasses = cx(\n sc(\"checkbox\"),\n c && sc(`checkbox-${c}`),\n s !== \"md\" && sc(`checkbox-${s}`),\n );\n return (\n <label className={cx(sc(\"checkbox-option\"), className)} {...rest}>\n <input\n type=\"checkbox\"\n className={checkboxClasses}\n value={value}\n checked={group ? group.value.includes(value) : undefined}\n onChange={\n group ? (e) => group.toggle(value, e.target.checked) : undefined\n }\n disabled={isDisabled}\n />\n {children != null && <span>{children}</span>}\n </label>\n );\n}\n","import * as React from \"react\";\nimport { Slider as BaseSlider } from \"@base-ui-components/react/slider\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor } from \"./lib/tokens\";\n\ntype Styled<T extends React.ElementType> = Omit<\n React.ComponentPropsWithoutRef<T>,\n \"className\"\n> & { className?: string };\n\nexport type SliderColor = SilicaColor;\nexport type SliderSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface SliderProps\n extends Omit<Styled<typeof BaseSlider.Root>, \"color\"> {\n /** Accent for the filled track + thumb(s). */\n color?: SilicaColor;\n /** Rail thickness + thumb diameter. */\n size?: SliderSize;\n /** Show a live numeric readout beside the track. */\n showValue?: boolean;\n}\n\n/**\n * Silica Slider — a rich range input (Base UI behavior). Pass a number for a\n * single thumb, or a tuple for a two-thumb range selection; the number of thumbs\n * follows the shape of `value`/`defaultValue`.\n *\n * <Slider defaultValue={40} color=\"primary\" showValue />\n * <Slider defaultValue={[20, 60]} min={0} max={100} step={5} />\n * <Slider orientation=\"vertical\" defaultValue={50} />\n */\nexport const Slider = React.forwardRef<\n React.ComponentRef<typeof BaseSlider.Root>,\n SliderProps\n>(function Slider(\n { color, size = \"md\", showValue, className, value, defaultValue, ...rest },\n ref,\n) {\n const sc = useSilicaClass();\n const src = value ?? defaultValue;\n const thumbCount = Array.isArray(src) ? Math.max(src.length, 1) : 1;\n\n return (\n <BaseSlider.Root\n ref={ref}\n value={value as number | readonly number[] | undefined}\n defaultValue={defaultValue as number | readonly number[] | undefined}\n className={cx(\n sc(\"slider\"),\n color && sc(`slider-${color}`),\n size !== \"md\" && sc(`slider-${size}`),\n className,\n )}\n {...rest}\n >\n {showValue && <BaseSlider.Value className={cx(sc(\"slider-value\"))} />}\n <BaseSlider.Control className={cx(sc(\"slider-control\"))}>\n <BaseSlider.Track className={cx(sc(\"slider-track\"))}>\n <BaseSlider.Indicator className={cx(sc(\"slider-indicator\"))} />\n {Array.from({ length: thumbCount }, (_, i) => (\n <BaseSlider.Thumb key={i} className={cx(sc(\"slider-thumb\"))} />\n ))}\n </BaseSlider.Track>\n </BaseSlider.Control>\n </BaseSlider.Root>\n );\n});\n","import * as React from \"react\";\nimport { Switch as BaseSwitch } from \"@base-ui-components/react/switch\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor, SilicaSize } from \"./lib/tokens\";\n\ntype Styled<T extends React.ElementType> = Omit<\n React.ComponentPropsWithoutRef<T>,\n \"className\"\n> & { className?: string };\n\nexport type SwitchColor = SilicaColor;\nexport type SwitchSize = SilicaSize;\n\nexport interface SwitchProps\n extends Omit<Styled<typeof BaseSwitch.Root>, \"color\"> {\n /** Accent for the checked track. */\n color?: SilicaColor;\n /** Track height (width follows at 1.75×). */\n size?: SilicaSize;\n}\n\n/**\n * Silica Switch — an accessible on/off toggle (Base UI: `role=\"switch\"` with a\n * hidden real input, so it submits in a form and pairs with `Field`). The CSS\n * cousin `Toggle` is a bare restyled checkbox; reach for `Switch` when you want\n * proper switch semantics or form integration.\n *\n * <Switch defaultChecked color=\"success\" />\n * <Switch checked={on} onCheckedChange={setOn} />\n */\nexport const Switch = React.forwardRef<\n React.ComponentRef<typeof BaseSwitch.Root>,\n SwitchProps\n>(function Switch({ color, size = \"md\", className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <BaseSwitch.Root\n ref={ref}\n className={cx(\n sc(\"switch\"),\n color && sc(`switch-${color}`),\n size !== \"md\" && sc(`switch-${size}`),\n className,\n )}\n {...rest}\n >\n <BaseSwitch.Thumb className={cx(sc(\"switch-thumb\"))} />\n </BaseSwitch.Root>\n );\n});\n","import * as React from \"react\";\nimport { Collapsible as BaseCollapsible } from \"@base-ui-components/react/collapsible\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\ntype Styled<T extends React.ElementType> = Omit<\n React.ComponentPropsWithoutRef<T>,\n \"className\"\n> & { className?: string };\n\nconst ChevronIcon = () => (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n aria-hidden=\"true\"\n >\n <path d=\"m6 9 6 6 6-6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\n\nexport type CollapsibleProps = Styled<typeof BaseCollapsible.Root>;\n\n/**\n * Silica Collapsible — a single show/hide disclosure (Base UI behavior, animated\n * height). The primitive behind `Accordion`; use it when you have just one\n * region to reveal.\n *\n * <Collapsible defaultOpen>\n * <CollapsibleTrigger>Shipping details</CollapsibleTrigger>\n * <CollapsiblePanel>Ships in 2–3 business days.</CollapsiblePanel>\n * </Collapsible>\n */\nexport function Collapsible({ className, ...rest }: CollapsibleProps) {\n const sc = useSilicaClass();\n return (\n <BaseCollapsible.Root className={cx(sc(\"collapsible\"), className)} {...rest} />\n );\n}\n\nexport interface CollapsibleTriggerProps\n extends Styled<typeof BaseCollapsible.Trigger> {\n /** Set false to omit the built-in chevron. */\n chevron?: boolean;\n}\n\nexport function CollapsibleTrigger({\n className,\n children,\n chevron = true,\n ...rest\n}: CollapsibleTriggerProps) {\n const sc = useSilicaClass();\n return (\n <BaseCollapsible.Trigger\n className={cx(sc(\"collapsible-trigger\"), className)}\n {...rest}\n >\n <span>{children}</span>\n {chevron && <ChevronIcon />}\n </BaseCollapsible.Trigger>\n );\n}\n\nexport interface CollapsiblePanelProps\n extends Styled<typeof BaseCollapsible.Panel> {\n children?: React.ReactNode;\n}\n\nexport function CollapsiblePanel({\n className,\n children,\n ...rest\n}: CollapsiblePanelProps) {\n const sc = useSilicaClass();\n return (\n <BaseCollapsible.Panel\n className={cx(sc(\"collapsible-panel\"), className)}\n {...rest}\n >\n <div className={cx(sc(\"collapsible-content\"))}>{children}</div>\n </BaseCollapsible.Panel>\n );\n}\n","import * as React from \"react\";\nimport { AlertDialog as BaseAlertDialog } from \"@base-ui-components/react/alert-dialog\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\n// Props of a styled Base UI part: its own props but with a plain-string className.\ntype Styled<T extends React.ElementType> = Omit<\n React.ComponentPropsWithoutRef<T>,\n \"className\"\n> & { className?: string };\n\nconst asRender = (el: React.ReactElement) =>\n el as React.ReactElement<Record<string, unknown>>;\n\nexport type AlertDialogProps = React.ComponentProps<typeof BaseAlertDialog.Root>;\n\n/**\n * Silica AlertDialog — a confirmation modal from Base UI. Unlike `Dialog`, its\n * backdrop is inert: clicking outside will NOT dismiss it, so the user can't\n * lose the decision by tapping away (Escape still cancels, per the ARIA alert\n * dialog pattern). Reach for it on destructive or consequential actions; reuses\n * the Dialog surface styling.\n *\n * <AlertDialog>\n * <AlertDialogTrigger><Button color=\"error\">Delete account</Button></AlertDialogTrigger>\n * <AlertDialogContent>\n * <AlertDialogTitle>Delete account?</AlertDialogTitle>\n * <AlertDialogDescription>This permanently removes your data.</AlertDialogDescription>\n * <div className=\"mt-4 flex justify-end gap-2\">\n * <AlertDialogClose><Button variant=\"ghost\">Cancel</Button></AlertDialogClose>\n * <AlertDialogClose><Button color=\"error\" onClick={destroy}>Delete</Button></AlertDialogClose>\n * </div>\n * </AlertDialogContent>\n * </AlertDialog>\n */\nexport const AlertDialog = BaseAlertDialog.Root;\n\n/** Wraps its single child element as the element that opens the dialog. */\nexport function AlertDialogTrigger({\n children,\n}: {\n children: React.ReactElement;\n}) {\n return <BaseAlertDialog.Trigger render={asRender(children)} />;\n}\n\n/** Wraps its single child element as an element that closes the dialog. */\nexport function AlertDialogClose({\n children,\n}: {\n children: React.ReactElement;\n}) {\n return <BaseAlertDialog.Close render={asRender(children)} />;\n}\n\nexport interface AlertDialogContentProps\n extends Omit<Styled<typeof BaseAlertDialog.Popup>, \"children\"> {\n children?: React.ReactNode;\n /** Class for the backdrop layer. */\n backdropClassName?: string;\n}\n\n/** Portals + backdrop + the centered popup surface in one (shares Dialog styles). */\nexport function AlertDialogContent({\n className,\n backdropClassName,\n children,\n ...rest\n}: AlertDialogContentProps) {\n const sc = useSilicaClass();\n return (\n <BaseAlertDialog.Portal>\n <BaseAlertDialog.Backdrop\n className={cx(sc(\"dialog-backdrop\"), backdropClassName)}\n />\n <BaseAlertDialog.Popup\n className={cx(sc(\"dialog-popup\"), className)}\n {...rest}\n >\n {children}\n </BaseAlertDialog.Popup>\n </BaseAlertDialog.Portal>\n );\n}\n\nexport function AlertDialogTitle({\n className,\n ...rest\n}: Styled<typeof BaseAlertDialog.Title>) {\n const sc = useSilicaClass();\n return (\n <BaseAlertDialog.Title\n className={cx(sc(\"dialog-title\"), className)}\n {...rest}\n />\n );\n}\n\nexport function AlertDialogDescription({\n className,\n ...rest\n}: Styled<typeof BaseAlertDialog.Description>) {\n const sc = useSilicaClass();\n return (\n <BaseAlertDialog.Description\n className={cx(sc(\"dialog-description\"), className)}\n {...rest}\n />\n );\n}\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor } from \"./lib/tokens\";\n\ninterface FilterContextValue {\n value: string | undefined;\n select: (value: string | undefined) => void;\n disabled?: boolean;\n}\n\nconst FilterContext = React.createContext<FilterContextValue | null>(null);\n\nconst CloseIcon = () => (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.25\"\n aria-hidden=\"true\"\n >\n <path d=\"M18 6 6 18M6 6l12 12\" strokeLinecap=\"round\" />\n </svg>\n);\n\nexport interface FilterProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\" | \"color\"> {\n /** Controlled selected value (`undefined` = nothing selected). */\n value?: string;\n /** Uncontrolled initial value. */\n defaultValue?: string;\n /** Fires with the new value, or `undefined` when reset. */\n onValueChange?: (value: string | undefined) => void;\n /** Accent for the selected chip. */\n color?: SilicaColor;\n /** Disable every chip + the reset. */\n disabled?: boolean;\n /** Render the reset (×) once something is selected (default true). */\n showReset?: boolean;\n /** Accessible label for the reset control. */\n resetLabel?: string;\n}\n\n/**\n * Silica Filter — a single-select row of chips with a reset, for faceted\n * product/category filtering. Radio semantics: one chip at a time; the reset\n * clears the choice. Pair with `FilterItem`s.\n *\n * <Filter defaultValue=\"all\" color=\"primary\">\n * <FilterItem value=\"all\">All</FilterItem>\n * <FilterItem value=\"apparel\">Apparel</FilterItem>\n * <FilterItem value=\"gear\">Gear</FilterItem>\n * </Filter>\n */\nexport function Filter({\n value,\n defaultValue,\n onValueChange,\n color,\n disabled,\n showReset = true,\n resetLabel = \"Reset filter\",\n className,\n children,\n ...rest\n}: FilterProps) {\n const sc = useSilicaClass();\n const [internal, setInternal] = React.useState<string | undefined>(\n defaultValue,\n );\n const current = value !== undefined ? value : internal;\n\n const select = React.useCallback(\n (v: string | undefined) => {\n if (value === undefined) setInternal(v);\n onValueChange?.(v);\n },\n [value, onValueChange],\n );\n\n const ctx = React.useMemo<FilterContextValue>(\n () => ({ value: current, select, disabled }),\n [current, select, disabled],\n );\n\n return (\n <FilterContext.Provider value={ctx}>\n <div\n role=\"radiogroup\"\n className={cx(sc(\"filter\"), color && sc(`filter-${color}`), className)}\n {...rest}\n >\n {showReset && current != null && (\n <button\n type=\"button\"\n className={cx(sc(\"filter-reset\"))}\n aria-label={resetLabel}\n onClick={() => select(undefined)}\n disabled={disabled}\n >\n <CloseIcon />\n </button>\n )}\n {children}\n </div>\n </FilterContext.Provider>\n );\n}\n\nexport interface FilterItemProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"value\"> {\n /** This chip's value. */\n value: string;\n}\n\n/** One selectable chip within a Filter. */\nexport const FilterItem = React.forwardRef<HTMLButtonElement, FilterItemProps>(\n function FilterItem({ value, disabled, className, children, onClick, ...rest }, ref) {\n const sc = useSilicaClass();\n const group = React.useContext(FilterContext);\n const selected = group?.value === value;\n const isDisabled = disabled ?? group?.disabled;\n return (\n <button\n ref={ref}\n type=\"button\"\n role=\"radio\"\n aria-checked={selected}\n data-selected={selected ? \"\" : undefined}\n disabled={isDisabled}\n className={cx(sc(\"filter-item\"), className)}\n onClick={(e) => {\n onClick?.(e);\n if (!e.defaultPrevented) group?.select(value);\n }}\n {...rest}\n >\n {children}\n </button>\n );\n },\n);\n","import * as React from \"react\";\nimport { Select as BaseSelect } from \"@base-ui-components/react/select\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor, SilicaSize } from \"./lib/tokens\";\n\ntype Styled<T extends React.ElementType> = Omit<\n React.ComponentPropsWithoutRef<T>,\n \"className\"\n> & { className?: string };\n\ntype PositionerProps = React.ComponentProps<typeof BaseSelect.Positioner>;\nexport type SelectSide = NonNullable<PositionerProps[\"side\"]>;\nexport type SelectAlign = NonNullable<PositionerProps[\"align\"]>;\nexport type SelectColor = SilicaColor;\nexport type SelectSize = SilicaSize;\n\nconst ChevronDownIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" aria-hidden=\"true\">\n <path d=\"m6 9 6 6 6-6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\nconst ChevronUpIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" aria-hidden=\"true\">\n <path d=\"m18 15-6-6-6 6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\nconst CheckIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" aria-hidden=\"true\">\n <path d=\"M20 6 9 17l-5-5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\n\n// ---------------------------------------------------------------------------\n// Composable parts\n// ---------------------------------------------------------------------------\n\nexport interface SelectItemProps\n extends Omit<Styled<typeof BaseSelect.Item>, \"children\"> {\n /** The value stored when this item is chosen. */\n value: unknown;\n children?: React.ReactNode;\n}\n\n/** One option. Renders its own selected-check indicator. */\nexport function SelectItem({ className, children, ...rest }: SelectItemProps) {\n const sc = useSilicaClass();\n return (\n <BaseSelect.Item className={cx(sc(\"select-item\"), className)} {...rest}>\n <BaseSelect.ItemIndicator className={cx(sc(\"select-item-indicator\"))}>\n <CheckIcon />\n </BaseSelect.ItemIndicator>\n <BaseSelect.ItemText>{children}</BaseSelect.ItemText>\n </BaseSelect.Item>\n );\n}\n\n/** Groups related items; pair with a `SelectGroupLabel`. */\nexport function SelectGroup(props: React.ComponentProps<typeof BaseSelect.Group>) {\n return <BaseSelect.Group {...props} />;\n}\n\n/** A heading for a `SelectGroup` — MUST be rendered inside one. */\nexport function SelectGroupLabel({\n className,\n ...rest\n}: Styled<typeof BaseSelect.GroupLabel>) {\n const sc = useSilicaClass();\n return (\n <BaseSelect.GroupLabel\n className={cx(sc(\"select-group-label\"), className)}\n {...rest}\n />\n );\n}\n\nexport function SelectSeparator({\n className,\n ...rest\n}: Styled<typeof BaseSelect.Separator>) {\n const sc = useSilicaClass();\n return (\n <BaseSelect.Separator\n className={cx(sc(\"select-separator\"), className)}\n {...rest}\n />\n );\n}\n\n// ---------------------------------------------------------------------------\n// Select\n// ---------------------------------------------------------------------------\n\nexport interface SelectOptionData {\n label: React.ReactNode;\n value: unknown;\n}\nexport type SelectItems =\n | Record<string, React.ReactNode>\n | ReadonlyArray<SelectOptionData>;\n\nexport interface SelectProps {\n /** Controlled value (array when `multiple`). */\n value?: unknown;\n /** Uncontrolled initial value. */\n defaultValue?: unknown;\n /** Fires with the newly-selected value. */\n onValueChange?: (value: unknown, eventDetails?: unknown) => void;\n /** Allow selecting multiple items (value becomes an array). */\n multiple?: boolean;\n /**\n * Value→label map used to render the trigger's selected label (and, if no\n * children are given, to auto-render the options). A record (`{value: label}`)\n * or an array (`[{ value, label }]`).\n */\n items?: SelectItems;\n /** Field name for form submission. */\n name?: string;\n disabled?: boolean;\n required?: boolean;\n readOnly?: boolean;\n /** Shown on the trigger while nothing is selected. */\n placeholder?: React.ReactNode;\n /** Accent for the trigger border + focus ring (shares NativeSelect colors). */\n color?: SelectColor;\n /** Trigger height; matches same-size Inputs/Buttons. */\n size?: SelectSize;\n side?: SelectSide;\n align?: SelectAlign;\n sideOffset?: number;\n /** Overlay the selected item on the trigger (native-select style). Default false. */\n alignItemWithTrigger?: boolean;\n /** Class for the trigger button. */\n className?: string;\n /** Class for the popup surface. */\n popupClassName?: string;\n /** Accessible name when there's no associated visible label. */\n \"aria-label\"?: string;\n \"aria-labelledby\"?: string;\n id?: string;\n /** `SelectItem`/`SelectGroup`/`SelectSeparator`s. Omit to auto-render `items`. */\n children?: React.ReactNode;\n}\n\n/**\n * Silica Select — a fully-styled, keyboard-driven listbox (Base UI: typeahead,\n * roving focus, portalled popup, optional multi-select). The trigger matches\n * `NativeSelect` pixel-for-pixel; reach for `NativeSelect` only when you need a\n * bare platform `<select>`.\n *\n * // items-driven (auto-renders options, powers the trigger label):\n * <Select\n * items={{ react: \"React\", vue: \"Vue\", svelte: \"Svelte\" }}\n * value={fw} onValueChange={setFw} placeholder=\"Framework\" color=\"primary\"\n * />\n *\n * // composable:\n * <Select value={fw} onValueChange={setFw} items={labels} placeholder=\"Framework\">\n * <SelectGroup>\n * <SelectGroupLabel>Frontend</SelectGroupLabel>\n * <SelectItem value=\"react\">React</SelectItem>\n * <SelectItem value=\"vue\">Vue</SelectItem>\n * </SelectGroup>\n * </Select>\n */\nexport function Select({\n value,\n defaultValue,\n onValueChange,\n multiple,\n items,\n name,\n disabled,\n required,\n readOnly,\n placeholder,\n color,\n size = \"md\",\n side = \"bottom\",\n align = \"start\",\n sideOffset = 6,\n alignItemWithTrigger = false,\n className,\n popupClassName,\n id,\n children,\n ...aria\n}: SelectProps) {\n const sc = useSilicaClass();\n\n const autoItems =\n !children && items\n ? Array.isArray(items)\n ? items.map((it) => (\n <SelectItem key={String(it.value)} value={it.value}>\n {it.label}\n </SelectItem>\n ))\n : Object.entries(items).map(([v, label]) => (\n <SelectItem key={v} value={v}>\n {label}\n </SelectItem>\n ))\n : null;\n\n return (\n <BaseSelect.Root\n value={value as never}\n defaultValue={defaultValue as never}\n onValueChange={onValueChange as never}\n multiple={multiple as never}\n items={items as never}\n name={name}\n disabled={disabled}\n required={required}\n readOnly={readOnly}\n >\n <BaseSelect.Trigger\n id={id}\n className={cx(\n sc(\"select\"),\n color && sc(`select-${color}`),\n size !== \"md\" && sc(`select-${size}`),\n sc(\"select-trigger\"),\n className,\n )}\n {...aria}\n >\n <BaseSelect.Value className={cx(sc(\"select-value\"))} />\n {placeholder != null && (\n <span className={cx(sc(\"select-placeholder\"))}>{placeholder}</span>\n )}\n <BaseSelect.Icon className={cx(sc(\"select-icon\"))}>\n <ChevronDownIcon />\n </BaseSelect.Icon>\n </BaseSelect.Trigger>\n\n <BaseSelect.Portal>\n <BaseSelect.Positioner\n side={side}\n align={align}\n sideOffset={sideOffset}\n alignItemWithTrigger={alignItemWithTrigger}\n >\n <BaseSelect.Popup className={cx(sc(\"select-popup\"), popupClassName)}>\n <BaseSelect.ScrollUpArrow\n className={cx(sc(\"select-scroll-arrow\"))}\n data-direction=\"up\"\n >\n <ChevronUpIcon />\n </BaseSelect.ScrollUpArrow>\n <BaseSelect.List>{children ?? autoItems}</BaseSelect.List>\n <BaseSelect.ScrollDownArrow\n className={cx(sc(\"select-scroll-arrow\"))}\n data-direction=\"down\"\n >\n <ChevronDownIcon />\n </BaseSelect.ScrollDownArrow>\n </BaseSelect.Popup>\n </BaseSelect.Positioner>\n </BaseSelect.Portal>\n </BaseSelect.Root>\n );\n}\n","import * as React from \"react\";\nimport { Combobox as BaseCombobox } from \"@base-ui-components/react/combobox\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor, SilicaSize } from \"./lib/tokens\";\n\ntype Styled<T extends React.ElementType> = Omit<\n React.ComponentPropsWithoutRef<T>,\n \"className\"\n> & { className?: string };\n\ntype PositionerProps = React.ComponentProps<typeof BaseCombobox.Positioner>;\nexport type ComboboxSide = NonNullable<PositionerProps[\"side\"]>;\nexport type ComboboxAlign = NonNullable<PositionerProps[\"align\"]>;\nexport type ComboboxColor = SilicaColor;\nexport type ComboboxSize = SilicaSize;\n\nconst ChevronDownIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" aria-hidden=\"true\">\n <path d=\"m6 9 6 6 6-6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\nconst CheckIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" aria-hidden=\"true\">\n <path d=\"M20 6 9 17l-5-5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\nconst XIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.25\" aria-hidden=\"true\">\n <path d=\"M18 6 6 18M6 6l12 12\" strokeLinecap=\"round\" />\n </svg>\n);\n\n/** Label for an item that's either a bare string or a `{ value, label }` object. */\nfunction defaultLabel(item: unknown): React.ReactNode {\n if (item != null && typeof item === \"object\" && \"label\" in item) {\n return (item as { label: React.ReactNode }).label;\n }\n return String(item);\n}\n\nexport interface ComboboxItemProps\n extends Omit<Styled<typeof BaseCombobox.Item>, \"children\"> {\n value: unknown;\n children?: React.ReactNode;\n /** Show the leading selected-check (default true). */\n indicator?: boolean;\n}\n\n/** One option row within a Combobox. */\nexport function ComboboxItem({\n className,\n children,\n indicator = true,\n ...rest\n}: ComboboxItemProps) {\n const sc = useSilicaClass();\n return (\n <BaseCombobox.Item className={cx(sc(\"select-item\"), className)} {...rest}>\n {indicator && (\n <BaseCombobox.ItemIndicator className={cx(sc(\"select-item-indicator\"))}>\n <CheckIcon />\n </BaseCombobox.ItemIndicator>\n )}\n {children}\n </BaseCombobox.Item>\n );\n}\n\nexport interface ComboboxProps {\n /** The full option set (strings or `{ value, label }`); Base UI filters it. */\n items: readonly unknown[];\n /** Controlled selected value. */\n value?: unknown;\n /** Uncontrolled initial value. */\n defaultValue?: unknown;\n /** Fires with the newly-selected value. */\n onValueChange?: (value: unknown, eventDetails?: unknown) => void;\n name?: string;\n disabled?: boolean;\n required?: boolean;\n placeholder?: string;\n /** Shown in the popup when nothing matches the query. */\n emptyMessage?: React.ReactNode;\n /** Accent for the input border + focus ring (shares Input colors). */\n color?: ComboboxColor;\n /** Input height; matches same-size Inputs. */\n size?: ComboboxSize;\n /** Show the clear (×) button (default true). */\n clearable?: boolean;\n side?: ComboboxSide;\n align?: ComboboxAlign;\n sideOffset?: number;\n /** Class for the text input. */\n className?: string;\n /** Class for the popup surface. */\n popupClassName?: string;\n /** For object items, map an item to its display string (default: `.label`). */\n itemToStringLabel?: (item: unknown) => string;\n /** Override how each filtered item renders. */\n renderItem?: (item: unknown, index: number) => React.ReactNode;\n \"aria-label\"?: string;\n \"aria-labelledby\"?: string;\n id?: string;\n}\n\n/**\n * Silica Combobox — a searchable, filtered listbox (Base UI: typeahead filtering,\n * roving focus, portalled popup). Type to narrow `items`; pick to select. The\n * input matches the field tier like `Input`.\n *\n * <Combobox\n * items={[\"Alabama\", \"Alaska\", \"Arizona\", \"Arkansas\"]}\n * value={state} onValueChange={setState}\n * placeholder=\"Search states…\"\n * />\n *\n * // object items:\n * <Combobox\n * items={[{ value: \"us\", label: \"United States\" }, { value: \"ca\", label: \"Canada\" }]}\n * placeholder=\"Country\" color=\"primary\"\n * />\n */\nexport function Combobox({\n items,\n value,\n defaultValue,\n onValueChange,\n name,\n disabled,\n required,\n placeholder,\n emptyMessage = \"No results.\",\n color,\n size = \"md\",\n clearable = true,\n side = \"bottom\",\n align = \"start\",\n sideOffset = 6,\n className,\n popupClassName,\n itemToStringLabel,\n renderItem,\n id,\n ...aria\n}: ComboboxProps) {\n const sc = useSilicaClass();\n return (\n <BaseCombobox.Root\n items={items as never}\n value={value as never}\n defaultValue={defaultValue as never}\n onValueChange={onValueChange as never}\n name={name}\n disabled={disabled}\n required={required}\n itemToStringLabel={itemToStringLabel as never}\n >\n <div className={cx(sc(\"combobox-control\"))}>\n <BaseCombobox.Input\n id={id}\n placeholder={placeholder}\n className={cx(\n sc(\"input\"),\n color && sc(`input-${color}`),\n size !== \"md\" && sc(`input-${size}`),\n sc(\"combobox-input\"),\n className,\n )}\n {...aria}\n />\n {clearable && (\n <BaseCombobox.Clear\n className={cx(sc(\"combobox-clear\"))}\n aria-label=\"Clear\"\n >\n <XIcon />\n </BaseCombobox.Clear>\n )}\n <BaseCombobox.Trigger\n className={cx(sc(\"combobox-trigger\"))}\n aria-label=\"Open\"\n >\n <ChevronDownIcon />\n </BaseCombobox.Trigger>\n </div>\n\n <BaseCombobox.Portal>\n <BaseCombobox.Positioner side={side} align={align} sideOffset={sideOffset}>\n <BaseCombobox.Popup className={cx(sc(\"select-popup\"), popupClassName)}>\n <BaseCombobox.Empty className={cx(sc(\"combobox-empty\"))}>\n {emptyMessage}\n </BaseCombobox.Empty>\n <BaseCombobox.List>\n {(item: unknown, index: number) =>\n renderItem ? (\n renderItem(item, index)\n ) : (\n <ComboboxItem key={index} value={item}>\n {defaultLabel(item)}\n </ComboboxItem>\n )\n }\n </BaseCombobox.List>\n </BaseCombobox.Popup>\n </BaseCombobox.Positioner>\n </BaseCombobox.Portal>\n </BaseCombobox.Root>\n );\n}\n","import * as React from \"react\";\nimport { Autocomplete as BaseAutocomplete } from \"@base-ui-components/react/autocomplete\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor, SilicaSize } from \"./lib/tokens\";\n\ntype Styled<T extends React.ElementType> = Omit<\n React.ComponentPropsWithoutRef<T>,\n \"className\"\n> & { className?: string };\n\ntype PositionerProps = React.ComponentProps<typeof BaseAutocomplete.Positioner>;\nexport type AutocompleteSide = NonNullable<PositionerProps[\"side\"]>;\nexport type AutocompleteAlign = NonNullable<PositionerProps[\"align\"]>;\nexport type AutocompleteColor = SilicaColor;\nexport type AutocompleteSize = SilicaSize;\nexport type AutocompleteMode = \"list\" | \"both\" | \"inline\" | \"none\";\n\nconst XIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.25\" aria-hidden=\"true\">\n <path d=\"M18 6 6 18M6 6l12 12\" strokeLinecap=\"round\" />\n </svg>\n);\n\nexport interface AutocompleteItemProps\n extends Omit<Styled<typeof BaseAutocomplete.Item>, \"children\"> {\n value: unknown;\n children?: React.ReactNode;\n}\n\n/** One suggestion row within an Autocomplete. */\nexport function AutocompleteItem({\n className,\n children,\n ...rest\n}: AutocompleteItemProps) {\n const sc = useSilicaClass();\n return (\n <BaseAutocomplete.Item\n className={cx(sc(\"select-item\"), sc(\"combobox-item\"), className)}\n {...rest}\n >\n {children}\n </BaseAutocomplete.Item>\n );\n}\n\nexport interface AutocompleteProps {\n /** Suggestion set; filtered by the input value (in `list`/`both` modes). */\n items: readonly string[];\n /** Controlled input value. */\n value?: string;\n /** Uncontrolled initial input value. */\n defaultValue?: string;\n /** Fires with the new input string. */\n onValueChange?: (value: string, eventDetails?: unknown) => void;\n /** Suggestion behavior; `list` (default) filters the list as you type. */\n mode?: AutocompleteMode;\n name?: string;\n disabled?: boolean;\n required?: boolean;\n placeholder?: string;\n /** Shown in the popup when nothing matches the query. */\n emptyMessage?: React.ReactNode;\n /** Accent for the input border + focus ring (shares Input colors). */\n color?: AutocompleteColor;\n /** Input height; matches same-size Inputs. */\n size?: AutocompleteSize;\n /** Show the clear (×) button (default true). */\n clearable?: boolean;\n side?: AutocompleteSide;\n align?: AutocompleteAlign;\n sideOffset?: number;\n /** Class for the text input. */\n className?: string;\n /** Class for the popup surface. */\n popupClassName?: string;\n /** Override how each filtered suggestion renders. */\n renderItem?: (item: string, index: number) => React.ReactNode;\n \"aria-label\"?: string;\n \"aria-labelledby\"?: string;\n id?: string;\n}\n\n/**\n * Silica Autocomplete — a free-text input with a filtered suggestion list\n * (Base UI). Unlike `Combobox` (which selects a value from a fixed set), the\n * value here IS the typed string; suggestions just help complete it.\n *\n * <Autocomplete\n * items={[\"React\", \"React Native\", \"Redux\", \"Remix\"]}\n * value={q} onValueChange={setQ}\n * placeholder=\"Search the docs…\"\n * />\n */\nexport function Autocomplete({\n items,\n value,\n defaultValue,\n onValueChange,\n mode = \"list\",\n name,\n disabled,\n required,\n placeholder,\n emptyMessage = \"No results.\",\n color,\n size = \"md\",\n clearable = true,\n side = \"bottom\",\n align = \"start\",\n sideOffset = 6,\n className,\n popupClassName,\n renderItem,\n id,\n ...aria\n}: AutocompleteProps) {\n const sc = useSilicaClass();\n return (\n <BaseAutocomplete.Root\n items={items as never}\n value={value as never}\n defaultValue={defaultValue as never}\n onValueChange={onValueChange as never}\n mode={mode}\n name={name}\n disabled={disabled}\n required={required}\n >\n <div className={cx(sc(\"combobox-control\"))}>\n <BaseAutocomplete.Input\n id={id}\n placeholder={placeholder}\n className={cx(\n sc(\"input\"),\n color && sc(`input-${color}`),\n size !== \"md\" && sc(`input-${size}`),\n sc(\"combobox-input\"),\n className,\n )}\n {...aria}\n />\n {clearable && (\n <BaseAutocomplete.Clear\n className={cx(sc(\"combobox-clear\"))}\n aria-label=\"Clear\"\n >\n <XIcon />\n </BaseAutocomplete.Clear>\n )}\n </div>\n\n <BaseAutocomplete.Portal>\n <BaseAutocomplete.Positioner\n side={side}\n align={align}\n sideOffset={sideOffset}\n >\n <BaseAutocomplete.Popup className={cx(sc(\"select-popup\"), popupClassName)}>\n <BaseAutocomplete.Empty className={cx(sc(\"combobox-empty\"))}>\n {emptyMessage}\n </BaseAutocomplete.Empty>\n <BaseAutocomplete.List>\n {(item: string, index: number) =>\n renderItem ? (\n renderItem(item, index)\n ) : (\n <AutocompleteItem key={index} value={item}>\n {item}\n </AutocompleteItem>\n )\n }\n </BaseAutocomplete.List>\n </BaseAutocomplete.Popup>\n </BaseAutocomplete.Positioner>\n </BaseAutocomplete.Portal>\n </BaseAutocomplete.Root>\n );\n}\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor } from \"./lib/tokens\";\n\nexport type CalendarColor = SilicaColor;\nexport type CalendarMode = \"single\" | \"range\";\nexport type Weekday = 0 | 1 | 2 | 3 | 4 | 5 | 6;\n\nexport interface DateRange {\n start: Date | null;\n end: Date | null;\n}\nexport type CalendarValue = Date | DateRange | null;\n\n// ---------------------------------------------------------------------------\n// Date helpers — day-granular, local time (a calendar has no clock).\n// ---------------------------------------------------------------------------\nconst REF_SUNDAY = new Date(2023, 0, 1); // Jan 1 2023 is a Sunday.\n\nfunction startOfDay(d: Date): Date {\n const x = new Date(d);\n x.setHours(0, 0, 0, 0);\n return x;\n}\nfunction startOfMonth(d: Date): Date {\n const x = startOfDay(d);\n x.setDate(1);\n return x;\n}\nfunction addDays(d: Date, n: number): Date {\n const x = new Date(d);\n x.setDate(x.getDate() + n);\n return x;\n}\nfunction addMonths(d: Date, n: number): Date {\n const x = startOfMonth(d);\n x.setMonth(x.getMonth() + n);\n return x;\n}\nfunction isSameDay(a: Date | null, b: Date | null): boolean {\n return (\n !!a &&\n !!b &&\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n );\n}\nfunction isSameMonth(a: Date, b: Date): boolean {\n return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth();\n}\n/** -1 if a<b, 0 if same day, 1 if a>b. */\nfunction compareDay(a: Date, b: Date): number {\n const x = startOfDay(a).getTime();\n const y = startOfDay(b).getTime();\n return x < y ? -1 : x > y ? 1 : 0;\n}\nfunction clampDay(d: Date, min?: Date | null, max?: Date | null): Date {\n if (min && compareDay(d, min) < 0) return startOfDay(min);\n if (max && compareDay(d, max) > 0) return startOfDay(max);\n return startOfDay(d);\n}\nfunction isoDate(d: Date): string {\n const p = (n: number) => String(n).padStart(2, \"0\");\n return `${d.getFullYear()}-${p(d.getMonth() + 1)}-${p(d.getDate())}`;\n}\n\nfunction asRange(v: CalendarValue): DateRange {\n if (v && v instanceof Date) return { start: v, end: null };\n if (v && typeof v === \"object\") return v as DateRange;\n return { start: null, end: null };\n}\nfunction orderedRange(a: Date, b: Date): DateRange {\n return compareDay(a, b) <= 0 ? { start: a, end: b } : { start: b, end: a };\n}\n\nconst ChevronLeftIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" aria-hidden=\"true\">\n <path d=\"m15 18-6-6 6-6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\nconst ChevronRightIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" aria-hidden=\"true\">\n <path d=\"m9 18 6-6-6-6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\n\nexport interface CalendarProps {\n /** `single` (default) selects one date; `range` selects a start/end pair. */\n mode?: CalendarMode;\n /** Controlled selection — a `Date` in single mode, a `DateRange` in range mode. */\n value?: CalendarValue;\n /** Uncontrolled initial selection. */\n defaultValue?: CalendarValue;\n /** Fires with the new selection. */\n onValueChange?: (value: CalendarValue) => void;\n /** Controlled visible (left-most) month. */\n month?: Date;\n /** Uncontrolled initial visible month. */\n defaultMonth?: Date;\n onMonthChange?: (month: Date) => void;\n /** How many month grids to show side by side (default 1; 2 for range). */\n numberOfMonths?: number;\n /** 0 = Sunday (default) … 6 = Saturday. */\n weekStartsOn?: Weekday;\n /** Selectable bounds (inclusive). */\n min?: Date;\n max?: Date;\n /** Per-date disable predicate. */\n isDateDisabled?: (date: Date) => boolean;\n /** BCP-47 locale for month/weekday names (default: runtime locale). */\n locale?: string;\n /** Accent for the selection. */\n color?: CalendarColor;\n className?: string;\n \"aria-label\"?: string;\n}\n\n/**\n * Silica Calendar — a from-scratch month-grid date picker (single date or a\n * range), with full keyboard navigation (arrows, PageUp/Down, Home/End,\n * Enter/Space). The primitive behind `DatePicker` / `DateRangePicker`; render it\n * inline when you want an always-visible calendar.\n *\n * <Calendar value={date} onValueChange={setDate} />\n * <Calendar mode=\"range\" numberOfMonths={2} value={range} onValueChange={setRange} />\n */\nexport function Calendar({\n mode = \"single\",\n value,\n defaultValue,\n onValueChange,\n month,\n defaultMonth,\n onMonthChange,\n numberOfMonths = 1,\n weekStartsOn = 0,\n min,\n max,\n isDateDisabled,\n locale,\n color,\n className,\n ...aria\n}: CalendarProps) {\n const sc = useSilicaClass();\n const rootRef = React.useRef<HTMLDivElement>(null);\n const shouldFocusRef = React.useRef(false);\n const today = React.useMemo(() => startOfDay(new Date()), []);\n\n // --- selection (controlled/uncontrolled) ---\n const [internalValue, setInternalValue] = React.useState<CalendarValue>(\n defaultValue ?? (mode === \"range\" ? { start: null, end: null } : null),\n );\n const current = value !== undefined ? value : internalValue;\n const range = asRange(current);\n\n // --- visible month (controlled/uncontrolled) ---\n const initialMonth =\n defaultMonth ??\n (range.start ? startOfMonth(range.start) : startOfMonth(today));\n const [internalMonth, setInternalMonth] = React.useState<Date>(initialMonth);\n const viewMonth = month !== undefined ? startOfMonth(month) : internalMonth;\n\n const setView = React.useCallback(\n (m: Date) => {\n const next = startOfMonth(m);\n if (month === undefined) setInternalMonth(next);\n onMonthChange?.(next);\n },\n [month, onMonthChange],\n );\n\n // --- keyboard focus target + range hover preview ---\n const [focusedDate, setFocusedDate] = React.useState<Date>(() =>\n clampDay(range.start ?? today, min, max),\n );\n const [hoveredDate, setHoveredDate] = React.useState<Date | null>(null);\n\n // Move DOM focus to the focused day, but only right after a keyboard move.\n React.useEffect(() => {\n if (!shouldFocusRef.current) return;\n shouldFocusRef.current = false;\n const el = rootRef.current?.querySelector<HTMLButtonElement>(\n `[data-date=\"${isoDate(focusedDate)}\"][data-in-month]`,\n );\n el?.focus();\n }, [focusedDate]);\n\n const weekdayLabels = React.useMemo(() => {\n const fmt = new Intl.DateTimeFormat(locale, { weekday: \"short\" });\n return Array.from({ length: 7 }, (_, i) =>\n fmt.format(addDays(REF_SUNDAY, (weekStartsOn + i) % 7)).slice(0, 2),\n );\n }, [locale, weekStartsOn]);\n\n const titleFmt = React.useMemo(\n () => new Intl.DateTimeFormat(locale, { month: \"long\", year: \"numeric\" }),\n [locale],\n );\n\n function isDisabled(d: Date): boolean {\n if (min && compareDay(d, min) < 0) return true;\n if (max && compareDay(d, max) > 0) return true;\n return isDateDisabled?.(d) ?? false;\n }\n\n function commit(next: CalendarValue) {\n if (value === undefined) setInternalValue(next);\n onValueChange?.(next);\n }\n\n function selectDay(d: Date) {\n if (isDisabled(d)) return;\n const day = startOfDay(d);\n if (mode === \"range\") {\n const r = range;\n if (!r.start || (r.start && r.end)) {\n commit({ start: day, end: null });\n } else {\n commit(orderedRange(r.start, day));\n }\n } else {\n commit(day);\n }\n setFocusedDate(day);\n if (!isSameMonth(day, viewMonth)) setView(day);\n }\n\n function moveFocus(next: Date) {\n const clamped = clampDay(next, min, max);\n shouldFocusRef.current = true;\n setFocusedDate(clamped);\n // Keep the focused day visible across the shown month span.\n const firstVisible = viewMonth;\n const lastVisible = addMonths(viewMonth, numberOfMonths - 1);\n if (compareDay(clamped, firstVisible) < 0) setView(clamped);\n else if (compareDay(clamped, addMonths(lastVisible, 1)) >= 0)\n setView(addMonths(clamped, -(numberOfMonths - 1)));\n }\n\n // Prev/next buttons: shift the view AND keep the roving focus target inside\n // the visible span (so a keyboard user always lands on an in-month day). Does\n // not steal DOM focus (shouldFocusRef stays false).\n function shiftView(delta: number) {\n const nextView = addMonths(viewMonth, delta);\n setView(nextView);\n const dim = new Date(\n nextView.getFullYear(),\n nextView.getMonth() + 1,\n 0,\n ).getDate();\n const target = new Date(\n nextView.getFullYear(),\n nextView.getMonth(),\n Math.min(focusedDate.getDate(), dim),\n );\n setFocusedDate(clampDay(target, min, max));\n }\n\n function onKeyDown(e: React.KeyboardEvent) {\n const key = e.key;\n let next: Date | null = null;\n if (key === \"ArrowLeft\") next = addDays(focusedDate, -1);\n else if (key === \"ArrowRight\") next = addDays(focusedDate, 1);\n else if (key === \"ArrowUp\") next = addDays(focusedDate, -7);\n else if (key === \"ArrowDown\") next = addDays(focusedDate, 7);\n else if (key === \"PageUp\") next = addMonths(focusedDate, -1);\n else if (key === \"PageDown\") next = addMonths(focusedDate, 1);\n else if (key === \"Home\") next = addDays(focusedDate, -((focusedDate.getDay() - weekStartsOn + 7) % 7));\n else if (key === \"End\") next = addDays(focusedDate, 6 - ((focusedDate.getDay() - weekStartsOn + 7) % 7));\n else if (key === \"Enter\" || key === \" \") {\n e.preventDefault();\n selectDay(focusedDate);\n return;\n } else {\n return;\n }\n e.preventDefault();\n moveFocus(next);\n }\n\n // Effective range for painting (live preview while picking the end).\n const paintRange: DateRange =\n mode === \"range\" && range.start && !range.end && hoveredDate\n ? orderedRange(range.start, hoveredDate)\n : range;\n\n function renderMonth(offset: number) {\n const m = addMonths(viewMonth, offset);\n const first = startOfMonth(m);\n const lead = (first.getDay() - weekStartsOn + 7) % 7;\n const gridStart = addDays(first, -lead);\n const cells = Array.from({ length: 42 }, (_, i) => addDays(gridStart, i));\n const showPrev = offset === 0;\n const showNext = offset === numberOfMonths - 1;\n\n const prevDisabled =\n !!min && compareDay(startOfMonth(m), startOfMonth(min)) <= 0;\n const nextDisabled =\n !!max && compareDay(startOfMonth(m), startOfMonth(max)) >= 0;\n\n return (\n <div className={cx(sc(\"calendar-month\"))} key={offset}>\n <div className={cx(sc(\"calendar-header\"))}>\n {showPrev ? (\n <button\n type=\"button\"\n className={cx(sc(\"calendar-nav\"))}\n aria-label=\"Previous month\"\n disabled={prevDisabled}\n onClick={() => shiftView(-1)}\n >\n <ChevronLeftIcon />\n </button>\n ) : (\n <span className={cx(sc(\"calendar-nav\"))} aria-hidden=\"true\" />\n )}\n <div className={cx(sc(\"calendar-title\"))} aria-live=\"polite\">\n {titleFmt.format(m)}\n </div>\n {showNext ? (\n <button\n type=\"button\"\n className={cx(sc(\"calendar-nav\"))}\n aria-label=\"Next month\"\n disabled={nextDisabled}\n onClick={() => shiftView(1)}\n >\n <ChevronRightIcon />\n </button>\n ) : (\n <span className={cx(sc(\"calendar-nav\"))} aria-hidden=\"true\" />\n )}\n </div>\n\n <div className={cx(sc(\"calendar-weekdays\"))} aria-hidden=\"true\">\n {weekdayLabels.map((w, i) => (\n <div className={cx(sc(\"calendar-weekday\"))} key={i}>\n {w}\n </div>\n ))}\n </div>\n\n <div className={cx(sc(\"calendar-grid\"))} role=\"grid\">\n {cells.map((cell) => {\n const inMonth = isSameMonth(cell, m);\n const disabled = isDisabled(cell);\n const selected = mode === \"single\" && isSameDay(cell, range.start);\n const isStart = mode === \"range\" && isSameDay(cell, paintRange.start);\n const isEnd = mode === \"range\" && isSameDay(cell, paintRange.end);\n const inRange =\n mode === \"range\" &&\n !!paintRange.start &&\n !!paintRange.end &&\n compareDay(cell, paintRange.start) > 0 &&\n compareDay(cell, paintRange.end) < 0;\n const isFocused = isSameDay(cell, focusedDate);\n return (\n <button\n key={isoDate(cell) + (inMonth ? \"\" : \"-o\")}\n type=\"button\"\n className={cx(sc(\"calendar-day\"))}\n data-date={isoDate(cell)}\n data-in-month={inMonth ? \"\" : undefined}\n data-outside={!inMonth ? \"\" : undefined}\n data-today={isSameDay(cell, today) ? \"\" : undefined}\n data-selected={selected ? \"\" : undefined}\n data-range-start={isStart ? \"\" : undefined}\n data-range-end={isEnd ? \"\" : undefined}\n data-in-range={inRange ? \"\" : undefined}\n data-disabled={disabled ? \"\" : undefined}\n aria-disabled={disabled || undefined}\n aria-pressed={selected || isStart || isEnd || undefined}\n tabIndex={inMonth && isFocused ? 0 : -1}\n onClick={() => selectDay(cell)}\n onMouseEnter={\n mode === \"range\" ? () => setHoveredDate(cell) : undefined\n }\n onFocus={() => setFocusedDate(startOfDay(cell))}\n >\n {cell.getDate()}\n </button>\n );\n })}\n </div>\n </div>\n );\n }\n\n return (\n <div\n ref={rootRef}\n className={cx(\n sc(\"calendar\"),\n color && sc(`calendar-${color}`),\n className,\n )}\n onKeyDown={onKeyDown}\n onMouseLeave={mode === \"range\" ? () => setHoveredDate(null) : undefined}\n {...aria}\n >\n <div className={cx(sc(\"calendar-months\"))}>\n {Array.from({ length: Math.max(1, numberOfMonths) }, (_, i) =>\n renderMonth(i),\n )}\n </div>\n </div>\n );\n}\n","import * as React from \"react\";\nimport { Popover as BasePopover } from \"@base-ui-components/react/popover\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport { Calendar } from \"./calendar\";\nimport type {\n CalendarColor,\n CalendarValue,\n DateRange,\n Weekday,\n} from \"./calendar\";\nimport type { SilicaSize } from \"./lib/tokens\";\n\ntype PositionerProps = React.ComponentProps<typeof BasePopover.Positioner>;\nexport type DatePickerSide = NonNullable<PositionerProps[\"side\"]>;\nexport type DatePickerAlign = NonNullable<PositionerProps[\"align\"]>;\nexport type DatePickerColor = CalendarColor;\nexport type DatePickerSize = SilicaSize;\n\nconst CalendarIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" aria-hidden=\"true\">\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" />\n <path d=\"M16 2v4M8 2v4M3 10h18\" strokeLinecap=\"round\" />\n </svg>\n);\n\ninterface TriggerShellProps {\n color?: DatePickerColor;\n size?: DatePickerSize;\n disabled?: boolean;\n placeholder?: React.ReactNode;\n label: React.ReactNode | null;\n className?: string;\n id?: string;\n ariaLabel?: string;\n}\n\n/** The `.input`-styled button that opens the calendar popover. */\nfunction DateTrigger({\n color,\n size = \"md\",\n disabled,\n placeholder,\n label,\n className,\n id,\n ariaLabel,\n}: TriggerShellProps) {\n const sc = useSilicaClass();\n return (\n <BasePopover.Trigger\n id={id}\n disabled={disabled}\n aria-label={ariaLabel}\n data-placeholder={label == null ? \"\" : undefined}\n className={cx(\n sc(\"input\"),\n color && sc(`input-${color}`),\n size !== \"md\" && sc(`input-${size}`),\n sc(\"date-field\"),\n className,\n )}\n >\n <span className={cx(sc(\"date-field-value\"))}>{label ?? placeholder}</span>\n <span className={cx(sc(\"date-field-icon\"))}>\n <CalendarIcon />\n </span>\n </BasePopover.Trigger>\n );\n}\n\ninterface PopupShellProps {\n side: DatePickerSide;\n align: DatePickerAlign;\n sideOffset: number;\n popupClassName?: string;\n children: React.ReactNode;\n}\n\nfunction DatePopup({\n side,\n align,\n sideOffset,\n popupClassName,\n children,\n}: PopupShellProps) {\n const sc = useSilicaClass();\n return (\n <BasePopover.Portal>\n <BasePopover.Positioner side={side} align={align} sideOffset={sideOffset}>\n <BasePopover.Popup className={cx(sc(\"calendar-popup\"), popupClassName)}>\n {children}\n </BasePopover.Popup>\n </BasePopover.Positioner>\n </BasePopover.Portal>\n );\n}\n\n// ---------------------------------------------------------------------------\n// DatePicker (single)\n// ---------------------------------------------------------------------------\n\nexport interface DatePickerProps {\n value?: Date | null;\n defaultValue?: Date | null;\n onValueChange?: (value: Date | null) => void;\n placeholder?: React.ReactNode;\n disabled?: boolean;\n weekStartsOn?: Weekday;\n min?: Date;\n max?: Date;\n isDateDisabled?: (date: Date) => boolean;\n locale?: string;\n /** Intl options for the trigger label (default `{ dateStyle: \"medium\" }`). */\n formatOptions?: Intl.DateTimeFormatOptions;\n color?: DatePickerColor;\n size?: DatePickerSize;\n side?: DatePickerSide;\n align?: DatePickerAlign;\n sideOffset?: number;\n className?: string;\n popupClassName?: string;\n id?: string;\n \"aria-label\"?: string;\n}\n\n/**\n * Silica DatePicker — an input that opens a `Calendar` popover to pick one date.\n *\n * <DatePicker value={date} onValueChange={setDate} placeholder=\"Pick a date\" />\n */\nexport function DatePicker({\n value,\n defaultValue,\n onValueChange,\n placeholder = \"Pick a date\",\n disabled,\n weekStartsOn,\n min,\n max,\n isDateDisabled,\n locale,\n formatOptions = { dateStyle: \"medium\" },\n color,\n size,\n side = \"bottom\",\n align = \"start\",\n sideOffset = 6,\n className,\n popupClassName,\n id,\n \"aria-label\": ariaLabel,\n}: DatePickerProps) {\n const [open, setOpen] = React.useState(false);\n const [internal, setInternal] = React.useState<Date | null>(\n defaultValue ?? null,\n );\n const current = value !== undefined ? value : internal;\n\n const fmt = React.useMemo(\n () => new Intl.DateTimeFormat(locale, formatOptions),\n [locale, formatOptions],\n );\n const label = current ? fmt.format(current) : null;\n\n function handleChange(v: CalendarValue) {\n const date = (v as Date | null) ?? null;\n if (value === undefined) setInternal(date);\n onValueChange?.(date);\n setOpen(false);\n }\n\n return (\n <BasePopover.Root open={open} onOpenChange={setOpen}>\n <DateTrigger\n color={color}\n size={size}\n disabled={disabled}\n placeholder={placeholder}\n label={label}\n className={className}\n id={id}\n ariaLabel={ariaLabel}\n />\n <DatePopup\n side={side}\n align={align}\n sideOffset={sideOffset}\n popupClassName={popupClassName}\n >\n <Calendar\n mode=\"single\"\n value={current}\n onValueChange={handleChange}\n weekStartsOn={weekStartsOn}\n min={min}\n max={max}\n isDateDisabled={isDateDisabled}\n locale={locale}\n color={color}\n />\n </DatePopup>\n </BasePopover.Root>\n );\n}\n\n// ---------------------------------------------------------------------------\n// DateRangePicker\n// ---------------------------------------------------------------------------\n\nexport interface DateRangePickerProps {\n value?: DateRange;\n defaultValue?: DateRange;\n onValueChange?: (value: DateRange) => void;\n placeholder?: React.ReactNode;\n disabled?: boolean;\n numberOfMonths?: number;\n weekStartsOn?: Weekday;\n min?: Date;\n max?: Date;\n isDateDisabled?: (date: Date) => boolean;\n locale?: string;\n formatOptions?: Intl.DateTimeFormatOptions;\n color?: DatePickerColor;\n size?: DatePickerSize;\n side?: DatePickerSide;\n align?: DatePickerAlign;\n sideOffset?: number;\n className?: string;\n popupClassName?: string;\n id?: string;\n \"aria-label\"?: string;\n}\n\nconst EMPTY_RANGE: DateRange = { start: null, end: null };\n\n/**\n * Silica DateRangePicker — an input that opens a two-month `Calendar` to pick a\n * start/end range. Closes once both ends are chosen.\n *\n * <DateRangePicker value={range} onValueChange={setRange} />\n */\nexport function DateRangePicker({\n value,\n defaultValue,\n onValueChange,\n placeholder = \"Pick a range\",\n disabled,\n numberOfMonths = 2,\n weekStartsOn,\n min,\n max,\n isDateDisabled,\n locale,\n formatOptions = { dateStyle: \"medium\" },\n color,\n size,\n side = \"bottom\",\n align = \"start\",\n sideOffset = 6,\n className,\n popupClassName,\n id,\n \"aria-label\": ariaLabel,\n}: DateRangePickerProps) {\n const [open, setOpen] = React.useState(false);\n const [internal, setInternal] = React.useState<DateRange>(\n defaultValue ?? EMPTY_RANGE,\n );\n const current = value !== undefined ? value : internal;\n\n const fmt = React.useMemo(\n () => new Intl.DateTimeFormat(locale, formatOptions),\n [locale, formatOptions],\n );\n const label =\n current.start && current.end\n ? `${fmt.format(current.start)} – ${fmt.format(current.end)}`\n : current.start\n ? `${fmt.format(current.start)} – …`\n : null;\n\n function handleChange(v: CalendarValue) {\n const next = (v as DateRange) ?? EMPTY_RANGE;\n if (value === undefined) setInternal(next);\n onValueChange?.(next);\n if (next.start && next.end) setOpen(false);\n }\n\n return (\n <BasePopover.Root open={open} onOpenChange={setOpen}>\n <DateTrigger\n color={color}\n size={size}\n disabled={disabled}\n placeholder={placeholder}\n label={label}\n className={className}\n id={id}\n ariaLabel={ariaLabel}\n />\n <DatePopup\n side={side}\n align={align}\n sideOffset={sideOffset}\n popupClassName={popupClassName}\n >\n <Calendar\n mode=\"range\"\n numberOfMonths={numberOfMonths}\n value={current}\n onValueChange={handleChange}\n weekStartsOn={weekStartsOn}\n min={min}\n max={max}\n isDateDisabled={isDateDisabled}\n locale={locale}\n color={color}\n />\n </DatePopup>\n </BasePopover.Root>\n );\n}\n","import * as React from \"react\";\nimport { Tooltip as BaseTooltip } from \"@base-ui-components/react/tooltip\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\n// Derive the side/align unions straight from Base UI so they never drift.\ntype PositionerProps = React.ComponentProps<typeof BaseTooltip.Positioner>;\nexport type TooltipSide = NonNullable<PositionerProps[\"side\"]>;\nexport type TooltipAlign = NonNullable<PositionerProps[\"align\"]>;\n\nexport interface TooltipProps {\n /** The floating content. */\n content: React.ReactNode;\n /** The trigger element — Base UI merges hover/focus behavior onto it. */\n children: React.ReactElement;\n /** Which side of the trigger to prefer. Default `top` (flips to avoid collisions). */\n side?: TooltipSide;\n /** Alignment along that side. Default `center`. */\n align?: TooltipAlign;\n /** Gap between trigger and popup, in px. Default `8`. */\n sideOffset?: number;\n /** Hover-open delay in ms. Default `600` (Base UI). */\n delay?: number;\n /** Close delay in ms. Default `0`. */\n closeDelay?: number;\n /** Controlled open state. */\n open?: boolean;\n /** Uncontrolled initial open state. */\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n /** Disable the tooltip entirely. */\n disabled?: boolean;\n /** Show the little arrow. Default `true`. */\n arrow?: boolean;\n /** Extra class on the popup surface. */\n className?: string;\n}\n\n/**\n * Silica Tooltip — behavior from Base UI, look from Silica's `.tooltip` CSS.\n *\n * <Tooltip content=\"Copy link\">\n * <Button variant=\"ghost\">Copy</Button>\n * </Tooltip>\n *\n * Wrap a subtree in <TooltipProvider> to share a delay across many tooltips\n * (adjacent ones then open instantly).\n */\nexport function Tooltip({\n content,\n children,\n side = \"top\",\n align = \"center\",\n sideOffset = 8,\n delay,\n closeDelay,\n open,\n defaultOpen,\n onOpenChange,\n disabled,\n arrow = true,\n className,\n}: TooltipProps) {\n const sc = useSilicaClass();\n return (\n <BaseTooltip.Root\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n disabled={disabled}\n >\n <BaseTooltip.Trigger\n // children is any valid element; Base UI's render wants the element's\n // props typed as an index — a safe cast, not a behavior change.\n render={children as React.ReactElement<Record<string, unknown>>}\n delay={delay}\n closeDelay={closeDelay}\n />\n <BaseTooltip.Portal>\n <BaseTooltip.Positioner side={side} align={align} sideOffset={sideOffset}>\n <BaseTooltip.Popup className={cx(sc(\"tooltip\"), className)}>\n {arrow && <BaseTooltip.Arrow className={cx(sc(\"tooltip-arrow\"))} />}\n {content}\n </BaseTooltip.Popup>\n </BaseTooltip.Positioner>\n </BaseTooltip.Portal>\n </BaseTooltip.Root>\n );\n}\n\nexport type TooltipProviderProps = React.ComponentProps<\n typeof BaseTooltip.Provider\n>;\n\n/** Shares a hover delay across the tooltips beneath it (adjacent open instantly). */\nexport function TooltipProvider(props: TooltipProviderProps) {\n return <BaseTooltip.Provider {...props} />;\n}\n","import * as React from \"react\";\nimport { Dialog as BaseDialog } from \"@base-ui-components/react/dialog\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\n// Props of a styled Base UI part: its own props but with a plain-string className.\ntype Styled<T extends React.ElementType> = Omit<\n React.ComponentPropsWithoutRef<T>,\n \"className\"\n> & { className?: string };\n\nconst asRender = (el: React.ReactElement) =>\n el as React.ReactElement<Record<string, unknown>>;\n\nexport type DialogProps = React.ComponentProps<typeof BaseDialog.Root>;\n\n/**\n * Silica Dialog — a modal, from Base UI (focus trap + scroll lock + dismissal).\n *\n * <Dialog>\n * <DialogTrigger><Button>Delete…</Button></DialogTrigger>\n * <DialogContent>\n * <DialogTitle>Delete project?</DialogTitle>\n * <DialogDescription>This can't be undone.</DialogDescription>\n * <div className=\"mt-4 flex justify-end gap-2\">\n * <DialogClose><Button variant=\"ghost\">Cancel</Button></DialogClose>\n * <DialogClose><Button color=\"error\">Delete</Button></DialogClose>\n * </div>\n * </DialogContent>\n * </Dialog>\n *\n * Pass `modal=\"trap-focus\"` for a non-scroll-locking dialog, or control it with\n * `open`/`onOpenChange`.\n */\nexport const Dialog = BaseDialog.Root;\n\n/** Wraps its single child element as the element that opens the dialog. */\nexport function DialogTrigger({ children }: { children: React.ReactElement }) {\n return <BaseDialog.Trigger render={asRender(children)} />;\n}\n\n/** Wraps its single child element as an element that closes the dialog. */\nexport function DialogClose({ children }: { children: React.ReactElement }) {\n return <BaseDialog.Close render={asRender(children)} />;\n}\n\nexport interface DialogContentProps\n extends Omit<Styled<typeof BaseDialog.Popup>, \"children\"> {\n children?: React.ReactNode;\n /** Class for the backdrop layer. */\n backdropClassName?: string;\n}\n\n/** Portals + backdrop + the centered popup surface in one. */\nexport function DialogContent({\n className,\n backdropClassName,\n children,\n ...rest\n}: DialogContentProps) {\n const sc = useSilicaClass();\n return (\n <BaseDialog.Portal>\n <BaseDialog.Backdrop\n className={cx(sc(\"dialog-backdrop\"), backdropClassName)}\n />\n <BaseDialog.Popup className={cx(sc(\"dialog-popup\"), className)} {...rest}>\n {children}\n </BaseDialog.Popup>\n </BaseDialog.Portal>\n );\n}\n\nexport function DialogTitle({ className, ...rest }: Styled<typeof BaseDialog.Title>) {\n const sc = useSilicaClass();\n return <BaseDialog.Title className={cx(sc(\"dialog-title\"), className)} {...rest} />;\n}\n\nexport function DialogDescription({\n className,\n ...rest\n}: Styled<typeof BaseDialog.Description>) {\n const sc = useSilicaClass();\n return (\n <BaseDialog.Description\n className={cx(sc(\"dialog-description\"), className)}\n {...rest}\n />\n );\n}\n","import * as React from \"react\";\nimport { Popover as BasePopover } from \"@base-ui-components/react/popover\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\ntype Styled<T extends React.ElementType> = Omit<\n React.ComponentPropsWithoutRef<T>,\n \"className\"\n> & { className?: string };\n\nconst asRender = (el: React.ReactElement) =>\n el as React.ReactElement<Record<string, unknown>>;\n\ntype PositionerProps = React.ComponentProps<typeof BasePopover.Positioner>;\nexport type PopoverSide = NonNullable<PositionerProps[\"side\"]>;\nexport type PopoverAlign = NonNullable<PositionerProps[\"align\"]>;\n\nexport type PopoverProps = React.ComponentProps<typeof BasePopover.Root>;\n\n/**\n * Silica Popover — a click-triggered floating panel (Base UI).\n *\n * <Popover>\n * <PopoverTrigger><Button variant=\"outline\">Details</Button></PopoverTrigger>\n * <PopoverContent>\n * <PopoverTitle>Storage</PopoverTitle>\n * <PopoverDescription>92% of your quota is used.</PopoverDescription>\n * </PopoverContent>\n * </Popover>\n */\nexport const Popover = BasePopover.Root;\n\nexport function PopoverTrigger({ children }: { children: React.ReactElement }) {\n return <BasePopover.Trigger render={asRender(children)} />;\n}\n\nexport function PopoverClose({ children }: { children: React.ReactElement }) {\n return <BasePopover.Close render={asRender(children)} />;\n}\n\nexport interface PopoverContentProps\n extends Omit<Styled<typeof BasePopover.Popup>, \"children\"> {\n children?: React.ReactNode;\n side?: PopoverSide;\n align?: PopoverAlign;\n sideOffset?: number;\n /** Show the little arrow. Default `false`. */\n arrow?: boolean;\n}\n\n/** Portal + positioner + the popup panel. */\nexport function PopoverContent({\n className,\n children,\n side = \"bottom\",\n align = \"center\",\n sideOffset = 8,\n arrow = false,\n ...rest\n}: PopoverContentProps) {\n const sc = useSilicaClass();\n return (\n <BasePopover.Portal>\n <BasePopover.Positioner side={side} align={align} sideOffset={sideOffset}>\n <BasePopover.Popup className={cx(sc(\"popover\"), className)} {...rest}>\n {arrow && <BasePopover.Arrow className={cx(sc(\"popover-arrow\"))} />}\n {children}\n </BasePopover.Popup>\n </BasePopover.Positioner>\n </BasePopover.Portal>\n );\n}\n\nexport function PopoverTitle({ className, ...rest }: Styled<typeof BasePopover.Title>) {\n const sc = useSilicaClass();\n return (\n <BasePopover.Title className={cx(sc(\"popover-title\"), className)} {...rest} />\n );\n}\n\nexport function PopoverDescription({\n className,\n ...rest\n}: Styled<typeof BasePopover.Description>) {\n const sc = useSilicaClass();\n return (\n <BasePopover.Description\n className={cx(sc(\"popover-description\"), className)}\n {...rest}\n />\n );\n}\n","import * as React from \"react\";\nimport { Menu as BaseMenu } from \"@base-ui-components/react/menu\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\ntype Styled<T extends React.ElementType> = Omit<\n React.ComponentPropsWithoutRef<T>,\n \"className\"\n> & { className?: string };\n\nconst asRender = (el: React.ReactElement) =>\n el as React.ReactElement<Record<string, unknown>>;\n\ntype PositionerProps = React.ComponentProps<typeof BaseMenu.Positioner>;\nexport type DropdownMenuSide = NonNullable<PositionerProps[\"side\"]>;\nexport type DropdownMenuAlign = NonNullable<PositionerProps[\"align\"]>;\n\nexport type DropdownMenuProps = React.ComponentProps<typeof BaseMenu.Root>;\n\n/**\n * Silica Dropdown Menu — a command menu (Base UI: roving focus, typeahead,\n * dismissal). Distinct from the static `Menu` nav-list.\n *\n * <DropdownMenu>\n * <DropdownMenuTrigger><Button variant=\"outline\">Options</Button></DropdownMenuTrigger>\n * <DropdownMenuContent>\n * <DropdownMenuLabel>Actions</DropdownMenuLabel>\n * <DropdownMenuItem onClick={…}>Edit</DropdownMenuItem>\n * <DropdownMenuItem onClick={…}>Duplicate</DropdownMenuItem>\n * <DropdownMenuSeparator />\n * <DropdownMenuItem disabled>Archive</DropdownMenuItem>\n * </DropdownMenuContent>\n * </DropdownMenu>\n */\nexport const DropdownMenu = BaseMenu.Root;\n\nexport function DropdownMenuTrigger({ children }: { children: React.ReactElement }) {\n return <BaseMenu.Trigger render={asRender(children)} />;\n}\n\nexport interface DropdownMenuContentProps\n extends Omit<Styled<typeof BaseMenu.Popup>, \"children\"> {\n children?: React.ReactNode;\n side?: DropdownMenuSide;\n align?: DropdownMenuAlign;\n sideOffset?: number;\n}\n\n/** Portal + positioner + the menu popup. */\nexport function DropdownMenuContent({\n className,\n children,\n side = \"bottom\",\n align = \"start\",\n sideOffset = 6,\n ...rest\n}: DropdownMenuContentProps) {\n const sc = useSilicaClass();\n return (\n <BaseMenu.Portal>\n <BaseMenu.Positioner side={side} align={align} sideOffset={sideOffset}>\n <BaseMenu.Popup className={cx(sc(\"dropdown\"), className)} {...rest}>\n {children}\n </BaseMenu.Popup>\n </BaseMenu.Positioner>\n </BaseMenu.Portal>\n );\n}\n\nexport function DropdownMenuItem({ className, ...rest }: Styled<typeof BaseMenu.Item>) {\n const sc = useSilicaClass();\n return <BaseMenu.Item className={cx(sc(\"dropdown-item\"), className)} {...rest} />;\n}\n\nexport function DropdownMenuSeparator({\n className,\n ...rest\n}: Styled<typeof BaseMenu.Separator>) {\n const sc = useSilicaClass();\n return (\n <BaseMenu.Separator\n className={cx(sc(\"dropdown-separator\"), className)}\n {...rest}\n />\n );\n}\n\nexport function DropdownMenuGroup(props: React.ComponentProps<typeof BaseMenu.Group>) {\n return <BaseMenu.Group {...props} />;\n}\n\nexport function DropdownMenuLabel({\n className,\n ...rest\n}: Styled<typeof BaseMenu.GroupLabel>) {\n const sc = useSilicaClass();\n return (\n <BaseMenu.GroupLabel className={cx(sc(\"dropdown-label\"), className)} {...rest} />\n );\n}\n","import * as React from \"react\";\nimport { Tabs as BaseTabs } from \"@base-ui-components/react/tabs\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor } from \"./lib/tokens\";\n\ntype Styled<T extends React.ElementType> = Omit<\n React.ComponentPropsWithoutRef<T>,\n \"className\"\n> & { className?: string };\n\nexport type TabValue = React.ComponentProps<typeof BaseTabs.Tab>[\"value\"];\n\n/** Visual style. `underline` (default), `boxed` (segmented), or `pills`. */\nexport type TabsVariant = \"underline\" | \"boxed\" | \"pills\";\n\nexport type TabsColor = SilicaColor;\n\nexport interface TabsProps extends Styled<typeof BaseTabs.Root> {\n variant?: TabsVariant;\n /** Accent color (underline + pills fill); maps to `tabs-<color>`. Default primary. */\n color?: TabsColor;\n}\n\n/**\n * Silica Tabs — Base UI selection state + roving focus + a moving indicator.\n *\n * <Tabs defaultValue=\"account\" variant=\"boxed\">\n * <TabsList>\n * <TabsTab value=\"account\">Account</TabsTab>\n * <TabsTab value=\"password\">Password</TabsTab>\n * </TabsList>\n * <TabsPanel value=\"account\">…</TabsPanel>\n * <TabsPanel value=\"password\">…</TabsPanel>\n * </Tabs>\n *\n * The same sliding indicator styles per variant — an underline, or a full pill.\n */\nexport function Tabs({ variant = \"underline\", color, className, ...rest }: TabsProps) {\n const sc = useSilicaClass();\n return (\n <BaseTabs.Root\n className={cx(\n sc(\"tabs\"),\n variant !== \"underline\" && sc(`tabs-${variant}`),\n color && sc(`tabs-${color}`),\n className,\n )}\n {...rest}\n />\n );\n}\n\nexport interface TabsListProps extends Omit<Styled<typeof BaseTabs.List>, \"children\"> {\n children?: React.ReactNode;\n /** Render the moving underline indicator. Default `true`. */\n indicator?: boolean;\n}\n\nexport function TabsList({ className, children, indicator = true, ...rest }: TabsListProps) {\n const sc = useSilicaClass();\n return (\n <BaseTabs.List className={cx(sc(\"tabs-list\"), className)} {...rest}>\n {children}\n {indicator && <BaseTabs.Indicator className={cx(sc(\"tabs-indicator\"))} />}\n </BaseTabs.List>\n );\n}\n\nexport function TabsTab({ className, ...rest }: Styled<typeof BaseTabs.Tab>) {\n const sc = useSilicaClass();\n return <BaseTabs.Tab className={cx(sc(\"tabs-tab\"), className)} {...rest} />;\n}\n\nexport function TabsPanel({ className, ...rest }: Styled<typeof BaseTabs.Panel>) {\n const sc = useSilicaClass();\n return <BaseTabs.Panel className={cx(sc(\"tabs-panel\"), className)} {...rest} />;\n}\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor, SilicaSize } from \"./lib/tokens\";\n\nexport interface CheckboxProps\n extends Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n \"size\" | \"color\" | \"type\"\n > {\n /** Accent color; maps to `checkbox-<color>` (checked fill + focus ring). */\n color?: SilicaColor;\n /** Default `md`. */\n size?: SilicaSize;\n}\n\n/**\n * Silica Checkbox — a restyled native `<input type=\"checkbox\">`. All native\n * attributes (`checked`, `defaultChecked`, `onChange`, `disabled`, …) pass\n * through. Pair it with your own `<label>` for a clickable caption.\n */\nexport const Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(\n function Checkbox({ color, size = \"md\", className, ...rest }, ref) {\n const sc = useSilicaClass();\n const classes = cx(\n sc(\"checkbox\"),\n color && sc(`checkbox-${color}`),\n size !== \"md\" && sc(`checkbox-${size}`),\n className,\n );\n return <input ref={ref} type=\"checkbox\" className={classes} {...rest} />;\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor, SilicaSize } from \"./lib/tokens\";\n\nexport interface RadioProps\n extends Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n \"size\" | \"color\" | \"type\"\n > {\n /** Accent color; maps to `radio-<color>` (checked dot + focus ring). */\n color?: SilicaColor;\n /** Default `md`. */\n size?: SilicaSize;\n}\n\n/**\n * Silica Radio — a restyled native `<input type=\"radio\">`. Group them by giving\n * several the same `name`. All native attributes pass through.\n */\nexport const Radio = React.forwardRef<HTMLInputElement, RadioProps>(\n function Radio({ color, size = \"md\", className, ...rest }, ref) {\n const sc = useSilicaClass();\n const classes = cx(\n sc(\"radio\"),\n color && sc(`radio-${color}`),\n size !== \"md\" && sc(`radio-${size}`),\n className,\n );\n return <input ref={ref} type=\"radio\" className={classes} {...rest} />;\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor, SilicaSize } from \"./lib/tokens\";\n\nexport interface ToggleProps\n extends Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n \"size\" | \"color\" | \"type\"\n > {\n /** Accent color; maps to `toggle-<color>` (checked track fill). */\n color?: SilicaColor;\n /** Default `md`. */\n size?: SilicaSize;\n}\n\n/**\n * Silica Toggle — a restyled native `<input type=\"checkbox\">` presented as a\n * switch. Adds `role=\"switch\"` for assistive tech; all native attributes\n * (`checked`, `onChange`, `disabled`, …) pass through.\n */\nexport const Toggle = React.forwardRef<HTMLInputElement, ToggleProps>(\n function Toggle({ color, size = \"md\", className, ...rest }, ref) {\n const sc = useSilicaClass();\n const classes = cx(\n sc(\"toggle\"),\n color && sc(`toggle-${color}`),\n size !== \"md\" && sc(`toggle-${size}`),\n className,\n );\n return (\n <input\n ref={ref}\n type=\"checkbox\"\n role=\"switch\"\n className={classes}\n {...rest}\n />\n );\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor } from \"./lib/tokens\";\n\nexport type TagInputSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface TagInputProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\" | \"color\"> {\n /** Controlled tag list. */\n value?: string[];\n /** Uncontrolled initial tags. */\n defaultValue?: string[];\n /** Called with the next tag list whenever it changes. */\n onValueChange?: (tags: string[]) => void;\n /** Placeholder shown in the text field when there are no tags. */\n placeholder?: string;\n /** Disable the whole control. */\n disabled?: boolean;\n /** Chip + focus-ring accent color. */\n color?: SilicaColor;\n /** Height/type scale. Default `\"md\"`. */\n size?: TagInputSize;\n /** Keys that commit the current text as a tag. Default `[\"Enter\", \",\"]`. */\n separators?: string[];\n /** Reject duplicate tags. Default `true`. */\n dedupe?: boolean;\n /** Maximum number of tags. */\n max?: number;\n /** Commit any pending text when the field loses focus. Default `true`. */\n addOnBlur?: boolean;\n /** Extra props for the inner `<input>`. */\n inputProps?: React.InputHTMLAttributes<HTMLInputElement>;\n}\n\n/**\n * A chip-based multi-value text field — tags for segments, recipients,\n * categories, and the like. Type and press Enter (or comma) to add; Backspace on\n * an empty field removes the last tag. Controlled via `value`/`onValueChange` or\n * uncontrolled via `defaultValue`.\n */\nexport const TagInput = React.forwardRef<HTMLDivElement, TagInputProps>(\n function TagInput(\n {\n value,\n defaultValue,\n onValueChange,\n placeholder,\n disabled,\n color,\n size = \"md\",\n separators = [\"Enter\", \",\"],\n dedupe = true,\n max,\n addOnBlur = true,\n inputProps,\n className,\n ...rest\n },\n forwardedRef,\n ) {\n const sc = useSilicaClass();\n const isControlled = value !== undefined;\n const [uncontrolled, setUncontrolled] = React.useState<string[]>(\n defaultValue ?? [],\n );\n const tags = isControlled ? value : uncontrolled;\n const [text, setText] = React.useState(\"\");\n const fieldRef = React.useRef<HTMLInputElement>(null);\n\n const commit = (next: string[]) => {\n if (!isControlled) setUncontrolled(next);\n onValueChange?.(next);\n };\n\n const addTag = (raw: string) => {\n const t = raw.trim();\n if (!t) return;\n setText(\"\");\n if (dedupe && tags.includes(t)) return;\n if (max != null && tags.length >= max) return;\n commit([...tags, t]);\n };\n\n const removeAt = (index: number) => {\n commit(tags.filter((_, i) => i !== index));\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (separators.includes(e.key)) {\n e.preventDefault();\n addTag(text);\n } else if (e.key === \"Backspace\" && text === \"\" && tags.length > 0) {\n removeAt(tags.length - 1);\n }\n inputProps?.onKeyDown?.(e);\n };\n\n return (\n <div\n ref={forwardedRef}\n className={cx(\n sc(\"tag-input\"),\n color && sc(`tag-input-${color}`),\n size !== \"md\" && sc(`tag-input-${size}`),\n className,\n )}\n data-disabled={disabled || undefined}\n onMouseDown={(e) => {\n // Clicking the empty part of the box focuses the field without\n // stealing focus from a chip's remove button.\n if (e.target === e.currentTarget) {\n e.preventDefault();\n fieldRef.current?.focus();\n }\n }}\n {...rest}\n >\n {tags.map((tag, i) => (\n <span key={`${tag}-${i}`} className={cx(sc(\"tag-input-chip\"))}>\n <span className={cx(sc(\"tag-input-chip-label\"))}>{tag}</span>\n {!disabled && (\n <button\n type=\"button\"\n className={cx(sc(\"tag-input-remove\"))}\n aria-label={`Remove ${tag}`}\n onClick={(e) => {\n e.stopPropagation();\n removeAt(i);\n }}\n >\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n >\n <path d=\"M6 6l12 12M18 6L6 18\" />\n </svg>\n </button>\n )}\n </span>\n ))}\n <input\n ref={fieldRef}\n type=\"text\"\n className={cx(sc(\"tag-input-field\"))}\n value={text}\n placeholder={tags.length === 0 ? placeholder : undefined}\n disabled={disabled}\n {...inputProps}\n onChange={(e) => {\n setText(e.target.value);\n inputProps?.onChange?.(e);\n }}\n onKeyDown={handleKeyDown}\n onBlur={(e) => {\n if (addOnBlur) addTag(text);\n inputProps?.onBlur?.(e);\n }}\n />\n </div>\n );\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport type EmptyStateSize = \"sm\" | \"md\";\n\nexport interface EmptyStateProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"title\"> {\n /** Icon/illustration shown in the chip above the title. */\n icon?: React.ReactNode;\n /** Headline (e.g. \"No orders yet\"). */\n title?: React.ReactNode;\n /** Supporting copy under the title. */\n description?: React.ReactNode;\n /** Action buttons/links rendered below the copy. */\n actions?: React.ReactNode;\n /** `\"md\"` (default) or the more compact `\"sm\"`. */\n size?: EmptyStateSize;\n}\n\n/**\n * The centered \"nothing here yet\" placeholder — icon, title, description, and an\n * action row. Drop it into an empty list, a table body, a card, or a panel.\n * Slots are optional; `children` renders between the description and the actions\n * for custom content.\n */\nexport const EmptyState = React.forwardRef<HTMLDivElement, EmptyStateProps>(\n function EmptyState(\n { icon, title, description, actions, size = \"md\", className, children, ...rest },\n ref,\n ) {\n const sc = useSilicaClass();\n return (\n <div\n ref={ref}\n className={cx(\n sc(\"empty-state\"),\n size === \"sm\" && sc(\"empty-state-sm\"),\n className,\n )}\n {...rest}\n >\n {icon != null && <div className={cx(sc(\"empty-state-icon\"))}>{icon}</div>}\n {title != null && (\n <div className={cx(sc(\"empty-state-title\"))}>{title}</div>\n )}\n {description != null && (\n <div className={cx(sc(\"empty-state-description\"))}>{description}</div>\n )}\n {children}\n {actions != null && (\n <div className={cx(sc(\"empty-state-actions\"))}>{actions}</div>\n )}\n </div>\n );\n },\n);\n","/**\n * OKLCH ↔ sRGB color math — pure, dependency-free.\n *\n * SilicaUI's whole color system is OKLCH (see the theme tokens), so the\n * `ColorPicker` is OKLCH-native: it edits L (lightness 0–1), C (chroma 0–~0.37),\n * and H (hue 0–360) directly. These helpers convert to/from sRGB so the picker\n * can show a hex readout and accept hex input, and clamp out-of-gamut colors for\n * display. The matrices are Björn Ottosson's canonical OKLab ⇄ linear-sRGB\n * transforms (https://bottosson.github.io/posts/oklab/).\n */\n\nexport interface Oklch {\n /** Lightness, 0–1. */\n l: number;\n /** Chroma, 0–~0.37 (values past the sRGB gamut get clamped on export). */\n c: number;\n /** Hue angle in degrees, 0–360. */\n h: number;\n}\n\n/** Largest chroma the picker exposes — a bit past sRGB's gamut for most hues. */\nexport const MAX_CHROMA = 0.37;\n\nconst clamp01 = (x: number) => (x < 0 ? 0 : x > 1 ? 1 : x);\n\n/** linear-light channel → gamma-encoded sRGB (0–1). */\nfunction gammaEncode(x: number): number {\n return x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055;\n}\n\n/** gamma-encoded sRGB channel (0–1) → linear-light. */\nfunction gammaDecode(x: number): number {\n return x <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\n/** OKLCH → linear sRGB (may fall outside 0–1 when out of gamut). */\nfunction oklchToLinear(l: number, c: number, h: number): [number, number, number] {\n const hr = (h * Math.PI) / 180;\n const a = c * Math.cos(hr);\n const b = c * Math.sin(hr);\n\n const l_ = l + 0.3963377774 * a + 0.2158037573 * b;\n const m_ = l - 0.1055613458 * a - 0.0638541728 * b;\n const s_ = l - 0.0894841775 * a - 1.291485548 * b;\n\n const L = l_ * l_ * l_;\n const M = m_ * m_ * m_;\n const S = s_ * s_ * s_;\n\n return [\n 4.0767416621 * L - 3.3077115913 * M + 0.2309699292 * S,\n -1.2684380046 * L + 2.6097574011 * M - 0.3413193965 * S,\n -0.0041960863 * L - 0.7034186147 * M + 1.707614701 * S,\n ];\n}\n\n/** True if the OKLCH color is representable in sRGB without clamping. */\nexport function inGamut(l: number, c: number, h: number): boolean {\n const [r, g, b] = oklchToLinear(l, c, h);\n const eps = 1e-4;\n return (\n r >= -eps &&\n r <= 1 + eps &&\n g >= -eps &&\n g <= 1 + eps &&\n b >= -eps &&\n b <= 1 + eps\n );\n}\n\n/** OKLCH → sRGB bytes (0–255), gamut-clamped per channel. */\nexport function oklchToRgb(l: number, c: number, h: number): [number, number, number] {\n const [r, g, b] = oklchToLinear(l, c, h);\n return [\n Math.round(clamp01(gammaEncode(r)) * 255),\n Math.round(clamp01(gammaEncode(g)) * 255),\n Math.round(clamp01(gammaEncode(b)) * 255),\n ];\n}\n\n/** OKLCH → `#rrggbb`, gamut-clamped. */\nexport function oklchToHex(l: number, c: number, h: number): string {\n const [r, g, b] = oklchToRgb(l, c, h);\n const hex = (n: number) => n.toString(16).padStart(2, \"0\");\n return `#${hex(r)}${hex(g)}${hex(b)}`;\n}\n\n/** `#rgb`/`#rrggbb` → OKLCH, or `null` if it doesn't parse. */\nexport function hexToOklch(hex: string): Oklch | null {\n const m = /^#?([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(hex.trim());\n if (!m || !m[1]) return null;\n let s = m[1];\n if (s.length === 3) s = s.replace(/./g, (ch) => ch + ch);\n const rn = parseInt(s.slice(0, 2), 16) / 255;\n const gn = parseInt(s.slice(2, 4), 16) / 255;\n const bn = parseInt(s.slice(4, 6), 16) / 255;\n\n const r = gammaDecode(rn);\n const g = gammaDecode(gn);\n const b = gammaDecode(bn);\n\n const l = 0.4122214708 * r + 0.5363325363 * g + 0.0514459929 * b;\n const m2 = 0.2119034982 * r + 0.6806995451 * g + 0.1073969566 * b;\n const s2 = 0.0883024619 * r + 0.2817188376 * g + 0.6299787005 * b;\n\n const l_ = Math.cbrt(l);\n const m_ = Math.cbrt(m2);\n const s_ = Math.cbrt(s2);\n\n const L = 0.2104542553 * l_ + 0.793617785 * m_ - 0.0040720468 * s_;\n const a = 1.9779984951 * l_ - 2.428592205 * m_ + 0.4505937099 * s_;\n const bb = 0.0259040371 * l_ + 0.7827717662 * m_ - 0.808675766 * s_;\n\n const c = Math.sqrt(a * a + bb * bb);\n let hue = (Math.atan2(bb, a) * 180) / Math.PI;\n if (hue < 0) hue += 360;\n return { l: L, c, h: hue };\n}\n\n/** OKLCH → a canonical `oklch(L C H)` string with sensible rounding. */\nexport function formatOklch(l: number, c: number, h: number): string {\n const r3 = (n: number) => Math.round(n * 1000) / 1000;\n const r1 = (n: number) => Math.round(n * 10) / 10;\n return `oklch(${r3(l)} ${r3(c)} ${r1(h)})`;\n}\n\n/** Parse an `oklch(L C H)` string (L/C plain numbers or %) → OKLCH, or `null`. */\nexport function parseOklch(input: string): Oklch | null {\n const m = /oklch\\(\\s*([\\d.]+%?)\\s+([\\d.]+%?)\\s+([\\d.]+)/i.exec(input);\n if (!m) return null;\n const [, ls, cs, hs] = m;\n if (ls === undefined || cs === undefined || hs === undefined) return null;\n const num = (s: string, scale: number) =>\n s.endsWith(\"%\") ? (parseFloat(s) / 100) * scale : parseFloat(s);\n return { l: num(ls, 1), c: num(cs, 1), h: parseFloat(hs) };\n}\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport {\n MAX_CHROMA,\n oklchToHex,\n hexToOklch,\n formatOklch,\n parseOklch,\n type Oklch,\n} from \"./lib/oklch\";\n\nexport type ColorPickerFormat = \"oklch\" | \"hex\";\n\nexport interface ColorPickerProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\" | \"color\"> {\n /** Controlled color (an `oklch(…)` or `#hex` string). */\n value?: string;\n /** Uncontrolled initial color. Default `oklch(0.7 0.15 250)`. */\n defaultValue?: string;\n /** Fires with the formatted string AND the raw OKLCH on every change. */\n onValueChange?: (value: string, oklch: Oklch) => void;\n /** Output format handed to `onValueChange`. Default `\"oklch\"`. */\n format?: ColorPickerFormat;\n /** Show the hex read/write field. Default `true`. */\n showHex?: boolean;\n disabled?: boolean;\n}\n\nconst DEFAULT: Oklch = { l: 0.7, c: 0.15, h: 250 };\nconst clamp = (x: number, lo: number, hi: number) =>\n x < lo ? lo : x > hi ? hi : x;\n\nfunction parseInput(s: string | undefined): Oklch {\n if (!s) return DEFAULT;\n return parseOklch(s) ?? hexToOklch(s) ?? DEFAULT;\n}\n\ninterface ColorSliderProps {\n label: string;\n valueText: string;\n min: number;\n max: number;\n step: number;\n value: number;\n trackStyle: React.CSSProperties;\n disabled?: boolean;\n onChange: (v: number) => void;\n}\n\n/** One channel slider: a gradient track with a draggable, keyboard-nav thumb. */\nfunction ColorSlider({\n label,\n valueText,\n min,\n max,\n step,\n value,\n trackStyle,\n disabled,\n onChange,\n}: ColorSliderProps) {\n const sc = useSilicaClass();\n const trackRef = React.useRef<HTMLDivElement>(null);\n const pct = ((value - min) / (max - min)) * 100;\n\n const setFromClientX = (clientX: number) => {\n const el = trackRef.current;\n if (!el) return;\n const rect = el.getBoundingClientRect();\n const ratio = clamp((clientX - rect.left) / rect.width, 0, 1);\n onChange(min + ratio * (max - min));\n };\n\n const onKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n const big = step * 10;\n let next: number | null = null;\n if (e.key === \"ArrowLeft\" || e.key === \"ArrowDown\") next = value - step;\n else if (e.key === \"ArrowRight\" || e.key === \"ArrowUp\") next = value + step;\n else if (e.key === \"PageDown\") next = value - big;\n else if (e.key === \"PageUp\") next = value + big;\n else if (e.key === \"Home\") next = min;\n else if (e.key === \"End\") next = max;\n if (next !== null) {\n e.preventDefault();\n onChange(clamp(next, min, max));\n }\n };\n\n return (\n <div\n ref={trackRef}\n className={cx(sc(\"color-picker-track\"))}\n style={trackStyle}\n role=\"slider\"\n aria-label={label}\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={value}\n aria-valuetext={valueText}\n aria-disabled={disabled || undefined}\n tabIndex={disabled ? -1 : 0}\n onKeyDown={disabled ? undefined : onKeyDown}\n onPointerDown={(e) => {\n if (disabled) return;\n e.currentTarget.setPointerCapture(e.pointerId);\n setFromClientX(e.clientX);\n }}\n onPointerMove={(e) => {\n if (disabled || !e.currentTarget.hasPointerCapture(e.pointerId)) return;\n setFromClientX(e.clientX);\n }}\n >\n <span\n className={cx(sc(\"color-picker-thumb\"))}\n style={{ left: `${pct}%` }}\n />\n </div>\n );\n}\n\n/**\n * ColorPicker — an OKLCH-native color editor. SilicaUI's tokens are OKLCH, so\n * the picker edits Lightness / Chroma / Hue directly (each slider's track shows\n * the live ramp), previews the result, and reads/writes hex. Controlled via\n * `value`/`onValueChange` or uncontrolled via `defaultValue`.\n */\nexport const ColorPicker = React.forwardRef<HTMLDivElement, ColorPickerProps>(\n function ColorPicker(\n {\n value,\n defaultValue,\n onValueChange,\n format = \"oklch\",\n showHex = true,\n disabled,\n className,\n ...rest\n },\n forwardedRef,\n ) {\n const sc = useSilicaClass();\n const isControlled = value !== undefined;\n const [internal, setInternal] = React.useState<Oklch>(() =>\n parseInput(value ?? defaultValue),\n );\n const [hexDraft, setHexDraft] = React.useState<string | null>(null);\n\n // Keep internal state in step with a controlled `value`.\n React.useEffect(() => {\n if (isControlled) setInternal(parseInput(value));\n }, [value, isControlled]);\n\n const { l, c, h } = internal;\n\n const commit = (next: Oklch) => {\n if (!isControlled) setInternal(next);\n const out =\n format === \"hex\"\n ? oklchToHex(next.l, next.c, next.h)\n : formatOklch(next.l, next.c, next.h);\n onValueChange?.(out, next);\n };\n\n const hex = oklchToHex(l, c, h);\n const hexValue = hexDraft ?? hex;\n\n const commitHex = () => {\n if (hexDraft !== null) {\n const parsed = hexToOklch(hexDraft);\n if (parsed) commit(parsed);\n setHexDraft(null);\n }\n };\n\n // Live gradient tracks — the real OKLCH ramp for each channel.\n const lTrack = `linear-gradient(to right in oklch, oklch(0 ${c} ${h}), oklch(1 ${c} ${h}))`;\n const cTrack = `linear-gradient(to right in oklch, oklch(${l} 0 ${h}), oklch(${l} ${MAX_CHROMA} ${h}))`;\n const hTrack = `linear-gradient(to right in oklch, oklch(${l} ${c} 0), oklch(${l} ${c} 60), oklch(${l} ${c} 120), oklch(${l} ${c} 180), oklch(${l} ${c} 240), oklch(${l} ${c} 300), oklch(${l} ${c} 360))`;\n\n return (\n <div\n ref={forwardedRef}\n className={cx(sc(\"color-picker\"), className)}\n data-disabled={disabled || undefined}\n {...rest}\n >\n <div className={cx(sc(\"color-picker-preview\"))}>\n <span\n className={cx(sc(\"color-picker-swatch\"))}\n style={{ backgroundColor: `oklch(${l} ${c} ${h})` }}\n />\n <div className={cx(sc(\"color-picker-values\"))}>\n <span className={cx(sc(\"color-picker-value-oklch\"))}>\n {formatOklch(l, c, h)}\n </span>\n <span className={cx(sc(\"color-picker-value-hex\"))}>{hex}</span>\n </div>\n </div>\n\n <div className={cx(sc(\"color-picker-sliders\"))}>\n <div className={cx(sc(\"color-picker-slider\"))}>\n <span className={cx(sc(\"color-picker-slider-label\"))}>L</span>\n <ColorSlider\n label=\"Lightness\"\n valueText={l.toFixed(2)}\n min={0}\n max={1}\n step={0.01}\n value={l}\n trackStyle={{ background: lTrack }}\n disabled={disabled}\n onChange={(v) => commit({ l: v, c, h })}\n />\n <span className={cx(sc(\"color-picker-slider-value\"))}>\n {l.toFixed(2)}\n </span>\n </div>\n\n <div className={cx(sc(\"color-picker-slider\"))}>\n <span className={cx(sc(\"color-picker-slider-label\"))}>C</span>\n <ColorSlider\n label=\"Chroma\"\n valueText={c.toFixed(3)}\n min={0}\n max={MAX_CHROMA}\n step={0.005}\n value={c}\n trackStyle={{ background: cTrack }}\n disabled={disabled}\n onChange={(v) => commit({ l, c: v, h })}\n />\n <span className={cx(sc(\"color-picker-slider-value\"))}>\n {c.toFixed(2)}\n </span>\n </div>\n\n <div className={cx(sc(\"color-picker-slider\"))}>\n <span className={cx(sc(\"color-picker-slider-label\"))}>H</span>\n <ColorSlider\n label=\"Hue\"\n valueText={`${Math.round(h)}°`}\n min={0}\n max={360}\n step={1}\n value={h}\n trackStyle={{ background: hTrack }}\n disabled={disabled}\n onChange={(v) => commit({ l, c, h: v })}\n />\n <span className={cx(sc(\"color-picker-slider-value\"))}>\n {Math.round(h)}°\n </span>\n </div>\n </div>\n\n {showHex && (\n <div className={cx(sc(\"color-picker-hex\"))}>\n <span className={cx(sc(\"color-picker-hex-label\"))}>HEX</span>\n <input\n type=\"text\"\n className={cx(sc(\"color-picker-hex-input\"))}\n value={hexValue}\n disabled={disabled}\n spellCheck={false}\n onChange={(e) => setHexDraft(e.target.value)}\n onBlur={commitHex}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n commitHex();\n }\n }}\n />\n </div>\n )}\n </div>\n );\n },\n);\n","import * as React from \"react\";\nimport { Dialog as BaseDialog } from \"@base-ui-components/react/dialog\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport interface CommandItem {\n /** Stable identity (also the React key). */\n id: string;\n /** Primary text shown in the row. */\n label: string;\n /** Optional secondary line under the label. */\n description?: string;\n /** Optional leading icon (already an element, e.g. an `<svg>`). */\n icon?: React.ReactNode;\n /** Optional trailing shortcut hint, display-only (e.g. `\"⌘P\"`). */\n shortcut?: string;\n /** Extra terms to match against beyond the label/description. */\n keywords?: string[];\n /** Group heading this item lives under. */\n group?: string;\n disabled?: boolean;\n /** Run when the item is chosen (click or Enter). */\n onSelect?: () => void;\n}\n\nexport interface CommandPaletteProps {\n /** The commands to show and filter. */\n items: CommandItem[];\n /** Controlled open state. */\n open?: boolean;\n /** Uncontrolled initial open state. */\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n /** Search box placeholder. */\n placeholder?: string;\n /** Shown when nothing matches. */\n emptyMessage?: string;\n /**\n * Global toggle hotkey. `true` (default) binds ⌘K / Ctrl+K; pass a single\n * letter to rebind (still combined with ⌘/Ctrl); `false` disables it.\n */\n hotkey?: boolean | string;\n className?: string;\n}\n\ninterface GroupEntry {\n item: CommandItem;\n index: number;\n}\n\nconst SearchIcon = (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <circle cx=\"11\" cy=\"11\" r=\"7\" />\n <path d=\"m21 21-4.3-4.3\" />\n </svg>\n);\n\n/**\n * CommandPalette — a ⌘K launcher. Feed it a flat `items` list (optionally\n * grouped); it filters as you type, moves the highlight with ↑/↓, runs the\n * active command on Enter, and closes on Escape or backdrop click. Opens on\n * ⌘K/Ctrl+K by default, or drive it with `open`/`onOpenChange`.\n */\nexport function CommandPalette({\n items,\n open,\n defaultOpen,\n onOpenChange,\n placeholder = \"Type a command or search…\",\n emptyMessage = \"No results found.\",\n hotkey = true,\n className,\n}: CommandPaletteProps) {\n const sc = useSilicaClass();\n const isControlled = open !== undefined;\n const [internalOpen, setInternalOpen] = React.useState(defaultOpen ?? false);\n const isOpen = isControlled ? open : internalOpen;\n\n const [query, setQuery] = React.useState(\"\");\n const [activeIndex, setActiveIndex] = React.useState(0);\n const listRef = React.useRef<HTMLDivElement>(null);\n\n const setOpen = React.useCallback(\n (next: boolean) => {\n if (!isControlled) setInternalOpen(next);\n onOpenChange?.(next);\n if (next) {\n setQuery(\"\");\n setActiveIndex(0);\n }\n },\n [isControlled, onOpenChange],\n );\n\n // Global ⌘K / Ctrl+K (or the custom letter) toggles the palette.\n React.useEffect(() => {\n if (!hotkey) return;\n const key = (typeof hotkey === \"string\" ? hotkey : \"k\").toLowerCase();\n const onKey = (e: KeyboardEvent) => {\n if (e.key.toLowerCase() === key && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n setOpen(!isOpen);\n }\n };\n document.addEventListener(\"keydown\", onKey);\n return () => document.removeEventListener(\"keydown\", onKey);\n }, [hotkey, isOpen, setOpen]);\n\n const filtered = React.useMemo(() => {\n const q = query.trim().toLowerCase();\n if (!q) return items;\n return items.filter((it) => {\n const hay = [it.label, it.description, it.group, ...(it.keywords ?? [])]\n .filter(Boolean)\n .join(\" \")\n .toLowerCase();\n return hay.includes(q);\n });\n }, [items, query]);\n\n // Bucket into groups, preserving first-seen group order + the flat index.\n const groups = React.useMemo(() => {\n const map = new Map<string | undefined, GroupEntry[]>();\n filtered.forEach((item, index) => {\n const bucket = map.get(item.group);\n if (bucket) bucket.push({ item, index });\n else map.set(item.group, [{ item, index }]);\n });\n return [...map.entries()];\n }, [filtered]);\n\n // Keep the active row valid + in view.\n React.useEffect(() => {\n if (activeIndex >= filtered.length) setActiveIndex(0);\n }, [filtered.length, activeIndex]);\n\n React.useEffect(() => {\n listRef.current?.querySelector(\"[data-active]\")?.scrollIntoView({ block: \"nearest\" });\n }, [activeIndex, isOpen]);\n\n const move = (dir: 1 | -1) => {\n const n = filtered.length;\n if (n === 0) return;\n let i = activeIndex;\n for (let step = 0; step < n; step++) {\n i = (i + dir + n) % n;\n if (!filtered[i]?.disabled) break;\n }\n setActiveIndex(i);\n };\n\n const select = (index: number) => {\n const it = filtered[index];\n if (!it || it.disabled) return;\n it.onSelect?.();\n setOpen(false);\n };\n\n const onInputKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n move(1);\n } else if (e.key === \"ArrowUp\") {\n e.preventDefault();\n move(-1);\n } else if (e.key === \"Enter\") {\n e.preventDefault();\n select(activeIndex);\n }\n // Escape falls through to Base UI Dialog, which closes the palette.\n };\n\n return (\n <BaseDialog.Root open={isOpen} onOpenChange={setOpen}>\n <BaseDialog.Portal>\n <BaseDialog.Backdrop className={cx(sc(\"command-palette-backdrop\"))} />\n <BaseDialog.Popup\n className={cx(sc(\"command-palette-popup\"), className)}\n aria-label=\"Command palette\"\n >\n <div className={cx(sc(\"command-palette-search\"))}>\n <span className={cx(sc(\"command-palette-search-icon\"))}>\n {SearchIcon}\n </span>\n <input\n autoFocus\n type=\"text\"\n className={cx(sc(\"command-palette-input\"))}\n placeholder={placeholder}\n value={query}\n spellCheck={false}\n aria-label=\"Search commands\"\n onChange={(e) => {\n setQuery(e.target.value);\n setActiveIndex(0);\n }}\n onKeyDown={onInputKeyDown}\n />\n </div>\n\n <div className={cx(sc(\"command-palette-list\"))} ref={listRef} role=\"listbox\">\n {filtered.length === 0 ? (\n <div className={cx(sc(\"command-palette-empty\"))}>{emptyMessage}</div>\n ) : (\n groups.map(([groupKey, entries]) => (\n <div key={groupKey ?? \"\u0000\"} className={cx(sc(\"command-palette-group\"))}>\n {groupKey && (\n <div className={cx(sc(\"command-palette-group-label\"))}>\n {groupKey}\n </div>\n )}\n {entries.map(({ item, index }) => (\n <div\n key={item.id}\n className={cx(sc(\"command-palette-item\"))}\n role=\"option\"\n aria-selected={index === activeIndex}\n aria-disabled={item.disabled || undefined}\n data-active={index === activeIndex || undefined}\n data-disabled={item.disabled || undefined}\n onPointerMove={() => setActiveIndex(index)}\n onClick={() => select(index)}\n >\n {item.icon && (\n <span className={cx(sc(\"command-palette-item-icon\"))}>\n {item.icon}\n </span>\n )}\n <span className={cx(sc(\"command-palette-item-body\"))}>\n <span className={cx(sc(\"command-palette-item-label\"))}>\n {item.label}\n </span>\n {item.description && (\n <span className={cx(sc(\"command-palette-item-desc\"))}>\n {item.description}\n </span>\n )}\n </span>\n {item.shortcut && (\n <span className={cx(sc(\"command-palette-item-shortcut\"))}>\n {item.shortcut}\n </span>\n )}\n </div>\n ))}\n </div>\n ))\n )}\n </div>\n </BaseDialog.Popup>\n </BaseDialog.Portal>\n </BaseDialog.Root>\n );\n}\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport interface TreeNode {\n /** Stable identity (React key + selection/expansion id). */\n id: string;\n /** Row label. */\n label: React.ReactNode;\n /** Optional leading icon element. */\n icon?: React.ReactNode;\n /** Child nodes; presence makes the node expandable. */\n children?: TreeNode[];\n disabled?: boolean;\n}\n\nexport interface TreeViewProps\n extends Omit<React.HTMLAttributes<HTMLUListElement>, \"onSelect\"> {\n /** The node forest. */\n items: TreeNode[];\n /** Controlled set of expanded node ids. */\n expanded?: string[];\n /** Uncontrolled initial expanded ids. */\n defaultExpanded?: string[];\n onExpandedChange?: (expanded: string[]) => void;\n /** Controlled selected node id. */\n selected?: string;\n /** Uncontrolled initial selected id. */\n defaultSelected?: string;\n onSelectedChange?: (id: string) => void;\n /** Fires with the full node when one is selected. */\n onSelect?: (node: TreeNode) => void;\n}\n\ninterface Flat {\n node: TreeNode;\n level: number;\n hasChildren: boolean;\n expanded: boolean;\n parentId?: string;\n}\n\nfunction flatten(\n nodes: TreeNode[],\n level: number,\n expandedSet: Set<string>,\n parentId: string | undefined,\n out: Flat[],\n): Flat[] {\n for (const node of nodes) {\n const hasChildren = !!node.children?.length;\n const isExpanded = expandedSet.has(node.id);\n out.push({ node, level, hasChildren, expanded: isExpanded, parentId });\n if (hasChildren && isExpanded) {\n flatten(node.children as TreeNode[], level + 1, expandedSet, node.id, out);\n }\n }\n return out;\n}\n\nconst Chevron = (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"m9 6 6 6-6 6\" />\n </svg>\n);\n\n/**\n * TreeView — a hierarchical tree with full keyboard support (↑/↓ move,\n * →/← expand-or-descend / collapse-or-ascend, Home/End, Enter selects, Space\n * toggles). Feed it a `TreeNode[]` forest; control expansion via\n * `expanded`/`onExpandedChange` and selection via `selected`/`onSelectedChange`,\n * or run uncontrolled with the `default*` props.\n */\nexport const TreeView = React.forwardRef<HTMLUListElement, TreeViewProps>(\n function TreeView(\n {\n items,\n expanded,\n defaultExpanded,\n onExpandedChange,\n selected,\n defaultSelected,\n onSelectedChange,\n onSelect,\n className,\n ...rest\n },\n forwardedRef,\n ) {\n const sc = useSilicaClass();\n\n const expandedControlled = expanded !== undefined;\n const [expandedInternal, setExpandedInternal] = React.useState<Set<string>>(\n () => new Set(defaultExpanded ?? []),\n );\n const expandedSet = expandedControlled\n ? new Set(expanded)\n : expandedInternal;\n\n const selectedControlled = selected !== undefined;\n const [selectedInternal, setSelectedInternal] = React.useState<\n string | undefined\n >(defaultSelected);\n const selectedId = selectedControlled ? selected : selectedInternal;\n\n const flat = React.useMemo(\n () => flatten(items, 0, expandedSet, undefined, []),\n [items, expandedSet],\n );\n\n const [focusedId, setFocusedId] = React.useState<string | undefined>();\n const activeId = focusedId ?? flat[0]?.node.id;\n const nodeRefs = React.useRef(new Map<string, HTMLLIElement>());\n\n const commitExpanded = (next: Set<string>) => {\n if (!expandedControlled) setExpandedInternal(next);\n onExpandedChange?.([...next]);\n };\n const toggleExpand = (id: string) => {\n const next = new Set(expandedSet);\n if (next.has(id)) next.delete(id);\n else next.add(id);\n commitExpanded(next);\n };\n const setExpand = (id: string, open: boolean) => {\n if (expandedSet.has(id) === open) return;\n const next = new Set(expandedSet);\n if (open) next.add(id);\n else next.delete(id);\n commitExpanded(next);\n };\n\n const selectNode = (node: TreeNode) => {\n if (node.disabled) return;\n if (!selectedControlled) setSelectedInternal(node.id);\n onSelectedChange?.(node.id);\n onSelect?.(node);\n };\n\n const focusId = (id: string) => {\n setFocusedId(id);\n nodeRefs.current.get(id)?.focus();\n };\n\n const onKeyDown = (e: React.KeyboardEvent<HTMLLIElement>, id: string) => {\n const idx = flat.findIndex((f) => f.node.id === id);\n const entry = flat[idx];\n if (!entry) return;\n switch (e.key) {\n case \"ArrowDown\": {\n e.preventDefault();\n const next = flat[idx + 1];\n if (next) focusId(next.node.id);\n break;\n }\n case \"ArrowUp\": {\n e.preventDefault();\n const prev = flat[idx - 1];\n if (prev) focusId(prev.node.id);\n break;\n }\n case \"Home\": {\n e.preventDefault();\n if (flat[0]) focusId(flat[0].node.id);\n break;\n }\n case \"End\": {\n e.preventDefault();\n const last = flat[flat.length - 1];\n if (last) focusId(last.node.id);\n break;\n }\n case \"ArrowRight\": {\n e.preventDefault();\n if (!entry.hasChildren) break;\n if (!entry.expanded) setExpand(entry.node.id, true);\n else {\n const child = flat[idx + 1];\n if (child && child.parentId === entry.node.id) focusId(child.node.id);\n }\n break;\n }\n case \"ArrowLeft\": {\n e.preventDefault();\n if (entry.hasChildren && entry.expanded) setExpand(entry.node.id, false);\n else if (entry.parentId) focusId(entry.parentId);\n break;\n }\n case \"Enter\": {\n e.preventDefault();\n selectNode(entry.node);\n if (entry.hasChildren) toggleExpand(entry.node.id);\n break;\n }\n case \" \": {\n e.preventDefault();\n if (entry.hasChildren) toggleExpand(entry.node.id);\n else selectNode(entry.node);\n break;\n }\n }\n };\n\n const renderNodes = (nodes: TreeNode[], level: number): React.ReactNode => (\n <>\n {nodes.map((node) => {\n const hasChildren = !!node.children?.length;\n const isExpanded = expandedSet.has(node.id);\n return (\n <li\n key={node.id}\n className={cx(sc(\"tree-item\"))}\n role=\"treeitem\"\n aria-expanded={hasChildren ? isExpanded : undefined}\n aria-selected={selectedId === node.id}\n aria-disabled={node.disabled || undefined}\n tabIndex={activeId === node.id ? 0 : -1}\n ref={(el) => {\n if (el) nodeRefs.current.set(node.id, el);\n else nodeRefs.current.delete(node.id);\n }}\n onFocus={(e) => {\n if (e.target === e.currentTarget) setFocusedId(node.id);\n }}\n onKeyDown={(e) => onKeyDown(e, node.id)}\n >\n <div\n className={cx(sc(\"tree-node\"))}\n style={{ \"--tree-depth\": level } as React.CSSProperties}\n data-selected={selectedId === node.id || undefined}\n data-disabled={node.disabled || undefined}\n onClick={() => {\n selectNode(node);\n if (hasChildren) toggleExpand(node.id);\n focusId(node.id);\n }}\n >\n {hasChildren ? (\n <button\n type=\"button\"\n className={cx(sc(\"tree-toggle\"))}\n data-expanded={isExpanded || undefined}\n aria-hidden=\"true\"\n tabIndex={-1}\n onClick={(e) => {\n e.stopPropagation();\n toggleExpand(node.id);\n }}\n >\n {Chevron}\n </button>\n ) : (\n <span className={cx(sc(\"tree-toggle-spacer\"))} />\n )}\n {node.icon && (\n <span className={cx(sc(\"tree-node-icon\"))}>{node.icon}</span>\n )}\n <span className={cx(sc(\"tree-node-label\"))}>{node.label}</span>\n </div>\n {hasChildren && isExpanded && (\n <ul className={cx(sc(\"tree-group\"))} role=\"group\">\n {renderNodes(node.children as TreeNode[], level + 1)}\n </ul>\n )}\n </li>\n );\n })}\n </>\n );\n\n return (\n <ul\n ref={forwardedRef}\n className={cx(sc(\"tree\"), className)}\n role=\"tree\"\n {...rest}\n >\n {renderNodes(items, 0)}\n </ul>\n );\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport interface DropzoneRejection {\n file: File;\n reason: \"type\" | \"size\";\n}\n\nexport interface DropzoneProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onDrop\" | \"title\"> {\n /** Called with the accepted files (from a drop or the picker). */\n onFiles?: (files: File[]) => void;\n /** Called with files rejected by `accept` / `maxSize`. */\n onReject?: (rejections: DropzoneRejection[]) => void;\n /** Native-style accept list, e.g. `\"image/*,.pdf\"`. */\n accept?: string;\n /** Allow selecting/dropping more than one file. Default `true`. */\n multiple?: boolean;\n /** Max size per file, in bytes. */\n maxSize?: number;\n disabled?: boolean;\n /** Primary line. Default `\"Drop files here, or click to browse\"`. */\n title?: React.ReactNode;\n /** Secondary hint line (e.g. accepted types). */\n hint?: React.ReactNode;\n /** Override the default upload icon. */\n icon?: React.ReactNode;\n /** Extra props for the underlying `<input type=file>`. */\n inputProps?: React.InputHTMLAttributes<HTMLInputElement>;\n}\n\nconst UploadIcon = (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M12 15V3\" />\n <path d=\"m7 8 5-5 5 5\" />\n <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" />\n </svg>\n);\n\nfunction matchesAccept(file: File, accept?: string): boolean {\n if (!accept) return true;\n const types = accept\n .split(\",\")\n .map((s) => s.trim().toLowerCase())\n .filter(Boolean);\n if (types.length === 0) return true;\n const name = file.name.toLowerCase();\n const mime = file.type.toLowerCase();\n return types.some((t) => {\n if (t.startsWith(\".\")) return name.endsWith(t);\n if (t.endsWith(\"/*\")) return mime.startsWith(t.slice(0, -1));\n return mime === t;\n });\n}\n\n/**\n * Dropzone — drag files onto it or click to open the picker. Emits accepted\n * files via `onFiles` and anything filtered out by `accept`/`maxSize` via\n * `onReject`. Purely presentational about the *result* — render your own file\n * list from what `onFiles` hands you.\n */\nexport const Dropzone = React.forwardRef<HTMLDivElement, DropzoneProps>(\n function Dropzone(\n {\n onFiles,\n onReject,\n accept,\n multiple = true,\n maxSize,\n disabled,\n title = \"Drop files here, or click to browse\",\n hint,\n icon,\n inputProps,\n className,\n children,\n ...rest\n },\n forwardedRef,\n ) {\n const sc = useSilicaClass();\n const inputRef = React.useRef<HTMLInputElement>(null);\n const dragDepth = React.useRef(0);\n const [dragging, setDragging] = React.useState(false);\n\n const process = (fileList: FileList | null) => {\n if (!fileList || disabled) return;\n const accepted: File[] = [];\n const rejected: DropzoneRejection[] = [];\n for (const file of Array.from(fileList)) {\n if (!matchesAccept(file, accept)) {\n rejected.push({ file, reason: \"type\" });\n } else if (maxSize != null && file.size > maxSize) {\n rejected.push({ file, reason: \"size\" });\n } else {\n accepted.push(file);\n }\n }\n const finalAccepted = multiple ? accepted : accepted.slice(0, 1);\n if (finalAccepted.length) onFiles?.(finalAccepted);\n if (rejected.length) onReject?.(rejected);\n };\n\n const openPicker = () => {\n if (!disabled) inputRef.current?.click();\n };\n\n return (\n <div\n ref={forwardedRef}\n className={cx(sc(\"dropzone\"), className)}\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n aria-disabled={disabled || undefined}\n data-dragging={dragging || undefined}\n data-disabled={disabled || undefined}\n onClick={(e) => {\n // The programmatic input.click() bubbles back here — ignore it.\n if (e.target === inputRef.current) return;\n openPicker();\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n openPicker();\n }\n }}\n onDragEnter={(e) => {\n e.preventDefault();\n if (disabled) return;\n dragDepth.current += 1;\n setDragging(true);\n }}\n onDragOver={(e) => {\n e.preventDefault();\n }}\n onDragLeave={(e) => {\n e.preventDefault();\n if (disabled) return;\n dragDepth.current -= 1;\n if (dragDepth.current <= 0) {\n dragDepth.current = 0;\n setDragging(false);\n }\n }}\n onDrop={(e) => {\n e.preventDefault();\n if (disabled) return;\n dragDepth.current = 0;\n setDragging(false);\n process(e.dataTransfer.files);\n }}\n {...rest}\n >\n <input\n ref={inputRef}\n type=\"file\"\n className={cx(sc(\"dropzone-input\"))}\n accept={accept}\n multiple={multiple}\n disabled={disabled}\n tabIndex={-1}\n {...inputProps}\n onChange={(e) => {\n process(e.target.files);\n // Allow re-selecting the same file.\n e.target.value = \"\";\n inputProps?.onChange?.(e);\n }}\n />\n {children ?? (\n <>\n <span className={cx(sc(\"dropzone-icon\"))}>{icon ?? UploadIcon}</span>\n <span className={cx(sc(\"dropzone-title\"))}>{title}</span>\n {hint && <span className={cx(sc(\"dropzone-hint\"))}>{hint}</span>}\n </>\n )}\n </div>\n );\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport { Button } from \"./button\";\nimport type { SilicaColor } from \"./lib/tokens\";\n\nexport interface WizardStep {\n /** Stable identity + React key. */\n id: string;\n /** Step label under the marker. */\n title: React.ReactNode;\n /** Content shown when this step is active (unless `children` is provided). */\n content?: React.ReactNode;\n /** Marks the step \"Optional\" under its label. */\n optional?: boolean;\n /** Can't be navigated to. */\n disabled?: boolean;\n}\n\nexport interface WizardProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n steps: WizardStep[];\n /** Controlled active step index. */\n activeStep?: number;\n /** Uncontrolled initial step index. Default `0`. */\n defaultStep?: number;\n onStepChange?: (index: number) => void;\n /** Accent color for markers + rail. */\n color?: SilicaColor;\n /**\n * Linear flow: markers can only jump backward (revisit) or stay; forward is via\n * Next. `false` lets any enabled step be clicked. Default `true`.\n */\n linear?: boolean;\n /** Gate the Next button (e.g. until the active step validates). Default `true`. */\n canGoNext?: boolean;\n /** Called when Next is pressed on the last step. */\n onFinish?: () => void;\n backLabel?: string;\n nextLabel?: string;\n finishLabel?: string;\n /** Hide the built-in Back / Next footer. */\n hideFooter?: boolean;\n /** Render your own content instead of the active step's `content`. */\n children?: React.ReactNode;\n}\n\nconst CheckIcon = (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"3\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M20 6 9 17l-5-5\" />\n </svg>\n);\n\n/**\n * Wizard — a multi-step flow with a numbered indicator, per-step content, and a\n * Back / Next-or-Finish footer. Control the step via `activeStep`/`onStepChange`\n * or run uncontrolled with `defaultStep`. Steps carry their own `content`, or\n * pass `children` to render the body yourself. `canGoNext` gates advancing so you\n * can require the current step to validate first.\n */\nexport const Wizard = React.forwardRef<HTMLDivElement, WizardProps>(\n function Wizard(\n {\n steps,\n activeStep,\n defaultStep = 0,\n onStepChange,\n color,\n linear = true,\n canGoNext = true,\n onFinish,\n backLabel = \"Back\",\n nextLabel = \"Next\",\n finishLabel = \"Finish\",\n hideFooter,\n children,\n className,\n ...rest\n },\n forwardedRef,\n ) {\n const sc = useSilicaClass();\n const isControlled = activeStep !== undefined;\n const [internal, setInternal] = React.useState(defaultStep);\n const current = isControlled ? activeStep : internal;\n const lastIndex = steps.length - 1;\n const isLast = current >= lastIndex;\n\n const goTo = (index: number) => {\n const clamped = Math.max(0, Math.min(lastIndex, index));\n if (clamped === current) return;\n if (!isControlled) setInternal(clamped);\n onStepChange?.(clamped);\n };\n\n const next = () => {\n if (isLast) onFinish?.();\n else goTo(current + 1);\n };\n const back = () => goTo(current - 1);\n\n const activeContent = children ?? steps[current]?.content;\n\n return (\n <div\n ref={forwardedRef}\n className={cx(sc(\"wizard\"), color && sc(`wizard-${color}`), className)}\n {...rest}\n >\n <div className={cx(sc(\"wizard-steps\"))} role=\"list\">\n {steps.map((step, i) => {\n const state =\n i < current ? \"complete\" : i === current ? \"active\" : \"upcoming\";\n const clickable =\n !step.disabled && i !== current && (!linear || i < current);\n return (\n <button\n key={step.id}\n type=\"button\"\n className={cx(sc(\"wizard-step\"))}\n role=\"listitem\"\n data-state={state}\n data-clickable={clickable || undefined}\n data-disabled={step.disabled || undefined}\n aria-current={i === current ? \"step\" : undefined}\n disabled={!clickable}\n onClick={() => clickable && goTo(i)}\n >\n <span className={cx(sc(\"wizard-step-marker\"))}>\n {state === \"complete\" ? CheckIcon : i + 1}\n </span>\n <span className={cx(sc(\"wizard-step-label\"))}>\n {step.title}\n {step.optional && (\n <span className={cx(sc(\"wizard-step-optional\"))}>\n Optional\n </span>\n )}\n </span>\n </button>\n );\n })}\n </div>\n\n <div className={cx(sc(\"wizard-content\"))}>{activeContent}</div>\n\n {!hideFooter && (\n <div className={cx(sc(\"wizard-footer\"))}>\n <Button variant=\"ghost\" disabled={current === 0} onClick={back}>\n {backLabel}\n </Button>\n <Button\n color={color}\n disabled={!isLast && !canGoNext}\n onClick={next}\n >\n {isLast ? finishLabel : nextLabel}\n </Button>\n </div>\n )}\n </div>\n );\n },\n);\n"]}
1
+ {"version":3,"sources":["../src/lib/config.tsx","../src/button.tsx","../src/badge.tsx","../src/input.tsx","../src/native-select.tsx","../src/textarea.tsx","../src/card.tsx","../src/alert.tsx","../src/progress.tsx","../src/avatar.tsx","../src/skeleton.tsx","../src/table.tsx","../src/divider.tsx","../src/kbd.tsx","../src/breadcrumb.tsx","../src/stat.tsx","../src/steps.tsx","../src/join.tsx","../src/menu.tsx","../src/collapse.tsx","../src/indicator.tsx","../src/loading.tsx","../src/prose.tsx","../src/typography.tsx","../src/navbar.tsx","../src/footer.tsx","../src/hero.tsx","../src/link.tsx","../src/mockup.tsx","../src/timeline.tsx","../src/carousel.tsx","../src/stack.tsx","../src/rating.tsx","../src/radial-progress.tsx","../src/pagination.tsx","../src/accordion.tsx","../src/chat.tsx","../src/range.tsx","../src/toast.tsx","../src/swap.tsx","../src/status.tsx","../src/countdown.tsx","../src/number-field.tsx","../src/drawer.tsx","../src/list.tsx","../src/file-input.tsx","../src/dock.tsx","../src/fieldset.tsx","../src/label.tsx","../src/validator.tsx","../src/diff.tsx","../src/mask.tsx","../src/meter.tsx","../src/scroll-area.tsx","../src/preview-card.tsx","../src/toolbar.tsx","../src/theme-controller.tsx","../src/navigation-menu.tsx","../src/menubar.tsx","../src/context-menu.tsx","../src/toggle-group.tsx","../src/field.tsx","../src/form.tsx","../src/radio-group.tsx","../src/checkbox-group.tsx","../src/slider.tsx","../src/switch.tsx","../src/collapsible.tsx","../src/alert-dialog.tsx","../src/filter.tsx","../src/select.tsx","../src/combobox.tsx","../src/autocomplete.tsx","../src/calendar.tsx","../src/date-picker.tsx","../src/tooltip.tsx","../src/dialog.tsx","../src/popover.tsx","../src/dropdown-menu.tsx","../src/tabs.tsx","../src/checkbox.tsx","../src/radio.tsx","../src/toggle.tsx","../src/tag-input.tsx","../src/empty-state.tsx","../src/lib/oklch.ts","../src/color-picker.tsx","../src/command-palette.tsx","../src/tree-view.tsx","../src/dropzone.tsx","../src/wizard.tsx"],"names":["React","React2","Button","jsx","React3","Badge","React4","Input","React5","NativeSelect","React6","Textarea","React7","Card","CardBody","CardTitle","CardActions","React8","Alert","AlertContent","AlertTitle","AlertDescription","AlertActions","React9","Progress","React10","Avatar","AvatarGroup","React11","Skeleton","React12","Table","React13","Divider","React14","Kbd","React15","Breadcrumb","React16","Stats","Stat","StatTitle","StatValue","StatDesc","StatFigure","React17","Steps","Step","React18","Join","React19","Menu","MenuItem","MenuTitle","React20","Collapse","CollapseTitle","CollapseContent","React21","Indicator","IndicatorItem","React22","Loading","React23","Prose","React24","Heading","Display","Text","React25","Navbar","NavbarStart","NavbarCenter","NavbarEnd","React26","Footer","FooterTitle","React27","Hero","HeroContent","HeroOverlay","React28","Link","React29","MockupWindow","MockupBrowser","jsxs","MockupCode","MockupCodeLine","MockupPhone","React30","Timeline","TimelineItem","TimelineStart","TimelineMiddle","TimelineEnd","React31","CarouselItem","React32","React33","React34","RadialProgress","PrevIcon","NextIcon","BaseAccordion","React37","Chat","ChatImage","ChatHeader","ChatFooter","ChatBubble","BaseSlider","BaseToast","React40","React41","Status","React42","BaseNumberField","BaseDialog","React45","List","ListRow","ListColGrow","ListTitle","React46","FileInput","React47","Dock","DockItem","DockLabel","React48","Fieldset","FieldsetLegend","FieldsetLabel","React49","Label","FloatingLabel","React50","Fragment","ValidatorHint","React51","Diff","React52","Mask","React53","Meter","BaseMeter","React54","ScrollArea","BaseScrollArea","BasePreviewCard","React56","Toolbar","BaseToolbar","ToolbarButton","ToolbarGroup","ToolbarLink","ToolbarSeparator","React57","BaseNav","React58","NavigationMenuItem","NavigationMenuTrigger","NavigationMenuContent","NavigationMenuLink","React59","Menubar","BaseMenubar","BaseMenu","MenubarTrigger","BaseContextMenu","React60","ContextMenuTrigger","React61","ToggleGroup","BaseToggleGroup","ToggleGroupItem","BaseToggle","React62","Field","BaseField","FieldLabel","FieldControl","FieldDescription","FieldError","React63","Form","BaseForm","React64","React65","React66","Slider","React67","Switch","BaseSwitch","ChevronIcon","BaseCollapsible","asRender","BaseAlertDialog","React70","CloseIcon","FilterItem","BaseSelect","ChevronDownIcon","CheckIcon","BaseCombobox","XIcon","BaseAutocomplete","range","BasePopover","React75","BaseTooltip","BaseTabs","React81","Checkbox","React82","Radio","React83","Toggle","React84","TagInput","React85","EmptyState","clamp","React86","ColorPicker","React87","React88","TreeView","React89","Dropzone","React90","Wizard"],"mappings":"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","file":"index.js","sourcesContent":["import * as React from \"react\";\n\n/**\n * Runtime configuration shared by all Silica React components.\n *\n * `prefix` MUST match the `prefix` you set on `@plugin \"silicaui\"` in your CSS.\n * The CSS plugin emits `.<prefix>btn`; these components rebuild those class\n * names at runtime, so both sides have to agree on the prefix.\n */\nexport interface SilicaConfig {\n /** Prepended verbatim to every Silica class (e.g. `\"sx-\"` → `sx-btn`). */\n prefix: string;\n}\n\nconst DEFAULT_CONFIG: SilicaConfig = { prefix: \"\" };\n\nconst SilicaConfigContext = React.createContext<SilicaConfig>(DEFAULT_CONFIG);\n\nexport interface SilicaProviderProps extends Partial<SilicaConfig> {\n children: React.ReactNode;\n}\n\n/**\n * Provides Silica config to the components beneath it. Providers may be nested —\n * a client-site subtree can run under `prefix=\"st-\"` inside a platform shell on\n * `prefix=\"sx-\"`, and each Silica component picks up its nearest provider.\n *\n * <SilicaProvider prefix=\"sx-\">\n * <App />\n * </SilicaProvider>\n */\nexport function SilicaProvider({ prefix = \"\", children }: SilicaProviderProps) {\n const value = React.useMemo<SilicaConfig>(() => ({ prefix }), [prefix]);\n return (\n <SilicaConfigContext.Provider value={value}>\n {children}\n </SilicaConfigContext.Provider>\n );\n}\n\n/** Read the full Silica config from context (defaults to `{ prefix: \"\" }`). */\nexport function useSilicaConfig(): SilicaConfig {\n return React.useContext(SilicaConfigContext);\n}\n\n/**\n * Returns a class-name builder bound to the active prefix. `cn(\"btn\")` →\n * `\"sx-btn\"` when a `prefix=\"sx-\"` provider is in scope, or `\"btn\"` otherwise.\n * Passing a nullish/false value returns it unchanged, so it composes with the\n * same conditional style the components already use.\n */\nexport function useSilicaClass(): (name: string | false | null | undefined) => string | false | null | undefined {\n const { prefix } = React.useContext(SilicaConfigContext);\n return React.useCallback(\n (name) => (name ? `${prefix}${name}` : name),\n [prefix],\n );\n}\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { mergeProps } from \"./lib/merge-props\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor, SilicaSize } from \"./lib/tokens\";\n\n/** Semantic or custom color. Alias of the shared {@link SilicaColor}. */\nexport type ButtonColor = SilicaColor;\n\nexport type ButtonVariant =\n | \"solid\"\n | \"outline\"\n | \"soft\"\n | \"ghost\"\n | \"link\"\n | \"dash\";\n\nexport type ButtonSize = SilicaSize;\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n /** Semantic or custom color; maps to `btn-<color>`. */\n color?: ButtonColor;\n /** How the color is applied. Default `solid`. */\n variant?: ButtonVariant;\n /** Default `md`. */\n size?: ButtonSize;\n /** Icon-only button shape. */\n shape?: \"square\" | \"circle\";\n /** Full-width. */\n block?: boolean;\n /** Extra-wide. */\n wide?: boolean;\n /** Force the pressed look. */\n active?: boolean;\n /** Show a spinner, set `aria-busy`, and make the button non-interactive. */\n loading?: boolean;\n iconStart?: React.ReactNode;\n iconEnd?: React.ReactNode;\n /**\n * Render as a different element (e.g. an anchor or router link) while keeping\n * Silica's classes and behavior. Mirrors Base UI's `render` composition model.\n *\n * <Button render={<a href=\"/docs\" />}>Docs</Button>\n */\n render?: React.ReactElement;\n}\n\n/**\n * Silica Button — a thin wrapper that applies Silica's `btn` classes. It's a\n * presentational component, so it doesn't pull in a headless primitive; the\n * `render` prop covers polymorphism.\n */\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n function Button(\n {\n color,\n variant = \"solid\",\n size = \"md\",\n shape,\n block,\n wide,\n active,\n loading,\n disabled,\n iconStart,\n iconEnd,\n render,\n className,\n children,\n type,\n ...rest\n },\n ref,\n ) {\n // Bound to the active <SilicaProvider prefix>, so `sc(\"btn\")` → `sx-btn`.\n // `className` (the user's own utilities) is passed through untouched.\n const sc = useSilicaClass();\n const classes = cx(\n sc(\"btn\"),\n color && sc(`btn-${color}`),\n variant !== \"solid\" && sc(`btn-${variant}`),\n size !== \"md\" && sc(`btn-${size}`),\n shape && sc(`btn-${shape}`),\n block && sc(\"btn-block\"),\n wide && sc(\"btn-wide\"),\n active && sc(\"btn-active\"),\n className,\n );\n\n const isDisabled = Boolean(disabled) || Boolean(loading);\n const content = (\n <>\n {iconStart}\n {children}\n {iconEnd}\n </>\n );\n\n // Polymorphic path: render the user's element with our props merged in.\n if (render) {\n const ownProps: Record<string, unknown> = {\n ...rest,\n className: classes,\n children: content,\n ref,\n \"aria-busy\": loading || undefined,\n \"aria-disabled\": isDisabled || undefined,\n \"data-disabled\": isDisabled ? \"\" : undefined,\n };\n return React.cloneElement(\n render,\n mergeProps(ownProps, render.props as Record<string, unknown>),\n );\n }\n\n return (\n <button\n ref={ref}\n type={type ?? \"button\"}\n className={classes}\n disabled={isDisabled}\n aria-busy={loading || undefined}\n {...rest}\n >\n {content}\n </button>\n );\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { mergeProps } from \"./lib/merge-props\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor, SilicaSize } from \"./lib/tokens\";\n\nexport type BadgeColor = SilicaColor;\n\nexport type BadgeVariant = \"solid\" | \"outline\" | \"soft\" | \"ghost\" | \"dash\";\n\nexport type BadgeSize = SilicaSize;\n\nexport interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {\n /** Semantic or custom color; maps to `badge-<color>`. */\n color?: BadgeColor;\n /** How the color is applied. Default `solid`. */\n variant?: BadgeVariant;\n /** Default `md`. */\n size?: BadgeSize;\n /** Render as a different element while keeping Silica's classes. */\n render?: React.ReactElement;\n}\n\n/**\n * Silica Badge — a small pill for labels, counts, and statuses. Presentational;\n * `render` covers polymorphism (e.g. wrap a link).\n */\nexport const Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n function Badge(\n { color, variant = \"solid\", size = \"md\", render, className, children, ...rest },\n ref,\n ) {\n const sc = useSilicaClass();\n const classes = cx(\n sc(\"badge\"),\n color && sc(`badge-${color}`),\n variant !== \"solid\" && sc(`badge-${variant}`),\n size !== \"md\" && sc(`badge-${size}`),\n className,\n );\n\n if (render) {\n const ownProps: Record<string, unknown> = {\n ...rest,\n className: classes,\n children,\n ref,\n };\n return React.cloneElement(\n render,\n mergeProps(ownProps, render.props as Record<string, unknown>),\n );\n }\n\n return (\n <span ref={ref} className={classes} {...rest}>\n {children}\n </span>\n );\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor, SilicaSize } from \"./lib/tokens\";\n\nexport type InputColor = SilicaColor;\n\nexport type InputSize = SilicaSize;\n\nexport interface InputProps\n // Omit the native numeric `size` and string `color` so our token unions win.\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\" | \"color\"> {\n /** Accent color; maps to `input-<color>` (border + focus ring). */\n color?: InputColor;\n /** Default `md`. Matches same-size Button heights. */\n size?: InputSize;\n}\n\n/**\n * Silica Input — a single-line text field. Thin, presentational wrapper around a\n * native `<input>`, so all native attributes (`type`, `value`, `onChange`,\n * `placeholder`, `disabled`, …) pass straight through.\n */\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(\n function Input({ color, size = \"md\", className, type, ...rest }, ref) {\n const sc = useSilicaClass();\n const classes = cx(\n sc(\"input\"),\n color && sc(`input-${color}`),\n size !== \"md\" && sc(`input-${size}`),\n className,\n );\n\n return (\n <input ref={ref} type={type ?? \"text\"} className={classes} {...rest} />\n );\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor, SilicaSize } from \"./lib/tokens\";\n\nexport type NativeSelectColor = SilicaColor;\n\nexport type NativeSelectSize = SilicaSize;\n\nexport interface NativeSelectProps\n // Omit the native numeric `size` and string `color` so our token unions win.\n extends Omit<React.SelectHTMLAttributes<HTMLSelectElement>, \"size\" | \"color\"> {\n /** Accent color; maps to `select-<color>` (border + focus ring). */\n color?: NativeSelectColor;\n /** Default `md`. Matches same-size Input/Button heights. */\n size?: NativeSelectSize;\n}\n\n/**\n * Silica NativeSelect — a native `<select>` restyled to the field tier. Thin,\n * presentational wrapper: pass `<option>`s as children and all native\n * attributes (`value`, `defaultValue`, `onChange`, `disabled`, …) through.\n *\n * For a rich, searchable, fully-styled listbox (custom popup, groups, keyboard\n * typeahead, multi-select), use `Select` (the Base UI listbox) instead.\n */\nexport const NativeSelect = React.forwardRef<\n HTMLSelectElement,\n NativeSelectProps\n>(function NativeSelect({ color, size = \"md\", className, children, ...rest }, ref) {\n const sc = useSilicaClass();\n const classes = cx(\n sc(\"select\"),\n color && sc(`select-${color}`),\n size !== \"md\" && sc(`select-${size}`),\n className,\n );\n\n return (\n <select ref={ref} className={classes} {...rest}>\n {children}\n </select>\n );\n});\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor, SilicaSize } from \"./lib/tokens\";\n\nexport type TextareaColor = SilicaColor;\n\nexport type TextareaSize = SilicaSize;\n\nexport interface TextareaProps\n // Omit the native string `color` so our token union wins.\n extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, \"color\"> {\n /** Accent color; maps to `textarea-<color>` (border + focus ring). */\n color?: TextareaColor;\n /** Default `md`. */\n size?: TextareaSize;\n}\n\n/**\n * Silica Textarea — a multi-line text field. Thin, presentational wrapper around\n * a native `<textarea>`, so all native attributes (`value`, `rows`, `onChange`,\n * `placeholder`, `disabled`, …) pass straight through.\n */\nexport const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n function Textarea({ color, size = \"md\", className, ...rest }, ref) {\n const sc = useSilicaClass();\n const classes = cx(\n sc(\"textarea\"),\n color && sc(`textarea-${color}`),\n size !== \"md\" && sc(`textarea-${size}`),\n className,\n );\n\n return <textarea ref={ref} className={classes} {...rest} />;\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport type CardProps = React.HTMLAttributes<HTMLDivElement>;\n\n/**\n * Silica Card — a surface container. Compose it from parts:\n *\n * <Card>\n * <figure><img src={cover} alt=\"\" /></figure>\n * <CardBody>\n * <CardTitle>Heading</CardTitle>\n * <p>Body copy…</p>\n * <CardActions>\n * <Button color=\"primary\">Action</Button>\n * </CardActions>\n * </CardBody>\n * </Card>\n */\nexport const Card = React.forwardRef<HTMLDivElement, CardProps>(\n function Card({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <div ref={ref} className={cx(sc(\"card\"), className)} {...rest} />;\n },\n);\n\n/** Padded content stack inside a Card. */\nexport const CardBody = React.forwardRef<HTMLDivElement, CardProps>(\n function CardBody({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <div ref={ref} className={cx(sc(\"card-body\"), className)} {...rest} />;\n },\n);\n\n/** Card heading. Renders a `div` — pair with your own heading level if needed. */\nexport const CardTitle = React.forwardRef<HTMLDivElement, CardProps>(\n function CardTitle({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <div ref={ref} className={cx(sc(\"card-title\"), className)} {...rest} />;\n },\n);\n\n/** Right-aligned action row (buttons, links) at the bottom of a Card body. */\nexport const CardActions = React.forwardRef<HTMLDivElement, CardProps>(\n function CardActions({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <div ref={ref} className={cx(sc(\"card-actions\"), className)} {...rest} />\n );\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor, SilicaSize } from \"./lib/tokens\";\n\nexport type AlertColor = SilicaColor;\n\nexport type AlertSize = SilicaSize;\n\nexport type AlertVariant = \"solid\" | \"soft\" | \"outline\" | \"dash\";\n\nexport interface AlertProps\n // Omit the native string `color` so our token union wins.\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"color\"> {\n /** Semantic color; maps to `alert-<color>`. Omit for a neutral surface. */\n color?: AlertColor;\n /** Visual style. Default `solid`. */\n variant?: AlertVariant;\n /** Default `md`. */\n size?: AlertSize;\n}\n\n/**\n * Silica Alert — a feedback surface. Compose it from parts, like Card:\n *\n * // One-liner: icon + message\n * <Alert color=\"success\"><CheckIcon /> Your changes were saved.</Alert>\n *\n * // Structured: title + description + trailing actions\n * <Alert color=\"error\">\n * <XIcon />\n * <AlertContent>\n * <AlertTitle>Upload failed</AlertTitle>\n * <AlertDescription>The file exceeds the 5 MB limit.</AlertDescription>\n * </AlertContent>\n * <AlertActions>\n * <Button size=\"sm\" color=\"error\" variant=\"soft\">Retry</Button>\n * </AlertActions>\n * </Alert>\n *\n * A leading `<svg>` child is sized automatically. Defaults to `role=\"alert\"`\n * (assertive); pass `role=\"status\"` for a quieter, non-interrupting announcement.\n */\nexport const Alert = React.forwardRef<HTMLDivElement, AlertProps>(\n function Alert({ color, variant = \"solid\", size = \"md\", className, ...rest }, ref) {\n const sc = useSilicaClass();\n const classes = cx(\n sc(\"alert\"),\n color && sc(`alert-${color}`),\n variant !== \"solid\" && sc(`alert-${variant}`),\n size !== \"md\" && sc(`alert-${size}`),\n className,\n );\n return <div ref={ref} role=\"alert\" className={classes} {...rest} />;\n },\n);\n\n/** Growing middle column of an Alert — holds the title + description. */\nexport const AlertContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(function AlertContent({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <div ref={ref} className={cx(sc(\"alert-content\"), className)} {...rest} />\n );\n});\n\n/** Bold heading line of an Alert. */\nexport const AlertTitle = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(function AlertTitle({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <div ref={ref} className={cx(sc(\"alert-title\"), className)} {...rest} />\n );\n});\n\n/** Secondary message line under an AlertTitle. */\nexport const AlertDescription = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(function AlertDescription({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <div\n ref={ref}\n className={cx(sc(\"alert-description\"), className)}\n {...rest}\n />\n );\n});\n\n/** Trailing action group (buttons, links) at the end of an Alert row. */\nexport const AlertActions = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(function AlertActions({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <div ref={ref} className={cx(sc(\"alert-actions\"), className)} {...rest} />\n );\n});\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor, SilicaSize } from \"./lib/tokens\";\n\nexport type ProgressColor = SilicaColor;\n\nexport type ProgressSize = SilicaSize;\n\nexport interface ProgressProps\n // Omit the native string `color` so our token union wins.\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"color\" | \"children\"> {\n /** Fill color; maps to `progress-<color>`. Omit for a neutral bar. */\n color?: ProgressColor;\n /** Default `md`. Height lines up with same-size fields. */\n size?: ProgressSize;\n /**\n * Current value, from 0 to `max`. Omit entirely for an indeterminate\n * (unknown-duration) loading bar.\n */\n value?: number;\n /** Upper bound of `value`. Default `100`. */\n max?: number;\n}\n\n/**\n * Silica Progress — a task-completion bar (div-based, so it renders identically\n * across engines; see the CSS component for why not native `<progress>`).\n *\n * <Progress value={60} /> // 60%\n * <Progress color=\"success\" value={3} max={4} />\n * <Progress /> // indeterminate\n *\n * Exposes the ARIA `progressbar` role with the right value bounds; an\n * indeterminate bar omits `aria-valuenow` so assistive tech announces it as\n * busy rather than a fixed percentage.\n */\nexport const Progress = React.forwardRef<HTMLDivElement, ProgressProps>(\n function Progress({ color, size = \"md\", value, max = 100, className, ...rest }, ref) {\n const sc = useSilicaClass();\n const indeterminate = value == null;\n\n // Clamp to [0, max] and guard a zero/negative max before dividing.\n const pct =\n indeterminate || max <= 0\n ? 0\n : Math.max(0, Math.min(100, (value / max) * 100));\n\n const classes = cx(\n sc(\"progress\"),\n color && sc(`progress-${color}`),\n size !== \"md\" && sc(`progress-${size}`),\n indeterminate && sc(\"progress-indeterminate\"),\n className,\n );\n\n return (\n <div\n ref={ref}\n role=\"progressbar\"\n aria-valuemin={0}\n aria-valuemax={max}\n aria-valuenow={indeterminate ? undefined : value}\n className={classes}\n {...rest}\n >\n <div\n className={cx(sc(\"progress-bar\"))}\n style={indeterminate ? undefined : { width: `${pct}%` }}\n />\n </div>\n );\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor, SilicaSize } from \"./lib/tokens\";\n\nexport type AvatarColor = SilicaColor;\n\nexport type AvatarSize = SilicaSize;\n\nexport type AvatarShape = \"circle\" | \"rounded\";\n\nexport type AvatarStatus = \"online\" | \"offline\";\n\nexport interface AvatarProps\n // Omit the native string `color` so our token union wins.\n extends Omit<React.HTMLAttributes<HTMLSpanElement>, \"color\"> {\n /** Fallback-chip + ring color; maps to `avatar-<color>`. */\n color?: AvatarColor;\n /** Default `md`. */\n size?: AvatarSize;\n /** `circle` (default) or a `rounded` square. */\n shape?: AvatarShape;\n /** Draw an accent ring with a base-100 gap. */\n ring?: boolean;\n /** Presence dot in the corner. */\n status?: AvatarStatus;\n /** Photo URL. If it fails to load, the fallback `children` show instead. */\n src?: string;\n /** Accessible label for the photo / the initials fallback. */\n alt?: string;\n}\n\n/**\n * Silica Avatar — a photo, or an initials/icon fallback on a colored chip.\n *\n * <Avatar src={url} alt=\"Jane Doe\">JD</Avatar> // photo, falls back to \"JD\"\n * <Avatar color=\"primary\" alt=\"Ada Lovelace\">AL</Avatar> // initials chip\n * <Avatar color=\"accent\"><UserIcon /></Avatar> // icon fallback\n *\n * `children` are the fallback shown when there's no `src` or the image errors.\n * When falling back to initials with an `alt`, the container is exposed as an\n * `img` with that label so assistive tech announces the person, not \"JD\".\n */\nexport const Avatar = React.forwardRef<HTMLSpanElement, AvatarProps>(\n function Avatar(\n { color, size = \"md\", shape = \"circle\", ring = false, status, src, alt, className, children, ...rest },\n ref,\n ) {\n const sc = useSilicaClass();\n const [failed, setFailed] = React.useState(false);\n // A new src gets a fresh chance to load before we fall back again.\n React.useEffect(() => setFailed(false), [src]);\n const showImg = Boolean(src) && !failed;\n\n const classes = cx(\n sc(\"avatar\"),\n color && sc(`avatar-${color}`),\n size !== \"md\" && sc(`avatar-${size}`),\n shape === \"rounded\" && sc(\"avatar-rounded\"),\n ring && sc(\"avatar-ring\"),\n status && sc(`avatar-${status}`),\n className,\n );\n\n return (\n <span\n ref={ref}\n className={classes}\n // Label the initials fallback so it reads as the named person.\n role={!showImg && alt ? \"img\" : undefined}\n aria-label={!showImg ? alt : undefined}\n {...rest}\n >\n {showImg ? (\n <img src={src} alt={alt ?? \"\"} onError={() => setFailed(true)} />\n ) : (\n children\n )}\n </span>\n );\n },\n);\n\n/** Overlapping row of Avatars (`<Avatar>` children stack with a base-100 gap). */\nexport const AvatarGroup = React.forwardRef<\n HTMLSpanElement,\n React.HTMLAttributes<HTMLSpanElement>\n>(function AvatarGroup({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <span ref={ref} className={cx(sc(\"avatar-group\"), className)} {...rest} />\n );\n});\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport type SkeletonShape = \"block\" | \"circle\" | \"text\";\n\nexport interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * `block` (default, `--radius-field`), `circle` (avatar/dot placeholder), or\n * `text` (a pill-rounded line sized in `em`). Give it dimensions with\n * utilities or inline `style`.\n */\n shape?: SkeletonShape;\n}\n\n/**\n * Silica Skeleton — an animated placeholder for loading content.\n *\n * <Skeleton className=\"h-32 w-full\" /> // block\n * <Skeleton shape=\"circle\" className=\"h-12 w-12\" /> // avatar placeholder\n * <Skeleton shape=\"text\" className=\"w-40\" /> // one line of text\n *\n * Owns only the fill, radius, and shimmer — size it yourself. Marked\n * `aria-hidden` by default (it's decorative; announce loading with an\n * `aria-busy` region around it); override via props if you need otherwise.\n */\nexport const Skeleton = React.forwardRef<HTMLDivElement, SkeletonProps>(\n function Skeleton({ shape = \"block\", className, ...rest }, ref) {\n const sc = useSilicaClass();\n const classes = cx(\n sc(\"skeleton\"),\n shape === \"circle\" && sc(\"skeleton-circle\"),\n shape === \"text\" && sc(\"skeleton-text\"),\n className,\n );\n return <div ref={ref} aria-hidden className={classes} {...rest} />;\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaSize } from \"./lib/tokens\";\n\nexport type TableSize = SilicaSize;\n\nexport interface TableProps\n extends React.TableHTMLAttributes<HTMLTableElement> {\n /** Striped rows. */\n zebra?: boolean;\n /** Highlight the row under the cursor. */\n hover?: boolean;\n /** Default `md`. Scales cell padding + type. */\n size?: TableSize;\n /** Class for the horizontal-scroll wrapper (the outer `<div>`). */\n wrapperClassName?: string;\n}\n\n/**\n * Silica Table — a styled `<table>`. Compose it from plain semantic rows; the\n * CSS styles the native elements, so no per-cell classes are needed:\n *\n * <Table zebra hover>\n * <thead>\n * <tr><th>Name</th><th>Role</th></tr>\n * </thead>\n * <tbody>\n * <tr><td>Ada</td><td>Engineer</td></tr>\n * </tbody>\n * </Table>\n *\n * Auto-wrapped in an `overflow-x: auto` container so a wide table scrolls\n * instead of blowing out the page; `ref`/`className` land on the `<table>`.\n */\nexport const Table = React.forwardRef<HTMLTableElement, TableProps>(\n function Table(\n { zebra = false, hover = false, size = \"md\", className, wrapperClassName, ...rest },\n ref,\n ) {\n const sc = useSilicaClass();\n const classes = cx(\n sc(\"table\"),\n zebra && sc(\"table-zebra\"),\n hover && sc(\"table-hover\"),\n size !== \"md\" && sc(`table-${size}`),\n className,\n );\n return (\n <div className={wrapperClassName} style={{ overflowX: \"auto\" }}>\n <table ref={ref} className={classes} {...rest} />\n </div>\n );\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport type DividerOrientation = \"horizontal\" | \"vertical\";\n\nexport interface DividerProps extends React.HTMLAttributes<HTMLDivElement> {\n /** `horizontal` (default) or `vertical` (for row layouts). */\n orientation?: DividerOrientation;\n}\n\n/**\n * Silica Divider — a plain or labeled separator.\n *\n * <Divider /> // plain rule\n * <Divider>OR</Divider> // centered label with rules on each side\n * <Divider orientation=\"vertical\" /> // vertical rule inside a flex row\n */\nexport const Divider = React.forwardRef<HTMLDivElement, DividerProps>(\n function Divider({ orientation = \"horizontal\", className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <div\n ref={ref}\n role=\"separator\"\n className={cx(\n sc(\"divider\"),\n orientation === \"vertical\" && sc(\"divider-vertical\"),\n className,\n )}\n {...rest}\n />\n );\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaSize } from \"./lib/tokens\";\n\nexport type KbdSize = SilicaSize;\n\nexport interface KbdProps extends React.HTMLAttributes<HTMLElement> {\n /** Default `md`. Scales the (em-based) keycap with the surrounding text. */\n size?: KbdSize;\n}\n\n/**\n * Silica Kbd — an inline keyboard-key cap.\n *\n * Press <Kbd>⌘</Kbd> <Kbd>K</Kbd> to search.\n */\nexport const Kbd = React.forwardRef<HTMLElement, KbdProps>(\n function Kbd({ size = \"md\", className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <kbd\n ref={ref}\n className={cx(sc(\"kbd\"), size !== \"md\" && sc(`kbd-${size}`), className)}\n {...rest}\n />\n );\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport interface BreadcrumbProps extends React.HTMLAttributes<HTMLElement> {}\n\n/**\n * Silica Breadcrumb — a navigation trail. Pass `<li>` items as children; the\n * chevron separators are drawn by CSS, so no separator markup is needed.\n *\n * <Breadcrumb>\n * <li><a href=\"/\">Home</a></li>\n * <li><a href=\"/projects\">Projects</a></li>\n * <li><span aria-current=\"page\">Silica</span></li>\n * </Breadcrumb>\n */\nexport const Breadcrumb = React.forwardRef<HTMLElement, BreadcrumbProps>(\n function Breadcrumb({ className, children, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <nav\n ref={ref}\n aria-label=\"Breadcrumb\"\n className={cx(sc(\"breadcrumb\"), className)}\n {...rest}\n >\n <ol>{children}</ol>\n </nav>\n );\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport interface StatsProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Stack the blocks vertically instead of inline. */\n vertical?: boolean;\n}\n\n/** Container for a row (or column) of `<Stat>` blocks. */\nexport const Stats = React.forwardRef<HTMLDivElement, StatsProps>(\n function Stats({ vertical = false, className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <div\n ref={ref}\n className={cx(sc(\"stats\"), vertical && sc(\"stats-vertical\"), className)}\n {...rest}\n />\n );\n },\n);\n\nexport interface StatProps extends React.HTMLAttributes<HTMLDivElement> {}\n\n/**\n * Silica Stat — a single metric block. Compose from parts:\n *\n * <Stats>\n * <Stat>\n * <StatFigure><ChartIcon /></StatFigure>\n * <StatTitle>Revenue</StatTitle>\n * <StatValue>$42.8k</StatValue>\n * <StatDesc>↗︎ 12% this month</StatDesc>\n * </Stat>\n * </Stats>\n */\nexport const Stat = React.forwardRef<HTMLDivElement, StatProps>(\n function Stat({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <div ref={ref} className={cx(sc(\"stat\"), className)} {...rest} />;\n },\n);\n\n/** Muted label above the value. */\nexport const StatTitle = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(function StatTitle({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <div ref={ref} className={cx(sc(\"stat-title\"), className)} {...rest} />;\n});\n\n/** The headline metric. */\nexport const StatValue = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(function StatValue({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <div ref={ref} className={cx(sc(\"stat-value\"), className)} {...rest} />;\n});\n\n/** Secondary line under the value (trend, context). */\nexport const StatDesc = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(function StatDesc({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <div ref={ref} className={cx(sc(\"stat-desc\"), className)} {...rest} />;\n});\n\n/** Trailing figure/icon, centered beside the text (defaults to primary). */\nexport const StatFigure = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(function StatFigure({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <div ref={ref} className={cx(sc(\"stat-figure\"), className)} {...rest} />\n );\n});\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor } from \"./lib/tokens\";\n\nexport type StepColor = SilicaColor;\n\nexport interface StepsProps extends React.OlHTMLAttributes<HTMLOListElement> {}\n\n/**\n * Silica Steps — a horizontal progress tracker. Children are `<Step>`s; color\n * the ones up to (and including) the current step to show completion.\n *\n * <Steps>\n * <Step color=\"primary\" data-content=\"✓\">Cart</Step>\n * <Step color=\"primary\">Shipping</Step>\n * <Step>Payment</Step>\n * <Step>Done</Step>\n * </Steps>\n */\nexport const Steps = React.forwardRef<HTMLOListElement, StepsProps>(\n function Steps({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <ol ref={ref} className={cx(sc(\"steps\"), className)} {...rest} />;\n },\n);\n\nexport interface StepProps extends React.LiHTMLAttributes<HTMLLIElement> {\n /** Paints the node + incoming connector; maps to `step-<color>`. */\n color?: StepColor;\n /** Glyph shown in the node instead of its number (e.g. a check). */\n \"data-content\"?: string;\n}\n\n/** A single node + label in a `<Steps>` track. */\nexport const Step = React.forwardRef<HTMLLIElement, StepProps>(\n function Step({ color, className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <li\n ref={ref}\n className={cx(sc(\"step\"), color && sc(`step-${color}`), className)}\n {...rest}\n />\n );\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport type JoinOrientation = \"horizontal\" | \"vertical\";\n\nexport interface JoinProps extends React.HTMLAttributes<HTMLDivElement> {\n /** `horizontal` (default) or `vertical`. */\n orientation?: JoinOrientation;\n}\n\n/**\n * Silica Join — merges its children into one seamless segmented group.\n *\n * <Join>\n * <Button>Day</Button>\n * <Button>Week</Button>\n * <Button>Month</Button>\n * </Join>\n *\n * <Join>\n * <Input placeholder=\"Search…\" />\n * <Button color=\"primary\">Go</Button>\n * </Join>\n */\nexport const Join = React.forwardRef<HTMLDivElement, JoinProps>(\n function Join({ orientation = \"horizontal\", className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <div\n ref={ref}\n className={cx(\n sc(\"join\"),\n orientation === \"vertical\" && sc(\"join-vertical\"),\n className,\n )}\n {...rest}\n />\n );\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport interface MenuProps extends React.HTMLAttributes<HTMLUListElement> {}\n\n/**\n * Silica Menu — a styled list of links/actions.\n *\n * <Menu>\n * <MenuTitle>Workspace</MenuTitle>\n * <MenuItem><a href=\"/\" aria-current=\"page\">Overview</a></MenuItem>\n * <MenuItem><a href=\"/team\">Team</a></MenuItem>\n * <MenuItem><button type=\"button\">Sign out</button></MenuItem>\n * </Menu>\n */\nexport const Menu = React.forwardRef<HTMLUListElement, MenuProps>(\n function Menu({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <ul ref={ref} className={cx(sc(\"menu\"), className)} {...rest} />;\n },\n);\n\n/** A single item row — wraps an `<a>` or `<button>`. */\nexport const MenuItem = React.forwardRef<\n HTMLLIElement,\n React.LiHTMLAttributes<HTMLLIElement>\n>(function MenuItem({ className, ...rest }, ref) {\n return <li ref={ref} className={className} {...rest} />;\n});\n\n/** A muted section label between items. */\nexport const MenuTitle = React.forwardRef<\n HTMLLIElement,\n React.LiHTMLAttributes<HTMLLIElement>\n>(function MenuTitle({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <li ref={ref} className={cx(sc(\"menu-title\"), className)} {...rest} />\n );\n});\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport interface CollapseProps\n extends React.DetailsHTMLAttributes<HTMLDetailsElement> {\n /** Drop the surface for a flush, borderless accordion row. */\n ghost?: boolean;\n}\n\n/**\n * Silica Collapse — a native `<details>` disclosure. Give several the same\n * `name` for an exclusive accordion (only one open at a time).\n *\n * <Collapse>\n * <CollapseTitle>Shipping</CollapseTitle>\n * <CollapseContent>Ships in 2–3 business days.</CollapseContent>\n * </Collapse>\n *\n * <Collapse name=\"faq\" open>…</Collapse>\n * <Collapse name=\"faq\">…</Collapse>\n */\nexport const Collapse = React.forwardRef<HTMLDetailsElement, CollapseProps>(\n function Collapse({ ghost = false, className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <details\n ref={ref}\n className={cx(sc(\"collapse\"), ghost && sc(\"collapse-ghost\"), className)}\n {...rest}\n />\n );\n },\n);\n\n/** The clickable header (renders a `<summary>`). */\nexport const CollapseTitle = React.forwardRef<\n HTMLElement,\n React.HTMLAttributes<HTMLElement>\n>(function CollapseTitle({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <summary ref={ref} className={cx(sc(\"collapse-title\"), className)} {...rest} />\n );\n});\n\n/** The disclosed body. */\nexport const CollapseContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(function CollapseContent({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <div ref={ref} className={cx(sc(\"collapse-content\"), className)} {...rest} />\n );\n});\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport type IndicatorPlacement =\n | \"top-end\"\n | \"top-start\"\n | \"bottom-end\"\n | \"bottom-start\";\n\nexport interface IndicatorProps extends React.HTMLAttributes<HTMLSpanElement> {}\n\n/**\n * Silica Indicator — pins an overlay to a corner of its content.\n *\n * <Indicator>\n * <IndicatorItem><Badge color=\"error\" size=\"xs\">3</Badge></IndicatorItem>\n * <Button variant=\"outline\">Inbox</Button>\n * </Indicator>\n *\n * The item comes first; the element it decorates follows.\n */\nexport const Indicator = React.forwardRef<HTMLSpanElement, IndicatorProps>(\n function Indicator({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <span ref={ref} className={cx(sc(\"indicator\"), className)} {...rest} />\n );\n },\n);\n\nexport interface IndicatorItemProps\n extends React.HTMLAttributes<HTMLSpanElement> {\n /** Which corner. Default `top-end`. */\n placement?: IndicatorPlacement;\n}\n\n/** The pinned overlay (usually a Badge or dot). */\nexport const IndicatorItem = React.forwardRef<\n HTMLSpanElement,\n IndicatorItemProps\n>(function IndicatorItem({ placement = \"top-end\", className, ...rest }, ref) {\n const sc = useSilicaClass();\n const start = placement === \"top-start\" || placement === \"bottom-start\";\n const bottom = placement === \"bottom-end\" || placement === \"bottom-start\";\n return (\n <span\n ref={ref}\n className={cx(\n sc(\"indicator-item\"),\n start && sc(\"indicator-start\"),\n bottom && sc(\"indicator-bottom\"),\n className,\n )}\n {...rest}\n />\n );\n});\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaSize } from \"./lib/tokens\";\n\nexport type LoadingSize = SilicaSize;\n\nexport interface LoadingProps extends React.HTMLAttributes<HTMLSpanElement> {\n /** Default `md`. */\n size?: LoadingSize;\n /** Accessible label announced to assistive tech. Default \"Loading\". */\n label?: string;\n}\n\n/**\n * Silica Loading — a spinner. Inherits `currentColor`, so color it with a\n * `text-*` utility or let it match the surrounding text.\n *\n * <Loading />\n * <Loading size=\"sm\" className=\"text-primary\" />\n * <Button loading>Saving…</Button> // Button has its own built-in spinner\n */\nexport const Loading = React.forwardRef<HTMLSpanElement, LoadingProps>(\n function Loading({ size = \"md\", label = \"Loading\", className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <span\n ref={ref}\n role=\"status\"\n aria-label={label}\n className={cx(\n sc(\"loading\"),\n size !== \"md\" && sc(`loading-${size}`),\n className,\n )}\n {...rest}\n />\n );\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport type ProseSize = \"sm\" | \"md\" | \"lg\" | \"xl\";\n\nexport interface ProseProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Default `md`. Rescales the whole block by one root font-size. */\n size?: ProseSize;\n}\n\n/**\n * Silica Prose — typographic defaults for a block of rich/markdown content.\n * Wrap raw HTML (or a Markdown renderer's output) and it gets themed headings,\n * lists, quotes, code, tables, and rhythm — scoped to this block only.\n *\n * <Prose>\n * <h1>Title</h1>\n * <p>Body copy with a <a href=\"#\">link</a> and <code>inline code</code>.</p>\n * </Prose>\n *\n * <Prose dangerouslySetInnerHTML={{ __html: renderedMarkdown }} />\n *\n * Caps width at 65ch for readability — add `max-w-none` to remove.\n */\nexport const Prose = React.forwardRef<HTMLDivElement, ProseProps>(\n function Prose({ size = \"md\", className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <div\n ref={ref}\n className={cx(\n sc(\"prose\"),\n size !== \"md\" && sc(`prose-${size}`),\n className,\n )}\n {...rest}\n />\n );\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\n/**\n * Typography components for silicaui's UI type ramp (see the `typography` plugin\n * module). They keep the *semantic* element and its *visual* size independent: a\n * `<Heading level={1} size={3}>` is an `<h1>` for the document outline but reads\n * as an h3. With no `size`, a heading just inherits its tag's global default, so\n * `<Heading level={2} />` and a bare `<h2>` match.\n */\n\nexport type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;\n\nexport interface HeadingProps extends React.HTMLAttributes<HTMLHeadingElement> {\n /** Semantic level → renders `<h1>`…`<h6>`. Default 2. */\n level?: HeadingLevel;\n /** Visual size override (`1`–`6` or `\"display\"`); omit to use the tag default. */\n size?: HeadingLevel | \"display\";\n}\n\n/** A heading whose semantic level and visual size are set independently. */\nexport const Heading = React.forwardRef<HTMLHeadingElement, HeadingProps>(\n function Heading({ level = 2, size, className, ...rest }, ref) {\n const sc = useSilicaClass();\n const Tag = `h${level}` as \"h1\";\n // Only emit a size class when it differs from the tag's own default — a bare\n // `<h2>` and `<Heading level={2}>` should render identically.\n const sizeClass = size !== undefined && size !== level ? sc(size === \"display\" ? \"display\" : `h${size}`) : undefined;\n return <Tag ref={ref} className={cx(sizeClass, className)} {...rest} />;\n },\n);\n\nexport interface DisplayProps extends React.HTMLAttributes<HTMLHeadingElement> {\n /** Semantic level for the outline (the look is always `.display`). Default 1. */\n level?: HeadingLevel;\n}\n\n/** Oversized hero/display heading (`.display`) on a semantic heading element. */\nexport const Display = React.forwardRef<HTMLHeadingElement, DisplayProps>(\n function Display({ level = 1, className, ...rest }, ref) {\n const sc = useSilicaClass();\n const Tag = `h${level}` as \"h1\";\n return <Tag ref={ref} className={cx(sc(\"display\"), className)} {...rest} />;\n },\n);\n\nexport type TextVariant = \"body\" | \"lead\" | \"caption\";\n\nexport interface TextProps extends React.HTMLAttributes<HTMLElement> {\n /** `body` (default), `lead` (larger intro), or `caption` (small, muted). */\n variant?: TextVariant;\n /** Element to render. Default `p`. */\n as?: React.ElementType;\n}\n\n/** Body-copy text with a semantic variant. `body` carries no class (bare `<p>`). */\nexport const Text = React.forwardRef<HTMLElement, TextProps>(\n function Text({ variant = \"body\", as, className, ...rest }, ref) {\n const sc = useSilicaClass();\n const Tag = (as ?? \"p\") as React.ElementType;\n const variantClass = variant === \"lead\" ? sc(\"lead\") : variant === \"caption\" ? sc(\"caption\") : undefined;\n return <Tag ref={ref as React.Ref<HTMLElement>} className={cx(variantClass, className) || undefined} {...rest} />;\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport type NavbarProps = React.HTMLAttributes<HTMLDivElement>;\n\n/**\n * Silica Navbar — a top bar with optional start / center / end slots.\n *\n * <Navbar>\n * <NavbarStart><a className=\"text-lg font-bold\">Silica</a></NavbarStart>\n * <NavbarCenter>…nav links…</NavbarCenter>\n * <NavbarEnd><Button>Sign in</Button></NavbarEnd>\n * </Navbar>\n */\nexport const Navbar = React.forwardRef<HTMLDivElement, NavbarProps>(\n function Navbar({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <div ref={ref} className={cx(sc(\"navbar\"), className)} {...rest} />;\n },\n);\n\nexport const NavbarStart = React.forwardRef<HTMLDivElement, NavbarProps>(\n function NavbarStart({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <div ref={ref} className={cx(sc(\"navbar-start\"), className)} {...rest} />;\n },\n);\n\nexport const NavbarCenter = React.forwardRef<HTMLDivElement, NavbarProps>(\n function NavbarCenter({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <div ref={ref} className={cx(sc(\"navbar-center\"), className)} {...rest} />;\n },\n);\n\nexport const NavbarEnd = React.forwardRef<HTMLDivElement, NavbarProps>(\n function NavbarEnd({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <div ref={ref} className={cx(sc(\"navbar-end\"), className)} {...rest} />;\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport interface FooterProps extends React.HTMLAttributes<HTMLElement> {\n /** Center every column and its contents (single-row, centered footer). */\n center?: boolean;\n}\n\n/**\n * Silica Footer — a responsive multi-column site footer.\n *\n * <Footer>\n * <nav>\n * <FooterTitle>Product</FooterTitle>\n * <Link href=\"#\">Features</Link>\n * <Link href=\"#\">Pricing</Link>\n * </nav>\n * …more columns…\n * </Footer>\n *\n * Renders a `<footer>`. Each direct child (e.g. a `<nav>`) becomes a vertical\n * stack of links under its `<FooterTitle>`.\n */\nexport const Footer = React.forwardRef<HTMLElement, FooterProps>(\n function Footer({ center, className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <footer\n ref={ref}\n className={cx(sc(\"footer\"), center && sc(\"footer-center\"), className)}\n {...rest}\n />\n );\n },\n);\n\nexport type FooterTitleProps = React.HTMLAttributes<HTMLElement>;\n\n/** A small, muted, upper-cased heading for a footer column. Renders `<h6>`. */\nexport const FooterTitle = React.forwardRef<HTMLHeadingElement, FooterTitleProps>(\n function FooterTitle({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <h6 ref={ref} className={cx(sc(\"footer-title\"), className)} {...rest} />;\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport type HeroProps = React.HTMLAttributes<HTMLDivElement>;\n\n/**\n * Silica Hero — a full-width banner that centers its content.\n *\n * <Hero style={{ backgroundImage: `url(${img})` }}>\n * <HeroOverlay />\n * <HeroContent className=\"text-neutral-content text-center\">\n * <div>\n * <h1 className=\"text-5xl font-bold\">Ship faster</h1>\n * <p>…</p>\n * <Button color=\"primary\">Get started</Button>\n * </div>\n * </HeroContent>\n * </Hero>\n *\n * Set a background image via the `style` prop; add `<HeroOverlay />` to tint it.\n */\nexport const Hero = React.forwardRef<HTMLDivElement, HeroProps>(\n function Hero({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <div ref={ref} className={cx(sc(\"hero\"), className)} {...rest} />;\n },\n);\n\nexport const HeroContent = React.forwardRef<HTMLDivElement, HeroProps>(\n function HeroContent({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <div ref={ref} className={cx(sc(\"hero-content\"), className)} {...rest} />;\n },\n);\n\n/** A translucent dark layer that tints the hero's background image. */\nexport const HeroOverlay = React.forwardRef<HTMLDivElement, HeroProps>(\n function HeroOverlay({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <div ref={ref} className={cx(sc(\"hero-overlay\"), className)} {...rest} />;\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor } from \"./lib/tokens\";\n\nexport type LinkColor = SilicaColor;\n\nexport interface LinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n /** Accent color; maps to `link-<color>`. Defaults to the surrounding text color. */\n color?: LinkColor;\n /** Show the underline only on hover / focus. */\n hover?: boolean;\n}\n\n/**\n * Silica Link — a styled inline anchor.\n *\n * <Link href=\"/docs\">Docs</Link>\n * <Link href=\"/pricing\" color=\"primary\">Pricing</Link>\n * <Link href=\"#\" hover>Underlines on hover</Link>\n */\nexport const Link = React.forwardRef<HTMLAnchorElement, LinkProps>(\n function Link({ color, hover, className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <a\n ref={ref}\n className={cx(\n sc(\"link\"),\n hover && sc(\"link-hover\"),\n color && sc(`link-${color}`),\n className,\n )}\n {...rest}\n />\n );\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport type MockupWindowProps = React.HTMLAttributes<HTMLDivElement>;\n\n/**\n * Silica MockupWindow — an app window frame with faux traffic-light dots.\n *\n * <MockupWindow>\n * <div className=\"p-8 text-center\">Hello!</div>\n * </MockupWindow>\n */\nexport const MockupWindow = React.forwardRef<HTMLDivElement, MockupWindowProps>(\n function MockupWindow({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <div ref={ref} className={cx(sc(\"mockup-window\"), className)} {...rest} />;\n },\n);\n\nexport interface MockupBrowserProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Text shown in the faux address bar. */\n url?: string;\n /** Replace the address bar with custom toolbar content. */\n toolbar?: React.ReactNode;\n}\n\n/**\n * Silica MockupBrowser — a browser frame with a toolbar and faux address bar.\n *\n * <MockupBrowser url=\"https://silica.ui\">\n * <div className=\"p-8 text-center\">Your page</div>\n * </MockupBrowser>\n */\nexport const MockupBrowser = React.forwardRef<HTMLDivElement, MockupBrowserProps>(\n function MockupBrowser({ url, toolbar, className, children, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <div ref={ref} className={cx(sc(\"mockup-browser\"), className)} {...rest}>\n <div className={cx(sc(\"mockup-browser-toolbar\"))}>\n {toolbar ?? <div className={cx(sc(\"mockup-browser-input\"))}>{url}</div>}\n </div>\n {children}\n </div>\n );\n },\n);\n\nexport type MockupCodeProps = React.HTMLAttributes<HTMLDivElement>;\n\n/**\n * Silica MockupCode — a dark terminal / code block. Compose it from\n * `<MockupCodeLine>` rows (each renders a `<pre data-prefix>`).\n *\n * <MockupCode>\n * <MockupCodeLine prefix=\"$\">npm i silicaui</MockupCodeLine>\n * <MockupCodeLine prefix=\">\" className=\"text-success\">done</MockupCodeLine>\n * </MockupCode>\n */\nexport const MockupCode = React.forwardRef<HTMLDivElement, MockupCodeProps>(\n function MockupCode({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <div ref={ref} className={cx(sc(\"mockup-code\"), className)} {...rest} />;\n },\n);\n\nexport interface MockupCodeLineProps\n extends React.HTMLAttributes<HTMLPreElement> {\n /** Gutter prefix rendered before the line (e.g. `$`, `>`, a line number). */\n prefix?: string;\n}\n\n/** A single line inside `<MockupCode>`. Renders `<pre data-prefix>`. */\nexport const MockupCodeLine = React.forwardRef<HTMLPreElement, MockupCodeLineProps>(\n function MockupCodeLine({ prefix, className, ...rest }, ref) {\n return <pre ref={ref} data-prefix={prefix} className={className} {...rest} />;\n },\n);\n\nexport type MockupPhoneProps = React.HTMLAttributes<HTMLDivElement>;\n\n/**\n * Silica MockupPhone — a phone frame with a camera notch.\n *\n * <MockupPhone>\n * <div className=\"p-6 pt-10\">Your app screen</div>\n * </MockupPhone>\n *\n * Children render inside the display; the bezel and notch are supplied by the\n * frame. Give top content some `pt` so it clears the notch.\n */\nexport const MockupPhone = React.forwardRef<HTMLDivElement, MockupPhoneProps>(\n function MockupPhone({ className, children, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <div ref={ref} className={cx(sc(\"mockup-phone\"), className)} {...rest}>\n <div className={cx(sc(\"mockup-phone-display\"))}>{children}</div>\n </div>\n );\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport type TimelineOrientation = \"vertical\" | \"horizontal\";\n\nexport interface TimelineProps extends React.HTMLAttributes<HTMLUListElement> {\n /** `vertical` (default) or `horizontal`. */\n orientation?: TimelineOrientation;\n}\n\n/**\n * Silica Timeline — a sequence of dated events with a connecting rail.\n *\n * <Timeline>\n * <TimelineItem>\n * <TimelineStart>2021</TimelineStart>\n * <TimelineMiddle />\n * <TimelineEnd box>Founded</TimelineEnd>\n * </TimelineItem>\n * <TimelineItem>\n * <TimelineStart>2024</TimelineStart>\n * <TimelineMiddle />\n * <TimelineEnd box>Shipped 1.0</TimelineEnd>\n * </TimelineItem>\n * </Timeline>\n *\n * Renders `<ul>` / `<li>`. Any slot is optional — omit `<TimelineStart>` for a\n * one-sided timeline. `<TimelineMiddle>` renders a default dot when empty.\n */\nexport const Timeline = React.forwardRef<HTMLUListElement, TimelineProps>(\n function Timeline({ orientation = \"vertical\", className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <ul\n ref={ref}\n className={cx(\n sc(\"timeline\"),\n orientation === \"horizontal\" && sc(\"timeline-horizontal\"),\n className,\n )}\n {...rest}\n />\n );\n },\n);\n\nexport type TimelineItemProps = React.LiHTMLAttributes<HTMLLIElement>;\n\nexport const TimelineItem = React.forwardRef<HTMLLIElement, TimelineItemProps>(\n function TimelineItem({ className, ...rest }, ref) {\n return <li ref={ref} className={className} {...rest} />;\n },\n);\n\nexport type TimelineStartProps = React.HTMLAttributes<HTMLDivElement>;\n\n/** The opposite-side label (e.g. a date). */\nexport const TimelineStart = React.forwardRef<HTMLDivElement, TimelineStartProps>(\n function TimelineStart({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <div ref={ref} className={cx(sc(\"timeline-start\"), className)} {...rest} />;\n },\n);\n\nexport type TimelineMiddleProps = React.HTMLAttributes<HTMLDivElement>;\n\n/** The marker on the rail. Renders a default dot when given no children. */\nexport const TimelineMiddle = React.forwardRef<HTMLDivElement, TimelineMiddleProps>(\n function TimelineMiddle({ className, children, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <div ref={ref} className={cx(sc(\"timeline-middle\"), className)} {...rest}>\n {children ?? <span className={cx(sc(\"timeline-dot\"))} />}\n </div>\n );\n },\n);\n\nexport interface TimelineEndProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Wrap the content in a bordered card. */\n box?: boolean;\n}\n\n/** The event content. Set `box` to wrap it in a bordered card. */\nexport const TimelineEnd = React.forwardRef<HTMLDivElement, TimelineEndProps>(\n function TimelineEnd({ box, className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <div\n ref={ref}\n className={cx(sc(\"timeline-end\"), box && sc(\"timeline-box\"), className)}\n {...rest}\n />\n );\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport type CarouselSnap = \"start\" | \"center\" | \"end\";\nexport type CarouselOrientation = \"horizontal\" | \"vertical\";\n\nexport interface CarouselProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n /** Snap alignment of items. `start` (default), `center`, or `end`. */\n snap?: CarouselSnap;\n /** `horizontal` (default) or `vertical`. */\n orientation?: CarouselOrientation;\n /** Show prev/next controls. Default `true`. */\n controls?: boolean;\n /** Bottom indicators: `dots` (default), `numbers` (paged), or `false` to hide. */\n indicators?: boolean | \"dots\" | \"numbers\";\n /** Wrap around past the first/last slide. Default `false`. */\n loop?: boolean;\n /** Auto-advance every N ms (pauses on hover/focus). Off by default. */\n autoplay?: number;\n /** Called with the active slide index whenever it changes. */\n onChange?: (index: number) => void;\n /** Extra class for the scroll surface. */\n className?: string;\n}\n\nconst PrevIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" aria-hidden=\"true\">\n <path d=\"m15 18-6-6 6-6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\nconst NextIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" aria-hidden=\"true\">\n <path d=\"m9 18 6-6-6-6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\n\n/**\n * Silica Carousel — a scroll-snap strip driven by real prev/next controls and\n * dot indicators (with optional loop + autoplay), not just a scrollable list.\n *\n * <Carousel loop autoplay={4000} className=\"gap-4 rounded-box\">\n * <CarouselItem className=\"w-full\"><img … /></CarouselItem>\n * <CarouselItem className=\"w-full\"><img … /></CarouselItem>\n * </Carousel>\n */\nexport function Carousel({\n snap = \"start\",\n orientation = \"horizontal\",\n controls = true,\n indicators = true,\n loop = false,\n autoplay,\n onChange,\n className,\n children,\n ...rest\n}: CarouselProps) {\n const sc = useSilicaClass();\n const scrollRef = React.useRef<HTMLDivElement>(null);\n const horizontal = orientation !== \"vertical\";\n const count = React.Children.count(children);\n const [active, setActive] = React.useState(0);\n const [paused, setPaused] = React.useState(false);\n\n const goTo = React.useCallback(\n (i: number) => {\n const container = scrollRef.current;\n if (!container) return;\n const last = container.children.length - 1;\n const target = loop\n ? (i + container.children.length) % container.children.length\n : Math.max(0, Math.min(last, i));\n const el = container.children[target] as HTMLElement | undefined;\n if (!el) return;\n container.scrollTo({\n left: horizontal ? el.offsetLeft - container.offsetLeft : 0,\n top: horizontal ? 0 : el.offsetTop - container.offsetTop,\n behavior: \"smooth\",\n });\n },\n [horizontal, loop],\n );\n\n // Keep the active index in sync with manual scrolling / swiping.\n const handleScroll = React.useCallback(() => {\n const container = scrollRef.current;\n if (!container) return;\n const kids = Array.from(container.children) as HTMLElement[];\n const pos = horizontal ? container.scrollLeft : container.scrollTop;\n let nearest = 0;\n let best = Infinity;\n kids.forEach((k, i) => {\n const off = horizontal ? k.offsetLeft - container.offsetLeft : k.offsetTop - container.offsetTop;\n const d = Math.abs(off - pos);\n if (d < best) {\n best = d;\n nearest = i;\n }\n });\n setActive((prev) => (prev === nearest ? prev : nearest));\n }, [horizontal]);\n\n React.useEffect(() => {\n onChange?.(active);\n }, [active, onChange]);\n\n React.useEffect(() => {\n if (!autoplay || paused || count <= 1) return;\n const id = window.setInterval(() => {\n const next = active + 1 > count - 1 ? (loop ? 0 : active) : active + 1;\n if (next !== active) goTo(next);\n else if (loop) goTo(0);\n }, autoplay);\n return () => window.clearInterval(id);\n }, [autoplay, paused, active, count, loop, goTo]);\n\n const atStart = active === 0;\n const atEnd = active === count - 1;\n const indi = indicators === true ? \"dots\" : indicators;\n\n return (\n <div\n className={cx(sc(\"carousel-root\"))}\n onMouseEnter={() => setPaused(true)}\n onMouseLeave={() => setPaused(false)}\n onFocusCapture={() => setPaused(true)}\n onBlurCapture={() => setPaused(false)}\n >\n {controls && count > 1 && (\n <button\n type=\"button\"\n className={cx(sc(\"carousel-control\"), sc(\"carousel-prev\"))}\n onClick={() => goTo(active - 1)}\n disabled={!loop && atStart}\n aria-label=\"Previous slide\"\n >\n <PrevIcon />\n </button>\n )}\n\n <div\n ref={scrollRef}\n className={cx(\n sc(\"carousel\"),\n snap !== \"start\" && sc(`carousel-${snap}`),\n orientation === \"vertical\" && sc(\"carousel-vertical\"),\n className,\n )}\n onScroll={handleScroll}\n {...rest}\n >\n {children}\n </div>\n\n {controls && count > 1 && (\n <button\n type=\"button\"\n className={cx(sc(\"carousel-control\"), sc(\"carousel-next\"))}\n onClick={() => goTo(active + 1)}\n disabled={!loop && atEnd}\n aria-label=\"Next slide\"\n >\n <NextIcon />\n </button>\n )}\n\n {indi && count > 1 && (\n <div className={cx(sc(\"carousel-indicators\"))}>\n {Array.from({ length: count }, (_, i) =>\n indi === \"numbers\" ? (\n <button\n key={i}\n type=\"button\"\n className={cx(sc(\"carousel-number\"), i === active && sc(\"carousel-number-active\"))}\n onClick={() => goTo(i)}\n aria-label={`Go to slide ${i + 1}`}\n aria-current={i === active}\n >\n {i + 1}\n </button>\n ) : (\n <button\n key={i}\n type=\"button\"\n className={cx(sc(\"carousel-dot\"), i === active && sc(\"carousel-dot-active\"))}\n onClick={() => goTo(i)}\n aria-label={`Go to slide ${i + 1}`}\n aria-current={i === active}\n />\n ),\n )}\n </div>\n )}\n </div>\n );\n}\n\nexport type CarouselItemProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport const CarouselItem = React.forwardRef<HTMLDivElement, CarouselItemProps>(\n function CarouselItem({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <div ref={ref} className={cx(sc(\"carousel-item\"), className)} {...rest} />;\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport type StackPeek = \"top\" | \"bottom\" | \"start\" | \"end\";\n\nexport interface StackProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Which way the deck peeks. `top` (default), `bottom`, `start`, or `end`. */\n peek?: StackPeek;\n /** Make the deck clickable — sends the front card to the back to reveal the next. */\n interactive?: boolean;\n}\n\n/**\n * Silica Stack — layers its children into a peeking deck (first child on top).\n * With `interactive`, clicking (or Enter/Space) cycles the front card to the\n * back so you can flip through the deck; the re-stack animates.\n *\n * <Stack interactive>\n * <Card className=\"bg-primary text-primary-content\"><CardBody>1</CardBody></Card>\n * <Card className=\"bg-secondary text-secondary-content\"><CardBody>2</CardBody></Card>\n * <Card className=\"bg-accent text-accent-content\"><CardBody>3</CardBody></Card>\n * </Stack>\n */\nexport function Stack({\n peek = \"top\",\n interactive = false,\n className,\n children,\n onClick,\n onKeyDown,\n ...rest\n}: StackProps) {\n const sc = useSilicaClass();\n const items = React.useMemo(() => React.Children.toArray(children), [children]);\n const [order, setOrder] = React.useState<number[]>(() => items.map((_, i) => i));\n\n // Reset the order if the number of children changes.\n React.useEffect(() => {\n setOrder(items.map((_, i) => i));\n }, [items.length]);\n\n const cycle = React.useCallback(() => {\n // Move the front card to the back (slice avoids index access → no undefined).\n setOrder((o) => (o.length > 1 ? o.slice(1).concat(o.slice(0, 1)) : o));\n }, []);\n\n const ordered = order.map((i) => items[i]).filter(Boolean);\n\n const interactiveProps = interactive\n ? {\n role: \"button\" as const,\n tabIndex: 0,\n \"aria-label\": \"Cycle stack\",\n style: { cursor: \"pointer\", ...rest.style },\n onClick: (e: React.MouseEvent<HTMLDivElement>) => {\n cycle();\n onClick?.(e);\n },\n onKeyDown: (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n cycle();\n }\n onKeyDown?.(e);\n },\n }\n : { onClick, onKeyDown };\n\n return (\n <div\n className={cx(sc(\"stack\"), peek !== \"top\" && sc(`stack-${peek}`), className)}\n {...rest}\n {...interactiveProps}\n >\n {ordered}\n </div>\n );\n}\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor, SilicaSize } from \"./lib/tokens\";\n\nexport type RatingColor = SilicaColor;\nexport type RatingSize = SilicaSize;\n\nexport interface RatingProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\" | \"defaultValue\"> {\n /** Controlled value (number of filled stars). */\n value?: number;\n /** Initial value when uncontrolled. */\n defaultValue?: number;\n /** Called when the rating changes. */\n onChange?: (value: number) => void;\n /** Number of stars. Default 5. */\n max?: number;\n /** Accent color for filled stars. Default warning (gold). */\n color?: RatingColor;\n /** Star size. */\n size?: RatingSize;\n /** Render non-interactive. */\n readOnly?: boolean;\n /** Custom star icon (defaults to a filled star). */\n icon?: React.ReactNode;\n /** Accessible label for the group. */\n label?: string;\n}\n\nconst StarIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\">\n <path d=\"m12 2 3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z\" />\n </svg>\n);\n\n/**\n * Silica Rating — a row of star buttons.\n *\n * <Rating defaultValue={3} onChange={setStars} />\n * <Rating value={4.5 | 4} color=\"warning\" readOnly />\n *\n * Keyboard: arrow keys change the value; Home/End jump to 1/max.\n */\nexport function Rating({\n value,\n defaultValue = 0,\n onChange,\n max = 5,\n color,\n size,\n readOnly,\n icon,\n label = \"Rating\",\n className,\n ...rest\n}: RatingProps) {\n const sc = useSilicaClass();\n const isControlled = value !== undefined;\n const [internal, setInternal] = React.useState(defaultValue);\n const current = isControlled ? (value as number) : internal;\n const [hover, setHover] = React.useState<number | null>(null);\n const shown = hover ?? current;\n const refs = React.useRef<(HTMLButtonElement | null)[]>([]);\n\n const setValue = (v: number) => {\n if (readOnly) return;\n const next = v === current ? 0 : v; // click the current star to clear\n if (!isControlled) setInternal(next);\n onChange?.(next);\n };\n\n const focusStar = (i: number) => {\n const clamped = Math.max(1, Math.min(max, i));\n refs.current[clamped - 1]?.focus();\n if (!isControlled) setInternal(clamped);\n onChange?.(clamped);\n };\n\n const onKeyDown = (e: React.KeyboardEvent, i: number) => {\n if (readOnly) return;\n if (e.key === \"ArrowRight\" || e.key === \"ArrowUp\") {\n e.preventDefault();\n focusStar(i + 1);\n } else if (e.key === \"ArrowLeft\" || e.key === \"ArrowDown\") {\n e.preventDefault();\n focusStar(i - 1);\n } else if (e.key === \"Home\") {\n e.preventDefault();\n focusStar(1);\n } else if (e.key === \"End\") {\n e.preventDefault();\n focusStar(max);\n }\n };\n\n const activeIndex = current > 0 ? current - 1 : 0;\n\n return (\n <div\n role=\"radiogroup\"\n aria-label={label}\n className={cx(\n sc(\"rating\"),\n color && sc(`rating-${color}`),\n size && sc(`rating-${size}`),\n readOnly && sc(\"rating-readonly\"),\n className,\n )}\n onMouseLeave={() => setHover(null)}\n {...rest}\n >\n {Array.from({ length: max }, (_, idx) => {\n const starValue = idx + 1;\n return (\n <button\n key={starValue}\n ref={(el) => {\n refs.current[idx] = el;\n }}\n type=\"button\"\n role=\"radio\"\n aria-checked={current === starValue}\n aria-label={`${starValue} star${starValue === 1 ? \"\" : \"s\"}`}\n tabIndex={readOnly ? -1 : idx === activeIndex ? 0 : -1}\n disabled={readOnly}\n data-filled={starValue <= shown}\n className={cx(sc(\"rating-item\"))}\n onClick={() => setValue(starValue)}\n onMouseEnter={() => !readOnly && setHover(starValue)}\n onKeyDown={(e) => onKeyDown(e, starValue)}\n >\n {icon ?? <StarIcon />}\n </button>\n );\n })}\n </div>\n );\n}\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor } from \"./lib/tokens\";\n\nexport type RadialProgressColor = SilicaColor;\n\nexport interface RadialProgressProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Progress percentage, 0–100. */\n value: number;\n /** Overall diameter (any CSS length). Default `5rem`. */\n size?: string;\n /** Ring thickness (any CSS length). Default `0.5rem`. */\n thickness?: string;\n /** Accent color. Default primary. */\n color?: RadialProgressColor;\n}\n\n/**\n * Silica RadialProgress — a circular progress ring with a centered label.\n *\n * <RadialProgress value={70} color=\"success\" />\n * <RadialProgress value={40} size=\"7rem\" thickness=\"0.75rem\">40%</RadialProgress>\n *\n * Defaults the label to `{value}%`; pass children to override.\n */\nexport const RadialProgress = React.forwardRef<HTMLDivElement, RadialProgressProps>(\n function RadialProgress(\n { value, size = \"5rem\", thickness = \"0.5rem\", color, className, children, style, ...rest },\n ref,\n ) {\n const sc = useSilicaClass();\n const pct = Math.max(0, Math.min(100, value));\n return (\n <div\n ref={ref}\n role=\"progressbar\"\n aria-valuenow={Math.round(pct)}\n aria-valuemin={0}\n aria-valuemax={100}\n className={cx(sc(\"radial-progress\"), className)}\n style={\n {\n \"--value\": pct,\n \"--size\": size,\n \"--thickness\": thickness,\n ...(color ? { \"--radial-accent\": `var(--color-${color})` } : {}),\n ...style,\n } as React.CSSProperties\n }\n {...rest}\n >\n <span>{children ?? `${Math.round(pct)}%`}</span>\n </div>\n );\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor } from \"./lib/tokens\";\n\nexport type PaginationColor = SilicaColor;\nexport type PaginationSize = \"xs\" | \"sm\" | \"md\" | \"lg\";\n\nexport interface PaginationProps\n extends Omit<React.HTMLAttributes<HTMLElement>, \"onChange\"> {\n /** Current page (1-based). */\n page: number;\n /** Total number of pages. */\n count: number;\n /** Called with the new page. */\n onChange?: (page: number) => void;\n /** Pages shown on each side of the current page. Default 1. */\n siblingCount?: number;\n /** Pages shown at the start/end. Default 1. */\n boundaryCount?: number;\n /** Show prev/next arrows. Default `true`. */\n controls?: boolean;\n color?: PaginationColor;\n size?: PaginationSize;\n}\n\nconst range = (start: number, end: number): number[] =>\n Array.from({ length: Math.max(end - start + 1, 0) }, (_, i) => start + i);\n\n/** MUI-style page list with ellipses. */\nfunction paginationItems(\n page: number,\n count: number,\n siblingCount: number,\n boundaryCount: number,\n): (number | \"ellipsis\")[] {\n const startPages = range(1, Math.min(boundaryCount, count));\n const endPages = range(Math.max(count - boundaryCount + 1, boundaryCount + 1), count);\n\n const siblingsStart = Math.max(\n Math.min(page - siblingCount, count - boundaryCount - siblingCount * 2 - 1),\n boundaryCount + 2,\n );\n const firstEndPage = endPages.length > 0 ? (endPages[0] as number) : count + 1;\n const siblingsEnd = Math.min(\n Math.max(page + siblingCount, boundaryCount + siblingCount * 2 + 2),\n endPages.length > 0 ? firstEndPage - 2 : count - 1,\n );\n\n return [\n ...startPages,\n ...(siblingsStart > boundaryCount + 2\n ? [\"ellipsis\" as const]\n : boundaryCount + 1 < count - boundaryCount\n ? [boundaryCount + 1]\n : []),\n ...range(siblingsStart, siblingsEnd),\n ...(siblingsEnd < count - boundaryCount - 1\n ? [\"ellipsis\" as const]\n : count - boundaryCount > boundaryCount\n ? [count - boundaryCount]\n : []),\n ...endPages,\n ];\n}\n\nconst PrevIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" aria-hidden=\"true\">\n <path d=\"m15 18-6-6 6-6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\nconst NextIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" aria-hidden=\"true\">\n <path d=\"m9 18 6-6-6-6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\n\n/**\n * Silica Pagination — page controls with prev/next and ellipsis.\n *\n * <Pagination page={page} count={12} onChange={setPage} color=\"primary\" />\n */\nexport function Pagination({\n page,\n count,\n onChange,\n siblingCount = 1,\n boundaryCount = 1,\n controls = true,\n color,\n size,\n className,\n ...rest\n}: PaginationProps) {\n const sc = useSilicaClass();\n const items = paginationItems(page, count, siblingCount, boundaryCount);\n const go = (p: number) => {\n const clamped = Math.max(1, Math.min(count, p));\n if (clamped !== page) onChange?.(clamped);\n };\n\n return (\n <nav\n aria-label=\"Pagination\"\n className={cx(\n sc(\"pagination\"),\n color && sc(`pagination-${color}`),\n size && sc(`pagination-${size}`),\n className,\n )}\n {...rest}\n >\n {controls && (\n <button\n type=\"button\"\n className={cx(sc(\"pagination-item\"))}\n onClick={() => go(page - 1)}\n disabled={page <= 1}\n aria-label=\"Previous page\"\n >\n <PrevIcon />\n </button>\n )}\n\n {items.map((item, i) =>\n item === \"ellipsis\" ? (\n <span key={`e${i}`} className={cx(sc(\"pagination-ellipsis\"))} aria-hidden=\"true\">\n …\n </span>\n ) : (\n <button\n key={item}\n type=\"button\"\n className={cx(\n sc(\"pagination-item\"),\n item === page && sc(\"pagination-item-active\"),\n )}\n onClick={() => go(item)}\n aria-label={`Page ${item}`}\n aria-current={item === page ? \"page\" : undefined}\n >\n {item}\n </button>\n ),\n )}\n\n {controls && (\n <button\n type=\"button\"\n className={cx(sc(\"pagination-item\"))}\n onClick={() => go(page + 1)}\n disabled={page >= count}\n aria-label=\"Next page\"\n >\n <NextIcon />\n </button>\n )}\n </nav>\n );\n}\n","import * as React from \"react\";\nimport { Accordion as BaseAccordion } from \"@base-ui-components/react/accordion\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\ntype Styled<T extends React.ElementType> = Omit<\n React.ComponentPropsWithoutRef<T>,\n \"className\"\n> & { className?: string };\n\nconst ChevronIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" aria-hidden=\"true\">\n <path d=\"m6 9 6 6 6-6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\n\n/**\n * Silica Accordion — collapsible sections (Base UI behavior, animated height).\n *\n * <Accordion multiple={false} defaultValue={[\"a\"]}>\n * <AccordionItem value=\"a\">\n * <AccordionTrigger>What is Silica?</AccordionTrigger>\n * <AccordionPanel>A design system on one token model.</AccordionPanel>\n * </AccordionItem>\n * <AccordionItem value=\"b\">\n * <AccordionTrigger>Is it themeable?</AccordionTrigger>\n * <AccordionPanel>Yes — every color is a token.</AccordionPanel>\n * </AccordionItem>\n * </Accordion>\n */\nexport function Accordion({ className, ...rest }: Styled<typeof BaseAccordion.Root>) {\n const sc = useSilicaClass();\n return <BaseAccordion.Root className={cx(sc(\"accordion\"), className)} {...rest} />;\n}\n\nexport function AccordionItem({ className, ...rest }: Styled<typeof BaseAccordion.Item>) {\n const sc = useSilicaClass();\n return <BaseAccordion.Item className={cx(sc(\"accordion-item\"), className)} {...rest} />;\n}\n\nexport interface AccordionTriggerProps extends Styled<typeof BaseAccordion.Trigger> {\n /** Set false to omit the built-in chevron. */\n chevron?: boolean;\n}\n\nexport function AccordionTrigger({\n className,\n children,\n chevron = true,\n ...rest\n}: AccordionTriggerProps) {\n const sc = useSilicaClass();\n return (\n <BaseAccordion.Header className={cx(sc(\"accordion-header\"))}>\n <BaseAccordion.Trigger className={cx(sc(\"accordion-trigger\"), className)} {...rest}>\n <span>{children}</span>\n {chevron && <ChevronIcon />}\n </BaseAccordion.Trigger>\n </BaseAccordion.Header>\n );\n}\n\nexport function AccordionPanel({\n className,\n children,\n ...rest\n}: Styled<typeof BaseAccordion.Panel>) {\n const sc = useSilicaClass();\n return (\n <BaseAccordion.Panel className={cx(sc(\"accordion-panel\"), className)} {...rest}>\n <div className={cx(sc(\"accordion-content\"))}>{children}</div>\n </BaseAccordion.Panel>\n );\n}\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor } from \"./lib/tokens\";\n\nexport type ChatSide = \"start\" | \"end\";\nexport type ChatBubbleColor = SilicaColor;\n\nexport interface ChatProps extends React.HTMLAttributes<HTMLDivElement> {\n /** `start` (incoming, avatar left) or `end` (outgoing, avatar right). */\n side?: ChatSide;\n}\n\n/**\n * Silica Chat — a message row: avatar, header, bubble, footer.\n *\n * <Chat side=\"start\">\n * <ChatImage><Avatar>OW</Avatar></ChatImage>\n * <ChatHeader>Obi-Wan <time className=\"opacity-60\">12:45</time></ChatHeader>\n * <ChatBubble>You were the chosen one!</ChatBubble>\n * <ChatFooter>Seen</ChatFooter>\n * </Chat>\n * <Chat side=\"end\">\n * <ChatBubble color=\"primary\">I hate you!</ChatBubble>\n * </Chat>\n */\nexport const Chat = React.forwardRef<HTMLDivElement, ChatProps>(\n function Chat({ side = \"start\", className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <div ref={ref} className={cx(sc(\"chat\"), sc(`chat-${side}`), className)} {...rest} />\n );\n },\n);\n\nexport type ChatImageProps = React.HTMLAttributes<HTMLDivElement>;\nexport const ChatImage = React.forwardRef<HTMLDivElement, ChatImageProps>(\n function ChatImage({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <div ref={ref} className={cx(sc(\"chat-image\"), className)} {...rest} />;\n },\n);\n\nexport type ChatHeaderProps = React.HTMLAttributes<HTMLDivElement>;\nexport const ChatHeader = React.forwardRef<HTMLDivElement, ChatHeaderProps>(\n function ChatHeader({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <div ref={ref} className={cx(sc(\"chat-header\"), className)} {...rest} />;\n },\n);\n\nexport type ChatFooterProps = React.HTMLAttributes<HTMLDivElement>;\nexport const ChatFooter = React.forwardRef<HTMLDivElement, ChatFooterProps>(\n function ChatFooter({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <div ref={ref} className={cx(sc(\"chat-footer\"), className)} {...rest} />;\n },\n);\n\nexport interface ChatBubbleProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Bubble color; maps to `chat-bubble-<color>`. Default neutral base-200. */\n color?: ChatBubbleColor;\n}\nexport const ChatBubble = React.forwardRef<HTMLDivElement, ChatBubbleProps>(\n function ChatBubble({ color, className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <div\n ref={ref}\n className={cx(sc(\"chat-bubble\"), color && sc(`chat-bubble-${color}`), className)}\n {...rest}\n />\n );\n },\n);\n","import * as React from \"react\";\nimport { Slider as BaseSlider } from \"@base-ui-components/react/slider\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor } from \"./lib/tokens\";\n\ntype Styled<T extends React.ElementType> = Omit<\n React.ComponentPropsWithoutRef<T>,\n \"className\"\n> & { className?: string };\n\nexport type RangeColor = SilicaColor;\n\nexport interface RangeProps extends Styled<typeof BaseSlider.Root> {\n /** Accent color for the filled track + thumb. Default primary. */\n color?: RangeColor;\n}\n\n/**\n * Silica Range — a slider (Base UI behavior).\n *\n * <Range defaultValue={40} onValueChange={setV} />\n * <Range defaultValue={[20, 60]} color=\"success\" /> // two thumbs\n *\n * Pass an array value/defaultValue for a multi-thumb range.\n */\nexport function Range({ color, className, value, defaultValue, ...rest }: RangeProps) {\n const sc = useSilicaClass();\n const vals = value ?? defaultValue;\n const thumbCount = Array.isArray(vals) ? vals.length : 1;\n\n return (\n <BaseSlider.Root\n value={value}\n defaultValue={defaultValue}\n className={cx(sc(\"range\"), color && sc(`range-${color}`), className)}\n {...rest}\n >\n <BaseSlider.Control className={cx(sc(\"range-control\"))}>\n <BaseSlider.Track className={cx(sc(\"range-track\"))}>\n <BaseSlider.Indicator className={cx(sc(\"range-indicator\"))} />\n {Array.from({ length: thumbCount }, (_, i) => (\n <BaseSlider.Thumb\n key={i}\n index={thumbCount > 1 ? i : undefined}\n className={cx(sc(\"range-thumb\"))}\n />\n ))}\n </BaseSlider.Track>\n </BaseSlider.Control>\n </BaseSlider.Root>\n );\n}\n","import * as React from \"react\";\nimport { Toast as BaseToast } from \"@base-ui-components/react/toast\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport type ToastProviderProps = React.ComponentProps<typeof BaseToast.Provider>;\n\nconst CloseIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" aria-hidden=\"true\">\n <path d=\"m18 6-12 12M6 6l12 12\" strokeLinecap=\"round\" />\n </svg>\n);\n\n/** Renders the toasts from the manager into a fixed corner viewport. */\nfunction ToastList() {\n const { toasts } = BaseToast.useToastManager();\n const sc = useSilicaClass();\n return (\n <BaseToast.Portal>\n <BaseToast.Viewport className={cx(sc(\"toast-viewport\"))}>\n {toasts.map((toast) => (\n <BaseToast.Root key={toast.id} toast={toast} className={cx(sc(\"toast\"))}>\n <div className={cx(sc(\"toast-content\"))}>\n <BaseToast.Title className={cx(sc(\"toast-title\"))} />\n <BaseToast.Description className={cx(sc(\"toast-description\"))} />\n </div>\n <BaseToast.Close className={cx(sc(\"toast-close\"))} aria-label=\"Close\">\n <CloseIcon />\n </BaseToast.Close>\n </BaseToast.Root>\n ))}\n </BaseToast.Viewport>\n </BaseToast.Portal>\n );\n}\n\n/**\n * Silica ToastProvider — wrap your app once, then call `useToast().add(...)`.\n *\n * <ToastProvider>\n * <App />\n * </ToastProvider>\n *\n * const toast = useToast();\n * toast.add({ title: \"Saved\", description: \"Your changes are saved.\", type: \"success\" });\n */\nexport function ToastProvider({ children, ...rest }: ToastProviderProps) {\n return (\n <BaseToast.Provider {...rest}>\n {children}\n <ToastList />\n </BaseToast.Provider>\n );\n}\n\n/** Toast manager: `add`, `close`, `update`, and the live `toasts` list. */\nexport function useToast() {\n return BaseToast.useToastManager();\n}\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport type SwapVariant = \"fade\" | \"rotate\" | \"flip\";\n\nexport interface SwapProps\n extends Omit<React.HTMLAttributes<HTMLLabelElement>, \"onChange\"> {\n /** Shown when active (checked). */\n on: React.ReactNode;\n /** Shown when inactive. */\n off: React.ReactNode;\n /** Controlled active state. */\n active?: boolean;\n /** Initial state when uncontrolled. */\n defaultActive?: boolean;\n /** Called when toggled. */\n onActiveChange?: (active: boolean) => void;\n /** Transition style. `fade` (default), `rotate`, or `flip`. */\n variant?: SwapVariant;\n /** Accessible label. */\n label?: string;\n}\n\n/**\n * Silica Swap — cross-fades (or rotates/flips) between two icons on toggle.\n *\n * <Swap variant=\"rotate\" on={<CloseIcon />} off={<MenuIcon />} label=\"Menu\" />\n */\nexport function Swap({\n on,\n off,\n active,\n defaultActive,\n onActiveChange,\n variant = \"fade\",\n label,\n className,\n ...rest\n}: SwapProps) {\n const sc = useSilicaClass();\n const isControlled = active !== undefined;\n const [internal, setInternal] = React.useState(defaultActive ?? false);\n const checked = isControlled ? active : internal;\n\n return (\n <label\n className={cx(sc(\"swap\"), variant !== \"fade\" && sc(`swap-${variant}`), className)}\n {...rest}\n >\n <input\n type=\"checkbox\"\n checked={checked}\n aria-label={label}\n onChange={(e) => {\n if (!isControlled) setInternal(e.target.checked);\n onActiveChange?.(e.target.checked);\n }}\n />\n <span className={cx(sc(\"swap-on\"))}>{on}</span>\n <span className={cx(sc(\"swap-off\"))}>{off}</span>\n </label>\n );\n}\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor, SilicaSize } from \"./lib/tokens\";\n\nexport type StatusColor = SilicaColor;\nexport type StatusSize = SilicaSize;\n\nexport interface StatusProps extends React.HTMLAttributes<HTMLSpanElement> {\n /** Dot color. */\n color?: StatusColor;\n /** Dot size. */\n size?: StatusSize;\n /** Add an expanding \"ping\" ring. */\n ping?: boolean;\n /** Accessible label (e.g. \"Online\"). */\n label?: string;\n}\n\n/**\n * Silica Status — a small status dot, optionally pinging.\n *\n * <Status color=\"success\" ping label=\"Online\" />\n * <Status color=\"warning\" size=\"sm\" />\n */\nexport const Status = React.forwardRef<HTMLSpanElement, StatusProps>(\n function Status({ color, size, ping, label, className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <span\n ref={ref}\n role={label ? \"status\" : undefined}\n aria-label={label}\n className={cx(\n sc(\"status\"),\n color && sc(`status-${color}`),\n size && sc(`status-${size}`),\n ping && sc(\"status-ping\"),\n className,\n )}\n {...rest}\n />\n );\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport type CountdownUnit = \"days\" | \"hours\" | \"minutes\" | \"seconds\";\n\nexport interface CountdownProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Target time (a Date or epoch-ms timestamp). */\n to: Date | number;\n /** Which units to show. Default all four. */\n units?: CountdownUnit[];\n /** Drop the boxes for an inline number run. */\n plain?: boolean;\n /** Called once when the countdown reaches zero. */\n onComplete?: () => void;\n}\n\nconst pad = (n: number) => String(n).padStart(2, \"0\");\n\n/**\n * Silica Countdown — a live days/hours/minutes/seconds display.\n *\n * <Countdown to={launchDate} />\n * <Countdown to={Date.now() + 90_000} units={[\"minutes\", \"seconds\"]} plain />\n *\n * Client-only (ticks every second); render under a `\"use client\"` boundary.\n */\nexport function Countdown({\n to,\n units = [\"days\", \"hours\", \"minutes\", \"seconds\"],\n plain,\n onComplete,\n className,\n ...rest\n}: CountdownProps) {\n const sc = useSilicaClass();\n const target = typeof to === \"number\" ? to : to.getTime();\n const [now, setNow] = React.useState(() => Date.now());\n\n React.useEffect(() => {\n const id = window.setInterval(() => setNow(Date.now()), 1000);\n return () => window.clearInterval(id);\n }, []);\n\n const remaining = Math.max(0, target - now);\n const done = remaining === 0;\n\n const completedRef = React.useRef(false);\n React.useEffect(() => {\n if (done && !completedRef.current) {\n completedRef.current = true;\n onComplete?.();\n }\n if (!done) completedRef.current = false;\n }, [done, onComplete]);\n\n const total = Math.floor(remaining / 1000);\n const values: Record<CountdownUnit, number> = {\n days: Math.floor(total / 86400),\n hours: Math.floor((total % 86400) / 3600),\n minutes: Math.floor((total % 3600) / 60),\n seconds: total % 60,\n };\n\n return (\n <div\n className={cx(sc(\"countdown\"), plain && sc(\"countdown-plain\"), className)}\n role=\"timer\"\n {...rest}\n >\n {units.map((u) => (\n <div key={u} className={cx(sc(\"countdown-unit\"))}>\n <span className={cx(sc(\"countdown-value\"))}>\n {u === \"days\" ? values[u] : pad(values[u])}\n </span>\n <span className={cx(sc(\"countdown-label\"))}>{u}</span>\n </div>\n ))}\n </div>\n );\n}\n","import * as React from \"react\";\nimport { NumberField as BaseNumberField } from \"@base-ui-components/react/number-field\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\ntype Styled<T extends React.ElementType> = Omit<\n React.ComponentPropsWithoutRef<T>,\n \"className\"\n> & { className?: string };\n\nconst MinusIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" aria-hidden=\"true\">\n <path d=\"M5 12h14\" strokeLinecap=\"round\" />\n </svg>\n);\nconst PlusIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" aria-hidden=\"true\">\n <path d=\"M12 5v14M5 12h14\" strokeLinecap=\"round\" />\n </svg>\n);\n\nexport interface NumberFieldProps extends Styled<typeof BaseNumberField.Root> {\n /** Accessible label for the input. */\n label?: string;\n}\n\n/**\n * Silica NumberField — a stepper input (Base UI: clamping, keyboard, scrub).\n *\n * <NumberField defaultValue={1} min={0} max={10} onValueChange={setQty} />\n */\nexport function NumberField({ className, label, ...rest }: NumberFieldProps) {\n const sc = useSilicaClass();\n return (\n <BaseNumberField.Root className={cx(sc(\"number-field\"), className)} {...rest}>\n <BaseNumberField.Group className={cx(sc(\"number-field-group\"))}>\n <BaseNumberField.Decrement\n className={cx(sc(\"number-field-button\"), sc(\"number-field-decrement\"))}\n >\n <MinusIcon />\n </BaseNumberField.Decrement>\n <BaseNumberField.Input\n aria-label={label}\n className={cx(sc(\"number-field-input\"))}\n />\n <BaseNumberField.Increment\n className={cx(sc(\"number-field-button\"), sc(\"number-field-increment\"))}\n >\n <PlusIcon />\n </BaseNumberField.Increment>\n </BaseNumberField.Group>\n </BaseNumberField.Root>\n );\n}\n","import * as React from \"react\";\nimport { Dialog as BaseDialog } from \"@base-ui-components/react/dialog\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\ntype Styled<T extends React.ElementType> = Omit<\n React.ComponentPropsWithoutRef<T>,\n \"className\"\n> & { className?: string };\n\nconst asRender = (el: React.ReactElement) =>\n el as React.ReactElement<Record<string, unknown>>;\n\nexport type DrawerSide = \"left\" | \"right\" | \"top\" | \"bottom\";\nexport type DrawerProps = React.ComponentProps<typeof BaseDialog.Root>;\n\n/**\n * Silica Drawer — a panel that slides in from an edge (Base UI Dialog behavior).\n *\n * <Drawer>\n * <DrawerTrigger><Button>Menu</Button></DrawerTrigger>\n * <DrawerContent side=\"left\">\n * <DrawerTitle>Navigation</DrawerTitle>\n * <nav>…</nav>\n * <DrawerClose><Button variant=\"ghost\">Close</Button></DrawerClose>\n * </DrawerContent>\n * </Drawer>\n */\nexport const Drawer = BaseDialog.Root;\n\nexport function DrawerTrigger({ children }: { children: React.ReactElement }) {\n return <BaseDialog.Trigger render={asRender(children)} />;\n}\n\nexport function DrawerClose({ children }: { children: React.ReactElement }) {\n return <BaseDialog.Close render={asRender(children)} />;\n}\n\nexport interface DrawerContentProps\n extends Omit<Styled<typeof BaseDialog.Popup>, \"children\"> {\n children?: React.ReactNode;\n /** Edge the drawer slides from. Default `left`. */\n side?: DrawerSide;\n /** Class for the backdrop layer. */\n backdropClassName?: string;\n}\n\n/** Portals + backdrop + the edge-pinned sliding panel in one. */\nexport function DrawerContent({\n side = \"left\",\n className,\n backdropClassName,\n children,\n ...rest\n}: DrawerContentProps) {\n const sc = useSilicaClass();\n return (\n <BaseDialog.Portal>\n <BaseDialog.Backdrop className={cx(sc(\"drawer-backdrop\"), backdropClassName)} />\n <BaseDialog.Popup\n data-side={side}\n className={cx(sc(\"drawer-popup\"), className)}\n {...rest}\n >\n {children}\n </BaseDialog.Popup>\n </BaseDialog.Portal>\n );\n}\n\nexport function DrawerTitle({ className, ...rest }: Styled<typeof BaseDialog.Title>) {\n const sc = useSilicaClass();\n return <BaseDialog.Title className={cx(sc(\"drawer-title\"), className)} {...rest} />;\n}\n\nexport function DrawerDescription({\n className,\n ...rest\n}: Styled<typeof BaseDialog.Description>) {\n const sc = useSilicaClass();\n return (\n <BaseDialog.Description\n className={cx(sc(\"drawer-description\"), className)}\n {...rest}\n />\n );\n}\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport interface ListProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Add a hover highlight to rows (for interactive lists). */\n hover?: boolean;\n}\n\n/**\n * Silica List — a vertical list of rows.\n *\n * <List hover>\n * <ListTitle>Team</ListTitle>\n * <ListRow>\n * <Avatar size=\"sm\">AL</Avatar>\n * <ListColGrow>\n * <div className=\"font-medium\">Ada Lovelace</div>\n * <div className=\"text-sm opacity-60\">Owner</div>\n * </ListColGrow>\n * <Button size=\"sm\" variant=\"ghost\">Manage</Button>\n * </ListRow>\n * </List>\n */\nexport const List = React.forwardRef<HTMLDivElement, ListProps>(\n function List({ hover, className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <div ref={ref} className={cx(sc(\"list\"), hover && sc(\"list-hover\"), className)} {...rest} />\n );\n },\n);\n\nexport type ListRowProps = React.HTMLAttributes<HTMLDivElement>;\nexport const ListRow = React.forwardRef<HTMLDivElement, ListRowProps>(\n function ListRow({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <div ref={ref} className={cx(sc(\"list-row\"), className)} {...rest} />;\n },\n);\n\n/** The cell that should take the remaining width (title/body). */\nexport type ListColGrowProps = React.HTMLAttributes<HTMLDivElement>;\nexport const ListColGrow = React.forwardRef<HTMLDivElement, ListColGrowProps>(\n function ListColGrow({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <div ref={ref} className={cx(sc(\"list-col-grow\"), className)} {...rest} />;\n },\n);\n\nexport type ListTitleProps = React.HTMLAttributes<HTMLDivElement>;\nexport const ListTitle = React.forwardRef<HTMLDivElement, ListTitleProps>(\n function ListTitle({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <div ref={ref} className={cx(sc(\"list-title\"), className)} {...rest} />;\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport type FileInputSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface FileInputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"type\" | \"size\"> {\n size?: FileInputSize;\n}\n\n/**\n * Silica FileInput — a styled `<input type=\"file\">`.\n *\n * <FileInput onChange={(e) => setFile(e.target.files?.[0])} />\n * <FileInput accept=\"image/*\" multiple size=\"lg\" />\n */\nexport const FileInput = React.forwardRef<HTMLInputElement, FileInputProps>(\n function FileInput({ size, className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <input\n ref={ref}\n type=\"file\"\n className={cx(\n sc(\"file-input\"),\n size && size !== \"md\" && sc(`file-input-${size}`),\n className,\n )}\n {...rest}\n />\n );\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor } from \"./lib/tokens\";\n\nexport type DockColor = SilicaColor;\n\nexport interface DockProps extends React.HTMLAttributes<HTMLElement> {\n /** Accent color for the active item. Default primary. */\n color?: DockColor;\n}\n\n/**\n * Silica Dock — a bottom navigation bar of icon+label items.\n *\n * <Dock className=\"fixed inset-x-0 bottom-0\">\n * <DockItem active><HomeIcon /><DockLabel>Home</DockLabel></DockItem>\n * <DockItem><SearchIcon /><DockLabel>Search</DockLabel></DockItem>\n * <DockItem><UserIcon /><DockLabel>Profile</DockLabel></DockItem>\n * </Dock>\n */\nexport const Dock = React.forwardRef<HTMLElement, DockProps>(\n function Dock({ color, className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <nav\n ref={ref}\n className={cx(sc(\"dock\"), color && sc(`dock-${color}`), className)}\n {...rest}\n />\n );\n },\n);\n\nexport interface DockItemProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n /** Highlight this item as the current destination. */\n active?: boolean;\n}\n\nexport const DockItem = React.forwardRef<HTMLButtonElement, DockItemProps>(\n function DockItem({ active, className, type = \"button\", ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <button\n ref={ref}\n type={type}\n aria-current={active ? \"page\" : undefined}\n className={cx(sc(\"dock-item\"), active && sc(\"dock-item-active\"), className)}\n {...rest}\n />\n );\n },\n);\n\nexport type DockLabelProps = React.HTMLAttributes<HTMLSpanElement>;\nexport const DockLabel = React.forwardRef<HTMLSpanElement, DockLabelProps>(\n function DockLabel({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <span ref={ref} className={cx(sc(\"dock-label\"), className)} {...rest} />;\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport interface FieldsetProps\n extends React.FieldsetHTMLAttributes<HTMLFieldSetElement> {}\n\n/**\n * Silica Fieldset — a labeled, vertically-stacked group of form controls.\n *\n * <Fieldset>\n * <FieldsetLegend>Profile</FieldsetLegend>\n * <Input placeholder=\"Name\" />\n * <FieldsetLabel>Your full legal name.</FieldsetLabel>\n * </Fieldset>\n *\n * Renders a native `<fieldset>` (chrome reset in CSS) so `disabled` cascades to\n * every control inside it for free.\n */\nexport const Fieldset = React.forwardRef<HTMLFieldSetElement, FieldsetProps>(\n function Fieldset({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <fieldset ref={ref} className={cx(sc(\"fieldset\"), className)} {...rest} />\n );\n },\n);\n\nexport interface FieldsetLegendProps\n extends React.HTMLAttributes<HTMLLegendElement> {}\n\n/** The group heading. Renders a native `<legend>`. */\nexport const FieldsetLegend = React.forwardRef<\n HTMLLegendElement,\n FieldsetLegendProps\n>(function FieldsetLegend({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <legend ref={ref} className={cx(sc(\"fieldset-legend\"), className)} {...rest} />\n );\n});\n\nexport interface FieldsetLabelProps\n extends React.HTMLAttributes<HTMLSpanElement> {}\n\n/** Muted helper/hint text under a control. */\nexport const FieldsetLabel = React.forwardRef<\n HTMLSpanElement,\n FieldsetLabelProps\n>(function FieldsetLabel({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <span ref={ref} className={cx(sc(\"fieldset-label\"), className)} {...rest} />\n );\n});\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport interface LabelProps\n extends React.LabelHTMLAttributes<HTMLLabelElement> {}\n\n/**\n * Silica Label — a plain, muted caption for a control.\n *\n * <Label htmlFor=\"email\">Email</Label>\n * <Input id=\"email\" />\n */\nexport const Label = React.forwardRef<HTMLLabelElement, LabelProps>(\n function Label({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return <label ref={ref} className={cx(sc(\"label\"), className)} {...rest} />;\n },\n);\n\nexport interface FloatingLabelProps\n extends Omit<React.LabelHTMLAttributes<HTMLLabelElement>, \"children\"> {\n /** Caption text that floats onto the border when the field is focused/filled. */\n label: React.ReactNode;\n /** The control (an `<Input>`, `<Textarea>`, `<select>`, …). */\n children: React.ReactElement<{ placeholder?: string }>;\n}\n\n/**\n * Silica FloatingLabel — a caption that rests inside the field and floats up on\n * focus or when the field has a value.\n *\n * <FloatingLabel label=\"Email\">\n * <Input type=\"email\" />\n * </FloatingLabel>\n *\n * The \"filled\" state relies on `:placeholder-shown`, so the control needs a\n * placeholder — one (a single space) is injected automatically if you don't set\n * your own.\n */\nexport const FloatingLabel = React.forwardRef<\n HTMLLabelElement,\n FloatingLabelProps\n>(function FloatingLabel({ label, children, className, ...rest }, ref) {\n const sc = useSilicaClass();\n // Guarantee a placeholder so the at-rest (non-floated) state resolves.\n const control = React.isValidElement(children)\n ? React.cloneElement(children, {\n placeholder: children.props.placeholder ?? \" \",\n })\n : children;\n return (\n <label\n ref={ref}\n className={cx(sc(\"floating-label\"), className)}\n {...rest}\n >\n {control}\n <span>{label}</span>\n </label>\n );\n});\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport interface ValidatorProps {\n /** A single form control to apply validity-driven coloring to. */\n children: React.ReactElement<{ className?: string }>;\n}\n\n/**\n * Silica Validator — recolors its child control by validity.\n *\n * <Validator><Input required type=\"email\" /></Validator>\n * <ValidatorHint>Enter a valid email address.</ValidatorHint>\n *\n * Adds the `validator` class to the child so the field flips to error/success\n * on `:user-invalid` / `:user-valid` (after the user interacts) or on an\n * explicit `aria-invalid`. For the hint to reveal itself, render `<ValidatorHint>`\n * as the immediate next sibling of the control.\n */\nexport function Validator({ children }: ValidatorProps) {\n const sc = useSilicaClass();\n if (!React.isValidElement(children)) return <>{children}</>;\n return React.cloneElement(children, {\n className: cx(sc(\"validator\"), children.props.className),\n });\n}\n\nexport interface ValidatorHintProps\n extends React.HTMLAttributes<HTMLParagraphElement> {}\n\n/** Error message that stays hidden until the preceding control is invalid. */\nexport const ValidatorHint = React.forwardRef<\n HTMLParagraphElement,\n ValidatorHintProps\n>(function ValidatorHint({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <p ref={ref} className={cx(sc(\"validator-hint\"), className)} {...rest} />\n );\n});\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport interface DiffProps\n extends Omit<React.HTMLAttributes<HTMLElement>, \"children\"> {\n /** The \"before\" layer (clipped from the split leftward). */\n before: React.ReactNode;\n /** The \"after\" layer (revealed to the right of the split). */\n after: React.ReactNode;\n /** Controlled split position, 0–100 (percent from the left edge). */\n position?: number;\n /** Uncontrolled initial split position, 0–100. Default `50`. */\n defaultPosition?: number;\n /** Fires with the new split position (0–100) as it changes. */\n onPositionChange?: (position: number) => void;\n}\n\nfunction DiffArrows() {\n return (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path\n d=\"m9 7-5 5 5 5M15 7l5 5-5 5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\n\nconst clamp = (n: number) => Math.max(0, Math.min(100, n));\n\n/**\n * Silica Diff — a draggable before/after comparison.\n *\n * <Diff\n * before={<img src={before} alt=\"before\" />}\n * after={<img src={after} alt=\"after\" />}\n * className=\"aspect-video\"\n * />\n *\n * Drag the handle (or click anywhere) to move the split; the handle is a slider,\n * so ←/→ nudge it (Shift for larger steps), Home/End snap to the edges.\n */\nexport const Diff = React.forwardRef<HTMLElement, DiffProps>(function Diff(\n {\n before,\n after,\n position,\n defaultPosition = 50,\n onPositionChange,\n className,\n style,\n ...rest\n },\n ref,\n) {\n const sc = useSilicaClass();\n const [internal, setInternal] = React.useState(clamp(defaultPosition));\n const pos = position === undefined ? internal : clamp(position);\n\n const rootRef = React.useRef<HTMLElement | null>(null);\n const dragging = React.useRef(false);\n\n const setRefs = React.useCallback(\n (node: HTMLElement | null) => {\n rootRef.current = node;\n if (typeof ref === \"function\") ref(node);\n else if (ref)\n (ref as React.MutableRefObject<HTMLElement | null>).current = node;\n },\n [ref],\n );\n\n const commit = (next: number) => {\n const clamped = clamp(next);\n if (position === undefined) setInternal(clamped);\n onPositionChange?.(clamped);\n };\n\n const positionFromClientX = (clientX: number) => {\n const el = rootRef.current;\n if (!el) return pos;\n const rect = el.getBoundingClientRect();\n if (rect.width === 0) return pos;\n return ((clientX - rect.left) / rect.width) * 100;\n };\n\n const onPointerDown = (e: React.PointerEvent<HTMLElement>) => {\n dragging.current = true;\n e.currentTarget.setPointerCapture?.(e.pointerId);\n commit(positionFromClientX(e.clientX));\n };\n const onPointerMove = (e: React.PointerEvent<HTMLElement>) => {\n if (!dragging.current) return;\n commit(positionFromClientX(e.clientX));\n };\n const endDrag = (e: React.PointerEvent<HTMLElement>) => {\n dragging.current = false;\n e.currentTarget.releasePointerCapture?.(e.pointerId);\n };\n\n const onKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n const step = e.shiftKey ? 10 : 2;\n if (e.key === \"ArrowLeft\") commit(pos - step);\n else if (e.key === \"ArrowRight\") commit(pos + step);\n else if (e.key === \"Home\") commit(0);\n else if (e.key === \"End\") commit(100);\n else return;\n e.preventDefault();\n };\n\n const styleVars = {\n ...style,\n [\"--diff-pos\"]: `${pos}%`,\n } as React.CSSProperties;\n\n return (\n <figure\n ref={setRefs}\n className={cx(sc(\"diff\"), className)}\n style={styleVars}\n onPointerDown={onPointerDown}\n onPointerMove={onPointerMove}\n onPointerUp={endDrag}\n onPointerCancel={endDrag}\n {...rest}\n >\n <div className={cx(sc(\"diff-item-1\"))}>{before}</div>\n <div className={cx(sc(\"diff-item-2\"))}>{after}</div>\n <div\n className={cx(sc(\"diff-resizer\"))}\n role=\"slider\"\n tabIndex={0}\n aria-label=\"Comparison position\"\n aria-valuemin={0}\n aria-valuemax={100}\n aria-valuenow={Math.round(pos)}\n onKeyDown={onKeyDown}\n >\n <span className={cx(sc(\"diff-grip\"))}>\n <DiffArrows />\n </span>\n </div>\n </figure>\n );\n});\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport type MaskVariant =\n | \"squircle\"\n | \"heart\"\n | \"circle\"\n | \"hexagon\"\n | \"hexagon-2\"\n | \"triangle\"\n | \"triangle-2\"\n | \"triangle-3\"\n | \"triangle-4\"\n | \"diamond\"\n | \"pentagon\"\n | \"star\"\n | \"star-2\"\n | \"decagon\"\n | \"parallelogram\";\n\nexport interface MaskProps extends React.HTMLAttributes<HTMLDivElement> {\n /** The shape to clip to. */\n variant: MaskVariant;\n}\n\n/**\n * Silica Mask — clips its content (usually an `<img>`) to a shape.\n *\n * <Mask variant=\"hexagon\" className=\"w-24 h-24\">\n * <img src={photo} alt=\"\" className=\"w-full h-full object-cover\" />\n * </Mask>\n *\n * Give the mask a size (via `className`/`style`); the shape scales to fill it.\n * You can also apply the classes directly to an `<img>` if you prefer.\n */\nexport const Mask = React.forwardRef<HTMLDivElement, MaskProps>(function Mask(\n { variant, className, ...rest },\n ref,\n) {\n const sc = useSilicaClass();\n return (\n <div\n ref={ref}\n className={cx(sc(\"mask\"), sc(`mask-${variant}`), className)}\n {...rest}\n />\n );\n});\n","import * as React from \"react\";\nimport { Meter as BaseMeter } from \"@base-ui-components/react/meter\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor, SilicaSize } from \"./lib/tokens\";\n\nexport type MeterColor = SilicaColor;\nexport type MeterSize = SilicaSize;\n\nexport interface MeterProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"color\"> {\n /** The current reading. */\n value: number;\n /** Range floor. Default `0`. */\n min?: number;\n /** Range ceiling. Default `100`. */\n max?: number;\n /** Fill color; maps to `meter-<color>`. */\n color?: MeterColor;\n /** Track height; default `md`. */\n size?: MeterSize;\n /** Optional label shown in the header row. */\n label?: React.ReactNode;\n /** Show the formatted value in the header row. Default `false`. */\n showValue?: boolean;\n /** `Intl.NumberFormat` options for the displayed value. */\n format?: Intl.NumberFormatOptions;\n}\n\n/**\n * Silica Meter — a static measurement within a known range (disk usage, score,\n * capacity). Behavior/accessibility from Base UI's Meter; look from Silica.\n *\n * <Meter value={72} label=\"Storage\" showValue color=\"warning\" />\n */\nexport const Meter = React.forwardRef<HTMLDivElement, MeterProps>(function Meter(\n {\n value,\n min = 0,\n max = 100,\n color,\n size = \"md\",\n label,\n showValue = false,\n format,\n className,\n ...rest\n },\n ref,\n) {\n const sc = useSilicaClass();\n const showHeader = label != null || showValue;\n return (\n <BaseMeter.Root\n ref={ref}\n value={value}\n min={min}\n max={max}\n format={format}\n className={cx(\n sc(\"meter\"),\n color && sc(`meter-${color}`),\n size !== \"md\" && sc(`meter-${size}`),\n className,\n )}\n {...rest}\n >\n {showHeader && (\n <div className={cx(sc(\"meter-header\"))}>\n {label != null && (\n <BaseMeter.Label className={cx(sc(\"meter-label\"))}>\n {label}\n </BaseMeter.Label>\n )}\n {showValue && <BaseMeter.Value className={cx(sc(\"meter-value\"))} />}\n </div>\n )}\n <BaseMeter.Track className={cx(sc(\"meter-track\"))}>\n <BaseMeter.Indicator className={cx(sc(\"meter-indicator\"))} />\n </BaseMeter.Track>\n </BaseMeter.Root>\n );\n});\n","import * as React from \"react\";\nimport { ScrollArea as BaseScrollArea } from \"@base-ui-components/react/scroll-area\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport type ScrollAreaOrientation = \"vertical\" | \"horizontal\" | \"both\";\n\nexport interface ScrollAreaProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Which scrollbars to render. Default `vertical`. */\n orientation?: ScrollAreaOrientation;\n}\n\n/**\n * Silica ScrollArea — a panel with custom overlay scrollbars.\n *\n * <ScrollArea className=\"h-64 w-72\">\n * <div className=\"p-4\">…long content…</div>\n * </ScrollArea>\n *\n * Give it a bounded size (via `className`/`style`); the content scrolls inside\n * and the overlay scrollbars fade in on hover. Use `orientation=\"both\"` for a\n * two-axis panel.\n */\nexport const ScrollArea = React.forwardRef<HTMLDivElement, ScrollAreaProps>(\n function ScrollArea({ orientation = \"vertical\", className, children, ...rest }, ref) {\n const sc = useSilicaClass();\n const showV = orientation === \"vertical\" || orientation === \"both\";\n const showH = orientation === \"horizontal\" || orientation === \"both\";\n return (\n <BaseScrollArea.Root\n ref={ref}\n className={cx(sc(\"scroll-area\"), className)}\n {...rest}\n >\n <BaseScrollArea.Viewport className={cx(sc(\"scroll-area-viewport\"))}>\n <BaseScrollArea.Content className={cx(sc(\"scroll-area-content\"))}>\n {children}\n </BaseScrollArea.Content>\n </BaseScrollArea.Viewport>\n {showV && (\n <BaseScrollArea.Scrollbar\n orientation=\"vertical\"\n className={cx(sc(\"scroll-area-scrollbar\"))}\n >\n <BaseScrollArea.Thumb className={cx(sc(\"scroll-area-thumb\"))} />\n </BaseScrollArea.Scrollbar>\n )}\n {showH && (\n <BaseScrollArea.Scrollbar\n orientation=\"horizontal\"\n className={cx(sc(\"scroll-area-scrollbar\"))}\n >\n <BaseScrollArea.Thumb className={cx(sc(\"scroll-area-thumb\"))} />\n </BaseScrollArea.Scrollbar>\n )}\n {orientation === \"both\" && (\n <BaseScrollArea.Corner className={cx(sc(\"scroll-area-corner\"))} />\n )}\n </BaseScrollArea.Root>\n );\n },\n);\n","import * as React from \"react\";\nimport { PreviewCard as BasePreviewCard } from \"@base-ui-components/react/preview-card\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\n// Derive side/align straight from Base UI so they never drift.\ntype PositionerProps = React.ComponentProps<typeof BasePreviewCard.Positioner>;\nexport type PreviewCardSide = NonNullable<PositionerProps[\"side\"]>;\nexport type PreviewCardAlign = NonNullable<PositionerProps[\"align\"]>;\n\nexport interface PreviewCardProps {\n /** The trigger (usually a link). Base UI merges hover/focus behavior onto it. */\n children: React.ReactElement;\n /** The card body shown on hover/focus. */\n content: React.ReactNode;\n /** Preferred side. Default `bottom` (flips to avoid collisions). */\n side?: PreviewCardSide;\n /** Alignment along that side. Default `center`. */\n align?: PreviewCardAlign;\n /** Gap between trigger and card, in px. Default `8`. */\n sideOffset?: number;\n /** Hover-open delay in ms. */\n delay?: number;\n /** Close delay in ms. */\n closeDelay?: number;\n /** Controlled open state. */\n open?: boolean;\n /** Uncontrolled initial open state. */\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n /** Show the little arrow. Default `false`. */\n arrow?: boolean;\n /** Extra class on the card surface. */\n className?: string;\n}\n\n/**\n * Silica PreviewCard — a hover/focus link preview (hovercard). Behavior from\n * Base UI, look from Silica's `.preview-card` CSS.\n *\n * <PreviewCard content={<UserPreview user={u} />}>\n * <Link href={u.url}>@{u.handle}</Link>\n * </PreviewCard>\n */\nexport function PreviewCard({\n children,\n content,\n side = \"bottom\",\n align = \"center\",\n sideOffset = 8,\n delay,\n closeDelay,\n open,\n defaultOpen,\n onOpenChange,\n arrow = false,\n className,\n}: PreviewCardProps) {\n const sc = useSilicaClass();\n return (\n <BasePreviewCard.Root\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n >\n <BasePreviewCard.Trigger\n // children is any valid element; Base UI's render wants its props typed\n // as an index — a safe cast, not a behavior change.\n render={children as React.ReactElement<Record<string, unknown>>}\n delay={delay}\n closeDelay={closeDelay}\n />\n <BasePreviewCard.Portal>\n <BasePreviewCard.Positioner\n side={side}\n align={align}\n sideOffset={sideOffset}\n >\n <BasePreviewCard.Popup className={cx(sc(\"preview-card\"), className)}>\n {arrow && (\n <BasePreviewCard.Arrow className={cx(sc(\"preview-card-arrow\"))} />\n )}\n {content}\n </BasePreviewCard.Popup>\n </BasePreviewCard.Positioner>\n </BasePreviewCard.Portal>\n </BasePreviewCard.Root>\n );\n}\n","import * as React from \"react\";\nimport { Toolbar as BaseToolbar } from \"@base-ui-components/react/toolbar\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\n// Narrow Base UI's `className` (which also allows a function) to a string so it\n// composes with cx().\ntype Styled<T extends React.ElementType> = Omit<\n React.ComponentPropsWithoutRef<T>,\n \"className\"\n> & { className?: string };\n\nexport type ToolbarProps = Styled<typeof BaseToolbar.Root>;\nexport type ToolbarButtonProps = Styled<typeof BaseToolbar.Button>;\nexport type ToolbarGroupProps = Styled<typeof BaseToolbar.Group>;\nexport type ToolbarLinkProps = Styled<typeof BaseToolbar.Link>;\nexport type ToolbarSeparatorProps = Styled<typeof BaseToolbar.Separator>;\n\n/**\n * Silica Toolbar — a group of controls with roving arrow-key focus.\n *\n * <Toolbar aria-label=\"Formatting\">\n * <ToolbarButton><BoldIcon /></ToolbarButton>\n * <ToolbarButton><ItalicIcon /></ToolbarButton>\n * <ToolbarSeparator />\n * <ToolbarLink href=\"/help\">Help</ToolbarLink>\n * </Toolbar>\n */\nexport const Toolbar = React.forwardRef<HTMLDivElement, ToolbarProps>(\n function Toolbar({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <BaseToolbar.Root\n ref={ref}\n className={cx(sc(\"toolbar\"), className)}\n {...rest}\n />\n );\n },\n);\n\nexport const ToolbarButton = React.forwardRef<\n HTMLButtonElement,\n ToolbarButtonProps\n>(function ToolbarButton({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <BaseToolbar.Button\n ref={ref}\n className={cx(sc(\"toolbar-button\"), className)}\n {...rest}\n />\n );\n});\n\nexport const ToolbarGroup = React.forwardRef<HTMLDivElement, ToolbarGroupProps>(\n function ToolbarGroup({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <BaseToolbar.Group\n ref={ref}\n className={cx(sc(\"toolbar-group\"), className)}\n {...rest}\n />\n );\n },\n);\n\nexport const ToolbarLink = React.forwardRef<HTMLAnchorElement, ToolbarLinkProps>(\n function ToolbarLink({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <BaseToolbar.Link\n ref={ref}\n className={cx(sc(\"toolbar-link\"), className)}\n {...rest}\n />\n );\n },\n);\n\nexport const ToolbarSeparator = React.forwardRef<\n HTMLDivElement,\n ToolbarSeparatorProps\n>(function ToolbarSeparator({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <BaseToolbar.Separator\n ref={ref}\n className={cx(sc(\"toolbar-separator\"), className)}\n {...rest}\n />\n );\n});\n","import * as React from \"react\";\nimport { Button } from \"./button\";\nimport type { ButtonColor, ButtonVariant } from \"./button\";\n\nexport interface ThemeControllerProps {\n /** The themes to cycle through. Default `[\"light\", \"dark\"]`. */\n themes?: string[];\n /** Controlled current theme. */\n value?: string;\n /** Uncontrolled initial theme (falls back to stored value, then the target's\n * current `data-theme`, then the first theme). */\n defaultValue?: string;\n /** Called with the new theme when it changes. */\n onChange?: (theme: string) => void;\n /** Element to set `data-theme` on. Default `document.documentElement`. */\n target?: HTMLElement | null | (() => HTMLElement | null);\n /** localStorage key for persistence; `null` disables it. Default `\"silica-theme\"`. */\n storageKey?: string | null;\n /** Show the current theme name next to the icon. */\n labels?: boolean;\n /** Button variant. Default `ghost`. */\n variant?: ButtonVariant;\n /** Button color. Default `neutral`. */\n color?: ButtonColor;\n className?: string;\n \"aria-label\"?: string;\n}\n\nfunction SunIcon() {\n return (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <circle cx=\"12\" cy=\"12\" r=\"4\" />\n <path\n d=\"M12 2v2M12 20v2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M2 12h2M20 12h2M4.9 19.1l1.4-1.4M17.7 6.3l1.4-1.4\"\n strokeLinecap=\"round\"\n />\n </svg>\n );\n}\n\nfunction MoonIcon() {\n return (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path\n d=\"M21 12.8A9 9 0 1 1 11.2 3a7 7 0 0 0 9.8 9.8Z\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\n\nfunction PaletteIcon() {\n return (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <circle cx=\"13.5\" cy=\"6.5\" r=\"1.5\" fill=\"currentColor\" stroke=\"none\" />\n <circle cx=\"17.5\" cy=\"10.5\" r=\"1.5\" fill=\"currentColor\" stroke=\"none\" />\n <circle cx=\"6.5\" cy=\"12.5\" r=\"1.5\" fill=\"currentColor\" stroke=\"none\" />\n <path d=\"M12 2a10 10 0 1 0 0 20c1.1 0 2-.9 2-2 0-.5-.2-1-.5-1.3-.3-.4-.5-.8-.5-1.2 0-1 .8-1.5 1.8-1.5H16a6 6 0 0 0 6-6c0-4.4-4.5-8-10-8Z\" />\n </svg>\n );\n}\n\n/**\n * Silica ThemeController — a control that switches the active `data-theme`.\n *\n * <ThemeController /> // light ⇄ dark toggle\n * <ThemeController themes={[\"light\",\"dark\",\"dim\"]} labels />\n *\n * Applies the theme to `document.documentElement` (or a `target`) and persists\n * it to localStorage. Cycles to the next theme on click; a plain light/dark pair\n * shows a sun/moon toggle.\n */\nexport function ThemeController({\n themes = [\"light\", \"dark\"],\n value,\n defaultValue,\n onChange,\n target,\n storageKey = \"silica-theme\",\n labels = false,\n variant = \"ghost\",\n color = \"neutral\",\n className,\n \"aria-label\": ariaLabel,\n}: ThemeControllerProps) {\n const getTarget = React.useCallback((): HTMLElement | null => {\n if (typeof target === \"function\") return target();\n if (target) return target;\n return typeof document !== \"undefined\" ? document.documentElement : null;\n }, [target]);\n\n const resolveInitial = (): string => {\n if (value) return value;\n if (typeof window !== \"undefined\") {\n if (storageKey) {\n const stored = window.localStorage.getItem(storageKey);\n if (stored && themes.includes(stored)) return stored;\n }\n const attr = getTarget()?.dataset.theme;\n if (attr && themes.includes(attr)) return attr;\n }\n return defaultValue ?? themes[0] ?? \"light\";\n };\n\n const [internal, setInternal] = React.useState<string>(resolveInitial);\n const current = value ?? internal;\n\n // Keep the target in sync with the current theme.\n React.useEffect(() => {\n const el = getTarget();\n if (el) el.dataset.theme = current;\n }, [current, getTarget]);\n\n const apply = (next: string) => {\n if (value === undefined) setInternal(next);\n const el = getTarget();\n if (el) el.dataset.theme = next;\n if (storageKey && typeof window !== \"undefined\") {\n window.localStorage.setItem(storageKey, next);\n }\n onChange?.(next);\n };\n\n const cycle = () => {\n const i = themes.indexOf(current);\n const next = themes[(i + 1) % themes.length] ?? themes[0] ?? current;\n apply(next);\n };\n\n const isLightDarkPair =\n themes.length === 2 &&\n themes.includes(\"light\") &&\n themes.includes(\"dark\");\n const icon = isLightDarkPair ? (\n current === \"dark\" ? (\n <SunIcon />\n ) : (\n <MoonIcon />\n )\n ) : (\n <PaletteIcon />\n );\n\n return (\n <Button\n type=\"button\"\n variant={variant}\n color={color}\n onClick={cycle}\n className={className}\n aria-label={ariaLabel ?? `Switch theme (current: ${current})`}\n title={`Theme: ${current}`}\n >\n {icon}\n {labels && <span className=\"capitalize\">{current}</span>}\n </Button>\n );\n}\n","import * as React from \"react\";\nimport { NavigationMenu as BaseNav } from \"@base-ui-components/react/navigation-menu\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\ntype Styled<T extends React.ElementType> = Omit<\n React.ComponentPropsWithoutRef<T>,\n \"className\"\n> & { className?: string };\n\ntype PositionerProps = React.ComponentProps<typeof BaseNav.Positioner>;\nexport type NavigationMenuSide = NonNullable<PositionerProps[\"side\"]>;\nexport type NavigationMenuAlign = NonNullable<PositionerProps[\"align\"]>;\n\nexport interface NavigationMenuProps\n extends Omit<Styled<typeof BaseNav.Root>, \"children\"> {\n children?: React.ReactNode;\n /** Preferred side for the dropdown panel. Default `bottom`. */\n side?: NavigationMenuSide;\n /** Alignment. Default `center`. */\n align?: NavigationMenuAlign;\n /** Gap between the bar and the panel, in px. Default `8`. */\n sideOffset?: number;\n}\n\nfunction ChevronDown() {\n return (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path d=\"m6 9 6 6 6-6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n );\n}\n\n/**\n * Silica NavigationMenu — a site-nav bar with rich dropdown panels (mega menu).\n * Behavior from Base UI (shared animated viewport that resizes between panels);\n * look from Silica.\n *\n * <NavigationMenu>\n * <NavigationMenuItem>\n * <NavigationMenuTrigger>Products</NavigationMenuTrigger>\n * <NavigationMenuContent>\n * <ul className=\"grid gap-1\">…</ul>\n * </NavigationMenuContent>\n * </NavigationMenuItem>\n * <NavigationMenuItem>\n * <NavigationMenuLink href=\"/pricing\">Pricing</NavigationMenuLink>\n * </NavigationMenuItem>\n * </NavigationMenu>\n */\nexport function NavigationMenu({\n children,\n className,\n side = \"bottom\",\n align = \"center\",\n sideOffset = 8,\n ...rest\n}: NavigationMenuProps) {\n const sc = useSilicaClass();\n return (\n <BaseNav.Root className={cx(sc(\"navigation-menu\"), className)} {...rest}>\n <BaseNav.List className={cx(sc(\"navigation-menu-list\"))}>\n {children}\n </BaseNav.List>\n <BaseNav.Portal>\n <BaseNav.Positioner\n className={cx(sc(\"navigation-menu-positioner\"))}\n side={side}\n align={align}\n sideOffset={sideOffset}\n >\n <BaseNav.Popup className={cx(sc(\"navigation-menu-popup\"))}>\n <BaseNav.Viewport\n className={cx(sc(\"navigation-menu-viewport\"))}\n />\n </BaseNav.Popup>\n </BaseNav.Positioner>\n </BaseNav.Portal>\n </BaseNav.Root>\n );\n}\n\nexport type NavigationMenuItemProps = Styled<typeof BaseNav.Item>;\n\n/** A bar item — holds either a Trigger + Content, or a Link. */\nexport const NavigationMenuItem = React.forwardRef<\n React.ComponentRef<typeof BaseNav.Item>,\n NavigationMenuItemProps\n>(function NavigationMenuItem({ className, ...rest }, ref) {\n return <BaseNav.Item ref={ref} className={className} {...rest} />;\n});\n\nexport type NavigationMenuTriggerProps = Styled<typeof BaseNav.Trigger>;\n\n/** Opens this item's panel; carries an auto-rotating chevron. */\nexport const NavigationMenuTrigger = React.forwardRef<\n HTMLButtonElement,\n NavigationMenuTriggerProps\n>(function NavigationMenuTrigger({ className, children, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <BaseNav.Trigger\n ref={ref}\n className={cx(sc(\"navigation-menu-trigger\"), className)}\n {...rest}\n >\n {children}\n <BaseNav.Icon className={cx(sc(\"navigation-menu-icon\"))}>\n <ChevronDown />\n </BaseNav.Icon>\n </BaseNav.Trigger>\n );\n});\n\nexport type NavigationMenuContentProps = Styled<typeof BaseNav.Content>;\n\n/** The dropdown panel for an item (teleported into the shared viewport). */\nexport const NavigationMenuContent = React.forwardRef<\n HTMLDivElement,\n NavigationMenuContentProps\n>(function NavigationMenuContent({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <BaseNav.Content\n ref={ref}\n className={cx(sc(\"navigation-menu-content\"), className)}\n {...rest}\n />\n );\n});\n\nexport type NavigationMenuLinkProps = Styled<typeof BaseNav.Link>;\n\n/** A plain bar link (no panel). */\nexport const NavigationMenuLink = React.forwardRef<\n HTMLAnchorElement,\n NavigationMenuLinkProps\n>(function NavigationMenuLink({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <BaseNav.Link\n ref={ref}\n className={cx(sc(\"navigation-menu-link\"), className)}\n {...rest}\n />\n );\n});\n","import * as React from \"react\";\nimport { Menubar as BaseMenubar } from \"@base-ui-components/react/menubar\";\nimport { Menu as BaseMenu } from \"@base-ui-components/react/menu\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\ntype Styled<T extends React.ElementType> = Omit<\n React.ComponentPropsWithoutRef<T>,\n \"className\"\n> & { className?: string };\n\ntype PositionerProps = React.ComponentProps<typeof BaseMenu.Positioner>;\nexport type MenubarSide = NonNullable<PositionerProps[\"side\"]>;\nexport type MenubarAlign = NonNullable<PositionerProps[\"align\"]>;\n\nexport type MenubarProps = Styled<typeof BaseMenubar>;\n\n/**\n * Silica Menubar — a bar of menus (File / Edit / View …). Behavior from Base UI\n * (arrow between menus, hover to switch once open, roving focus). Each menu is a\n * `MenubarMenu`; its popup reuses the shared `.dropdown*` surface.\n *\n * <Menubar>\n * <MenubarMenu>\n * <MenubarTrigger>File</MenubarTrigger>\n * <MenubarContent>\n * <MenubarItem>New</MenubarItem>\n * <MenubarSeparator />\n * <MenubarItem>Exit</MenubarItem>\n * </MenubarContent>\n * </MenubarMenu>\n * </Menubar>\n */\nexport const Menubar = React.forwardRef<HTMLDivElement, MenubarProps>(\n function Menubar({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <BaseMenubar ref={ref} className={cx(sc(\"menubar\"), className)} {...rest} />\n );\n },\n);\n\n/** A single menu within the bar. */\nexport const MenubarMenu = BaseMenu.Root;\n\nexport type MenubarTriggerProps = Styled<typeof BaseMenu.Trigger>;\n\nexport const MenubarTrigger = React.forwardRef<\n HTMLButtonElement,\n MenubarTriggerProps\n>(function MenubarTrigger({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <BaseMenu.Trigger\n ref={ref}\n className={cx(sc(\"menubar-trigger\"), className)}\n {...rest}\n />\n );\n});\n\nexport interface MenubarContentProps\n extends Omit<Styled<typeof BaseMenu.Popup>, \"children\"> {\n children?: React.ReactNode;\n side?: MenubarSide;\n align?: MenubarAlign;\n sideOffset?: number;\n}\n\n/** Portal + positioner + the menu popup (shared dropdown surface). */\nexport function MenubarContent({\n className,\n children,\n side = \"bottom\",\n align = \"start\",\n sideOffset = 6,\n ...rest\n}: MenubarContentProps) {\n const sc = useSilicaClass();\n return (\n <BaseMenu.Portal>\n <BaseMenu.Positioner side={side} align={align} sideOffset={sideOffset}>\n <BaseMenu.Popup className={cx(sc(\"dropdown\"), className)} {...rest}>\n {children}\n </BaseMenu.Popup>\n </BaseMenu.Positioner>\n </BaseMenu.Portal>\n );\n}\n\nexport function MenubarItem({\n className,\n ...rest\n}: Styled<typeof BaseMenu.Item>) {\n const sc = useSilicaClass();\n return (\n <BaseMenu.Item className={cx(sc(\"dropdown-item\"), className)} {...rest} />\n );\n}\n\nexport function MenubarSeparator({\n className,\n ...rest\n}: Styled<typeof BaseMenu.Separator>) {\n const sc = useSilicaClass();\n return (\n <BaseMenu.Separator\n className={cx(sc(\"dropdown-separator\"), className)}\n {...rest}\n />\n );\n}\n\nexport function MenubarGroup(\n props: React.ComponentProps<typeof BaseMenu.Group>,\n) {\n return <BaseMenu.Group {...props} />;\n}\n\nexport function MenubarLabel({\n className,\n ...rest\n}: Styled<typeof BaseMenu.GroupLabel>) {\n const sc = useSilicaClass();\n return (\n <BaseMenu.GroupLabel\n className={cx(sc(\"dropdown-label\"), className)}\n {...rest}\n />\n );\n}\n","import * as React from \"react\";\nimport { ContextMenu as BaseContextMenu } from \"@base-ui-components/react/context-menu\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\ntype Styled<T extends React.ElementType> = Omit<\n React.ComponentPropsWithoutRef<T>,\n \"className\"\n> & { className?: string };\n\nexport type ContextMenuProps = React.ComponentProps<typeof BaseContextMenu.Root>;\n\n/**\n * Silica ContextMenu — a right-click menu. Behavior from Base UI (opens at the\n * pointer, roving focus, typeahead, dismissal); its popup reuses the shared\n * `.dropdown*` surface.\n *\n * <ContextMenu>\n * <ContextMenuTrigger className=\"grid h-40 place-items-center rounded-box border border-dashed\">\n * Right-click here\n * </ContextMenuTrigger>\n * <ContextMenuContent>\n * <ContextMenuGroup>\n * <ContextMenuLabel>Actions</ContextMenuLabel>\n * <ContextMenuItem>Cut</ContextMenuItem>\n * <ContextMenuItem>Copy</ContextMenuItem>\n * </ContextMenuGroup>\n * <ContextMenuSeparator />\n * <ContextMenuItem disabled>Paste</ContextMenuItem>\n * </ContextMenuContent>\n * </ContextMenu>\n */\nexport const ContextMenu = BaseContextMenu.Root;\n\nexport type ContextMenuTriggerProps = Styled<typeof BaseContextMenu.Trigger>;\n\n/** The right-click area. */\nexport const ContextMenuTrigger = React.forwardRef<\n HTMLDivElement,\n ContextMenuTriggerProps\n>(function ContextMenuTrigger({ className, ...rest }, ref) {\n return <BaseContextMenu.Trigger ref={ref} className={className} {...rest} />;\n});\n\nexport interface ContextMenuContentProps\n extends Omit<Styled<typeof BaseContextMenu.Popup>, \"children\"> {\n children?: React.ReactNode;\n}\n\n/** Portal + positioner + the menu popup (shared dropdown surface). */\nexport function ContextMenuContent({\n className,\n children,\n ...rest\n}: ContextMenuContentProps) {\n const sc = useSilicaClass();\n return (\n <BaseContextMenu.Portal>\n <BaseContextMenu.Positioner>\n <BaseContextMenu.Popup className={cx(sc(\"dropdown\"), className)} {...rest}>\n {children}\n </BaseContextMenu.Popup>\n </BaseContextMenu.Positioner>\n </BaseContextMenu.Portal>\n );\n}\n\nexport function ContextMenuItem({\n className,\n ...rest\n}: Styled<typeof BaseContextMenu.Item>) {\n const sc = useSilicaClass();\n return (\n <BaseContextMenu.Item\n className={cx(sc(\"dropdown-item\"), className)}\n {...rest}\n />\n );\n}\n\nexport function ContextMenuSeparator({\n className,\n ...rest\n}: Styled<typeof BaseContextMenu.Separator>) {\n const sc = useSilicaClass();\n return (\n <BaseContextMenu.Separator\n className={cx(sc(\"dropdown-separator\"), className)}\n {...rest}\n />\n );\n}\n\nexport function ContextMenuGroup(\n props: React.ComponentProps<typeof BaseContextMenu.Group>,\n) {\n return <BaseContextMenu.Group {...props} />;\n}\n\nexport function ContextMenuLabel({\n className,\n ...rest\n}: Styled<typeof BaseContextMenu.GroupLabel>) {\n const sc = useSilicaClass();\n return (\n <BaseContextMenu.GroupLabel\n className={cx(sc(\"dropdown-label\"), className)}\n {...rest}\n />\n );\n}\n","import * as React from \"react\";\nimport { ToggleGroup as BaseToggleGroup } from \"@base-ui-components/react/toggle-group\";\nimport { Toggle as BaseToggle } from \"@base-ui-components/react/toggle\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\ntype Styled<T extends React.ElementType> = Omit<\n React.ComponentPropsWithoutRef<T>,\n \"className\"\n> & { className?: string };\n\nexport type ToggleGroupProps = Styled<typeof BaseToggleGroup>;\nexport type ToggleGroupItemProps = Styled<typeof BaseToggle>;\n\n/**\n * Silica ToggleGroup — a segmented control (single- or multi-select). Behavior\n * from Base UI (roving focus, pressed state); look from Silica. This is the\n * button-based control — for an on/off switch use `Toggle`.\n *\n * <ToggleGroup defaultValue={[\"list\"]}>\n * <ToggleGroupItem value=\"list\">List</ToggleGroupItem>\n * <ToggleGroupItem value=\"grid\">Grid</ToggleGroupItem>\n * </ToggleGroup>\n */\nexport const ToggleGroup = React.forwardRef<HTMLDivElement, ToggleGroupProps>(\n function ToggleGroup({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <BaseToggleGroup\n ref={ref}\n className={cx(sc(\"toggle-group\"), className)}\n {...rest}\n />\n );\n },\n);\n\n/** One selectable button within a ToggleGroup. */\nexport const ToggleGroupItem = React.forwardRef<\n HTMLButtonElement,\n ToggleGroupItemProps\n>(function ToggleGroupItem({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <BaseToggle\n ref={ref}\n className={cx(sc(\"toggle-group-item\"), className)}\n {...rest}\n />\n );\n});\n","import * as React from \"react\";\nimport { Field as BaseField } from \"@base-ui-components/react/field\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\ntype Styled<T extends React.ElementType> = Omit<\n React.ComponentPropsWithoutRef<T>,\n \"className\"\n> & { className?: string };\n\nexport type FieldProps = Styled<typeof BaseField.Root>;\nexport type FieldLabelProps = Styled<typeof BaseField.Label>;\nexport type FieldControlProps = Styled<typeof BaseField.Control>;\nexport type FieldDescriptionProps = Styled<typeof BaseField.Description>;\nexport type FieldErrorProps = Styled<typeof BaseField.Error>;\n\n/**\n * Silica Field — an accessible form field. Base UI wires the label, control,\n * description, and error together (ids, aria, validity tracking); Silica styles\n * them. Wrap any Silica control.\n *\n * <Field name=\"email\">\n * <FieldLabel>Email</FieldLabel>\n * <FieldControl type=\"email\" required placeholder=\"you@example.com\" />\n * <FieldDescription>We'll never share it.</FieldDescription>\n * <FieldError />\n * </Field>\n *\n * For a non-input control, pass it via `render`:\n * <FieldControl render={<Textarea />} />\n */\nexport const Field = React.forwardRef<HTMLDivElement, FieldProps>(function Field(\n { className, ...rest },\n ref,\n) {\n const sc = useSilicaClass();\n return (\n <BaseField.Root ref={ref} className={cx(sc(\"field\"), className)} {...rest} />\n );\n});\n\nexport const FieldLabel = React.forwardRef<HTMLLabelElement, FieldLabelProps>(\n function FieldLabel({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <BaseField.Label\n ref={ref}\n className={cx(sc(\"field-label\"), className)}\n {...rest}\n />\n );\n },\n);\n\n/**\n * The control. Defaults to a native input styled as a Silica `.input`; when you\n * pass `render` (a Textarea/Select/etc.), it carries its own styling instead.\n */\nexport const FieldControl = React.forwardRef<\n HTMLInputElement,\n FieldControlProps\n>(function FieldControl({ className, render, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <BaseField.Control\n ref={ref}\n render={render}\n className={cx(render ? undefined : sc(\"input\"), className)}\n {...rest}\n />\n );\n});\n\nexport const FieldDescription = React.forwardRef<\n HTMLParagraphElement,\n FieldDescriptionProps\n>(function FieldDescription({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <BaseField.Description\n ref={ref}\n className={cx(sc(\"field-description\"), className)}\n {...rest}\n />\n );\n});\n\n/** Error message; renders only when the field is invalid. */\nexport const FieldError = React.forwardRef<HTMLParagraphElement, FieldErrorProps>(\n function FieldError({ className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <BaseField.Error\n ref={ref}\n className={cx(sc(\"field-error\"), className)}\n {...rest}\n />\n );\n },\n);\n","import * as React from \"react\";\nimport { Form as BaseForm } from \"@base-ui-components/react/form\";\n\nexport type FormProps = React.ComponentPropsWithoutRef<typeof BaseForm>;\n\n/**\n * Silica Form — a `<form>` that coordinates its Fields' validation. Behavior\n * from Base UI: it runs each Field's validation on submit, focuses the first\n * invalid control, and accepts server-returned `errors` keyed by field `name`.\n * Presentational only otherwise — lay it out with `Field`s and utilities.\n *\n * <Form errors={serverErrors} onSubmit={…}>\n * <Field name=\"email\">…</Field>\n * <Button type=\"submit\">Save</Button>\n * </Form>\n */\nexport const Form = React.forwardRef<HTMLFormElement, FormProps>(function Form(\n props,\n ref,\n) {\n return <BaseForm ref={ref} {...props} />;\n});\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor, SilicaSize } from \"./lib/tokens\";\n\ninterface RadioGroupContextValue {\n name: string;\n value: string | undefined;\n select: (value: string) => void;\n disabled?: boolean;\n color?: SilicaColor;\n size?: SilicaSize;\n}\n\nconst RadioGroupContext = React.createContext<RadioGroupContextValue | null>(\n null,\n);\n\nexport type RadioGroupOrientation = \"vertical\" | \"horizontal\";\n\nexport interface RadioGroupProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\" | \"defaultValue\"> {\n /** Controlled selected value. */\n value?: string;\n /** Uncontrolled initial value. */\n defaultValue?: string;\n /** Fires with the newly-selected value. */\n onValueChange?: (value: string) => void;\n /** Shared radio `name` (auto-generated if omitted). */\n name?: string;\n /** Stack (`vertical`, default) or row (`horizontal`). */\n orientation?: RadioGroupOrientation;\n /** Disable every option. */\n disabled?: boolean;\n /** Default accent color for the options. */\n color?: SilicaColor;\n /** Default size for the options. */\n size?: SilicaSize;\n}\n\n/**\n * Silica RadioGroup — a managed set of radios (native inputs, so arrow-key\n * navigation comes free). Pair with `RadioOption`s.\n *\n * <RadioGroup defaultValue=\"card\" name=\"pay\">\n * <RadioOption value=\"card\">Card</RadioOption>\n * <RadioOption value=\"ach\">Bank transfer</RadioOption>\n * </RadioGroup>\n */\nexport function RadioGroup({\n value,\n defaultValue,\n onValueChange,\n name,\n orientation = \"vertical\",\n disabled,\n color,\n size,\n className,\n children,\n ...rest\n}: RadioGroupProps) {\n const sc = useSilicaClass();\n const autoName = React.useId();\n const [internal, setInternal] = React.useState<string | undefined>(\n defaultValue,\n );\n const current = value !== undefined ? value : internal;\n\n const select = React.useCallback(\n (v: string) => {\n if (value === undefined) setInternal(v);\n onValueChange?.(v);\n },\n [value, onValueChange],\n );\n\n const ctx = React.useMemo<RadioGroupContextValue>(\n () => ({ name: name ?? autoName, value: current, select, disabled, color, size }),\n [name, autoName, current, select, disabled, color, size],\n );\n\n return (\n <RadioGroupContext.Provider value={ctx}>\n <div\n role=\"radiogroup\"\n data-orientation={orientation}\n className={cx(sc(\"radio-group\"), className)}\n {...rest}\n >\n {children}\n </div>\n </RadioGroupContext.Provider>\n );\n}\n\nexport interface RadioOptionProps\n extends Omit<React.LabelHTMLAttributes<HTMLLabelElement>, \"onChange\"> {\n /** This option's value. */\n value: string;\n disabled?: boolean;\n color?: SilicaColor;\n size?: SilicaSize;\n}\n\n/** One labeled radio within a RadioGroup. */\nexport function RadioOption({\n value,\n disabled,\n color,\n size,\n className,\n children,\n ...rest\n}: RadioOptionProps) {\n const sc = useSilicaClass();\n const group = React.useContext(RadioGroupContext);\n const c = color ?? group?.color;\n const s = size ?? group?.size ?? \"md\";\n const isDisabled = disabled ?? group?.disabled;\n const radioClasses = cx(\n sc(\"radio\"),\n c && sc(`radio-${c}`),\n s !== \"md\" && sc(`radio-${s}`),\n );\n return (\n <label className={cx(sc(\"radio-option\"), className)} {...rest}>\n <input\n type=\"radio\"\n className={radioClasses}\n name={group?.name}\n value={value}\n checked={group ? group.value === value : undefined}\n onChange={group ? () => group.select(value) : undefined}\n disabled={isDisabled}\n />\n {children != null && <span>{children}</span>}\n </label>\n );\n}\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor, SilicaSize } from \"./lib/tokens\";\n\ninterface CheckboxGroupContextValue {\n value: string[];\n toggle: (value: string, checked: boolean) => void;\n disabled?: boolean;\n color?: SilicaColor;\n size?: SilicaSize;\n}\n\nconst CheckboxGroupContext =\n React.createContext<CheckboxGroupContextValue | null>(null);\n\nexport type CheckboxGroupOrientation = \"vertical\" | \"horizontal\";\n\nexport interface CheckboxGroupProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\" | \"defaultValue\"> {\n /** Controlled array of checked values. */\n value?: string[];\n /** Uncontrolled initial checked values. */\n defaultValue?: string[];\n /** Fires with the new array of checked values. */\n onValueChange?: (value: string[]) => void;\n /** Stack (`vertical`, default) or row (`horizontal`). */\n orientation?: CheckboxGroupOrientation;\n /** Disable every option. */\n disabled?: boolean;\n /** Default accent color for the options. */\n color?: SilicaColor;\n /** Default size for the options. */\n size?: SilicaSize;\n}\n\n/**\n * Silica CheckboxGroup — a managed set of checkboxes whose value is the array of\n * checked items. Pair with `CheckboxOption`s.\n *\n * <CheckboxGroup defaultValue={[\"email\"]}>\n * <CheckboxOption value=\"email\">Email</CheckboxOption>\n * <CheckboxOption value=\"sms\">SMS</CheckboxOption>\n * </CheckboxGroup>\n */\nexport function CheckboxGroup({\n value,\n defaultValue,\n onValueChange,\n orientation = \"vertical\",\n disabled,\n color,\n size,\n className,\n children,\n ...rest\n}: CheckboxGroupProps) {\n const sc = useSilicaClass();\n const [internal, setInternal] = React.useState<string[]>(defaultValue ?? []);\n const current = value !== undefined ? value : internal;\n\n const toggle = React.useCallback(\n (v: string, checked: boolean) => {\n const next = checked\n ? [...current, v]\n : current.filter((x) => x !== v);\n if (value === undefined) setInternal(next);\n onValueChange?.(next);\n },\n [current, value, onValueChange],\n );\n\n const ctx = React.useMemo<CheckboxGroupContextValue>(\n () => ({ value: current, toggle, disabled, color, size }),\n [current, toggle, disabled, color, size],\n );\n\n return (\n <CheckboxGroupContext.Provider value={ctx}>\n <div\n role=\"group\"\n data-orientation={orientation}\n className={cx(sc(\"checkbox-group\"), className)}\n {...rest}\n >\n {children}\n </div>\n </CheckboxGroupContext.Provider>\n );\n}\n\nexport interface CheckboxOptionProps\n extends Omit<React.LabelHTMLAttributes<HTMLLabelElement>, \"onChange\"> {\n /** This option's value. */\n value: string;\n disabled?: boolean;\n color?: SilicaColor;\n size?: SilicaSize;\n}\n\n/** One labeled checkbox within a CheckboxGroup. */\nexport function CheckboxOption({\n value,\n disabled,\n color,\n size,\n className,\n children,\n ...rest\n}: CheckboxOptionProps) {\n const sc = useSilicaClass();\n const group = React.useContext(CheckboxGroupContext);\n const c = color ?? group?.color;\n const s = size ?? group?.size ?? \"md\";\n const isDisabled = disabled ?? group?.disabled;\n const checkboxClasses = cx(\n sc(\"checkbox\"),\n c && sc(`checkbox-${c}`),\n s !== \"md\" && sc(`checkbox-${s}`),\n );\n return (\n <label className={cx(sc(\"checkbox-option\"), className)} {...rest}>\n <input\n type=\"checkbox\"\n className={checkboxClasses}\n value={value}\n checked={group ? group.value.includes(value) : undefined}\n onChange={\n group ? (e) => group.toggle(value, e.target.checked) : undefined\n }\n disabled={isDisabled}\n />\n {children != null && <span>{children}</span>}\n </label>\n );\n}\n","import * as React from \"react\";\nimport { Slider as BaseSlider } from \"@base-ui-components/react/slider\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor } from \"./lib/tokens\";\n\ntype Styled<T extends React.ElementType> = Omit<\n React.ComponentPropsWithoutRef<T>,\n \"className\"\n> & { className?: string };\n\nexport type SliderColor = SilicaColor;\nexport type SliderSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface SliderProps\n extends Omit<Styled<typeof BaseSlider.Root>, \"color\"> {\n /** Accent for the filled track + thumb(s). */\n color?: SilicaColor;\n /** Rail thickness + thumb diameter. */\n size?: SliderSize;\n /** Show a live numeric readout beside the track. */\n showValue?: boolean;\n}\n\n/**\n * Silica Slider — a rich range input (Base UI behavior). Pass a number for a\n * single thumb, or a tuple for a two-thumb range selection; the number of thumbs\n * follows the shape of `value`/`defaultValue`.\n *\n * <Slider defaultValue={40} color=\"primary\" showValue />\n * <Slider defaultValue={[20, 60]} min={0} max={100} step={5} />\n * <Slider orientation=\"vertical\" defaultValue={50} />\n */\nexport const Slider = React.forwardRef<\n React.ComponentRef<typeof BaseSlider.Root>,\n SliderProps\n>(function Slider(\n { color, size = \"md\", showValue, className, value, defaultValue, ...rest },\n ref,\n) {\n const sc = useSilicaClass();\n const src = value ?? defaultValue;\n const thumbCount = Array.isArray(src) ? Math.max(src.length, 1) : 1;\n\n return (\n <BaseSlider.Root\n ref={ref}\n value={value as number | readonly number[] | undefined}\n defaultValue={defaultValue as number | readonly number[] | undefined}\n className={cx(\n sc(\"slider\"),\n color && sc(`slider-${color}`),\n size !== \"md\" && sc(`slider-${size}`),\n className,\n )}\n {...rest}\n >\n {showValue && <BaseSlider.Value className={cx(sc(\"slider-value\"))} />}\n <BaseSlider.Control className={cx(sc(\"slider-control\"))}>\n <BaseSlider.Track className={cx(sc(\"slider-track\"))}>\n <BaseSlider.Indicator className={cx(sc(\"slider-indicator\"))} />\n {Array.from({ length: thumbCount }, (_, i) => (\n <BaseSlider.Thumb key={i} className={cx(sc(\"slider-thumb\"))} />\n ))}\n </BaseSlider.Track>\n </BaseSlider.Control>\n </BaseSlider.Root>\n );\n});\n","import * as React from \"react\";\nimport { Switch as BaseSwitch } from \"@base-ui-components/react/switch\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor, SilicaSize } from \"./lib/tokens\";\n\ntype Styled<T extends React.ElementType> = Omit<\n React.ComponentPropsWithoutRef<T>,\n \"className\"\n> & { className?: string };\n\nexport type SwitchColor = SilicaColor;\nexport type SwitchSize = SilicaSize;\n\nexport interface SwitchProps\n extends Omit<Styled<typeof BaseSwitch.Root>, \"color\"> {\n /** Accent for the checked track. */\n color?: SilicaColor;\n /** Track height (width follows at 1.75×). */\n size?: SilicaSize;\n}\n\n/**\n * Silica Switch — an accessible on/off toggle (Base UI: `role=\"switch\"` with a\n * hidden real input, so it submits in a form and pairs with `Field`). The CSS\n * cousin `Toggle` is a bare restyled checkbox; reach for `Switch` when you want\n * proper switch semantics or form integration.\n *\n * <Switch defaultChecked color=\"success\" />\n * <Switch checked={on} onCheckedChange={setOn} />\n */\nexport const Switch = React.forwardRef<\n React.ComponentRef<typeof BaseSwitch.Root>,\n SwitchProps\n>(function Switch({ color, size = \"md\", className, ...rest }, ref) {\n const sc = useSilicaClass();\n return (\n <BaseSwitch.Root\n ref={ref}\n className={cx(\n sc(\"switch\"),\n color && sc(`switch-${color}`),\n size !== \"md\" && sc(`switch-${size}`),\n className,\n )}\n {...rest}\n >\n <BaseSwitch.Thumb className={cx(sc(\"switch-thumb\"))} />\n </BaseSwitch.Root>\n );\n});\n","import * as React from \"react\";\nimport { Collapsible as BaseCollapsible } from \"@base-ui-components/react/collapsible\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\ntype Styled<T extends React.ElementType> = Omit<\n React.ComponentPropsWithoutRef<T>,\n \"className\"\n> & { className?: string };\n\nconst ChevronIcon = () => (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n aria-hidden=\"true\"\n >\n <path d=\"m6 9 6 6 6-6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\n\nexport type CollapsibleProps = Styled<typeof BaseCollapsible.Root>;\n\n/**\n * Silica Collapsible — a single show/hide disclosure (Base UI behavior, animated\n * height). The primitive behind `Accordion`; use it when you have just one\n * region to reveal.\n *\n * <Collapsible defaultOpen>\n * <CollapsibleTrigger>Shipping details</CollapsibleTrigger>\n * <CollapsiblePanel>Ships in 2–3 business days.</CollapsiblePanel>\n * </Collapsible>\n */\nexport function Collapsible({ className, ...rest }: CollapsibleProps) {\n const sc = useSilicaClass();\n return (\n <BaseCollapsible.Root className={cx(sc(\"collapsible\"), className)} {...rest} />\n );\n}\n\nexport interface CollapsibleTriggerProps\n extends Styled<typeof BaseCollapsible.Trigger> {\n /** Set false to omit the built-in chevron. */\n chevron?: boolean;\n}\n\nexport function CollapsibleTrigger({\n className,\n children,\n chevron = true,\n ...rest\n}: CollapsibleTriggerProps) {\n const sc = useSilicaClass();\n return (\n <BaseCollapsible.Trigger\n className={cx(sc(\"collapsible-trigger\"), className)}\n {...rest}\n >\n <span>{children}</span>\n {chevron && <ChevronIcon />}\n </BaseCollapsible.Trigger>\n );\n}\n\nexport interface CollapsiblePanelProps\n extends Styled<typeof BaseCollapsible.Panel> {\n children?: React.ReactNode;\n}\n\nexport function CollapsiblePanel({\n className,\n children,\n ...rest\n}: CollapsiblePanelProps) {\n const sc = useSilicaClass();\n return (\n <BaseCollapsible.Panel\n className={cx(sc(\"collapsible-panel\"), className)}\n {...rest}\n >\n <div className={cx(sc(\"collapsible-content\"))}>{children}</div>\n </BaseCollapsible.Panel>\n );\n}\n","import * as React from \"react\";\nimport { AlertDialog as BaseAlertDialog } from \"@base-ui-components/react/alert-dialog\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\n// Props of a styled Base UI part: its own props but with a plain-string className.\ntype Styled<T extends React.ElementType> = Omit<\n React.ComponentPropsWithoutRef<T>,\n \"className\"\n> & { className?: string };\n\nconst asRender = (el: React.ReactElement) =>\n el as React.ReactElement<Record<string, unknown>>;\n\nexport type AlertDialogProps = React.ComponentProps<typeof BaseAlertDialog.Root>;\n\n/**\n * Silica AlertDialog — a confirmation modal from Base UI. Unlike `Dialog`, its\n * backdrop is inert: clicking outside will NOT dismiss it, so the user can't\n * lose the decision by tapping away (Escape still cancels, per the ARIA alert\n * dialog pattern). Reach for it on destructive or consequential actions; reuses\n * the Dialog surface styling.\n *\n * <AlertDialog>\n * <AlertDialogTrigger><Button color=\"error\">Delete account</Button></AlertDialogTrigger>\n * <AlertDialogContent>\n * <AlertDialogTitle>Delete account?</AlertDialogTitle>\n * <AlertDialogDescription>This permanently removes your data.</AlertDialogDescription>\n * <div className=\"mt-4 flex justify-end gap-2\">\n * <AlertDialogClose><Button variant=\"ghost\">Cancel</Button></AlertDialogClose>\n * <AlertDialogClose><Button color=\"error\" onClick={destroy}>Delete</Button></AlertDialogClose>\n * </div>\n * </AlertDialogContent>\n * </AlertDialog>\n */\nexport const AlertDialog = BaseAlertDialog.Root;\n\n/** Wraps its single child element as the element that opens the dialog. */\nexport function AlertDialogTrigger({\n children,\n}: {\n children: React.ReactElement;\n}) {\n return <BaseAlertDialog.Trigger render={asRender(children)} />;\n}\n\n/** Wraps its single child element as an element that closes the dialog. */\nexport function AlertDialogClose({\n children,\n}: {\n children: React.ReactElement;\n}) {\n return <BaseAlertDialog.Close render={asRender(children)} />;\n}\n\nexport interface AlertDialogContentProps\n extends Omit<Styled<typeof BaseAlertDialog.Popup>, \"children\"> {\n children?: React.ReactNode;\n /** Class for the backdrop layer. */\n backdropClassName?: string;\n}\n\n/** Portals + backdrop + the centered popup surface in one (shares Dialog styles). */\nexport function AlertDialogContent({\n className,\n backdropClassName,\n children,\n ...rest\n}: AlertDialogContentProps) {\n const sc = useSilicaClass();\n return (\n <BaseAlertDialog.Portal>\n <BaseAlertDialog.Backdrop\n className={cx(sc(\"dialog-backdrop\"), backdropClassName)}\n />\n <BaseAlertDialog.Popup\n className={cx(sc(\"dialog-popup\"), className)}\n {...rest}\n >\n {children}\n </BaseAlertDialog.Popup>\n </BaseAlertDialog.Portal>\n );\n}\n\nexport function AlertDialogTitle({\n className,\n ...rest\n}: Styled<typeof BaseAlertDialog.Title>) {\n const sc = useSilicaClass();\n return (\n <BaseAlertDialog.Title\n className={cx(sc(\"dialog-title\"), className)}\n {...rest}\n />\n );\n}\n\nexport function AlertDialogDescription({\n className,\n ...rest\n}: Styled<typeof BaseAlertDialog.Description>) {\n const sc = useSilicaClass();\n return (\n <BaseAlertDialog.Description\n className={cx(sc(\"dialog-description\"), className)}\n {...rest}\n />\n );\n}\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor } from \"./lib/tokens\";\n\ninterface FilterContextValue {\n value: string | undefined;\n select: (value: string | undefined) => void;\n disabled?: boolean;\n}\n\nconst FilterContext = React.createContext<FilterContextValue | null>(null);\n\nconst CloseIcon = () => (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.25\"\n aria-hidden=\"true\"\n >\n <path d=\"M18 6 6 18M6 6l12 12\" strokeLinecap=\"round\" />\n </svg>\n);\n\nexport interface FilterProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\" | \"color\"> {\n /** Controlled selected value (`undefined` = nothing selected). */\n value?: string;\n /** Uncontrolled initial value. */\n defaultValue?: string;\n /** Fires with the new value, or `undefined` when reset. */\n onValueChange?: (value: string | undefined) => void;\n /** Accent for the selected chip. */\n color?: SilicaColor;\n /** Disable every chip + the reset. */\n disabled?: boolean;\n /** Render the reset (×) once something is selected (default true). */\n showReset?: boolean;\n /** Accessible label for the reset control. */\n resetLabel?: string;\n}\n\n/**\n * Silica Filter — a single-select row of chips with a reset, for faceted\n * product/category filtering. Radio semantics: one chip at a time; the reset\n * clears the choice. Pair with `FilterItem`s.\n *\n * <Filter defaultValue=\"all\" color=\"primary\">\n * <FilterItem value=\"all\">All</FilterItem>\n * <FilterItem value=\"apparel\">Apparel</FilterItem>\n * <FilterItem value=\"gear\">Gear</FilterItem>\n * </Filter>\n */\nexport function Filter({\n value,\n defaultValue,\n onValueChange,\n color,\n disabled,\n showReset = true,\n resetLabel = \"Reset filter\",\n className,\n children,\n ...rest\n}: FilterProps) {\n const sc = useSilicaClass();\n const [internal, setInternal] = React.useState<string | undefined>(\n defaultValue,\n );\n const current = value !== undefined ? value : internal;\n\n const select = React.useCallback(\n (v: string | undefined) => {\n if (value === undefined) setInternal(v);\n onValueChange?.(v);\n },\n [value, onValueChange],\n );\n\n const ctx = React.useMemo<FilterContextValue>(\n () => ({ value: current, select, disabled }),\n [current, select, disabled],\n );\n\n return (\n <FilterContext.Provider value={ctx}>\n <div\n role=\"radiogroup\"\n className={cx(sc(\"filter\"), color && sc(`filter-${color}`), className)}\n {...rest}\n >\n {showReset && current != null && (\n <button\n type=\"button\"\n className={cx(sc(\"filter-reset\"))}\n aria-label={resetLabel}\n onClick={() => select(undefined)}\n disabled={disabled}\n >\n <CloseIcon />\n </button>\n )}\n {children}\n </div>\n </FilterContext.Provider>\n );\n}\n\nexport interface FilterItemProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"value\"> {\n /** This chip's value. */\n value: string;\n}\n\n/** One selectable chip within a Filter. */\nexport const FilterItem = React.forwardRef<HTMLButtonElement, FilterItemProps>(\n function FilterItem({ value, disabled, className, children, onClick, ...rest }, ref) {\n const sc = useSilicaClass();\n const group = React.useContext(FilterContext);\n const selected = group?.value === value;\n const isDisabled = disabled ?? group?.disabled;\n return (\n <button\n ref={ref}\n type=\"button\"\n role=\"radio\"\n aria-checked={selected}\n data-selected={selected ? \"\" : undefined}\n disabled={isDisabled}\n className={cx(sc(\"filter-item\"), className)}\n onClick={(e) => {\n onClick?.(e);\n if (!e.defaultPrevented) group?.select(value);\n }}\n {...rest}\n >\n {children}\n </button>\n );\n },\n);\n","import * as React from \"react\";\nimport { Select as BaseSelect } from \"@base-ui-components/react/select\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor, SilicaSize } from \"./lib/tokens\";\n\ntype Styled<T extends React.ElementType> = Omit<\n React.ComponentPropsWithoutRef<T>,\n \"className\"\n> & { className?: string };\n\ntype PositionerProps = React.ComponentProps<typeof BaseSelect.Positioner>;\nexport type SelectSide = NonNullable<PositionerProps[\"side\"]>;\nexport type SelectAlign = NonNullable<PositionerProps[\"align\"]>;\nexport type SelectColor = SilicaColor;\nexport type SelectSize = SilicaSize;\n\nconst ChevronDownIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" aria-hidden=\"true\">\n <path d=\"m6 9 6 6 6-6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\nconst ChevronUpIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" aria-hidden=\"true\">\n <path d=\"m18 15-6-6-6 6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\nconst CheckIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" aria-hidden=\"true\">\n <path d=\"M20 6 9 17l-5-5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\n\n// ---------------------------------------------------------------------------\n// Composable parts\n// ---------------------------------------------------------------------------\n\nexport interface SelectItemProps\n extends Omit<Styled<typeof BaseSelect.Item>, \"children\"> {\n /** The value stored when this item is chosen. */\n value: unknown;\n children?: React.ReactNode;\n}\n\n/** One option. Renders its own selected-check indicator. */\nexport function SelectItem({ className, children, ...rest }: SelectItemProps) {\n const sc = useSilicaClass();\n return (\n <BaseSelect.Item className={cx(sc(\"select-item\"), className)} {...rest}>\n <BaseSelect.ItemIndicator className={cx(sc(\"select-item-indicator\"))}>\n <CheckIcon />\n </BaseSelect.ItemIndicator>\n <BaseSelect.ItemText>{children}</BaseSelect.ItemText>\n </BaseSelect.Item>\n );\n}\n\n/** Groups related items; pair with a `SelectGroupLabel`. */\nexport function SelectGroup(props: React.ComponentProps<typeof BaseSelect.Group>) {\n return <BaseSelect.Group {...props} />;\n}\n\n/** A heading for a `SelectGroup` — MUST be rendered inside one. */\nexport function SelectGroupLabel({\n className,\n ...rest\n}: Styled<typeof BaseSelect.GroupLabel>) {\n const sc = useSilicaClass();\n return (\n <BaseSelect.GroupLabel\n className={cx(sc(\"select-group-label\"), className)}\n {...rest}\n />\n );\n}\n\nexport function SelectSeparator({\n className,\n ...rest\n}: Styled<typeof BaseSelect.Separator>) {\n const sc = useSilicaClass();\n return (\n <BaseSelect.Separator\n className={cx(sc(\"select-separator\"), className)}\n {...rest}\n />\n );\n}\n\n// ---------------------------------------------------------------------------\n// Select\n// ---------------------------------------------------------------------------\n\nexport interface SelectOptionData {\n label: React.ReactNode;\n value: unknown;\n}\nexport type SelectItems =\n | Record<string, React.ReactNode>\n | ReadonlyArray<SelectOptionData>;\n\nexport interface SelectProps {\n /** Controlled value (array when `multiple`). */\n value?: unknown;\n /** Uncontrolled initial value. */\n defaultValue?: unknown;\n /** Fires with the newly-selected value. */\n onValueChange?: (value: unknown, eventDetails?: unknown) => void;\n /** Allow selecting multiple items (value becomes an array). */\n multiple?: boolean;\n /**\n * Value→label map used to render the trigger's selected label (and, if no\n * children are given, to auto-render the options). A record (`{value: label}`)\n * or an array (`[{ value, label }]`).\n */\n items?: SelectItems;\n /** Field name for form submission. */\n name?: string;\n disabled?: boolean;\n required?: boolean;\n readOnly?: boolean;\n /** Shown on the trigger while nothing is selected. */\n placeholder?: React.ReactNode;\n /** Accent for the trigger border + focus ring (shares NativeSelect colors). */\n color?: SelectColor;\n /** Trigger height; matches same-size Inputs/Buttons. */\n size?: SelectSize;\n side?: SelectSide;\n align?: SelectAlign;\n sideOffset?: number;\n /** Overlay the selected item on the trigger (native-select style). Default false. */\n alignItemWithTrigger?: boolean;\n /** Class for the trigger button. */\n className?: string;\n /** Class for the popup surface. */\n popupClassName?: string;\n /** Accessible name when there's no associated visible label. */\n \"aria-label\"?: string;\n \"aria-labelledby\"?: string;\n id?: string;\n /** `SelectItem`/`SelectGroup`/`SelectSeparator`s. Omit to auto-render `items`. */\n children?: React.ReactNode;\n}\n\n/**\n * Silica Select — a fully-styled, keyboard-driven listbox (Base UI: typeahead,\n * roving focus, portalled popup, optional multi-select). The trigger matches\n * `NativeSelect` pixel-for-pixel; reach for `NativeSelect` only when you need a\n * bare platform `<select>`.\n *\n * // items-driven (auto-renders options, powers the trigger label):\n * <Select\n * items={{ react: \"React\", vue: \"Vue\", svelte: \"Svelte\" }}\n * value={fw} onValueChange={setFw} placeholder=\"Framework\" color=\"primary\"\n * />\n *\n * // composable:\n * <Select value={fw} onValueChange={setFw} items={labels} placeholder=\"Framework\">\n * <SelectGroup>\n * <SelectGroupLabel>Frontend</SelectGroupLabel>\n * <SelectItem value=\"react\">React</SelectItem>\n * <SelectItem value=\"vue\">Vue</SelectItem>\n * </SelectGroup>\n * </Select>\n */\nexport function Select({\n value,\n defaultValue,\n onValueChange,\n multiple,\n items,\n name,\n disabled,\n required,\n readOnly,\n placeholder,\n color,\n size = \"md\",\n side = \"bottom\",\n align = \"start\",\n sideOffset = 6,\n alignItemWithTrigger = false,\n className,\n popupClassName,\n id,\n children,\n ...aria\n}: SelectProps) {\n const sc = useSilicaClass();\n\n const autoItems =\n !children && items\n ? Array.isArray(items)\n ? items.map((it) => (\n <SelectItem key={String(it.value)} value={it.value}>\n {it.label}\n </SelectItem>\n ))\n : Object.entries(items).map(([v, label]) => (\n <SelectItem key={v} value={v}>\n {label}\n </SelectItem>\n ))\n : null;\n\n return (\n <BaseSelect.Root\n value={value as never}\n defaultValue={defaultValue as never}\n onValueChange={onValueChange as never}\n multiple={multiple as never}\n items={items as never}\n name={name}\n disabled={disabled}\n required={required}\n readOnly={readOnly}\n >\n <BaseSelect.Trigger\n id={id}\n className={cx(\n sc(\"select\"),\n color && sc(`select-${color}`),\n size !== \"md\" && sc(`select-${size}`),\n sc(\"select-trigger\"),\n className,\n )}\n {...aria}\n >\n <BaseSelect.Value className={cx(sc(\"select-value\"))} />\n {placeholder != null && (\n <span className={cx(sc(\"select-placeholder\"))}>{placeholder}</span>\n )}\n <BaseSelect.Icon className={cx(sc(\"select-icon\"))}>\n <ChevronDownIcon />\n </BaseSelect.Icon>\n </BaseSelect.Trigger>\n\n <BaseSelect.Portal>\n <BaseSelect.Positioner\n side={side}\n align={align}\n sideOffset={sideOffset}\n alignItemWithTrigger={alignItemWithTrigger}\n >\n <BaseSelect.Popup className={cx(sc(\"select-popup\"), popupClassName)}>\n <BaseSelect.ScrollUpArrow\n className={cx(sc(\"select-scroll-arrow\"))}\n data-direction=\"up\"\n >\n <ChevronUpIcon />\n </BaseSelect.ScrollUpArrow>\n <BaseSelect.List>{children ?? autoItems}</BaseSelect.List>\n <BaseSelect.ScrollDownArrow\n className={cx(sc(\"select-scroll-arrow\"))}\n data-direction=\"down\"\n >\n <ChevronDownIcon />\n </BaseSelect.ScrollDownArrow>\n </BaseSelect.Popup>\n </BaseSelect.Positioner>\n </BaseSelect.Portal>\n </BaseSelect.Root>\n );\n}\n","import * as React from \"react\";\nimport { Combobox as BaseCombobox } from \"@base-ui-components/react/combobox\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor, SilicaSize } from \"./lib/tokens\";\n\ntype Styled<T extends React.ElementType> = Omit<\n React.ComponentPropsWithoutRef<T>,\n \"className\"\n> & { className?: string };\n\ntype PositionerProps = React.ComponentProps<typeof BaseCombobox.Positioner>;\nexport type ComboboxSide = NonNullable<PositionerProps[\"side\"]>;\nexport type ComboboxAlign = NonNullable<PositionerProps[\"align\"]>;\nexport type ComboboxColor = SilicaColor;\nexport type ComboboxSize = SilicaSize;\n\nconst ChevronDownIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" aria-hidden=\"true\">\n <path d=\"m6 9 6 6 6-6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\nconst CheckIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" aria-hidden=\"true\">\n <path d=\"M20 6 9 17l-5-5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\nconst XIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.25\" aria-hidden=\"true\">\n <path d=\"M18 6 6 18M6 6l12 12\" strokeLinecap=\"round\" />\n </svg>\n);\n\n/** Label for an item that's either a bare string or a `{ value, label }` object. */\nfunction defaultLabel(item: unknown): React.ReactNode {\n if (item != null && typeof item === \"object\" && \"label\" in item) {\n return (item as { label: React.ReactNode }).label;\n }\n return String(item);\n}\n\nexport interface ComboboxItemProps\n extends Omit<Styled<typeof BaseCombobox.Item>, \"children\"> {\n value: unknown;\n children?: React.ReactNode;\n /** Show the leading selected-check (default true). */\n indicator?: boolean;\n}\n\n/** One option row within a Combobox. */\nexport function ComboboxItem({\n className,\n children,\n indicator = true,\n ...rest\n}: ComboboxItemProps) {\n const sc = useSilicaClass();\n return (\n <BaseCombobox.Item className={cx(sc(\"select-item\"), className)} {...rest}>\n {indicator && (\n <BaseCombobox.ItemIndicator className={cx(sc(\"select-item-indicator\"))}>\n <CheckIcon />\n </BaseCombobox.ItemIndicator>\n )}\n {children}\n </BaseCombobox.Item>\n );\n}\n\nexport interface ComboboxProps {\n /** The full option set (strings or `{ value, label }`); Base UI filters it. */\n items: readonly unknown[];\n /** Controlled selected value. */\n value?: unknown;\n /** Uncontrolled initial value. */\n defaultValue?: unknown;\n /** Fires with the newly-selected value. */\n onValueChange?: (value: unknown, eventDetails?: unknown) => void;\n name?: string;\n disabled?: boolean;\n required?: boolean;\n placeholder?: string;\n /** Shown in the popup when nothing matches the query. */\n emptyMessage?: React.ReactNode;\n /** Accent for the input border + focus ring (shares Input colors). */\n color?: ComboboxColor;\n /** Input height; matches same-size Inputs. */\n size?: ComboboxSize;\n /** Show the clear (×) button (default true). */\n clearable?: boolean;\n side?: ComboboxSide;\n align?: ComboboxAlign;\n sideOffset?: number;\n /** Class for the text input. */\n className?: string;\n /** Class for the popup surface. */\n popupClassName?: string;\n /** For object items, map an item to its display string (default: `.label`). */\n itemToStringLabel?: (item: unknown) => string;\n /** Override how each filtered item renders. */\n renderItem?: (item: unknown, index: number) => React.ReactNode;\n \"aria-label\"?: string;\n \"aria-labelledby\"?: string;\n id?: string;\n}\n\n/**\n * Silica Combobox — a searchable, filtered listbox (Base UI: typeahead filtering,\n * roving focus, portalled popup). Type to narrow `items`; pick to select. The\n * input matches the field tier like `Input`.\n *\n * <Combobox\n * items={[\"Alabama\", \"Alaska\", \"Arizona\", \"Arkansas\"]}\n * value={state} onValueChange={setState}\n * placeholder=\"Search states…\"\n * />\n *\n * // object items:\n * <Combobox\n * items={[{ value: \"us\", label: \"United States\" }, { value: \"ca\", label: \"Canada\" }]}\n * placeholder=\"Country\" color=\"primary\"\n * />\n */\nexport function Combobox({\n items,\n value,\n defaultValue,\n onValueChange,\n name,\n disabled,\n required,\n placeholder,\n emptyMessage = \"No results.\",\n color,\n size = \"md\",\n clearable = true,\n side = \"bottom\",\n align = \"start\",\n sideOffset = 6,\n className,\n popupClassName,\n itemToStringLabel,\n renderItem,\n id,\n ...aria\n}: ComboboxProps) {\n const sc = useSilicaClass();\n return (\n <BaseCombobox.Root\n items={items as never}\n value={value as never}\n defaultValue={defaultValue as never}\n onValueChange={onValueChange as never}\n name={name}\n disabled={disabled}\n required={required}\n itemToStringLabel={itemToStringLabel as never}\n >\n <div className={cx(sc(\"combobox-control\"))}>\n <BaseCombobox.Input\n id={id}\n placeholder={placeholder}\n className={cx(\n sc(\"input\"),\n color && sc(`input-${color}`),\n size !== \"md\" && sc(`input-${size}`),\n sc(\"combobox-input\"),\n className,\n )}\n {...aria}\n />\n {clearable && (\n <BaseCombobox.Clear\n className={cx(sc(\"combobox-clear\"))}\n aria-label=\"Clear\"\n >\n <XIcon />\n </BaseCombobox.Clear>\n )}\n <BaseCombobox.Trigger\n className={cx(sc(\"combobox-trigger\"))}\n aria-label=\"Open\"\n >\n <ChevronDownIcon />\n </BaseCombobox.Trigger>\n </div>\n\n <BaseCombobox.Portal>\n <BaseCombobox.Positioner side={side} align={align} sideOffset={sideOffset}>\n <BaseCombobox.Popup className={cx(sc(\"select-popup\"), popupClassName)}>\n <BaseCombobox.Empty className={cx(sc(\"combobox-empty\"))}>\n {emptyMessage}\n </BaseCombobox.Empty>\n <BaseCombobox.List>\n {(item: unknown, index: number) =>\n renderItem ? (\n renderItem(item, index)\n ) : (\n <ComboboxItem key={index} value={item}>\n {defaultLabel(item)}\n </ComboboxItem>\n )\n }\n </BaseCombobox.List>\n </BaseCombobox.Popup>\n </BaseCombobox.Positioner>\n </BaseCombobox.Portal>\n </BaseCombobox.Root>\n );\n}\n","import * as React from \"react\";\nimport { Autocomplete as BaseAutocomplete } from \"@base-ui-components/react/autocomplete\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor, SilicaSize } from \"./lib/tokens\";\n\ntype Styled<T extends React.ElementType> = Omit<\n React.ComponentPropsWithoutRef<T>,\n \"className\"\n> & { className?: string };\n\ntype PositionerProps = React.ComponentProps<typeof BaseAutocomplete.Positioner>;\nexport type AutocompleteSide = NonNullable<PositionerProps[\"side\"]>;\nexport type AutocompleteAlign = NonNullable<PositionerProps[\"align\"]>;\nexport type AutocompleteColor = SilicaColor;\nexport type AutocompleteSize = SilicaSize;\nexport type AutocompleteMode = \"list\" | \"both\" | \"inline\" | \"none\";\n\nconst XIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.25\" aria-hidden=\"true\">\n <path d=\"M18 6 6 18M6 6l12 12\" strokeLinecap=\"round\" />\n </svg>\n);\n\nexport interface AutocompleteItemProps\n extends Omit<Styled<typeof BaseAutocomplete.Item>, \"children\"> {\n value: unknown;\n children?: React.ReactNode;\n}\n\n/** One suggestion row within an Autocomplete. */\nexport function AutocompleteItem({\n className,\n children,\n ...rest\n}: AutocompleteItemProps) {\n const sc = useSilicaClass();\n return (\n <BaseAutocomplete.Item\n className={cx(sc(\"select-item\"), sc(\"combobox-item\"), className)}\n {...rest}\n >\n {children}\n </BaseAutocomplete.Item>\n );\n}\n\nexport interface AutocompleteProps {\n /** Suggestion set; filtered by the input value (in `list`/`both` modes). */\n items: readonly string[];\n /** Controlled input value. */\n value?: string;\n /** Uncontrolled initial input value. */\n defaultValue?: string;\n /** Fires with the new input string. */\n onValueChange?: (value: string, eventDetails?: unknown) => void;\n /** Suggestion behavior; `list` (default) filters the list as you type. */\n mode?: AutocompleteMode;\n name?: string;\n disabled?: boolean;\n required?: boolean;\n placeholder?: string;\n /** Shown in the popup when nothing matches the query. */\n emptyMessage?: React.ReactNode;\n /** Accent for the input border + focus ring (shares Input colors). */\n color?: AutocompleteColor;\n /** Input height; matches same-size Inputs. */\n size?: AutocompleteSize;\n /** Show the clear (×) button (default true). */\n clearable?: boolean;\n side?: AutocompleteSide;\n align?: AutocompleteAlign;\n sideOffset?: number;\n /** Class for the text input. */\n className?: string;\n /** Class for the popup surface. */\n popupClassName?: string;\n /** Override how each filtered suggestion renders. */\n renderItem?: (item: string, index: number) => React.ReactNode;\n \"aria-label\"?: string;\n \"aria-labelledby\"?: string;\n id?: string;\n}\n\n/**\n * Silica Autocomplete — a free-text input with a filtered suggestion list\n * (Base UI). Unlike `Combobox` (which selects a value from a fixed set), the\n * value here IS the typed string; suggestions just help complete it.\n *\n * <Autocomplete\n * items={[\"React\", \"React Native\", \"Redux\", \"Remix\"]}\n * value={q} onValueChange={setQ}\n * placeholder=\"Search the docs…\"\n * />\n */\nexport function Autocomplete({\n items,\n value,\n defaultValue,\n onValueChange,\n mode = \"list\",\n name,\n disabled,\n required,\n placeholder,\n emptyMessage = \"No results.\",\n color,\n size = \"md\",\n clearable = true,\n side = \"bottom\",\n align = \"start\",\n sideOffset = 6,\n className,\n popupClassName,\n renderItem,\n id,\n ...aria\n}: AutocompleteProps) {\n const sc = useSilicaClass();\n return (\n <BaseAutocomplete.Root\n items={items as never}\n value={value as never}\n defaultValue={defaultValue as never}\n onValueChange={onValueChange as never}\n mode={mode}\n name={name}\n disabled={disabled}\n required={required}\n >\n <div className={cx(sc(\"combobox-control\"))}>\n <BaseAutocomplete.Input\n id={id}\n placeholder={placeholder}\n className={cx(\n sc(\"input\"),\n color && sc(`input-${color}`),\n size !== \"md\" && sc(`input-${size}`),\n sc(\"combobox-input\"),\n className,\n )}\n {...aria}\n />\n {clearable && (\n <BaseAutocomplete.Clear\n className={cx(sc(\"combobox-clear\"))}\n aria-label=\"Clear\"\n >\n <XIcon />\n </BaseAutocomplete.Clear>\n )}\n </div>\n\n <BaseAutocomplete.Portal>\n <BaseAutocomplete.Positioner\n side={side}\n align={align}\n sideOffset={sideOffset}\n >\n <BaseAutocomplete.Popup className={cx(sc(\"select-popup\"), popupClassName)}>\n <BaseAutocomplete.Empty className={cx(sc(\"combobox-empty\"))}>\n {emptyMessage}\n </BaseAutocomplete.Empty>\n <BaseAutocomplete.List>\n {(item: string, index: number) =>\n renderItem ? (\n renderItem(item, index)\n ) : (\n <AutocompleteItem key={index} value={item}>\n {item}\n </AutocompleteItem>\n )\n }\n </BaseAutocomplete.List>\n </BaseAutocomplete.Popup>\n </BaseAutocomplete.Positioner>\n </BaseAutocomplete.Portal>\n </BaseAutocomplete.Root>\n );\n}\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor } from \"./lib/tokens\";\n\nexport type CalendarColor = SilicaColor;\nexport type CalendarMode = \"single\" | \"range\";\nexport type Weekday = 0 | 1 | 2 | 3 | 4 | 5 | 6;\n\nexport interface DateRange {\n start: Date | null;\n end: Date | null;\n}\nexport type CalendarValue = Date | DateRange | null;\n\n// ---------------------------------------------------------------------------\n// Date helpers — day-granular, local time (a calendar has no clock).\n// ---------------------------------------------------------------------------\nconst REF_SUNDAY = new Date(2023, 0, 1); // Jan 1 2023 is a Sunday.\n\nfunction startOfDay(d: Date): Date {\n const x = new Date(d);\n x.setHours(0, 0, 0, 0);\n return x;\n}\nfunction startOfMonth(d: Date): Date {\n const x = startOfDay(d);\n x.setDate(1);\n return x;\n}\nfunction addDays(d: Date, n: number): Date {\n const x = new Date(d);\n x.setDate(x.getDate() + n);\n return x;\n}\nfunction addMonths(d: Date, n: number): Date {\n const x = startOfMonth(d);\n x.setMonth(x.getMonth() + n);\n return x;\n}\nfunction isSameDay(a: Date | null, b: Date | null): boolean {\n return (\n !!a &&\n !!b &&\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n );\n}\nfunction isSameMonth(a: Date, b: Date): boolean {\n return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth();\n}\n/** -1 if a<b, 0 if same day, 1 if a>b. */\nfunction compareDay(a: Date, b: Date): number {\n const x = startOfDay(a).getTime();\n const y = startOfDay(b).getTime();\n return x < y ? -1 : x > y ? 1 : 0;\n}\nfunction clampDay(d: Date, min?: Date | null, max?: Date | null): Date {\n if (min && compareDay(d, min) < 0) return startOfDay(min);\n if (max && compareDay(d, max) > 0) return startOfDay(max);\n return startOfDay(d);\n}\nfunction isoDate(d: Date): string {\n const p = (n: number) => String(n).padStart(2, \"0\");\n return `${d.getFullYear()}-${p(d.getMonth() + 1)}-${p(d.getDate())}`;\n}\n\nfunction asRange(v: CalendarValue): DateRange {\n if (v && v instanceof Date) return { start: v, end: null };\n if (v && typeof v === \"object\") return v as DateRange;\n return { start: null, end: null };\n}\nfunction orderedRange(a: Date, b: Date): DateRange {\n return compareDay(a, b) <= 0 ? { start: a, end: b } : { start: b, end: a };\n}\n\nconst ChevronLeftIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" aria-hidden=\"true\">\n <path d=\"m15 18-6-6 6-6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\nconst ChevronRightIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" aria-hidden=\"true\">\n <path d=\"m9 18 6-6-6-6\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\n\nexport interface CalendarProps {\n /** `single` (default) selects one date; `range` selects a start/end pair. */\n mode?: CalendarMode;\n /** Controlled selection — a `Date` in single mode, a `DateRange` in range mode. */\n value?: CalendarValue;\n /** Uncontrolled initial selection. */\n defaultValue?: CalendarValue;\n /** Fires with the new selection. */\n onValueChange?: (value: CalendarValue) => void;\n /** Controlled visible (left-most) month. */\n month?: Date;\n /** Uncontrolled initial visible month. */\n defaultMonth?: Date;\n onMonthChange?: (month: Date) => void;\n /** How many month grids to show side by side (default 1; 2 for range). */\n numberOfMonths?: number;\n /** 0 = Sunday (default) … 6 = Saturday. */\n weekStartsOn?: Weekday;\n /** Selectable bounds (inclusive). */\n min?: Date;\n max?: Date;\n /** Per-date disable predicate. */\n isDateDisabled?: (date: Date) => boolean;\n /** BCP-47 locale for month/weekday names (default: runtime locale). */\n locale?: string;\n /** Accent for the selection. */\n color?: CalendarColor;\n className?: string;\n \"aria-label\"?: string;\n}\n\n/**\n * Silica Calendar — a from-scratch month-grid date picker (single date or a\n * range), with full keyboard navigation (arrows, PageUp/Down, Home/End,\n * Enter/Space). The primitive behind `DatePicker` / `DateRangePicker`; render it\n * inline when you want an always-visible calendar.\n *\n * <Calendar value={date} onValueChange={setDate} />\n * <Calendar mode=\"range\" numberOfMonths={2} value={range} onValueChange={setRange} />\n */\nexport function Calendar({\n mode = \"single\",\n value,\n defaultValue,\n onValueChange,\n month,\n defaultMonth,\n onMonthChange,\n numberOfMonths = 1,\n weekStartsOn = 0,\n min,\n max,\n isDateDisabled,\n locale,\n color,\n className,\n ...aria\n}: CalendarProps) {\n const sc = useSilicaClass();\n const rootRef = React.useRef<HTMLDivElement>(null);\n const shouldFocusRef = React.useRef(false);\n const today = React.useMemo(() => startOfDay(new Date()), []);\n\n // --- selection (controlled/uncontrolled) ---\n const [internalValue, setInternalValue] = React.useState<CalendarValue>(\n defaultValue ?? (mode === \"range\" ? { start: null, end: null } : null),\n );\n const current = value !== undefined ? value : internalValue;\n const range = asRange(current);\n\n // --- visible month (controlled/uncontrolled) ---\n const initialMonth =\n defaultMonth ??\n (range.start ? startOfMonth(range.start) : startOfMonth(today));\n const [internalMonth, setInternalMonth] = React.useState<Date>(initialMonth);\n const viewMonth = month !== undefined ? startOfMonth(month) : internalMonth;\n\n const setView = React.useCallback(\n (m: Date) => {\n const next = startOfMonth(m);\n if (month === undefined) setInternalMonth(next);\n onMonthChange?.(next);\n },\n [month, onMonthChange],\n );\n\n // --- keyboard focus target + range hover preview ---\n const [focusedDate, setFocusedDate] = React.useState<Date>(() =>\n clampDay(range.start ?? today, min, max),\n );\n const [hoveredDate, setHoveredDate] = React.useState<Date | null>(null);\n\n // Move DOM focus to the focused day, but only right after a keyboard move.\n React.useEffect(() => {\n if (!shouldFocusRef.current) return;\n shouldFocusRef.current = false;\n const el = rootRef.current?.querySelector<HTMLButtonElement>(\n `[data-date=\"${isoDate(focusedDate)}\"][data-in-month]`,\n );\n el?.focus();\n }, [focusedDate]);\n\n const weekdayLabels = React.useMemo(() => {\n const fmt = new Intl.DateTimeFormat(locale, { weekday: \"short\" });\n return Array.from({ length: 7 }, (_, i) =>\n fmt.format(addDays(REF_SUNDAY, (weekStartsOn + i) % 7)).slice(0, 2),\n );\n }, [locale, weekStartsOn]);\n\n const titleFmt = React.useMemo(\n () => new Intl.DateTimeFormat(locale, { month: \"long\", year: \"numeric\" }),\n [locale],\n );\n\n function isDisabled(d: Date): boolean {\n if (min && compareDay(d, min) < 0) return true;\n if (max && compareDay(d, max) > 0) return true;\n return isDateDisabled?.(d) ?? false;\n }\n\n function commit(next: CalendarValue) {\n if (value === undefined) setInternalValue(next);\n onValueChange?.(next);\n }\n\n function selectDay(d: Date) {\n if (isDisabled(d)) return;\n const day = startOfDay(d);\n if (mode === \"range\") {\n const r = range;\n if (!r.start || (r.start && r.end)) {\n commit({ start: day, end: null });\n } else {\n commit(orderedRange(r.start, day));\n }\n } else {\n commit(day);\n }\n setFocusedDate(day);\n if (!isSameMonth(day, viewMonth)) setView(day);\n }\n\n function moveFocus(next: Date) {\n const clamped = clampDay(next, min, max);\n shouldFocusRef.current = true;\n setFocusedDate(clamped);\n // Keep the focused day visible across the shown month span.\n const firstVisible = viewMonth;\n const lastVisible = addMonths(viewMonth, numberOfMonths - 1);\n if (compareDay(clamped, firstVisible) < 0) setView(clamped);\n else if (compareDay(clamped, addMonths(lastVisible, 1)) >= 0)\n setView(addMonths(clamped, -(numberOfMonths - 1)));\n }\n\n // Prev/next buttons: shift the view AND keep the roving focus target inside\n // the visible span (so a keyboard user always lands on an in-month day). Does\n // not steal DOM focus (shouldFocusRef stays false).\n function shiftView(delta: number) {\n const nextView = addMonths(viewMonth, delta);\n setView(nextView);\n const dim = new Date(\n nextView.getFullYear(),\n nextView.getMonth() + 1,\n 0,\n ).getDate();\n const target = new Date(\n nextView.getFullYear(),\n nextView.getMonth(),\n Math.min(focusedDate.getDate(), dim),\n );\n setFocusedDate(clampDay(target, min, max));\n }\n\n function onKeyDown(e: React.KeyboardEvent) {\n const key = e.key;\n let next: Date | null = null;\n if (key === \"ArrowLeft\") next = addDays(focusedDate, -1);\n else if (key === \"ArrowRight\") next = addDays(focusedDate, 1);\n else if (key === \"ArrowUp\") next = addDays(focusedDate, -7);\n else if (key === \"ArrowDown\") next = addDays(focusedDate, 7);\n else if (key === \"PageUp\") next = addMonths(focusedDate, -1);\n else if (key === \"PageDown\") next = addMonths(focusedDate, 1);\n else if (key === \"Home\") next = addDays(focusedDate, -((focusedDate.getDay() - weekStartsOn + 7) % 7));\n else if (key === \"End\") next = addDays(focusedDate, 6 - ((focusedDate.getDay() - weekStartsOn + 7) % 7));\n else if (key === \"Enter\" || key === \" \") {\n e.preventDefault();\n selectDay(focusedDate);\n return;\n } else {\n return;\n }\n e.preventDefault();\n moveFocus(next);\n }\n\n // Effective range for painting (live preview while picking the end).\n const paintRange: DateRange =\n mode === \"range\" && range.start && !range.end && hoveredDate\n ? orderedRange(range.start, hoveredDate)\n : range;\n\n function renderMonth(offset: number) {\n const m = addMonths(viewMonth, offset);\n const first = startOfMonth(m);\n const lead = (first.getDay() - weekStartsOn + 7) % 7;\n const gridStart = addDays(first, -lead);\n const cells = Array.from({ length: 42 }, (_, i) => addDays(gridStart, i));\n const showPrev = offset === 0;\n const showNext = offset === numberOfMonths - 1;\n\n const prevDisabled =\n !!min && compareDay(startOfMonth(m), startOfMonth(min)) <= 0;\n const nextDisabled =\n !!max && compareDay(startOfMonth(m), startOfMonth(max)) >= 0;\n\n return (\n <div className={cx(sc(\"calendar-month\"))} key={offset}>\n <div className={cx(sc(\"calendar-header\"))}>\n {showPrev ? (\n <button\n type=\"button\"\n className={cx(sc(\"calendar-nav\"))}\n aria-label=\"Previous month\"\n disabled={prevDisabled}\n onClick={() => shiftView(-1)}\n >\n <ChevronLeftIcon />\n </button>\n ) : (\n <span className={cx(sc(\"calendar-nav\"))} aria-hidden=\"true\" />\n )}\n <div className={cx(sc(\"calendar-title\"))} aria-live=\"polite\">\n {titleFmt.format(m)}\n </div>\n {showNext ? (\n <button\n type=\"button\"\n className={cx(sc(\"calendar-nav\"))}\n aria-label=\"Next month\"\n disabled={nextDisabled}\n onClick={() => shiftView(1)}\n >\n <ChevronRightIcon />\n </button>\n ) : (\n <span className={cx(sc(\"calendar-nav\"))} aria-hidden=\"true\" />\n )}\n </div>\n\n <div className={cx(sc(\"calendar-weekdays\"))} aria-hidden=\"true\">\n {weekdayLabels.map((w, i) => (\n <div className={cx(sc(\"calendar-weekday\"))} key={i}>\n {w}\n </div>\n ))}\n </div>\n\n <div className={cx(sc(\"calendar-grid\"))} role=\"grid\">\n {cells.map((cell) => {\n const inMonth = isSameMonth(cell, m);\n const disabled = isDisabled(cell);\n const selected = mode === \"single\" && isSameDay(cell, range.start);\n const isStart = mode === \"range\" && isSameDay(cell, paintRange.start);\n const isEnd = mode === \"range\" && isSameDay(cell, paintRange.end);\n const inRange =\n mode === \"range\" &&\n !!paintRange.start &&\n !!paintRange.end &&\n compareDay(cell, paintRange.start) > 0 &&\n compareDay(cell, paintRange.end) < 0;\n const isFocused = isSameDay(cell, focusedDate);\n return (\n <button\n key={isoDate(cell) + (inMonth ? \"\" : \"-o\")}\n type=\"button\"\n className={cx(sc(\"calendar-day\"))}\n data-date={isoDate(cell)}\n data-in-month={inMonth ? \"\" : undefined}\n data-outside={!inMonth ? \"\" : undefined}\n data-today={isSameDay(cell, today) ? \"\" : undefined}\n data-selected={selected ? \"\" : undefined}\n data-range-start={isStart ? \"\" : undefined}\n data-range-end={isEnd ? \"\" : undefined}\n data-in-range={inRange ? \"\" : undefined}\n data-disabled={disabled ? \"\" : undefined}\n aria-disabled={disabled || undefined}\n aria-pressed={selected || isStart || isEnd || undefined}\n tabIndex={inMonth && isFocused ? 0 : -1}\n onClick={() => selectDay(cell)}\n onMouseEnter={\n mode === \"range\" ? () => setHoveredDate(cell) : undefined\n }\n onFocus={() => setFocusedDate(startOfDay(cell))}\n >\n {cell.getDate()}\n </button>\n );\n })}\n </div>\n </div>\n );\n }\n\n return (\n <div\n ref={rootRef}\n className={cx(\n sc(\"calendar\"),\n color && sc(`calendar-${color}`),\n className,\n )}\n onKeyDown={onKeyDown}\n onMouseLeave={mode === \"range\" ? () => setHoveredDate(null) : undefined}\n {...aria}\n >\n <div className={cx(sc(\"calendar-months\"))}>\n {Array.from({ length: Math.max(1, numberOfMonths) }, (_, i) =>\n renderMonth(i),\n )}\n </div>\n </div>\n );\n}\n","import * as React from \"react\";\nimport { Popover as BasePopover } from \"@base-ui-components/react/popover\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport { Calendar } from \"./calendar\";\nimport type {\n CalendarColor,\n CalendarValue,\n DateRange,\n Weekday,\n} from \"./calendar\";\nimport type { SilicaSize } from \"./lib/tokens\";\n\ntype PositionerProps = React.ComponentProps<typeof BasePopover.Positioner>;\nexport type DatePickerSide = NonNullable<PositionerProps[\"side\"]>;\nexport type DatePickerAlign = NonNullable<PositionerProps[\"align\"]>;\nexport type DatePickerColor = CalendarColor;\nexport type DatePickerSize = SilicaSize;\n\nconst CalendarIcon = () => (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" aria-hidden=\"true\">\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" />\n <path d=\"M16 2v4M8 2v4M3 10h18\" strokeLinecap=\"round\" />\n </svg>\n);\n\ninterface TriggerShellProps {\n color?: DatePickerColor;\n size?: DatePickerSize;\n disabled?: boolean;\n placeholder?: React.ReactNode;\n label: React.ReactNode | null;\n className?: string;\n id?: string;\n ariaLabel?: string;\n}\n\n/** The `.input`-styled button that opens the calendar popover. */\nfunction DateTrigger({\n color,\n size = \"md\",\n disabled,\n placeholder,\n label,\n className,\n id,\n ariaLabel,\n}: TriggerShellProps) {\n const sc = useSilicaClass();\n return (\n <BasePopover.Trigger\n id={id}\n disabled={disabled}\n aria-label={ariaLabel}\n data-placeholder={label == null ? \"\" : undefined}\n className={cx(\n sc(\"input\"),\n color && sc(`input-${color}`),\n size !== \"md\" && sc(`input-${size}`),\n sc(\"date-field\"),\n className,\n )}\n >\n <span className={cx(sc(\"date-field-value\"))}>{label ?? placeholder}</span>\n <span className={cx(sc(\"date-field-icon\"))}>\n <CalendarIcon />\n </span>\n </BasePopover.Trigger>\n );\n}\n\ninterface PopupShellProps {\n side: DatePickerSide;\n align: DatePickerAlign;\n sideOffset: number;\n popupClassName?: string;\n children: React.ReactNode;\n}\n\nfunction DatePopup({\n side,\n align,\n sideOffset,\n popupClassName,\n children,\n}: PopupShellProps) {\n const sc = useSilicaClass();\n return (\n <BasePopover.Portal>\n <BasePopover.Positioner side={side} align={align} sideOffset={sideOffset}>\n <BasePopover.Popup className={cx(sc(\"calendar-popup\"), popupClassName)}>\n {children}\n </BasePopover.Popup>\n </BasePopover.Positioner>\n </BasePopover.Portal>\n );\n}\n\n// ---------------------------------------------------------------------------\n// DatePicker (single)\n// ---------------------------------------------------------------------------\n\nexport interface DatePickerProps {\n value?: Date | null;\n defaultValue?: Date | null;\n onValueChange?: (value: Date | null) => void;\n placeholder?: React.ReactNode;\n disabled?: boolean;\n weekStartsOn?: Weekday;\n min?: Date;\n max?: Date;\n isDateDisabled?: (date: Date) => boolean;\n locale?: string;\n /** Intl options for the trigger label (default `{ dateStyle: \"medium\" }`). */\n formatOptions?: Intl.DateTimeFormatOptions;\n color?: DatePickerColor;\n size?: DatePickerSize;\n side?: DatePickerSide;\n align?: DatePickerAlign;\n sideOffset?: number;\n className?: string;\n popupClassName?: string;\n id?: string;\n \"aria-label\"?: string;\n}\n\n/**\n * Silica DatePicker — an input that opens a `Calendar` popover to pick one date.\n *\n * <DatePicker value={date} onValueChange={setDate} placeholder=\"Pick a date\" />\n */\nexport function DatePicker({\n value,\n defaultValue,\n onValueChange,\n placeholder = \"Pick a date\",\n disabled,\n weekStartsOn,\n min,\n max,\n isDateDisabled,\n locale,\n formatOptions = { dateStyle: \"medium\" },\n color,\n size,\n side = \"bottom\",\n align = \"start\",\n sideOffset = 6,\n className,\n popupClassName,\n id,\n \"aria-label\": ariaLabel,\n}: DatePickerProps) {\n const [open, setOpen] = React.useState(false);\n const [internal, setInternal] = React.useState<Date | null>(\n defaultValue ?? null,\n );\n const current = value !== undefined ? value : internal;\n\n const fmt = React.useMemo(\n () => new Intl.DateTimeFormat(locale, formatOptions),\n [locale, formatOptions],\n );\n const label = current ? fmt.format(current) : null;\n\n function handleChange(v: CalendarValue) {\n const date = (v as Date | null) ?? null;\n if (value === undefined) setInternal(date);\n onValueChange?.(date);\n setOpen(false);\n }\n\n return (\n <BasePopover.Root open={open} onOpenChange={setOpen}>\n <DateTrigger\n color={color}\n size={size}\n disabled={disabled}\n placeholder={placeholder}\n label={label}\n className={className}\n id={id}\n ariaLabel={ariaLabel}\n />\n <DatePopup\n side={side}\n align={align}\n sideOffset={sideOffset}\n popupClassName={popupClassName}\n >\n <Calendar\n mode=\"single\"\n value={current}\n onValueChange={handleChange}\n weekStartsOn={weekStartsOn}\n min={min}\n max={max}\n isDateDisabled={isDateDisabled}\n locale={locale}\n color={color}\n />\n </DatePopup>\n </BasePopover.Root>\n );\n}\n\n// ---------------------------------------------------------------------------\n// DateRangePicker\n// ---------------------------------------------------------------------------\n\nexport interface DateRangePickerProps {\n value?: DateRange;\n defaultValue?: DateRange;\n onValueChange?: (value: DateRange) => void;\n placeholder?: React.ReactNode;\n disabled?: boolean;\n numberOfMonths?: number;\n weekStartsOn?: Weekday;\n min?: Date;\n max?: Date;\n isDateDisabled?: (date: Date) => boolean;\n locale?: string;\n formatOptions?: Intl.DateTimeFormatOptions;\n color?: DatePickerColor;\n size?: DatePickerSize;\n side?: DatePickerSide;\n align?: DatePickerAlign;\n sideOffset?: number;\n className?: string;\n popupClassName?: string;\n id?: string;\n \"aria-label\"?: string;\n}\n\nconst EMPTY_RANGE: DateRange = { start: null, end: null };\n\n/**\n * Silica DateRangePicker — an input that opens a two-month `Calendar` to pick a\n * start/end range. Closes once both ends are chosen.\n *\n * <DateRangePicker value={range} onValueChange={setRange} />\n */\nexport function DateRangePicker({\n value,\n defaultValue,\n onValueChange,\n placeholder = \"Pick a range\",\n disabled,\n numberOfMonths = 2,\n weekStartsOn,\n min,\n max,\n isDateDisabled,\n locale,\n formatOptions = { dateStyle: \"medium\" },\n color,\n size,\n side = \"bottom\",\n align = \"start\",\n sideOffset = 6,\n className,\n popupClassName,\n id,\n \"aria-label\": ariaLabel,\n}: DateRangePickerProps) {\n const [open, setOpen] = React.useState(false);\n const [internal, setInternal] = React.useState<DateRange>(\n defaultValue ?? EMPTY_RANGE,\n );\n const current = value !== undefined ? value : internal;\n\n const fmt = React.useMemo(\n () => new Intl.DateTimeFormat(locale, formatOptions),\n [locale, formatOptions],\n );\n const label =\n current.start && current.end\n ? `${fmt.format(current.start)} – ${fmt.format(current.end)}`\n : current.start\n ? `${fmt.format(current.start)} – …`\n : null;\n\n function handleChange(v: CalendarValue) {\n const next = (v as DateRange) ?? EMPTY_RANGE;\n if (value === undefined) setInternal(next);\n onValueChange?.(next);\n if (next.start && next.end) setOpen(false);\n }\n\n return (\n <BasePopover.Root open={open} onOpenChange={setOpen}>\n <DateTrigger\n color={color}\n size={size}\n disabled={disabled}\n placeholder={placeholder}\n label={label}\n className={className}\n id={id}\n ariaLabel={ariaLabel}\n />\n <DatePopup\n side={side}\n align={align}\n sideOffset={sideOffset}\n popupClassName={popupClassName}\n >\n <Calendar\n mode=\"range\"\n numberOfMonths={numberOfMonths}\n value={current}\n onValueChange={handleChange}\n weekStartsOn={weekStartsOn}\n min={min}\n max={max}\n isDateDisabled={isDateDisabled}\n locale={locale}\n color={color}\n />\n </DatePopup>\n </BasePopover.Root>\n );\n}\n","import * as React from \"react\";\nimport { Tooltip as BaseTooltip } from \"@base-ui-components/react/tooltip\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\n// Derive the side/align unions straight from Base UI so they never drift.\ntype PositionerProps = React.ComponentProps<typeof BaseTooltip.Positioner>;\nexport type TooltipSide = NonNullable<PositionerProps[\"side\"]>;\nexport type TooltipAlign = NonNullable<PositionerProps[\"align\"]>;\n\nexport interface TooltipProps {\n /** The floating content. */\n content: React.ReactNode;\n /** The trigger element — Base UI merges hover/focus behavior onto it. */\n children: React.ReactElement;\n /** Which side of the trigger to prefer. Default `top` (flips to avoid collisions). */\n side?: TooltipSide;\n /** Alignment along that side. Default `center`. */\n align?: TooltipAlign;\n /** Gap between trigger and popup, in px. Default `8`. */\n sideOffset?: number;\n /** Hover-open delay in ms. Default `600` (Base UI). */\n delay?: number;\n /** Close delay in ms. Default `0`. */\n closeDelay?: number;\n /** Controlled open state. */\n open?: boolean;\n /** Uncontrolled initial open state. */\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n /** Disable the tooltip entirely. */\n disabled?: boolean;\n /** Show the little arrow. Default `true`. */\n arrow?: boolean;\n /** Extra class on the popup surface. */\n className?: string;\n}\n\n/**\n * Silica Tooltip — behavior from Base UI, look from Silica's `.tooltip` CSS.\n *\n * <Tooltip content=\"Copy link\">\n * <Button variant=\"ghost\">Copy</Button>\n * </Tooltip>\n *\n * Wrap a subtree in <TooltipProvider> to share a delay across many tooltips\n * (adjacent ones then open instantly).\n */\nexport function Tooltip({\n content,\n children,\n side = \"top\",\n align = \"center\",\n sideOffset = 8,\n delay,\n closeDelay,\n open,\n defaultOpen,\n onOpenChange,\n disabled,\n arrow = true,\n className,\n}: TooltipProps) {\n const sc = useSilicaClass();\n return (\n <BaseTooltip.Root\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n disabled={disabled}\n >\n <BaseTooltip.Trigger\n // children is any valid element; Base UI's render wants the element's\n // props typed as an index — a safe cast, not a behavior change.\n render={children as React.ReactElement<Record<string, unknown>>}\n delay={delay}\n closeDelay={closeDelay}\n />\n <BaseTooltip.Portal>\n <BaseTooltip.Positioner side={side} align={align} sideOffset={sideOffset}>\n <BaseTooltip.Popup className={cx(sc(\"tooltip\"), className)}>\n {arrow && <BaseTooltip.Arrow className={cx(sc(\"tooltip-arrow\"))} />}\n {content}\n </BaseTooltip.Popup>\n </BaseTooltip.Positioner>\n </BaseTooltip.Portal>\n </BaseTooltip.Root>\n );\n}\n\nexport type TooltipProviderProps = React.ComponentProps<\n typeof BaseTooltip.Provider\n>;\n\n/** Shares a hover delay across the tooltips beneath it (adjacent open instantly). */\nexport function TooltipProvider(props: TooltipProviderProps) {\n return <BaseTooltip.Provider {...props} />;\n}\n","import * as React from \"react\";\nimport { Dialog as BaseDialog } from \"@base-ui-components/react/dialog\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\n// Props of a styled Base UI part: its own props but with a plain-string className.\ntype Styled<T extends React.ElementType> = Omit<\n React.ComponentPropsWithoutRef<T>,\n \"className\"\n> & { className?: string };\n\nconst asRender = (el: React.ReactElement) =>\n el as React.ReactElement<Record<string, unknown>>;\n\nexport type DialogProps = React.ComponentProps<typeof BaseDialog.Root>;\n\n/**\n * Silica Dialog — a modal, from Base UI (focus trap + scroll lock + dismissal).\n *\n * <Dialog>\n * <DialogTrigger><Button>Delete…</Button></DialogTrigger>\n * <DialogContent>\n * <DialogTitle>Delete project?</DialogTitle>\n * <DialogDescription>This can't be undone.</DialogDescription>\n * <div className=\"mt-4 flex justify-end gap-2\">\n * <DialogClose><Button variant=\"ghost\">Cancel</Button></DialogClose>\n * <DialogClose><Button color=\"error\">Delete</Button></DialogClose>\n * </div>\n * </DialogContent>\n * </Dialog>\n *\n * Pass `modal=\"trap-focus\"` for a non-scroll-locking dialog, or control it with\n * `open`/`onOpenChange`.\n */\nexport const Dialog = BaseDialog.Root;\n\n/** Wraps its single child element as the element that opens the dialog. */\nexport function DialogTrigger({ children }: { children: React.ReactElement }) {\n return <BaseDialog.Trigger render={asRender(children)} />;\n}\n\n/** Wraps its single child element as an element that closes the dialog. */\nexport function DialogClose({ children }: { children: React.ReactElement }) {\n return <BaseDialog.Close render={asRender(children)} />;\n}\n\nexport interface DialogContentProps\n extends Omit<Styled<typeof BaseDialog.Popup>, \"children\"> {\n children?: React.ReactNode;\n /** Class for the backdrop layer. */\n backdropClassName?: string;\n}\n\n/** Portals + backdrop + the centered popup surface in one. */\nexport function DialogContent({\n className,\n backdropClassName,\n children,\n ...rest\n}: DialogContentProps) {\n const sc = useSilicaClass();\n return (\n <BaseDialog.Portal>\n <BaseDialog.Backdrop\n className={cx(sc(\"dialog-backdrop\"), backdropClassName)}\n />\n <BaseDialog.Popup className={cx(sc(\"dialog-popup\"), className)} {...rest}>\n {children}\n </BaseDialog.Popup>\n </BaseDialog.Portal>\n );\n}\n\nexport function DialogTitle({ className, ...rest }: Styled<typeof BaseDialog.Title>) {\n const sc = useSilicaClass();\n return <BaseDialog.Title className={cx(sc(\"dialog-title\"), className)} {...rest} />;\n}\n\nexport function DialogDescription({\n className,\n ...rest\n}: Styled<typeof BaseDialog.Description>) {\n const sc = useSilicaClass();\n return (\n <BaseDialog.Description\n className={cx(sc(\"dialog-description\"), className)}\n {...rest}\n />\n );\n}\n","import * as React from \"react\";\nimport { Popover as BasePopover } from \"@base-ui-components/react/popover\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\ntype Styled<T extends React.ElementType> = Omit<\n React.ComponentPropsWithoutRef<T>,\n \"className\"\n> & { className?: string };\n\nconst asRender = (el: React.ReactElement) =>\n el as React.ReactElement<Record<string, unknown>>;\n\ntype PositionerProps = React.ComponentProps<typeof BasePopover.Positioner>;\nexport type PopoverSide = NonNullable<PositionerProps[\"side\"]>;\nexport type PopoverAlign = NonNullable<PositionerProps[\"align\"]>;\n\nexport type PopoverProps = React.ComponentProps<typeof BasePopover.Root>;\n\n/**\n * Silica Popover — a click-triggered floating panel (Base UI).\n *\n * <Popover>\n * <PopoverTrigger><Button variant=\"outline\">Details</Button></PopoverTrigger>\n * <PopoverContent>\n * <PopoverTitle>Storage</PopoverTitle>\n * <PopoverDescription>92% of your quota is used.</PopoverDescription>\n * </PopoverContent>\n * </Popover>\n */\nexport const Popover = BasePopover.Root;\n\nexport function PopoverTrigger({ children }: { children: React.ReactElement }) {\n return <BasePopover.Trigger render={asRender(children)} />;\n}\n\nexport function PopoverClose({ children }: { children: React.ReactElement }) {\n return <BasePopover.Close render={asRender(children)} />;\n}\n\nexport interface PopoverContentProps\n extends Omit<Styled<typeof BasePopover.Popup>, \"children\"> {\n children?: React.ReactNode;\n side?: PopoverSide;\n align?: PopoverAlign;\n sideOffset?: number;\n /** Show the little arrow. Default `false`. */\n arrow?: boolean;\n}\n\n/** Portal + positioner + the popup panel. */\nexport function PopoverContent({\n className,\n children,\n side = \"bottom\",\n align = \"center\",\n sideOffset = 8,\n arrow = false,\n ...rest\n}: PopoverContentProps) {\n const sc = useSilicaClass();\n return (\n <BasePopover.Portal>\n <BasePopover.Positioner side={side} align={align} sideOffset={sideOffset}>\n <BasePopover.Popup className={cx(sc(\"popover\"), className)} {...rest}>\n {arrow && <BasePopover.Arrow className={cx(sc(\"popover-arrow\"))} />}\n {children}\n </BasePopover.Popup>\n </BasePopover.Positioner>\n </BasePopover.Portal>\n );\n}\n\nexport function PopoverTitle({ className, ...rest }: Styled<typeof BasePopover.Title>) {\n const sc = useSilicaClass();\n return (\n <BasePopover.Title className={cx(sc(\"popover-title\"), className)} {...rest} />\n );\n}\n\nexport function PopoverDescription({\n className,\n ...rest\n}: Styled<typeof BasePopover.Description>) {\n const sc = useSilicaClass();\n return (\n <BasePopover.Description\n className={cx(sc(\"popover-description\"), className)}\n {...rest}\n />\n );\n}\n","import * as React from \"react\";\nimport { Menu as BaseMenu } from \"@base-ui-components/react/menu\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\ntype Styled<T extends React.ElementType> = Omit<\n React.ComponentPropsWithoutRef<T>,\n \"className\"\n> & { className?: string };\n\nconst asRender = (el: React.ReactElement) =>\n el as React.ReactElement<Record<string, unknown>>;\n\ntype PositionerProps = React.ComponentProps<typeof BaseMenu.Positioner>;\nexport type DropdownMenuSide = NonNullable<PositionerProps[\"side\"]>;\nexport type DropdownMenuAlign = NonNullable<PositionerProps[\"align\"]>;\n\nexport type DropdownMenuProps = React.ComponentProps<typeof BaseMenu.Root>;\n\n/**\n * Silica Dropdown Menu — a command menu (Base UI: roving focus, typeahead,\n * dismissal). Distinct from the static `Menu` nav-list.\n *\n * <DropdownMenu>\n * <DropdownMenuTrigger><Button variant=\"outline\">Options</Button></DropdownMenuTrigger>\n * <DropdownMenuContent>\n * <DropdownMenuLabel>Actions</DropdownMenuLabel>\n * <DropdownMenuItem onClick={…}>Edit</DropdownMenuItem>\n * <DropdownMenuItem onClick={…}>Duplicate</DropdownMenuItem>\n * <DropdownMenuSeparator />\n * <DropdownMenuItem disabled>Archive</DropdownMenuItem>\n * </DropdownMenuContent>\n * </DropdownMenu>\n */\nexport const DropdownMenu = BaseMenu.Root;\n\nexport function DropdownMenuTrigger({ children }: { children: React.ReactElement }) {\n return <BaseMenu.Trigger render={asRender(children)} />;\n}\n\nexport interface DropdownMenuContentProps\n extends Omit<Styled<typeof BaseMenu.Popup>, \"children\"> {\n children?: React.ReactNode;\n side?: DropdownMenuSide;\n align?: DropdownMenuAlign;\n sideOffset?: number;\n}\n\n/** Portal + positioner + the menu popup. */\nexport function DropdownMenuContent({\n className,\n children,\n side = \"bottom\",\n align = \"start\",\n sideOffset = 6,\n ...rest\n}: DropdownMenuContentProps) {\n const sc = useSilicaClass();\n return (\n <BaseMenu.Portal>\n <BaseMenu.Positioner side={side} align={align} sideOffset={sideOffset}>\n <BaseMenu.Popup className={cx(sc(\"dropdown\"), className)} {...rest}>\n {children}\n </BaseMenu.Popup>\n </BaseMenu.Positioner>\n </BaseMenu.Portal>\n );\n}\n\nexport function DropdownMenuItem({ className, ...rest }: Styled<typeof BaseMenu.Item>) {\n const sc = useSilicaClass();\n return <BaseMenu.Item className={cx(sc(\"dropdown-item\"), className)} {...rest} />;\n}\n\nexport function DropdownMenuSeparator({\n className,\n ...rest\n}: Styled<typeof BaseMenu.Separator>) {\n const sc = useSilicaClass();\n return (\n <BaseMenu.Separator\n className={cx(sc(\"dropdown-separator\"), className)}\n {...rest}\n />\n );\n}\n\nexport function DropdownMenuGroup(props: React.ComponentProps<typeof BaseMenu.Group>) {\n return <BaseMenu.Group {...props} />;\n}\n\nexport function DropdownMenuLabel({\n className,\n ...rest\n}: Styled<typeof BaseMenu.GroupLabel>) {\n const sc = useSilicaClass();\n return (\n <BaseMenu.GroupLabel className={cx(sc(\"dropdown-label\"), className)} {...rest} />\n );\n}\n","import * as React from \"react\";\nimport { Tabs as BaseTabs } from \"@base-ui-components/react/tabs\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor } from \"./lib/tokens\";\n\ntype Styled<T extends React.ElementType> = Omit<\n React.ComponentPropsWithoutRef<T>,\n \"className\"\n> & { className?: string };\n\nexport type TabValue = React.ComponentProps<typeof BaseTabs.Tab>[\"value\"];\n\n/** Visual style. `underline` (default), `boxed` (segmented), or `pills`. */\nexport type TabsVariant = \"underline\" | \"boxed\" | \"pills\";\n\nexport type TabsColor = SilicaColor;\n\nexport interface TabsProps extends Styled<typeof BaseTabs.Root> {\n variant?: TabsVariant;\n /** Accent color (underline + pills fill); maps to `tabs-<color>`. Default primary. */\n color?: TabsColor;\n}\n\n/**\n * Silica Tabs — Base UI selection state + roving focus + a moving indicator.\n *\n * <Tabs defaultValue=\"account\" variant=\"boxed\">\n * <TabsList>\n * <TabsTab value=\"account\">Account</TabsTab>\n * <TabsTab value=\"password\">Password</TabsTab>\n * </TabsList>\n * <TabsPanel value=\"account\">…</TabsPanel>\n * <TabsPanel value=\"password\">…</TabsPanel>\n * </Tabs>\n *\n * The same sliding indicator styles per variant — an underline, or a full pill.\n */\nexport function Tabs({ variant = \"underline\", color, className, ...rest }: TabsProps) {\n const sc = useSilicaClass();\n return (\n <BaseTabs.Root\n className={cx(\n sc(\"tabs\"),\n variant !== \"underline\" && sc(`tabs-${variant}`),\n color && sc(`tabs-${color}`),\n className,\n )}\n {...rest}\n />\n );\n}\n\nexport interface TabsListProps extends Omit<Styled<typeof BaseTabs.List>, \"children\"> {\n children?: React.ReactNode;\n /** Render the moving underline indicator. Default `true`. */\n indicator?: boolean;\n}\n\nexport function TabsList({ className, children, indicator = true, ...rest }: TabsListProps) {\n const sc = useSilicaClass();\n return (\n <BaseTabs.List className={cx(sc(\"tabs-list\"), className)} {...rest}>\n {children}\n {indicator && <BaseTabs.Indicator className={cx(sc(\"tabs-indicator\"))} />}\n </BaseTabs.List>\n );\n}\n\nexport function TabsTab({ className, ...rest }: Styled<typeof BaseTabs.Tab>) {\n const sc = useSilicaClass();\n return <BaseTabs.Tab className={cx(sc(\"tabs-tab\"), className)} {...rest} />;\n}\n\nexport function TabsPanel({ className, ...rest }: Styled<typeof BaseTabs.Panel>) {\n const sc = useSilicaClass();\n return <BaseTabs.Panel className={cx(sc(\"tabs-panel\"), className)} {...rest} />;\n}\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor, SilicaSize } from \"./lib/tokens\";\n\nexport interface CheckboxProps\n extends Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n \"size\" | \"color\" | \"type\"\n > {\n /** Accent color; maps to `checkbox-<color>` (checked fill + focus ring). */\n color?: SilicaColor;\n /** Default `md`. */\n size?: SilicaSize;\n}\n\n/**\n * Silica Checkbox — a restyled native `<input type=\"checkbox\">`. All native\n * attributes (`checked`, `defaultChecked`, `onChange`, `disabled`, …) pass\n * through. Pair it with your own `<label>` for a clickable caption.\n */\nexport const Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(\n function Checkbox({ color, size = \"md\", className, ...rest }, ref) {\n const sc = useSilicaClass();\n const classes = cx(\n sc(\"checkbox\"),\n color && sc(`checkbox-${color}`),\n size !== \"md\" && sc(`checkbox-${size}`),\n className,\n );\n return <input ref={ref} type=\"checkbox\" className={classes} {...rest} />;\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor, SilicaSize } from \"./lib/tokens\";\n\nexport interface RadioProps\n extends Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n \"size\" | \"color\" | \"type\"\n > {\n /** Accent color; maps to `radio-<color>` (checked dot + focus ring). */\n color?: SilicaColor;\n /** Default `md`. */\n size?: SilicaSize;\n}\n\n/**\n * Silica Radio — a restyled native `<input type=\"radio\">`. Group them by giving\n * several the same `name`. All native attributes pass through.\n */\nexport const Radio = React.forwardRef<HTMLInputElement, RadioProps>(\n function Radio({ color, size = \"md\", className, ...rest }, ref) {\n const sc = useSilicaClass();\n const classes = cx(\n sc(\"radio\"),\n color && sc(`radio-${color}`),\n size !== \"md\" && sc(`radio-${size}`),\n className,\n );\n return <input ref={ref} type=\"radio\" className={classes} {...rest} />;\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor, SilicaSize } from \"./lib/tokens\";\n\nexport interface ToggleProps\n extends Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n \"size\" | \"color\" | \"type\"\n > {\n /** Accent color; maps to `toggle-<color>` (checked track fill). */\n color?: SilicaColor;\n /** Default `md`. */\n size?: SilicaSize;\n}\n\n/**\n * Silica Toggle — a restyled native `<input type=\"checkbox\">` presented as a\n * switch. Adds `role=\"switch\"` for assistive tech; all native attributes\n * (`checked`, `onChange`, `disabled`, …) pass through.\n */\nexport const Toggle = React.forwardRef<HTMLInputElement, ToggleProps>(\n function Toggle({ color, size = \"md\", className, ...rest }, ref) {\n const sc = useSilicaClass();\n const classes = cx(\n sc(\"toggle\"),\n color && sc(`toggle-${color}`),\n size !== \"md\" && sc(`toggle-${size}`),\n className,\n );\n return (\n <input\n ref={ref}\n type=\"checkbox\"\n role=\"switch\"\n className={classes}\n {...rest}\n />\n );\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport type { SilicaColor } from \"./lib/tokens\";\n\nexport type TagInputSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface TagInputProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\" | \"color\"> {\n /** Controlled tag list. */\n value?: string[];\n /** Uncontrolled initial tags. */\n defaultValue?: string[];\n /** Called with the next tag list whenever it changes. */\n onValueChange?: (tags: string[]) => void;\n /** Placeholder shown in the text field when there are no tags. */\n placeholder?: string;\n /** Disable the whole control. */\n disabled?: boolean;\n /** Chip + focus-ring accent color. */\n color?: SilicaColor;\n /** Height/type scale. Default `\"md\"`. */\n size?: TagInputSize;\n /** Keys that commit the current text as a tag. Default `[\"Enter\", \",\"]`. */\n separators?: string[];\n /** Reject duplicate tags. Default `true`. */\n dedupe?: boolean;\n /** Maximum number of tags. */\n max?: number;\n /** Commit any pending text when the field loses focus. Default `true`. */\n addOnBlur?: boolean;\n /** Extra props for the inner `<input>`. */\n inputProps?: React.InputHTMLAttributes<HTMLInputElement>;\n}\n\n/**\n * A chip-based multi-value text field — tags for segments, recipients,\n * categories, and the like. Type and press Enter (or comma) to add; Backspace on\n * an empty field removes the last tag. Controlled via `value`/`onValueChange` or\n * uncontrolled via `defaultValue`.\n */\nexport const TagInput = React.forwardRef<HTMLDivElement, TagInputProps>(\n function TagInput(\n {\n value,\n defaultValue,\n onValueChange,\n placeholder,\n disabled,\n color,\n size = \"md\",\n separators = [\"Enter\", \",\"],\n dedupe = true,\n max,\n addOnBlur = true,\n inputProps,\n className,\n ...rest\n },\n forwardedRef,\n ) {\n const sc = useSilicaClass();\n const isControlled = value !== undefined;\n const [uncontrolled, setUncontrolled] = React.useState<string[]>(\n defaultValue ?? [],\n );\n const tags = isControlled ? value : uncontrolled;\n const [text, setText] = React.useState(\"\");\n const fieldRef = React.useRef<HTMLInputElement>(null);\n\n const commit = (next: string[]) => {\n if (!isControlled) setUncontrolled(next);\n onValueChange?.(next);\n };\n\n const addTag = (raw: string) => {\n const t = raw.trim();\n if (!t) return;\n setText(\"\");\n if (dedupe && tags.includes(t)) return;\n if (max != null && tags.length >= max) return;\n commit([...tags, t]);\n };\n\n const removeAt = (index: number) => {\n commit(tags.filter((_, i) => i !== index));\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (separators.includes(e.key)) {\n e.preventDefault();\n addTag(text);\n } else if (e.key === \"Backspace\" && text === \"\" && tags.length > 0) {\n removeAt(tags.length - 1);\n }\n inputProps?.onKeyDown?.(e);\n };\n\n return (\n <div\n ref={forwardedRef}\n className={cx(\n sc(\"tag-input\"),\n color && sc(`tag-input-${color}`),\n size !== \"md\" && sc(`tag-input-${size}`),\n className,\n )}\n data-disabled={disabled || undefined}\n onMouseDown={(e) => {\n // Clicking the empty part of the box focuses the field without\n // stealing focus from a chip's remove button.\n if (e.target === e.currentTarget) {\n e.preventDefault();\n fieldRef.current?.focus();\n }\n }}\n {...rest}\n >\n {tags.map((tag, i) => (\n <span key={`${tag}-${i}`} className={cx(sc(\"tag-input-chip\"))}>\n <span className={cx(sc(\"tag-input-chip-label\"))}>{tag}</span>\n {!disabled && (\n <button\n type=\"button\"\n className={cx(sc(\"tag-input-remove\"))}\n aria-label={`Remove ${tag}`}\n onClick={(e) => {\n e.stopPropagation();\n removeAt(i);\n }}\n >\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n >\n <path d=\"M6 6l12 12M18 6L6 18\" />\n </svg>\n </button>\n )}\n </span>\n ))}\n <input\n ref={fieldRef}\n type=\"text\"\n className={cx(sc(\"tag-input-field\"))}\n value={text}\n placeholder={tags.length === 0 ? placeholder : undefined}\n disabled={disabled}\n {...inputProps}\n onChange={(e) => {\n setText(e.target.value);\n inputProps?.onChange?.(e);\n }}\n onKeyDown={handleKeyDown}\n onBlur={(e) => {\n if (addOnBlur) addTag(text);\n inputProps?.onBlur?.(e);\n }}\n />\n </div>\n );\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport type EmptyStateSize = \"sm\" | \"md\";\n\nexport interface EmptyStateProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"title\"> {\n /** Icon/illustration shown in the chip above the title. */\n icon?: React.ReactNode;\n /** Headline (e.g. \"No orders yet\"). */\n title?: React.ReactNode;\n /** Supporting copy under the title. */\n description?: React.ReactNode;\n /** Action buttons/links rendered below the copy. */\n actions?: React.ReactNode;\n /** `\"md\"` (default) or the more compact `\"sm\"`. */\n size?: EmptyStateSize;\n}\n\n/**\n * The centered \"nothing here yet\" placeholder — icon, title, description, and an\n * action row. Drop it into an empty list, a table body, a card, or a panel.\n * Slots are optional; `children` renders between the description and the actions\n * for custom content.\n */\nexport const EmptyState = React.forwardRef<HTMLDivElement, EmptyStateProps>(\n function EmptyState(\n { icon, title, description, actions, size = \"md\", className, children, ...rest },\n ref,\n ) {\n const sc = useSilicaClass();\n return (\n <div\n ref={ref}\n className={cx(\n sc(\"empty-state\"),\n size === \"sm\" && sc(\"empty-state-sm\"),\n className,\n )}\n {...rest}\n >\n {icon != null && <div className={cx(sc(\"empty-state-icon\"))}>{icon}</div>}\n {title != null && (\n <div className={cx(sc(\"empty-state-title\"))}>{title}</div>\n )}\n {description != null && (\n <div className={cx(sc(\"empty-state-description\"))}>{description}</div>\n )}\n {children}\n {actions != null && (\n <div className={cx(sc(\"empty-state-actions\"))}>{actions}</div>\n )}\n </div>\n );\n },\n);\n","/**\n * OKLCH ↔ sRGB color math — pure, dependency-free.\n *\n * SilicaUI's whole color system is OKLCH (see the theme tokens), so the\n * `ColorPicker` is OKLCH-native: it edits L (lightness 0–1), C (chroma 0–~0.37),\n * and H (hue 0–360) directly. These helpers convert to/from sRGB so the picker\n * can show a hex readout and accept hex input, and clamp out-of-gamut colors for\n * display. The matrices are Björn Ottosson's canonical OKLab ⇄ linear-sRGB\n * transforms (https://bottosson.github.io/posts/oklab/).\n */\n\nexport interface Oklch {\n /** Lightness, 0–1. */\n l: number;\n /** Chroma, 0–~0.37 (values past the sRGB gamut get clamped on export). */\n c: number;\n /** Hue angle in degrees, 0–360. */\n h: number;\n}\n\n/** Largest chroma the picker exposes — a bit past sRGB's gamut for most hues. */\nexport const MAX_CHROMA = 0.37;\n\nconst clamp01 = (x: number) => (x < 0 ? 0 : x > 1 ? 1 : x);\n\n/** linear-light channel → gamma-encoded sRGB (0–1). */\nfunction gammaEncode(x: number): number {\n return x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055;\n}\n\n/** gamma-encoded sRGB channel (0–1) → linear-light. */\nfunction gammaDecode(x: number): number {\n return x <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\n/** OKLCH → linear sRGB (may fall outside 0–1 when out of gamut). */\nfunction oklchToLinear(l: number, c: number, h: number): [number, number, number] {\n const hr = (h * Math.PI) / 180;\n const a = c * Math.cos(hr);\n const b = c * Math.sin(hr);\n\n const l_ = l + 0.3963377774 * a + 0.2158037573 * b;\n const m_ = l - 0.1055613458 * a - 0.0638541728 * b;\n const s_ = l - 0.0894841775 * a - 1.291485548 * b;\n\n const L = l_ * l_ * l_;\n const M = m_ * m_ * m_;\n const S = s_ * s_ * s_;\n\n return [\n 4.0767416621 * L - 3.3077115913 * M + 0.2309699292 * S,\n -1.2684380046 * L + 2.6097574011 * M - 0.3413193965 * S,\n -0.0041960863 * L - 0.7034186147 * M + 1.707614701 * S,\n ];\n}\n\n/** True if the OKLCH color is representable in sRGB without clamping. */\nexport function inGamut(l: number, c: number, h: number): boolean {\n const [r, g, b] = oklchToLinear(l, c, h);\n const eps = 1e-4;\n return (\n r >= -eps &&\n r <= 1 + eps &&\n g >= -eps &&\n g <= 1 + eps &&\n b >= -eps &&\n b <= 1 + eps\n );\n}\n\n/** OKLCH → sRGB bytes (0–255), gamut-clamped per channel. */\nexport function oklchToRgb(l: number, c: number, h: number): [number, number, number] {\n const [r, g, b] = oklchToLinear(l, c, h);\n return [\n Math.round(clamp01(gammaEncode(r)) * 255),\n Math.round(clamp01(gammaEncode(g)) * 255),\n Math.round(clamp01(gammaEncode(b)) * 255),\n ];\n}\n\n/** OKLCH → `#rrggbb`, gamut-clamped. */\nexport function oklchToHex(l: number, c: number, h: number): string {\n const [r, g, b] = oklchToRgb(l, c, h);\n const hex = (n: number) => n.toString(16).padStart(2, \"0\");\n return `#${hex(r)}${hex(g)}${hex(b)}`;\n}\n\n/** `#rgb`/`#rrggbb` → OKLCH, or `null` if it doesn't parse. */\nexport function hexToOklch(hex: string): Oklch | null {\n const m = /^#?([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(hex.trim());\n if (!m || !m[1]) return null;\n let s = m[1];\n if (s.length === 3) s = s.replace(/./g, (ch) => ch + ch);\n const rn = parseInt(s.slice(0, 2), 16) / 255;\n const gn = parseInt(s.slice(2, 4), 16) / 255;\n const bn = parseInt(s.slice(4, 6), 16) / 255;\n\n const r = gammaDecode(rn);\n const g = gammaDecode(gn);\n const b = gammaDecode(bn);\n\n const l = 0.4122214708 * r + 0.5363325363 * g + 0.0514459929 * b;\n const m2 = 0.2119034982 * r + 0.6806995451 * g + 0.1073969566 * b;\n const s2 = 0.0883024619 * r + 0.2817188376 * g + 0.6299787005 * b;\n\n const l_ = Math.cbrt(l);\n const m_ = Math.cbrt(m2);\n const s_ = Math.cbrt(s2);\n\n const L = 0.2104542553 * l_ + 0.793617785 * m_ - 0.0040720468 * s_;\n const a = 1.9779984951 * l_ - 2.428592205 * m_ + 0.4505937099 * s_;\n const bb = 0.0259040371 * l_ + 0.7827717662 * m_ - 0.808675766 * s_;\n\n const c = Math.sqrt(a * a + bb * bb);\n let hue = (Math.atan2(bb, a) * 180) / Math.PI;\n if (hue < 0) hue += 360;\n return { l: L, c, h: hue };\n}\n\n/** OKLCH → a canonical `oklch(L C H)` string with sensible rounding. */\nexport function formatOklch(l: number, c: number, h: number): string {\n const r3 = (n: number) => Math.round(n * 1000) / 1000;\n const r1 = (n: number) => Math.round(n * 10) / 10;\n return `oklch(${r3(l)} ${r3(c)} ${r1(h)})`;\n}\n\n/** Parse an `oklch(L C H)` string (L/C plain numbers or %) → OKLCH, or `null`. */\nexport function parseOklch(input: string): Oklch | null {\n const m = /oklch\\(\\s*([\\d.]+%?)\\s+([\\d.]+%?)\\s+([\\d.]+)/i.exec(input);\n if (!m) return null;\n const [, ls, cs, hs] = m;\n if (ls === undefined || cs === undefined || hs === undefined) return null;\n const num = (s: string, scale: number) =>\n s.endsWith(\"%\") ? (parseFloat(s) / 100) * scale : parseFloat(s);\n return { l: num(ls, 1), c: num(cs, 1), h: parseFloat(hs) };\n}\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport {\n MAX_CHROMA,\n oklchToHex,\n hexToOklch,\n formatOklch,\n parseOklch,\n type Oklch,\n} from \"./lib/oklch\";\n\nexport type ColorPickerFormat = \"oklch\" | \"hex\";\n\nexport interface ColorPickerProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\" | \"color\"> {\n /** Controlled color (an `oklch(…)` or `#hex` string). */\n value?: string;\n /** Uncontrolled initial color. Default `oklch(0.7 0.15 250)`. */\n defaultValue?: string;\n /** Fires with the formatted string AND the raw OKLCH on every change. */\n onValueChange?: (value: string, oklch: Oklch) => void;\n /** Output format handed to `onValueChange`. Default `\"oklch\"`. */\n format?: ColorPickerFormat;\n /** Show the hex read/write field. Default `true`. */\n showHex?: boolean;\n disabled?: boolean;\n}\n\nconst DEFAULT: Oklch = { l: 0.7, c: 0.15, h: 250 };\nconst clamp = (x: number, lo: number, hi: number) =>\n x < lo ? lo : x > hi ? hi : x;\n\nfunction parseInput(s: string | undefined): Oklch {\n if (!s) return DEFAULT;\n return parseOklch(s) ?? hexToOklch(s) ?? DEFAULT;\n}\n\ninterface ColorSliderProps {\n label: string;\n valueText: string;\n min: number;\n max: number;\n step: number;\n value: number;\n trackStyle: React.CSSProperties;\n disabled?: boolean;\n onChange: (v: number) => void;\n}\n\n/** One channel slider: a gradient track with a draggable, keyboard-nav thumb. */\nfunction ColorSlider({\n label,\n valueText,\n min,\n max,\n step,\n value,\n trackStyle,\n disabled,\n onChange,\n}: ColorSliderProps) {\n const sc = useSilicaClass();\n const trackRef = React.useRef<HTMLDivElement>(null);\n const pct = ((value - min) / (max - min)) * 100;\n\n const setFromClientX = (clientX: number) => {\n const el = trackRef.current;\n if (!el) return;\n const rect = el.getBoundingClientRect();\n const ratio = clamp((clientX - rect.left) / rect.width, 0, 1);\n onChange(min + ratio * (max - min));\n };\n\n const onKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n const big = step * 10;\n let next: number | null = null;\n if (e.key === \"ArrowLeft\" || e.key === \"ArrowDown\") next = value - step;\n else if (e.key === \"ArrowRight\" || e.key === \"ArrowUp\") next = value + step;\n else if (e.key === \"PageDown\") next = value - big;\n else if (e.key === \"PageUp\") next = value + big;\n else if (e.key === \"Home\") next = min;\n else if (e.key === \"End\") next = max;\n if (next !== null) {\n e.preventDefault();\n onChange(clamp(next, min, max));\n }\n };\n\n return (\n <div\n ref={trackRef}\n className={cx(sc(\"color-picker-track\"))}\n style={trackStyle}\n role=\"slider\"\n aria-label={label}\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={value}\n aria-valuetext={valueText}\n aria-disabled={disabled || undefined}\n tabIndex={disabled ? -1 : 0}\n onKeyDown={disabled ? undefined : onKeyDown}\n onPointerDown={(e) => {\n if (disabled) return;\n e.currentTarget.setPointerCapture(e.pointerId);\n setFromClientX(e.clientX);\n }}\n onPointerMove={(e) => {\n if (disabled || !e.currentTarget.hasPointerCapture(e.pointerId)) return;\n setFromClientX(e.clientX);\n }}\n >\n <span\n className={cx(sc(\"color-picker-thumb\"))}\n style={{ left: `${pct}%` }}\n />\n </div>\n );\n}\n\n/**\n * ColorPicker — an OKLCH-native color editor. SilicaUI's tokens are OKLCH, so\n * the picker edits Lightness / Chroma / Hue directly (each slider's track shows\n * the live ramp), previews the result, and reads/writes hex. Controlled via\n * `value`/`onValueChange` or uncontrolled via `defaultValue`.\n */\nexport const ColorPicker = React.forwardRef<HTMLDivElement, ColorPickerProps>(\n function ColorPicker(\n {\n value,\n defaultValue,\n onValueChange,\n format = \"oklch\",\n showHex = true,\n disabled,\n className,\n ...rest\n },\n forwardedRef,\n ) {\n const sc = useSilicaClass();\n const isControlled = value !== undefined;\n const [internal, setInternal] = React.useState<Oklch>(() =>\n parseInput(value ?? defaultValue),\n );\n const [hexDraft, setHexDraft] = React.useState<string | null>(null);\n\n // Keep internal state in step with a controlled `value`.\n React.useEffect(() => {\n if (isControlled) setInternal(parseInput(value));\n }, [value, isControlled]);\n\n const { l, c, h } = internal;\n\n const commit = (next: Oklch) => {\n if (!isControlled) setInternal(next);\n const out =\n format === \"hex\"\n ? oklchToHex(next.l, next.c, next.h)\n : formatOklch(next.l, next.c, next.h);\n onValueChange?.(out, next);\n };\n\n const hex = oklchToHex(l, c, h);\n const hexValue = hexDraft ?? hex;\n\n const commitHex = () => {\n if (hexDraft !== null) {\n const parsed = hexToOklch(hexDraft);\n if (parsed) commit(parsed);\n setHexDraft(null);\n }\n };\n\n // Live gradient tracks — the real OKLCH ramp for each channel.\n const lTrack = `linear-gradient(to right in oklch, oklch(0 ${c} ${h}), oklch(1 ${c} ${h}))`;\n const cTrack = `linear-gradient(to right in oklch, oklch(${l} 0 ${h}), oklch(${l} ${MAX_CHROMA} ${h}))`;\n const hTrack = `linear-gradient(to right in oklch, oklch(${l} ${c} 0), oklch(${l} ${c} 60), oklch(${l} ${c} 120), oklch(${l} ${c} 180), oklch(${l} ${c} 240), oklch(${l} ${c} 300), oklch(${l} ${c} 360))`;\n\n return (\n <div\n ref={forwardedRef}\n className={cx(sc(\"color-picker\"), className)}\n data-disabled={disabled || undefined}\n {...rest}\n >\n <div className={cx(sc(\"color-picker-preview\"))}>\n <span\n className={cx(sc(\"color-picker-swatch\"))}\n style={{ backgroundColor: `oklch(${l} ${c} ${h})` }}\n />\n <div className={cx(sc(\"color-picker-values\"))}>\n <span className={cx(sc(\"color-picker-value-oklch\"))}>\n {formatOklch(l, c, h)}\n </span>\n <span className={cx(sc(\"color-picker-value-hex\"))}>{hex}</span>\n </div>\n </div>\n\n <div className={cx(sc(\"color-picker-sliders\"))}>\n <div className={cx(sc(\"color-picker-slider\"))}>\n <span className={cx(sc(\"color-picker-slider-label\"))}>L</span>\n <ColorSlider\n label=\"Lightness\"\n valueText={l.toFixed(2)}\n min={0}\n max={1}\n step={0.01}\n value={l}\n trackStyle={{ background: lTrack }}\n disabled={disabled}\n onChange={(v) => commit({ l: v, c, h })}\n />\n <span className={cx(sc(\"color-picker-slider-value\"))}>\n {l.toFixed(2)}\n </span>\n </div>\n\n <div className={cx(sc(\"color-picker-slider\"))}>\n <span className={cx(sc(\"color-picker-slider-label\"))}>C</span>\n <ColorSlider\n label=\"Chroma\"\n valueText={c.toFixed(3)}\n min={0}\n max={MAX_CHROMA}\n step={0.005}\n value={c}\n trackStyle={{ background: cTrack }}\n disabled={disabled}\n onChange={(v) => commit({ l, c: v, h })}\n />\n <span className={cx(sc(\"color-picker-slider-value\"))}>\n {c.toFixed(2)}\n </span>\n </div>\n\n <div className={cx(sc(\"color-picker-slider\"))}>\n <span className={cx(sc(\"color-picker-slider-label\"))}>H</span>\n <ColorSlider\n label=\"Hue\"\n valueText={`${Math.round(h)}°`}\n min={0}\n max={360}\n step={1}\n value={h}\n trackStyle={{ background: hTrack }}\n disabled={disabled}\n onChange={(v) => commit({ l, c, h: v })}\n />\n <span className={cx(sc(\"color-picker-slider-value\"))}>\n {Math.round(h)}°\n </span>\n </div>\n </div>\n\n {showHex && (\n <div className={cx(sc(\"color-picker-hex\"))}>\n <span className={cx(sc(\"color-picker-hex-label\"))}>HEX</span>\n <input\n type=\"text\"\n className={cx(sc(\"color-picker-hex-input\"))}\n value={hexValue}\n disabled={disabled}\n spellCheck={false}\n onChange={(e) => setHexDraft(e.target.value)}\n onBlur={commitHex}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n commitHex();\n }\n }}\n />\n </div>\n )}\n </div>\n );\n },\n);\n","import * as React from \"react\";\nimport { Dialog as BaseDialog } from \"@base-ui-components/react/dialog\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport interface CommandItem {\n /** Stable identity (also the React key). */\n id: string;\n /** Primary text shown in the row. */\n label: string;\n /** Optional secondary line under the label. */\n description?: string;\n /** Optional leading icon (already an element, e.g. an `<svg>`). */\n icon?: React.ReactNode;\n /** Optional trailing shortcut hint, display-only (e.g. `\"⌘P\"`). */\n shortcut?: string;\n /** Extra terms to match against beyond the label/description. */\n keywords?: string[];\n /** Group heading this item lives under. */\n group?: string;\n disabled?: boolean;\n /** Run when the item is chosen (click or Enter). */\n onSelect?: () => void;\n}\n\nexport interface CommandPaletteProps {\n /** The commands to show and filter. */\n items: CommandItem[];\n /** Controlled open state. */\n open?: boolean;\n /** Uncontrolled initial open state. */\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n /** Search box placeholder. */\n placeholder?: string;\n /** Shown when nothing matches. */\n emptyMessage?: string;\n /**\n * Global toggle hotkey. `true` (default) binds ⌘K / Ctrl+K; pass a single\n * letter to rebind (still combined with ⌘/Ctrl); `false` disables it.\n */\n hotkey?: boolean | string;\n className?: string;\n}\n\ninterface GroupEntry {\n item: CommandItem;\n index: number;\n}\n\nconst SearchIcon = (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <circle cx=\"11\" cy=\"11\" r=\"7\" />\n <path d=\"m21 21-4.3-4.3\" />\n </svg>\n);\n\n/**\n * CommandPalette — a ⌘K launcher. Feed it a flat `items` list (optionally\n * grouped); it filters as you type, moves the highlight with ↑/↓, runs the\n * active command on Enter, and closes on Escape or backdrop click. Opens on\n * ⌘K/Ctrl+K by default, or drive it with `open`/`onOpenChange`.\n */\nexport function CommandPalette({\n items,\n open,\n defaultOpen,\n onOpenChange,\n placeholder = \"Type a command or search…\",\n emptyMessage = \"No results found.\",\n hotkey = true,\n className,\n}: CommandPaletteProps) {\n const sc = useSilicaClass();\n const isControlled = open !== undefined;\n const [internalOpen, setInternalOpen] = React.useState(defaultOpen ?? false);\n const isOpen = isControlled ? open : internalOpen;\n\n const [query, setQuery] = React.useState(\"\");\n const [activeIndex, setActiveIndex] = React.useState(0);\n const listRef = React.useRef<HTMLDivElement>(null);\n\n const setOpen = React.useCallback(\n (next: boolean) => {\n if (!isControlled) setInternalOpen(next);\n onOpenChange?.(next);\n if (next) {\n setQuery(\"\");\n setActiveIndex(0);\n }\n },\n [isControlled, onOpenChange],\n );\n\n // Global ⌘K / Ctrl+K (or the custom letter) toggles the palette.\n React.useEffect(() => {\n if (!hotkey) return;\n const key = (typeof hotkey === \"string\" ? hotkey : \"k\").toLowerCase();\n const onKey = (e: KeyboardEvent) => {\n if (e.key.toLowerCase() === key && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n setOpen(!isOpen);\n }\n };\n document.addEventListener(\"keydown\", onKey);\n return () => document.removeEventListener(\"keydown\", onKey);\n }, [hotkey, isOpen, setOpen]);\n\n const filtered = React.useMemo(() => {\n const q = query.trim().toLowerCase();\n if (!q) return items;\n return items.filter((it) => {\n const hay = [it.label, it.description, it.group, ...(it.keywords ?? [])]\n .filter(Boolean)\n .join(\" \")\n .toLowerCase();\n return hay.includes(q);\n });\n }, [items, query]);\n\n // Bucket into groups, preserving first-seen group order + the flat index.\n const groups = React.useMemo(() => {\n const map = new Map<string | undefined, GroupEntry[]>();\n filtered.forEach((item, index) => {\n const bucket = map.get(item.group);\n if (bucket) bucket.push({ item, index });\n else map.set(item.group, [{ item, index }]);\n });\n return [...map.entries()];\n }, [filtered]);\n\n // Keep the active row valid + in view.\n React.useEffect(() => {\n if (activeIndex >= filtered.length) setActiveIndex(0);\n }, [filtered.length, activeIndex]);\n\n React.useEffect(() => {\n listRef.current?.querySelector(\"[data-active]\")?.scrollIntoView({ block: \"nearest\" });\n }, [activeIndex, isOpen]);\n\n const move = (dir: 1 | -1) => {\n const n = filtered.length;\n if (n === 0) return;\n let i = activeIndex;\n for (let step = 0; step < n; step++) {\n i = (i + dir + n) % n;\n if (!filtered[i]?.disabled) break;\n }\n setActiveIndex(i);\n };\n\n const select = (index: number) => {\n const it = filtered[index];\n if (!it || it.disabled) return;\n it.onSelect?.();\n setOpen(false);\n };\n\n const onInputKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n move(1);\n } else if (e.key === \"ArrowUp\") {\n e.preventDefault();\n move(-1);\n } else if (e.key === \"Enter\") {\n e.preventDefault();\n select(activeIndex);\n }\n // Escape falls through to Base UI Dialog, which closes the palette.\n };\n\n return (\n <BaseDialog.Root open={isOpen} onOpenChange={setOpen}>\n <BaseDialog.Portal>\n <BaseDialog.Backdrop className={cx(sc(\"command-palette-backdrop\"))} />\n <BaseDialog.Popup\n className={cx(sc(\"command-palette-popup\"), className)}\n aria-label=\"Command palette\"\n >\n <div className={cx(sc(\"command-palette-search\"))}>\n <span className={cx(sc(\"command-palette-search-icon\"))}>\n {SearchIcon}\n </span>\n <input\n autoFocus\n type=\"text\"\n className={cx(sc(\"command-palette-input\"))}\n placeholder={placeholder}\n value={query}\n spellCheck={false}\n aria-label=\"Search commands\"\n onChange={(e) => {\n setQuery(e.target.value);\n setActiveIndex(0);\n }}\n onKeyDown={onInputKeyDown}\n />\n </div>\n\n <div className={cx(sc(\"command-palette-list\"))} ref={listRef} role=\"listbox\">\n {filtered.length === 0 ? (\n <div className={cx(sc(\"command-palette-empty\"))}>{emptyMessage}</div>\n ) : (\n groups.map(([groupKey, entries]) => (\n <div key={groupKey ?? \"\u0000\"} className={cx(sc(\"command-palette-group\"))}>\n {groupKey && (\n <div className={cx(sc(\"command-palette-group-label\"))}>\n {groupKey}\n </div>\n )}\n {entries.map(({ item, index }) => (\n <div\n key={item.id}\n className={cx(sc(\"command-palette-item\"))}\n role=\"option\"\n aria-selected={index === activeIndex}\n aria-disabled={item.disabled || undefined}\n data-active={index === activeIndex || undefined}\n data-disabled={item.disabled || undefined}\n onPointerMove={() => setActiveIndex(index)}\n onClick={() => select(index)}\n >\n {item.icon && (\n <span className={cx(sc(\"command-palette-item-icon\"))}>\n {item.icon}\n </span>\n )}\n <span className={cx(sc(\"command-palette-item-body\"))}>\n <span className={cx(sc(\"command-palette-item-label\"))}>\n {item.label}\n </span>\n {item.description && (\n <span className={cx(sc(\"command-palette-item-desc\"))}>\n {item.description}\n </span>\n )}\n </span>\n {item.shortcut && (\n <span className={cx(sc(\"command-palette-item-shortcut\"))}>\n {item.shortcut}\n </span>\n )}\n </div>\n ))}\n </div>\n ))\n )}\n </div>\n </BaseDialog.Popup>\n </BaseDialog.Portal>\n </BaseDialog.Root>\n );\n}\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport interface TreeNode {\n /** Stable identity (React key + selection/expansion id). */\n id: string;\n /** Row label. */\n label: React.ReactNode;\n /** Optional leading icon element. */\n icon?: React.ReactNode;\n /** Child nodes; presence makes the node expandable. */\n children?: TreeNode[];\n disabled?: boolean;\n}\n\nexport interface TreeViewProps\n extends Omit<React.HTMLAttributes<HTMLUListElement>, \"onSelect\"> {\n /** The node forest. */\n items: TreeNode[];\n /** Controlled set of expanded node ids. */\n expanded?: string[];\n /** Uncontrolled initial expanded ids. */\n defaultExpanded?: string[];\n onExpandedChange?: (expanded: string[]) => void;\n /** Controlled selected node id. */\n selected?: string;\n /** Uncontrolled initial selected id. */\n defaultSelected?: string;\n onSelectedChange?: (id: string) => void;\n /** Fires with the full node when one is selected. */\n onSelect?: (node: TreeNode) => void;\n}\n\ninterface Flat {\n node: TreeNode;\n level: number;\n hasChildren: boolean;\n expanded: boolean;\n parentId?: string;\n}\n\nfunction flatten(\n nodes: TreeNode[],\n level: number,\n expandedSet: Set<string>,\n parentId: string | undefined,\n out: Flat[],\n): Flat[] {\n for (const node of nodes) {\n const hasChildren = !!node.children?.length;\n const isExpanded = expandedSet.has(node.id);\n out.push({ node, level, hasChildren, expanded: isExpanded, parentId });\n if (hasChildren && isExpanded) {\n flatten(node.children as TreeNode[], level + 1, expandedSet, node.id, out);\n }\n }\n return out;\n}\n\nconst Chevron = (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"m9 6 6 6-6 6\" />\n </svg>\n);\n\n/**\n * TreeView — a hierarchical tree with full keyboard support (↑/↓ move,\n * →/← expand-or-descend / collapse-or-ascend, Home/End, Enter selects, Space\n * toggles). Feed it a `TreeNode[]` forest; control expansion via\n * `expanded`/`onExpandedChange` and selection via `selected`/`onSelectedChange`,\n * or run uncontrolled with the `default*` props.\n */\nexport const TreeView = React.forwardRef<HTMLUListElement, TreeViewProps>(\n function TreeView(\n {\n items,\n expanded,\n defaultExpanded,\n onExpandedChange,\n selected,\n defaultSelected,\n onSelectedChange,\n onSelect,\n className,\n ...rest\n },\n forwardedRef,\n ) {\n const sc = useSilicaClass();\n\n const expandedControlled = expanded !== undefined;\n const [expandedInternal, setExpandedInternal] = React.useState<Set<string>>(\n () => new Set(defaultExpanded ?? []),\n );\n const expandedSet = expandedControlled\n ? new Set(expanded)\n : expandedInternal;\n\n const selectedControlled = selected !== undefined;\n const [selectedInternal, setSelectedInternal] = React.useState<\n string | undefined\n >(defaultSelected);\n const selectedId = selectedControlled ? selected : selectedInternal;\n\n const flat = React.useMemo(\n () => flatten(items, 0, expandedSet, undefined, []),\n [items, expandedSet],\n );\n\n const [focusedId, setFocusedId] = React.useState<string | undefined>();\n const activeId = focusedId ?? flat[0]?.node.id;\n const nodeRefs = React.useRef(new Map<string, HTMLLIElement>());\n\n const commitExpanded = (next: Set<string>) => {\n if (!expandedControlled) setExpandedInternal(next);\n onExpandedChange?.([...next]);\n };\n const toggleExpand = (id: string) => {\n const next = new Set(expandedSet);\n if (next.has(id)) next.delete(id);\n else next.add(id);\n commitExpanded(next);\n };\n const setExpand = (id: string, open: boolean) => {\n if (expandedSet.has(id) === open) return;\n const next = new Set(expandedSet);\n if (open) next.add(id);\n else next.delete(id);\n commitExpanded(next);\n };\n\n const selectNode = (node: TreeNode) => {\n if (node.disabled) return;\n if (!selectedControlled) setSelectedInternal(node.id);\n onSelectedChange?.(node.id);\n onSelect?.(node);\n };\n\n const focusId = (id: string) => {\n setFocusedId(id);\n nodeRefs.current.get(id)?.focus();\n };\n\n const onKeyDown = (e: React.KeyboardEvent<HTMLLIElement>, id: string) => {\n const idx = flat.findIndex((f) => f.node.id === id);\n const entry = flat[idx];\n if (!entry) return;\n switch (e.key) {\n case \"ArrowDown\": {\n e.preventDefault();\n const next = flat[idx + 1];\n if (next) focusId(next.node.id);\n break;\n }\n case \"ArrowUp\": {\n e.preventDefault();\n const prev = flat[idx - 1];\n if (prev) focusId(prev.node.id);\n break;\n }\n case \"Home\": {\n e.preventDefault();\n if (flat[0]) focusId(flat[0].node.id);\n break;\n }\n case \"End\": {\n e.preventDefault();\n const last = flat[flat.length - 1];\n if (last) focusId(last.node.id);\n break;\n }\n case \"ArrowRight\": {\n e.preventDefault();\n if (!entry.hasChildren) break;\n if (!entry.expanded) setExpand(entry.node.id, true);\n else {\n const child = flat[idx + 1];\n if (child && child.parentId === entry.node.id) focusId(child.node.id);\n }\n break;\n }\n case \"ArrowLeft\": {\n e.preventDefault();\n if (entry.hasChildren && entry.expanded) setExpand(entry.node.id, false);\n else if (entry.parentId) focusId(entry.parentId);\n break;\n }\n case \"Enter\": {\n e.preventDefault();\n selectNode(entry.node);\n if (entry.hasChildren) toggleExpand(entry.node.id);\n break;\n }\n case \" \": {\n e.preventDefault();\n if (entry.hasChildren) toggleExpand(entry.node.id);\n else selectNode(entry.node);\n break;\n }\n }\n };\n\n const renderNodes = (nodes: TreeNode[], level: number): React.ReactNode => (\n <>\n {nodes.map((node) => {\n const hasChildren = !!node.children?.length;\n const isExpanded = expandedSet.has(node.id);\n return (\n <li\n key={node.id}\n className={cx(sc(\"tree-item\"))}\n role=\"treeitem\"\n aria-expanded={hasChildren ? isExpanded : undefined}\n aria-selected={selectedId === node.id}\n aria-disabled={node.disabled || undefined}\n tabIndex={activeId === node.id ? 0 : -1}\n ref={(el) => {\n if (el) nodeRefs.current.set(node.id, el);\n else nodeRefs.current.delete(node.id);\n }}\n onFocus={(e) => {\n if (e.target === e.currentTarget) setFocusedId(node.id);\n }}\n onKeyDown={(e) => onKeyDown(e, node.id)}\n >\n <div\n className={cx(sc(\"tree-node\"))}\n style={{ \"--tree-depth\": level } as React.CSSProperties}\n data-selected={selectedId === node.id || undefined}\n data-disabled={node.disabled || undefined}\n onClick={() => {\n selectNode(node);\n if (hasChildren) toggleExpand(node.id);\n focusId(node.id);\n }}\n >\n {hasChildren ? (\n <button\n type=\"button\"\n className={cx(sc(\"tree-toggle\"))}\n data-expanded={isExpanded || undefined}\n aria-hidden=\"true\"\n tabIndex={-1}\n onClick={(e) => {\n e.stopPropagation();\n toggleExpand(node.id);\n }}\n >\n {Chevron}\n </button>\n ) : (\n <span className={cx(sc(\"tree-toggle-spacer\"))} />\n )}\n {node.icon && (\n <span className={cx(sc(\"tree-node-icon\"))}>{node.icon}</span>\n )}\n <span className={cx(sc(\"tree-node-label\"))}>{node.label}</span>\n </div>\n {hasChildren && isExpanded && (\n <ul className={cx(sc(\"tree-group\"))} role=\"group\">\n {renderNodes(node.children as TreeNode[], level + 1)}\n </ul>\n )}\n </li>\n );\n })}\n </>\n );\n\n return (\n <ul\n ref={forwardedRef}\n className={cx(sc(\"tree\"), className)}\n role=\"tree\"\n {...rest}\n >\n {renderNodes(items, 0)}\n </ul>\n );\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\n\nexport interface DropzoneRejection {\n file: File;\n reason: \"type\" | \"size\";\n}\n\nexport interface DropzoneProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onDrop\" | \"title\"> {\n /** Called with the accepted files (from a drop or the picker). */\n onFiles?: (files: File[]) => void;\n /** Called with files rejected by `accept` / `maxSize`. */\n onReject?: (rejections: DropzoneRejection[]) => void;\n /** Native-style accept list, e.g. `\"image/*,.pdf\"`. */\n accept?: string;\n /** Allow selecting/dropping more than one file. Default `true`. */\n multiple?: boolean;\n /** Max size per file, in bytes. */\n maxSize?: number;\n disabled?: boolean;\n /** Primary line. Default `\"Drop files here, or click to browse\"`. */\n title?: React.ReactNode;\n /** Secondary hint line (e.g. accepted types). */\n hint?: React.ReactNode;\n /** Override the default upload icon. */\n icon?: React.ReactNode;\n /** Extra props for the underlying `<input type=file>`. */\n inputProps?: React.InputHTMLAttributes<HTMLInputElement>;\n}\n\nconst UploadIcon = (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M12 15V3\" />\n <path d=\"m7 8 5-5 5 5\" />\n <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" />\n </svg>\n);\n\nfunction matchesAccept(file: File, accept?: string): boolean {\n if (!accept) return true;\n const types = accept\n .split(\",\")\n .map((s) => s.trim().toLowerCase())\n .filter(Boolean);\n if (types.length === 0) return true;\n const name = file.name.toLowerCase();\n const mime = file.type.toLowerCase();\n return types.some((t) => {\n if (t.startsWith(\".\")) return name.endsWith(t);\n if (t.endsWith(\"/*\")) return mime.startsWith(t.slice(0, -1));\n return mime === t;\n });\n}\n\n/**\n * Dropzone — drag files onto it or click to open the picker. Emits accepted\n * files via `onFiles` and anything filtered out by `accept`/`maxSize` via\n * `onReject`. Purely presentational about the *result* — render your own file\n * list from what `onFiles` hands you.\n */\nexport const Dropzone = React.forwardRef<HTMLDivElement, DropzoneProps>(\n function Dropzone(\n {\n onFiles,\n onReject,\n accept,\n multiple = true,\n maxSize,\n disabled,\n title = \"Drop files here, or click to browse\",\n hint,\n icon,\n inputProps,\n className,\n children,\n ...rest\n },\n forwardedRef,\n ) {\n const sc = useSilicaClass();\n const inputRef = React.useRef<HTMLInputElement>(null);\n const dragDepth = React.useRef(0);\n const [dragging, setDragging] = React.useState(false);\n\n const process = (fileList: FileList | null) => {\n if (!fileList || disabled) return;\n const accepted: File[] = [];\n const rejected: DropzoneRejection[] = [];\n for (const file of Array.from(fileList)) {\n if (!matchesAccept(file, accept)) {\n rejected.push({ file, reason: \"type\" });\n } else if (maxSize != null && file.size > maxSize) {\n rejected.push({ file, reason: \"size\" });\n } else {\n accepted.push(file);\n }\n }\n const finalAccepted = multiple ? accepted : accepted.slice(0, 1);\n if (finalAccepted.length) onFiles?.(finalAccepted);\n if (rejected.length) onReject?.(rejected);\n };\n\n const openPicker = () => {\n if (!disabled) inputRef.current?.click();\n };\n\n return (\n <div\n ref={forwardedRef}\n className={cx(sc(\"dropzone\"), className)}\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n aria-disabled={disabled || undefined}\n data-dragging={dragging || undefined}\n data-disabled={disabled || undefined}\n onClick={(e) => {\n // The programmatic input.click() bubbles back here — ignore it.\n if (e.target === inputRef.current) return;\n openPicker();\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n openPicker();\n }\n }}\n onDragEnter={(e) => {\n e.preventDefault();\n if (disabled) return;\n dragDepth.current += 1;\n setDragging(true);\n }}\n onDragOver={(e) => {\n e.preventDefault();\n }}\n onDragLeave={(e) => {\n e.preventDefault();\n if (disabled) return;\n dragDepth.current -= 1;\n if (dragDepth.current <= 0) {\n dragDepth.current = 0;\n setDragging(false);\n }\n }}\n onDrop={(e) => {\n e.preventDefault();\n if (disabled) return;\n dragDepth.current = 0;\n setDragging(false);\n process(e.dataTransfer.files);\n }}\n {...rest}\n >\n <input\n ref={inputRef}\n type=\"file\"\n className={cx(sc(\"dropzone-input\"))}\n accept={accept}\n multiple={multiple}\n disabled={disabled}\n tabIndex={-1}\n {...inputProps}\n onChange={(e) => {\n process(e.target.files);\n // Allow re-selecting the same file.\n e.target.value = \"\";\n inputProps?.onChange?.(e);\n }}\n />\n {children ?? (\n <>\n <span className={cx(sc(\"dropzone-icon\"))}>{icon ?? UploadIcon}</span>\n <span className={cx(sc(\"dropzone-title\"))}>{title}</span>\n {hint && <span className={cx(sc(\"dropzone-hint\"))}>{hint}</span>}\n </>\n )}\n </div>\n );\n },\n);\n","import * as React from \"react\";\nimport { cx } from \"./lib/cx\";\nimport { useSilicaClass } from \"./lib/config\";\nimport { Button } from \"./button\";\nimport type { SilicaColor } from \"./lib/tokens\";\n\nexport interface WizardStep {\n /** Stable identity + React key. */\n id: string;\n /** Step label under the marker. */\n title: React.ReactNode;\n /** Content shown when this step is active (unless `children` is provided). */\n content?: React.ReactNode;\n /** Marks the step \"Optional\" under its label. */\n optional?: boolean;\n /** Can't be navigated to. */\n disabled?: boolean;\n}\n\nexport interface WizardProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n steps: WizardStep[];\n /** Controlled active step index. */\n activeStep?: number;\n /** Uncontrolled initial step index. Default `0`. */\n defaultStep?: number;\n onStepChange?: (index: number) => void;\n /** Accent color for markers + rail. */\n color?: SilicaColor;\n /**\n * Linear flow: markers can only jump backward (revisit) or stay; forward is via\n * Next. `false` lets any enabled step be clicked. Default `true`.\n */\n linear?: boolean;\n /** Gate the Next button (e.g. until the active step validates). Default `true`. */\n canGoNext?: boolean;\n /** Called when Next is pressed on the last step. */\n onFinish?: () => void;\n backLabel?: string;\n nextLabel?: string;\n finishLabel?: string;\n /** Hide the built-in Back / Next footer. */\n hideFooter?: boolean;\n /** Render your own content instead of the active step's `content`. */\n children?: React.ReactNode;\n}\n\nconst CheckIcon = (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"3\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M20 6 9 17l-5-5\" />\n </svg>\n);\n\n/**\n * Wizard — a multi-step flow with a numbered indicator, per-step content, and a\n * Back / Next-or-Finish footer. Control the step via `activeStep`/`onStepChange`\n * or run uncontrolled with `defaultStep`. Steps carry their own `content`, or\n * pass `children` to render the body yourself. `canGoNext` gates advancing so you\n * can require the current step to validate first.\n */\nexport const Wizard = React.forwardRef<HTMLDivElement, WizardProps>(\n function Wizard(\n {\n steps,\n activeStep,\n defaultStep = 0,\n onStepChange,\n color,\n linear = true,\n canGoNext = true,\n onFinish,\n backLabel = \"Back\",\n nextLabel = \"Next\",\n finishLabel = \"Finish\",\n hideFooter,\n children,\n className,\n ...rest\n },\n forwardedRef,\n ) {\n const sc = useSilicaClass();\n const isControlled = activeStep !== undefined;\n const [internal, setInternal] = React.useState(defaultStep);\n const current = isControlled ? activeStep : internal;\n const lastIndex = steps.length - 1;\n const isLast = current >= lastIndex;\n\n const goTo = (index: number) => {\n const clamped = Math.max(0, Math.min(lastIndex, index));\n if (clamped === current) return;\n if (!isControlled) setInternal(clamped);\n onStepChange?.(clamped);\n };\n\n const next = () => {\n if (isLast) onFinish?.();\n else goTo(current + 1);\n };\n const back = () => goTo(current - 1);\n\n const activeContent = children ?? steps[current]?.content;\n\n return (\n <div\n ref={forwardedRef}\n className={cx(sc(\"wizard\"), color && sc(`wizard-${color}`), className)}\n {...rest}\n >\n <div className={cx(sc(\"wizard-steps\"))} role=\"list\">\n {steps.map((step, i) => {\n const state =\n i < current ? \"complete\" : i === current ? \"active\" : \"upcoming\";\n const clickable =\n !step.disabled && i !== current && (!linear || i < current);\n return (\n <button\n key={step.id}\n type=\"button\"\n className={cx(sc(\"wizard-step\"))}\n role=\"listitem\"\n data-state={state}\n data-clickable={clickable || undefined}\n data-disabled={step.disabled || undefined}\n aria-current={i === current ? \"step\" : undefined}\n disabled={!clickable}\n onClick={() => clickable && goTo(i)}\n >\n <span className={cx(sc(\"wizard-step-marker\"))}>\n {state === \"complete\" ? CheckIcon : i + 1}\n </span>\n <span className={cx(sc(\"wizard-step-label\"))}>\n {step.title}\n {step.optional && (\n <span className={cx(sc(\"wizard-step-optional\"))}>\n Optional\n </span>\n )}\n </span>\n </button>\n );\n })}\n </div>\n\n <div className={cx(sc(\"wizard-content\"))}>{activeContent}</div>\n\n {!hideFooter && (\n <div className={cx(sc(\"wizard-footer\"))}>\n <Button variant=\"ghost\" disabled={current === 0} onClick={back}>\n {backLabel}\n </Button>\n <Button\n color={color}\n disabled={!isLast && !canGoNext}\n onClick={next}\n >\n {isLast ? finishLabel : nextLabel}\n </Button>\n </div>\n )}\n </div>\n );\n },\n);\n"]}