@fairfox/polly 0.29.4 → 0.30.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.
@@ -1,16 +1,18 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/polly-ui/ActionForm.tsx", "../src/polly-ui/ActionInput.tsx", "../src/polly-ui/Badge.tsx", "../src/polly-ui/Layout.tsx", "../src/polly-ui/Button.tsx", "../src/polly-ui/Checkbox.tsx", "../src/polly-ui/Collapsible.tsx", "../src/polly-ui/ConfirmDialog.tsx", "../src/polly-ui/Modal.tsx", "../src/actions/overlay.ts", "../src/polly-ui/internal/focus-trap.ts", "../src/polly-ui/OverlayRoot.tsx", "../src/polly-ui/internal/scroll-lock.ts", "../src/polly-ui/Dropdown.tsx", "../src/polly-ui/Select.tsx", "../src/polly-ui/Skeleton.tsx", "../src/polly-ui/Tabs.tsx", "../src/polly-ui/internal/input-base.ts", "../src/polly-ui/TextInput.tsx", "../src/polly-ui/Toast.tsx", "../src/actions/error.ts", "../src/polly-ui/Toggle.tsx"],
3
+ "sources": ["../src/polly-ui/ActionForm.tsx", "../src/polly-ui/ActionInput.tsx", "../src/polly-ui/Badge.tsx", "../src/polly-ui/Layout.tsx", "../src/polly-ui/Button.tsx", "../src/polly-ui/Surface.tsx", "../src/polly-ui/Card.tsx", "../src/polly-ui/Checkbox.tsx", "../src/polly-ui/Collapsible.tsx", "../src/polly-ui/ConfirmDialog.tsx", "../src/polly-ui/Modal.tsx", "../src/actions/overlay.ts", "../src/polly-ui/internal/focus-trap.ts", "../src/polly-ui/OverlayRoot.tsx", "../src/polly-ui/internal/scroll-lock.ts", "../src/polly-ui/Dropdown.tsx", "../src/polly-ui/Select.tsx", "../src/polly-ui/Skeleton.tsx", "../src/polly-ui/Tabs.tsx", "../src/polly-ui/internal/input-base.ts", "../src/polly-ui/TextInput.tsx", "../src/polly-ui/Toast.tsx", "../src/actions/error.ts", "../src/polly-ui/Toggle.tsx"],
4
4
  "sourcesContent": [
5
5
  "/**\n * ActionForm — wraps a native <form> with the action pattern.\n *\n * Renders <form data-action=\"{form.name}:submit\"> so the installed\n * event delegation catches the submit event and dispatches to the\n * form's auto-registered :submit handler. `aria-busy` mirrors the\n * `isSubmitting` signal so consumer styling can respond without extra\n * wiring. The form element also exposes `data-polly-action-form` for\n * stable selector hooks.\n */\n\nimport type { ComponentChildren, JSX } from \"preact\";\nimport type { FormStore } from \"../actions/form.ts\";\nimport classes from \"./ActionForm.module.css\";\n\nexport type ActionFormProps<TValues extends Record<string, string>, TStores> = {\n form: FormStore<TValues, TStores>;\n children: ComponentChildren;\n className?: string;\n id?: string;\n \"aria-label\"?: string;\n \"aria-labelledby\"?: string;\n};\n\nexport function ActionForm<TValues extends Record<string, string>, TStores>(\n props: ActionFormProps<TValues, TStores>\n): JSX.Element {\n const { form, children, className, id } = props;\n const combined = className ? `${classes[\"form\"]} ${className}` : classes[\"form\"];\n return (\n <form\n id={id}\n class={combined}\n data-polly-ui\n data-polly-action-form={form.name}\n data-action={`${form.name}:submit`}\n aria-busy={form.isSubmitting.value}\n aria-label={props[\"aria-label\"]}\n aria-labelledby={props[\"aria-labelledby\"]}\n noValidate\n >\n {children}\n </form>\n );\n}\n",
6
6
  "/**\n * ActionInput — dual-mode view/edit input with action dispatch on commit.\n *\n * View mode renders the current value as text (optionally through a\n * caller-supplied `renderView` for markdown, rich formatting, etc.).\n * Click, Enter, or Space enters edit mode. Edit mode is a native input\n * or textarea; commit fires the configured action with `data-action-value`\n * and `data-action-field` set from FormData-shape semantics, so the\n * existing event delegation handles it with no extra wiring.\n *\n * `saveOn` picks the commit trigger:\n * \"blur\" commit when the field loses focus\n * \"enter\" commit on Enter (single-line) or Cmd/Ctrl+Enter (multi-line)\n * \"cmd-enter\" commit only on Cmd/Ctrl+Enter\n * \"explicit\" never auto-commit — caller wires a save button with data-action\n *\n * Layout-shift-free: view and edit modes share padding, border width,\n * font, and line-height so the toggle causes no reflow.\n */\n\nimport type { JSX } from \"preact\";\nimport { useCallback, useEffect, useRef, useState } from \"preact/hooks\";\nimport classes from \"./ActionInput.module.css\";\n\nexport type ActionInputSaveOn = \"blur\" | \"enter\" | \"cmd-enter\" | \"explicit\";\nexport type ActionInputVariant = \"single\" | \"multi\";\n\nexport type ActionInputProps = {\n /** Current value to render in view mode and seed the edit buffer. */\n value: string;\n /** Action name to dispatch on commit. Receives data-action-value=<new value>. */\n action: string;\n /** Commit trigger. Default: \"blur\". */\n saveOn?: ActionInputSaveOn;\n variant?: ActionInputVariant;\n placeholder?: string;\n disabled?: boolean;\n /** Extra data-action-* attributes to include at commit (e.g. entity id). */\n actionData?: Record<string, string>;\n /** Custom view renderer — receives value, returns VNode. */\n renderView?: (value: string) => JSX.Element | string;\n /** Label announced by screen readers for the edit affordance. */\n ariaLabel?: string;\n className?: string;\n};\n\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: two render branches times two variants times four saveOn triggers; branching is inherent to the primitive.\nexport function ActionInput(props: ActionInputProps): JSX.Element {\n const variant = props.variant ?? \"single\";\n const saveOn = props.saveOn ?? \"blur\";\n const [mode, setMode] = useState<\"view\" | \"edit\">(\"view\");\n const [draft, setDraft] = useState(props.value);\n const inputRef = useRef<HTMLInputElement | HTMLTextAreaElement | null>(null);\n\n useEffect(() => {\n if (mode === \"view\") setDraft(props.value);\n }, [props.value, mode]);\n\n useEffect(() => {\n if (mode === \"edit\" && inputRef.current) {\n inputRef.current.focus();\n inputRef.current.select?.();\n }\n }, [mode]);\n\n const enterEdit = useCallback(() => {\n if (props.disabled) return;\n setDraft(props.value);\n setMode(\"edit\");\n }, [props.disabled, props.value]);\n\n const commit = useCallback(\n (next: string) => {\n if (next === props.value) {\n setMode(\"view\");\n return;\n }\n const dataAttrs: Record<string, string> = {\n ...(props.actionData ?? {}),\n value: next,\n };\n const hidden = document.createElement(\"button\");\n hidden.setAttribute(\"data-action\", props.action);\n for (const [key, value] of Object.entries(dataAttrs)) {\n const dashKey = key.replace(/[A-Z]/g, (m) => `-${m.toLowerCase()}`);\n hidden.setAttribute(`data-action-${dashKey}`, value);\n }\n hidden.style.position = \"fixed\";\n hidden.style.opacity = \"0\";\n hidden.style.pointerEvents = \"none\";\n hidden.tabIndex = -1;\n document.body.appendChild(hidden);\n try {\n hidden.click();\n } finally {\n hidden.remove();\n }\n setMode(\"view\");\n },\n [props.action, props.actionData, props.value]\n );\n\n const cancel = useCallback(() => {\n setDraft(props.value);\n setMode(\"view\");\n }, [props.value]);\n\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: keyboard handler encodes the saveOn × variant matrix.\n const onKeyDown = (event: JSX.TargetedKeyboardEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n if (event.key === \"Escape\") {\n event.preventDefault();\n cancel();\n return;\n }\n if (event.key === \"Enter\") {\n const cmd = event.metaKey || event.ctrlKey;\n if (saveOn === \"enter\" && variant === \"single\") {\n event.preventDefault();\n commit(draft);\n } else if ((saveOn === \"enter\" && variant === \"multi\" && cmd) || saveOn === \"cmd-enter\") {\n if (cmd) {\n event.preventDefault();\n commit(draft);\n }\n }\n }\n };\n\n const className = props.className ? `${classes[\"root\"]} ${props.className}` : classes[\"root\"];\n\n if (mode === \"view\") {\n const rendered = props.renderView ? props.renderView(props.value) : props.value;\n const isEmpty = props.value.length === 0;\n return (\n // biome-ignore lint/a11y/useSemanticElements: <button> would swallow text selection and add default styling; div with role=button is the inline-edit idiom.\n <div\n class={`${className} ${classes[\"view\"]}`}\n data-polly-ui\n data-polly-action-input\n data-polly-interactive\n data-state={isEmpty ? \"empty\" : \"filled\"}\n data-variant={variant}\n tabIndex={props.disabled ? -1 : 0}\n role=\"button\"\n aria-label={props.ariaLabel ?? \"Edit\"}\n aria-disabled={props.disabled ? \"true\" : undefined}\n onClick={enterEdit}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n enterEdit();\n }\n }}\n >\n {isEmpty && props.placeholder ? (\n <span class={classes[\"placeholder\"]}>{props.placeholder}</span>\n ) : (\n rendered\n )}\n </div>\n );\n }\n\n const common = {\n class: `${classes[\"edit\"]} ${classes[\"root\"]}`,\n \"data-polly-ui\": true,\n \"data-polly-action-input\": true,\n \"data-state\": \"editing\",\n \"data-variant\": variant,\n placeholder: props.placeholder,\n value: draft,\n onInput: (e: JSX.TargetedEvent<HTMLInputElement | HTMLTextAreaElement>) =>\n setDraft(e.currentTarget.value),\n onBlur: () => {\n if (saveOn === \"blur\") commit(draft);\n else cancel();\n },\n onKeyDown,\n \"aria-label\": props.ariaLabel ?? \"Edit\",\n disabled: props.disabled,\n };\n\n if (variant === \"multi\") {\n return (\n <textarea\n ref={(el) => {\n inputRef.current = el;\n }}\n {...(common as unknown as JSX.HTMLAttributes<HTMLTextAreaElement>)}\n />\n );\n }\n return (\n <input\n ref={(el) => {\n inputRef.current = el;\n }}\n type=\"text\"\n {...(common as unknown as JSX.HTMLAttributes<HTMLInputElement>)}\n />\n );\n}\n",
7
7
  "/**\n * Badge — small inline status chip.\n *\n * Renders as a passive <span> with tinted background and on-tint text\n * from the `--polly-status-*` token family. The default variant uses\n * surface-sunken + muted text for a neutral pill. Consumers style\n * placement via className; the primitive owns size, shape, and colour.\n */\n\nimport type { ComponentChildren, JSX } from \"preact\";\nimport classes from \"./Badge.module.css\";\n\nexport type BadgeVariant = \"default\" | \"info\" | \"success\" | \"warning\" | \"danger\";\n\nexport type BadgeProps = {\n children: ComponentChildren;\n variant?: BadgeVariant;\n className?: string;\n id?: string;\n};\n\nfunction variantClass(variant: BadgeVariant): string | undefined {\n if (variant === \"info\") return classes[\"info\"];\n if (variant === \"success\") return classes[\"success\"];\n if (variant === \"warning\") return classes[\"warning\"];\n if (variant === \"danger\") return classes[\"danger\"];\n return undefined;\n}\n\nexport function Badge(props: BadgeProps): JSX.Element {\n const { children, variant = \"default\", className, id } = props;\n const parts = [classes[\"badge\"]];\n const v = variantClass(variant);\n if (v) parts.push(v);\n if (className) parts.push(className);\n return (\n <span id={id} class={parts.join(\" \")} data-polly-ui data-polly-badge={variant}>\n {children}\n </span>\n );\n}\n",
8
8
  "/**\n * Layout — the one primitive that owns layouting concerns.\n *\n * Every other component in @fairfox/polly/ui (and every consumer app\n * that runs `polly quality css-layout`) routes flex/grid decisions\n * through this component. Props map to CSS custom properties so the\n * stylesheet can read them uniformly and so consumers can override\n * any of them in media queries without touching specificity.\n */\n\nimport { type ComponentChildren, createElement, type JSX } from \"preact\";\nimport classes from \"./Layout.module.css\";\n\nexport type LayoutProps = {\n children: ComponentChildren;\n\n /** Polymorphic element (div, section, header, nav, …). Defaults to 'div'. */\n as?: keyof JSX.IntrinsicElements;\n\n /** CSS grid structure. */\n rows?: string;\n columns?: string;\n autoFlow?: string;\n autoRows?: string;\n autoColumns?: string;\n\n /** display: contents — lets children participate in an ancestor grid. */\n contents?: boolean;\n /** Inherit parent grid tracks via CSS subgrid. */\n subgrid?: boolean;\n\n /** Spacing. */\n gap?: string;\n padding?: string;\n\n /** Sizing. */\n height?: string;\n minHeight?: string;\n /**\n * Cap the inline size and centre within the parent. Typical values use the\n * `--polly-measure-*` tokens (e.g. \"var(--polly-measure-page)\" for an app\n * shell, \"var(--polly-measure-prose)\" for body copy). Any CSS length works.\n */\n maxInlineSize?: string;\n\n /** Container alignment. */\n justifyItems?: string;\n alignItems?: string;\n justifyContent?: string;\n alignContent?: string;\n\n /** Self alignment (when this Layout is an item in a parent grid). */\n justifySelf?: string;\n alignSelf?: string;\n\n /** Collapse to a single column at ≤640px. */\n stackOnMobile?: boolean;\n\n /** Render as display: inline-grid so the Layout flows inline with surrounding text/controls. */\n inline?: boolean;\n\n className?: string;\n onClick?: JSX.MouseEventHandler<HTMLElement>;\n onKeyDown?: JSX.KeyboardEventHandler<HTMLElement>;\n\n role?: JSX.AriaRole;\n tabIndex?: number;\n id?: string;\n \"aria-label\"?: string;\n \"aria-labelledby\"?: string;\n \"aria-describedby\"?: string;\n};\n\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: sixteen optional prop-to-custom-property mappings; flat and linear.\nexport function Layout(props: LayoutProps): JSX.Element {\n const {\n children,\n as = \"div\",\n rows,\n columns,\n contents,\n subgrid,\n gap,\n padding,\n height,\n minHeight,\n maxInlineSize,\n justifyItems,\n alignItems,\n justifyContent,\n alignContent,\n justifySelf,\n alignSelf,\n autoFlow,\n autoRows,\n autoColumns,\n stackOnMobile,\n inline,\n className,\n onClick,\n onKeyDown,\n role,\n tabIndex,\n id,\n } = props;\n\n const style: Record<string, string> = {};\n\n if (contents) {\n style[\"display\"] = \"contents\";\n } else if (subgrid) {\n style[\"--l-col\"] = \"1 / -1\";\n style[\"--l-cols\"] = \"subgrid\";\n if (padding) style[\"--l-p\"] = padding;\n if (alignItems) style[\"--l-ai\"] = alignItems;\n if (gap) style[\"--l-gap\"] = gap;\n } else {\n if (padding) style[\"--l-p\"] = padding;\n if (height) style[\"--l-h\"] = height;\n if (minHeight) style[\"--l-mh\"] = minHeight;\n if (maxInlineSize) style[\"--l-mis\"] = maxInlineSize;\n if (rows) style[\"--l-rows\"] = rows;\n if (columns) style[\"--l-cols\"] = columns;\n if (gap) style[\"--l-gap\"] = gap;\n if (justifyItems) style[\"--l-ji\"] = justifyItems;\n if (alignItems) style[\"--l-ai\"] = alignItems;\n if (justifyContent) style[\"--l-jc\"] = justifyContent;\n if (alignContent) style[\"--l-ac\"] = alignContent;\n if (autoFlow) style[\"--l-flow\"] = autoFlow;\n if (autoRows) style[\"--l-arows\"] = autoRows;\n if (autoColumns) style[\"--l-acols\"] = autoColumns;\n }\n if (justifySelf) style[\"--l-js\"] = justifySelf;\n if (alignSelf) style[\"--l-as\"] = alignSelf;\n\n const baseParts = [classes[\"layout\"]];\n if (inline) baseParts.push(classes[\"inline\"]);\n if (stackOnMobile) baseParts.push(classes[\"stackOnMobile\"]);\n const baseClass = baseParts.filter(Boolean).join(\" \");\n const combined = contents ? className : className ? `${baseClass} ${className}` : baseClass;\n\n return createElement(\n as,\n {\n id,\n className: combined,\n style,\n onClick,\n onKeyDown,\n role,\n tabIndex,\n \"aria-label\": props[\"aria-label\"],\n \"aria-labelledby\": props[\"aria-labelledby\"],\n \"aria-describedby\": props[\"aria-describedby\"],\n \"data-polly-layout\": true,\n },\n children\n );\n}\n",
9
9
  "/**\n * Button — interactive control with tier, semantic colour, and size.\n *\n * Renders as a <button> by default; switches to an <a> when given an\n * `href`. Tier sets visual importance (primary/secondary/tertiary),\n * color overlays semantic meaning (info/success/warning/danger),\n * size picks the padding + font scale (small/normal/large). Icon +\n * label are arranged with a nested inline <Layout>.\n *\n * Action wiring is declared via data-* attributes consumed by the\n * global event delegator in @fairfox/polly/actions — Button does not\n * accept an onClick prop.\n */\n\nimport type { ComponentChildren, JSX, VNode } from \"preact\";\nimport classes from \"./Button.module.css\";\nimport { Layout } from \"./Layout.tsx\";\n\nexport type ButtonTier = \"primary\" | \"secondary\" | \"tertiary\";\nexport type ButtonColor = \"default\" | \"info\" | \"success\" | \"warning\" | \"danger\";\nexport type ButtonSize = \"small\" | \"normal\" | \"large\";\n\ntype BaseButtonProps = {\n id?: string;\n tier?: ButtonTier;\n color?: ButtonColor;\n size?: ButtonSize;\n disabled?: boolean;\n fullWidth?: boolean;\n circle?: boolean;\n className?: string;\n title?: string;\n icon?: VNode;\n label: ComponentChildren;\n \"data-action\"?: string;\n \"aria-label\"?: string;\n /** Additional action-payload attributes the event delegator parses\n * into `ctx.data`. `data-action-tid=\"t-17\"` becomes `{ tid: \"t-17\" }`,\n * `data-action-item-id=\"…\"` becomes `{ itemId: \"…\" }`, and so on.\n * Typed as an index signature so every `data-action-*` key the\n * consumer cares about type-checks without a Button-side enumeration. */\n [actionDataAttr: `data-action-${string}`]: string | undefined;\n};\n\ntype ButtonAsButton = BaseButtonProps & {\n href?: never;\n target?: never;\n rel?: never;\n type?: \"button\" | \"submit\" | \"reset\";\n};\n\ntype ButtonAsLink = BaseButtonProps & {\n href: string;\n target?: string;\n rel?: string;\n type?: never;\n};\n\nexport type ButtonProps = ButtonAsButton | ButtonAsLink;\n\nfunction tierClass(tier: ButtonTier): string | undefined {\n if (tier === \"primary\") return classes[\"tierPrimary\"];\n if (tier === \"tertiary\") return classes[\"tierTertiary\"];\n return classes[\"tierSecondary\"];\n}\n\nfunction colorClass(color: ButtonColor): string | undefined {\n if (color === \"info\") return classes[\"colorInfo\"];\n if (color === \"success\") return classes[\"colorSuccess\"];\n if (color === \"warning\") return classes[\"colorWarning\"];\n if (color === \"danger\") return classes[\"colorDanger\"];\n return undefined;\n}\n\nfunction sizeClass(size: ButtonSize): string | undefined {\n if (size === \"small\") return classes[\"btnSmall\"];\n if (size === \"large\") return classes[\"btnLarge\"];\n return undefined;\n}\n\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: flat prop-to-class composition plus one anchor/button branch; splitting would just hide the mapping.\nexport function Button(props: ButtonProps): JSX.Element {\n const {\n id,\n tier = \"secondary\",\n color = \"default\",\n size = \"normal\",\n disabled = false,\n fullWidth = false,\n circle = false,\n className,\n title,\n icon,\n label,\n } = props;\n\n const parts = [classes[\"btn\"] ?? \"\"];\n const tc = tierClass(tier);\n if (tc) parts.push(tc);\n const cc = colorClass(color);\n if (cc) parts.push(cc);\n const sc = sizeClass(size);\n if (sc) parts.push(sc);\n if (circle) parts.push(classes[\"btnCircle\"] ?? \"\");\n if (fullWidth) parts.push(classes[\"btnFullWidth\"] ?? \"\");\n if (className) parts.push(className);\n const buttonClass = parts.filter(Boolean).join(\" \");\n\n const content = icon ? (\n <Layout inline columns=\"auto auto\" gap=\"0.5em\" alignItems=\"center\">\n {icon}\n <span>{label}</span>\n </Layout>\n ) : (\n label\n );\n\n const dataAction = props[\"data-action\"];\n const ariaLabel = props[\"aria-label\"];\n // Collect every `data-action-*` extra the consumer passed so the\n // event delegator can read them off the rendered element. Without\n // this, anything beyond `data-action` is silently dropped and\n // handlers fire with an empty `ctx.data`.\n const actionDataAttrs: Record<string, string> = {};\n for (const key of Object.keys(props)) {\n if (key.startsWith(\"data-action-\")) {\n const value = (props as unknown as Record<string, unknown>)[key];\n if (typeof value === \"string\") {\n actionDataAttrs[key] = value;\n }\n }\n }\n\n if (\"href\" in props && props.href) {\n return (\n <a\n id={id}\n class={buttonClass}\n title={title}\n href={disabled ? undefined : props.href}\n target={\"target\" in props ? props.target : undefined}\n rel={\"rel\" in props ? props.rel : undefined}\n aria-disabled={disabled}\n aria-label={ariaLabel}\n data-polly-ui\n data-polly-button={tier}\n data-action={dataAction}\n {...actionDataAttrs}\n >\n {content}\n </a>\n );\n }\n\n const resolvedType: \"button\" | \"submit\" | \"reset\" =\n \"type\" in props && props.type ? props.type : \"button\";\n\n return (\n <button\n id={id}\n class={buttonClass}\n title={title}\n type={resolvedType}\n disabled={disabled}\n aria-label={ariaLabel}\n data-polly-ui\n data-polly-button={tier}\n data-action={dataAction}\n {...actionDataAttrs}\n >\n {content}\n </button>\n );\n}\n",
10
+ "/**\n * Surface — the one primitive that owns visual-surface concerns.\n *\n * Where Layout governs spatial concerns (grid, flex, gap, alignment),\n * Surface governs the chrome that sits on top of layout: padding,\n * background, border, radius, shadow, and the narrow positioning idioms\n * (sticky strips, fixed floating panes) that consumers reach for inline\n * styles to express. Every prop maps to a `--polly-*` token through a\n * local `--s-*` custom property, so consumers can retheme an individual\n * Surface by overriding the polly token in `style` without touching the\n * primitive's CSS.\n */\n\nimport { type ComponentChildren, createElement, type JSX } from \"preact\";\nimport classes from \"./Surface.module.css\";\n\nexport type SurfaceVariant =\n | \"plain\"\n | \"raised\"\n | \"sunken\"\n | \"bubble\"\n | \"chip\"\n | \"callout\"\n | \"floating\"\n | \"sticky-bar\";\n\ntype Background = \"raised\" | \"sunken\" | \"transparent\" | (string & {});\ntype Radius = \"none\" | \"sm\" | \"md\" | \"lg\" | \"full\";\ntype Border = \"none\" | \"default\" | \"strong\";\ntype BorderWidth = \"none\" | \"default\" | \"medium\" | \"thick\";\ntype BorderSides =\n | \"all\"\n | \"block-start\"\n | \"block-end\"\n | \"inline-start\"\n | \"inline-end\"\n | \"block\"\n | \"inline\";\ntype Shadow = \"none\" | \"sm\" | \"md\" | \"lg\";\ntype Position = \"static\" | \"relative\" | \"sticky\" | \"fixed\";\n\n/**\n * Arbitrary `data-*` and `aria-*` attributes forwarded to the rendered element\n * so consumers (Modal, Toast, Card, etc.) can compose Surface without losing\n * DOM hooks or ARIA semantics.\n */\nexport type SurfaceDataAttrs = {\n [dataAttr: `data-${string}`]: string | number | boolean | undefined;\n [ariaAttr: `aria-${string}`]: string | number | boolean | undefined;\n};\n\nexport type SurfaceProps = SurfaceDataAttrs & {\n children?: ComponentChildren;\n\n /** Polymorphic element (div, section, article, aside, header, …). Defaults to 'div'. */\n as?: keyof JSX.IntrinsicElements;\n\n /** Named preset that resolves to a default bundle of the props below. Explicit props override. */\n variant?: SurfaceVariant;\n\n /** Any CSS length, typically `var(--polly-space-*)`. */\n padding?: string;\n\n /** Named values map to `var(--polly-surface-*)`; raw strings pass through for one-off colours. */\n background?: Background;\n\n radius?: Radius;\n border?: Border;\n borderWidth?: BorderWidth;\n borderSides?: BorderSides;\n shadow?: Shadow;\n\n /** display: inline-block — Surface flows inline with surrounding text. */\n inline?: boolean;\n width?: string;\n height?: string;\n minHeight?: string;\n maxInlineSize?: string;\n\n position?: Position;\n /** Any CSS inset value (`'0'`, `'auto auto 1rem 1rem'`, `'1rem'`, …). */\n inset?: string;\n zIndex?: number;\n\n className?: string;\n /**\n * Per-instance overrides. The supported retint path is to set polly tokens\n * here, e.g. `style={{ \"--polly-surface-raised\": \"#fef3c7\" }}`. Surface\n * merges this into its own computed style.\n */\n style?: JSX.CSSProperties;\n\n id?: string;\n role?: JSX.AriaRole;\n tabIndex?: number;\n \"aria-label\"?: string;\n \"aria-labelledby\"?: string;\n \"aria-describedby\"?: string;\n onClick?: JSX.MouseEventHandler<HTMLElement>;\n onKeyDown?: JSX.KeyboardEventHandler<HTMLElement>;\n};\n\ntype VariantDefaults = Partial<\n Pick<\n SurfaceProps,\n | \"padding\"\n | \"background\"\n | \"radius\"\n | \"border\"\n | \"borderWidth\"\n | \"borderSides\"\n | \"shadow\"\n | \"inline\"\n | \"width\"\n | \"height\"\n | \"minHeight\"\n | \"maxInlineSize\"\n | \"position\"\n | \"inset\"\n | \"zIndex\"\n >\n>;\n\nconst variantDefaults: Record<SurfaceVariant, VariantDefaults> = {\n plain: {},\n raised: {\n background: \"raised\",\n radius: \"md\",\n shadow: \"md\",\n border: \"default\",\n },\n sunken: {\n background: \"sunken\",\n radius: \"md\",\n border: \"default\",\n },\n bubble: {\n radius: \"md\",\n border: \"default\",\n padding: \"var(--polly-space-sm) var(--polly-space-md)\",\n },\n chip: {\n inline: true,\n radius: \"full\",\n padding: \"var(--polly-space-xs) var(--polly-space-sm)\",\n border: \"default\",\n },\n callout: {\n border: \"default\",\n radius: \"sm\",\n padding: \"var(--polly-space-sm) var(--polly-space-md)\",\n },\n floating: {\n position: \"fixed\",\n radius: \"lg\",\n shadow: \"lg\",\n border: \"default\",\n background: \"raised\",\n zIndex: 9999,\n },\n \"sticky-bar\": {\n position: \"sticky\",\n inset: \"0 0 auto 0\",\n borderSides: \"block-end\",\n border: \"default\",\n },\n};\n\nfunction bgValue(b: Background): string {\n if (b === \"raised\") return \"var(--polly-surface-raised)\";\n if (b === \"sunken\") return \"var(--polly-surface-sunken)\";\n if (b === \"transparent\") return \"transparent\";\n return b;\n}\n\nfunction radiusValue(r: Radius): string {\n if (r === \"none\") return \"0\";\n return `var(--polly-radius-${r})`;\n}\n\nfunction borderColorValue(b: Border): string {\n if (b === \"none\") return \"transparent\";\n if (b === \"strong\") return \"var(--polly-border-strong)\";\n return \"var(--polly-border)\";\n}\n\nfunction borderWidthValue(w: BorderWidth): string {\n if (w === \"none\") return \"0\";\n return `var(--polly-border-width-${w})`;\n}\n\nfunction shadowValue(s: Shadow): string {\n if (s === \"none\") return \"none\";\n return `var(--polly-shadow-${s})`;\n}\n\nfunction borderSidesClass(sides: BorderSides): string | undefined {\n if (sides === \"all\") return undefined;\n if (sides === \"block-start\") return classes[\"sides-block-start\"];\n if (sides === \"block-end\") return classes[\"sides-block-end\"];\n if (sides === \"inline-start\") return classes[\"sides-inline-start\"];\n if (sides === \"inline-end\") return classes[\"sides-inline-end\"];\n if (sides === \"block\") return classes[\"sides-block\"];\n if (sides === \"inline\") return classes[\"sides-inline\"];\n return undefined;\n}\n\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: prop-to-custom-property mapping; flat and linear, mirrors Layout.tsx.\nexport function Surface(props: SurfaceProps): JSX.Element {\n const { variant = \"plain\" } = props;\n const v = variantDefaults[variant];\n\n const as = props.as ?? \"div\";\n const padding = props.padding ?? v.padding;\n const background = props.background ?? v.background;\n const radius = props.radius ?? v.radius;\n const border = props.border ?? v.border;\n const borderSides = props.borderSides ?? v.borderSides ?? \"all\";\n const shadow = props.shadow ?? v.shadow;\n const inline = props.inline ?? v.inline;\n const width = props.width ?? v.width;\n const height = props.height ?? v.height;\n const minHeight = props.minHeight ?? v.minHeight;\n const maxInlineSize = props.maxInlineSize ?? v.maxInlineSize;\n const position = props.position ?? v.position;\n const inset = props.inset ?? v.inset;\n const zIndex = props.zIndex ?? v.zIndex;\n\n // A bordered surface needs a width. If the consumer asked for a border but\n // didn't pick a width, infer 'default' so the border renders.\n const borderWidth =\n props.borderWidth ?? v.borderWidth ?? (border && border !== \"none\" ? \"default\" : undefined);\n\n const style: Record<string, string> = {};\n if (padding) style[\"--s-p\"] = padding;\n if (background) style[\"--s-bg\"] = bgValue(background);\n if (radius) style[\"--s-radius\"] = radiusValue(radius);\n if (border) style[\"--s-border-color\"] = borderColorValue(border);\n if (borderWidth) style[\"--s-border-width\"] = borderWidthValue(borderWidth);\n if (shadow) style[\"--s-shadow\"] = shadowValue(shadow);\n if (width) style[\"--s-w\"] = width;\n if (height) style[\"--s-h\"] = height;\n if (minHeight) style[\"--s-mh\"] = minHeight;\n if (maxInlineSize) style[\"--s-mis\"] = maxInlineSize;\n if (position) style[\"--s-position\"] = position;\n if (inset) style[\"--s-inset\"] = inset;\n if (zIndex !== undefined) style[\"--s-z\"] = String(zIndex);\n\n if (props.style) {\n Object.assign(style, props.style as Record<string, string>);\n }\n\n const parts: (string | undefined)[] = [classes[\"surface\"]];\n if (inline) parts.push(classes[\"inline\"]);\n parts.push(borderSidesClass(borderSides));\n if (props.className) parts.push(props.className);\n const className = parts.filter(Boolean).join(\" \");\n\n const passthrough: Record<string, string | number | boolean> = {};\n for (const key of Object.keys(props)) {\n const isData = key.startsWith(\"data-\");\n const isAria = key.startsWith(\"aria-\");\n if (!isData && !isAria) continue;\n if (key === \"data-polly-surface\") continue;\n if (key === \"aria-label\" || key === \"aria-labelledby\" || key === \"aria-describedby\") continue;\n const value = (props as Record<string, unknown>)[key];\n if (value === undefined) continue;\n if (typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\") {\n passthrough[key] = value;\n }\n }\n\n return createElement(\n as,\n {\n id: props.id,\n className,\n style,\n onClick: props.onClick,\n onKeyDown: props.onKeyDown,\n role: props.role,\n tabIndex: props.tabIndex,\n \"aria-label\": props[\"aria-label\"],\n \"aria-labelledby\": props[\"aria-labelledby\"],\n \"aria-describedby\": props[\"aria-describedby\"],\n \"data-polly-surface\": variant,\n ...passthrough,\n },\n props.children\n );\n}\n",
11
+ "/**\n * Card — compound primitive that composes Surface for each named slot.\n *\n * Card is the first compound that is purely a re-skin of Surface — no\n * behavioural layer. Header, Body, and Footer are each Surfaces with\n * sensible defaults; Root is a raised Surface that wraps them. Every\n * slot accepts the full SurfaceProps, so consumers retint, override, or\n * reach for raw padding without reaching past the primitive.\n */\n\nimport type { JSX } from \"preact\";\nimport { Surface, type SurfaceProps } from \"./Surface.tsx\";\n\nexport type CardProps = SurfaceProps;\nexport type CardSlotProps = SurfaceProps;\n\nfunction Root(props: CardProps): JSX.Element {\n const { variant = \"raised\", radius = \"md\", ...rest } = props;\n return (\n <Surface variant={variant} radius={radius} data-polly-card {...rest}>\n {props.children}\n </Surface>\n );\n}\n\nfunction Header(props: CardSlotProps): JSX.Element {\n const {\n padding = \"var(--polly-space-md) var(--polly-space-lg)\",\n border = \"default\",\n borderSides = \"block-end\",\n ...rest\n } = props;\n return (\n <Surface\n padding={padding}\n border={border}\n borderSides={borderSides}\n data-polly-card-header\n {...rest}\n >\n {props.children}\n </Surface>\n );\n}\n\nfunction Body(props: CardSlotProps): JSX.Element {\n const { padding = \"var(--polly-space-lg)\", ...rest } = props;\n return (\n <Surface padding={padding} data-polly-card-body {...rest}>\n {props.children}\n </Surface>\n );\n}\n\nfunction Footer(props: CardSlotProps): JSX.Element {\n const {\n padding = \"var(--polly-space-md) var(--polly-space-lg)\",\n border = \"default\",\n borderSides = \"block-start\",\n ...rest\n } = props;\n return (\n <Surface\n padding={padding}\n border={border}\n borderSides={borderSides}\n data-polly-card-footer\n {...rest}\n >\n {props.children}\n </Surface>\n );\n}\n\nexport const Card = { Root, Header, Body, Footer };\n",
10
12
  "/**\n * Checkbox — native checkbox wrapped in a label.\n *\n * Pass a plain boolean for controlled use (caller listens elsewhere),\n * or a Signal<boolean> to have the primitive bind its own change\n * listener and mutate the signal directly. The label wraps the input\n * so clicks anywhere in the target area toggle it.\n */\n\nimport type { Signal } from \"@preact/signals\";\nimport type { JSX } from \"preact\";\nimport classes from \"./Checkbox.module.css\";\n\nexport type CheckboxProps = {\n checked?: boolean | Signal<boolean>;\n defaultChecked?: boolean;\n name?: string;\n disabled?: boolean;\n label?: string;\n className?: string;\n id?: string;\n};\n\nfunction isSignal(value: unknown): value is Signal<boolean> {\n return typeof value === \"object\" && value !== null && \"value\" in value && \"peek\" in value;\n}\n\nexport function Checkbox(props: CheckboxProps): JSX.Element {\n const { checked, defaultChecked, name, disabled = false, label, className, id } = props;\n\n const handleChange = (e: JSX.TargetedEvent<HTMLInputElement>): void => {\n if (isSignal(checked)) {\n checked.value = e.currentTarget.checked;\n }\n };\n\n const checkedValue = isSignal(checked) ? checked.value : checked;\n\n const parts = [classes[\"checkbox\"]];\n if (disabled) parts.push(classes[\"disabled\"] ?? \"\");\n if (className) parts.push(className);\n\n return (\n <label class={parts.filter(Boolean).join(\" \")} data-polly-ui data-polly-checkbox>\n <input\n id={id}\n type=\"checkbox\"\n class={classes[\"input\"]}\n checked={checkedValue}\n defaultChecked={defaultChecked}\n name={name}\n disabled={disabled}\n onChange={handleChange}\n />\n {label !== undefined && <span class={classes[\"label\"]}>{label}</span>}\n </label>\n );\n}\n",
11
13
  "/**\n * Collapsible — native <details>/<summary> wrapper.\n *\n * Uses the browser's built-in disclosure semantics so keyboard and\n * screen-reader behaviour come free. A ::before arrow rotates on open.\n * Colors, spacing, and motion come from tokens; `prefers-reduced-motion`\n * zeroes the rotation via the motion token.\n */\n\nimport type { ComponentChildren, JSX } from \"preact\";\nimport classes from \"./Collapsible.module.css\";\n\nexport type CollapsibleProps = {\n summary: string;\n children: ComponentChildren;\n defaultOpen?: boolean;\n className?: string;\n id?: string;\n};\n\nexport function Collapsible(props: CollapsibleProps): JSX.Element {\n const { summary, children, defaultOpen = false, className, id } = props;\n const parts = [classes[\"collapsible\"]];\n if (className) parts.push(className);\n return (\n <details\n id={id}\n class={parts.join(\" \")}\n open={defaultOpen}\n data-polly-ui\n data-polly-collapsible\n >\n <summary class={classes[\"summary\"]}>{summary}</summary>\n <div class={classes[\"content\"]}>{children}</div>\n </details>\n );\n}\n",
12
14
  "/**\n * ConfirmDialog — Promise-returning confirmation primitive.\n *\n * `confirm({ title, body, danger })` returns Promise<boolean>. Opens the\n * rendered `<ConfirmDialog.Host />` modal (which must be mounted once at\n * the app root). User picking confirm or cancel resolves the promise.\n * Escape, backdrop click, and explicit `.dismiss()` resolve false.\n */\n\nimport { signal } from \"@preact/signals\";\nimport type { JSX } from \"preact\";\nimport classes from \"./ConfirmDialog.module.css\";\nimport { Modal } from \"./Modal.tsx\";\n\ntype ConfirmRequest = {\n id: number;\n title: string;\n body?: string;\n danger?: boolean;\n confirmLabel?: string;\n cancelLabel?: string;\n resolve: (value: boolean) => void;\n};\n\nconst pending = signal<ConfirmRequest | null>(null);\nconst isOpen = signal(false);\nlet nextId = 0;\n\nexport type ConfirmOptions = {\n title: string;\n body?: string;\n danger?: boolean;\n confirmLabel?: string;\n cancelLabel?: string;\n};\n\nexport function confirm(options: ConfirmOptions): Promise<boolean> {\n return new Promise<boolean>((resolve) => {\n nextId += 1;\n pending.value = {\n id: nextId,\n title: options.title,\n body: options.body,\n danger: options.danger,\n confirmLabel: options.confirmLabel,\n cancelLabel: options.cancelLabel,\n resolve,\n };\n isOpen.value = true;\n });\n}\n\nfunction close(result: boolean): void {\n const current = pending.value;\n if (!current) return;\n isOpen.value = false;\n pending.value = null;\n current.resolve(result);\n}\n\n/** Renders the active confirm dialog. Mount once near the app root. */\nfunction Host(): JSX.Element | null {\n const current = pending.value;\n if (!current) return null;\n return (\n <Modal.Root when={isOpen} onClose={() => close(false)}>\n <Modal.Backdrop />\n <Modal.Content>\n <Modal.Header>\n <Modal.Title>{current.title}</Modal.Title>\n </Modal.Header>\n {current.body ? <Modal.Body>{current.body}</Modal.Body> : null}\n <Modal.Footer>\n <div class={classes[\"actions\"]} data-polly-confirm-actions>\n <button\n type=\"button\"\n class={classes[\"cancel\"]}\n data-polly-ui\n data-polly-interactive\n data-polly-confirm-cancel\n onClick={() => close(false)}\n >\n {current.cancelLabel ?? \"Cancel\"}\n </button>\n <button\n type=\"button\"\n class={current.danger ? classes[\"confirmDanger\"] : classes[\"confirm\"]}\n data-polly-ui\n data-polly-interactive\n data-polly-confirm-ok\n onClick={() => close(true)}\n >\n {current.confirmLabel ?? \"OK\"}\n </button>\n </div>\n </Modal.Footer>\n </Modal.Content>\n </Modal.Root>\n );\n}\n\nexport const ConfirmDialog = { Host, confirm };\n",
13
- "/**\n * Modal — compound dialog with focus trap, Escape handling, portal,\n * and overlay-stack integration.\n *\n * Root takes a `when` signal (or boolean). When truthy the content mounts\n * into the OverlayRoot portal, focus moves inside, Tab is trapped, Escape\n * fires `data-action=\"modal:close\"` (or the overlay registry's onClose\n * callback), and the body scroll locks.\n */\n\nimport type { ReadonlySignal } from \"@preact/signals\";\nimport { type ComponentChildren, createContext } from \"preact\";\nimport { createPortal } from \"preact/compat\";\nimport { useContext, useEffect, useId, useRef, useState } from \"preact/hooks\";\nimport { popOverlay, pushOverlay } from \"../actions/overlay.ts\";\nimport { installFocusTrap } from \"./internal/focus-trap.ts\";\nimport classes from \"./Modal.module.css\";\nimport { getOverlayRootNode } from \"./OverlayRoot.tsx\";\n\ntype ModalContext = {\n id: string;\n titleId: string;\n descId: string;\n close: () => void;\n};\n\nconst Ctx = createContext<ModalContext | null>(null);\n\nfunction useModal(): ModalContext {\n const ctx = useContext(Ctx);\n if (!ctx) throw new Error(\"Modal sub-components must render inside <Modal.Root>\");\n return ctx;\n}\n\ntype RootProps = {\n when: ReadonlySignal<boolean> | boolean;\n onClose?: () => void;\n children: ComponentChildren;\n /** Accessible label source: \"title\" uses the <Modal.Title> id, or pass an explicit label. */\n \"aria-label\"?: string;\n};\n\nfunction Root({ when, onClose, children, \"aria-label\": ariaLabel }: RootProps) {\n const id = useId();\n const titleId = `${id}-title`;\n const descId = `${id}-desc`;\n const mountRef = useRef<HTMLDivElement | null>(null);\n const [portalNode, setPortalNode] = useState<HTMLElement | null>(null);\n\n const isOpen = typeof when === \"boolean\" ? when : when.value;\n\n useEffect(() => {\n if (!isOpen) {\n setPortalNode(null);\n return;\n }\n setPortalNode(getOverlayRootNode());\n }, [isOpen]);\n\n useEffect(() => {\n if (!isOpen || !portalNode) return;\n const entry = { id, onClose };\n pushOverlay(entry);\n const el = mountRef.current;\n const cleanup = el\n ? installFocusTrap(el)\n : () => {\n /* no ref yet */\n };\n return () => {\n cleanup();\n popOverlay(id);\n };\n }, [isOpen, portalNode, id, onClose]);\n\n if (!isOpen || !portalNode) return null;\n\n const close = () => {\n onClose?.();\n };\n\n const ctx: ModalContext = { id, titleId, descId, close };\n\n const content = (\n <Ctx.Provider value={ctx}>\n <div\n ref={mountRef}\n class={classes[\"container\"]}\n data-polly-ui\n data-polly-modal-content\n data-overlay-id={id}\n data-state=\"open\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={ariaLabel ? undefined : titleId}\n aria-label={ariaLabel}\n aria-describedby={descId}\n >\n {children}\n </div>\n </Ctx.Provider>\n );\n\n return createPortal(content, portalNode);\n}\n\nfunction Backdrop() {\n const { close } = useModal();\n return (\n <div class={classes[\"backdrop\"]} data-polly-modal-backdrop onClick={close} aria-hidden=\"true\" />\n );\n}\n\nfunction Content({ children }: { children: ComponentChildren }) {\n return (\n <div class={classes[\"surface\"]} data-polly-modal-surface>\n {children}\n </div>\n );\n}\n\nfunction Header({ children }: { children: ComponentChildren }) {\n return (\n <header class={classes[\"header\"]} data-polly-modal-header>\n {children}\n </header>\n );\n}\n\nfunction Title({ children }: { children: ComponentChildren }) {\n const { titleId } = useModal();\n return (\n <h2 id={titleId} class={classes[\"title\"]} data-polly-modal-title>\n {children}\n </h2>\n );\n}\n\nfunction Body({ children }: { children: ComponentChildren }) {\n const { descId } = useModal();\n return (\n <div id={descId} class={classes[\"body\"]} data-polly-modal-body>\n {children}\n </div>\n );\n}\n\nfunction Footer({ children }: { children: ComponentChildren }) {\n return (\n <footer class={classes[\"footer\"]} data-polly-modal-footer>\n {children}\n </footer>\n );\n}\n\ntype CloseProps = {\n children: ComponentChildren;\n /** Fire a registered data-action instead of calling the onClose callback. */\n action?: string;\n};\n\nfunction Close({ children, action }: CloseProps) {\n const { close } = useModal();\n if (action) {\n return (\n <button\n type=\"button\"\n class={classes[\"close\"]}\n data-polly-ui\n data-polly-interactive\n data-polly-modal-close\n data-action={action}\n >\n {children}\n </button>\n );\n }\n return (\n <button\n type=\"button\"\n class={classes[\"close\"]}\n data-polly-ui\n data-polly-interactive\n data-polly-modal-close\n onClick={close}\n >\n {children}\n </button>\n );\n}\n\nexport const Modal = {\n Root,\n Backdrop,\n Content,\n Header,\n Title,\n Body,\n Footer,\n Close,\n};\n",
15
+ "/**\n * Modal — compound dialog with focus trap, Escape handling, portal,\n * and overlay-stack integration.\n *\n * Root takes a `when` signal (or boolean). When truthy the content mounts\n * into the OverlayRoot portal, focus moves inside, Tab is trapped, Escape\n * fires `data-action=\"modal:close\"` (or the overlay registry's onClose\n * callback), and the body scroll locks.\n */\n\nimport type { ReadonlySignal } from \"@preact/signals\";\nimport { type ComponentChildren, createContext, type JSX } from \"preact\";\nimport { createPortal } from \"preact/compat\";\nimport { useContext, useEffect, useId, useRef, useState } from \"preact/hooks\";\nimport { popOverlay, pushOverlay } from \"../actions/overlay.ts\";\nimport { installFocusTrap } from \"./internal/focus-trap.ts\";\nimport classes from \"./Modal.module.css\";\nimport { getOverlayRootNode } from \"./OverlayRoot.tsx\";\nimport { Surface } from \"./Surface.tsx\";\n\ntype ModalContext = {\n id: string;\n titleId: string;\n descId: string;\n close: () => void;\n};\n\nconst Ctx = createContext<ModalContext | null>(null);\n\nfunction useModal(): ModalContext {\n const ctx = useContext(Ctx);\n if (!ctx) throw new Error(\"Modal sub-components must render inside <Modal.Root>\");\n return ctx;\n}\n\ntype RootProps = {\n when: ReadonlySignal<boolean> | boolean;\n onClose?: () => void;\n children: ComponentChildren;\n /** Accessible label source: \"title\" uses the <Modal.Title> id, or pass an explicit label. */\n \"aria-label\"?: string;\n};\n\nfunction Root({ when, onClose, children, \"aria-label\": ariaLabel }: RootProps) {\n const id = useId();\n const titleId = `${id}-title`;\n const descId = `${id}-desc`;\n const mountRef = useRef<HTMLDivElement | null>(null);\n const [portalNode, setPortalNode] = useState<HTMLElement | null>(null);\n\n const isOpen = typeof when === \"boolean\" ? when : when.value;\n\n useEffect(() => {\n if (!isOpen) {\n setPortalNode(null);\n return;\n }\n setPortalNode(getOverlayRootNode());\n }, [isOpen]);\n\n useEffect(() => {\n if (!isOpen || !portalNode) return;\n const entry = { id, onClose };\n pushOverlay(entry);\n const el = mountRef.current;\n const cleanup = el\n ? installFocusTrap(el)\n : () => {\n /* no ref yet */\n };\n return () => {\n cleanup();\n popOverlay(id);\n };\n }, [isOpen, portalNode, id, onClose]);\n\n if (!isOpen || !portalNode) return null;\n\n const close = () => {\n onClose?.();\n };\n\n const ctx: ModalContext = { id, titleId, descId, close };\n\n const content = (\n <Ctx.Provider value={ctx}>\n <div\n ref={mountRef}\n class={classes[\"container\"]}\n data-polly-ui\n data-polly-modal-content\n data-overlay-id={id}\n data-state=\"open\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={ariaLabel ? undefined : titleId}\n aria-label={ariaLabel}\n aria-describedby={descId}\n >\n {children}\n </div>\n </Ctx.Provider>\n );\n\n return createPortal(content, portalNode);\n}\n\nfunction Backdrop() {\n const { close } = useModal();\n return (\n <div class={classes[\"backdrop\"]} data-polly-modal-backdrop onClick={close} aria-hidden=\"true\" />\n );\n}\n\ntype ContentProps = {\n children: ComponentChildren;\n className?: string;\n style?: JSX.CSSProperties;\n};\n\nfunction Content({ children, className, style }: ContentProps) {\n const cls = className ? `${classes[\"surface\"]} ${className}` : classes[\"surface\"];\n return (\n <Surface\n variant=\"raised\"\n radius=\"lg\"\n shadow=\"lg\"\n position=\"relative\"\n className={cls}\n style={style}\n data-polly-modal-surface\n >\n {children}\n </Surface>\n );\n}\n\nfunction Header({ children }: { children: ComponentChildren }) {\n return (\n <header class={classes[\"header\"]} data-polly-modal-header>\n {children}\n </header>\n );\n}\n\nfunction Title({ children }: { children: ComponentChildren }) {\n const { titleId } = useModal();\n return (\n <h2 id={titleId} class={classes[\"title\"]} data-polly-modal-title>\n {children}\n </h2>\n );\n}\n\nfunction Body({ children }: { children: ComponentChildren }) {\n const { descId } = useModal();\n return (\n <div id={descId} class={classes[\"body\"]} data-polly-modal-body>\n {children}\n </div>\n );\n}\n\nfunction Footer({ children }: { children: ComponentChildren }) {\n return (\n <footer class={classes[\"footer\"]} data-polly-modal-footer>\n {children}\n </footer>\n );\n}\n\ntype CloseProps = {\n children: ComponentChildren;\n /** Fire a registered data-action instead of calling the onClose callback. */\n action?: string;\n};\n\nfunction Close({ children, action }: CloseProps) {\n const { close } = useModal();\n if (action) {\n return (\n <button\n type=\"button\"\n class={classes[\"close\"]}\n data-polly-ui\n data-polly-interactive\n data-polly-modal-close\n data-action={action}\n >\n {children}\n </button>\n );\n }\n return (\n <button\n type=\"button\"\n class={classes[\"close\"]}\n data-polly-ui\n data-polly-interactive\n data-polly-modal-close\n onClick={close}\n >\n {children}\n </button>\n );\n}\n\nexport const Modal = {\n Root,\n Backdrop,\n Content,\n Header,\n Title,\n Body,\n Footer,\n Close,\n};\n",
14
16
  "/**\n * Overlay registry.\n *\n * Tracks the stack of open overlays (modals, popovers, confirm dialogs) so\n * Escape can close the topmost and `data-overlay-id`-based DOM scans have\n * a mirror in memory. Each entry stores an id plus an optional close\n * callback; `closeTopOverlay` invokes the callback and pops the entry.\n */\n\nimport { signal } from \"@preact/signals\";\n\nexport type OverlayEntry = {\n id: string;\n onClose?: () => void;\n};\n\nconst stack = signal<OverlayEntry[]>([]);\n\n/** Current overlay stack as a read-only snapshot. */\nexport function overlayStack(): readonly OverlayEntry[] {\n return stack.value;\n}\n\n/** Is any overlay currently open? */\nexport function hasOpenOverlay(): boolean {\n return stack.value.length > 0;\n}\n\n/** The top of the stack, or undefined if empty. */\nexport function topOverlay(): OverlayEntry | undefined {\n const s = stack.value;\n return s[s.length - 1];\n}\n\n/** Push an overlay onto the stack. Returns the popped entry when closed. */\nexport function pushOverlay(entry: OverlayEntry): void {\n stack.value = [...stack.value, entry];\n}\n\n/** Pop a specific overlay by id (or the top if no id given). */\nexport function popOverlay(id?: string): OverlayEntry | undefined {\n const s = stack.value;\n if (s.length === 0) return undefined;\n if (id === undefined) {\n const top = s[s.length - 1];\n stack.value = s.slice(0, -1);\n return top;\n }\n const idx = s.findIndex((e) => e.id === id);\n if (idx === -1) return undefined;\n const entry = s[idx];\n stack.value = [...s.slice(0, idx), ...s.slice(idx + 1)];\n return entry;\n}\n\n/** Close the top overlay by calling its onClose and popping it. */\nexport function closeTopOverlay(): OverlayEntry | undefined {\n const top = topOverlay();\n if (!top) return undefined;\n top.onClose?.();\n return popOverlay(top.id);\n}\n\n/** Reset the stack. Intended for tests. */\nexport function resetOverlayStack(): void {\n stack.value = [];\n}\n",
15
17
  "/**\n * Focus trap.\n *\n * Keeps Tab / Shift+Tab inside a root element. Returns a cleanup that\n * restores focus to the element that was active before the trap mounted.\n * Simple and synchronous — assumes a single active trap per OverlayRoot\n * and lets the overlay registry in `@fairfox/polly/actions` enforce that\n * at the stack level.\n */\n\nconst FOCUSABLE_SELECTOR = [\n \"a[href]\",\n \"area[href]\",\n \"button:not([disabled])\",\n \"input:not([disabled]):not([type=hidden])\",\n \"select:not([disabled])\",\n \"textarea:not([disabled])\",\n \"iframe\",\n \"object\",\n \"embed\",\n '[tabindex]:not([tabindex=\"-1\"])',\n \"[contenteditable]\",\n].join(\",\");\n\nfunction getFocusable(root: HTMLElement): HTMLElement[] {\n const nodes = Array.from(root.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR));\n return nodes.filter(\n (el) => !el.hasAttribute(\"disabled\") && el.getAttribute(\"aria-hidden\") !== \"true\"\n );\n}\n\nexport function installFocusTrap(root: HTMLElement): () => void {\n const previousActive = (\n document.activeElement instanceof HTMLElement ? document.activeElement : null\n ) as HTMLElement | null;\n\n // Move focus into the root if it's not already.\n const focusable = getFocusable(root);\n const first = focusable[0] ?? root;\n if (!root.contains(document.activeElement)) {\n first.focus();\n }\n\n function handleKeyDown(event: KeyboardEvent): void {\n if (event.key !== \"Tab\") return;\n const items = getFocusable(root);\n if (items.length === 0) {\n event.preventDefault();\n return;\n }\n const firstItem = items[0];\n const lastItem = items[items.length - 1];\n if (!firstItem || !lastItem) return;\n const active = document.activeElement;\n if (event.shiftKey) {\n if (active === firstItem || !root.contains(active)) {\n event.preventDefault();\n lastItem.focus();\n }\n } else if (active === lastItem) {\n event.preventDefault();\n firstItem.focus();\n }\n }\n\n document.addEventListener(\"keydown\", handleKeyDown);\n\n return () => {\n document.removeEventListener(\"keydown\", handleKeyDown);\n if (previousActive && document.contains(previousActive)) {\n previousActive.focus();\n }\n };\n}\n",
16
18
  "/**\n * OverlayRoot — portal target for stacked overlays.\n *\n * Apps render <OverlayRoot /> once, typically as the last child of the\n * app root. Modal, ConfirmDialog, and Toast portal into this element;\n * the scroll lock toggles based on the overlay registry count.\n */\n\nimport { effect } from \"@preact/signals\";\nimport { useEffect, useRef } from \"preact/hooks\";\nimport { hasOpenOverlay } from \"../actions/overlay.ts\";\nimport { acquireScrollLock } from \"./internal/scroll-lock.ts\";\nimport classes from \"./OverlayRoot.module.css\";\n\nexport function OverlayRoot() {\n const ref = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n let release: (() => void) | null = null;\n const dispose = effect(() => {\n if (hasOpenOverlay()) {\n if (!release) release = acquireScrollLock();\n } else if (release) {\n release();\n release = null;\n }\n });\n return () => {\n dispose();\n release?.();\n };\n }, []);\n\n return <div ref={ref} class={classes[\"root\"]} data-polly-ui data-polly-overlay-root />;\n}\n\n/** Get the mount node for portaled overlays. Returns null before mount. */\nexport function getOverlayRootNode(): HTMLElement | null {\n return document.querySelector<HTMLElement>(\"[data-polly-overlay-root]\");\n}\n",
@@ -21,11 +23,11 @@
21
23
  "/**\n * Tabs — horizontal nav with active-tab accent.\n *\n * Each button carries `data-action` (the consumer-provided action name)\n * and `data-action-id={tab.id}` so the event delegator resolves the\n * activated tab. The active tab gets `aria-current=\"page\"` and a\n * bottom-border accent. The nav scrolls horizontally with a hidden\n * scrollbar for overflow. Internal arrangement uses <Layout>.\n */\n\nimport type { JSX } from \"preact\";\nimport { Layout } from \"./Layout.tsx\";\nimport classes from \"./Tabs.module.css\";\n\nexport type Tab = { id: string; label: string; disabled?: boolean };\n\nexport type TabsProps = {\n tabs: Tab[];\n activeTab: string;\n action?: string;\n className?: string;\n id?: string;\n \"aria-label\"?: string;\n};\n\nexport function Tabs(props: TabsProps): JSX.Element {\n const { tabs, activeTab, action, className, id } = props;\n const parts = [classes[\"tabs\"] ?? \"\"];\n if (className) parts.push(className);\n return (\n <nav\n id={id}\n class={parts.filter(Boolean).join(\" \")}\n aria-label={props[\"aria-label\"]}\n data-polly-ui\n data-polly-tabs\n >\n <Layout columns={`repeat(${tabs.length}, auto)`} gap=\"0\" alignItems=\"end\">\n {tabs.map((tab) => {\n const isActive = activeTab === tab.id;\n const tabClass = isActive ? `${classes[\"tab\"]} ${classes[\"active\"]}` : classes[\"tab\"];\n return (\n <button\n key={tab.id}\n type=\"button\"\n class={tabClass}\n disabled={tab.disabled}\n aria-current={isActive ? \"page\" : undefined}\n data-action={action}\n data-action-id={tab.id}\n >\n {tab.label}\n </button>\n );\n })}\n </Layout>\n </nav>\n );\n}\n",
22
24
  "/**\n * Shared input a11y wiring.\n *\n * Returns a common set of attributes that TextInput, ActionInput, and\n * any consumer-built input can splat onto its native element. Keeps\n * aria-* and data-polly-* names consistent across the family.\n */\n\nexport type InputA11yProps = {\n name?: string;\n id?: string;\n required?: boolean;\n invalid?: boolean;\n describedBy?: string;\n placeholder?: string;\n disabled?: boolean;\n readOnly?: boolean;\n};\n\nexport function buildInputA11y(props: InputA11yProps) {\n const attrs: Record<string, unknown> = {\n \"data-polly-ui\": true,\n \"data-polly-input\": true,\n \"aria-invalid\": props.invalid ? \"true\" : undefined,\n \"aria-required\": props.required ? \"true\" : undefined,\n \"aria-describedby\": props.describedBy,\n name: props.name,\n id: props.id,\n placeholder: props.placeholder,\n disabled: props.disabled,\n readOnly: props.readOnly,\n };\n if (props.invalid) attrs[\"data-state\"] = \"invalid\";\n return attrs;\n}\n",
23
25
  "/**\n * TextInput — passive, signal-friendly native input wrapper.\n *\n * Designed to live inside <ActionForm>. Pass a plain string for\n * uncontrolled mode (FormData-on-submit picks up the value) or a\n * Signal<string> for controlled mode. Either way, a11y attributes are\n * wired by the shared input-base, the stable `[data-polly-input]` hook\n * is applied for styling, and `invalid` flips `aria-invalid` and\n * `data-state=\"invalid\"` for consumer selectors.\n */\n\nimport type { Signal } from \"@preact/signals\";\nimport type { JSX } from \"preact\";\nimport { buildInputA11y } from \"./internal/input-base.ts\";\nimport classes from \"./TextInput.module.css\";\n\ntype Variant = \"single\" | \"multi\";\n\nexport type TextInputProps = {\n name: string;\n /** Signal<string> for controlled, string for uncontrolled default. */\n value?: Signal<string> | string;\n variant?: Variant;\n placeholder?: string;\n invalid?: boolean;\n required?: boolean;\n disabled?: boolean;\n readOnly?: boolean;\n id?: string;\n describedBy?: string;\n rows?: number;\n autoFocus?: boolean;\n className?: string;\n};\n\nfunction isSignal<T>(v: Signal<T> | T | undefined): v is Signal<T> {\n return typeof v === \"object\" && v !== null && \"value\" in v && \"peek\" in (v as object);\n}\n\nexport function TextInput(props: TextInputProps): JSX.Element {\n const variant = props.variant ?? \"single\";\n const a11y = buildInputA11y({\n name: props.name,\n id: props.id,\n required: props.required,\n invalid: props.invalid,\n describedBy: props.describedBy,\n placeholder: props.placeholder,\n disabled: props.disabled,\n readOnly: props.readOnly,\n });\n\n const controlled = isSignal(props.value);\n const stringValue = controlled ? (props.value as Signal<string>).value : undefined;\n const defaultValue = controlled ? undefined : ((props.value as string | undefined) ?? \"\");\n\n const className = props.className ? `${classes[\"input\"]} ${props.className}` : classes[\"input\"];\n\n if (variant === \"multi\") {\n return (\n <textarea\n {...(a11y as unknown as JSX.HTMLAttributes<HTMLTextAreaElement>)}\n class={className}\n data-polly-input-variant=\"multi\"\n rows={props.rows}\n // biome-ignore lint/a11y/noAutofocus: opt-in prop — caller requests autofocus explicitly (e.g. form opens to this field).\n autoFocus={props.autoFocus}\n value={stringValue}\n defaultValue={defaultValue}\n onInput={(e) => {\n if (controlled) {\n (props.value as Signal<string>).value = e.currentTarget.value;\n }\n }}\n />\n );\n }\n\n return (\n <input\n {...(a11y as unknown as JSX.HTMLAttributes<HTMLInputElement>)}\n type=\"text\"\n class={className}\n data-polly-input-variant=\"single\"\n // biome-ignore lint/a11y/noAutofocus: opt-in prop — caller requests autofocus explicitly (e.g. form opens to this field).\n autoFocus={props.autoFocus}\n value={stringValue}\n defaultValue={defaultValue}\n onInput={(e) => {\n if (controlled) {\n (props.value as Signal<string>).value = e.currentTarget.value;\n }\n }}\n />\n );\n}\n",
24
- "/**\n * Toast — consumer-facing surface for the global errorState.\n *\n * Renders every entry of the `errorState` signal into a viewport mounted\n * inside OverlayRoot. `aria-live` is polite for info/warning and\n * assertive for error severity. Each item auto-dismisses after\n * `autoDismissMs` unless the user hovers the viewport. Clicking a\n * toast or its close button removes that single entry.\n */\n\nimport type { JSX } from \"preact\";\nimport { createPortal } from \"preact/compat\";\nimport { useEffect, useRef, useState } from \"preact/hooks\";\nimport { clearError, type ErrorEntry, errorState } from \"../actions/error.ts\";\nimport { getOverlayRootNode } from \"./OverlayRoot.tsx\";\nimport classes from \"./Toast.module.css\";\n\nexport type ToastViewportProps = {\n autoDismissMs?: number;\n className?: string;\n};\n\nfunction Viewport(props: ToastViewportProps): JSX.Element | null {\n const autoDismissMs = props.autoDismissMs ?? 5000;\n const [portalNode, setPortalNode] = useState<HTMLElement | null>(null);\n const [paused, setPaused] = useState(false);\n const entries = errorState.value;\n\n useEffect(() => {\n setPortalNode(getOverlayRootNode());\n }, []);\n\n useEffect(() => {\n if (paused || entries.length === 0) return;\n const head = entries[0];\n if (!head) return;\n const timer = window.setTimeout(() => {\n clearError(head.id);\n }, autoDismissMs);\n return () => window.clearTimeout(timer);\n }, [paused, entries, autoDismissMs]);\n\n if (!portalNode) return null;\n\n const content = (\n // biome-ignore lint/a11y/noStaticElementInteractions: viewport pauses auto-dismiss on hover; it is a container, not an interactive control itself.\n <div\n class={`${classes[\"viewport\"]} ${props.className ?? \"\"}`.trim()}\n data-polly-ui\n data-polly-toast-viewport\n onMouseEnter={() => setPaused(true)}\n onMouseLeave={() => setPaused(false)}\n >\n {entries.map((entry) => (\n <ToastItem key={entry.id} entry={entry} />\n ))}\n </div>\n );\n return createPortal(content, portalNode);\n}\n\nfunction ToastItem({ entry }: { entry: ErrorEntry }): JSX.Element {\n const liveness = entry.severity === \"error\" ? \"assertive\" : \"polite\";\n const ref = useRef<HTMLDivElement>(null);\n return (\n <div\n ref={ref}\n class={classes[\"item\"]}\n data-polly-ui\n data-polly-toast-item\n data-severity={entry.severity}\n role={entry.severity === \"error\" ? \"alert\" : \"status\"}\n aria-live={liveness}\n >\n <span class={classes[\"message\"]}>{entry.message}</span>\n <button\n type=\"button\"\n class={classes[\"close\"]}\n data-polly-ui\n data-polly-interactive\n data-polly-toast-close\n onClick={() => clearError(entry.id)}\n aria-label=\"Dismiss\"\n >\n ×\n </button>\n </div>\n );\n}\n\nexport const Toast = { Viewport };\n",
26
+ "/**\n * Toast — consumer-facing surface for the global errorState.\n *\n * Renders every entry of the `errorState` signal into a viewport mounted\n * inside OverlayRoot. `aria-live` is polite for info/warning and\n * assertive for error severity. Each item auto-dismisses after\n * `autoDismissMs` unless the user hovers the viewport. Clicking a\n * toast or its close button removes that single entry.\n */\n\nimport type { JSX } from \"preact\";\nimport { createPortal } from \"preact/compat\";\nimport { useEffect, useState } from \"preact/hooks\";\nimport { clearError, type ErrorEntry, errorState } from \"../actions/error.ts\";\nimport { getOverlayRootNode } from \"./OverlayRoot.tsx\";\nimport { Surface } from \"./Surface.tsx\";\nimport classes from \"./Toast.module.css\";\n\nexport type ToastViewportProps = {\n autoDismissMs?: number;\n className?: string;\n};\n\nfunction Viewport(props: ToastViewportProps): JSX.Element | null {\n const autoDismissMs = props.autoDismissMs ?? 5000;\n const [portalNode, setPortalNode] = useState<HTMLElement | null>(null);\n const [paused, setPaused] = useState(false);\n const entries = errorState.value;\n\n useEffect(() => {\n setPortalNode(getOverlayRootNode());\n }, []);\n\n useEffect(() => {\n if (paused || entries.length === 0) return;\n const head = entries[0];\n if (!head) return;\n const timer = window.setTimeout(() => {\n clearError(head.id);\n }, autoDismissMs);\n return () => window.clearTimeout(timer);\n }, [paused, entries, autoDismissMs]);\n\n if (!portalNode) return null;\n\n const content = (\n // biome-ignore lint/a11y/noStaticElementInteractions: viewport pauses auto-dismiss on hover; it is a container, not an interactive control itself.\n <div\n class={`${classes[\"viewport\"]} ${props.className ?? \"\"}`.trim()}\n data-polly-ui\n data-polly-toast-viewport\n onMouseEnter={() => setPaused(true)}\n onMouseLeave={() => setPaused(false)}\n >\n {entries.map((entry) => (\n <ToastItem key={entry.id} entry={entry} />\n ))}\n </div>\n );\n return createPortal(content, portalNode);\n}\n\nfunction ToastItem({ entry }: { entry: ErrorEntry }): JSX.Element {\n const liveness = entry.severity === \"error\" ? \"assertive\" : \"polite\";\n return (\n <Surface\n variant=\"raised\"\n padding=\"var(--polly-space-md) var(--polly-space-lg)\"\n className={classes[\"item\"]}\n data-polly-ui\n data-polly-toast-item\n data-severity={entry.severity}\n role={entry.severity === \"error\" ? \"alert\" : \"status\"}\n aria-live={liveness}\n >\n <span class={classes[\"message\"]}>{entry.message}</span>\n <button\n type=\"button\"\n class={classes[\"close\"]}\n data-polly-ui\n data-polly-interactive\n data-polly-toast-close\n onClick={() => clearError(entry.id)}\n aria-label=\"Dismiss\"\n >\n ×\n </button>\n </Surface>\n );\n}\n\nexport const Toast = { Viewport };\n",
25
27
  "/**\n * Global error surface for action handlers.\n *\n * Actions that fail set the errorState signal via `submitError`; a `<Toast>`\n * component consumes that signal and renders a dismissable message. Handlers\n * that catch expected failures (validation, quota) may call `setError` directly.\n */\n\nimport { signal } from \"@preact/signals\";\n\nexport type ErrorSeverity = \"error\" | \"warning\" | \"info\";\n\nexport type ErrorEntry = {\n id: string;\n message: string;\n severity: ErrorSeverity;\n action?: string;\n createdAt: number;\n};\n\nexport const errorState = signal<ErrorEntry[]>([]);\n\nlet nextId = 0;\nfunction allocId(): string {\n nextId += 1;\n return `polly-err-${nextId}`;\n}\n\nexport function setError(\n message: string,\n opts: { severity?: ErrorSeverity; action?: string } = {}\n): string {\n const entry: ErrorEntry = {\n id: allocId(),\n message,\n severity: opts.severity ?? \"error\",\n action: opts.action,\n createdAt: Date.now(),\n };\n errorState.value = [...errorState.value, entry];\n return entry.id;\n}\n\nexport function clearError(id?: string): void {\n if (id === undefined) {\n errorState.value = [];\n return;\n }\n errorState.value = errorState.value.filter((e) => e.id !== id);\n}\n\n/**\n * Convenience wrapper for an action's catch block.\n * Logs the action name + error and surfaces a user-visible message.\n */\nexport function submitError(action: string, err: unknown): string {\n const message = err instanceof Error ? err.message : String(err);\n return setError(message, { action, severity: \"error\" });\n}\n",
26
28
  "/**\n * Toggle — switch-role checkbox.\n *\n * A visually-hidden <input role=\"switch\"> paired with a styled track\n * and thumb inside a <label>. Passive: the caller drives `checked` and\n * handles state changes via the action registry (wrap the Toggle in a\n * <label data-action=\"...\"> or bind a parent form's submit). a11y\n * attributes come from the native input; the label wraps so clicks\n * anywhere in the control toggle the input.\n */\n\nimport type { JSX } from \"preact\";\nimport classes from \"./Toggle.module.css\";\n\nexport type ToggleProps = {\n checked?: boolean;\n disabled?: boolean;\n label?: string;\n name?: string;\n className?: string;\n id?: string;\n};\n\nexport function Toggle(props: ToggleProps): JSX.Element {\n const { checked = false, disabled = false, label, name, className, id } = props;\n const parts = [classes[\"toggle\"]];\n if (disabled) parts.push(classes[\"disabled\"]);\n if (className) parts.push(className);\n return (\n <label class={parts.join(\" \")} data-polly-ui data-polly-toggle>\n <input\n id={id}\n type=\"checkbox\"\n role=\"switch\"\n name={name}\n aria-checked={checked}\n class={classes[\"input\"]}\n checked={checked}\n disabled={disabled}\n />\n <span class={checked ? `${classes[\"track\"]} ${classes[\"trackChecked\"]}` : classes[\"track\"]}>\n <span\n class={checked ? `${classes[\"thumb\"]} ${classes[\"thumbChecked\"]}` : classes[\"thumb\"]}\n />\n </span>\n {label !== undefined && <span class={classes[\"label\"]}>{label}</span>}\n </label>\n );\n}\n"
27
29
  ],
28
- "mappings": "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",
29
- "debugId": "2F1AD073C8A46D0F64756E2164756E21",
30
+ "mappings": "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",
31
+ "debugId": "9CE0D265222997F864756E2164756E21",
30
32
  "names": []
31
33
  }
@@ -416,6 +416,77 @@
416
416
  }
417
417
  }
418
418
 
419
+ /* src/polly-ui/Surface.module.css */
420
+ @layer polly-components {
421
+ .surface_pQCFqA {
422
+ --s-p: 0;
423
+ --s-bg: transparent;
424
+ --s-radius: 0;
425
+ --s-border-color: transparent;
426
+ --s-border-width: 0;
427
+ --s-shadow: none;
428
+ --s-w: auto;
429
+ --s-h: auto;
430
+ --s-mh: auto;
431
+ --s-mis: none;
432
+ --s-position: static;
433
+ --s-inset: auto;
434
+ --s-z: auto;
435
+ box-sizing: border-box;
436
+ padding: var(--s-p);
437
+ background: var(--s-bg);
438
+ border-style: solid;
439
+ border-color: var(--s-border-color);
440
+ border-width: var(--s-border-width);
441
+ border-radius: var(--s-radius);
442
+ box-shadow: var(--s-shadow);
443
+ inline-size: var(--s-w);
444
+ block-size: var(--s-h);
445
+ min-block-size: var(--s-mh);
446
+ max-inline-size: var(--s-mis);
447
+ position: var(--s-position);
448
+ inset: var(--s-inset);
449
+ z-index: var(--s-z);
450
+ }
451
+
452
+ .inline_pQCFqA {
453
+ display: inline-block;
454
+ inline-size: auto;
455
+ }
456
+
457
+ .sides-block-start_pQCFqA {
458
+ border-style: none;
459
+ border-block-start-style: solid;
460
+ }
461
+
462
+ .sides-block-end_pQCFqA {
463
+ border-style: none;
464
+ border-block-end-style: solid;
465
+ }
466
+
467
+ .sides-inline-start_pQCFqA {
468
+ border-style: none;
469
+ border-inline-start-style: solid;
470
+ }
471
+
472
+ .sides-inline-end_pQCFqA {
473
+ border-style: none;
474
+ border-inline-end-style: solid;
475
+ }
476
+
477
+ .sides-block_pQCFqA {
478
+ border-style: none;
479
+ border-block-start-style: solid;
480
+ border-block-end-style: solid;
481
+ }
482
+
483
+ .sides-inline_pQCFqA {
484
+ border-style: none;
485
+ border-left-style: solid;
486
+ border-right-style: solid;
487
+ }
488
+ }
489
+
419
490
  /* src/polly-ui/Checkbox.module.css */
420
491
  @layer polly-components {
421
492
  .checkbox_EKE5sg {
@@ -559,13 +630,8 @@
559
630
  }
560
631
 
561
632
  .surface_fLMrWA {
562
- position: relative;
563
633
  pointer-events: auto;
564
- background: var(--polly-surface-raised);
565
634
  color: var(--polly-text);
566
- border: var(--polly-border-width-default) solid var(--polly-border);
567
- border-radius: var(--polly-radius-lg);
568
- box-shadow: var(--polly-shadow-lg);
569
635
  max-inline-size: min(640px, calc(100vw - 2 * var(--polly-space-lg)));
570
636
  max-block-size: calc(100vh - 2 * var(--polly-space-lg));
571
637
  overflow: auto;
@@ -872,23 +938,18 @@
872
938
  display: grid;
873
939
  grid-template-columns: 1fr auto;
874
940
  gap: var(--polly-space-md);
875
- padding: var(--polly-space-md) var(--polly-space-lg);
876
- background: var(--polly-surface-raised);
877
941
  color: var(--polly-text);
878
- border: var(--polly-border-width-default) solid var(--polly-border);
879
- border-radius: var(--polly-radius-md);
880
- box-shadow: var(--polly-shadow-md);
881
942
  align-items: center;
882
943
  min-inline-size: 16em;
883
944
  max-inline-size: 28em;
884
945
  }
885
946
 
886
947
  .item_xVzRuA[data-severity="error"] {
887
- border-color: var(--polly-danger);
948
+ --polly-border: var(--polly-danger);
888
949
  }
889
950
 
890
951
  .item_xVzRuA[data-severity="warning"] {
891
- border-color: var(--polly-warning);
952
+ --polly-border: var(--polly-warning);
892
953
  }
893
954
 
894
955
  .message_xVzRuA {
@@ -47,6 +47,34 @@ export interface CreateMeshClientOptions {
47
47
  rtc?: {
48
48
  RTCPeerConnection?: MeshWebRTCAdapterOptions["RTCPeerConnection"];
49
49
  iceServers?: RTCIceServer[];
50
+ /**
51
+ * Async resolver for ICE servers, called once at connect time. Wins
52
+ * over `iceServers` if both are set. The realistic pattern is a
53
+ * consumer fetching short-lived TURN credentials from its own
54
+ * backend before each session — for production WebRTC apps that
55
+ * care about coverage, TURN is the only way two peers behind
56
+ * symmetric NATs (cellular CGNAT, some corporate firewalls) can
57
+ * exchange bytes at all.
58
+ *
59
+ * Common provider shapes:
60
+ *
61
+ * - **Self-hosted coturn**: fetch a HMAC-derived ephemeral
62
+ * `username` / `credential` pair from your backend and return
63
+ * `[{ urls: "turn:turn.example.com", username, credential }]`.
64
+ * - **Cloudflare Calls**: hit `/v1/turn/keys/<id>/credentials/generate`
65
+ * from a server route and pass the returned `iceServers` array
66
+ * straight through.
67
+ * - **Twilio NTS**: call the network-traversal-service endpoint
68
+ * server-side and forward `data.iceServers`.
69
+ * - **metered.ca / Xirsys / etc.**: same pattern — credentials live
70
+ * server-side, the resolver is the integration point.
71
+ *
72
+ * Resolution happens once. ICE restart with refreshed credentials
73
+ * is a separate concern that this hook does not yet cover; if your
74
+ * deployment needs it, tear down and rebuild the mesh client when
75
+ * the credential window closes.
76
+ */
77
+ iceCredentialResolver?: () => Promise<RTCIceServer[]>;
50
78
  dataChannelLabel?: string;
51
79
  };
52
80
  /** The local peer's keyring — either a fully-constructed instance, or a
@@ -65,6 +93,15 @@ export interface CreateMeshClientOptions {
65
93
  * full $meshState posture where the server is off the data path. */
66
94
  encryptionEnabled?: boolean;
67
95
  }
96
+ /**
97
+ * Resolve the ICE server list a mesh client will use. The resolver wins
98
+ * over a static `iceServers` list because the realistic deployment shape
99
+ * is a consumer fetching short-lived TURN credentials per session — the
100
+ * resolver is the integration point and a static list alongside it would
101
+ * silently mask a broken credential flow. Exported for unit tests; the
102
+ * production call site is inside {@link createMeshClient}.
103
+ */
104
+ export declare function resolveIceServers(rtc: CreateMeshClientOptions["rtc"]): Promise<RTCIceServer[] | undefined>;
68
105
  /** Handle returned by {@link createMeshClient}. */
69
106
  export interface MeshClient {
70
107
  /** The Automerge Repo. `$meshState` has already been configured against
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fairfox/polly",
3
- "version": "0.29.4",
3
+ "version": "0.30.0",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "Multi-execution-context framework with reactive state and cross-context messaging for Chrome extensions, PWAs, and worker-based applications",