@fairfox/polly 0.71.0 → 0.73.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.
Files changed (45) hide show
  1. package/dist/src/client/index.js +2 -2
  2. package/dist/src/client/index.js.map +2 -2
  3. package/dist/src/elysia/index.js +464 -4
  4. package/dist/src/elysia/index.js.map +6 -4
  5. package/dist/src/peer.d.ts +2 -0
  6. package/dist/src/peer.js +468 -4
  7. package/dist/src/peer.js.map +8 -5
  8. package/dist/src/polly-ui/ActionInput.d.ts +12 -2
  9. package/dist/src/polly-ui/ActionSelect.d.ts +36 -0
  10. package/dist/src/polly-ui/Button.d.ts +4 -0
  11. package/dist/src/polly-ui/Cluster.d.ts +36 -0
  12. package/dist/src/polly-ui/Code.d.ts +18 -0
  13. package/dist/src/polly-ui/Surface.d.ts +12 -1
  14. package/dist/src/polly-ui/Text.d.ts +43 -0
  15. package/dist/src/polly-ui/index.css +320 -194
  16. package/dist/src/polly-ui/index.d.ts +5 -1
  17. package/dist/src/polly-ui/index.js +533 -284
  18. package/dist/src/polly-ui/index.js.map +14 -8
  19. package/dist/src/polly-ui/internal/dispatch-action.d.ts +13 -0
  20. package/dist/src/polly-ui/internal/passthrough.d.ts +25 -0
  21. package/dist/src/polly-ui/markdown.js +3 -3
  22. package/dist/src/polly-ui/markdown.js.map +2 -2
  23. package/dist/src/polly-ui/styles.css +345 -194
  24. package/dist/src/polly-ui/theme.css +1 -0
  25. package/dist/src/shared/lib/peer-repo-server.d.ts +18 -0
  26. package/dist/src/shared/lib/sweep-sealed.d.ts +111 -0
  27. package/dist/tools/quality/src/cli.js +6 -2
  28. package/dist/tools/quality/src/cli.js.map +3 -3
  29. package/dist/tools/quality/src/index.js +6 -2
  30. package/dist/tools/quality/src/index.js.map +3 -3
  31. package/dist/tools/test/src/browser/run.js +89 -49
  32. package/dist/tools/test/src/browser/run.js.map +6 -5
  33. package/dist/tools/test/src/browser/runner-core.d.ts +32 -0
  34. package/dist/tools/test/src/e2e-mesh/index.js +193 -171
  35. package/dist/tools/test/src/e2e-mesh/index.js.map +4 -4
  36. package/dist/tools/test/src/visual/index.js +270 -251
  37. package/dist/tools/test/src/visual/index.js.map +5 -5
  38. package/dist/tools/verify/specs/tla/MeshSeed.cfg +27 -0
  39. package/dist/tools/verify/specs/tla/MeshSeed.tla +179 -0
  40. package/dist/tools/verify/specs/tla/README.md +11 -1
  41. package/dist/tools/verify/src/cli.js +136 -51
  42. package/dist/tools/verify/src/cli.js.map +9 -7
  43. package/dist/tools/visualize/src/cli.js +72 -2
  44. package/dist/tools/visualize/src/cli.js.map +5 -5
  45. package/package.json +3 -2
@@ -1,15 +1,21 @@
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/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"],
3
+ "sources": ["../src/polly-ui/ActionForm.tsx", "../src/polly-ui/ActionInput.tsx", "../src/polly-ui/internal/dispatch-action.ts", "../src/polly-ui/internal/passthrough.ts", "../src/polly-ui/ActionSelect.tsx", "../src/polly-ui/Dropdown.tsx", "../src/polly-ui/Layout.tsx", "../src/polly-ui/Badge.tsx", "../src/polly-ui/Button.tsx", "../src/polly-ui/Surface.tsx", "../src/polly-ui/Card.tsx", "../src/polly-ui/Checkbox.tsx", "../src/polly-ui/Cluster.tsx", "../src/polly-ui/Code.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/Select.tsx", "../src/polly-ui/Skeleton.tsx", "../src/polly-ui/Tabs.tsx", "../src/polly-ui/Text.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
- "/**\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
- "/**\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",
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 * \"input\" commit on every keystroke — for filter-as-you-type fields;\n * the field stays in edit mode rather than toggling to view\n *\n * `inputType` sets the native input type for the single-line variant —\n * \"text\" (default), \"date\", \"time\", \"number\", and friends — so a date\n * or numeric field commits through the action system like any other.\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\";\nimport { dispatchAction } from \"./internal/dispatch-action.ts\";\nimport { collectPassthrough, type PassthroughAttrs } from \"./internal/passthrough.ts\";\n\nexport type ActionInputSaveOn = \"blur\" | \"enter\" | \"cmd-enter\" | \"explicit\" | \"input\";\nexport type ActionInputVariant = \"single\" | \"multi\";\nexport type ActionInputType =\n | \"text\"\n | \"date\"\n | \"datetime-local\"\n | \"time\"\n | \"month\"\n | \"week\"\n | \"number\"\n | \"email\"\n | \"url\"\n | \"tel\";\n\nexport type ActionInputProps = PassthroughAttrs & {\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 /** Native input type for the single-line variant. Default: \"text\". */\n inputType?: ActionInputType;\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 five 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 // \"input\" mode is a permanently-editable filter field — it never has a\n // view mode to toggle back to, so it starts in edit.\n const live = saveOn === \"input\";\n const [mode, setMode] = useState<\"view\" | \"edit\">(live ? \"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 // Don't steal focus on mount for a live filter field; only pull focus\n // when the user has explicitly toggled a view field into edit mode.\n if (mode === \"edit\" && !live && inputRef.current) {\n inputRef.current.focus();\n inputRef.current.select?.();\n }\n }, [mode, live]);\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 dispatchAction(props.action, { ...(props.actionData ?? {}), value: next });\n }\n // A live filter field stays editable; every other trigger returns\n // to view mode once the value is committed.\n if (!live) setMode(\"view\");\n },\n [props.action, props.actionData, props.value, live]\n );\n\n const cancel = useCallback(() => {\n setDraft(props.value);\n if (!live) setMode(\"view\");\n }, [props.value, live]);\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 // Consumer data-*/aria-* forwarded onto whichever element is the root\n // for the current mode; the primitive's own attributes win on collision.\n const passthrough = collectPassthrough(props);\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 {...passthrough}\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 ...passthrough,\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 const next = e.currentTarget.value;\n setDraft(next);\n if (live) commit(next);\n },\n onBlur: () => {\n if (saveOn === \"blur\") commit(draft);\n else if (!live) 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={props.inputType ?? \"text\"}\n {...(common as unknown as JSX.HTMLAttributes<HTMLInputElement>)}\n />\n );\n}\n",
7
+ "/**\n * Fire a named action through the global event-delegation registry.\n *\n * The Action* primitives (<ActionInput>, <ActionSelect>) commit by\n * clicking a detached `<button data-action=\"…\">` carrying data-action-*\n * attributes; the delegated click listener routes it into the\n * consumer's action registry with no extra wiring. Centralised here so\n * every Action* primitive dispatches identically.\n *\n * Keys in `data` are camelCase and converted to dash-case attribute\n * names — `actionData={{ taskId }}` becomes `data-action-task-id`.\n */\n\nexport function dispatchAction(action: string, data: Record<string, string>): void {\n const hidden = document.createElement(\"button\");\n hidden.setAttribute(\"data-action\", action);\n for (const [key, value] of Object.entries(data)) {\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}\n",
8
+ "/**\n * polly#125: data-* / aria-* attribute passthrough for UI primitives.\n *\n * Primitives accept a fixed prop set. Without passthrough, a consumer\n * that needs a `data-*` test hook or an `aria-*` attribute on the\n * primitive's own element has to wrap it in an extra DOM node — a smell.\n *\n * {@link PassthroughAttrs} widens a primitive's props to accept any\n * `data-*` / `aria-*` key; {@link collectPassthrough} gathers them for\n * spreading onto the rendered root element. Spread the result *before*\n * the primitive's own attributes so a consumer key can never override\n * one the primitive sets itself (`data-polly-*`, etc.).\n */\n\n/** Index signatures letting a primitive's props accept arbitrary\n * `data-*` and `aria-*` attributes. */\nexport type PassthroughAttrs = {\n [dataAttr: `data-${string}`]: string | number | boolean | undefined;\n [ariaAttr: `aria-${string}`]: string | number | boolean | undefined;\n};\n\n/**\n * Collect `data-*` and `aria-*` attributes from a props object so they\n * can be spread onto a primitive's root element. `undefined` values and\n * non-attribute value types (functions, objects) are dropped.\n */\nexport function collectPassthrough(\n props: Record<string, unknown>\n): Record<string, string | number | boolean> {\n const out: Record<string, string | number | boolean> = {};\n for (const key of Object.keys(props)) {\n if (!key.startsWith(\"data-\") && !key.startsWith(\"aria-\")) continue;\n const value = props[key];\n if (typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\") {\n out[key] = value;\n }\n }\n return out;\n}\n",
9
+ "/**\n * ActionSelect — single-select dropdown that commits via the action system.\n *\n * The action-dispatching sibling of <Select>. Where <Select> binds a\n * `Signal<Set<T>>` and is built for in-memory filter UIs, ActionSelect\n * takes the current `value` as a plain string and fires `action` with\n * `data-action-value` set to the chosen option — so editing a\n * server-backed field commits through the same event delegation as\n * <ActionInput> and <ActionForm>, with no synthetic signal or bridging\n * `effect` required.\n *\n * Composes <Dropdown> for the menu. The trigger is a plain <span> (not a\n * nested <button>) so the Dropdown's own button is the single\n * interactive element. A disabled ActionSelect renders as static text.\n */\n\nimport { useSignal } from \"@preact/signals\";\nimport type { JSX } from \"preact\";\nimport { Dropdown } from \"./Dropdown.tsx\";\nimport { dispatchAction } from \"./internal/dispatch-action.ts\";\nimport { collectPassthrough, type PassthroughAttrs } from \"./internal/passthrough.ts\";\nimport classes from \"./Select.module.css\";\nimport type { SelectOption } from \"./Select.tsx\";\n\nexport type ActionSelectProps = PassthroughAttrs & {\n /** Current value — matched against `options` to render the trigger label. */\n value: string;\n /** Selectable options. */\n options: SelectOption<string>[];\n /** Action name to dispatch on selection. Receives data-action-value=<option value>. */\n action: string;\n /** Extra data-action-* attributes to include on commit (e.g. entity id). */\n actionData?: Record<string, string>;\n /** Visible field label rendered above the trigger. */\n label?: string;\n /** Trigger text shown when `value` matches no option. Default: \"Select…\". */\n placeholder?: string;\n disabled?: boolean;\n className?: string;\n id?: string;\n};\n\nfunction labelFor(options: SelectOption<string>[], value: string): string | undefined {\n for (const opt of options) {\n if (opt.value === value) return opt.label;\n }\n return undefined;\n}\n\nexport function ActionSelect(props: ActionSelectProps): JSX.Element {\n const {\n value,\n options,\n action,\n actionData,\n label,\n placeholder = \"Select…\",\n disabled = false,\n className,\n id,\n } = props;\n\n const isOpen = useSignal(false);\n\n const current = labelFor(options, value);\n const isEmpty = current === undefined;\n const displayText = current ?? placeholder;\n\n const commit = (next: string): void => {\n isOpen.value = false;\n if (next === value) return;\n dispatchAction(action, { ...(actionData ?? {}), value: next });\n };\n\n const triggerClass = isEmpty\n ? `${classes[\"trigger\"]} ${classes[\"placeholder\"]}`\n : classes[\"trigger\"];\n\n const parts = [classes[\"select\"] ?? \"\"];\n if (className) parts.push(className);\n\n return (\n <div\n {...collectPassthrough(props)}\n id={id}\n class={parts.filter(Boolean).join(\" \")}\n data-polly-ui\n data-polly-action-select\n data-state={isEmpty ? \"empty\" : \"filled\"}\n >\n {label !== undefined && <span class={classes[\"label\"]}>{label}</span>}\n {disabled ? (\n <span class={triggerClass} aria-disabled=\"true\">\n {displayText}\n </span>\n ) : (\n <Dropdown isOpen={isOpen} trigger={<span class={triggerClass}>{displayText}</span>}>\n {options.map((opt) => {\n const isSelected = opt.value === value;\n const optClass = isSelected\n ? `${classes[\"option\"]} ${classes[\"optionSelected\"]}`\n : classes[\"option\"];\n return (\n <button\n key={opt.value}\n type=\"button\"\n role=\"option\"\n class={optClass}\n aria-selected={isSelected ? \"true\" : \"false\"}\n onClick={() => commit(opt.value)}\n >\n <span>{opt.label}</span>\n </button>\n );\n })}\n </Dropdown>\n )}\n </div>\n );\n}\n",
10
+ "/**\n * Dropdown — trigger button + popover menu using the native Popover API.\n *\n * The menu element gets `popover=\"auto\"` and a unique `data-overlay-id`.\n * `closeTopOverlay()` from @fairfox/polly/actions finds the topmost\n * `[data-overlay-id]` element and dispatches `overlay:close` — the\n * Dropdown listens for that event and mirrors it onto the `isOpen`\n * signal. In single-select mode, clicking the menu closes it; in\n * multi-select mode, the menu stays open so the consumer can pick\n * several items.\n */\n\nimport { type Signal, useSignalEffect } from \"@preact/signals\";\nimport type { ComponentChildren, JSX } from \"preact\";\nimport { useEffect, useRef } from \"preact/hooks\";\nimport classes from \"./Dropdown.module.css\";\nimport { Layout } from \"./Layout.tsx\";\n\nexport type DropdownProps = {\n isOpen: Signal<boolean>;\n trigger: ComponentChildren;\n children: ComponentChildren;\n align?: \"left\" | \"right\";\n multiSelect?: boolean;\n className?: string;\n id?: string;\n};\n\nlet dropdownCounter = 0;\n\nexport function Dropdown(props: DropdownProps): JSX.Element {\n const { isOpen, trigger, children, align = \"left\", multiSelect = false, className, id } = props;\n\n const menuRef = useRef<HTMLDivElement>(null);\n const triggerRef = useRef<HTMLButtonElement>(null);\n const idRef = useRef(`polly-dropdown-${++dropdownCounter}`);\n const popoverId = idRef.current;\n\n useEffect(() => {\n triggerRef.current?.setAttribute(\"popovertarget\", popoverId);\n }, [popoverId]);\n\n useEffect(() => {\n const menu = menuRef.current;\n if (!menu) return;\n const onOverlayClose = (e: Event): void => {\n if (e instanceof CustomEvent && e.detail?.id === popoverId) {\n isOpen.value = false;\n }\n };\n menu.addEventListener(\"overlay:close\", onOverlayClose);\n return () => {\n menu.removeEventListener(\"overlay:close\", onOverlayClose);\n };\n }, [popoverId, isOpen]);\n\n useSignalEffect(() => {\n const menu = menuRef.current;\n if (!menu) return;\n if (isOpen.value && !menu.matches(\":popover-open\")) {\n menu.showPopover();\n } else if (!isOpen.value && menu.matches(\":popover-open\")) {\n menu.hidePopover();\n }\n });\n\n const handleToggle = (e: Event): void => {\n if (\"newState\" in e) {\n isOpen.value = (e as unknown as { newState: string }).newState === \"open\";\n }\n };\n\n const handleMenuClick = (): void => {\n if (!multiSelect) {\n isOpen.value = false;\n }\n };\n\n const handleKeyDown = (e: KeyboardEvent): void => {\n if (e.key === \"Escape\") {\n isOpen.value = false;\n }\n };\n\n const parts = [classes[\"dropdown\"] ?? \"\"];\n if (className) parts.push(className);\n\n const menuParts = [classes[\"menu\"] ?? \"\"];\n if (align === \"right\") menuParts.push(classes[\"alignRight\"] ?? \"\");\n\n return (\n <div id={id} class={parts.filter(Boolean).join(\" \")} data-polly-ui data-polly-dropdown>\n <button ref={triggerRef} type=\"button\" class={classes[\"trigger\"]}>\n {trigger}\n </button>\n <div\n ref={menuRef}\n id={popoverId}\n role=\"listbox\"\n class={menuParts.filter(Boolean).join(\" \")}\n popover=\"auto\"\n data-overlay-id={popoverId}\n onToggle={handleToggle}\n onClick={handleMenuClick}\n onKeyDown={handleKeyDown}\n >\n <Layout rows=\"auto\" gap=\"0\">\n {children}\n </Layout>\n </div>\n </div>\n );\n}\n",
8
11
  "/**\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
- "/**\n * Buttoninteractive 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 * Surfacethe 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 unknown 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 unknown 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",
12
+ "/**\n * Badgesmall 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",
13
+ "/**\n * Buttoninteractive 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 download?: never;\n type?: \"button\" | \"submit\" | \"reset\";\n};\n\ntype ButtonAsLink = BaseButtonProps & {\n href: string;\n target?: string;\n rel?: string;\n /** Forwarded to the rendered <a> so a Button-as-link can offer a file\n * download. An empty string uses the resource's own filename. */\n download?: 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 download={\"download\" in props ? props.download : 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",
14
+ "/**\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\" | \"absolute\" | \"sticky\" | \"fixed\";\ntype BorderStyle = \"solid\" | \"dashed\";\ntype Overflow = \"visible\" | \"hidden\" | \"auto\" | \"scroll\";\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 /** Border line style. Default: `'solid'`. */\n borderStyle?: BorderStyle;\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 /** Maximum block size — a Surface that shrinks to content but is capped. */\n maxHeight?: string;\n maxInlineSize?: string;\n\n /** Overflow behaviour. `'auto'` makes a height-capped Surface scroll. */\n overflow?: Overflow;\n\n position?: Position;\n /** Any CSS inset value (`'0'`, `'auto auto 1rem 1rem'`, `'1rem'`, …). */\n inset?: string;\n /** CSS transform — e.g. `'translateX(-50%)'` to centre a fixed banner\n * paired with `inset: '… auto … 50%'`. The sanctioned transform escape. */\n transform?: 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 // polly#126: no variant sets these, so they resolve straight from props.\n const { maxHeight, overflow, borderStyle, transform } = props;\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 (borderStyle) style[\"--s-border-style\"] = borderStyle;\n if (width) style[\"--s-w\"] = width;\n if (height) style[\"--s-h\"] = height;\n if (minHeight) style[\"--s-mh\"] = minHeight;\n if (maxHeight) style[\"--s-maxh\"] = maxHeight;\n if (maxInlineSize) style[\"--s-mis\"] = maxInlineSize;\n if (overflow) style[\"--s-overflow\"] = overflow;\n if (position) style[\"--s-position\"] = position;\n if (inset) style[\"--s-inset\"] = inset;\n if (transform) style[\"--s-transform\"] = transform;\n if (zIndex !== undefined) style[\"--s-z\"] = String(zIndex);\n\n if (props.style) {\n Object.assign(style, props.style as unknown 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 unknown 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
15
  "/**\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",
12
16
  "/**\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",
17
+ "/**\n * Cluster — wrapping row of variable-width items.\n *\n * The flex-wrap counterpart to <Layout>. Where Layout owns CSS grid\n * tracks, Cluster owns a row of items that differ in width and must\n * reflow as space runs out — filter chips, tag and badge lists, groups\n * of small buttons. Items keep even spacing on both axes via `gap`; the\n * row wraps automatically at narrow widths. Like Layout, props map to\n * CSS custom properties so consumers can override any of them in a\n * media query without touching specificity.\n *\n * This is the second (and final) layout primitive: a consumer never\n * writes `display: flex` or `display: grid` themselves — grid goes\n * through <Layout>, a wrapping cluster goes through <Cluster>.\n */\n\nimport { type ComponentChildren, createElement, type JSX } from \"preact\";\nimport classes from \"./Cluster.module.css\";\nimport { collectPassthrough, type PassthroughAttrs } from \"./internal/passthrough.ts\";\n\nexport type ClusterProps = PassthroughAttrs & {\n children: ComponentChildren;\n\n /** Polymorphic element (div, nav, ul, …). Defaults to 'div'. */\n as?: keyof JSX.IntrinsicElements;\n\n /** Space between items, both axes. Typically a `--polly-space-*` token. */\n gap?: string;\n padding?: string;\n\n /** Main-axis distribution — maps to justify-content. Default: start. */\n justify?: string;\n /** Cross-axis alignment within a wrapped row — maps to align-items. Default: center. */\n align?: string;\n\n /** Render as inline-flex so the cluster flows inline with surrounding text. */\n inline?: boolean;\n\n className?: string;\n id?: string;\n role?: JSX.AriaRole;\n \"aria-label\"?: string;\n};\n\nexport function Cluster(props: ClusterProps): JSX.Element {\n const { children, as = \"div\", gap, padding, justify, align, inline, className, id, role } = props;\n\n const style: Record<string, string> = {};\n if (gap) style[\"--c-gap\"] = gap;\n if (padding) style[\"--c-p\"] = padding;\n if (justify) style[\"--c-jc\"] = justify;\n if (align) style[\"--c-ai\"] = align;\n\n const parts = [classes[\"cluster\"]];\n if (inline) parts.push(classes[\"inline\"]);\n if (className) parts.push(className);\n\n return createElement(\n as,\n {\n // Consumer data-*/aria-* first; the primitive's own attributes win.\n ...collectPassthrough(props),\n id,\n class: parts.filter(Boolean).join(\" \"),\n style,\n role,\n \"aria-label\": props[\"aria-label\"],\n \"data-polly-ui\": true,\n \"data-polly-cluster\": true,\n },\n children\n );\n}\n",
18
+ "/**\n * Code — inline monospace code span.\n *\n * Renders a `<code>` with the `--polly-font-mono` stack, a faint sunken\n * tint, and snug padding so a consumer never hand-rolls a `.mono` class\n * for inline code, identifiers, or keyboard hints. For multi-line code\n * blocks, pass `block`, which switches to a pre-wrapped <pre><code>.\n */\n\nimport type { ComponentChildren, JSX } from \"preact\";\nimport classes from \"./Code.module.css\";\nimport { collectPassthrough, type PassthroughAttrs } from \"./internal/passthrough.ts\";\n\nexport type CodeProps = PassthroughAttrs & {\n children: ComponentChildren;\n /** Render as a block (<pre><code>) instead of an inline span. */\n block?: boolean;\n className?: string;\n id?: string;\n};\n\nexport function Code(props: CodeProps): JSX.Element {\n const { children, block, className, id } = props;\n\n // Consumer data-*/aria-* spread first; the explicit attributes after\n // win on any collision.\n const passthrough = collectPassthrough(props);\n\n if (block) {\n const parts = [classes[\"block\"]];\n if (className) parts.push(className);\n return (\n <pre\n {...passthrough}\n id={id}\n class={parts.filter(Boolean).join(\" \")}\n data-polly-ui\n data-polly-code=\"block\"\n >\n <code>{children}</code>\n </pre>\n );\n }\n\n const parts = [classes[\"code\"]];\n if (className) parts.push(className);\n return (\n <code\n {...passthrough}\n id={id}\n class={parts.filter(Boolean).join(\" \")}\n data-polly-ui\n data-polly-code=\"inline\"\n >\n {children}\n </code>\n );\n}\n",
13
19
  "/**\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",
14
20
  "/**\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",
15
21
  "/**\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",
@@ -17,17 +23,17 @@
17
23
  "/**\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",
18
24
  "/**\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",
19
25
  "/**\n * Scroll lock.\n *\n * Reference-counted. Multiple overlays can request a lock; the body\n * stays locked until every request releases. A scrollbar-gutter token\n * is written at acquire time so content behind the overlay doesn't\n * reflow when the bar disappears.\n */\n\nlet count = 0;\n\nexport function acquireScrollLock(): () => void {\n if (count === 0) {\n const html = document.documentElement;\n const gutter = window.innerWidth - html.clientWidth;\n html.style.setProperty(\"--polly-scrollbar-gutter\", `${gutter}px`);\n html.setAttribute(\"data-polly-scroll-locked\", \"true\");\n }\n count += 1;\n let released = false;\n return () => {\n if (released) return;\n released = true;\n count -= 1;\n if (count <= 0) {\n count = 0;\n const html = document.documentElement;\n html.removeAttribute(\"data-polly-scroll-locked\");\n html.style.removeProperty(\"--polly-scrollbar-gutter\");\n }\n };\n}\n",
20
- "/**\n * Dropdown — trigger button + popover menu using the native Popover API.\n *\n * The menu element gets `popover=\"auto\"` and a unique `data-overlay-id`.\n * `closeTopOverlay()` from @fairfox/polly/actions finds the topmost\n * `[data-overlay-id]` element and dispatches `overlay:close` — the\n * Dropdown listens for that event and mirrors it onto the `isOpen`\n * signal. In single-select mode, clicking the menu closes it; in\n * multi-select mode, the menu stays open so the consumer can pick\n * several items.\n */\n\nimport { type Signal, useSignalEffect } from \"@preact/signals\";\nimport type { ComponentChildren, JSX } from \"preact\";\nimport { useEffect, useRef } from \"preact/hooks\";\nimport classes from \"./Dropdown.module.css\";\nimport { Layout } from \"./Layout.tsx\";\n\nexport type DropdownProps = {\n isOpen: Signal<boolean>;\n trigger: ComponentChildren;\n children: ComponentChildren;\n align?: \"left\" | \"right\";\n multiSelect?: boolean;\n className?: string;\n id?: string;\n};\n\nlet dropdownCounter = 0;\n\nexport function Dropdown(props: DropdownProps): JSX.Element {\n const { isOpen, trigger, children, align = \"left\", multiSelect = false, className, id } = props;\n\n const menuRef = useRef<HTMLDivElement>(null);\n const triggerRef = useRef<HTMLButtonElement>(null);\n const idRef = useRef(`polly-dropdown-${++dropdownCounter}`);\n const popoverId = idRef.current;\n\n useEffect(() => {\n triggerRef.current?.setAttribute(\"popovertarget\", popoverId);\n }, [popoverId]);\n\n useEffect(() => {\n const menu = menuRef.current;\n if (!menu) return;\n const onOverlayClose = (e: Event): void => {\n if (e instanceof CustomEvent && e.detail?.id === popoverId) {\n isOpen.value = false;\n }\n };\n menu.addEventListener(\"overlay:close\", onOverlayClose);\n return () => {\n menu.removeEventListener(\"overlay:close\", onOverlayClose);\n };\n }, [popoverId, isOpen]);\n\n useSignalEffect(() => {\n const menu = menuRef.current;\n if (!menu) return;\n if (isOpen.value && !menu.matches(\":popover-open\")) {\n menu.showPopover();\n } else if (!isOpen.value && menu.matches(\":popover-open\")) {\n menu.hidePopover();\n }\n });\n\n const handleToggle = (e: Event): void => {\n if (\"newState\" in e) {\n isOpen.value = (e as unknown as { newState: string }).newState === \"open\";\n }\n };\n\n const handleMenuClick = (): void => {\n if (!multiSelect) {\n isOpen.value = false;\n }\n };\n\n const handleKeyDown = (e: KeyboardEvent): void => {\n if (e.key === \"Escape\") {\n isOpen.value = false;\n }\n };\n\n const parts = [classes[\"dropdown\"] ?? \"\"];\n if (className) parts.push(className);\n\n const menuParts = [classes[\"menu\"] ?? \"\"];\n if (align === \"right\") menuParts.push(classes[\"alignRight\"] ?? \"\");\n\n return (\n <div id={id} class={parts.filter(Boolean).join(\" \")} data-polly-ui data-polly-dropdown>\n <button ref={triggerRef} type=\"button\" class={classes[\"trigger\"]}>\n {trigger}\n </button>\n <div\n ref={menuRef}\n id={popoverId}\n role=\"listbox\"\n class={menuParts.filter(Boolean).join(\" \")}\n popover=\"auto\"\n data-overlay-id={popoverId}\n onToggle={handleToggle}\n onClick={handleMenuClick}\n onKeyDown={handleKeyDown}\n >\n <Layout rows=\"auto\" gap=\"0\">\n {children}\n </Layout>\n </div>\n </div>\n );\n}\n",
21
26
  "/**\n * Select — dropdown of options with single- or multi-select semantics.\n *\n * Composes Dropdown for the menu and a native checkbox in each option\n * row for multi-select. The `selected` state is a Signal<Set<T>>;\n * single-select replaces the set, multi-select toggles membership.\n * Multi-select mode also shows Select All / Clear action buttons at\n * the top of the menu.\n */\n\nimport { type Signal, useComputed, useSignal } from \"@preact/signals\";\nimport type { JSX } from \"preact\";\nimport { Dropdown } from \"./Dropdown.tsx\";\nimport { Layout } from \"./Layout.tsx\";\nimport classes from \"./Select.module.css\";\n\nexport type SelectOption<T = string> = { value: T; label: string };\n\nexport type SelectProps<T = string> = {\n options: SelectOption<T>[];\n selected: Signal<Set<T>>;\n label?: string;\n placeholder?: string;\n multiSelect?: boolean;\n disabled?: boolean;\n className?: string;\n id?: string;\n};\n\nfunction formatSelected<T>(options: SelectOption<T>[], selected: Set<T>): string {\n if (selected.size === 0) return \"\";\n const labels: string[] = [];\n for (const opt of options) {\n if (selected.has(opt.value)) labels.push(opt.label);\n }\n return labels.join(\", \");\n}\n\nexport function Select<T = string>(props: SelectProps<T>): JSX.Element {\n const {\n options,\n selected,\n label,\n placeholder = \"Select\\u2026\",\n multiSelect = false,\n disabled = false,\n className,\n id,\n } = props;\n\n const isOpen = useSignal(false);\n\n const displayText = useComputed(() => {\n const text = formatSelected(options, selected.value);\n return text.length > 0 ? text : placeholder;\n });\n\n const isEmpty = useComputed(() => selected.value.size === 0);\n\n const handleOptionClick = (value: T): void => {\n if (multiSelect) {\n const next = new Set(selected.value);\n if (next.has(value)) next.delete(value);\n else next.add(value);\n selected.value = next;\n } else {\n selected.value = new Set([value]);\n isOpen.value = false;\n }\n };\n\n const handleSelectAll = (): void => {\n selected.value = new Set(options.map((o) => o.value));\n };\n\n const handleClear = (): void => {\n selected.value = new Set();\n };\n\n const triggerClass = isEmpty.value\n ? `${classes[\"trigger\"]} ${classes[\"placeholder\"]}`\n : classes[\"trigger\"];\n const triggerButton = (\n <button type=\"button\" class={triggerClass} disabled={disabled}>\n {displayText.value}\n </button>\n );\n\n const parts = [classes[\"select\"] ?? \"\"];\n if (className) parts.push(className);\n\n return (\n <div id={id} class={parts.filter(Boolean).join(\" \")} data-polly-ui data-polly-select>\n {label !== undefined && <span class={classes[\"label\"]}>{label}</span>}\n <Dropdown isOpen={isOpen} trigger={triggerButton} multiSelect={multiSelect}>\n {multiSelect && (\n <div class={classes[\"actions\"]}>\n <Layout columns=\"1fr 1fr\" gap=\"var(--polly-space-xs)\">\n <button type=\"button\" class={classes[\"actionBtn\"]} onClick={handleSelectAll}>\n Select All\n </button>\n <button type=\"button\" class={classes[\"actionBtn\"]} onClick={handleClear}>\n Clear\n </button>\n </Layout>\n </div>\n )}\n {options.map((opt) => {\n const isSelected = selected.value.has(opt.value);\n const optClass = isSelected\n ? `${classes[\"option\"]} ${classes[\"optionSelected\"]}`\n : classes[\"option\"];\n return (\n <button\n key={String(opt.value)}\n type=\"button\"\n class={optClass}\n onClick={() => handleOptionClick(opt.value)}\n >\n {multiSelect && (\n <input\n type=\"checkbox\"\n class={classes[\"optionCheck\"]}\n checked={isSelected}\n tabIndex={-1}\n readOnly={true}\n />\n )}\n <span>{opt.label}</span>\n </button>\n );\n })}\n </Dropdown>\n </div>\n );\n}\n",
22
27
  "/**\n * Skeleton — shimmering placeholder for loading states.\n *\n * Three variants: text (full-width, 1em tall), rect (full-width, 100px\n * tall), circle (40x40). A CSS gradient animates left-to-right over\n * 1.5s. `prefers-reduced-motion` zeroes the animation via the token\n * system. Consumers size via width/height props (px numbers or CSS\n * strings); default sizing comes from the variant.\n */\n\nimport type { JSX } from \"preact\";\nimport classes from \"./Skeleton.module.css\";\n\nexport type SkeletonVariant = \"text\" | \"rect\" | \"circle\";\n\nexport type SkeletonProps = {\n variant?: SkeletonVariant;\n width?: string | number;\n height?: string | number;\n className?: string;\n};\n\nfunction resolveSize(value: string | number | undefined): string | undefined {\n if (value === undefined) return undefined;\n if (typeof value === \"number\") return `${value}px`;\n return value;\n}\n\nfunction variantClass(variant: SkeletonVariant): string | undefined {\n if (variant === \"circle\") return classes[\"circle\"];\n if (variant === \"rect\") return classes[\"rect\"];\n return classes[\"text\"];\n}\n\nexport function Skeleton(props: SkeletonProps): JSX.Element {\n const { variant = \"text\", width, height, className } = props;\n\n const style: Record<string, string> = {};\n const w = resolveSize(width);\n const h = resolveSize(height);\n if (w !== undefined) style[\"width\"] = w;\n if (h !== undefined) style[\"height\"] = h;\n\n const parts: string[] = [];\n const base = classes[\"skeleton\"];\n if (base) parts.push(base);\n const vClass = variantClass(variant);\n if (vClass) parts.push(vClass);\n if (className) parts.push(className);\n\n return (\n <span\n class={parts.join(\" \")}\n style={style}\n data-polly-ui\n data-polly-skeleton={variant}\n aria-hidden=\"true\"\n />\n );\n}\n",
23
28
  "/**\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",
29
+ "/**\n * Text — typographic primitive for secondary, sized, and status copy.\n *\n * Renders subtitles, captions, field labels, empty-state copy, and\n * error/warning messages without the consumer reaching for a `style`\n * attribute or a hand-rolled class. `tone` maps to the semantic\n * `--polly-text-*` and `--polly-status-*` token families; `size`,\n * `weight`, `italic`, and `leading` cover the remaining typographic\n * axes. `as` keeps the element polymorphic so the same primitive backs a\n * <span>, <p>, <label>, or <figcaption>. A no-prop <Text> is an ordinary\n * <span> at body size and default colour.\n *\n * polly#125: arbitrary `data-*` / `aria-*` attributes are forwarded to\n * the rendered element, so a Text that also needs a test hook or an\n * a11y attribute stays a single element.\n */\n\nimport { type ComponentChildren, createElement, type JSX } from \"preact\";\nimport { collectPassthrough, type PassthroughAttrs } from \"./internal/passthrough.ts\";\nimport classes from \"./Text.module.css\";\n\nexport type TextTone = \"default\" | \"muted\" | \"danger\" | \"warning\" | \"success\";\nexport type TextSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\nexport type TextWeight = \"normal\" | \"medium\" | \"bold\";\nexport type TextLeading = \"tight\" | \"base\" | \"loose\";\n\nexport type TextProps = PassthroughAttrs & {\n children: ComponentChildren;\n\n /** Polymorphic element (span, p, label, figcaption, …). Defaults to 'span'. */\n as?: keyof JSX.IntrinsicElements;\n\n /** Colour role. 'muted' de-emphasises; 'danger'/'warning'/'success'\n * render status copy from the `--polly-status-*` tokens. Default: 'default'. */\n tone?: TextTone;\n\n /** Token-backed font size. Default: inherit from context. */\n size?: TextSize;\n\n /** Token-backed font weight. Default: inherit from context. */\n weight?: TextWeight;\n\n /** Italic emphasis — for hints and asides — without an inline style. */\n italic?: boolean;\n\n /** Token-backed line height. 'loose' suits multi-line body copy. */\n leading?: TextLeading;\n\n className?: string;\n id?: string;\n /** Forwarded so <Text as=\"label\"> can point at a control. */\n htmlFor?: string;\n};\n\nexport function Text(props: TextProps): JSX.Element {\n const {\n children,\n as = \"span\",\n tone = \"default\",\n size,\n weight,\n italic,\n leading,\n className,\n id,\n } = props;\n\n const parts = [classes[\"text\"]];\n if (tone !== \"default\") parts.push(classes[tone]);\n if (size) parts.push(classes[size]);\n if (weight) parts.push(classes[weight]);\n if (italic) parts.push(classes[\"italic\"]);\n if (leading) parts.push(classes[leading]);\n if (className) parts.push(className);\n\n return createElement(\n as,\n {\n // Consumer data-*/aria-* first; the primitive's own attributes\n // below win on any collision.\n ...collectPassthrough(props),\n id,\n class: parts.filter(Boolean).join(\" \"),\n for: props.htmlFor,\n \"data-polly-ui\": true,\n \"data-polly-text\": tone,\n },\n children\n );\n}\n",
24
30
  "/**\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",
25
31
  "/**\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 unknown 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 unknown as Signal<string>).value : undefined;\n const defaultValue = controlled\n ? undefined\n : ((props.value as unknown 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 unknown 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 unknown as Signal<string>).value = e.currentTarget.value;\n }\n }}\n />\n );\n}\n",
26
32
  "/**\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",
27
33
  "/**\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",
28
34
  "/**\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"
29
35
  ],
30
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwBO,SAAS,UAA2D,CACzE,OACa;AAAA,EACb,QAAQ,MAAM,UAAU,WAAW,OAAO;AAAA,EAC1C,MAAM,WAAW,YAAY,GAAG,0BAAQ,WAAW,cAAc,0BAAQ;AAAA,EACzE,uBACE,OAYE,QAZF;AAAA,IACE;AAAA,IACA,OAAO;AAAA,IACP,iBAAa;AAAA,IACb,0BAAwB,KAAK;AAAA,IAC7B,eAAa,GAAG,KAAK;AAAA,IACrB,aAAW,KAAK,aAAa;AAAA,IAC7B,cAAY,MAAM;AAAA,IAClB,mBAAiB,MAAM;AAAA,IACvB,YAAU;AAAA,IATZ;AAAA,sCAYE;AAAA;;ACrBN;;;;;;;;;;;;AA0BO,SAAS,WAAW,CAAC,OAAsC;AAAA,EAChE,MAAM,UAAU,MAAM,WAAW;AAAA,EACjC,MAAM,SAAS,MAAM,UAAU;AAAA,EAC/B,OAAO,MAAM,WAAW,SAA0B,MAAM;AAAA,EACxD,OAAO,OAAO,YAAY,SAAS,MAAM,KAAK;AAAA,EAC9C,MAAM,WAAW,OAAsD,IAAI;AAAA,EAE3E,UAAU,MAAM;AAAA,IACd,IAAI,SAAS;AAAA,MAAQ,SAAS,MAAM,KAAK;AAAA,KACxC,CAAC,MAAM,OAAO,IAAI,CAAC;AAAA,EAEtB,UAAU,MAAM;AAAA,IACd,IAAI,SAAS,UAAU,SAAS,SAAS;AAAA,MACvC,SAAS,QAAQ,MAAM;AAAA,MACvB,SAAS,QAAQ,SAAS;AAAA,IAC5B;AAAA,KACC,CAAC,IAAI,CAAC;AAAA,EAET,MAAM,YAAY,YAAY,MAAM;AAAA,IAClC,IAAI,MAAM;AAAA,MAAU;AAAA,IACpB,SAAS,MAAM,KAAK;AAAA,IACpB,QAAQ,MAAM;AAAA,KACb,CAAC,MAAM,UAAU,MAAM,KAAK,CAAC;AAAA,EAEhC,MAAM,SAAS,YACb,CAAC,SAAiB;AAAA,IAChB,IAAI,SAAS,MAAM,OAAO;AAAA,MACxB,QAAQ,MAAM;AAAA,MACd;AAAA,IACF;AAAA,IACA,MAAM,YAAoC;AAAA,SACpC,MAAM,cAAc,CAAC;AAAA,MACzB,OAAO;AAAA,IACT;AAAA,IACA,MAAM,SAAS,SAAS,cAAc,QAAQ;AAAA,IAC9C,OAAO,aAAa,eAAe,MAAM,MAAM;AAAA,IAC/C,YAAY,KAAK,UAAU,OAAO,QAAQ,SAAS,GAAG;AAAA,MACpD,MAAM,UAAU,IAAI,QAAQ,UAAU,CAAC,MAAM,IAAI,EAAE,YAAY,GAAG;AAAA,MAClE,OAAO,aAAa,eAAe,WAAW,KAAK;AAAA,IACrD;AAAA,IACA,OAAO,MAAM,WAAW;AAAA,IACxB,OAAO,MAAM,UAAU;AAAA,IACvB,OAAO,MAAM,gBAAgB;AAAA,IAC7B,OAAO,WAAW;AAAA,IAClB,SAAS,KAAK,YAAY,MAAM;AAAA,IAChC,IAAI;AAAA,MACF,OAAO,MAAM;AAAA,cACb;AAAA,MACA,OAAO,OAAO;AAAA;AAAA,IAEhB,QAAQ,MAAM;AAAA,KAEhB,CAAC,MAAM,QAAQ,MAAM,YAAY,MAAM,KAAK,CAC9C;AAAA,EAEA,MAAM,SAAS,YAAY,MAAM;AAAA,IAC/B,SAAS,MAAM,KAAK;AAAA,IACpB,QAAQ,MAAM;AAAA,KACb,CAAC,MAAM,KAAK,CAAC;AAAA,EAGhB,MAAM,YAAY,CAAC,UAA6E;AAAA,IAC9F,IAAI,MAAM,QAAQ,UAAU;AAAA,MAC1B,MAAM,eAAe;AAAA,MACrB,OAAO;AAAA,MACP;AAAA,IACF;AAAA,IACA,IAAI,MAAM,QAAQ,SAAS;AAAA,MACzB,MAAM,MAAM,MAAM,WAAW,MAAM;AAAA,MACnC,IAAI,WAAW,WAAW,YAAY,UAAU;AAAA,QAC9C,MAAM,eAAe;AAAA,QACrB,OAAO,KAAK;AAAA,MACd,EAAO,SAAK,WAAW,WAAW,YAAY,WAAW,OAAQ,WAAW,aAAa;AAAA,QACvF,IAAI,KAAK;AAAA,UACP,MAAM,eAAe;AAAA,UACrB,OAAO,KAAK;AAAA,QACd;AAAA,MACF;AAAA,IACF;AAAA;AAAA,EAGF,MAAM,YAAY,MAAM,YAAY,GAAG,2BAAQ,WAAW,MAAM,cAAc,2BAAQ;AAAA,EAEtF,IAAI,SAAS,QAAQ;AAAA,IACnB,MAAM,WAAW,MAAM,aAAa,MAAM,WAAW,MAAM,KAAK,IAAI,MAAM;AAAA,IAC1E,MAAM,UAAU,MAAM,MAAM,WAAW;AAAA,IACvC,uBAEE,QAwBE,OAxBF;AAAA,MACE,OAAO,GAAG,aAAa,2BAAQ;AAAA,MAC/B,iBAAa;AAAA,MACb,2BAAuB;AAAA,MACvB,0BAAsB;AAAA,MACtB,cAAY,UAAU,UAAU;AAAA,MAChC,gBAAc;AAAA,MACd,UAAU,MAAM,WAAW,KAAK;AAAA,MAChC,MAAK;AAAA,MACL,cAAY,MAAM,aAAa;AAAA,MAC/B,iBAAe,MAAM,WAAW,SAAS;AAAA,MACzC,SAAS;AAAA,MACT,WAAW,CAAC,MAAM;AAAA,QAChB,IAAI,EAAE,QAAQ,WAAW,EAAE,QAAQ,KAAK;AAAA,UACtC,EAAE,eAAe;AAAA,UACjB,UAAU;AAAA,QACZ;AAAA;AAAA,MAhBJ,UAmBG,WAAW,MAAM,8BAChB,QAA0D,QAA1D;AAAA,QAAM,OAAO,2BAAQ;AAAA,QAArB,UAAsC,MAAM;AAAA,SAA5C,iCAA0D,IAE1D;AAAA,OAtBJ,iCAwBE;AAAA,EAEN;AAAA,EAEA,MAAM,SAAS;AAAA,IACb,OAAO,GAAG,2BAAQ,WAAW,2BAAQ;AAAA,IACrC,iBAAiB;AAAA,IACjB,2BAA2B;AAAA,IAC3B,cAAc;AAAA,IACd,gBAAgB;AAAA,IAChB,aAAa,MAAM;AAAA,IACnB,OAAO;AAAA,IACP,SAAS,CAAC,MACR,SAAS,EAAE,cAAc,KAAK;AAAA,IAChC,QAAQ,MAAM;AAAA,MACZ,IAAI,WAAW;AAAA,QAAQ,OAAO,KAAK;AAAA,MAC9B;AAAA,eAAO;AAAA;AAAA,IAEd;AAAA,IACA,cAAc,MAAM,aAAa;AAAA,IACjC,UAAU,MAAM;AAAA,EAClB;AAAA,EAEA,IAAI,YAAY,SAAS;AAAA,IACvB,uBACE,QAAC,YAAD;AAAA,MACE,KAAK,CAAC,OAAO;AAAA,QACX,SAAS,UAAU;AAAA;AAAA,SAEhB;AAAA,OAJP,iCAKA;AAAA,EAEJ;AAAA,EACA,uBACE,QAAC,SAAD;AAAA,IACE,KAAK,CAAC,OAAO;AAAA,MACX,SAAS,UAAU;AAAA;AAAA,IAErB,MAAK;AAAA,OACA;AAAA,KALP,iCAMA;AAAA;;;;;;;;;;;;AClLJ,SAAS,YAAY,CAAC,SAA2C;AAAA,EAC/D,IAAI,YAAY;AAAA,IAAQ,OAAO,qBAAQ;AAAA,EACvC,IAAI,YAAY;AAAA,IAAW,OAAO,qBAAQ;AAAA,EAC1C,IAAI,YAAY;AAAA,IAAW,OAAO,qBAAQ;AAAA,EAC1C,IAAI,YAAY;AAAA,IAAU,OAAO,qBAAQ;AAAA,EACzC;AAAA;AAGK,SAAS,KAAK,CAAC,OAAgC;AAAA,EACpD,QAAQ,UAAU,UAAU,WAAW,WAAW,OAAO;AAAA,EACzD,MAAM,QAAQ,CAAC,qBAAQ,QAAQ;AAAA,EAC/B,MAAM,IAAI,aAAa,OAAO;AAAA,EAC9B,IAAI;AAAA,IAAG,MAAM,KAAK,CAAC;AAAA,EACnB,IAAI;AAAA,IAAW,MAAM,KAAK,SAAS;AAAA,EACnC,uBACE,QAEE,QAFF;AAAA,IAAM;AAAA,IAAQ,OAAO,MAAM,KAAK,GAAG;AAAA,IAAG,iBAAa;AAAA,IAAC,oBAAkB;AAAA,IAAtE;AAAA,sCAEE;AAAA;;;;;;;;;;;;;;;;;;AC5BN;;;;;;;;;;AAgEO,SAAS,MAAM,CAAC,OAAiC;AAAA,EACtD;AAAA,IACE;AAAA,IACA,KAAK;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,MACE;AAAA,EAEJ,MAAM,QAAgC,CAAC;AAAA,EAEvC,IAAI,UAAU;AAAA,IACZ,MAAM,aAAa;AAAA,EACrB,EAAO,SAAI,SAAS;AAAA,IAClB,MAAM,aAAa;AAAA,IACnB,MAAM,cAAc;AAAA,IACpB,IAAI;AAAA,MAAS,MAAM,WAAW;AAAA,IAC9B,IAAI;AAAA,MAAY,MAAM,YAAY;AAAA,IAClC,IAAI;AAAA,MAAK,MAAM,aAAa;AAAA,EAC9B,EAAO;AAAA,IACL,IAAI;AAAA,MAAS,MAAM,WAAW;AAAA,IAC9B,IAAI;AAAA,MAAQ,MAAM,WAAW;AAAA,IAC7B,IAAI;AAAA,MAAW,MAAM,YAAY;AAAA,IACjC,IAAI;AAAA,MAAe,MAAM,aAAa;AAAA,IACtC,IAAI;AAAA,MAAM,MAAM,cAAc;AAAA,IAC9B,IAAI;AAAA,MAAS,MAAM,cAAc;AAAA,IACjC,IAAI;AAAA,MAAK,MAAM,aAAa;AAAA,IAC5B,IAAI;AAAA,MAAc,MAAM,YAAY;AAAA,IACpC,IAAI;AAAA,MAAY,MAAM,YAAY;AAAA,IAClC,IAAI;AAAA,MAAgB,MAAM,YAAY;AAAA,IACtC,IAAI;AAAA,MAAc,MAAM,YAAY;AAAA,IACpC,IAAI;AAAA,MAAU,MAAM,cAAc;AAAA,IAClC,IAAI;AAAA,MAAU,MAAM,eAAe;AAAA,IACnC,IAAI;AAAA,MAAa,MAAM,eAAe;AAAA;AAAA,EAExC,IAAI;AAAA,IAAa,MAAM,YAAY;AAAA,EACnC,IAAI;AAAA,IAAW,MAAM,YAAY;AAAA,EAEjC,MAAM,YAAY,CAAC,sBAAQ,SAAS;AAAA,EACpC,IAAI;AAAA,IAAQ,UAAU,KAAK,sBAAQ,SAAS;AAAA,EAC5C,IAAI;AAAA,IAAe,UAAU,KAAK,sBAAQ,gBAAgB;AAAA,EAC1D,MAAM,YAAY,UAAU,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,EACpD,MAAM,WAAW,WAAW,YAAY,YAAY,GAAG,aAAa,cAAc;AAAA,EAElF,OAAO,cACL,IACA;AAAA,IACE;AAAA,IACA,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc,MAAM;AAAA,IACpB,mBAAmB,MAAM;AAAA,IACzB,oBAAoB,MAAM;AAAA,IAC1B,qBAAqB;AAAA,EACvB,GACA,QACF;AAAA;;;;ACjGF,SAAS,SAAS,CAAC,MAAsC;AAAA,EACvD,IAAI,SAAS;AAAA,IAAW,OAAO,sBAAQ;AAAA,EACvC,IAAI,SAAS;AAAA,IAAY,OAAO,sBAAQ;AAAA,EACxC,OAAO,sBAAQ;AAAA;AAGjB,SAAS,UAAU,CAAC,OAAwC;AAAA,EAC1D,IAAI,UAAU;AAAA,IAAQ,OAAO,sBAAQ;AAAA,EACrC,IAAI,UAAU;AAAA,IAAW,OAAO,sBAAQ;AAAA,EACxC,IAAI,UAAU;AAAA,IAAW,OAAO,sBAAQ;AAAA,EACxC,IAAI,UAAU;AAAA,IAAU,OAAO,sBAAQ;AAAA,EACvC;AAAA;AAGF,SAAS,SAAS,CAAC,MAAsC;AAAA,EACvD,IAAI,SAAS;AAAA,IAAS,OAAO,sBAAQ;AAAA,EACrC,IAAI,SAAS;AAAA,IAAS,OAAO,sBAAQ;AAAA,EACrC;AAAA;AAIK,SAAS,MAAM,CAAC,OAAiC;AAAA,EACtD;AAAA,IACE;AAAA,IACA,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,MACE;AAAA,EAEJ,MAAM,QAAQ,CAAC,sBAAQ,UAAU,EAAE;AAAA,EACnC,MAAM,KAAK,UAAU,IAAI;AAAA,EACzB,IAAI;AAAA,IAAI,MAAM,KAAK,EAAE;AAAA,EACrB,MAAM,KAAK,WAAW,KAAK;AAAA,EAC3B,IAAI;AAAA,IAAI,MAAM,KAAK,EAAE;AAAA,EACrB,MAAM,KAAK,UAAU,IAAI;AAAA,EACzB,IAAI;AAAA,IAAI,MAAM,KAAK,EAAE;AAAA,EACrB,IAAI;AAAA,IAAQ,MAAM,KAAK,sBAAQ,gBAAgB,EAAE;AAAA,EACjD,IAAI;AAAA,IAAW,MAAM,KAAK,sBAAQ,mBAAmB,EAAE;AAAA,EACvD,IAAI;AAAA,IAAW,MAAM,KAAK,SAAS;AAAA,EACnC,MAAM,cAAc,MAAM,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,EAElD,MAAM,UAAU,uBACd,QAGE,QAHF;AAAA,IAAQ,QAAM;AAAA,IAAC,SAAQ;AAAA,IAAY,KAAI;AAAA,IAAQ,YAAW;AAAA,IAA1D,UAGE;AAAA,MAFC;AAAA,sBACD,QAAe,QAAf;AAAA,kBAAO;AAAA,SAAP,iCAAe;AAAA;AAAA,KAFjB,gCAGE,IAEF;AAAA,EAGF,MAAM,aAAa,MAAM;AAAA,EACzB,MAAM,YAAY,MAAM;AAAA,EAKxB,MAAM,kBAA0C,CAAC;AAAA,EACjD,WAAW,OAAO,OAAO,KAAK,KAAK,GAAG;AAAA,IACpC,IAAI,IAAI,WAAW,cAAc,GAAG;AAAA,MAClC,MAAM,QAAS,MAA6C;AAAA,MAC5D,IAAI,OAAO,UAAU,UAAU;AAAA,QAC7B,gBAAgB,OAAO;AAAA,MACzB;AAAA,IACF;AAAA,EACF;AAAA,EAEA,IAAI,UAAU,SAAS,MAAM,MAAM;AAAA,IACjC,uBACE,QAeE,KAfF;AAAA,MACE;AAAA,MACA,OAAO;AAAA,MACP;AAAA,MACA,MAAM,WAAW,YAAY,MAAM;AAAA,MACnC,QAAQ,YAAY,QAAQ,MAAM,SAAS;AAAA,MAC3C,KAAK,SAAS,QAAQ,MAAM,MAAM;AAAA,MAClC,iBAAe;AAAA,MACf,cAAY;AAAA,MACZ,iBAAa;AAAA,MACb,qBAAmB;AAAA,MACnB,eAAa;AAAA,SACT;AAAA,MAZN,UAcG;AAAA,OAdH,iCAeE;AAAA,EAEN;AAAA,EAEA,MAAM,eACJ,UAAU,SAAS,MAAM,OAAO,MAAM,OAAO;AAAA,EAE/C,uBACE,QAaE,UAbF;AAAA,IACE;AAAA,IACA,OAAO;AAAA,IACP;AAAA,IACA,MAAM;AAAA,IACN;AAAA,IACA,cAAY;AAAA,IACZ,iBAAa;AAAA,IACb,qBAAmB;AAAA,IACnB,eAAa;AAAA,OACT;AAAA,IAVN,UAYG;AAAA,KAZH,iCAaE;AAAA;;AC9JN,0BAAiC;;;;;;;;;;;;;;;AA8GjC,IAAM,kBAA2D;AAAA,EAC/D,OAAO,CAAC;AAAA,EACR,QAAQ;AAAA,IACN,YAAY;AAAA,IACZ,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,EACV;AAAA,EACA,QAAQ;AAAA,IACN,YAAY;AAAA,IACZ,QAAQ;AAAA,IACR,QAAQ;AAAA,EACV;AAAA,EACA,QAAQ;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS;AAAA,EACX;AAAA,EACA,MAAM;AAAA,IACJ,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,QAAQ;AAAA,EACV;AAAA,EACA,SAAS;AAAA,IACP,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS;AAAA,EACX;AAAA,EACA,UAAU;AAAA,IACR,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,QAAQ;AAAA,EACV;AAAA,EACA,cAAc;AAAA,IACZ,UAAU;AAAA,IACV,OAAO;AAAA,IACP,aAAa;AAAA,IACb,QAAQ;AAAA,EACV;AACF;AAEA,SAAS,OAAO,CAAC,GAAuB;AAAA,EACtC,IAAI,MAAM;AAAA,IAAU,OAAO;AAAA,EAC3B,IAAI,MAAM;AAAA,IAAU,OAAO;AAAA,EAC3B,IAAI,MAAM;AAAA,IAAe,OAAO;AAAA,EAChC,OAAO;AAAA;AAGT,SAAS,WAAW,CAAC,GAAmB;AAAA,EACtC,IAAI,MAAM;AAAA,IAAQ,OAAO;AAAA,EACzB,OAAO,sBAAsB;AAAA;AAG/B,SAAS,gBAAgB,CAAC,GAAmB;AAAA,EAC3C,IAAI,MAAM;AAAA,IAAQ,OAAO;AAAA,EACzB,IAAI,MAAM;AAAA,IAAU,OAAO;AAAA,EAC3B,OAAO;AAAA;AAGT,SAAS,gBAAgB,CAAC,GAAwB;AAAA,EAChD,IAAI,MAAM;AAAA,IAAQ,OAAO;AAAA,EACzB,OAAO,4BAA4B;AAAA;AAGrC,SAAS,WAAW,CAAC,GAAmB;AAAA,EACtC,IAAI,MAAM;AAAA,IAAQ,OAAO;AAAA,EACzB,OAAO,sBAAsB;AAAA;AAG/B,SAAS,gBAAgB,CAAC,OAAwC;AAAA,EAChE,IAAI,UAAU;AAAA,IAAO;AAAA,EACrB,IAAI,UAAU;AAAA,IAAe,OAAO,uBAAQ;AAAA,EAC5C,IAAI,UAAU;AAAA,IAAa,OAAO,uBAAQ;AAAA,EAC1C,IAAI,UAAU;AAAA,IAAgB,OAAO,uBAAQ;AAAA,EAC7C,IAAI,UAAU;AAAA,IAAc,OAAO,uBAAQ;AAAA,EAC3C,IAAI,UAAU;AAAA,IAAS,OAAO,uBAAQ;AAAA,EACtC,IAAI,UAAU;AAAA,IAAU,OAAO,uBAAQ;AAAA,EACvC;AAAA;AAIK,SAAS,OAAO,CAAC,OAAkC;AAAA,EACxD,QAAQ,UAAU,YAAY;AAAA,EAC9B,MAAM,IAAI,gBAAgB;AAAA,EAE1B,MAAM,KAAK,MAAM,MAAM;AAAA,EACvB,MAAM,UAAU,MAAM,WAAW,EAAE;AAAA,EACnC,MAAM,aAAa,MAAM,cAAc,EAAE;AAAA,EACzC,MAAM,SAAS,MAAM,UAAU,EAAE;AAAA,EACjC,MAAM,SAAS,MAAM,UAAU,EAAE;AAAA,EACjC,MAAM,cAAc,MAAM,eAAe,EAAE,eAAe;AAAA,EAC1D,MAAM,SAAS,MAAM,UAAU,EAAE;AAAA,EACjC,MAAM,SAAS,MAAM,UAAU,EAAE;AAAA,EACjC,MAAM,QAAQ,MAAM,SAAS,EAAE;AAAA,EAC/B,MAAM,SAAS,MAAM,UAAU,EAAE;AAAA,EACjC,MAAM,YAAY,MAAM,aAAa,EAAE;AAAA,EACvC,MAAM,gBAAgB,MAAM,iBAAiB,EAAE;AAAA,EAC/C,MAAM,WAAW,MAAM,YAAY,EAAE;AAAA,EACrC,MAAM,QAAQ,MAAM,SAAS,EAAE;AAAA,EAC/B,MAAM,SAAS,MAAM,UAAU,EAAE;AAAA,EAIjC,MAAM,cACJ,MAAM,eAAe,EAAE,gBAAgB,UAAU,WAAW,SAAS,YAAY;AAAA,EAEnF,MAAM,QAAgC,CAAC;AAAA,EACvC,IAAI;AAAA,IAAS,MAAM,WAAW;AAAA,EAC9B,IAAI;AAAA,IAAY,MAAM,YAAY,QAAQ,UAAU;AAAA,EACpD,IAAI;AAAA,IAAQ,MAAM,gBAAgB,YAAY,MAAM;AAAA,EACpD,IAAI;AAAA,IAAQ,MAAM,sBAAsB,iBAAiB,MAAM;AAAA,EAC/D,IAAI;AAAA,IAAa,MAAM,sBAAsB,iBAAiB,WAAW;AAAA,EACzE,IAAI;AAAA,IAAQ,MAAM,gBAAgB,YAAY,MAAM;AAAA,EACpD,IAAI;AAAA,IAAO,MAAM,WAAW;AAAA,EAC5B,IAAI;AAAA,IAAQ,MAAM,WAAW;AAAA,EAC7B,IAAI;AAAA,IAAW,MAAM,YAAY;AAAA,EACjC,IAAI;AAAA,IAAe,MAAM,aAAa;AAAA,EACtC,IAAI;AAAA,IAAU,MAAM,kBAAkB;AAAA,EACtC,IAAI;AAAA,IAAO,MAAM,eAAe;AAAA,EAChC,IAAI,WAAW;AAAA,IAAW,MAAM,WAAW,OAAO,MAAM;AAAA,EAExD,IAAI,MAAM,OAAO;AAAA,IACf,OAAO,OAAO,OAAO,MAAM,KAA0C;AAAA,EACvE;AAAA,EAEA,MAAM,QAAgC,CAAC,uBAAQ,UAAU;AAAA,EACzD,IAAI;AAAA,IAAQ,MAAM,KAAK,uBAAQ,SAAS;AAAA,EACxC,MAAM,KAAK,iBAAiB,WAAW,CAAC;AAAA,EACxC,IAAI,MAAM;AAAA,IAAW,MAAM,KAAK,MAAM,SAAS;AAAA,EAC/C,MAAM,YAAY,MAAM,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,EAEhD,MAAM,cAAyD,CAAC;AAAA,EAChE,WAAW,OAAO,OAAO,KAAK,KAAK,GAAG;AAAA,IACpC,MAAM,SAAS,IAAI,WAAW,OAAO;AAAA,IACrC,MAAM,SAAS,IAAI,WAAW,OAAO;AAAA,IACrC,IAAI,CAAC,UAAU,CAAC;AAAA,MAAQ;AAAA,IACxB,IAAI,QAAQ;AAAA,MAAsB;AAAA,IAClC,IAAI,QAAQ,gBAAgB,QAAQ,qBAAqB,QAAQ;AAAA,MAAoB;AAAA,IACrF,MAAM,QAAS,MAA6C;AAAA,IAC5D,IAAI,UAAU;AAAA,MAAW;AAAA,IACzB,IAAI,OAAO,UAAU,YAAY,OAAO,UAAU,YAAY,OAAO,UAAU,WAAW;AAAA,MACxF,YAAY,OAAO;AAAA,IACrB;AAAA,EACF;AAAA,EAEA,OAAO,eACL,IACA;AAAA,IACE,IAAI,MAAM;AAAA,IACV;AAAA,IACA;AAAA,IACA,SAAS,MAAM;AAAA,IACf,WAAW,MAAM;AAAA,IACjB,MAAM,MAAM;AAAA,IACZ,UAAU,MAAM;AAAA,IAChB,cAAc,MAAM;AAAA,IACpB,mBAAmB,MAAM;AAAA,IACzB,oBAAoB,MAAM;AAAA,IAC1B,sBAAsB;AAAA,OACnB;AAAA,EACL,GACA,MAAM,QACR;AAAA;;;;ACjRF,SAAS,IAAI,CAAC,OAA+B;AAAA,EAC3C,QAAQ,UAAU,UAAU,SAAS,SAAS,SAAS;AAAA,EACvD,uBACE,QAEE,SAFF;AAAA,IAAS;AAAA,IAAkB;AAAA,IAAgB,mBAAe;AAAA,OAAK;AAAA,IAA/D,UACG,MAAM;AAAA,KADT,iCAEE;AAAA;AAIN,SAAS,MAAM,CAAC,OAAmC;AAAA,EACjD;AAAA,IACE,UAAU;AAAA,IACV,SAAS;AAAA,IACT,cAAc;AAAA,OACX;AAAA,MACD;AAAA,EACJ,uBACE,QAQE,SARF;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA,0BAAsB;AAAA,OAClB;AAAA,IALN,UAOG,MAAM;AAAA,KAPT,iCAQE;AAAA;AAIN,SAAS,IAAI,CAAC,OAAmC;AAAA,EAC/C,QAAQ,UAAU,4BAA4B,SAAS;AAAA,EACvD,uBACE,QAEE,SAFF;AAAA,IAAS;AAAA,IAAkB,wBAAoB;AAAA,OAAK;AAAA,IAApD,UACG,MAAM;AAAA,KADT,iCAEE;AAAA;AAIN,SAAS,MAAM,CAAC,OAAmC;AAAA,EACjD;AAAA,IACE,UAAU;AAAA,IACV,SAAS;AAAA,IACT,cAAc;AAAA,OACX;AAAA,MACD;AAAA,EACJ,uBACE,QAQE,SARF;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA,0BAAsB;AAAA,OAClB;AAAA,IALN,UAOG,MAAM;AAAA,KAPT,iCAQE;AAAA;AAIC,IAAM,OAAO,EAAE,MAAM,QAAQ,MAAM,OAAO;;;;;;;;;;;ACnDjD,SAAS,QAAQ,CAAC,OAA0C;AAAA,EAC1D,OAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,WAAW,SAAS,UAAU;AAAA;AAG/E,SAAS,QAAQ,CAAC,OAAmC;AAAA,EAC1D,QAAQ,SAAS,gBAAgB,MAAM,WAAW,OAAO,OAAO,WAAW,OAAO;AAAA,EAElF,MAAM,eAAe,CAAC,MAAiD;AAAA,IACrE,IAAI,SAAS,OAAO,GAAG;AAAA,MACrB,QAAQ,QAAQ,EAAE,cAAc;AAAA,IAClC;AAAA;AAAA,EAGF,MAAM,eAAe,SAAS,OAAO,IAAI,QAAQ,QAAQ;AAAA,EAEzD,MAAM,QAAQ,CAAC,wBAAQ,WAAW;AAAA,EAClC,IAAI;AAAA,IAAU,MAAM,KAAK,wBAAQ,eAAe,EAAE;AAAA,EAClD,IAAI;AAAA,IAAW,MAAM,KAAK,SAAS;AAAA,EAEnC,uBACE,QAYE,SAZF;AAAA,IAAO,OAAO,MAAM,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,IAAG,iBAAa;AAAA,IAAC,uBAAmB;AAAA,IAAhF,UAYE;AAAA,sBAXA,QAAC,SAAD;AAAA,QACE;AAAA,QACA,MAAK;AAAA,QACL,OAAO,wBAAQ;AAAA,QACf,SAAS;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA,UAAU;AAAA,SARZ,iCASA;AAAA,MACC,UAAU,6BAAa,QAAwC,QAAxC;AAAA,QAAM,OAAO,wBAAQ;AAAA,QAArB,UAAgC;AAAA,SAAhC,iCAAwC;AAAA;AAAA,KAXlE,gCAYE;AAAA;;;;;;;;;;ACnCC,SAAS,WAAW,CAAC,OAAsC;AAAA,EAChE,QAAQ,SAAS,UAAU,cAAc,OAAO,WAAW,OAAO;AAAA,EAClE,MAAM,QAAQ,CAAC,2BAAQ,cAAc;AAAA,EACrC,IAAI;AAAA,IAAW,MAAM,KAAK,SAAS;AAAA,EACnC,uBACE,QASE,WATF;AAAA,IACE;AAAA,IACA,OAAO,MAAM,KAAK,GAAG;AAAA,IACrB,MAAM;AAAA,IACN,iBAAa;AAAA,IACb,0BAAsB;AAAA,IALxB,UASE;AAAA,sBAFA,QAA+C,WAA/C;AAAA,QAAS,OAAO,2BAAQ;AAAA,QAAxB,UAAqC;AAAA,SAArC,iCAA+C;AAAA,sBAC/C,QAA4C,OAA5C;AAAA,QAAK,OAAO,2BAAQ;AAAA,QAApB;AAAA,0CAA4C;AAAA;AAAA,KAR9C,gCASE;AAAA;;ACzBN,mBAAS;;;;;;;;;;;ACET;AACA;AACA,kCAAqB,6BAAkB,qBAAQ;;;ACJ/C;AAOA,IAAM,QAAQ,OAAuB,CAAC,CAAC;AAGhC,SAAS,YAAY,GAA4B;AAAA,EACtD,OAAO,MAAM;AAAA;AAIR,SAAS,cAAc,GAAY;AAAA,EACxC,OAAO,MAAM,MAAM,SAAS;AAAA;AAIvB,SAAS,UAAU,GAA6B;AAAA,EACrD,MAAM,IAAI,MAAM;AAAA,EAChB,OAAO,EAAE,EAAE,SAAS;AAAA;AAIf,SAAS,WAAW,CAAC,OAA2B;AAAA,EACrD,MAAM,QAAQ,CAAC,GAAG,MAAM,OAAO,KAAK;AAAA;AAI/B,SAAS,UAAU,CAAC,IAAuC;AAAA,EAChE,MAAM,IAAI,MAAM;AAAA,EAChB,IAAI,EAAE,WAAW;AAAA,IAAG;AAAA,EACpB,IAAI,OAAO,WAAW;AAAA,IACpB,MAAM,MAAM,EAAE,EAAE,SAAS;AAAA,IACzB,MAAM,QAAQ,EAAE,MAAM,GAAG,EAAE;AAAA,IAC3B,OAAO;AAAA,EACT;AAAA,EACA,MAAM,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE;AAAA,EAC1C,IAAI,QAAQ;AAAA,IAAI;AAAA,EAChB,MAAM,QAAQ,EAAE;AAAA,EAChB,MAAM,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,MAAM,MAAM,CAAC,CAAC;AAAA,EACtD,OAAO;AAAA;AAIF,SAAS,eAAe,GAA6B;AAAA,EAC1D,MAAM,MAAM,WAAW;AAAA,EACvB,IAAI,CAAC;AAAA,IAAK;AAAA,EACV,IAAI,UAAU;AAAA,EACd,OAAO,WAAW,IAAI,EAAE;AAAA;AAInB,SAAS,iBAAiB,GAAS;AAAA,EACxC,MAAM,QAAQ,CAAC;AAAA;;;ACvDjB,IAAM,qBAAqB;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,EAAE,KAAK,GAAG;AAEV,SAAS,YAAY,CAAC,MAAkC;AAAA,EACtD,MAAM,QAAQ,MAAM,KAAK,KAAK,iBAA8B,kBAAkB,CAAC;AAAA,EAC/E,OAAO,MAAM,OACX,CAAC,OAAO,CAAC,GAAG,aAAa,UAAU,KAAK,GAAG,aAAa,aAAa,MAAM,MAC7E;AAAA;AAGK,SAAS,gBAAgB,CAAC,MAA+B;AAAA,EAC9D,MAAM,iBACJ,SAAS,yBAAyB,cAAc,SAAS,gBAAgB;AAAA,EAI3E,MAAM,YAAY,aAAa,IAAI;AAAA,EACnC,MAAM,QAAQ,UAAU,MAAM;AAAA,EAC9B,IAAI,CAAC,KAAK,SAAS,SAAS,aAAa,GAAG;AAAA,IAC1C,MAAM,MAAM;AAAA,EACd;AAAA,EAEA,SAAS,aAAa,CAAC,OAA4B;AAAA,IACjD,IAAI,MAAM,QAAQ;AAAA,MAAO;AAAA,IACzB,MAAM,QAAQ,aAAa,IAAI;AAAA,IAC/B,IAAI,MAAM,WAAW,GAAG;AAAA,MACtB,MAAM,eAAe;AAAA,MACrB;AAAA,IACF;AAAA,IACA,MAAM,YAAY,MAAM;AAAA,IACxB,MAAM,WAAW,MAAM,MAAM,SAAS;AAAA,IACtC,IAAI,CAAC,aAAa,CAAC;AAAA,MAAU;AAAA,IAC7B,MAAM,SAAS,SAAS;AAAA,IACxB,IAAI,MAAM,UAAU;AAAA,MAClB,IAAI,WAAW,aAAa,CAAC,KAAK,SAAS,MAAM,GAAG;AAAA,QAClD,MAAM,eAAe;AAAA,QACrB,SAAS,MAAM;AAAA,MACjB;AAAA,IACF,EAAO,SAAI,WAAW,UAAU;AAAA,MAC9B,MAAM,eAAe;AAAA,MACrB,UAAU,MAAM;AAAA,IAClB;AAAA;AAAA,EAGF,SAAS,iBAAiB,WAAW,aAAa;AAAA,EAElD,OAAO,MAAM;AAAA,IACX,SAAS,oBAAoB,WAAW,aAAa;AAAA,IACrD,IAAI,kBAAkB,SAAS,SAAS,cAAc,GAAG;AAAA,MACvD,eAAe,MAAM;AAAA,IACvB;AAAA;AAAA;;;;;;;;;;;;;;;AC/DJ;AACA,sBAAS,sBAAW;;;ACApB,IAAI,QAAQ;AAEL,SAAS,iBAAiB,GAAe;AAAA,EAC9C,IAAI,UAAU,GAAG;AAAA,IACf,MAAM,OAAO,SAAS;AAAA,IACtB,MAAM,SAAS,OAAO,aAAa,KAAK;AAAA,IACxC,KAAK,MAAM,YAAY,4BAA4B,GAAG,UAAU;AAAA,IAChE,KAAK,aAAa,4BAA4B,MAAM;AAAA,EACtD;AAAA,EACA,SAAS;AAAA,EACT,IAAI,WAAW;AAAA,EACf,OAAO,MAAM;AAAA,IACX,IAAI;AAAA,MAAU;AAAA,IACd,WAAW;AAAA,IACX,SAAS;AAAA,IACT,IAAI,SAAS,GAAG;AAAA,MACd,QAAQ;AAAA,MACR,MAAM,OAAO,SAAS;AAAA,MACtB,KAAK,gBAAgB,0BAA0B;AAAA,MAC/C,KAAK,MAAM,eAAe,0BAA0B;AAAA,IACtD;AAAA;AAAA;;;;;;;;;ADfG,SAAS,WAAW,GAAG;AAAA,EAC5B,MAAM,MAAM,QAAuB,IAAI;AAAA,EAEvC,WAAU,MAAM;AAAA,IACd,IAAI,UAA+B;AAAA,IACnC,MAAM,UAAU,OAAO,MAAM;AAAA,MAC3B,IAAI,eAAe,GAAG;AAAA,QACpB,IAAI,CAAC;AAAA,UAAS,UAAU,kBAAkB;AAAA,MAC5C,EAAO,SAAI,SAAS;AAAA,QAClB,QAAQ;AAAA,QACR,UAAU;AAAA,MACZ;AAAA,KACD;AAAA,IACD,OAAO,MAAM;AAAA,MACX,QAAQ;AAAA,MACR,UAAU;AAAA;AAAA,KAEX,CAAC,CAAC;AAAA,EAEL,uBAAO,QAAC,OAAD;AAAA,IAAK;AAAA,IAAU,OAAO,2BAAQ;AAAA,IAAS,iBAAa;AAAA,IAAC,2BAAuB;AAAA,KAA5E,iCAA6E;AAAA;AAI/E,SAAS,kBAAkB,GAAuB;AAAA,EACvD,OAAO,SAAS,cAA2B,2BAA2B;AAAA;;;;AHXxE,IAAM,MAAM,cAAmC,IAAI;AAEnD,SAAS,QAAQ,GAAiB;AAAA,EAChC,MAAM,MAAM,WAAW,GAAG;AAAA,EAC1B,IAAI,CAAC;AAAA,IAAK,MAAM,IAAI,MAAM,sDAAsD;AAAA,EAChF,OAAO;AAAA;AAWT,SAAS,KAAI,GAAG,MAAM,SAAS,UAAU,cAAc,aAAwB;AAAA,EAC7E,MAAM,KAAK,MAAM;AAAA,EACjB,MAAM,UAAU,GAAG;AAAA,EACnB,MAAM,SAAS,GAAG;AAAA,EAClB,MAAM,WAAW,QAA8B,IAAI;AAAA,EACnD,OAAO,YAAY,iBAAiB,UAA6B,IAAI;AAAA,EAErE,MAAM,SAAS,OAAO,SAAS,YAAY,OAAO,KAAK;AAAA,EAEvD,WAAU,MAAM;AAAA,IACd,IAAI,CAAC,QAAQ;AAAA,MACX,cAAc,IAAI;AAAA,MAClB;AAAA,IACF;AAAA,IACA,cAAc,mBAAmB,CAAC;AAAA,KACjC,CAAC,MAAM,CAAC;AAAA,EAEX,WAAU,MAAM;AAAA,IACd,IAAI,CAAC,UAAU,CAAC;AAAA,MAAY;AAAA,IAC5B,MAAM,QAAQ,EAAE,IAAI,QAAQ;AAAA,IAC5B,YAAY,KAAK;AAAA,IACjB,MAAM,KAAK,SAAS;AAAA,IACpB,MAAM,UAAU,KACZ,iBAAiB,EAAE,IACnB,MAAM;AAAA,IAGV,OAAO,MAAM;AAAA,MACX,QAAQ;AAAA,MACR,WAAW,EAAE;AAAA;AAAA,KAEd,CAAC,QAAQ,YAAY,IAAI,OAAO,CAAC;AAAA,EAEpC,IAAI,CAAC,UAAU,CAAC;AAAA,IAAY,OAAO;AAAA,EAEnC,MAAM,QAAQ,MAAM;AAAA,IAClB,UAAU;AAAA;AAAA,EAGZ,MAAM,MAAoB,EAAE,IAAI,SAAS,QAAQ,MAAM;AAAA,EAEvD,MAAM,0BACJ,QAgBE,IAAI,UAhBN;AAAA,IAAc,OAAO;AAAA,IAArB,0BACE,QAcE,OAdF;AAAA,MACE,KAAK;AAAA,MACL,OAAO,qBAAQ;AAAA,MACf,iBAAa;AAAA,MACb,4BAAwB;AAAA,MACxB,mBAAiB;AAAA,MACjB,cAAW;AAAA,MACX,MAAK;AAAA,MACL,cAAW;AAAA,MACX,mBAAiB,YAAY,YAAY;AAAA,MACzC,cAAY;AAAA,MACZ,oBAAkB;AAAA,MAXpB;AAAA,wCAcE;AAAA,KAfJ,iCAgBE;AAAA,EAGJ,OAAO,aAAa,SAAS,UAAU;AAAA;AAGzC,SAAS,QAAQ,GAAG;AAAA,EAClB,QAAQ,UAAU,SAAS;AAAA,EAC3B,uBACE,QAAC,OAAD;AAAA,IAAK,OAAO,qBAAQ;AAAA,IAAa,6BAAyB;AAAA,IAAC,SAAS;AAAA,IAAO,eAAY;AAAA,KAAvF,iCAA8F;AAAA;AAUlG,SAAS,OAAO,GAAG,UAAU,WAAW,SAAuB;AAAA,EAC7D,MAAM,MAAM,YAAY,GAAG,qBAAQ,cAAc,cAAc,qBAAQ;AAAA,EACvE,uBACE,QAUE,SAVF;AAAA,IACE,SAAQ;AAAA,IACR,QAAO;AAAA,IACP,QAAO;AAAA,IACP,UAAS;AAAA,IACT,WAAW;AAAA,IACX;AAAA,IACA,4BAAwB;AAAA,IAP1B;AAAA,sCAUE;AAAA;AAIN,SAAS,OAAM,GAAG,YAA6C;AAAA,EAC7D,uBACE,QAEE,UAFF;AAAA,IAAQ,OAAO,qBAAQ;AAAA,IAAW,2BAAuB;AAAA,IAAzD;AAAA,sCAEE;AAAA;AAIN,SAAS,KAAK,GAAG,YAA6C;AAAA,EAC5D,QAAQ,YAAY,SAAS;AAAA,EAC7B,uBACE,QAEE,MAFF;AAAA,IAAI,IAAI;AAAA,IAAS,OAAO,qBAAQ;AAAA,IAAU,0BAAsB;AAAA,IAAhE;AAAA,sCAEE;AAAA;AAIN,SAAS,KAAI,GAAG,YAA6C;AAAA,EAC3D,QAAQ,WAAW,SAAS;AAAA,EAC5B,uBACE,QAEE,OAFF;AAAA,IAAK,IAAI;AAAA,IAAQ,OAAO,qBAAQ;AAAA,IAAS,yBAAqB;AAAA,IAA9D;AAAA,sCAEE;AAAA;AAIN,SAAS,OAAM,GAAG,YAA6C;AAAA,EAC7D,uBACE,QAEE,UAFF;AAAA,IAAQ,OAAO,qBAAQ;AAAA,IAAW,2BAAuB;AAAA,IAAzD;AAAA,sCAEE;AAAA;AAUN,SAAS,KAAK,GAAG,UAAU,UAAsB;AAAA,EAC/C,QAAQ,UAAU,SAAS;AAAA,EAC3B,IAAI,QAAQ;AAAA,IACV,uBACE,QASE,UATF;AAAA,MACE,MAAK;AAAA,MACL,OAAO,qBAAQ;AAAA,MACf,iBAAa;AAAA,MACb,0BAAsB;AAAA,MACtB,0BAAsB;AAAA,MACtB,eAAa;AAAA,MANf;AAAA,wCASE;AAAA,EAEN;AAAA,EACA,uBACE,QASE,UATF;AAAA,IACE,MAAK;AAAA,IACL,OAAO,qBAAQ;AAAA,IACf,iBAAa;AAAA,IACb,0BAAsB;AAAA,IACtB,0BAAsB;AAAA,IACtB,SAAS;AAAA,IANX;AAAA,sCASE;AAAA;AAIC,IAAM,QAAQ;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;;;;ADhMA,IAAM,UAAU,QAA8B,IAAI;AAClD,IAAM,SAAS,QAAO,KAAK;AAC3B,IAAI,SAAS;AAUN,SAAS,OAAO,CAAC,SAA2C;AAAA,EACjE,OAAO,IAAI,QAAiB,CAAC,YAAY;AAAA,IACvC,UAAU;AAAA,IACV,QAAQ,QAAQ;AAAA,MACd,IAAI;AAAA,MACJ,OAAO,QAAQ;AAAA,MACf,MAAM,QAAQ;AAAA,MACd,QAAQ,QAAQ;AAAA,MAChB,cAAc,QAAQ;AAAA,MACtB,aAAa,QAAQ;AAAA,MACrB;AAAA,IACF;AAAA,IACA,OAAO,QAAQ;AAAA,GAChB;AAAA;AAGH,SAAS,KAAK,CAAC,QAAuB;AAAA,EACpC,MAAM,UAAU,QAAQ;AAAA,EACxB,IAAI,CAAC;AAAA,IAAS;AAAA,EACd,OAAO,QAAQ;AAAA,EACf,QAAQ,QAAQ;AAAA,EAChB,QAAQ,QAAQ,MAAM;AAAA;AAIxB,SAAS,IAAI,GAAuB;AAAA,EAClC,MAAM,UAAU,QAAQ;AAAA,EACxB,IAAI,CAAC;AAAA,IAAS,OAAO;AAAA,EACrB,uBACE,SAgCE,MAAM,MAhCR;AAAA,IAAY,MAAM;AAAA,IAAQ,SAAS,MAAM,MAAM,KAAK;AAAA,IAApD,UAgCE;AAAA,sBA/BA,SAAC,MAAM,UAAP,qCAAgB;AAAA,sBAChB,SA6BE,MAAM,SA7BR;AAAA,kBA6BE;AAAA,0BA5BA,SAEE,MAAM,QAFR;AAAA,sCACE,SAA8B,MAAM,OAApC;AAAA,wBAAc,QAAQ;AAAA,eAAtB,iCAA8B;AAAA,aADhC,iCAEE;AAAA,UACD,QAAQ,uBAAO,SAA4B,MAAM,MAAlC;AAAA,sBAAa,QAAQ;AAAA,aAArB,iCAA4B,IAAc;AAAA,0BAC1D,SAuBE,MAAM,QAvBR;AAAA,sCACE,SAqBE,OArBF;AAAA,cAAK,OAAO,6BAAQ;AAAA,cAAY,8BAA0B;AAAA,cAA1D,UAqBE;AAAA,gCApBA,SASE,UATF;AAAA,kBACE,MAAK;AAAA,kBACL,OAAO,6BAAQ;AAAA,kBACf,iBAAa;AAAA,kBACb,0BAAsB;AAAA,kBACtB,6BAAyB;AAAA,kBACzB,SAAS,MAAM,MAAM,KAAK;AAAA,kBAN5B,UAQG,QAAQ,eAAe;AAAA,mBAR1B,iCASE;AAAA,gCACF,SASE,UATF;AAAA,kBACE,MAAK;AAAA,kBACL,OAAO,QAAQ,SAAS,6BAAQ,mBAAmB,6BAAQ;AAAA,kBAC3D,iBAAa;AAAA,kBACb,0BAAsB;AAAA,kBACtB,yBAAqB;AAAA,kBACrB,SAAS,MAAM,MAAM,IAAI;AAAA,kBAN3B,UAQG,QAAQ,gBAAgB;AAAA,mBAR3B,iCASE;AAAA;AAAA,eApBJ,gCAqBE;AAAA,aAtBJ,iCAuBE;AAAA;AAAA,SA5BJ,gCA6BE;AAAA;AAAA,KA/BJ,gCAgCE;AAAA;AAIC,IAAM,gBAAgB,EAAE,MAAM,QAAQ;;AMzF7C;AAEA,sBAAS,sBAAW;;;;;;;;;;;;AAcpB,IAAI,kBAAkB;AAEf,SAAS,QAAQ,CAAC,OAAmC;AAAA,EAC1D,QAAQ,iBAAQ,SAAS,UAAU,QAAQ,QAAQ,cAAc,OAAO,WAAW,OAAO;AAAA,EAE1F,MAAM,UAAU,QAAuB,IAAI;AAAA,EAC3C,MAAM,aAAa,QAA0B,IAAI;AAAA,EACjD,MAAM,QAAQ,QAAO,kBAAkB,EAAE,iBAAiB;AAAA,EAC1D,MAAM,YAAY,MAAM;AAAA,EAExB,WAAU,MAAM;AAAA,IACd,WAAW,SAAS,aAAa,iBAAiB,SAAS;AAAA,KAC1D,CAAC,SAAS,CAAC;AAAA,EAEd,WAAU,MAAM;AAAA,IACd,MAAM,OAAO,QAAQ;AAAA,IACrB,IAAI,CAAC;AAAA,MAAM;AAAA,IACX,MAAM,iBAAiB,CAAC,MAAmB;AAAA,MACzC,IAAI,aAAa,eAAe,EAAE,QAAQ,OAAO,WAAW;AAAA,QAC1D,QAAO,QAAQ;AAAA,MACjB;AAAA;AAAA,IAEF,KAAK,iBAAiB,iBAAiB,cAAc;AAAA,IACrD,OAAO,MAAM;AAAA,MACX,KAAK,oBAAoB,iBAAiB,cAAc;AAAA;AAAA,KAEzD,CAAC,WAAW,OAAM,CAAC;AAAA,EAEtB,gBAAgB,MAAM;AAAA,IACpB,MAAM,OAAO,QAAQ;AAAA,IACrB,IAAI,CAAC;AAAA,MAAM;AAAA,IACX,IAAI,QAAO,SAAS,CAAC,KAAK,QAAQ,eAAe,GAAG;AAAA,MAClD,KAAK,YAAY;AAAA,IACnB,EAAO,SAAI,CAAC,QAAO,SAAS,KAAK,QAAQ,eAAe,GAAG;AAAA,MACzD,KAAK,YAAY;AAAA,IACnB;AAAA,GACD;AAAA,EAED,MAAM,eAAe,CAAC,MAAmB;AAAA,IACvC,IAAI,cAAc,GAAG;AAAA,MACnB,QAAO,QAAS,EAAsC,aAAa;AAAA,IACrE;AAAA;AAAA,EAGF,MAAM,kBAAkB,MAAY;AAAA,IAClC,IAAI,CAAC,aAAa;AAAA,MAChB,QAAO,QAAQ;AAAA,IACjB;AAAA;AAAA,EAGF,MAAM,gBAAgB,CAAC,MAA2B;AAAA,IAChD,IAAI,EAAE,QAAQ,UAAU;AAAA,MACtB,QAAO,QAAQ;AAAA,IACjB;AAAA;AAAA,EAGF,MAAM,QAAQ,CAAC,wBAAQ,eAAe,EAAE;AAAA,EACxC,IAAI;AAAA,IAAW,MAAM,KAAK,SAAS;AAAA,EAEnC,MAAM,YAAY,CAAC,wBAAQ,WAAW,EAAE;AAAA,EACxC,IAAI,UAAU;AAAA,IAAS,UAAU,KAAK,wBAAQ,iBAAiB,EAAE;AAAA,EAEjE,uBACE,SAmBE,OAnBF;AAAA,IAAK;AAAA,IAAQ,OAAO,MAAM,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,IAAG,iBAAa;AAAA,IAAC,uBAAmB;AAAA,IAAtF,UAmBE;AAAA,sBAlBA,SAEE,UAFF;AAAA,QAAQ,KAAK;AAAA,QAAY,MAAK;AAAA,QAAS,OAAO,wBAAQ;AAAA,QAAtD,UACG;AAAA,SADH,iCAEE;AAAA,sBACF,SAcE,OAdF;AAAA,QACE,KAAK;AAAA,QACL,IAAI;AAAA,QACJ,MAAK;AAAA,QACL,OAAO,UAAU,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,QACzC,SAAQ;AAAA,QACR,mBAAiB;AAAA,QACjB,UAAU;AAAA,QACV,SAAS;AAAA,QACT,WAAW;AAAA,QATb,0BAWE,SAEE,QAFF;AAAA,UAAQ,MAAK;AAAA,UAAO,KAAI;AAAA,UAAxB;AAAA,4CAEE;AAAA,SAbJ,iCAcE;AAAA;AAAA,KAlBJ,gCAmBE;AAAA;;ACpGN;;;;;;;;;;;;;;;;;AAmBA,SAAS,cAAiB,CAAC,SAA4B,UAA0B;AAAA,EAC/E,IAAI,SAAS,SAAS;AAAA,IAAG,OAAO;AAAA,EAChC,MAAM,SAAmB,CAAC;AAAA,EAC1B,WAAW,OAAO,SAAS;AAAA,IACzB,IAAI,SAAS,IAAI,IAAI,KAAK;AAAA,MAAG,OAAO,KAAK,IAAI,KAAK;AAAA,EACpD;AAAA,EACA,OAAO,OAAO,KAAK,IAAI;AAAA;AAGlB,SAAS,MAAkB,CAAC,OAAoC;AAAA,EACrE;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc;AAAA,IACd,cAAc;AAAA,IACd,WAAW;AAAA,IACX;AAAA,IACA;AAAA,MACE;AAAA,EAEJ,MAAM,UAAS,UAAU,KAAK;AAAA,EAE9B,MAAM,cAAc,YAAY,MAAM;AAAA,IACpC,MAAM,OAAO,eAAe,SAAS,SAAS,KAAK;AAAA,IACnD,OAAO,KAAK,SAAS,IAAI,OAAO;AAAA,GACjC;AAAA,EAED,MAAM,UAAU,YAAY,MAAM,SAAS,MAAM,SAAS,CAAC;AAAA,EAE3D,MAAM,oBAAoB,CAAC,UAAmB;AAAA,IAC5C,IAAI,aAAa;AAAA,MACf,MAAM,OAAO,IAAI,IAAI,SAAS,KAAK;AAAA,MACnC,IAAI,KAAK,IAAI,KAAK;AAAA,QAAG,KAAK,OAAO,KAAK;AAAA,MACjC;AAAA,aAAK,IAAI,KAAK;AAAA,MACnB,SAAS,QAAQ;AAAA,IACnB,EAAO;AAAA,MACL,SAAS,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC;AAAA,MAChC,QAAO,QAAQ;AAAA;AAAA;AAAA,EAInB,MAAM,kBAAkB,MAAY;AAAA,IAClC,SAAS,QAAQ,IAAI,IAAI,QAAQ,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;AAAA;AAAA,EAGtD,MAAM,cAAc,MAAY;AAAA,IAC9B,SAAS,QAAQ,IAAI;AAAA;AAAA,EAGvB,MAAM,eAAe,QAAQ,QACzB,GAAG,sBAAQ,cAAc,sBAAQ,mBACjC,sBAAQ;AAAA,EACZ,MAAM,gCACJ,SAEE,UAFF;AAAA,IAAQ,MAAK;AAAA,IAAS,OAAO;AAAA,IAAc;AAAA,IAA3C,UACG,YAAY;AAAA,KADf,iCAEE;AAAA,EAGJ,MAAM,QAAQ,CAAC,sBAAQ,aAAa,EAAE;AAAA,EACtC,IAAI;AAAA,IAAW,MAAM,KAAK,SAAS;AAAA,EAEnC,uBACE,SAyCE,OAzCF;AAAA,IAAK;AAAA,IAAQ,OAAO,MAAM,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,IAAG,iBAAa;AAAA,IAAC,qBAAiB;AAAA,IAApF,UAyCE;AAAA,MAxCC,UAAU,6BAAa,SAAwC,QAAxC;AAAA,QAAM,OAAO,sBAAQ;AAAA,QAArB,UAAgC;AAAA,SAAhC,iCAAwC;AAAA,sBAChE,SAsCE,UAtCF;AAAA,QAAU,QAAQ;AAAA,QAAQ,SAAS;AAAA,QAAe;AAAA,QAAlD,UAsCE;AAAA,UArCC,+BACC,SASE,OATF;AAAA,YAAK,OAAO,sBAAQ;AAAA,YAApB,0BACE,SAOE,QAPF;AAAA,cAAQ,SAAQ;AAAA,cAAU,KAAI;AAAA,cAA9B,UAOE;AAAA,gCANA,SAEE,UAFF;AAAA,kBAAQ,MAAK;AAAA,kBAAS,OAAO,sBAAQ;AAAA,kBAAc,SAAS;AAAA,kBAA5D;AAAA,oDAEE;AAAA,gCACF,SAEE,UAFF;AAAA,kBAAQ,MAAK;AAAA,kBAAS,OAAO,sBAAQ;AAAA,kBAAc,SAAS;AAAA,kBAA5D;AAAA,oDAEE;AAAA;AAAA,eANJ,gCAOE;AAAA,aARJ,iCASE;AAAA,UAEH,QAAQ,IAAI,CAAC,QAAQ;AAAA,YACpB,MAAM,aAAa,SAAS,MAAM,IAAI,IAAI,KAAK;AAAA,YAC/C,MAAM,WAAW,aACb,GAAG,sBAAQ,aAAa,sBAAQ,sBAChC,sBAAQ;AAAA,YACZ,uBACE,SAgBE,UAhBF;AAAA,cAEE,MAAK;AAAA,cACL,OAAO;AAAA,cACP,SAAS,MAAM,kBAAkB,IAAI,KAAK;AAAA,cAJ5C,UAgBE;AAAA,gBAVC,+BACC,SAAC,SAAD;AAAA,kBACE,MAAK;AAAA,kBACL,OAAO,sBAAQ;AAAA,kBACf,SAAS;AAAA,kBACT,UAAU;AAAA,kBACV,UAAU;AAAA,mBALZ,iCAMA;AAAA,gCAEF,SAAmB,QAAnB;AAAA,4BAAO,IAAI;AAAA,mBAAX,iCAAmB;AAAA;AAAA,eAdd,OAAO,IAAI,KAAK,GADvB,qBAgBE;AAAA,WAEL;AAAA;AAAA,SArCH,gCAsCE;AAAA;AAAA,KAxCJ,gCAyCE;AAAA;;;;;;;;;;;AC/GN,SAAS,WAAW,CAAC,OAAwD;AAAA,EAC3E,IAAI,UAAU;AAAA,IAAW;AAAA,EACzB,IAAI,OAAO,UAAU;AAAA,IAAU,OAAO,GAAG;AAAA,EACzC,OAAO;AAAA;AAGT,SAAS,aAAY,CAAC,SAA8C;AAAA,EAClE,IAAI,YAAY;AAAA,IAAU,OAAO,wBAAQ;AAAA,EACzC,IAAI,YAAY;AAAA,IAAQ,OAAO,wBAAQ;AAAA,EACvC,OAAO,wBAAQ;AAAA;AAGV,SAAS,QAAQ,CAAC,OAAmC;AAAA,EAC1D,QAAQ,UAAU,QAAQ,OAAO,QAAQ,cAAc;AAAA,EAEvD,MAAM,QAAgC,CAAC;AAAA,EACvC,MAAM,IAAI,YAAY,KAAK;AAAA,EAC3B,MAAM,IAAI,YAAY,MAAM;AAAA,EAC5B,IAAI,MAAM;AAAA,IAAW,MAAM,WAAW;AAAA,EACtC,IAAI,MAAM;AAAA,IAAW,MAAM,YAAY;AAAA,EAEvC,MAAM,QAAkB,CAAC;AAAA,EACzB,MAAM,OAAO,wBAAQ;AAAA,EACrB,IAAI;AAAA,IAAM,MAAM,KAAK,IAAI;AAAA,EACzB,MAAM,SAAS,cAAa,OAAO;AAAA,EACnC,IAAI;AAAA,IAAQ,MAAM,KAAK,MAAM;AAAA,EAC7B,IAAI;AAAA,IAAW,MAAM,KAAK,SAAS;AAAA,EAEnC,uBACE,SAAC,QAAD;AAAA,IACE,OAAO,MAAM,KAAK,GAAG;AAAA,IACrB;AAAA,IACA,iBAAa;AAAA,IACb,uBAAqB;AAAA,IACrB,eAAY;AAAA,KALd,iCAMA;AAAA;;;;;;;;;;AChCG,SAAS,IAAI,CAAC,OAA+B;AAAA,EAClD,QAAQ,MAAM,WAAW,QAAQ,WAAW,OAAO;AAAA,EACnD,MAAM,QAAQ,CAAC,oBAAQ,WAAW,EAAE;AAAA,EACpC,IAAI;AAAA,IAAW,MAAM,KAAK,SAAS;AAAA,EACnC,uBACE,SA0BE,OA1BF;AAAA,IACE;AAAA,IACA,OAAO,MAAM,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,IACrC,cAAY,MAAM;AAAA,IAClB,iBAAa;AAAA,IACb,mBAAe;AAAA,IALjB,0BAOE,SAkBE,QAlBF;AAAA,MAAQ,SAAS,UAAU,KAAK;AAAA,MAAiB,KAAI;AAAA,MAAI,YAAW;AAAA,MAApE,UACG,KAAK,IAAI,CAAC,QAAQ;AAAA,QACjB,MAAM,WAAW,cAAc,IAAI;AAAA,QACnC,MAAM,WAAW,WAAW,GAAG,oBAAQ,UAAU,oBAAQ,cAAc,oBAAQ;AAAA,QAC/E,uBACE,SAUE,UAVF;AAAA,UAEE,MAAK;AAAA,UACL,OAAO;AAAA,UACP,UAAU,IAAI;AAAA,UACd,gBAAc,WAAW,SAAS;AAAA,UAClC,eAAa;AAAA,UACb,kBAAgB,IAAI;AAAA,UAPtB,UASG,IAAI;AAAA,WARA,IAAI,IADX,sBAUE;AAAA,OAEL;AAAA,OAjBH,iCAkBE;AAAA,KAzBJ,iCA0BE;AAAA;;ACrCC,SAAS,cAAc,CAAC,OAAuB;AAAA,EACpD,MAAM,QAAiC;AAAA,IACrC,iBAAiB;AAAA,IACjB,oBAAoB;AAAA,IACpB,gBAAgB,MAAM,UAAU,SAAS;AAAA,IACzC,iBAAiB,MAAM,WAAW,SAAS;AAAA,IAC3C,oBAAoB,MAAM;AAAA,IAC1B,MAAM,MAAM;AAAA,IACZ,IAAI,MAAM;AAAA,IACV,aAAa,MAAM;AAAA,IACnB,UAAU,MAAM;AAAA,IAChB,UAAU,MAAM;AAAA,EAClB;AAAA,EACA,IAAI,MAAM;AAAA,IAAS,MAAM,gBAAgB;AAAA,EACzC,OAAO;AAAA;;;;;;;;;ACET,SAAS,SAAW,CAAC,GAA8C;AAAA,EACjE,OAAO,OAAO,MAAM,YAAY,MAAM,QAAQ,WAAW,KAAK,UAAW;AAAA;AAGpE,SAAS,SAAS,CAAC,OAAoC;AAAA,EAC5D,MAAM,UAAU,MAAM,WAAW;AAAA,EACjC,MAAM,OAAO,eAAe;AAAA,IAC1B,MAAM,MAAM;AAAA,IACZ,IAAI,MAAM;AAAA,IACV,UAAU,MAAM;AAAA,IAChB,SAAS,MAAM;AAAA,IACf,aAAa,MAAM;AAAA,IACnB,aAAa,MAAM;AAAA,IACnB,UAAU,MAAM;AAAA,IAChB,UAAU,MAAM;AAAA,EAClB,CAAC;AAAA,EAED,MAAM,aAAa,UAAS,MAAM,KAAK;AAAA,EACvC,MAAM,cAAc,aAAc,MAAM,MAAoC,QAAQ;AAAA,EACpF,MAAM,eAAe,aACjB,YACE,MAAM,SAA2C;AAAA,EAEvD,MAAM,YAAY,MAAM,YAAY,GAAG,yBAAQ,YAAY,MAAM,cAAc,yBAAQ;AAAA,EAEvF,IAAI,YAAY,SAAS;AAAA,IACvB,uBACE,SAAC,YAAD;AAAA,SACO;AAAA,MACL,OAAO;AAAA,MACP,4BAAyB;AAAA,MACzB,MAAM,MAAM;AAAA,MAEZ,WAAW,MAAM;AAAA,MACjB,OAAO;AAAA,MACP;AAAA,MACA,SAAS,CAAC,MAAM;AAAA,QACd,IAAI,YAAY;AAAA,UACb,MAAM,MAAoC,QAAQ,EAAE,cAAc;AAAA,QACrE;AAAA;AAAA,OAZJ,iCAcA;AAAA,EAEJ;AAAA,EAEA,uBACE,SAAC,SAAD;AAAA,OACO;AAAA,IACL,MAAK;AAAA,IACL,OAAO;AAAA,IACP,4BAAyB;AAAA,IAEzB,WAAW,MAAM;AAAA,IACjB,OAAO;AAAA,IACP;AAAA,IACA,SAAS,CAAC,MAAM;AAAA,MACd,IAAI,YAAY;AAAA,QACb,MAAM,MAAoC,QAAQ,EAAE,cAAc;AAAA,MACrE;AAAA;AAAA,KAZJ,iCAcA;AAAA;;ACpFJ,yBAAS;AACT,sBAAS,wBAAW;;;ACJpB,mBAAS;AAYF,IAAM,aAAa,QAAqB,CAAC,CAAC;AAEjD,IAAI,UAAS;AACb,SAAS,OAAO,GAAW;AAAA,EACzB,WAAU;AAAA,EACV,OAAO,aAAa;AAAA;AAGf,SAAS,QAAQ,CACtB,SACA,OAAsD,CAAC,GAC/C;AAAA,EACR,MAAM,QAAoB;AAAA,IACxB,IAAI,QAAQ;AAAA,IACZ;AAAA,IACA,UAAU,KAAK,YAAY;AAAA,IAC3B,QAAQ,KAAK;AAAA,IACb,WAAW,KAAK,IAAI;AAAA,EACtB;AAAA,EACA,WAAW,QAAQ,CAAC,GAAG,WAAW,OAAO,KAAK;AAAA,EAC9C,OAAO,MAAM;AAAA;AAGR,SAAS,UAAU,CAAC,IAAmB;AAAA,EAC5C,IAAI,OAAO,WAAW;AAAA,IACpB,WAAW,QAAQ,CAAC;AAAA,IACpB;AAAA,EACF;AAAA,EACA,WAAW,QAAQ,WAAW,MAAM,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE;AAAA;AAOxD,SAAS,WAAW,CAAC,QAAgB,KAAsB;AAAA,EAChE,MAAM,UAAU,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAAA,EAC/D,OAAO,SAAS,SAAS,EAAE,QAAQ,UAAU,QAAQ,CAAC;AAAA;;;;;;;;;;;;ADlCxD,SAAS,QAAQ,CAAC,OAA+C;AAAA,EAC/D,MAAM,gBAAgB,MAAM,iBAAiB;AAAA,EAC7C,OAAO,YAAY,iBAAiB,UAA6B,IAAI;AAAA,EACrE,OAAO,QAAQ,aAAa,UAAS,KAAK;AAAA,EAC1C,MAAM,UAAU,WAAW;AAAA,EAE3B,WAAU,MAAM;AAAA,IACd,cAAc,mBAAmB,CAAC;AAAA,KACjC,CAAC,CAAC;AAAA,EAEL,WAAU,MAAM;AAAA,IACd,IAAI,UAAU,QAAQ,WAAW;AAAA,MAAG;AAAA,IACpC,MAAM,OAAO,QAAQ;AAAA,IACrB,IAAI,CAAC;AAAA,MAAM;AAAA,IACX,MAAM,QAAQ,OAAO,WAAW,MAAM;AAAA,MACpC,WAAW,KAAK,EAAE;AAAA,OACjB,aAAa;AAAA,IAChB,OAAO,MAAM,OAAO,aAAa,KAAK;AAAA,KACrC,CAAC,QAAQ,SAAS,aAAa,CAAC;AAAA,EAEnC,IAAI,CAAC;AAAA,IAAY,OAAO;AAAA,EAExB,MAAM,0BAEJ,SAUE,OAVF;AAAA,IACE,OAAO,GAAG,qBAAQ,eAAe,MAAM,aAAa,KAAK,KAAK;AAAA,IAC9D,iBAAa;AAAA,IACb,6BAAyB;AAAA,IACzB,cAAc,MAAM,UAAU,IAAI;AAAA,IAClC,cAAc,MAAM,UAAU,KAAK;AAAA,IALrC,UAOG,QAAQ,IAAI,CAAC,0BACZ,SAAC,WAAD;AAAA,MAA0B;AAAA,OAAV,MAAM,IAAtB,sBAAwC,CACzC;AAAA,KATH,iCAUE;AAAA,EAEJ,OAAO,cAAa,SAAS,UAAU;AAAA;AAGzC,SAAS,SAAS,GAAG,SAA6C;AAAA,EAChE,MAAM,WAAW,MAAM,aAAa,UAAU,cAAc;AAAA,EAC5D,uBACE,SAsBE,SAtBF;AAAA,IACE,SAAQ;AAAA,IACR,SAAQ;AAAA,IACR,WAAW,qBAAQ;AAAA,IACnB,iBAAa;AAAA,IACb,yBAAqB;AAAA,IACrB,iBAAe,MAAM;AAAA,IACrB,MAAM,MAAM,aAAa,UAAU,UAAU;AAAA,IAC7C,aAAW;AAAA,IARb,UAsBE;AAAA,sBAZA,SAAkD,QAAlD;AAAA,QAAM,OAAO,qBAAQ;AAAA,QAArB,UAAkC,MAAM;AAAA,SAAxC,iCAAkD;AAAA,sBAClD,SAUE,UAVF;AAAA,QACE,MAAK;AAAA,QACL,OAAO,qBAAQ;AAAA,QACf,iBAAa;AAAA,QACb,0BAAsB;AAAA,QACtB,0BAAsB;AAAA,QACtB,SAAS,MAAM,WAAW,MAAM,EAAE;AAAA,QAClC,cAAW;AAAA,QAPb;AAAA,0CAUE;AAAA;AAAA,KArBJ,gCAsBE;AAAA;AAIC,IAAM,QAAQ,EAAE,SAAS;;;;;;;;;;;;;;;AEpEzB,SAAS,MAAM,CAAC,OAAiC;AAAA,EACtD,QAAQ,UAAU,OAAO,WAAW,OAAO,OAAO,MAAM,WAAW,OAAO;AAAA,EAC1E,MAAM,QAAQ,CAAC,sBAAQ,SAAS;AAAA,EAChC,IAAI;AAAA,IAAU,MAAM,KAAK,sBAAQ,WAAW;AAAA,EAC5C,IAAI;AAAA,IAAW,MAAM,KAAK,SAAS;AAAA,EACnC,uBACE,SAiBE,SAjBF;AAAA,IAAO,OAAO,MAAM,KAAK,GAAG;AAAA,IAAG,iBAAa;AAAA,IAAC,qBAAiB;AAAA,IAA9D,UAiBE;AAAA,sBAhBA,SAAC,SAAD;AAAA,QACE;AAAA,QACA,MAAK;AAAA,QACL,MAAK;AAAA,QACL;AAAA,QACA,gBAAc;AAAA,QACd,OAAO,sBAAQ;AAAA,QACf;AAAA,QACA;AAAA,SARF,iCASA;AAAA,sBACA,SAIE,QAJF;AAAA,QAAM,OAAO,UAAU,GAAG,sBAAQ,YAAY,sBAAQ,oBAAoB,sBAAQ;AAAA,QAAlF,0BACE,SAAC,QAAD;AAAA,UACE,OAAO,UAAU,GAAG,sBAAQ,YAAY,sBAAQ,oBAAoB,sBAAQ;AAAA,WAD9E,iCAEA;AAAA,SAHF,iCAIE;AAAA,MACD,UAAU,6BAAa,SAAwC,QAAxC;AAAA,QAAM,OAAO,sBAAQ;AAAA,QAArB,UAAgC;AAAA,SAAhC,iCAAwC;AAAA;AAAA,KAhBlE,gCAiBE;AAAA;",
31
- "debugId": "9CE0D265222997F864756E2164756E21",
36
+ "mappings": "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",
37
+ "debugId": "7DA35338ECD4891D64756E2164756E21",
32
38
  "names": []
33
39
  }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Fire a named action through the global event-delegation registry.
3
+ *
4
+ * The Action* primitives (<ActionInput>, <ActionSelect>) commit by
5
+ * clicking a detached `<button data-action="…">` carrying data-action-*
6
+ * attributes; the delegated click listener routes it into the
7
+ * consumer's action registry with no extra wiring. Centralised here so
8
+ * every Action* primitive dispatches identically.
9
+ *
10
+ * Keys in `data` are camelCase and converted to dash-case attribute
11
+ * names — `actionData={{ taskId }}` becomes `data-action-task-id`.
12
+ */
13
+ export declare function dispatchAction(action: string, data: Record<string, string>): void;
@@ -0,0 +1,25 @@
1
+ /**
2
+ * polly#125: data-* / aria-* attribute passthrough for UI primitives.
3
+ *
4
+ * Primitives accept a fixed prop set. Without passthrough, a consumer
5
+ * that needs a `data-*` test hook or an `aria-*` attribute on the
6
+ * primitive's own element has to wrap it in an extra DOM node — a smell.
7
+ *
8
+ * {@link PassthroughAttrs} widens a primitive's props to accept any
9
+ * `data-*` / `aria-*` key; {@link collectPassthrough} gathers them for
10
+ * spreading onto the rendered root element. Spread the result *before*
11
+ * the primitive's own attributes so a consumer key can never override
12
+ * one the primitive sets itself (`data-polly-*`, etc.).
13
+ */
14
+ /** Index signatures letting a primitive's props accept arbitrary
15
+ * `data-*` and `aria-*` attributes. */
16
+ export type PassthroughAttrs = {
17
+ [dataAttr: `data-${string}`]: string | number | boolean | undefined;
18
+ [ariaAttr: `aria-${string}`]: string | number | boolean | undefined;
19
+ };
20
+ /**
21
+ * Collect `data-*` and `aria-*` attributes from a props object so they
22
+ * can be spread onto a primitive's root element. `undefined` values and
23
+ * non-attribute value types (functions, objects) are dropped.
24
+ */
25
+ export declare function collectPassthrough(props: Record<string, unknown>): Record<string, string | number | boolean>;