@fairfox/polly 0.25.1 → 0.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/client/index.js +2 -2
- package/dist/src/client/index.js.map +2 -2
- package/dist/src/polly-ui/Badge.d.ts +17 -0
- package/dist/src/polly-ui/Button.d.ts +47 -0
- package/dist/src/polly-ui/Checkbox.d.ts +20 -0
- package/dist/src/polly-ui/Collapsible.d.ts +17 -0
- package/dist/src/polly-ui/Dropdown.d.ts +23 -0
- package/dist/src/polly-ui/Layout.d.ts +2 -0
- package/dist/src/polly-ui/Select.d.ts +26 -0
- package/dist/src/polly-ui/Skeleton.d.ts +18 -0
- package/dist/src/polly-ui/Tabs.d.ts +24 -0
- package/dist/src/polly-ui/Toggle.d.ts +20 -0
- package/dist/src/polly-ui/index.css +541 -41
- package/dist/src/polly-ui/index.d.ts +9 -0
- package/dist/src/polly-ui/index.js +756 -128
- package/dist/src/polly-ui/index.js.map +14 -5
- package/dist/src/polly-ui/markdown.d.ts +19 -0
- package/dist/src/polly-ui/theme.css +54 -0
- package/dist/tools/verify/src/cli.js +3 -3
- package/dist/tools/verify/src/cli.js.map +1 -1
- package/package.json +17 -3
|
@@ -1,22 +1,31 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/polly-ui/ActionForm.tsx", "../src/polly-ui/ActionInput.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/
|
|
3
|
+
"sources": ["../src/polly-ui/ActionForm.tsx", "../src/polly-ui/ActionInput.tsx", "../src/polly-ui/Badge.tsx", "../src/polly-ui/Layout.tsx", "../src/polly-ui/Button.tsx", "../src/polly-ui/Checkbox.tsx", "../src/polly-ui/Collapsible.tsx", "../src/polly-ui/ConfirmDialog.tsx", "../src/polly-ui/Modal.tsx", "../src/actions/overlay.ts", "../src/polly-ui/internal/focus-trap.ts", "../src/polly-ui/OverlayRoot.tsx", "../src/polly-ui/internal/scroll-lock.ts", "../src/polly-ui/Dropdown.tsx", "../src/polly-ui/Select.tsx", "../src/polly-ui/Skeleton.tsx", "../src/polly-ui/Tabs.tsx", "../src/polly-ui/internal/input-base.ts", "../src/polly-ui/TextInput.tsx", "../src/polly-ui/Toast.tsx", "../src/actions/error.ts", "../src/polly-ui/Toggle.tsx"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"/**\n * ActionForm — wraps a native <form> with the action pattern.\n *\n * Renders <form data-action=\"{form.name}:submit\"> so the installed\n * event delegation catches the submit event and dispatches to the\n * form's auto-registered :submit handler. `aria-busy` mirrors the\n * `isSubmitting` signal so consumer styling can respond without extra\n * wiring. The form element also exposes `data-polly-action-form` for\n * stable selector hooks.\n */\n\nimport type { ComponentChildren, JSX } from \"preact\";\nimport type { FormStore } from \"../actions/form.ts\";\nimport classes from \"./ActionForm.module.css\";\n\nexport type ActionFormProps<TValues extends Record<string, string>, TStores> = {\n form: FormStore<TValues, TStores>;\n children: ComponentChildren;\n className?: string;\n id?: string;\n \"aria-label\"?: string;\n \"aria-labelledby\"?: string;\n};\n\nexport function ActionForm<TValues extends Record<string, string>, TStores>(\n props: ActionFormProps<TValues, TStores>\n): JSX.Element {\n const { form, children, className, id } = props;\n const combined = className ? `${classes[\"form\"]} ${className}` : classes[\"form\"];\n return (\n <form\n id={id}\n class={combined}\n data-polly-ui\n data-polly-action-form={form.name}\n data-action={`${form.name}:submit`}\n aria-busy={form.isSubmitting.value}\n aria-label={props[\"aria-label\"]}\n aria-labelledby={props[\"aria-labelledby\"]}\n noValidate\n >\n {children}\n </form>\n );\n}\n",
|
|
6
6
|
"/**\n * ActionInput — dual-mode view/edit input with action dispatch on commit.\n *\n * View mode renders the current value as text (optionally through a\n * caller-supplied `renderView` for markdown, rich formatting, etc.).\n * Click, Enter, or Space enters edit mode. Edit mode is a native input\n * or textarea; commit fires the configured action with `data-action-value`\n * and `data-action-field` set from FormData-shape semantics, so the\n * existing event delegation handles it with no extra wiring.\n *\n * `saveOn` picks the commit trigger:\n * \"blur\" commit when the field loses focus\n * \"enter\" commit on Enter (single-line) or Cmd/Ctrl+Enter (multi-line)\n * \"cmd-enter\" commit only on Cmd/Ctrl+Enter\n * \"explicit\" never auto-commit — caller wires a save button with data-action\n *\n * Layout-shift-free: view and edit modes share padding, border width,\n * font, and line-height so the toggle causes no reflow.\n */\n\nimport type { JSX } from \"preact\";\nimport { useCallback, useEffect, useRef, useState } from \"preact/hooks\";\nimport classes from \"./ActionInput.module.css\";\n\nexport type ActionInputSaveOn = \"blur\" | \"enter\" | \"cmd-enter\" | \"explicit\";\nexport type ActionInputVariant = \"single\" | \"multi\";\n\nexport type ActionInputProps = {\n /** Current value to render in view mode and seed the edit buffer. */\n value: string;\n /** Action name to dispatch on commit. Receives data-action-value=<new value>. */\n action: string;\n /** Commit trigger. Default: \"blur\". */\n saveOn?: ActionInputSaveOn;\n variant?: ActionInputVariant;\n placeholder?: string;\n disabled?: boolean;\n /** Extra data-action-* attributes to include at commit (e.g. entity id). */\n actionData?: Record<string, string>;\n /** Custom view renderer — receives value, returns VNode. */\n renderView?: (value: string) => JSX.Element | string;\n /** Label announced by screen readers for the edit affordance. */\n ariaLabel?: string;\n className?: string;\n};\n\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: two render branches times two variants times four saveOn triggers; branching is inherent to the primitive.\nexport function ActionInput(props: ActionInputProps): JSX.Element {\n const variant = props.variant ?? \"single\";\n const saveOn = props.saveOn ?? \"blur\";\n const [mode, setMode] = useState<\"view\" | \"edit\">(\"view\");\n const [draft, setDraft] = useState(props.value);\n const inputRef = useRef<HTMLInputElement | HTMLTextAreaElement | null>(null);\n\n useEffect(() => {\n if (mode === \"view\") setDraft(props.value);\n }, [props.value, mode]);\n\n useEffect(() => {\n if (mode === \"edit\" && inputRef.current) {\n inputRef.current.focus();\n inputRef.current.select?.();\n }\n }, [mode]);\n\n const enterEdit = useCallback(() => {\n if (props.disabled) return;\n setDraft(props.value);\n setMode(\"edit\");\n }, [props.disabled, props.value]);\n\n const commit = useCallback(\n (next: string) => {\n if (next === props.value) {\n setMode(\"view\");\n return;\n }\n const dataAttrs: Record<string, string> = {\n ...(props.actionData ?? {}),\n value: next,\n };\n const hidden = document.createElement(\"button\");\n hidden.setAttribute(\"data-action\", props.action);\n for (const [key, value] of Object.entries(dataAttrs)) {\n const dashKey = key.replace(/[A-Z]/g, (m) => `-${m.toLowerCase()}`);\n hidden.setAttribute(`data-action-${dashKey}`, value);\n }\n hidden.style.position = \"fixed\";\n hidden.style.opacity = \"0\";\n hidden.style.pointerEvents = \"none\";\n hidden.tabIndex = -1;\n document.body.appendChild(hidden);\n try {\n hidden.click();\n } finally {\n hidden.remove();\n }\n setMode(\"view\");\n },\n [props.action, props.actionData, props.value]\n );\n\n const cancel = useCallback(() => {\n setDraft(props.value);\n setMode(\"view\");\n }, [props.value]);\n\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: keyboard handler encodes the saveOn × variant matrix.\n const onKeyDown = (event: JSX.TargetedKeyboardEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n if (event.key === \"Escape\") {\n event.preventDefault();\n cancel();\n return;\n }\n if (event.key === \"Enter\") {\n const cmd = event.metaKey || event.ctrlKey;\n if (saveOn === \"enter\" && variant === \"single\") {\n event.preventDefault();\n commit(draft);\n } else if ((saveOn === \"enter\" && variant === \"multi\" && cmd) || saveOn === \"cmd-enter\") {\n if (cmd) {\n event.preventDefault();\n commit(draft);\n }\n }\n }\n };\n\n const className = props.className ? `${classes[\"root\"]} ${props.className}` : classes[\"root\"];\n\n if (mode === \"view\") {\n const rendered = props.renderView ? props.renderView(props.value) : props.value;\n const isEmpty = props.value.length === 0;\n return (\n // biome-ignore lint/a11y/useSemanticElements: <button> would swallow text selection and add default styling; div with role=button is the inline-edit idiom.\n <div\n class={`${className} ${classes[\"view\"]}`}\n data-polly-ui\n data-polly-action-input\n data-polly-interactive\n data-state={isEmpty ? \"empty\" : \"filled\"}\n data-variant={variant}\n tabIndex={props.disabled ? -1 : 0}\n role=\"button\"\n aria-label={props.ariaLabel ?? \"Edit\"}\n aria-disabled={props.disabled ? \"true\" : undefined}\n onClick={enterEdit}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n enterEdit();\n }\n }}\n >\n {isEmpty && props.placeholder ? (\n <span class={classes[\"placeholder\"]}>{props.placeholder}</span>\n ) : (\n rendered\n )}\n </div>\n );\n }\n\n const common = {\n class: `${classes[\"edit\"]} ${classes[\"root\"]}`,\n \"data-polly-ui\": true,\n \"data-polly-action-input\": true,\n \"data-state\": \"editing\",\n \"data-variant\": variant,\n placeholder: props.placeholder,\n value: draft,\n onInput: (e: JSX.TargetedEvent<HTMLInputElement | HTMLTextAreaElement>) =>\n setDraft(e.currentTarget.value),\n onBlur: () => {\n if (saveOn === \"blur\") commit(draft);\n else cancel();\n },\n onKeyDown,\n \"aria-label\": props.ariaLabel ?? \"Edit\",\n disabled: props.disabled,\n };\n\n if (variant === \"multi\") {\n return (\n <textarea\n ref={(el) => {\n inputRef.current = el;\n }}\n {...(common as unknown as JSX.HTMLAttributes<HTMLTextAreaElement>)}\n />\n );\n }\n return (\n <input\n ref={(el) => {\n inputRef.current = el;\n }}\n type=\"text\"\n {...(common as unknown as JSX.HTMLAttributes<HTMLInputElement>)}\n />\n );\n}\n",
|
|
7
|
+
"/**\n * Badge — small inline status chip.\n *\n * Renders as a passive <span> with tinted background and on-tint text\n * from the `--polly-status-*` token family. The default variant uses\n * surface-sunken + muted text for a neutral pill. Consumers style\n * placement via className; the primitive owns size, shape, and colour.\n */\n\nimport type { ComponentChildren, JSX } from \"preact\";\nimport classes from \"./Badge.module.css\";\n\nexport type BadgeVariant = \"default\" | \"info\" | \"success\" | \"warning\" | \"danger\";\n\nexport type BadgeProps = {\n children: ComponentChildren;\n variant?: BadgeVariant;\n className?: string;\n id?: string;\n};\n\nfunction variantClass(variant: BadgeVariant): string | undefined {\n if (variant === \"info\") return classes[\"info\"];\n if (variant === \"success\") return classes[\"success\"];\n if (variant === \"warning\") return classes[\"warning\"];\n if (variant === \"danger\") return classes[\"danger\"];\n return undefined;\n}\n\nexport function Badge(props: BadgeProps): JSX.Element {\n const { children, variant = \"default\", className, id } = props;\n const parts = [classes[\"badge\"]];\n const v = variantClass(variant);\n if (v) parts.push(v);\n if (className) parts.push(className);\n return (\n <span id={id} class={parts.join(\" \")} data-polly-ui data-polly-badge={variant}>\n {children}\n </span>\n );\n}\n",
|
|
8
|
+
"/**\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 /** 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 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 (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 * Button — interactive control with tier, semantic colour, and size.\n *\n * Renders as a <button> by default; switches to an <a> when given an\n * `href`. Tier sets visual importance (primary/secondary/tertiary),\n * color overlays semantic meaning (info/success/warning/danger),\n * size picks the padding + font scale (small/normal/large). Icon +\n * label are arranged with a nested inline <Layout>.\n *\n * Action wiring is declared via data-* attributes consumed by the\n * global event delegator in @fairfox/polly/actions — Button does not\n * accept an onClick prop.\n */\n\nimport type { ComponentChildren, JSX, VNode } from \"preact\";\nimport classes from \"./Button.module.css\";\nimport { Layout } from \"./Layout.tsx\";\n\nexport type ButtonTier = \"primary\" | \"secondary\" | \"tertiary\";\nexport type ButtonColor = \"default\" | \"info\" | \"success\" | \"warning\" | \"danger\";\nexport type ButtonSize = \"small\" | \"normal\" | \"large\";\n\ntype BaseButtonProps = {\n id?: string;\n tier?: ButtonTier;\n color?: ButtonColor;\n size?: ButtonSize;\n disabled?: boolean;\n fullWidth?: boolean;\n circle?: boolean;\n className?: string;\n title?: string;\n icon?: VNode;\n label: ComponentChildren;\n \"data-action\"?: string;\n \"aria-label\"?: string;\n};\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\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 >\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 >\n {content}\n </button>\n );\n}\n",
|
|
10
|
+
"/**\n * Checkbox — native checkbox wrapped in a label.\n *\n * Pass a plain boolean for controlled use (caller listens elsewhere),\n * or a Signal<boolean> to have the primitive bind its own change\n * listener and mutate the signal directly. The label wraps the input\n * so clicks anywhere in the target area toggle it.\n */\n\nimport type { Signal } from \"@preact/signals\";\nimport type { JSX } from \"preact\";\nimport classes from \"./Checkbox.module.css\";\n\nexport type CheckboxProps = {\n checked?: boolean | Signal<boolean>;\n defaultChecked?: boolean;\n name?: string;\n disabled?: boolean;\n label?: string;\n className?: string;\n id?: string;\n};\n\nfunction isSignal(value: unknown): value is Signal<boolean> {\n return typeof value === \"object\" && value !== null && \"value\" in value && \"peek\" in value;\n}\n\nexport function Checkbox(props: CheckboxProps): JSX.Element {\n const { checked, defaultChecked, name, disabled = false, label, className, id } = props;\n\n const handleChange = (e: JSX.TargetedEvent<HTMLInputElement>): void => {\n if (isSignal(checked)) {\n checked.value = e.currentTarget.checked;\n }\n };\n\n const checkedValue = isSignal(checked) ? checked.value : checked;\n\n const parts = [classes[\"checkbox\"]];\n if (disabled) parts.push(classes[\"disabled\"] ?? \"\");\n if (className) parts.push(className);\n\n return (\n <label class={parts.filter(Boolean).join(\" \")} data-polly-ui data-polly-checkbox>\n <input\n id={id}\n type=\"checkbox\"\n class={classes[\"input\"]}\n checked={checkedValue}\n defaultChecked={defaultChecked}\n name={name}\n disabled={disabled}\n onChange={handleChange}\n />\n {label !== undefined && <span class={classes[\"label\"]}>{label}</span>}\n </label>\n );\n}\n",
|
|
11
|
+
"/**\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",
|
|
7
12
|
"/**\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",
|
|
8
13
|
"/**\n * Modal — compound dialog with focus trap, Escape handling, portal,\n * and overlay-stack integration.\n *\n * Root takes a `when` signal (or boolean). When truthy the content mounts\n * into the OverlayRoot portal, focus moves inside, Tab is trapped, Escape\n * fires `data-action=\"modal:close\"` (or the overlay registry's onClose\n * callback), and the body scroll locks.\n */\n\nimport type { ReadonlySignal } from \"@preact/signals\";\nimport { type ComponentChildren, createContext } from \"preact\";\nimport { createPortal } from \"preact/compat\";\nimport { useContext, useEffect, useId, useRef, useState } from \"preact/hooks\";\nimport { popOverlay, pushOverlay } from \"../actions/overlay.ts\";\nimport { installFocusTrap } from \"./internal/focus-trap.ts\";\nimport classes from \"./Modal.module.css\";\nimport { getOverlayRootNode } from \"./OverlayRoot.tsx\";\n\ntype ModalContext = {\n id: string;\n titleId: string;\n descId: string;\n close: () => void;\n};\n\nconst Ctx = createContext<ModalContext | null>(null);\n\nfunction useModal(): ModalContext {\n const ctx = useContext(Ctx);\n if (!ctx) throw new Error(\"Modal sub-components must render inside <Modal.Root>\");\n return ctx;\n}\n\ntype RootProps = {\n when: ReadonlySignal<boolean> | boolean;\n onClose?: () => void;\n children: ComponentChildren;\n /** Accessible label source: \"title\" uses the <Modal.Title> id, or pass an explicit label. */\n \"aria-label\"?: string;\n};\n\nfunction Root({ when, onClose, children, \"aria-label\": ariaLabel }: RootProps) {\n const id = useId();\n const titleId = `${id}-title`;\n const descId = `${id}-desc`;\n const mountRef = useRef<HTMLDivElement | null>(null);\n const [portalNode, setPortalNode] = useState<HTMLElement | null>(null);\n\n const isOpen = typeof when === \"boolean\" ? when : when.value;\n\n useEffect(() => {\n if (!isOpen) {\n setPortalNode(null);\n return;\n }\n setPortalNode(getOverlayRootNode());\n }, [isOpen]);\n\n useEffect(() => {\n if (!isOpen || !portalNode) return;\n const entry = { id, onClose };\n pushOverlay(entry);\n const el = mountRef.current;\n const cleanup = el\n ? installFocusTrap(el)\n : () => {\n /* no ref yet */\n };\n return () => {\n cleanup();\n popOverlay(id);\n };\n }, [isOpen, portalNode, id, onClose]);\n\n if (!isOpen || !portalNode) return null;\n\n const close = () => {\n onClose?.();\n };\n\n const ctx: ModalContext = { id, titleId, descId, close };\n\n const content = (\n <Ctx.Provider value={ctx}>\n <div\n ref={mountRef}\n class={classes[\"container\"]}\n data-polly-ui\n data-polly-modal-content\n data-overlay-id={id}\n data-state=\"open\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={ariaLabel ? undefined : titleId}\n aria-label={ariaLabel}\n aria-describedby={descId}\n >\n {children}\n </div>\n </Ctx.Provider>\n );\n\n return createPortal(content, portalNode);\n}\n\nfunction Backdrop() {\n const { close } = useModal();\n return (\n <div class={classes[\"backdrop\"]} data-polly-modal-backdrop onClick={close} aria-hidden=\"true\" />\n );\n}\n\nfunction Content({ children }: { children: ComponentChildren }) {\n return (\n <div class={classes[\"surface\"]} data-polly-modal-surface>\n {children}\n </div>\n );\n}\n\nfunction Header({ children }: { children: ComponentChildren }) {\n return (\n <header class={classes[\"header\"]} data-polly-modal-header>\n {children}\n </header>\n );\n}\n\nfunction Title({ children }: { children: ComponentChildren }) {\n const { titleId } = useModal();\n return (\n <h2 id={titleId} class={classes[\"title\"]} data-polly-modal-title>\n {children}\n </h2>\n );\n}\n\nfunction Body({ children }: { children: ComponentChildren }) {\n const { descId } = useModal();\n return (\n <div id={descId} class={classes[\"body\"]} data-polly-modal-body>\n {children}\n </div>\n );\n}\n\nfunction Footer({ children }: { children: ComponentChildren }) {\n return (\n <footer class={classes[\"footer\"]} data-polly-modal-footer>\n {children}\n </footer>\n );\n}\n\ntype CloseProps = {\n children: ComponentChildren;\n /** Fire a registered data-action instead of calling the onClose callback. */\n action?: string;\n};\n\nfunction Close({ children, action }: CloseProps) {\n const { close } = useModal();\n if (action) {\n return (\n <button\n type=\"button\"\n class={classes[\"close\"]}\n data-polly-ui\n data-polly-interactive\n data-polly-modal-close\n data-action={action}\n >\n {children}\n </button>\n );\n }\n return (\n <button\n type=\"button\"\n class={classes[\"close\"]}\n data-polly-ui\n data-polly-interactive\n data-polly-modal-close\n onClick={close}\n >\n {children}\n </button>\n );\n}\n\nexport const Modal = {\n Root,\n Backdrop,\n Content,\n Header,\n Title,\n Body,\n Footer,\n Close,\n};\n",
|
|
9
14
|
"/**\n * Overlay registry.\n *\n * Tracks the stack of open overlays (modals, popovers, confirm dialogs) so\n * Escape can close the topmost and `data-overlay-id`-based DOM scans have\n * a mirror in memory. Each entry stores an id plus an optional close\n * callback; `closeTopOverlay` invokes the callback and pops the entry.\n */\n\nimport { signal } from \"@preact/signals\";\n\nexport type OverlayEntry = {\n id: string;\n onClose?: () => void;\n};\n\nconst stack = signal<OverlayEntry[]>([]);\n\n/** Current overlay stack as a read-only snapshot. */\nexport function overlayStack(): readonly OverlayEntry[] {\n return stack.value;\n}\n\n/** Is any overlay currently open? */\nexport function hasOpenOverlay(): boolean {\n return stack.value.length > 0;\n}\n\n/** The top of the stack, or undefined if empty. */\nexport function topOverlay(): OverlayEntry | undefined {\n const s = stack.value;\n return s[s.length - 1];\n}\n\n/** Push an overlay onto the stack. Returns the popped entry when closed. */\nexport function pushOverlay(entry: OverlayEntry): void {\n stack.value = [...stack.value, entry];\n}\n\n/** Pop a specific overlay by id (or the top if no id given). */\nexport function popOverlay(id?: string): OverlayEntry | undefined {\n const s = stack.value;\n if (s.length === 0) return undefined;\n if (id === undefined) {\n const top = s[s.length - 1];\n stack.value = s.slice(0, -1);\n return top;\n }\n const idx = s.findIndex((e) => e.id === id);\n if (idx === -1) return undefined;\n const entry = s[idx];\n stack.value = [...s.slice(0, idx), ...s.slice(idx + 1)];\n return entry;\n}\n\n/** Close the top overlay by calling its onClose and popping it. */\nexport function closeTopOverlay(): OverlayEntry | undefined {\n const top = topOverlay();\n if (!top) return undefined;\n top.onClose?.();\n return popOverlay(top.id);\n}\n\n/** Reset the stack. Intended for tests. */\nexport function resetOverlayStack(): void {\n stack.value = [];\n}\n",
|
|
10
15
|
"/**\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",
|
|
11
16
|
"/**\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",
|
|
12
17
|
"/**\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",
|
|
13
|
-
"/**\n *
|
|
18
|
+
"/**\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",
|
|
19
|
+
"/**\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",
|
|
20
|
+
"/**\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",
|
|
21
|
+
"/**\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",
|
|
14
22
|
"/**\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",
|
|
15
23
|
"/**\n * TextInput — passive, signal-friendly native input wrapper.\n *\n * Designed to live inside <ActionForm>. Pass a plain string for\n * uncontrolled mode (FormData-on-submit picks up the value) or a\n * Signal<string> for controlled mode. Either way, a11y attributes are\n * wired by the shared input-base, the stable `[data-polly-input]` hook\n * is applied for styling, and `invalid` flips `aria-invalid` and\n * `data-state=\"invalid\"` for consumer selectors.\n */\n\nimport type { Signal } from \"@preact/signals\";\nimport type { JSX } from \"preact\";\nimport { buildInputA11y } from \"./internal/input-base.ts\";\nimport classes from \"./TextInput.module.css\";\n\ntype Variant = \"single\" | \"multi\";\n\nexport type TextInputProps = {\n name: string;\n /** Signal<string> for controlled, string for uncontrolled default. */\n value?: Signal<string> | string;\n variant?: Variant;\n placeholder?: string;\n invalid?: boolean;\n required?: boolean;\n disabled?: boolean;\n readOnly?: boolean;\n id?: string;\n describedBy?: string;\n rows?: number;\n autoFocus?: boolean;\n className?: string;\n};\n\nfunction isSignal<T>(v: Signal<T> | T | undefined): v is Signal<T> {\n return typeof v === \"object\" && v !== null && \"value\" in v && \"peek\" in (v as object);\n}\n\nexport function TextInput(props: TextInputProps): JSX.Element {\n const variant = props.variant ?? \"single\";\n const a11y = buildInputA11y({\n name: props.name,\n id: props.id,\n required: props.required,\n invalid: props.invalid,\n describedBy: props.describedBy,\n placeholder: props.placeholder,\n disabled: props.disabled,\n readOnly: props.readOnly,\n });\n\n const controlled = isSignal(props.value);\n const stringValue = controlled ? (props.value as Signal<string>).value : undefined;\n const defaultValue = controlled ? undefined : ((props.value as string | undefined) ?? \"\");\n\n const className = props.className ? `${classes[\"input\"]} ${props.className}` : classes[\"input\"];\n\n if (variant === \"multi\") {\n return (\n <textarea\n {...(a11y as unknown as JSX.HTMLAttributes<HTMLTextAreaElement>)}\n class={className}\n data-polly-input-variant=\"multi\"\n rows={props.rows}\n // biome-ignore lint/a11y/noAutofocus: opt-in prop — caller requests autofocus explicitly (e.g. form opens to this field).\n autoFocus={props.autoFocus}\n value={stringValue}\n defaultValue={defaultValue}\n onInput={(e) => {\n if (controlled) {\n (props.value as Signal<string>).value = e.currentTarget.value;\n }\n }}\n />\n );\n }\n\n return (\n <input\n {...(a11y as unknown as JSX.HTMLAttributes<HTMLInputElement>)}\n type=\"text\"\n class={className}\n data-polly-input-variant=\"single\"\n // biome-ignore lint/a11y/noAutofocus: opt-in prop — caller requests autofocus explicitly (e.g. form opens to this field).\n autoFocus={props.autoFocus}\n value={stringValue}\n defaultValue={defaultValue}\n onInput={(e) => {\n if (controlled) {\n (props.value as Signal<string>).value = e.currentTarget.value;\n }\n }}\n />\n );\n}\n",
|
|
16
24
|
"/**\n * Toast — consumer-facing surface for the global errorState.\n *\n * Renders every entry of the `errorState` signal into a viewport mounted\n * inside OverlayRoot. `aria-live` is polite for info/warning and\n * assertive for error severity. Each item auto-dismisses after\n * `autoDismissMs` unless the user hovers the viewport. Clicking a\n * toast or its close button removes that single entry.\n */\n\nimport type { JSX } from \"preact\";\nimport { createPortal } from \"preact/compat\";\nimport { useEffect, useRef, useState } from \"preact/hooks\";\nimport { clearError, type ErrorEntry, errorState } from \"../actions/error.ts\";\nimport { getOverlayRootNode } from \"./OverlayRoot.tsx\";\nimport classes from \"./Toast.module.css\";\n\nexport type ToastViewportProps = {\n autoDismissMs?: number;\n className?: string;\n};\n\nfunction Viewport(props: ToastViewportProps): JSX.Element | null {\n const autoDismissMs = props.autoDismissMs ?? 5000;\n const [portalNode, setPortalNode] = useState<HTMLElement | null>(null);\n const [paused, setPaused] = useState(false);\n const entries = errorState.value;\n\n useEffect(() => {\n setPortalNode(getOverlayRootNode());\n }, []);\n\n useEffect(() => {\n if (paused || entries.length === 0) return;\n const head = entries[0];\n if (!head) return;\n const timer = window.setTimeout(() => {\n clearError(head.id);\n }, autoDismissMs);\n return () => window.clearTimeout(timer);\n }, [paused, entries, autoDismissMs]);\n\n if (!portalNode) return null;\n\n const content = (\n // biome-ignore lint/a11y/noStaticElementInteractions: viewport pauses auto-dismiss on hover; it is a container, not an interactive control itself.\n <div\n class={`${classes[\"viewport\"]} ${props.className ?? \"\"}`.trim()}\n data-polly-ui\n data-polly-toast-viewport\n onMouseEnter={() => setPaused(true)}\n onMouseLeave={() => setPaused(false)}\n >\n {entries.map((entry) => (\n <ToastItem key={entry.id} entry={entry} />\n ))}\n </div>\n );\n return createPortal(content, portalNode);\n}\n\nfunction ToastItem({ entry }: { entry: ErrorEntry }): JSX.Element {\n const liveness = entry.severity === \"error\" ? \"assertive\" : \"polite\";\n const ref = useRef<HTMLDivElement>(null);\n return (\n <div\n ref={ref}\n class={classes[\"item\"]}\n data-polly-ui\n data-polly-toast-item\n data-severity={entry.severity}\n role={entry.severity === \"error\" ? \"alert\" : \"status\"}\n aria-live={liveness}\n >\n <span class={classes[\"message\"]}>{entry.message}</span>\n <button\n type=\"button\"\n class={classes[\"close\"]}\n data-polly-ui\n data-polly-interactive\n data-polly-toast-close\n onClick={() => clearError(entry.id)}\n aria-label=\"Dismiss\"\n >\n ×\n </button>\n </div>\n );\n}\n\nexport const Toast = { Viewport };\n",
|
|
17
|
-
"/**\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"
|
|
25
|
+
"/**\n * Global error surface for action handlers.\n *\n * Actions that fail set the errorState signal via `submitError`; a `<Toast>`\n * component consumes that signal and renders a dismissable message. Handlers\n * that catch expected failures (validation, quota) may call `setError` directly.\n */\n\nimport { signal } from \"@preact/signals\";\n\nexport type ErrorSeverity = \"error\" | \"warning\" | \"info\";\n\nexport type ErrorEntry = {\n id: string;\n message: string;\n severity: ErrorSeverity;\n action?: string;\n createdAt: number;\n};\n\nexport const errorState = signal<ErrorEntry[]>([]);\n\nlet nextId = 0;\nfunction allocId(): string {\n nextId += 1;\n return `polly-err-${nextId}`;\n}\n\nexport function setError(\n message: string,\n opts: { severity?: ErrorSeverity; action?: string } = {}\n): string {\n const entry: ErrorEntry = {\n id: allocId(),\n message,\n severity: opts.severity ?? \"error\",\n action: opts.action,\n createdAt: Date.now(),\n };\n errorState.value = [...errorState.value, entry];\n return entry.id;\n}\n\nexport function clearError(id?: string): void {\n if (id === undefined) {\n errorState.value = [];\n return;\n }\n errorState.value = errorState.value.filter((e) => e.id !== id);\n}\n\n/**\n * Convenience wrapper for an action's catch block.\n * Logs the action name + error and surfaces a user-visible message.\n */\nexport function submitError(action: string, err: unknown): string {\n const message = err instanceof Error ? err.message : String(err);\n return setError(message, { action, severity: \"error\" });\n}\n",
|
|
26
|
+
"/**\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"
|
|
18
27
|
],
|
|
19
|
-
"mappings": "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",
|
|
20
|
-
"debugId": "
|
|
28
|
+
"mappings": "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",
|
|
29
|
+
"debugId": "E8BC12017CFEA66464756E2164756E21",
|
|
21
30
|
"names": []
|
|
22
31
|
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Markdown rendering for ActionInput's view mode.
|
|
3
|
+
*
|
|
4
|
+
* Ship a ready-made `renderMarkdown` that consumers pass to the
|
|
5
|
+
* `renderView` prop of <ActionInput>. Parses the value with `marked`
|
|
6
|
+
* and sanitises the HTML with `DOMPurify`, then inlines the result via
|
|
7
|
+
* `dangerouslySetInnerHTML`. Both libraries are optional peer deps of
|
|
8
|
+
* @fairfox/polly — they only ship in the bundles of apps that import
|
|
9
|
+
* this subpath.
|
|
10
|
+
*
|
|
11
|
+
* ```tsx
|
|
12
|
+
* import { ActionInput } from "@fairfox/polly/ui";
|
|
13
|
+
* import { renderMarkdown } from "@fairfox/polly/ui/markdown";
|
|
14
|
+
*
|
|
15
|
+
* <ActionInput value={note.body} action="note:update" variant="multi" renderView={renderMarkdown} />
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
import type { JSX } from "preact";
|
|
19
|
+
export declare function renderMarkdown(value: string): JSX.Element;
|
|
@@ -30,12 +30,25 @@
|
|
|
30
30
|
/* Accent */
|
|
31
31
|
--polly-accent: #2451b5;
|
|
32
32
|
--polly-accent-contrast: #ffffff;
|
|
33
|
+
--polly-accent-hover: #1b3e8c;
|
|
33
34
|
|
|
34
35
|
/* Feedback */
|
|
35
36
|
--polly-danger: #b3261e;
|
|
36
37
|
--polly-danger-contrast: #ffffff;
|
|
37
38
|
--polly-success: #1f6f43;
|
|
39
|
+
--polly-success-contrast: #ffffff;
|
|
38
40
|
--polly-warning: #8a5a00;
|
|
41
|
+
--polly-warning-contrast: #ffffff;
|
|
42
|
+
|
|
43
|
+
/* Status chips — tinted background / on-tint text for Badge, severity Toast, etc. */
|
|
44
|
+
--polly-status-info-bg: #eff6ff;
|
|
45
|
+
--polly-status-info-text: #1e40af;
|
|
46
|
+
--polly-status-success-bg: #f0fdf4;
|
|
47
|
+
--polly-status-success-text: #166534;
|
|
48
|
+
--polly-status-warning-bg: #fefce8;
|
|
49
|
+
--polly-status-warning-text: #854d0e;
|
|
50
|
+
--polly-status-danger-bg: #fef2f2;
|
|
51
|
+
--polly-status-danger-text: #991b1b;
|
|
39
52
|
|
|
40
53
|
/* Focus */
|
|
41
54
|
--polly-focus-ring: #2451b5;
|
|
@@ -51,6 +64,12 @@
|
|
|
51
64
|
--polly-radius-sm: 4px;
|
|
52
65
|
--polly-radius-md: 8px;
|
|
53
66
|
--polly-radius-lg: 12px;
|
|
67
|
+
--polly-radius-full: 9999px;
|
|
68
|
+
|
|
69
|
+
/* Control heights — used by Button, Input, Select. */
|
|
70
|
+
--polly-control-height-sm: 1.75rem;
|
|
71
|
+
--polly-control-height-md: 2.25rem;
|
|
72
|
+
--polly-control-height-lg: 2.75rem;
|
|
54
73
|
|
|
55
74
|
/* Motion */
|
|
56
75
|
--polly-motion-fast: 120ms;
|
|
@@ -62,6 +81,7 @@
|
|
|
62
81
|
"Helvetica Neue", Arial, sans-serif;
|
|
63
82
|
--polly-font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco,
|
|
64
83
|
"Cascadia Mono", monospace;
|
|
84
|
+
--polly-text-xs: 0.75em;
|
|
65
85
|
--polly-text-sm: 0.875em;
|
|
66
86
|
--polly-text-md: 1em;
|
|
67
87
|
--polly-text-lg: 1.125em;
|
|
@@ -106,11 +126,23 @@
|
|
|
106
126
|
|
|
107
127
|
--polly-accent: #6c95ff;
|
|
108
128
|
--polly-accent-contrast: #0b1020;
|
|
129
|
+
--polly-accent-hover: #8badff;
|
|
109
130
|
|
|
110
131
|
--polly-danger: #ff8680;
|
|
111
132
|
--polly-danger-contrast: #0b1020;
|
|
112
133
|
--polly-success: #63c18a;
|
|
134
|
+
--polly-success-contrast: #0b1020;
|
|
113
135
|
--polly-warning: #f2c269;
|
|
136
|
+
--polly-warning-contrast: #0b1020;
|
|
137
|
+
|
|
138
|
+
--polly-status-info-bg: #1e3a5f;
|
|
139
|
+
--polly-status-info-text: #93c5fd;
|
|
140
|
+
--polly-status-success-bg: #14532d;
|
|
141
|
+
--polly-status-success-text: #86efac;
|
|
142
|
+
--polly-status-warning-bg: #713f12;
|
|
143
|
+
--polly-status-warning-text: #fde68a;
|
|
144
|
+
--polly-status-danger-bg: #7f1d1d;
|
|
145
|
+
--polly-status-danger-text: #fecaca;
|
|
114
146
|
|
|
115
147
|
--polly-focus-ring: #6c95ff;
|
|
116
148
|
|
|
@@ -131,10 +163,21 @@
|
|
|
131
163
|
--polly-text-muted: #5a5f67;
|
|
132
164
|
--polly-accent: #2451b5;
|
|
133
165
|
--polly-accent-contrast: #ffffff;
|
|
166
|
+
--polly-accent-hover: #1b3e8c;
|
|
134
167
|
--polly-danger: #b3261e;
|
|
135
168
|
--polly-danger-contrast: #ffffff;
|
|
136
169
|
--polly-success: #1f6f43;
|
|
170
|
+
--polly-success-contrast: #ffffff;
|
|
137
171
|
--polly-warning: #8a5a00;
|
|
172
|
+
--polly-warning-contrast: #ffffff;
|
|
173
|
+
--polly-status-info-bg: #eff6ff;
|
|
174
|
+
--polly-status-info-text: #1e40af;
|
|
175
|
+
--polly-status-success-bg: #f0fdf4;
|
|
176
|
+
--polly-status-success-text: #166534;
|
|
177
|
+
--polly-status-warning-bg: #fefce8;
|
|
178
|
+
--polly-status-warning-text: #854d0e;
|
|
179
|
+
--polly-status-danger-bg: #fef2f2;
|
|
180
|
+
--polly-status-danger-text: #991b1b;
|
|
138
181
|
--polly-focus-ring: #2451b5;
|
|
139
182
|
--polly-shadow-sm: 0 1px 2px rgb(0 0 0 / 0.06);
|
|
140
183
|
--polly-shadow-md: 0 4px 12px rgb(0 0 0 / 0.1);
|
|
@@ -151,10 +194,21 @@
|
|
|
151
194
|
--polly-text-muted: #a7adb5;
|
|
152
195
|
--polly-accent: #6c95ff;
|
|
153
196
|
--polly-accent-contrast: #0b1020;
|
|
197
|
+
--polly-accent-hover: #8badff;
|
|
154
198
|
--polly-danger: #ff8680;
|
|
155
199
|
--polly-danger-contrast: #0b1020;
|
|
156
200
|
--polly-success: #63c18a;
|
|
201
|
+
--polly-success-contrast: #0b1020;
|
|
157
202
|
--polly-warning: #f2c269;
|
|
203
|
+
--polly-warning-contrast: #0b1020;
|
|
204
|
+
--polly-status-info-bg: #1e3a5f;
|
|
205
|
+
--polly-status-info-text: #93c5fd;
|
|
206
|
+
--polly-status-success-bg: #14532d;
|
|
207
|
+
--polly-status-success-text: #86efac;
|
|
208
|
+
--polly-status-warning-bg: #713f12;
|
|
209
|
+
--polly-status-warning-text: #fde68a;
|
|
210
|
+
--polly-status-danger-bg: #7f1d1d;
|
|
211
|
+
--polly-status-danger-text: #fecaca;
|
|
158
212
|
--polly-focus-ring: #6c95ff;
|
|
159
213
|
--polly-shadow-sm: 0 1px 2px rgb(0 0 0 / 0.5);
|
|
160
214
|
--polly-shadow-md: 0 4px 12px rgb(0 0 0 / 0.6);
|
|
@@ -2536,7 +2536,7 @@ class DockerRunner {
|
|
|
2536
2536
|
});
|
|
2537
2537
|
}
|
|
2538
2538
|
}
|
|
2539
|
-
var __dirname = "/Users/AJT/projects/polly
|
|
2539
|
+
var __dirname = "/Users/AJT/projects/polly/tools/verify/src/runner";
|
|
2540
2540
|
var init_docker = () => {};
|
|
2541
2541
|
|
|
2542
2542
|
// tools/verify/src/cli.ts
|
|
@@ -6905,7 +6905,7 @@ async function analyzeCodebase(options) {
|
|
|
6905
6905
|
return extractor.analyzeCodebase(options.stateFilePath);
|
|
6906
6906
|
}
|
|
6907
6907
|
// tools/verify/src/cli.ts
|
|
6908
|
-
var __dirname = "/Users/AJT/projects/polly
|
|
6908
|
+
var __dirname = "/Users/AJT/projects/polly/tools/verify/src";
|
|
6909
6909
|
var COLORS = {
|
|
6910
6910
|
reset: "\x1B[0m",
|
|
6911
6911
|
red: "\x1B[31m",
|
|
@@ -7593,4 +7593,4 @@ main().catch((error) => {
|
|
|
7593
7593
|
process.exit(1);
|
|
7594
7594
|
});
|
|
7595
7595
|
|
|
7596
|
-
//# debugId=
|
|
7596
|
+
//# debugId=D76A624F754502DE64756E2164756E21
|