@exponential-at/ui-solid 0.0.0-stage → 0.1.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/LICENSE +201 -0
- package/NOTICE +54 -0
- package/README.md +135 -2
- package/dist/chunks/image-loading-status-DZOoj4RQ.js +1724 -0
- package/dist/chunks/image-loading-status-DZOoj4RQ.js.map +1 -0
- package/dist/exponential-ui-solid.css +2 -0
- package/dist/index.js +12305 -0
- package/dist/index.js.map +1 -0
- package/dist/primitives.js +8439 -0
- package/dist/primitives.js.map +1 -0
- package/dist/types/behaviors/bubble-input.d.ts +35 -0
- package/dist/types/behaviors/collapsible.d.ts +15 -0
- package/dist/types/behaviors/dialog.d.ts +116 -0
- package/dist/types/behaviors/dismissable-layer.d.ts +48 -0
- package/dist/types/behaviors/drag-to-dismiss.d.ts +10 -0
- package/dist/types/behaviors/element-size.d.ts +7 -0
- package/dist/types/behaviors/focus-guards.d.ts +4 -0
- package/dist/types/behaviors/focus-scope.d.ts +20 -0
- package/dist/types/behaviors/grace-area.d.ts +10 -0
- package/dist/types/behaviors/image-loading-status.d.ts +4 -0
- package/dist/types/behaviors/index.d.ts +23 -0
- package/dist/types/behaviors/listbox.d.ts +44 -0
- package/dist/types/behaviors/menu.d.ts +95 -0
- package/dist/types/behaviors/modal.d.ts +3 -0
- package/dist/types/behaviors/picker-popover.d.ts +22 -0
- package/dist/types/behaviors/popper.d.ts +49 -0
- package/dist/types/behaviors/portal.d.ts +11 -0
- package/dist/types/behaviors/presence.d.ts +7 -0
- package/dist/types/behaviors/roving-focus.d.ts +30 -0
- package/dist/types/behaviors/scroll-lock.d.ts +4 -0
- package/dist/types/behaviors/search-match.d.ts +6 -0
- package/dist/types/behaviors/slider.d.ts +8 -0
- package/dist/types/behaviors/style-writer.d.ts +8 -0
- package/dist/types/behaviors/typeahead.d.ts +11 -0
- package/dist/types/behaviors/visually-hidden.d.ts +6 -0
- package/dist/types/bind-attrs.d.ts +4 -0
- package/dist/types/context.d.ts +74 -0
- package/dist/types/create-surface.d.ts +58 -0
- package/dist/types/extensions.d.ts +25 -0
- package/dist/types/form.d.ts +63 -0
- package/dist/types/host-surface.d.ts +33 -0
- package/dist/types/host.d.ts +37 -0
- package/dist/types/icons.d.ts +56 -0
- package/dist/types/index.d.ts +39 -0
- package/dist/types/inputs.d.ts +27 -0
- package/dist/types/list.d.ts +33 -0
- package/dist/types/markdown.d.ts +10 -0
- package/dist/types/media.d.ts +16 -0
- package/dist/types/natives/actions.d.ts +13 -0
- package/dist/types/natives/bound.d.ts +3 -0
- package/dist/types/natives/chart.d.ts +4 -0
- package/dist/types/natives/chips.d.ts +7 -0
- package/dist/types/natives/choice-tiles.d.ts +4 -0
- package/dist/types/natives/code.d.ts +4 -0
- package/dist/types/natives/dates.d.ts +30 -0
- package/dist/types/natives/feedback.d.ts +19 -0
- package/dist/types/natives/index.d.ts +6 -0
- package/dist/types/natives/inputs.d.ts +20 -0
- package/dist/types/natives/layout.d.ts +12 -0
- package/dist/types/natives/media.d.ts +14 -0
- package/dist/types/natives/nav.d.ts +14 -0
- package/dist/types/natives/overlays.d.ts +19 -0
- package/dist/types/natives/owners.d.ts +2 -0
- package/dist/types/natives/pending.d.ts +3 -0
- package/dist/types/natives/resizable.d.ts +4 -0
- package/dist/types/natives/search.d.ts +45 -0
- package/dist/types/natives/select.d.ts +10 -0
- package/dist/types/natives/shared.d.ts +50 -0
- package/dist/types/natives/table.d.ts +7 -0
- package/dist/types/natives/text.d.ts +5 -0
- package/dist/types/node-view.d.ts +83 -0
- package/dist/types/platform.d.ts +12 -0
- package/dist/types/primitives/alert-dialog.d.ts +24 -0
- package/dist/types/primitives/alert.d.ts +6 -0
- package/dist/types/primitives/avatar-color.d.ts +1 -0
- package/dist/types/primitives/avatar.d.ts +12 -0
- package/dist/types/primitives/badge.d.ts +8 -0
- package/dist/types/primitives/breadcrumb.d.ts +12 -0
- package/dist/types/primitives/button.d.ts +12 -0
- package/dist/types/primitives/calendar.d.ts +188 -0
- package/dist/types/primitives/card.d.ts +9 -0
- package/dist/types/primitives/checkbox.d.ts +14 -0
- package/dist/types/primitives/choice-tiles.d.ts +59 -0
- package/dist/types/primitives/cn.d.ts +1 -0
- package/dist/types/primitives/code-block.d.ts +34 -0
- package/dist/types/primitives/collapsible.d.ts +15 -0
- package/dist/types/primitives/command.d.ts +51 -0
- package/dist/types/primitives/context-ring.d.ts +14 -0
- package/dist/types/primitives/dialog-arms.d.ts +2 -0
- package/dist/types/primitives/dialog.d.ts +34 -0
- package/dist/types/primitives/disclosure-header.d.ts +7 -0
- package/dist/types/primitives/dock-card.d.ts +41 -0
- package/dist/types/primitives/dropdown-menu.d.ts +73 -0
- package/dist/types/primitives/empty-state.d.ts +19 -0
- package/dist/types/primitives/glass-card.d.ts +3 -0
- package/dist/types/primitives/hover-card.d.ts +28 -0
- package/dist/types/primitives/icon-disc.d.ts +11 -0
- package/dist/types/primitives/index.d.ts +51 -0
- package/dist/types/primitives/input.d.ts +6 -0
- package/dist/types/primitives/kbd.d.ts +4 -0
- package/dist/types/primitives/label.d.ts +3 -0
- package/dist/types/primitives/menu-surface.d.ts +1 -0
- package/dist/types/primitives/meter.d.ts +8 -0
- package/dist/types/primitives/popover.d.ts +31 -0
- package/dist/types/primitives/progress-ring.d.ts +12 -0
- package/dist/types/primitives/progress.d.ts +9 -0
- package/dist/types/primitives/scroll-area.d.ts +19 -0
- package/dist/types/primitives/segmented-control.d.ts +23 -0
- package/dist/types/primitives/select.d.ts +51 -0
- package/dist/types/primitives/separator.d.ts +6 -0
- package/dist/types/primitives/sheet-chrome.d.ts +11 -0
- package/dist/types/primitives/sheet.d.ts +21 -0
- package/dist/types/primitives/skeleton.d.ts +3 -0
- package/dist/types/primitives/spinner.d.ts +9 -0
- package/dist/types/primitives/switch.d.ts +14 -0
- package/dist/types/primitives/table.d.ts +11 -0
- package/dist/types/primitives/tabs.d.ts +29 -0
- package/dist/types/primitives/textarea.d.ts +5 -0
- package/dist/types/primitives/toast.d.ts +16 -0
- package/dist/types/primitives/tooltip.d.ts +34 -0
- package/dist/types/primitives/truncate.d.ts +1 -0
- package/dist/types/primitives/use-media-query.d.ts +4 -0
- package/dist/types/primitives/use-mobile.d.ts +4 -0
- package/dist/types/primitives/use-sheet-drag.d.ts +20 -0
- package/dist/types/style.d.ts +6 -0
- package/dist/types/surface.d.ts +99 -0
- package/package.json +55 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/context.ts","../src/extensions.ts","../src/natives/shared.tsx","../src/form.tsx","../src/bind-attrs.ts","../src/list.tsx","../src/natives/layout.tsx","../src/natives/owners.ts","../src/natives/pending.tsx","../src/media.ts","../src/markdown.tsx","../src/natives/text.tsx","../src/natives/bound.ts","../src/natives/actions.tsx","../src/natives/chart.tsx","../src/behaviors/picker-popover.tsx","../src/behaviors/collapsible.ts","../src/behaviors/drag-to-dismiss.ts","../src/behaviors/slider.ts","../src/behaviors/search-match.ts","../src/natives/chips.tsx","../src/natives/choice-tiles.tsx","../src/natives/code.tsx","../src/natives/dates.tsx","../src/natives/feedback.tsx","../src/inputs.ts","../src/natives/inputs.tsx","../src/natives/media.tsx","../src/natives/nav.tsx","../src/natives/search.tsx","../src/natives/overlays.tsx","../src/natives/resizable.tsx","../src/natives/select.tsx","../src/natives/table.tsx","../src/natives/index.ts","../src/node-view.tsx","../src/surface.tsx","../src/create-surface.ts","../src/host-surface.tsx"],"sourcesContent":["// FEED-128: what every painted node reads from its surface (the React\n// renderer's context.tsx, on Solid). The surface value is an object of\n// GETTERS over the surface's signals and memos: read a field inside a\n// tracking scope (JSX, `createMemo`, `createEffect`) and the reader follows\n// it. Never spread it (`{...ctx}` snapshots every getter and loses the\n// tracking); derive a changed copy with `deriveContext`.\n\nimport { createContext, useContext, type Accessor } from \"solid-js\"\nimport type { ExtensionDef, Formatter, ModeName, ResolvedTheme, ScrollAlign, TemplateBudget, UiNode } from \"@exponential-at/ui\"\nimport type { ClientFunction, CompiledTheme, DataModel, ResolveContext } from \"@exponential-at/ui/web\"\nimport type { HostPlugin } from \"./host\"\nimport type { SolidExtension } from \"./extensions\"\n\nexport interface SurfaceContextValue {\n readonly surfaceId: string\n readonly compiled: CompiledTheme\n /** The theme the surface runs with (density + contrast applied). */\n readonly theme: ResolvedTheme\n /** The RESOLVED mode (`system` already followed). */\n readonly mode: ModeName\n readonly host: HostPlugin\n readonly extensions: readonly SolidExtension[]\n readonly extensionDefs: readonly ExtensionDef[]\n readonly data: DataModel\n readonly setData: (pointer: string, value: unknown) => void\n /** A template component id → its node (the reducer's LIFTED `templates`). */\n readonly templateNode: (componentId: string) => UiNode | undefined\n /** VAPP-152: node `id`'s current node, a signal of its own (undefined =\n * not in the surface's tree). */\n readonly nodeCell?: (id: string) => (() => UiNode | undefined) | undefined\n /** VAPP-103: the template items counted against `maxTemplateItems`. */\n readonly templateBudget?: TemplateBudget\n /** Interaction states forced on every node (the recipe sheet). */\n readonly states: readonly string[]\n /** Geometry mode: every leaf becomes a fixed box of this size. */\n readonly measure?: (node: UiNode) => { w: number; h: number } | null\n /** Where overlays portal: the overlay LAYER inside the `xui` container. */\n readonly portal: HTMLElement | null\n /** The toast layer (above dialogs). */\n readonly toastLayer: HTMLElement | null\n /** The direction of the node being painted (round 2 §2). */\n readonly direction: `ltr` | `rtl`\n readonly functions: Record<string, ClientFunction>\n readonly openUrl: (url: string) => void\n readonly locale: string\n readonly formatter: Formatter\n /** The surface clock; ticks once a minute while the tree uses it. */\n readonly now: () => number\n readonly registerScroller: (id: string, scroll: (index: number, align?: ScrollAlign) => void) => () => void\n readonly paintFailures?: Map<string, string>\n readonly strings: Readonly<Record<string, string>>\n readonly t: (id: string, params?: Record<string, unknown>) => string\n /** `activeBreakpoint(surface width, theme.tokens.breakpoint)`; null = base. */\n readonly breakpoint: string | null\n /** The matching JS-evaluated conditions (`data-xq` tokens). */\n readonly xq?: string\n readonly reducedMotion: boolean\n readonly hover: boolean\n readonly announce: (text: string, live?: `polite` | `assertive`) => void\n}\n\nexport const SurfaceContext = createContext<SurfaceContextValue>()\n\nexport function useSurfaceContext(): SurfaceContextValue {\n const ctx = useContext(SurfaceContext)\n if (!ctx) throw new Error(`exponential-ui: this component must render inside <ExponentialSurface>`)\n return ctx\n}\n\n/** A copy of `ctx` with some fields re-pointed (each override = a getter\n * body), every other field still following the original. */\nexport function deriveContext(ctx: SurfaceContextValue, overrides: { [K in keyof SurfaceContextValue]?: () => SurfaceContextValue[K] }): SurfaceContextValue {\n const out = {} as SurfaceContextValue\n for (const key of Object.keys(Object.getOwnPropertyDescriptors(ctx))) {\n Object.defineProperty(out, key, { enumerable: true, configurable: true, get: () => (ctx as unknown as Record<string, unknown>)[key] })\n }\n for (const [key, get] of Object.entries(overrides)) if (get) Object.defineProperty(out, key, { enumerable: true, configurable: true, get: get as () => unknown })\n return out\n}\n\n/** The data scope of a template item (relative paths resolve here): an\n * ACCESSOR, since a keyed item's index (and so its path) moves. */\nexport const ScopeContext = createContext<Accessor<string>>(() => ``)\n\n/** The INSTANCE suffix of a template item (`.0`, `.alice`): appended to the\n * ids of the nodes it renders (`data-xui-id`) while their CSS class stays\n * the template node's own. */\nexport const InstanceContext = createContext<Accessor<string>>(() => ``)\n\nexport const useScope = (): Accessor<string> => useContext(ScopeContext)\nexport const useInstance = (): Accessor<string> => useContext(InstanceContext)\n\n/** The resolve context of one evaluation (bindings + calls + `$string`):\n * getters over the surface's, read (and tracked) where they are used. */\nexport function resolveContextOf(ctx: SurfaceContextValue, scope: string): ResolveContext {\n // Getters (VAPP-152): a memo follows what its evaluation READS, so a\n // node without a binding never re-binds on a data write.\n return {\n get data() {\n return ctx.data\n },\n scope,\n get functions() {\n return ctx.functions\n },\n get openUrl() {\n return ctx.openUrl\n },\n get locale() {\n return ctx.locale\n },\n get strings() {\n return ctx.strings\n },\n get formatter() {\n return ctx.formatter\n },\n get now() {\n return ctx.now\n },\n }\n}\n","// FEED-128: EXTENSIONS on Solid (React's extensions.ts). An extension = its\n// catalog (`defineExtension` from `@exponential-at/ui`) plus one Solid\n// component per NATIVE kind it adds. `registerExtension` adds one to the\n// module registry every surface reads (a signal: mounted surfaces follow);\n// the `extensions` prop adds per-surface ones. An extension may also\n// OVERRIDE a core native's painter (`components: { Switch: MySwitch }`).\n\nimport { createSignal, type Component } from \"solid-js\"\nimport { defineExtension } from \"@exponential-at/ui\"\nimport type { ExtensionDef } from \"@exponential-at/ui\"\nimport type { ExtensionComponentProps } from \"./host\"\n\nexport type ExtensionComponent = Component<ExtensionComponentProps>\n\nexport interface SolidExtension {\n /** The extension catalog (validated). `null` for a pure painter override. */\n catalog: ExtensionDef | null\n components: Record<string, ExtensionComponent>\n}\n\nexport interface RegisterExtensionOptions {\n catalog?: ExtensionDef\n components?: Record<string, ExtensionComponent>\n}\n\nconst [registry, setRegistry] = createSignal<readonly SolidExtension[]>([])\nconst listeners = new Set<() => void>()\n\n/** Register an extension for every surface on the page (last wins).\n * Returns an unregister function. */\nexport function registerExtension(options: RegisterExtensionOptions): () => void {\n const ext = defineSolidExtension(options)\n setRegistry((cur) => [...cur, ext])\n for (const l of listeners) l()\n return () => {\n setRegistry((cur) => cur.filter((e) => e !== ext))\n for (const l of listeners) l()\n }\n}\n\n/** A per-surface extension (the `extensions` prop), validated once. */\nexport function defineSolidExtension(options: RegisterExtensionOptions): SolidExtension {\n return { catalog: options.catalog ? defineExtension(options.catalog) : null, components: options.components ?? {} }\n}\n\n/** The registered extensions (a reactive read). */\nexport function registeredExtensions(): readonly SolidExtension[] {\n return registry()\n}\n\nexport function subscribeExtensions(listener: () => void): () => void {\n listeners.add(listener)\n return () => listeners.delete(listener)\n}\n\n/** The catalog defs of a list of extensions (for the reducer). */\nexport function extensionCatalogs(extensions: readonly SolidExtension[]): ExtensionDef[] {\n return extensions.flatMap((e) => (e.catalog ? [e.catalog] : []))\n}\n\n/** The macro names extensions add (their parts live in the `xui-part` layer). */\nconst macroNamesCache = new WeakMap<readonly SolidExtension[], Set<string>>()\n\nexport function extensionMacroNames(extensions: readonly SolidExtension[]): Set<string> {\n const hit = macroNamesCache.get(extensions)\n if (hit) return hit\n const out = new Set<string>()\n macroNamesCache.set(extensions, out)\n for (const ext of extensions) {\n for (const [name, def] of Object.entries(ext.catalog?.components ?? {})) if (def.kind === `macro`) out.add(name)\n }\n return out\n}\n\nexport function extensionComponent(extensions: readonly SolidExtension[], component: string): ExtensionComponent | undefined {\n for (let i = extensions.length - 1; i >= 0; i--) {\n const hit = extensions[i].components[component]\n if (hit) return hit\n }\n return undefined\n}\n","// FEED-128: what every native painter shares on Solid (React's\n// natives/shared.tsx): the part attributes, prop coercions, the text part\n// the form controls repeat, and the built-in glyphs of `core.catalog.json`\n// `builtinIcons`.\n//\n// ── THE RULES FOR PORTING A NATIVE (the fan-out agents) ──────────────────\n// 1. The React file is the SPEC. The Solid painter produces the IDENTICAL\n// DOM: same elements, same attribute set and values (`class` strings in\n// the same order, `data-xui-id`, `data-xui-part`, `data-xui-c`,\n// `data-r-*`/`data-m-*`, `data-xs`, aria-*, role, tabindex), same text.\n// The web-parity suite diffs the serialised DOM, every computed style,\n// frames and pixels at zero tolerance. Extend `src/test/parity.ts`\n// (`expectDomParity`) with a case per native you port.\n// 2. Attribute NAMES: React's `className` is `class`, `htmlFor` is `for`,\n// `tabIndex` is `tabindex`; React renders `true`/`false` for `aria-*`\n// and `data-*` as the strings \"true\"/\"false\" (so does Solid), omits\n// `undefined`/`null`. Inline styles go through `css()` (React's\n// semantics: camelCase → kebab, numbers → px unless unitless) or\n// `mergeStyle(rootProps, reactStyleObject)`. React writes a controlled\n// `<input checked>` / `value` / `defaultValue` as the ATTRIBUTE too\n// (`checked=\"\"`), Solid only sets the property: add\n// `attr:checked={on ? `` : undefined}` (markdown.tsx does).\n// NEVER write an object literal with COMPUTED keys straight into\n// `style={{ [side]: … }}`: the Solid compiler loses them (seen in the\n// harness); build the object first or pass it through `css()`.\n// 3. STATE ATTRIBUTES: the theme CSS (`STATE_SELECTORS`, web/theme-css.ts)\n// targets the RADIX names. Kobalte writes its own (`data-checked`,\n// `data-expanded`, `data-closed`, `data-highlighted` on different nodes,\n// `data-selected`…), Radix writes `data-state=\"checked|unchecked|open|\n// closed|active|inactive|on|off\"`, `data-side`, `data-align`,\n// `data-highlighted`, `data-disabled`, `data-orientation`. The Solid\n// painter sets the RADIX-named attributes ITSELF on every part React's\n// Radix part carries them (`data-state`, `data-side`, `data-align`,\n// `data-highlighted`, `data-disabled`, `data-orientation`, with Radix's\n// values: `data-disabled=\"\"` when disabled, absent otherwise), and keeps a\n// Kobalte-generated attribute ONLY where React's Radix DOM carries the\n// same attribute with the same value (strip or override the rest: render\n// Kobalte's part `as` your own element and spread only the attributes\n// you need, or use the headless primitives). Generated ids (`kb-…`,\n// `radix-…`, `:r0:`) are normalised by the parity helper, the\n// attributes that REFERENCE them (`aria-controls`, `aria-labelledby`,\n// `aria-describedby`, `for`) must still exist on the same elements.\n// 4. Reactivity: `NativeProps` fields are live getters, never destructure\n// them; read `props.children` and each slot ONCE; derive with\n// `createMemo`, never mirror props into signals except for the bindable\n// state rule (`createBoundState`).\n// 5. A painter that is not ported yet stays `Pending` (natives/pending.tsx).\n\nimport { createMemo, type JSX } from \"solid-js\"\nimport { displayString, nativeRecipeProps } from \"@exponential-at/ui\"\nimport { PLACED, arr, bool, builtinIconName, failingCheck, failingChecks, formatFileSize, num, objects, partClass, phrase, propAttribute, str } from \"@exponential-at/ui/web\"\nimport type { UiNode } from \"@exponential-at/ui\"\nimport { useInstance, useSurfaceContext } from \"../context\"\nimport { IconGlyph } from \"../icons\"\n\nexport type Attrs = Record<string, unknown>\n\nexport { str, num, bool, arr, objects, phrase, formatFileSize, failingChecks, failingCheck, builtinIconName }\nexport { css, px } from \"../style\"\nexport type { StyleInput, SolidStyle } from \"../style\"\n\ntype State = string | false | undefined | null\n\nexport type PartFn = ((name: string, ...states: State[]) => Attrs) & {\n /** The same with part-level recipe props (`{kind: \"keyword\"}`). */\n with: (name: string, extra: Record<string, unknown>, ...states: State[]) => Attrs\n /** A PER-ITEM placed part: `data-xui-id=\"<id>.<part>.<item>\"`. */\n at: (name: string, item: string | number, ...states: State[]) => Attrs\n /** `at` with part-level recipe props. */\n atWith: (name: string, item: string | number, extra: Record<string, unknown>, ...states: State[]) => Attrs\n /** The painted id of the node (`<id><instance suffix>`), live. */\n readonly domId: string\n}\n\n/** React's `useParts(node, props)` on Solid: `parts(props)` takes the\n * painter's props object (`{node, props}` live getters) and returns\n * `part(name, …states)` → the attribute bag of one part element, keys in\n * React's order: `class` (`<scope> xui-<Component>-<part>`),\n * `data-xui-part` (`<Component>/<part>`), `data-xui-id` (placed parts\n * only), the native recipe props (`data-r-*`), the part's own extras,\n * `data-xs`. Call `part(…)` INSIDE JSX (or a memo) so it follows the\n * node, its props, the theme scope and the forced states. */\nexport function parts(source: { readonly node: UiNode; readonly props: Record<string, unknown> }): PartFn {\n const ctx = useSurfaceContext()\n const instance = useInstance()\n const recipeAttrs = createMemo(() => {\n const out: Attrs = {}\n for (const [k, v] of Object.entries(nativeRecipeProps(source.node.component, source.props, ctx.extensionDefs))) if (typeof v !== `object`) out[propAttribute(false, k)] = String(v)\n return out\n })\n const domId = () => `${source.node.id}${instance()}`\n const build = (name: string, extra: Record<string, unknown> | null, states: State[], item: string | number | null): Attrs => {\n const component = source.node.component\n const id = item !== null ? `${domId()}.${name}.${item}` : PLACED[component]?.includes(name) ? `${domId()}.${name}` : null\n const all = [...ctx.states, ...states.filter((s): s is string => Boolean(s))]\n const own: Attrs = {}\n if (extra) for (const [k, v] of Object.entries(extra)) if (v !== undefined && v !== null) own[propAttribute(false, k)] = String(v)\n return {\n class: `${ctx.compiled.scope} ${partClass(component, name)}`,\n \"data-xui-part\": `${component}/${name}`,\n ...(id !== null ? { \"data-xui-id\": id } : {}),\n ...recipeAttrs(),\n ...own,\n ...(all.length ? { \"data-xs\": all.join(` `) } : {}),\n }\n }\n const fn = ((name: string, ...states: State[]) => build(name, null, states, null)) as PartFn\n fn.with = (name, extra, ...states) => build(name, extra, states, null)\n fn.at = (name, item, ...states) => build(name, null, states, item)\n fn.atWith = (name, item, extra, ...states) => build(name, extra, states, item)\n Object.defineProperty(fn, `domId`, { get: domId })\n return fn\n}\n\n/** React's name, for a literal port. */\nexport const useParts = (node: UiNode, props: Record<string, unknown>): PartFn => parts({ node, props })\n\n/** A text part (React's `TextPart`): nothing when the text displays empty. */\nexport function TextPart(props: { part: Attrs; text: unknown; as?: `span` | `label` | `div` | `p`; id?: string; htmlFor?: string }): JSX.Element {\n const s = () => displayString(props.text)\n return (\n <>\n {s()\n ? (() => {\n const Tag = props.as ?? `span`\n if (Tag === `label`) return <label {...props.part} id={props.id} for={props.htmlFor}>{s()}</label>\n if (Tag === `div`) return <div {...props.part} id={props.id}>{s()}</div>\n if (Tag === `p`) return <p {...props.part} id={props.id}>{s()}</p>\n return <span {...props.part} id={props.id}>{s()}</span>\n })()\n : null}\n </>\n )\n}\n\nexport function Hidden(props: { children: JSX.Element }): JSX.Element {\n return <span class=\"xui-sr-only\">{props.children}</span>\n}\n\n/** The glyph of an owned part (`CodeBlock.copy`, `Table.sortIcon.asc`),\n * through the host's registry first, then the renderer's fallbacks. */\nexport function BuiltinIcon(props: { slot: string; class?: string; size?: number }): JSX.Element {\n const ctx = useSurfaceContext()\n return <IconGlyph icons={ctx.host.icons} name={builtinIconName(props.slot)} class={props.class} width={props.size} height={props.size} data-slot={props.slot} />\n}\n","// FEED-128: the FORM native and the field protocol every named control\n// speaks, on Solid (React's form.tsx; round 1 contract §3). A Form collects\n// every field beneath it that has a `name`. Submit runs EVERY field's\n// checks; any failure: no `submit`, `invalid {errors}` fires, every failing\n// field shows ALL its messages (id `<field id>.error`), `summary` lists\n// them above the fields, focus moves to the first invalid field and\n// `invalidFields` is announced. `busy` refuses submits, `disabled` makes\n// every field inert (a disabled fieldset). The registry is the web layer's.\n\nimport { For, Show, createContext, createMemo, createSignal, createEffect, onCleanup, untrack, useContext, type Accessor, type JSX } from \"solid-js\"\nimport { FormRegistry, fieldErrorsVisible, joinIds, validateOnDefault } from \"@exponential-at/ui/web\"\nimport type { UiNode } from \"@exponential-at/ui\"\nimport { useSurfaceContext } from \"./context\"\nimport type { NativeProps } from \"./node-view\"\nimport { bool, failingChecks, parts, str, type PartFn } from \"./natives/shared\"\n\nexport interface FieldHandle {\n name: string\n domId: string\n value: () => unknown\n errors: () => string[]\n focus: () => void\n element: () => HTMLElement | null\n}\n\n/** The nearest Form (live getters for its state). */\nexport interface FormContextValue {\n register: (field: FieldHandle) => () => void\n /** Run the checks and fire `submit` or `invalid`. */\n submit: () => void\n /** A field's value changed (Form `change {name, value}`). */\n changed: (name: string, value: unknown) => void\n readonly disabled: boolean\n readonly busy: boolean\n /** Bumps on every refused submit: every field shows its errors. */\n readonly attempts: number\n}\n\nexport const FormContext = createContext<FormContextValue | null>(null)\n\n/** Round 4 (`submitClosesOverlay`): the NEAREST overlay around a Form\n * decides; a dismissible Dialog or Drawer provides its close, every other\n * overlay provides null. */\nexport const CloseOnSubmitContext = createContext<(() => void) | null>(null)\n\nexport function useForm(): FormContextValue | null {\n return useContext(FormContext) ?? null\n}\n\nexport function FormNative(props: NativeProps): JSX.Element {\n const ctx = useSurfaceContext()\n const part = parts(props)\n const closeOverlay = useContext(CloseOnSubmitContext) ?? null\n const fields = new FormRegistry<FieldHandle>()\n const [attempts, setAttempts] = createSignal(0)\n const [summary, setSummary] = createSignal<{ name: string; message: string }[]>([])\n const disabled = () => bool(props.props.disabled)\n const busy = () => bool(props.props.busy)\n const submit = () => {\n if (untrack(busy)) return\n const result = fields.check()\n if (!result.ok) {\n setAttempts((n) => n + 1)\n setSummary(result.errors)\n result.first?.focus()\n ctx.announce(ctx.t(`invalidFields`), `assertive`)\n void props.emit(`invalid`, { errors: result.errors })\n return\n }\n setSummary([])\n void props.emit(`submit`, { values: result.values })\n closeOverlay?.()\n }\n const value: FormContextValue = {\n register: (field) => fields.register(field),\n submit,\n changed: (name, v) => void props.emit(`change`, { name, value: v }),\n get disabled() {\n return disabled()\n },\n get busy() {\n return busy()\n },\n get attempts() {\n return attempts()\n },\n }\n // Summary entries clear as their fields become valid (re-read with the\n // data and the attempts).\n const live = createMemo(() => {\n ctx.data\n attempts()\n return fields.stillFailing(summary())\n })\n return (\n <FormContext.Provider value={value}>\n <form\n {...props.rootProps}\n novalidate\n aria-busy={busy() || undefined}\n aria-disabled={disabled() || undefined}\n name={str(props.props.name) || undefined}\n onSubmit={(e) => {\n e.preventDefault()\n e.stopPropagation()\n submit()\n }}\n >\n <Show when={bool(props.props.summary) && live().length}>\n <div {...part(`summary`)} role=\"alert\" id={`${props.node.id}.summary`}>\n <span class=\"xui-sr-only\">{ctx.t(`invalidFields`)}</span>\n <ul class=\"xui-form-summary-list\">\n <For each={live()}>{(e) => <li>{e.message}</li>}</For>\n </ul>\n </div>\n </Show>\n <fieldset class=\"xui-form-fields\" disabled={disabled()}>\n {props.children}\n </fieldset>\n </form>\n </FormContext.Provider>\n )\n}\n\nexport interface FieldOptions {\n node: Accessor<UiNode>\n domId: Accessor<string>\n props: Accessor<Record<string, unknown>>\n /** The field's current (local) value. */\n value: Accessor<unknown>\n /** The element focus moves to when the field is the first invalid one. */\n focusEl: () => HTMLElement | null | undefined\n}\n\n/** A field's validation state (live getters). */\nexport interface FieldState {\n /** The messages to SHOW now. */\n readonly errors: string[]\n readonly invalid: boolean\n /** `<field id>.error` — put it in the control's aria-describedby. */\n readonly errorId: string\n readonly describedBy: string | undefined\n touch: () => void\n change: (value: unknown) => void\n submit: () => void\n readonly form: FormContextValue | null\n}\n\n/** React's `useField`: a named control's validation + its registration\n * with the nearest Form. */\nexport function createField(options: FieldOptions): FieldState {\n const form = useForm()\n const ctx = useSurfaceContext()\n const all = createMemo(() => failingChecks(options.props().checks, ctx.t(`invalidValue`)))\n const [touched, setTouched] = createSignal(false)\n const [dirty, setDirty] = createSignal(false)\n const [submitted, setSubmitted] = createSignal(false)\n const show = createMemo(() => fieldErrorsVisible({ validateOn: str(options.props().validateOn, validateOnDefault(options.node().component) ?? `blur`), submitted: submitted(), attempts: form?.attempts ?? 0, dirty: dirty(), touched: touched() }))\n const name = createMemo(() => str(options.props().name))\n createEffect(() => {\n const n = name()\n const id = options.domId()\n if (!form || !n) return\n onCleanup(\n form.register({\n name: n,\n domId: id,\n value: () => untrack(options.value),\n errors: () => untrack(all),\n focus: () => options.focusEl()?.focus(),\n element: () => options.focusEl() ?? null,\n })\n )\n })\n const errors = createMemo(() => (show() ? all() : []))\n const errorId = () => `${options.domId()}.error`\n return {\n get errors() {\n return errors()\n },\n get invalid() {\n return errors().length > 0\n },\n get errorId() {\n return errorId()\n },\n get describedBy() {\n return errors().length ? errorId() : undefined\n },\n touch: () => setTouched(true),\n change: (v: unknown) => {\n setDirty(true)\n const n = untrack(name)\n if (form && n) form.changed(n, v)\n },\n submit: () => {\n setSubmitted(true)\n form?.submit()\n },\n form,\n }\n}\n\n/** Every failing message under a field, linked by `errorId`. */\nexport function FieldErrors(props: { part: PartFn; field: FieldState }): JSX.Element {\n return (\n <Show when={props.field.errors.length}>\n <div {...props.part(`error`)} id={props.field.errorId} role=\"alert\">\n <For each={props.field.errors}>{(m) => <span class=\"xui-field-error\">{m}</span>}</For>\n </div>\n </Show>\n )\n}\n\nexport { joinIds }\n","// VAPP-145: a bag of PLAIN attributes (class, role, data-*, aria-*; no\n// events, no style, no properties) bound to an element with ONE render\n// effect that writes only what changed. What `{...bag}` in JSX does for such\n// a bag, without `spread` + `mergeProps` resolving every key on each run:\n// the windowed rows and table cells are created by the dozen on a scroll\n// step or a sort.\n\nimport { createRenderEffect } from \"solid-js\"\n\ntype Bag = Record<string, unknown>\n\n// Solid's own rule: null / undefined remove the attribute, anything else is\n// written as a string (`false` → \"false\").\nconst absent = (v: unknown) => v === undefined || v === null\n\n/** Bind `bag()` onto `el` (call it from a `ref`: inside the row's owner). */\nexport function bindAttrs(el: Element, bag: () => Bag | undefined): void {\n createRenderEffect<Bag>((prev) => {\n const next = bag() ?? {}\n for (const k in prev) if (!(k in next) && !absent(prev[k])) el.removeAttribute(k)\n for (const k in next) {\n const v = next[k]\n if (v === prev[k]) continue\n if (absent(v)) el.removeAttribute(k)\n else el.setAttribute(k, String(v))\n }\n return next\n }, {})\n}\n","// FEED-128: the WINDOWED list on ONE axis (React's list.tsx on Solid; round\n// 2 §5). The numbers are the core's (`itemOffsets`, `virtualWindow`,\n// `scrollOffsetForIndex`, `stickyHeader`): rows sit end to end with `gap`\n// between them, unmeasured rows take the measured mean (or the estimate);\n// rows are positioned absolutely inside a spacer as long as the content;\n// ONE ResizeObserver corrects each rendered row's extent. The window\n// follows the nearest ancestor that ACTUALLY scrolls on the axis, else the\n// host viewport. A sticky header row pins at the viewport start.\n// `scrollToIndex` brings a row into view minus the pinned header.\n//\n// Rows are KEYED by `itemKey`; `renderItem` receives the row's index as an\n// ACCESSOR (a keyed row keeps its subtree while its index moves).\n\nimport { For, createEffect, createMemo, createSignal, on, onCleanup, untrack, type Accessor, type JSX } from \"solid-js\"\nimport { itemExtents, itemOffsets, scrollOffsetForIndex, stickyHeader, virtualWindow, WINDOW_OVERSCAN, type ScrollAlign } from \"@exponential-at/ui\"\nimport { listViewport as viewportOf, scrollParent, type ListAxis } from \"@exponential-at/ui/web\"\nimport { bindAttrs } from \"./bind-attrs\"\nimport { css } from \"./style\"\n\nexport type { ListAxis }\nexport { scrollParent }\n\nexport interface WindowedListProps {\n count: number\n itemKey: (index: number) => string\n /** The row's content; `index` follows the row (keyed by `itemKey`). */\n renderItem: (index: Accessor<number>) => JSX.Element\n /** The extent (px on the axis) of a row before it is measured. */\n estimatedItemHeight?: number | ((index: number) => number)\n overscan?: number\n class?: string\n axis?: ListAxis\n direction?: `ltr` | `rtl`\n /** Space between rows on the axis (px). */\n gap?: number\n /** A divider drawn centred in the gap BEFORE row `index` (null = none). */\n divider?: (index: number) => JSX.Element | null\n /** Flat indices of the header rows that pin (ascending). */\n stickyRows?: readonly number[]\n /** Extra attributes of row `index`'s wrapper (role, aria-setsize…). */\n itemProps?: (index: number) => Record<string, unknown>\n /** Receives the list's handle (React's forwarded ref). */\n ref?: (handle: WindowedListHandle) => void\n}\n\nexport interface WindowedListHandle {\n /** Scroll row `index` into view (default nearest), the pinned header's\n * extent subtracted. */\n scrollToIndex: (index: number, align?: ScrollAlign) => void\n}\n\nexport function WindowedList(props: WindowedListProps): JSX.Element {\n let el: HTMLDivElement | undefined\n const extentsByKey = new Map<string, number>()\n const crossByKey = new Map<string, number>()\n const observed = new Map<string, Element>()\n const keyOfEl = new WeakMap<Element, string>()\n let observer: ResizeObserver | null = null\n const [version, bump] = createSignal(0)\n const [view, setView] = createSignal<{ scroll: number; viewport: number } | null>(null, { equals: (a, b) => a === b || (!!a && !!b && a.scroll === b.scroll && a.viewport === b.viewport) })\n const axis = () => props.axis ?? `vertical`\n const horizontal = () => axis() === `horizontal`\n const rtl = () => horizontal() && props.direction === `rtl`\n const gap = () => props.gap ?? 0\n const estimated = () => props.estimatedItemHeight ?? 40\n\n const extents = (): number[] => {\n const est = estimated()\n const count = props.count\n // Read once (VAPP-148): a props read per row was most of the pass.\n const key = props.itemKey\n // §5: a fixed estimate gives way to the mean of the measured rows.\n if (typeof est === `number`) return itemExtents(Array.from({ length: count }, (_, i) => extentsByKey.get(key(i))), est)\n const out = new Array<number>(count)\n for (let i = 0; i < count; i++) out[i] = extentsByKey.get(key(i)) ?? est(i)\n return out\n }\n\n createEffect(() => {\n const isH = horizontal()\n if (typeof ResizeObserver === `undefined`) return\n const ro = new ResizeObserver((entries) => {\n let changed = false\n for (const entry of entries) {\n const key = keyOfEl.get(entry.target)\n const box = entry.borderBoxSize?.[0]\n const w = box ? box.inlineSize : entry.contentRect.width\n const h = box ? box.blockSize : entry.contentRect.height\n const main = isH ? w : h\n const cross = isH ? h : w\n if (key === undefined || main <= 0) continue\n if (extentsByKey.get(key) !== main) {\n extentsByKey.set(key, main)\n changed = true\n }\n if (crossByKey.get(key) !== cross) {\n crossByKey.set(key, cross)\n changed = true\n }\n }\n if (changed) bump((n) => n + 1)\n })\n observer = ro\n for (const node of observed.values()) ro.observe(node)\n onCleanup(() => {\n ro.disconnect()\n observer = null\n })\n })\n\n // The scroller (undefined = not resolved yet, null = the window).\n const [scroller, setScroller] = createSignal<HTMLElement | null | undefined>(undefined)\n createEffect(() => {\n const s = scroller()\n const a = axis()\n const r = rtl()\n if (!el || s === undefined) return\n const node = el\n const read = () => {\n const v = viewportOf(node, a, r, s)\n setView({ scroll: v.scroll, viewport: v.viewport })\n }\n read()\n const target: EventTarget = s ?? window\n target.addEventListener(`scroll`, read, { passive: true })\n window.addEventListener(`resize`, read)\n const ro = typeof ResizeObserver === `undefined` ? null : new ResizeObserver(read)\n if (ro) {\n if (s) ro.observe(s)\n ro.observe(node)\n }\n onCleanup(() => {\n target.removeEventListener(`scroll`, read)\n window.removeEventListener(`resize`, read)\n ro?.disconnect()\n })\n })\n\n const ext = createMemo(() => {\n version()\n return extents()\n })\n const off = createMemo(() => itemOffsets(ext(), gap()))\n // A memo: the scroller is re-found when the TOTAL changes (React's deps),\n // not on every new offsets array (a sort, a re-keyed window).\n const total = createMemo(() => off()[props.count] ?? 0)\n createEffect(() => {\n props.count\n total()\n const a = axis()\n if (!el) return\n const found = scrollParent(el, a)\n setScroller(() => found)\n })\n const fallbackViewport = () => (typeof window !== `undefined` ? (horizontal() ? window.innerWidth : window.innerHeight) : 800)\n const scroll = () => view()?.scroll ?? 0\n const viewport = () => view()?.viewport || fallbackViewport()\n const win = createMemo(() => virtualWindow(ext(), gap(), scroll(), viewport(), props.overscan ?? WINDOW_OVERSCAN), undefined, { equals: (a, b) => a.start === b.start && a.end === b.end })\n const headers = createMemo(() => [...(props.stickyRows ?? [])].filter((r) => r >= 0 && r < props.count).sort((a, b) => a - b))\n const pinned = createMemo(() => (headers().length && scroll() >= 0 ? stickyHeader(off(), ext(), headers(), scroll()) : null), undefined, { equals: (a, b) => a === b || (!!a && !!b && a.row === b.row && a.offset === b.offset) })\n\n // scrollToIndex: scroll so the row sits where `align` says, minus the\n // header pinned there; re-aimed after the rows it reveals are measured.\n let pending: { index: number; align: ScrollAlign; tries: number } | null = null\n const jump = (index: number, align: ScrollAlign): boolean => {\n if (!el || index < 0 || index >= props.count) return false\n // The memo: one pass over the rows per measurement (VAPP-148, React's\n // VAPP-139); a jump and every re-aim reuse it.\n const e = ext()\n const v = viewportOf(el, axis(), rtl())\n let header = -1\n for (const r of headers()) if (r <= index) header = r\n const inset = header >= 0 && header !== index ? e[header] : 0\n const target = scrollOffsetForIndex(e, gap(), index, v.viewport, Math.max(0, v.scroll), align, inset)\n const delta = target - v.scroll\n if (Math.abs(delta) < 0.5) return false\n const by = horizontal() ? { left: rtl() ? -delta : delta } : { top: delta }\n if (v.scroller) v.scroller.scrollBy(by)\n else window.scrollBy(by)\n return true\n }\n // A measurement anywhere moves the measured mean: re-aim until input.\n createEffect(\n on([ext, view], () => {\n const p = pending\n if (!p) return\n if (p.tries++ >= 12) pending = null\n else untrack(() => jump(p.index, p.align))\n })\n )\n createEffect(() => {\n const target: EventTarget = scroller() ?? window\n const cancel = () => {\n pending = null\n }\n const events = [`wheel`, `touchstart`, `pointerdown`, `keydown`] as const\n for (const e of events) target.addEventListener(e, cancel, { passive: true })\n onCleanup(() => {\n for (const e of events) target.removeEventListener(e, cancel)\n })\n })\n props.ref?.({\n scrollToIndex: (index, align = `nearest`) => {\n pending = { index, align, tries: 0 }\n if (!untrack(() => jump(index, align))) pending = null\n },\n })\n\n const place = (at: number) => (horizontal() ? (rtl() ? { right: 0, transform: `translateX(${-at}px)` } : { left: 0, transform: `translateX(${at}px)` }) : { transform: `translateY(${at}px)` })\n // The painted rows: the pinned header (when outside the window) then the\n // window, by key.\n const indices = createMemo(() => {\n const w = win()\n const p = pinned()\n const out: number[] = []\n if (p && (p.row < w.start || p.row >= w.end)) out.push(p.row)\n for (let i = w.start; i < w.end; i++) out.push(i)\n return out\n })\n const rows = createMemo(() => {\n const byKey = new Map<string, number>()\n for (const i of indices()) byKey.set(props.itemKey(i), i)\n return byKey\n })\n const keys = createMemo(() => [...rows().keys()], undefined, { equals: (a, b) => a.length === b.length && a.every((k, i) => k === b[i]) })\n const cross = createMemo(() => {\n version()\n let c = 0\n for (const k of keys()) c = Math.max(c, crossByKey.get(k) ?? 0)\n return c\n })\n const spacer = () => css(horizontal() ? { width: total(), height: cross() || undefined } : { height: total() })\n\n return (\n <div ref={el} class={props.class ? `xui-list-window ${props.class}` : `xui-list-window`} data-axis={axis()} style={spacer()} data-window-start={win().start} data-window-end={win().end}>\n <For each={keys()}>\n {(key) => {\n const index = createMemo<number>((prev) => rows().get(key) ?? prev!)\n const isPinned = () => pinned()?.row === index()\n const at = () => (isPinned() ? pinned()!.offset : off()[index()])\n const line = createMemo(() => (index() > 0 && props.divider ? props.divider(index()) : null))\n const measure = (node: HTMLDivElement) => {\n if (props.itemProps) bindAttrs(node, () => props.itemProps?.(index()))\n observed.set(key, node)\n keyOfEl.set(node, key)\n observer?.observe(node)\n onCleanup(() => {\n if (observed.get(key) === node) observed.delete(key)\n observer?.unobserve(node)\n })\n }\n return (\n <div\n ref={measure}\n class=\"xui-list-item\"\n data-index={index()}\n data-pinned={isPinned() && pinned()!.offset !== off()[index()] ? `` : undefined}\n style={css({ ...place(at()), ...(isPinned() ? { zIndex: 1 } : {}) })}\n >\n {line() ? (\n <div class=\"xui-list-gap\" aria-hidden=\"true\" data-axis={axis()} style={css(horizontal() ? { [rtl() ? `right` : `left`]: -(gap() / 2) } : { top: -(gap() / 2) })}>\n {line()}\n </div>\n ) : null}\n {props.renderItem(index)}\n </div>\n )\n }}\n </For>\n </div>\n )\n}\n","// FEED-128 (React's natives/layout.tsx): Box, List and the Unknown\n// placeholder. A List renders its children then its data template's items\n// (keyed by `template.key`), optionally in sections; past\n// `WINDOW_THRESHOLD` (50, the catalog's) items it windows on its axis.\n\nimport { For, Show, createEffect, createMemo, onCleanup, untrack, type Accessor, type JSX } from \"solid-js\"\nimport { listSections, sectionRows, WINDOW_THRESHOLD as CATALOG_WINDOW_THRESHOLD, type ListSection, type UiNode } from \"@exponential-at/ui\"\nimport { getPointer, LITERAL_ROWS_ROOT, setPointer } from \"@exponential-at/ui/web\"\nimport { InstanceContext, ScopeContext, SurfaceContext, deriveContext, useInstance, useSurfaceContext } from \"../context\"\nimport { WindowedList, type WindowedListHandle } from \"../list\"\nimport { NodeView, TemplateItemView, latest, mergeStyle, templateItems, type NativeProps } from \"../node-view\"\nimport { css } from \"../style\"\nimport { bool, BuiltinIcon, num, parts, str, type PartFn } from \"./shared\"\n\nexport function BoxNative(props: NativeProps): JSX.Element {\n const pressable = () => bool(props.props.pressable) || Boolean(props.node.on?.press)\n const onKey = (e: KeyboardEvent) => {\n if (e.target !== e.currentTarget) return\n if (e.key === `Enter` || e.key === ` `) {\n e.preventDefault()\n void props.emit(`press`)\n }\n }\n return (\n <Show when={pressable()} fallback={<div {...props.rootProps}>{props.children}</div>}>\n <div {...props.rootProps} data-pressable=\"true\" role=\"button\" tabindex=\"0\" onClick={() => void props.emit(`press`)} onKeyDown={onKey}>\n {props.children}\n </div>\n </Show>\n )\n}\n\n/** Past this many items a List windows. The catalog's number. */\nexport const WINDOW_THRESHOLD = CATALOG_WINDOW_THRESHOLD\n\n/** One row of a List: an item (a child or a template item, by its index in\n * the list) or a section header. */\ntype ListRow = { item: number } | { header: number }\n\n/** List (round 2 §5): children then the data template's items; `sectionBy`\n * groups consecutive template items under a `section` header; past\n * `WINDOW_THRESHOLD` items, or with `stickyHeaders`, the list WINDOWS.\n * Every item is a listitem with its position in the whole list;\n * `scrollToIndex` (the host command) takes the data index. */\nexport function ListNative(props: NativeProps): JSX.Element {\n const ctx = useSurfaceContext()\n const part = parts(props)\n const divided = () => bool(props.props.divided)\n const horizontal = () => props.props.direction === `horizontal`\n const gap = () => str(props.props.gap, `none`)\n const tokens = () => ctx.theme.tokens as unknown as { spacing?: Record<string, number>; control?: Record<string, number> }\n const gapPx = () => (gap() === `none` ? 0 : num(tokens().spacing?.[gap()], 0))\n const hairline = () => num(tokens().control?.hairline, 1)\n const rowExtent = () => num(tokens().control?.row, 40)\n const tpl = createMemo(() => templateItems(ctx, props.node, props.scope))\n const childCount = () => props.node.children.length\n const itemCount = () => childCount() + (tpl()?.items.length ?? 0)\n const sectionBy = () => str(props.props.sectionBy)\n const sections = createMemo(() => {\n const t = tpl()\n return sectionBy() && t ? listSections(t.items.map((item) => getPointer(ctx.data, item.path)), sectionBy()) : null\n })\n const rows = createMemo((): ListRow[] => {\n const out: ListRow[] = []\n const cc = childCount()\n for (let i = 0; i < cc; i++) out.push({ item: i })\n const s = sections()\n if (s) for (const r of sectionRows(s)) out.push(`header` in r ? r : { item: cc + r.item })\n else for (let i = cc, n = itemCount(); i < n; i++) out.push({ item: i })\n return out\n })\n const sticky = () => bool(props.props.stickyHeaders) && sections() !== null\n const windowed = () => itemCount() > WINDOW_THRESHOLD || sticky()\n // §5: rows sit `gap` apart; a divided list adds the hairline to the gap\n // and centres the divider in it.\n const step = () => gapPx() + (divided() ? hairline() : 0)\n const flatGap = () => (gap() === `none` ? (divided() ? `${hairline()}px` : undefined) : divided() ? `calc(var(--xui-spacing-${gap()}) + ${hairline()}px)` : `var(--xui-spacing-${gap()})`)\n const style = () => mergeStyle(props.rootProps, { gap: windowed() ? undefined : flatGap() })\n const rtl = () => horizontal() && ctx.direction === `rtl`\n // Every row's key in one pass per rows change (VAPP-148): the windowed\n // list asks for all 100,000 on each measurement, and a lookup through the\n // node's props per row was most of a jump.\n const rowKeys = createMemo(() => {\n const cc = childCount()\n const children = props.node.children\n const items = tpl()?.items\n return rows().map((row) => (`header` in row ? `s:${row.header}` : row.item < cc ? children[row.item].id : `t:${items![row.item - cc].key}`))\n })\n const keyOf = (r: number) => rowKeys()[r]\n const dividerBefore = (r: number): number | null => {\n if (!divided() || r === 0) return null\n const row = rows()[r]\n const prev = rows()[r - 1]\n return `item` in row && `item` in prev ? row.item : null\n }\n let windowHandle: WindowedListHandle | undefined\n let rootEl: HTMLDivElement | undefined\n const rowOfIndex = (index: number) => {\n const item = tpl() ? childCount() + index : index\n return rows().findIndex((r) => `item` in r && r.item === item)\n }\n createEffect(() => {\n const id = props.domId\n onCleanup(\n ctx.registerScroller(id, (index, align) => {\n const r = rowOfIndex(index)\n if (r < 0) return\n if (windowed()) windowHandle?.scrollToIndex(r, align)\n else {\n // Own rows only (`:scope >`): a nested List has rows of its own.\n const el = rootEl?.querySelector<HTMLElement>(`:scope > [data-xui-row=\"${r}\"]`)\n const block = align === `center` ? `center` : align === `end` ? `end` : align === `start` ? `start` : `nearest`\n el?.scrollIntoView(horizontal() ? { inline: block, block: `nearest` } : { block, inline: `nearest` })\n }\n })\n )\n })\n const renderRow = (r: Accessor<number>) => <ListRowView row={rows()[r()]} node={props.node} tpl={tpl()} sections={sections()} childCount={childCount()} part={part} />\n // Round 3: a Section body with `tree` asks for role `tree`.\n const listRole = () => ((props.rootProps as Record<string, unknown>).role === `tree` ? `tree` : `list`)\n const itemRole = () => (listRole() === `tree` ? `treeitem` : `listitem`)\n const itemAttrs = (r: number): Record<string, unknown> => {\n const row = rows()[r]\n return `item` in row ? { role: itemRole(), \"aria-setsize\": itemCount(), \"aria-posinset\": row.item + 1 } : { role: itemRole() }\n }\n const divider = (r: number) => {\n const before = dividerBefore(r)\n return before === null ? null : <div {...part.at(`divider`, before)} role=\"separator\" />\n }\n const axis = () => (horizontal() ? `horizontal` : `vertical`)\n // Flat rows, keyed like React's (`keyOf`).\n const flatKeys = createMemo(() => rowKeys(), undefined, { equals: (a, b) => a.length === b.length && a.every((k, i) => k === b[i]) })\n const flatIndex = createMemo(() => new Map(flatKeys().map((k, r) => [k, r])))\n return (\n <Show\n when={windowed()}\n fallback={\n <div ref={rootEl} {...props.rootProps} style={style()} role={listRole()}>\n <For each={flatKeys()}>\n {(key) => {\n const r = createMemo<number>((prev) => flatIndex().get(key) ?? prev!)\n const line = createMemo(() => divider(r()))\n return (\n <div class=\"xui-list-row\" data-axis={axis()} data-xui-row={r()} {...itemAttrs(r())}>\n {line() ? (\n <div class=\"xui-list-gap\" aria-hidden=\"true\" data-axis={axis()} style={css(horizontal() ? { [rtl() ? `right` : `left`]: -(step() / 2) } : { top: -(step() / 2) })}>\n {line()}\n </div>\n ) : null}\n {renderRow(r)}\n </div>\n )\n }}\n </For>\n </div>\n }\n >\n <div ref={rootEl} {...props.rootProps} style={style()} role={listRole()}>\n <WindowedList\n ref={(h) => (windowHandle = h)}\n count={rows().length}\n itemKey={keyOf}\n estimatedItemHeight={rowExtent()}\n axis={axis()}\n direction={ctx.direction}\n gap={step()}\n divider={divider}\n stickyRows={sticky() ? rows().flatMap((row, r) => (`header` in row ? [r] : [])) : undefined}\n itemProps={itemAttrs}\n renderItem={renderRow}\n />\n </div>\n </Show>\n )\n}\n\nfunction ListRowView(props: { row: ListRow; node: UiNode; tpl: ReturnType<typeof templateItems>; sections: ListSection[] | null; childCount: number; part: PartFn }): JSX.Element {\n // The row's identity as a primitive: a data change hands new row objects\n // for the same rows and must not repaint them.\n const kind = createMemo(() => {\n const row = props.row\n if (`header` in row) return `h${row.header}`\n return row.item < props.childCount ? `c${row.item}` : `t${row.item - props.childCount}`\n })\n const paint = (k: string): JSX.Element => {\n const n = Number(k.slice(1))\n if (k[0] === `h`)\n return (\n <Show when={props.sections?.[n]}>\n {(() => {\n const section = latest(() => props.sections?.[n])\n return (\n <div {...props.part.at(`section`, n)} role=\"heading\" aria-level={3}>\n {props.node.slots?.section ? (\n <LiteralScope value={{ value: section().value, count: section().count, index: n }} pointer={`${LITERAL_ROWS_ROOT}/${props.node.id.replace(/[~/]/g, `_`)}/sections/${n}`} suffix={`.${n}`} node={props.node.slots.section} />\n ) : (\n (section().value as JSX.Element)\n )}\n </div>\n )\n })()}\n </Show>\n )\n if (k[0] === `c`) return <NodeView node={props.node.children[n]} />\n return (\n <Show when={props.tpl && props.tpl.items[n]}>\n {(() => {\n const tpl = latest(() => props.tpl)\n const item = latest(() => props.tpl?.items[n])\n return <TemplateItemView tpl={tpl().tpl} item={item()} />\n })()}\n </Show>\n )\n }\n return <>{(() => {\n const k = kind()\n return untrack(() => paint(k))\n })()}</>\n}\n\n/** A node bound against a LITERAL scope (a List section header's `{value,\n * count, index}`): a read view of the data model at a synthetic pointer\n * (writes under it go nowhere). */\nfunction LiteralScope(props: { value: unknown; pointer: string; suffix: string; node: UiNode }): JSX.Element {\n const ctx = useSurfaceContext()\n const outer = useInstance()\n const view = deriveContext(ctx, {\n data: () => setPointer(ctx.data as Record<string, unknown>, props.pointer, props.value),\n setData: () => (p: string, v: unknown) => {\n if (p !== props.pointer && !p.startsWith(`${props.pointer}/`)) ctx.setData(p, v)\n },\n })\n return (\n <SurfaceContext.Provider value={view}>\n <ScopeContext.Provider value={() => props.pointer}>\n <InstanceContext.Provider value={() => `${outer()}${props.suffix}`}>\n <NodeView node={props.node} />\n </InstanceContext.Provider>\n </ScopeContext.Provider>\n </SurfaceContext.Provider>\n )\n}\n\nexport function UnknownNative(props: NativeProps): JSX.Element {\n const ctx = useSurfaceContext()\n const part = parts(props)\n return (\n <div {...props.rootProps} role=\"note\" data-xui-unknown={str(props.props.component, props.node.component)}>\n <BuiltinIcon slot=\"Unknown.root\" size={16} />\n <span {...part(`label`)}>\n {ctx.t(`unknownComponent`)} {str(props.props.component, props.node.component)}\n </span>\n </div>\n )\n}\n","// FEED-128: which natives file paints which core native (React's split,\n// file for file). natives/index.ts composes NATIVES from the per-file\n// records in THIS key order (React's), so the fan-out lanes never edit one\n// shared file; natives.test.ts checks every file paints only what it owns.\n\nexport const NATIVE_ORDER: readonly string[] = [`Box`, `List`, `Resizable`, `Text`, `Markdown`, `CodeBlock`, `Image`, `Icon`, `Video`, `AudioPlayer`, `Avatar`, `Carousel`, `Tabs`, `Segmented`, `Accordion`, `Dialog`, `Drawer`, `Popover`, `Tooltip`, `Menu`, `Toast`, `Ring`, `Spinner`, `Skeleton`, `Table`, `Chart`, `Button`, `Link`, `Toggle`, `Form`, `Input`, `Textarea`, `NumberField`, `Checkbox`, `Radio`, `ChoiceTiles`, `Switch`, `Slider`, `Select`, `SearchList`, `ChipInput`, `DatePicker`, `DateRangePicker`, `TimePicker`, `FileUpload`, `Composer`, `TreeGuides`, `Unknown`]\n\nexport const OWNERS: Readonly<Record<string, readonly string[]>> = {\n layout: [`Box`, `List`, `Unknown`],\n text: [`Text`, `Markdown`, `Icon`],\n form: [`Form`],\n \"actions\": [`Button`, `Link`, `Toggle`],\n \"chart\": [`Chart`],\n \"chips\": [`ChipInput`, `FileUpload`],\n \"choice-tiles\": [`ChoiceTiles`],\n \"code\": [`CodeBlock`],\n \"dates\": [`DatePicker`, `DateRangePicker`, `TimePicker`],\n \"feedback\": [`Ring`, `Spinner`, `Skeleton`, `TreeGuides`],\n \"inputs\": [`Input`, `Textarea`, `NumberField`, `Checkbox`, `Radio`, `Switch`, `Slider`, `Composer`],\n \"media\": [`Image`, `Video`, `AudioPlayer`, `Avatar`, `Carousel`],\n \"nav\": [`Tabs`, `Segmented`, `Accordion`],\n \"overlays\": [`Dialog`, `Drawer`, `Popover`, `Tooltip`, `Menu`, `Toast`],\n \"resizable\": [`Resizable`],\n \"search\": [`SearchList`],\n \"select\": [`Select`],\n \"table\": [`Table`],\n}\n","// FEED-128 fan-out: replaced per file. A TEMPORARY painter for every core\n// native whose Solid port has not landed yet: it paints\n// `<div data-xui-pending=\"<Component>\">` (with the node's root attributes,\n// so frames and ids still line up) and its children. Each fan-out lane fills\n// its own natives file's record (owners.ts); `PENDING_NATIVES` (index.ts)\n// is what is left; when it is empty this file goes.\n\nimport type { JSX } from \"solid-js\"\nimport type { NativeProps } from \"../node-view\"\n\nexport function Pending(props: NativeProps): JSX.Element {\n return (\n <div {...props.rootProps} data-xui-pending={props.node.component}>\n {props.children}\n </div>\n )\n}\n","// FEED-128: the media loader on Solid (React's media.ts). The policy, the\n// bounded blob-url cache and the limited fetchers are the web layer's\n// (`openMediaSource`); this follows a source: a fetched one loads once per\n// mounted consumer set (released on cleanup), a direct one is used as is, a\n// denied one is a failed load.\n\nimport { createEffect, createMemo, createSignal, onCleanup, type Accessor } from \"solid-js\"\nimport { openMediaSource, type MediaKind } from \"@exponential-at/ui/web\"\nimport type { HostPlugin } from \"./host\"\n\nexport { clearMediaCache, fetchLimited, fetchStream, mediaCacheStats, MEDIA_CACHE_IDLE_MAX } from \"@exponential-at/ui/web\"\nexport type { MediaKind } from \"@exponential-at/ui/web\"\n\nexport interface MediaSourceState {\n url: string | undefined\n error: boolean\n}\n\n/** A media source's state, live: the url to use (undefined while a fetched\n * one loads or after it failed) and whether the fetch failed. A src the\n * media policy denies has no url and `error`. */\nexport function createMediaSource(host: Accessor<HostPlugin>, src: Accessor<string>, kind: MediaKind = `image`): Accessor<MediaSourceState> {\n const plan = createMemo(() => openMediaSource(host(), src(), kind))\n const key = createMemo(() => (plan().fetched ? plan().key : ``))\n const [blob, setBlob] = createSignal<{ for: string; url?: string; error?: true } | null>(null)\n createEffect(() => {\n const k = key()\n if (!k) return\n let live = true\n const { promise, release } = plan().open()\n promise.then(\n (url) => live && setBlob({ for: k, url }),\n () => live && setBlob({ for: k, error: true })\n )\n onCleanup(() => {\n live = false\n release()\n })\n })\n return createMemo(() => {\n const p = plan()\n if (!p.fetched) return { url: p.direct, error: p.denied }\n const b = blob()\n return b?.for === p.key ? { url: b.url, error: b.error === true } : { url: undefined, error: false }\n }, undefined, { equals: (a, b) => a.url === b.url && a.error === b.error })\n}\n\n/** The src an element should use, or undefined while a fetched one loads\n * (or after it failed). */\nexport function createMediaSrc(host: Accessor<HostPlugin>, src: Accessor<string>, kind: MediaKind = `image`): Accessor<string | undefined> {\n const source = createMediaSource(host, src, kind)\n return () => source().url\n}\n","// FEED-128: the built-in markdown painter on Solid (React's markdown.tsx):\n// the web layer's parser (`parseMarkdown`) → the same elements and classes\n// through the theme's `Markdown/<part>` recipes. A host with a real\n// renderer passes it as `host.Markdown` and this one steps aside. Every\n// href passes the URL policy (denied = the label as text), every image the\n// media policy; a paragraph that is one image is a BLOCK image.\n\nimport { For, Show, createMemo, type JSX } from \"solid-js\"\nimport { Dynamic } from \"solid-js/web\"\nimport { linkHref, mediaRequestOf, parseMarkdown, type MarkdownBlock, type MarkdownInline, type MarkdownList } from \"@exponential-at/ui/web\"\nimport type { HostPlugin } from \"./host\"\nimport { createMediaSource } from \"./media\"\nimport { css } from \"./style\"\n\nexport { MAX_LINK_NESTING, MAX_LINK_DEST, MAX_BLOCK_NESTING, linkAt, wholeImage, parseList } from \"@exponential-at/ui/web\"\n\n/** A block image through the media policy and loader (alt text while it\n * loads or when it fails); a DENIED src is a paragraph of its alt text. */\nfunction MarkdownImage(props: { host: HostPlugin; src: string; alt: string }): JSX.Element {\n const media = createMediaSource(() => props.host, () => props.src)\n return (\n <Show\n when={mediaRequestOf(props.host, props.src) !== null}\n fallback={props.alt ? <p class=\"xui-Markdown-paragraph\">{props.alt}</p> : null}\n >\n <div class=\"xui-Markdown-image\" role=\"img\" aria-label={props.alt}>\n {media().url && !media().error ? <img alt=\"\" src={media().url} /> : <span class=\"xui-Markdown-imageAlt\">{props.alt}</span>}\n </div>\n </Show>\n )\n}\n\n/** A policed markdown link: a host with `openUrl` opens it. */\nfunction MarkdownLink(props: { host: HostPlugin; href: string; children: JSX.Element }): JSX.Element {\n const onClick = (e: MouseEvent) => {\n if (!props.host.openUrl) return\n e.preventDefault()\n props.host.openUrl(props.href)\n }\n return (\n <a class=\"xui-Markdown-link\" href={props.href} target=\"_blank\" rel=\"noreferrer\" onClick={onClick}>\n {props.children}\n </a>\n )\n}\n\nfunction inline(nodes: readonly MarkdownInline[], host: HostPlugin): JSX.Element[] {\n return nodes.map((n): JSX.Element => {\n if (typeof n === `string`) return n\n switch (n.type) {\n case `code`:\n return <code class=\"xui-Markdown-code\">{n.text}</code>\n case `strong`:\n return <strong>{inline(n.children, host)}</strong>\n case `em`:\n return <em>{inline(n.children, host)}</em>\n case `del`:\n return <del>{n.text}</del>\n case `link`: {\n const href = linkHref(host, n.dest)\n const label = inline(n.children, host)\n return href ? (\n <MarkdownLink host={host} href={href}>\n {label}\n </MarkdownLink>\n ) : (\n <span class=\"xui-Markdown-link\" data-denied=\"\">\n {label}\n </span>\n )\n }\n }\n return null\n })\n}\n\nfunction renderList(list: MarkdownList, host: HostPlugin): JSX.Element {\n const items = list.items.map((item) => (\n <li class=\"xui-Markdown-listItem\" data-task={item.task === undefined ? undefined : item.task ? `done` : `todo`}>\n {item.task === undefined ? null : <input type=\"checkbox\" checked={item.task} attr:checked={item.task ? `` : undefined} readOnly />}\n {item.task === undefined ? null : ` `}\n {inline(item.content, host)}\n {item.children.map((c) => renderList(c, host))}\n </li>\n ))\n return list.ordered ? <ol>{items}</ol> : <ul>{items}</ul>\n}\n\nfunction block(b: MarkdownBlock, host: HostPlugin): JSX.Element {\n switch (b.type) {\n case `paragraph`:\n return <p class=\"xui-Markdown-paragraph\">{inline(b.children, host)}</p>\n case `image`:\n return <MarkdownImage host={host} src={b.src} alt={b.alt} />\n case `codeBlock`:\n return (\n <pre class=\"xui-Markdown-codeBlock\" data-lang={b.lang}>\n <code>{b.text}</code>\n </pre>\n )\n case `heading`:\n return (\n <Dynamic component={`h${Math.min(b.level, 6)}`} class=\"xui-Markdown-heading\" data-level={b.level}>\n {inline(b.children, host)}\n </Dynamic>\n )\n case `quote`:\n return <blockquote class=\"xui-Markdown-quote\">{blocks(b.children, host)}</blockquote>\n case `list`:\n return renderList(b.list, host)\n case `table`:\n return (\n <table class=\"xui-Markdown-table\">\n <thead>\n <tr>\n <For each={b.head}>{(h, c) => <th style={css(b.align[c()] ? { textAlign: b.align[c()]! } : undefined)}>{inline(h, host)}</th>}</For>\n </tr>\n </thead>\n <tbody>\n <For each={b.rows}>\n {(r) => (\n <tr>\n <For each={r}>{(cell, c) => <td style={css(b.align[c()] ? { textAlign: b.align[c()]! } : undefined)}>{inline(cell, host)}</td>}</For>\n </tr>\n )}\n </For>\n </tbody>\n </table>\n )\n case `rule`:\n return <hr />\n }\n return null\n}\n\nfunction blocks(tree: readonly MarkdownBlock[], host: HostPlugin): JSX.Element[] {\n return tree.map((b) => block(b, host))\n}\n\n/** The markdown tree of `text` as Solid elements. */\nexport function renderMarkdown(text: string, host: HostPlugin = {}): JSX.Element[] {\n return blocks(parseMarkdown(text), host)\n}\n\nexport function BuiltinMarkdown(props: { text: string; class?: string; host?: HostPlugin }): JSX.Element {\n // Parsed once per text (and host).\n const tree = createMemo(() => renderMarkdown(props.text, props.host))\n return <div class={props.class ? `xui-md ${props.class}` : `xui-md`}>{tree()}</div>\n}\n","// FEED-128 (React's natives/text.tsx): Text (`live` → an aria-live region;\n// EXP-1324 `shimmer` → `data-xui-shimmer`), Markdown (`lines` truncation),\n// Icon.\n\nimport type { JSX } from \"solid-js\"\nimport { Dynamic } from \"solid-js/web\"\nimport { displayString } from \"@exponential-at/ui\"\nimport { useSurfaceContext } from \"../context\"\nimport { IconGlyph } from \"../icons\"\nimport { BuiltinMarkdown } from \"../markdown\"\nimport { mergeStyle, type NativeProps } from \"../node-view\"\nimport { num, str } from \"./shared\"\n\nexport function TextNative(props: NativeProps): JSX.Element {\n const lines = () => num(props.props.lines, 0)\n const align = () => (props.props.align === `end` ? `end` : props.props.align === `center` ? `center` : props.props.align === `start` ? `start` : undefined)\n // `align` is a base-layer rule (`data-xui-align`), so a node style\n // `textAlign` (the node layer) wins over it.\n const live = () => (props.props.live === `polite` || props.props.live === `assertive` ? (props.props.live as `polite` | `assertive`) : undefined)\n return (\n <span\n {...props.rootProps}\n aria-live={live()}\n aria-atomic={live() ? true : undefined}\n data-xui-align={align()}\n data-lines={lines() > 0 ? lines() : undefined}\n data-clamp={lines() > 1 ? `` : undefined}\n data-xui-shimmer={props.props.shimmer === true ? `` : undefined}\n style={mergeStyle(props.rootProps, lines() > 1 ? { WebkitLineClamp: lines() } : undefined)}\n >\n {displayString(props.props.text)}\n </span>\n )\n}\n\nexport function MarkdownNative(props: NativeProps): JSX.Element {\n const ctx = useSurfaceContext()\n const text = () => displayString(props.props.text)\n const lines = () => num(props.props.lines, 0)\n return (\n <div {...props.rootProps} data-lines={lines() > 0 ? lines() : undefined} style={mergeStyle(props.rootProps, lines() > 0 ? { WebkitLineClamp: lines() } : undefined)}>\n {ctx.host.Markdown ? <Dynamic component={ctx.host.Markdown} text={text()} class=\"xui-md\" /> : <BuiltinMarkdown text={text()} host={ctx.host} />}\n </div>\n )\n}\n\nexport function IconNative(props: NativeProps): JSX.Element {\n const ctx = useSurfaceContext()\n const name = () => str(props.props.name, `ui-icon-placeholder`)\n const label = () => str(props.props.label)\n return (\n <span {...props.rootProps} role={label() ? `img` : undefined} aria-label={label() || undefined} aria-hidden={label() ? undefined : true}>\n <IconGlyph icons={ctx.host.icons} name={name()} />\n </span>\n )\n}\n","// FEED-128 (React's natives/bound.ts): when a native's state prop is a\n// DataBinding, the renderer writes the user's change to that path itself\n// AND fires `change`. `createBoundState` is that rule for every controlled\n// native: a local mirror (a press shows at once), the host's / data\n// model's value wins whenever it changes (by `key`), the write goes to the\n// bound path (relative paths against the node's scope).\n\nimport { createComputed, createMemo, createSignal, on, untrack, type Accessor } from \"solid-js\"\nimport { boundPath } from \"@exponential-at/ui/web\"\nimport type { UiNode } from \"@exponential-at/ui\"\nimport { useSurfaceContext } from \"../context\"\n\nexport function createBoundState<T>(node: Accessor<UiNode>, scope: Accessor<string>, prop: string, external: Accessor<T>, key: (v: T) => string = (v) => JSON.stringify(v) ?? ``): [Accessor<T>, (next: T, written?: unknown) => void, Accessor<string | undefined>] {\n const ctx = useSurfaceContext()\n const path = createMemo(() => boundPath(node().props, prop, scope()))\n const [value, setValue] = createSignal<T>(untrack(external))\n const externalKey = createMemo(() => key(external()))\n let last = untrack(externalKey)\n createComputed(\n on(\n externalKey,\n (k) => {\n if (last === k) return\n last = k\n setValue(() => untrack(external))\n },\n { defer: true }\n )\n )\n // `written` = the value the bound path receives when it differs from the\n // local shape (a multiple Select bound to a string).\n const set = (next: T, written: unknown = next) => {\n setValue(() => next)\n last = key(next)\n const p = untrack(path)\n if (p) ctx.setData(p, written)\n }\n return [value, set, path]\n}\n","// FEED-128 (React's natives/actions.tsx): Button, Link, Toggle. A Button is\n// OPTIMISTIC: it goes disabled (and `aria-busy`) the moment it is pressed\n// and stays so until the host's `onAction` promise settles. A `submit`\n// Button submits the enclosing Form (and shows loading while the Form is\n// `busy`).\n//\n// EXP-1259 (feedback-states.json `pending`): loading refuses presses at\n// once but SHOWS only after `PENDING_DELAY_MS` (a fast action never\n// flashes): then the icon slot is the spinner and the label `pendingLabel`,\n// at no less than the idle width.\n//\n// Toggle paints Radix's Toggle DOM itself (`aria-pressed`, `data-state=\n// \"on|off\"`): Kobalte's ToggleButton writes `data-pressed` instead.\n\nimport { Show, createEffect, createMemo, createSignal, onCleanup, type Accessor, type Component, type JSX } from \"solid-js\"\nimport { PENDING_DELAY_MS } from \"@exponential-at/ui\"\nimport { linkHref } from \"@exponential-at/ui/web\"\nimport { useSurfaceContext } from \"../context\"\nimport { useForm } from \"../form\"\nimport { CHROME, IconGlyph, PaintIcon } from \"../icons\"\nimport type { NativeProps } from \"../node-view\"\nimport { createBoundState } from \"./bound\"\nimport { bool, css, parts, str } from \"./shared\"\n\n/** React's `usePending`: `pending` while the last tracked promise runs. */\nexport function createPending(): { pending: Accessor<boolean>; track: (result: void | Promise<void>) => void } {\n const [pending, setPending] = createSignal(false)\n let mounted = true\n onCleanup(() => (mounted = false))\n const track = (result: void | Promise<void>) => {\n if (result && typeof (result as Promise<void>).then === `function`) {\n setPending(true)\n ;(result as Promise<void>).then(\n () => mounted && setPending(false),\n () => mounted && setPending(false)\n )\n }\n }\n return { pending, track }\n}\n\n/** `loading` held for `PENDING_DELAY_MS` (false again at once when it ends). */\nexport function createPendingShown(loading: Accessor<boolean>): Accessor<boolean> {\n const [shown, setShown] = createSignal(false)\n createEffect(() => {\n if (!loading()) {\n setShown(false)\n return\n }\n const t = setTimeout(() => setShown(true), PENDING_DELAY_MS)\n onCleanup(() => clearTimeout(t))\n })\n return () => loading() && shown()\n}\n\nexport function ButtonNative(props: NativeProps): JSX.Element {\n const ctx = useSurfaceContext()\n const part = parts(props)\n const form = useForm()\n const submit = () => bool(props.props.submit) && form !== null\n const { pending, track } = createPending()\n const label = () => str(props.props.label)\n const icon = () => str(props.props.icon)\n const loading = () => bool(props.props.loading) || pending() || (submit() && form!.busy)\n const disabled = () => bool(props.props.disabled) || loading()\n const iconOnly = () => props.props.size === `icon`\n const hasChild = () => props.node.children.length > 0\n const shown = createPendingShown(loading)\n const pendingLabel = () => str(props.props.pendingLabel)\n const shownLabel = () => (shown() && pendingLabel() ? pendingLabel() : label())\n // The idle width is the pending state's minimum: measured as the spinner\n // is about to show (the memo runs before the DOM updates, so it still\n // paints the idle content; React measures it after every idle render).\n let ref: HTMLButtonElement | undefined\n const idleWidth = createMemo<number | null>(() => (shown() ? (ref?.offsetWidth ?? 0) || null : null))\n // React leaves an emptied `style=\"\"` once it wrote one.\n let styled = false\n const style = () => {\n const root = props.rootProps.style as Record<string, string> | undefined\n const w = shown() ? idleWidth() : null\n const out = w ? { ...(root ?? {}), ...css({ minWidth: w }) } : root\n if (out) styled = true\n return out ?? (styled ? {} : undefined)\n }\n const xs = () => [...(ctx.states ?? []), disabled() ? `disabled` : ``, pending() ? `pending` : ``].filter(Boolean).join(` `) || undefined\n return (\n <button\n {...props.rootProps}\n ref={ref}\n style={style()}\n type=\"button\"\n disabled={disabled()}\n aria-busy={loading() || undefined}\n data-pending={shown() ? `true` : undefined}\n aria-label={iconOnly() && label() ? label() : undefined}\n data-xs={xs()}\n data-submit={submit() ? `true` : undefined}\n onClick={(e) => {\n e.stopPropagation()\n track(props.emit(`press`))\n if (submit()) form!.submit()\n }}\n >\n {shown() ? (\n <span {...part(`spinner`)}>\n <PaintIcon icon={CHROME.spinner} aria-hidden=\"true\" />\n </span>\n ) : icon() ? (\n <span {...part(`icon`)}>\n <IconGlyph icons={ctx.host.icons} name={icon()} />\n </span>\n ) : null}\n <Show when={hasChild()} fallback={!iconOnly() && shownLabel() ? <span {...part(`label`)}>{shownLabel()}</span> : null}>\n {props.children}\n </Show>\n </button>\n )\n}\n\nexport function LinkNative(props: NativeProps): JSX.Element {\n const ctx = useSurfaceContext()\n const raw = () => str(props.props.href)\n // VAPP-103: the href passes the URL policy; a denied one paints as text.\n const href = () => linkHref(ctx.host, raw())\n const external = () => bool(props.props.external)\n const label = () => str(props.props.label) || raw()\n return (\n <a\n {...props.rootProps}\n href={href()}\n data-denied={raw() && !href() ? `` : undefined}\n target={href() && external() ? `_blank` : undefined}\n rel={href() && external() ? `noreferrer noopener` : undefined}\n onClick={(e) => {\n const handled = props.emit(`press`)\n const h = href()\n if (!h) e.preventDefault()\n else if (!external() && handled !== undefined) e.preventDefault()\n else if (ctx.host.openUrl) {\n // A host opener takes every allowed href, external ones too (a\n // new tab is only the fallback without one).\n e.preventDefault()\n ctx.openUrl(h)\n }\n }}\n >\n {label()}\n </a>\n )\n}\n\nexport function ToggleNative(props: NativeProps): JSX.Element {\n const ctx = useSurfaceContext()\n const part = parts(props)\n const [pressed, setPressed] = createBoundState(() => props.node, () => props.scope, `pressed`, () => bool(props.props.pressed))\n const icon = () => str(props.props.icon)\n const label = () => str(props.props.label)\n return (\n <button\n type=\"button\"\n aria-pressed={pressed()}\n data-state={pressed() ? `on` : `off`}\n {...props.rootProps}\n aria-label={icon() && label() ? label() : undefined}\n onClick={() => {\n const next = !pressed()\n setPressed(next)\n void props.emit(`change`, { pressed: next }, { pressed: next })\n }}\n >\n {icon() ? (\n <span {...part(`icon`)}>\n <IconGlyph icons={ctx.host.icons} name={icon()} />\n </span>\n ) : null}\n {label() ? <span {...part(`label`)}>{label()}</span> : null}\n </button>\n )\n}\n\nexport const NATIVES_ACTIONS: Record<string, Component<NativeProps>> = {\n Button: ButtonNative,\n Link: LinkNative,\n Toggle: ToggleNative,\n}\n","// FEED-128 (React's natives/chart.tsx): Chart, kinds bar, stackedBar, line,\n// area, pie, donut and sparkline. The width is the BOX's (measured, no fixed\n// viewBox, so text is never stretched); the numbers every painter shares\n// come from `@exponential-at/ui` (`chartExtent`, `niceTicks`, `seriesColor`,\n// `DONUT_HOLE`). Pie and donut draw one RING per series (slices =\n// categories). The legend shows with 2+ series or slices; the tooltip part\n// follows hover and, with the chart focused, ArrowLeft/ArrowRight between\n// categories; screen readers get a summary label plus a data table. In RTL\n// the cartesian kinds MIRROR; pie and donut do not.\n//\n// Solid: the geometry is ONE memo of plain numbers; the SVG element stays\n// put (a keyboard highlight keeps the focus), and the highlight (`active`)\n// only drives attribute bindings, the band and the tooltip.\n\nimport { createMemo, createSignal, createUniqueId, For, Index, Show, type Component, type JSX } from \"solid-js\"\nimport { chartExtent, chartSummaryParams, niceTicks, seriesColor, DONUT_HOLE } from \"@exponential-at/ui\"\nimport { tokenVar } from \"@exponential-at/ui/web\"\nimport { useSurfaceContext } from \"../context\"\nimport { mergeStyle, type NativeProps } from \"../node-view\"\nimport { createElementSize } from \"../platform\"\nimport { arr, bool, css, num, objects, parts, str } from \"./shared\"\n\ninterface Series {\n name: string\n values: number[]\n tone?: string\n}\n\nconst colorVar = (i: number, tone?: string) => tokenVar(seriesColor(i, tone)) ?? `currentColor`\nconst AXIS_FONT = 11\n\ntype Arc = { si: number; i: number; d: string; label: { x: number; y: number; v: number } | null }\ntype Bar = { si: number; i: number; x: number; y: number; w: number; h: number; rx: number; fill: string; label: { x: number; y: number; middle: boolean; v: number } | null }\ntype Line = { si: number; color: string; line: string; area: string | null; dots: { i: number; cx: number; cy: number }[] }\n\nexport function ChartNative(props: NativeProps): JSX.Element {\n const ctx = useSurfaceContext()\n const part = parts(props)\n const id = createUniqueId()\n const kind = () => str(props.props.kind, `bar`)\n const sparkline = () => kind() === `sparkline`\n const round = () => kind() === `pie` || kind() === `donut`\n const series = createMemo((): Series[] => objects<Series>(props.props.series).map((s) => ({ name: str(s?.name), tone: s?.tone, values: arr<unknown>(s?.values).map((v) => num(v, NaN)) })))\n const categories = createMemo(() => arr<unknown>(props.props.categories).map(String))\n const n = () => Math.max(categories().length, Math.max(0, ...series().map((s) => s.values.length)))\n // Round 2 §7: `height` = the WHOLE chart box (title, legend and axes\n // inside); the plot takes what is left of it.\n const boxHeight = () => Math.max(16, num(props.props.height, sparkline() ? 24 : 200))\n const showAxes = () => !sparkline() && !round() && props.props.showAxes !== false\n const showGrid = () => !sparkline() && !round() && props.props.showGrid !== false\n const showValues = () => bool(props.props.showValues)\n const [box, setBox] = createSignal<HTMLDivElement | null>(null)\n const size = createElementSize(box, 320)\n const fmt = (v: number) => ctx.formatter.number(v)\n const [active, setActive] = createSignal<number | null>(null)\n let plotRef: SVGSVGElement | undefined\n\n const geo = createMemo(() => {\n const k = kind()\n const sp = sparkline()\n const rd = round()\n const ss = series()\n const nn = n()\n const width = Math.max(40, size().width || 320)\n const height = Math.max(16, size().measured && size().height > 0 ? size().height : boxHeight())\n const ext = chartExtent(k, ss, props.props.min === undefined ? undefined : num(props.props.min), props.props.max === undefined ? undefined : num(props.props.max))\n const ticks = sp || rd ? { min: ext.min, max: ext.max, step: 0, ticks: [] as number[] } : niceTicks(ext.min, ext.max, 5)\n const lo = ticks.min\n const hi = ticks.max === ticks.min ? ticks.min + 1 : ticks.max\n const tickText = ticks.ticks.map((t) => fmt(t))\n const yLabel = str(props.props.yLabel)\n const xLabel = str(props.props.xLabel)\n const axes = showAxes()\n const sv = showValues()\n const pad = {\n l: (axes ? Math.max(...tickText.map((t) => t.length), 1) * AXIS_FONT * 0.62 + 8 : sp ? 1 : 4) + (yLabel ? 16 : 0),\n r: sp ? 1 : 8,\n t: sp ? 2 : sv ? 16 : 8,\n b: (axes ? AXIS_FONT + 10 : sp ? 2 : 4) + (xLabel ? 16 : 0),\n }\n const innerW = Math.max(1, width - pad.l - pad.r)\n const innerH = Math.max(1, height - pad.t - pad.b)\n const y = (v: number) => pad.t + innerH - ((Math.min(hi, Math.max(lo, v)) - lo) / (hi - lo)) * innerH\n const slot = innerW / Math.max(1, nn)\n const cx = (i: number) => (sp ? pad.l + (nn <= 1 ? innerW / 2 : (innerW * i) / (nn - 1)) : pad.l + slot * (i + 0.5))\n const zero = y(Math.max(lo, Math.min(hi, 0)))\n const rtl = ctx.direction === `rtl` && !rd\n const mx = (x: number) => (rtl ? width - x : x)\n const px = (i: number) => mx(cx(i))\n\n const arcs: Arc[] = []\n const bars: Bar[] = []\n const lines: (Line | null)[] = []\n const lineValues: { si: number; i: number; x: number; y: number; v: number }[] = []\n if (rd) {\n const R = Math.min(innerW, innerH) / 2\n const ox = pad.l + innerW / 2\n const oy = pad.t + innerH / 2\n const inner = k === `donut` ? R * DONUT_HOLE : 0\n const ring = (R - inner) / Math.max(1, ss.length)\n ss.forEach((s, si) => {\n const r0 = inner + ring * si\n const r1 = r0 + ring\n const total = s.values.reduce((a, b) => a + (Number.isFinite(b) && b > 0 ? b : 0), 0) || 1\n let a0 = -Math.PI / 2\n s.values.forEach((v, i) => {\n const share = (Number.isFinite(v) && v > 0 ? v : 0) / total\n const a1 = a0 + share * 2 * Math.PI\n if (share > 0) {\n const large = a1 - a0 > Math.PI ? 1 : 0\n const p = (r: number, a: number) => `${ox + r * Math.cos(a)},${oy + r * Math.sin(a)}`\n const full = share >= 0.9999\n const d = full\n ? `M${ox - r1},${oy} A${r1},${r1} 0 1 1 ${ox + r1},${oy} A${r1},${r1} 0 1 1 ${ox - r1},${oy} ${r0 > 0 ? `M${ox - r0},${oy} A${r0},${r0} 0 1 0 ${ox + r0},${oy} A${r0},${r0} 0 1 0 ${ox - r0},${oy}` : ``}Z`\n : r0 > 0\n ? `M${p(r1, a0)} A${r1},${r1} 0 ${large} 1 ${p(r1, a1)} L${p(r0, a1)} A${r0},${r0} 0 ${large} 0 ${p(r0, a0)} Z`\n : `M${ox},${oy} L${p(r1, a0)} A${r1},${r1} 0 ${large} 1 ${p(r1, a1)} Z`\n const mid = (a0 + a1) / 2\n const rm = (r0 + r1) / 2\n arcs.push({ si, i, d, label: sv ? { x: ox + rm * Math.cos(mid), y: oy + rm * Math.sin(mid), v } : null })\n }\n a0 = a1\n })\n })\n } else if (k === `line` || k === `area` || sp) {\n ss.forEach((s, si) => {\n const pts = s.values.map((v, i) => (Number.isFinite(v) ? [px(i), y(v)] : null)).filter((p): p is number[] => p !== null)\n if (pts.length === 0) return void lines.push(null)\n const line = `M${pts.map((p) => p.join(`,`)).join(` L`)}`\n lines.push({\n si,\n color: colorVar(si, s.tone),\n line,\n area: k === `area` ? `${line} L${pts[pts.length - 1][0]},${zero} L${pts[0][0]},${zero} Z` : null,\n dots: sp ? [] : s.values.flatMap((v, i) => (Number.isFinite(v) ? [{ i, cx: px(i), cy: y(v) }] : [])),\n })\n })\n if (sv) ss.forEach((s, si) => s.values.forEach((v, i) => (Number.isFinite(v) ? lineValues.push({ si, i, x: px(i), y: y(v) - 6, v }) : undefined)))\n } else {\n const stacked = k === `stackedBar`\n const groupW = slot * 0.72\n const bw = stacked ? groupW : groupW / Math.max(1, ss.length)\n for (let i = 0; i < nn; i++) {\n let acc = 0\n ss.forEach((s, si) => {\n const v = s.values[i]\n if (!Number.isFinite(v)) return\n const x0 = pad.l + slot * i + (slot - groupW) / 2 + (stacked ? 0 : bw * si)\n const from = stacked ? acc : 0\n const to = stacked ? acc + Math.max(0, v) : v\n if (stacked) acc = to\n const top = Math.min(y(from), y(to))\n const h = Math.abs(y(from) - y(to))\n const barW = Math.max(1, bw - (stacked ? 0 : 2))\n bars.push({ si, i, x: rtl ? width - x0 - barW : x0, y: top, w: barW, h: Math.max(0, h), rx: stacked ? 0 : 2, fill: colorVar(si, s.tone), label: sv ? { x: mx(x0 + bw / 2), y: stacked ? top + h / 2 : top - 4, middle: stacked, v } : null })\n })\n }\n }\n return { width, height, ticks, tickText, yLabel, xLabel, pad, innerW, innerH, y, slot, zero, rtl, mx, px, arcs, bars, lines, lineValues }\n })\n\n const legendEntries = () => (round() ? categories().map((c, i) => ({ name: c, color: colorVar(i) })) : series().map((s, i) => ({ name: s.name, color: colorVar(i, s.tone) })))\n const legend = () => props.props.showLegend !== false && !sparkline() && legendEntries().length >= 2\n const title = () => str(props.props.title)\n const summary = () => {\n const summaryParams = chartSummaryParams(series())\n const summaryText = ctx.t(`chartSummary`, { series: summaryParams.series, min: fmt(summaryParams.min), max: fmt(summaryParams.max) })\n return title() ? `${title()}: ${summaryText}` : summaryText\n }\n\n const onKey = (e: KeyboardEvent) => {\n const nn = n()\n if (nn === 0) return\n if (e.key === `ArrowRight` || e.key === `ArrowLeft`) {\n e.preventDefault()\n const rtl = ctx.direction === `rtl`\n const delta = (e.key === `ArrowRight`) !== rtl ? 1 : -1\n setActive((a) => (a === null ? (delta > 0 ? 0 : nn - 1) : (a + delta + nn) % nn))\n } else if (e.key === `Home`) setActive(0)\n else if (e.key === `End`) setActive(nn - 1)\n else if (e.key === `Escape`) setActive(null)\n }\n const onMove = (e: PointerEvent) => {\n const nn = n()\n if (round() || nn === 0) return\n const r = plotRef?.getBoundingClientRect()\n if (!r) return\n const g = geo()\n const x = (g.rtl ? r.right - e.clientX : e.clientX - r.left) - g.pad.l\n const i = sparkline() ? Math.round((x / g.innerW) * (nn - 1)) : Math.floor(x / g.slot)\n setActive(i >= 0 && i < nn ? i : null)\n }\n const dim = (i: number, low: number) => (active() === null || active() === i ? 1 : low)\n const valueLabel = () => part(`valueLabel`)\n\n const body = (): JSX.Element => {\n const g = geo()\n if (round())\n return (\n <>\n {g.arcs.map((a) => (\n <path d={a.d} fill={colorVar(a.i)} fill-rule=\"evenodd\" stroke=\"var(--xui-color-background)\" stroke-width={1} data-category={a.i} data-active={active() === a.i ? `` : undefined} opacity={dim(a.i, 0.55)} onPointerEnter={() => setActive(a.i)} />\n ))}\n {g.arcs.map((a) =>\n a.label ? (\n <text {...valueLabel()} x={a.label.x} y={a.label.y} text-anchor=\"middle\" dominant-baseline=\"middle\">\n {fmt(a.label.v)}\n </text>\n ) : null\n )}\n </>\n )\n if (kind() === `line` || kind() === `area` || sparkline())\n return (\n <>\n {g.lines.map((l) =>\n l ? (\n <g data-series={l.si}>\n {l.area !== null ? <path d={l.area} fill={l.color} opacity={0.18} /> : null}\n <path d={l.line} fill=\"none\" stroke={l.color} stroke-width={sparkline() ? 1.5 : 2} stroke-linejoin=\"round\" stroke-linecap=\"round\" />\n {l.dots.map((p) => (\n <circle cx={p.cx} cy={p.cy} r={active() === p.i ? 4 : 2.5} fill={l.color} />\n ))}\n </g>\n ) : null\n )}\n {g.lineValues.map((v) => (\n <text {...valueLabel()} x={v.x} y={v.y} text-anchor=\"middle\">\n {fmt(v.v)}\n </text>\n ))}\n </>\n )\n return (\n <>\n {g.bars.map((b) => (\n <rect x={b.x} y={b.y} width={b.w} height={b.h} rx={b.rx} fill={b.fill} opacity={dim(b.i, 0.6)} />\n ))}\n {g.bars.map((b) =>\n b.label ? (\n <text {...valueLabel()} x={b.label.x} y={b.label.y} text-anchor=\"middle\" dominant-baseline={b.label.middle ? `middle` : undefined}>\n {fmt(b.label.v)}\n </text>\n ) : null\n )}\n </>\n )\n }\n\n const tooltip = (): JSX.Element => {\n const a = active()\n if (a === null || a >= n()) return null\n const g = geo()\n const tipX = round() ? g.pad.l + g.innerW / 2 : g.px(a)\n const cat = categories()[a]\n return (\n <div {...part(`tooltip`)} role=\"presentation\" style={css({ position: `absolute`, left: Math.min(Math.max(0, tipX - 60), g.width - 120), top: g.pad.t, pointerEvents: `none` })} data-category={a}>\n {cat ? <strong>{cat}</strong> : null}\n {series().map((s, si) => (\n <span class=\"xui-chart-tip-row\">\n <i style={css({ background: round() ? colorVar(a) : colorVar(si, s.tone) })} />\n {s.name ? `${s.name}: ` : ``}\n {Number.isFinite(s.values[a]) ? fmt(s.values[a]) : `—`}\n </span>\n ))}\n </div>\n )\n }\n\n return (\n <div {...props.rootProps} style={mergeStyle(props.rootProps, { height: boxHeight() })} data-kind={kind()} data-mirrored={geo().rtl ? `true` : undefined}>\n <Show when={title()}>\n <span {...part(`title`)} id={`${id}-title`}>\n {title()}\n </span>\n </Show>\n <div ref={setBox} class=\"xui-chart-plot\">\n <svg\n ref={plotRef}\n width={geo().width}\n height={geo().height}\n viewBox={`0 0 ${geo().width} ${geo().height}`}\n role=\"img\"\n aria-label={summary()}\n tabindex={sparkline() ? undefined : 0}\n onKeyDown={(e) => (sparkline() ? undefined : onKey(e))}\n onPointerMove={(e) => (sparkline() ? undefined : onMove(e))}\n onPointerLeave={() => setActive(null)}\n onBlur={() => setActive(null)}\n class=\"xui-chart-svg\"\n >\n <Show when={showGrid()}>\n <g {...part(`grid`)} stroke=\"currentColor\" stroke-width={1} shape-rendering=\"crispEdges\">\n <For each={geo().ticks.ticks}>{(t) => <line x1={geo().mx(geo().pad.l)} x2={geo().mx(geo().width - geo().pad.r)} y1={Math.round(geo().y(t)) + 0.5} y2={Math.round(geo().y(t)) + 0.5} />}</For>\n </g>\n </Show>\n <Show when={!round() && active() !== null && !sparkline()}>\n <rect class=\"xui-chart-band\" x={geo().rtl ? geo().width - geo().pad.l - geo().slot * (active()! + 1) : geo().pad.l + geo().slot * active()!} y={geo().pad.t} width={geo().slot} height={geo().innerH} fill=\"currentColor\" opacity={0.06} />\n </Show>\n {body()}\n <Show when={showAxes()}>\n <g {...part(`axis`)} fill=\"currentColor\" font-size={AXIS_FONT}>\n <line x1={geo().mx(geo().pad.l)} x2={geo().mx(geo().width - geo().pad.r)} y1={geo().zero} y2={geo().zero} stroke=\"currentColor\" stroke-width={1} opacity={0.6} shape-rendering=\"crispEdges\" />\n <Index each={geo().ticks.ticks}>\n {(t, i) => (\n <text x={geo().mx(geo().pad.l - 6)} y={geo().y(t())} text-anchor={geo().rtl ? `start` : `end`} dominant-baseline=\"middle\">\n {geo().tickText[i]}\n </text>\n )}\n </Index>\n <Index each={categories()}>\n {(c, i) => (\n <text x={geo().px(i)} y={geo().pad.t + geo().innerH + AXIS_FONT + 4} text-anchor=\"middle\">\n {c()}\n </text>\n )}\n </Index>\n <Show when={geo().xLabel}>\n <text x={geo().mx(geo().pad.l + geo().innerW / 2)} y={geo().height - 3} text-anchor=\"middle\">\n {geo().xLabel}\n </text>\n </Show>\n <Show when={geo().yLabel}>\n <text x={0} y={0} transform={`translate(${geo().rtl ? geo().width - AXIS_FONT : AXIS_FONT}, ${geo().pad.t + geo().innerH / 2}) rotate(${geo().rtl ? 90 : -90})`} text-anchor=\"middle\">\n {geo().yLabel}\n </text>\n </Show>\n </g>\n </Show>\n </svg>\n {tooltip()}\n </div>\n <Show when={legend()}>\n <div {...part(`legend`)}>\n <For each={legendEntries()}>\n {(e) => (\n <span>\n <i style={css({ background: e.color })} />\n {e.name}\n </span>\n )}\n </For>\n </div>\n </Show>\n <Show when={!sparkline()}>\n <table class=\"xui-sr-only\">\n <Show when={title()}>\n <caption>{title()}</caption>\n </Show>\n <thead>\n <tr>\n <th scope=\"col\" />\n <For each={series()}>{(s) => <th scope=\"col\">{s.name}</th>}</For>\n </tr>\n </thead>\n <tbody>\n <For each={Array.from({ length: n() }, (_, i) => i)}>\n {(i) => (\n <tr>\n <th scope=\"row\">{categories()[i] ?? String(i + 1)}</th>\n <For each={series()}>{(s) => <td>{Number.isFinite(s.values[i]) ? fmt(s.values[i]) : ``}</td>}</For>\n </tr>\n )}\n </For>\n </tbody>\n </table>\n </Show>\n </div>\n )\n}\n\nexport const NATIVES_CHART: Record<string, Component<NativeProps>> = { Chart: ChartNative }\n","// FEED-131: Radix Popover's DOM painted by hand for the date and time\n// pickers (React's PopoverPrimitive.Portal + Content, align start,\n// `OVERLAY_OFFSET`, `OVERLAY_PADDING`): the portalled\n// `data-radix-popper-content-wrapper` (imperative style writes), the\n// content's `data-side`/`data-align`/`tabindex=-1`/`--radix-popover-*`\n// variables, non-modal dismissal (outside pointer/focus, Escape), the Tab\n// loop, the focus return and Radix `Presence`. The overlays' `Popper` +\n// `createLayer` + `createFocusScope` are the general machinery; this one is\n// kept as the pickers were ported (its own `tabbables` selector).\n\nimport { Show, createEffect, createSignal, on, onCleanup, onMount, untrack, type JSX } from \"solid-js\"\nimport { Portal } from \"solid-js/web\"\nimport { autoUpdate, computePosition, flip, limitShift, offset, shift, size, type Placement } from \"@floating-ui/dom\"\nimport { OVERLAY_OFFSET, OVERLAY_PADDING } from \"@exponential-at/ui\"\nimport { transformOrigin } from \"./popper\"\n\nconst TABBABLE = `button:not([disabled]),input:not([disabled]),select:not([disabled]),textarea:not([disabled]),a[href],[tabindex]`\n\nfunction tabbables(container: HTMLElement): HTMLElement[] {\n return Array.from(container.querySelectorAll<HTMLElement>(TABBABLE)).filter((el) => el.tabIndex >= 0 && !el.closest(`[hidden],[inert]`))\n}\n\nexport interface PickerPopoverProps {\n open: boolean\n setOpen: (open: boolean) => void\n trigger: () => HTMLElement | undefined\n contentId: string\n /** The content's own attributes (the part, role, aria-label, overlay…). */\n attrs: Record<string, unknown>\n /** Radix's `onOpenAutoFocus` (the default prevented): where focus goes. */\n onOpenAutoFocus: (content: HTMLElement) => void\n onPointerOver?: (e: PointerEvent) => void\n onFocusIn?: (e: FocusEvent) => void\n /** The surface's overlay layer (the portal's mount) and reading direction. */\n portal: HTMLElement | null\n dir: `ltr` | `rtl`\n children: JSX.Element\n}\n\n/** PopoverPrimitive.Portal + Content (align start, `OVERLAY_OFFSET`,\n * `OVERLAY_PADDING`), non-modal, inside Radix's `Presence`: a close keeps\n * the content (`data-state=\"closed\"`) mounted while its exit animation\n * runs, then unmounts it. */\nexport function PickerPopover(props: PickerPopoverProps): JSX.Element {\n const [present, setPresent] = createSignal(untrack(() => props.open))\n let node: HTMLElement | undefined\n let prevAnimation = `none`\n const animationName = () => (node ? getComputedStyle(node).animationName || `none` : `none`)\n createEffect(\n on(\n () => props.open,\n (open, was) => {\n if (open) {\n setPresent(true)\n return\n }\n if (!node || !was) {\n setPresent(false)\n return\n }\n const current = animationName()\n if (current === `none` || getComputedStyle(node).display === `none` || prevAnimation === current) setPresent(false)\n },\n { defer: true }\n )\n )\n const presence: PresenceHooks = {\n mount: (el) => {\n node = el\n prevAnimation = animationName()\n },\n unmount: () => {\n node = undefined\n prevAnimation = `none`\n },\n start: (e) => {\n if (e.target === node) prevAnimation = animationName()\n },\n end: (e) => {\n if (!node || e.target !== node || !animationName().includes(CSS.escape(e.animationName)) || untrack(() => props.open)) return\n const fill = node.style.animationFillMode\n const el = node\n el.style.animationFillMode = `forwards`\n setTimeout(() => {\n if (el.style.animationFillMode === `forwards`) el.style.animationFillMode = fill\n })\n setPresent(false)\n },\n }\n return (\n <Show when={present()}>\n <PopoverContent {...props} presence={presence} />\n </Show>\n )\n}\n\ninterface PresenceHooks {\n mount: (el: HTMLElement) => void\n unmount: () => void\n start: (e: AnimationEvent) => void\n end: (e: AnimationEvent) => void\n}\n\nfunction PopoverContent(props: PickerPopoverProps & { presence: PresenceHooks }): JSX.Element {\n const [placement, setPlacement] = createSignal<Placement>(`bottom-start`)\n const [positioned, setPositioned] = createSignal(false)\n const [wrapper, setWrapper] = createSignal<HTMLDivElement>()\n let content: HTMLDivElement | undefined\n let interactedOutside = false\n let pointerDownOutside = false\n const side = () => placement().split(`-`)[0]\n const align = () => placement().split(`-`)[1] ?? `center`\n const mountWrapper = (el: HTMLDivElement) => {\n // PopperContent's wrapper: `floatingStyles` before the first placement\n // (`translate(0, -200%)` keeps it off the page while measuring).\n el.setAttribute(`data-radix-popper-content-wrapper`, ``)\n el.style.position = `fixed`\n el.style.left = `0px`\n el.style.top = `0px`\n el.style.transform = `translate(0, -200%)`\n el.style.minWidth = `max-content`\n setWrapper(el)\n }\n createEffect(() => wrapper()?.setAttribute(`dir`, props.dir))\n // Radix Popover's non-modal `onInteractOutside`.\n const interactOutside = (target: EventTarget | null, kind: `pointerdown` | `focusin`): boolean => {\n interactedOutside = true\n if (kind === `pointerdown`) pointerDownOutside = true\n const t = props.trigger()\n if (t && target instanceof Node && t.contains(target)) return false\n if (kind === `focusin` && pointerDownOutside) return false\n return true\n }\n const inside = (target: EventTarget | null) => target instanceof Node && Boolean(content?.contains(target))\n onMount(() => {\n const floating = wrapper()\n const anchor = props.trigger()\n if (!floating || !anchor || !content) return\n const z = getComputedStyle(content).zIndex\n if (z) floating.style.zIndex = z\n let live = true\n const detect = { padding: OVERLAY_PADDING, boundary: [] as Element[], altBoundary: false }\n const update = () =>\n void computePosition(anchor, floating, {\n strategy: `fixed`,\n placement: `bottom-start`,\n middleware: [\n offset({ mainAxis: OVERLAY_OFFSET, alignmentAxis: 0 }),\n shift({ mainAxis: true, crossAxis: false, limiter: limitShift(), ...detect }),\n flip({ ...detect }),\n size({\n ...detect,\n apply: ({ elements, rects, availableWidth, availableHeight }) => {\n const s = elements.floating.style\n s.setProperty(`--radix-popper-available-width`, `${availableWidth}px`)\n s.setProperty(`--radix-popper-available-height`, `${availableHeight}px`)\n s.setProperty(`--radix-popper-anchor-width`, `${rects.reference.width}px`)\n s.setProperty(`--radix-popper-anchor-height`, `${rects.reference.height}px`)\n },\n }),\n transformOrigin,\n ],\n }).then(({ x, y, placement: placed, middlewareData }) => {\n if (!live) return\n const dpr = window.devicePixelRatio || 1\n const round = (v: number) => Math.round(v * dpr) / dpr\n floating.style.transform = `translate(${round(x)}px, ${round(y)}px)`\n if (dpr >= 1.5) floating.style.willChange = `transform`\n const origin = middlewareData.transformOrigin as { x: string; y: string } | undefined\n floating.style.setProperty(`--radix-popper-transform-origin`, [origin?.x, origin?.y].join(` `))\n setPlacement(placed)\n setPositioned(true)\n })\n const stop = autoUpdate(anchor, floating, update)\n const doc = content.ownerDocument\n const onPointerDown = (e: PointerEvent) => {\n if (inside(e.target)) return\n if (interactOutside(e.target, `pointerdown`)) props.setOpen(false)\n }\n const onFocusIn = (e: FocusEvent) => {\n if (inside(e.target)) return\n if (interactOutside(e.target, `focusin`)) props.setOpen(false)\n }\n const onEscape = (e: KeyboardEvent) => {\n if (e.key !== `Escape` || !props.open) return\n e.stopPropagation()\n props.setOpen(false)\n }\n // Radix registers the outside pointer listener a tick late (the opening\n // click is not an outside one).\n const timer = setTimeout(() => doc.addEventListener(`pointerdown`, onPointerDown))\n doc.addEventListener(`focusin`, onFocusIn)\n doc.addEventListener(`keydown`, onEscape, { capture: true })\n props.presence.mount(content)\n props.onOpenAutoFocus(content)\n onCleanup(() => {\n props.presence.unmount()\n live = false\n stop()\n clearTimeout(timer)\n doc.removeEventListener(`pointerdown`, onPointerDown)\n doc.removeEventListener(`focusin`, onFocusIn)\n doc.removeEventListener(`keydown`, onEscape, { capture: true })\n // FocusScope's unmount auto-focus (a tick late): back to the trigger\n // unless the person interacted outside.\n const back = !interactedOutside\n const t = props.trigger()\n setTimeout(() => {\n if (back) t?.focus()\n })\n })\n })\n // FocusScope `loop` (not trapped): Tab wraps inside the content.\n const onKeyDown = (e: KeyboardEvent) => {\n if (e.key !== `Tab` || e.altKey || e.ctrlKey || e.metaKey || !content) return\n const focused = document.activeElement as HTMLElement | null\n const all = tabbables(content)\n if (!all.length) {\n if (focused === content) e.preventDefault()\n return\n }\n const first = all[0]!\n const last = all[all.length - 1]!\n if (!e.shiftKey && focused === last) {\n e.preventDefault()\n first.focus()\n } else if (e.shiftKey && focused === first) {\n e.preventDefault()\n last.focus()\n }\n }\n const style = (): JSX.CSSProperties => ({\n \"--radix-popover-content-transform-origin\": `var(--radix-popper-transform-origin)`,\n \"--radix-popover-content-available-width\": `var(--radix-popper-available-width)`,\n \"--radix-popover-content-available-height\": `var(--radix-popper-available-height)`,\n \"--radix-popover-trigger-width\": `var(--radix-popper-anchor-width)`,\n \"--radix-popover-trigger-height\": `var(--radix-popper-anchor-height)`,\n ...(positioned() ? {} : { animation: `none` }),\n })\n return (\n <Portal mount={props.portal ?? undefined} ref={mountWrapper}>\n <div\n ref={content}\n data-side={side()}\n data-align={align()}\n role=\"dialog\"\n id={props.contentId}\n data-state={props.open ? `open` : `closed`}\n {...props.attrs}\n tabindex=\"-1\"\n style={style()}\n onKeyDown={onKeyDown}\n onPointerOver={(e) => props.onPointerOver?.(e)}\n onFocusIn={(e) => props.onFocusIn?.(e)}\n onAnimationStart={(e) => props.presence.start(e)}\n onAnimationEnd={(e) => props.presence.end(e)}\n onAnimationCancel={(e) => props.presence.end(e)}\n >\n {props.children}\n </div>\n </Portal>\n )\n}\n","// FEED-131: Radix `Collapsible`'s content (the Accordion item's content).\n\nimport { createEffect, createSignal, on, onCleanup, onMount, untrack, type Accessor } from \"solid-js\"\n\n/** Radix `CollapsibleContent`'s state: `shown()` = painted (open, or\n * closing while its exit animation runs; the painter writes `hidden` and\n * drops the children otherwise), `ref` = the content element, `style()` =\n * Radix's variables in Radix's order (the measured\n * `--radix-collapsible-content-*` appended by the render after a toggle,\n * and the mount measurement by the render after mount;\n * `transition-duration: 0s; animation-name: none` left in place on an item\n * open at mount). `alias` = the outer primitive whose\n * `--radix-<alias>-content-*` variables alias them (Accordion: `accordion`). */\nexport function createCollapsibleContent(open: Accessor<boolean>, alias?: string): { shown: Accessor<boolean>; ref: (el: HTMLElement) => void; style: () => Record<string, string> } {\n const [present, setPresent] = createSignal(untrack(open))\n const shown = () => open() || present()\n const [dims, setDims] = createSignal<{ h: number; w: number }>({ h: 0, w: 0 })\n let content: HTMLElement | undefined\n let original: { transitionDuration: string; animationName: string } | null = null\n let measured = { h: 0, w: 0 }\n let mountPrevented = untrack(shown)\n const measure = () => {\n const node = content\n if (!node) return\n original ??= { transitionDuration: node.style.transitionDuration, animationName: node.style.animationName }\n node.style.transitionDuration = `0s`\n node.style.animationName = `none`\n const rect = node.getBoundingClientRect()\n measured = { h: rect.height, w: rect.width }\n if (!mountPrevented) {\n node.style.transitionDuration = original.transitionDuration\n node.style.animationName = original.animationName\n }\n }\n // Radix Presence: a closing content stays painted while its exit\n // animation (`xui-accordion-close`) runs, until its `animationend`.\n let prevAnimation = `none`\n let waiting: (() => void) | null = null\n const animationName = () => (content ? getComputedStyle(content).animationName || `none` : `none`)\n const unmount = () => {\n measure()\n if (untrack(present)) {\n setPresent(false)\n setDims(measured)\n }\n }\n onMount(() => {\n measure()\n // React's surface re-renders once after mount (its measured box): that\n // render writes the mount measurement.\n setDims(measured)\n prevAnimation = untrack(shown) ? animationName() : `none`\n const onStart = (e: AnimationEvent) => {\n if (e.target === content) prevAnimation = animationName()\n }\n content?.addEventListener(`animationstart`, onStart)\n const raf = requestAnimationFrame(() => (mountPrevented = false))\n onCleanup(() => {\n cancelAnimationFrame(raf)\n content?.removeEventListener(`animationstart`, onStart)\n waiting?.()\n })\n })\n createEffect(\n on(\n open,\n (o) => {\n waiting?.()\n measure()\n if (o) {\n if (!untrack(present)) {\n setPresent(true)\n setDims(measured)\n }\n prevAnimation = animationName()\n return\n }\n const node = content\n const name = animationName()\n if (!node || name === `none` || getComputedStyle(node).display === `none` || prevAnimation === name) return unmount()\n const done = (e: AnimationEvent) => {\n if (e.target !== node || !animationName().includes(CSS.escape(e.animationName))) return\n waiting?.()\n prevAnimation = `none`\n unmount()\n }\n node.addEventListener(`animationend`, done)\n node.addEventListener(`animationcancel`, done)\n waiting = () => {\n node.removeEventListener(`animationend`, done)\n node.removeEventListener(`animationcancel`, done)\n waiting = null\n }\n },\n { defer: true }\n )\n )\n const style = () => {\n const d = dims()\n const out: Record<string, string> = {}\n if (d.h) out[`--radix-collapsible-content-height`] = `${d.h}px`\n if (d.w) out[`--radix-collapsible-content-width`] = `${d.w}px`\n if (alias) {\n out[`--radix-${alias}-content-height`] = `var(--radix-collapsible-content-height)`\n out[`--radix-${alias}-content-width`] = `var(--radix-collapsible-content-width)`\n }\n return out\n }\n return { shown, ref: (el) => (content = el), style }\n}\n","// FEED-131: the Drawer's drag-to-dismiss (vaul-like, not Radix).\n\nimport { untrack, type Accessor } from \"solid-js\"\n\n/** Drawer drag-to-dismiss: a drag toward the drawer's edge past 80 px (or a\n * flick) closes it; anything less springs back. */\nexport function createDragToDismiss(side: Accessor<string>, enabled: Accessor<boolean>, onDismiss: () => void, reducedMotion: Accessor<boolean>) {\n let panel: HTMLElement | undefined\n let drag: { id: number; x: number; y: number; at: number } | null = null\n const sign = () => (side() === `bottom` || side() === `right` ? 1 : -1)\n const axis = () => (side() === `left` || side() === `right` ? `x` : `y`)\n const distance = (e: PointerEvent) => (drag ? Math.max(0, (axis() === `x` ? e.clientX - drag.x : e.clientY - drag.y) * sign()) : 0)\n const paint = (px: number, animate: boolean) => {\n if (!panel) return\n panel.style.transition = animate && !reducedMotion() ? `transform var(--xui-motion-standard) var(--xui-ease-decelerate)` : `none`\n panel.style.transform = px ? `translate${axis() === `x` ? `X` : `Y`}(${px * sign()}px)` : ``\n }\n return {\n setPanel: (el: HTMLElement) => (panel = el),\n onPointerDown: (e: PointerEvent) => {\n if (!untrack(enabled) || e.button !== 0) return\n drag = { id: e.pointerId, x: e.clientX, y: e.clientY, at: performance.now() }\n ;(e.currentTarget as HTMLElement).setPointerCapture?.(e.pointerId)\n },\n onPointerMove: (e: PointerEvent) => {\n if (untrack(enabled) && drag?.id === e.pointerId) paint(distance(e), false)\n },\n onPointerUp: (e: PointerEvent) => {\n if (!untrack(enabled) || drag?.id !== e.pointerId) return\n const px = distance(e)\n const dt = performance.now() - drag.at\n drag = null\n if (px > 80 || (px > 24 && dt > 0 && px / dt > 0.6)) {\n paint(0, false)\n onDismiss()\n } else paint(0, true)\n },\n onPointerCancel: () => {\n if (!untrack(enabled)) return\n drag = null\n paint(0, true)\n },\n }\n}\n","// FEED-131: Radix `Slider`'s maths and keys (single thumb, horizontal):\n// `linearScale`, the value rounding, `getThumbInBoundsOffset`.\n\nexport const PAGE_KEYS = [`PageUp`, `PageDown`]\nexport const BACK_KEYS: Record<`from-left` | `from-right`, string[]> = { \"from-left\": [`Home`, `PageDown`, `ArrowDown`, `ArrowLeft`], \"from-right\": [`Home`, `PageDown`, `ArrowDown`, `ArrowRight`] }\nexport const linearScale = (input: [number, number], output: [number, number]) => (v: number) => {\n if (input[0] === input[1] || output[0] === output[1]) return output[0]\n const ratio = (output[1] - output[0]) / (input[1] - input[0])\n return output[0] + ratio * (v - input[0])\n}\nexport const decimalCount = (v: number) => (String(v).split(`.`)[1] || ``).length\nexport const roundValue = (v: number, decimals: number) => {\n const r = Math.pow(10, decimals)\n return Math.round(v * r) / r\n}\nexport const clampTo = (v: number, [lo, hi]: [number, number]) => Math.min(hi, Math.max(lo, v))\nexport const percentOf = (v: number, min: number, max: number) => clampTo((100 / (max - min)) * (v - min), [0, 100])\nexport const inBoundsOffset = (width: number, left: number, direction: number) => {\n const half = width / 2\n const offset = linearScale([0, 50], [0, half])\n return (half - offset(left) * direction) * direction\n}\n","// FEED-131: the core's `search_matches` (SearchList, the Menu's searchable\n// submenu): pure.\n\nimport { str } from \"@exponential-at/ui/web\"\n\n/** Does a row match the query (case-insensitive, label or identifier)?\n * The core's `search_matches`. */\nexport function searchMatches(item: { label?: unknown; identifier?: unknown }, query: string): boolean {\n const needle = query.trim().toLowerCase()\n return needle === `` || str(item.label).toLowerCase().includes(needle) || str(item.identifier).toLowerCase().includes(needle)\n}\n","// FEED-128 (React's natives/chips.tsx; round 1 contract §3, a11y.json\n// ChipInput + FileUpload).\n// ChipInput: token editing — Enter or a comma adds the typed entry (trimmed,\n// no duplicates, up to `max`), Backspace in an empty field focuses then\n// removes the last chip, each chip has a remove control; `suggestions`\n// complete the typing (a listbox driven by the field: ArrowUp/Down +\n// Enter). Events: `add {value}`, `remove {value}`, `change {values}`; a\n// bound `values` is written.\n// FileUpload: a drop zone (a button: Enter/Space opens the picker; drag\n// paints the `dragover` state), `accept` + `maxSize` refuse files (the\n// message under the field), the BYTES go to the host's `onUpload(files,\n// {nodeId, name})`, the event `upload {files: [{name, size, type}]}`; the\n// attached `files` (bindable) are listed, each removable (`remove {name}`).\n\nimport { For, Show, createMemo, createSignal, createUniqueId, untrack, type Component, type JSX } from \"solid-js\"\nimport { acceptsFile, linkHref, partClass } from \"@exponential-at/ui/web\"\nimport { useSurfaceContext } from \"../context\"\nimport { FieldErrors, createField, joinIds } from \"../form\"\nimport type { NativeProps } from \"../node-view\"\nimport { createBoundState } from \"./bound\"\nimport { arr, bool, BuiltinIcon, formatFileSize, num, objects, parts, phrase, str, TextPart } from \"./shared\"\nimport { createListNavigation } from \"../behaviors\"\n\nexport { acceptsFile }\n\nexport function ChipInputNative(props: NativeProps): JSX.Element {\n const part = parts(props)\n const ctx = useSurfaceContext()\n const id = createUniqueId()\n const listId = `${id}-suggestions`\n const [values, setValues] = createBoundState<string[]>(\n () => props.node,\n () => props.scope,\n `values`,\n () => arr<unknown>(props.props.values).map(String)\n )\n const [text, setText] = createSignal(``)\n const [focused, setFocused] = createSignal(false)\n let inputEl: HTMLInputElement | undefined\n const f = createField({ node: () => props.node, domId: () => props.domId, props: () => props.props, value: values, focusEl: () => inputEl })\n const disabled = () => bool(props.props.disabled) || Boolean(f.form?.disabled)\n const max = () => (props.props.max === undefined ? Infinity : num(props.props.max, Infinity))\n const suggestions = createMemo(() => objects<{ label: string; value: string; disabled?: boolean }>(props.props.suggestions))\n const shown = createMemo(() => {\n const t = text()\n return t ? suggestions().filter((s) => !values().includes(s.value) && str(s.label).toLowerCase().includes(t.toLowerCase())) : []\n })\n const update = (next: string[]) => {\n setValues(next)\n f.change(next)\n void props.emit(`change`, { values: next }, { values: next })\n return next\n }\n const add = (raw: string) => {\n const value = raw.trim()\n const cur = untrack(values)\n if (!value || cur.includes(value) || cur.length >= untrack(max)) return false\n const next = update([...cur, value])\n void props.emit(`add`, { value }, { values: next })\n setText(``)\n return true\n }\n let listEl: HTMLUListElement | undefined\n const chipAt = (i: number) => listEl?.querySelectorAll<HTMLElement>(`[data-chip]`)[i] ?? null\n const remove = (value: string, focusIndex?: number) => {\n const next = update(untrack(values).filter((v) => v !== value))\n void props.emit(`remove`, { value }, { values: next })\n // Focus the previous chip (keyboard removal) or the field.\n setTimeout(() => {\n const target = focusIndex !== undefined && focusIndex >= 0 ? chipAt(focusIndex) : null\n ;(target ?? inputEl)?.focus()\n }, 0)\n }\n const onChipKey = (e: KeyboardEvent, i: number) => {\n const rtl = ctx.direction === `rtl`\n const prev = rtl ? `ArrowRight` : `ArrowLeft`\n const next = rtl ? `ArrowLeft` : `ArrowRight`\n const cur = untrack(values)\n if (e.key === prev) {\n e.preventDefault()\n chipAt(Math.max(0, i - 1))?.focus()\n } else if (e.key === next) {\n e.preventDefault()\n if (i + 1 < cur.length) chipAt(i + 1)?.focus()\n else inputEl?.focus()\n } else if ((e.key === `Backspace` || e.key === `Delete`) && !untrack(disabled)) {\n e.preventDefault()\n remove(cur[i], e.key === `Backspace` ? i - 1 : i < cur.length - 1 ? i : i - 1)\n }\n }\n const nav = createListNavigation({ count: () => shown().length, isDisabled: (i) => bool(untrack(shown)[i]?.disabled), onPick: (i) => add(untrack(shown)[i].value) })\n const activeId = () => (nav.active() >= 0 && nav.active() < shown().length ? `${listId}-${nav.active()}` : undefined)\n const open = () => focused() && shown().length > 0\n const placeholder = () => str(props.props.placeholder)\n return (\n <div {...props.rootProps}>\n <TextPart part={part(`label`)} text={props.props.label} as=\"label\" htmlFor={id} />\n <div {...part(`field`, focused() && `focus`, disabled() && `disabled`, f.invalid && `invalid`)} onClick={() => inputEl?.focus()} data-xui-chipfield=\"\">\n <ul ref={listEl} class=\"xui-chip-list\" aria-label={str(props.props.label) || undefined}>\n <For each={values()}>\n {(v, i) => (\n <li\n {...part.at(`chip`, i())}\n data-chip=\"\"\n tabindex=\"-1\"\n onKeyDown={(e) => onChipKey(e, i())}\n onFocus={(e) => e.currentTarget.setAttribute(`data-xs`, `focus`)}\n onBlur={(e) => e.currentTarget.removeAttribute(`data-xs`)}\n >\n <span {...part.at(`chipLabel`, i())}>{v}</span>\n <Show when={!disabled()}>\n <button\n type=\"button\"\n tabindex=\"-1\"\n {...part.at(`remove`, i())}\n aria-label={phrase(ctx, `removeItem`, { name: v }, () => `${ctx.t(`remove`)} ${v}`)}\n onClick={(e) => {\n e.stopPropagation()\n remove(v)\n }}\n >\n <BuiltinIcon slot=\"ChipInput.remove\" />\n </button>\n </Show>\n </li>\n )}\n </For>\n </ul>\n <input\n ref={inputEl}\n id={id}\n {...part(`input`)}\n value={text()}\n attr:value={text()}\n disabled={disabled() || values().length >= max()}\n placeholder={values().length === 0 ? placeholder() || undefined : undefined}\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-expanded={open()}\n aria-controls={open() ? listId : undefined}\n aria-activedescendant={open() ? activeId() : undefined}\n aria-invalid={f.invalid || undefined}\n aria-describedby={joinIds(f.describedBy)}\n onFocus={() => setFocused(true)}\n onBlur={() => {\n setFocused(false)\n f.touch()\n }}\n onInput={(e) => {\n const v = e.currentTarget.value\n if (v.includes(`,`)) {\n const pieces = v.split(`,`)\n const last = pieces.pop() ?? ``\n for (const p of pieces) add(p)\n setText(last)\n e.currentTarget.value = last\n } else setText(v)\n }}\n onKeyDown={(e) => {\n const t = untrack(text)\n const cur = untrack(values)\n if (untrack(open) && (e.key === `ArrowDown` || e.key === `ArrowUp` || (e.key === `Enter` && untrack(nav.active) >= 0))) {\n nav.onKeyDown(e)\n return\n }\n if (e.key === `Enter`) {\n e.preventDefault()\n if (t.trim()) add(t)\n else f.submit()\n } else if (e.key === `Backspace` && t === `` && cur.length) {\n // First Backspace focuses the last chip; on the chip it removes.\n e.preventDefault()\n chipAt(cur.length - 1)?.focus()\n } else if ((e.key === `ArrowLeft` || e.key === `ArrowRight`) && t === `` && cur.length && e.key === (ctx.direction === `rtl` ? `ArrowRight` : `ArrowLeft`)) {\n e.preventDefault()\n chipAt(cur.length - 1)?.focus()\n } else if (e.key === `Escape`) setText(``)\n }}\n />\n </div>\n <Show when={open()}>\n <div id={listId} role=\"listbox\" class=\"xui-ChipInput-suggestions\">\n <For each={shown()}>\n {(s, i) => (\n <div\n id={`${listId}-${i()}`}\n role=\"option\"\n aria-selected={i() === nav.active()}\n class=\"xui-ChipInput-suggestion\"\n data-active={i() === nav.active() ? `` : undefined}\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => add(s.value)}\n >\n {str(s.label)}\n </div>\n )}\n </For>\n </div>\n </Show>\n <FieldErrors part={part} field={f} />\n </div>\n )\n}\n\ninterface FileMeta {\n name: string\n size?: number\n type?: string\n url?: string\n}\n\nexport function FileUploadNative(props: NativeProps): JSX.Element {\n const part = parts(props)\n const ctx = useSurfaceContext()\n const id = createUniqueId()\n const [files, setFiles] = createBoundState<FileMeta[]>(\n () => props.node,\n () => props.scope,\n `files`,\n () => objects<FileMeta>(props.props.files)\n )\n let zoneEl: HTMLDivElement | undefined\n let inputEl: HTMLInputElement | undefined\n const f = createField({ node: () => props.node, domId: () => props.domId, props: () => props.props, value: files, focusEl: () => zoneEl })\n const disabled = () => bool(props.props.disabled) || Boolean(f.form?.disabled)\n const multiple = () => bool(props.props.multiple)\n const accept = () => str(props.props.accept)\n const maxSize = () => (props.props.maxSize === undefined ? Infinity : num(props.props.maxSize, Infinity))\n const [drag, setDrag] = createSignal(false)\n const [busy, setBusy] = createSignal(false)\n const [refused, setRefused] = createSignal<string[]>([])\n const name = () => str(props.props.name, props.node.id)\n const size = (n: number | undefined) => (n === undefined ? `` : formatFileSize(n, ctx.locale))\n const take = (list: FileList | File[] | null) => {\n if (!list || untrack(disabled)) return\n const many = untrack(multiple)\n const picked = Array.from(list).slice(0, many ? undefined : 1)\n const ok: File[] = []\n const errors: string[] = []\n for (const file of picked) {\n if (!acceptsFile(untrack(accept), file)) errors.push(phrase(ctx, `unsupportedFileNamed`, { name: file.name }, () => `${file.name}: ${ctx.t(`unsupportedFile`)}`))\n else if (file.size > untrack(maxSize)) errors.push(phrase(ctx, `fileTooLargeNamed`, { name: file.name }, () => `${file.name}: ${ctx.t(`fileTooLarge`)}`))\n else ok.push(file)\n }\n setRefused(errors)\n if (ok.length === 0) return\n const meta = ok.map((file) => ({ name: file.name, size: file.size, type: file.type }))\n const next = many ? [...untrack(files).filter((x) => !meta.some((m) => m.name === x.name)), ...meta] : meta\n setFiles(next)\n f.change(next)\n // The payload = the whole list + the new batch (`added`); the own write\n // = the whole list, as written.\n void props.emit(`upload`, { files: next, added: meta }, { files: next })\n const r = ctx.host.onUpload?.(ok, { nodeId: untrack(() => props.domId), name: untrack(name) })\n if (r && typeof (r as Promise<void>).then === `function`) {\n setBusy(true)\n void (r as Promise<void>).finally(() => setBusy(false))\n }\n }\n const remove = (fileName: string) => {\n const next = untrack(files).filter((x) => x.name !== fileName)\n setFiles(next)\n f.change(next)\n void props.emit(`remove`, { name: fileName, files: next }, { files: next })\n }\n const onDrag = (e: DragEvent, over: boolean) => {\n e.preventDefault()\n if (untrack(disabled)) return\n setDrag(over)\n }\n const hint = () => str(props.props.hint)\n return (\n <div {...props.rootProps}>\n <TextPart part={part(`label`)} text={props.props.label} as=\"label\" htmlFor={id} />\n <div\n ref={zoneEl}\n {...part(`dropzone`, drag() && `dragover`, disabled() && `disabled`, f.invalid && `invalid`)}\n role=\"button\"\n tabindex={disabled() ? -1 : 0}\n aria-disabled={disabled() || undefined}\n aria-busy={busy() || undefined}\n aria-describedby={joinIds(hint() && `${id}-hint`, refused().length > 0 && `${id}-refused`, f.describedBy)}\n aria-label={str(props.props.label) || ctx.t(`dropFiles`)}\n data-dragover={drag() ? `` : undefined}\n onClick={() => !untrack(disabled) && inputEl?.click()}\n onKeyDown={(e) => {\n if (untrack(disabled)) return\n if (e.key === `Enter` || e.key === ` `) {\n e.preventDefault()\n inputEl?.click()\n }\n }}\n onDragEnter={(e) => onDrag(e, true)}\n onDragOver={(e) => onDrag(e, true)}\n onDragLeave={(e) => onDrag(e, false)}\n onDrop={(e) => {\n onDrag(e, false)\n take(e.dataTransfer?.files ?? null)\n }}\n >\n <span {...part(`icon`)}>\n <BuiltinIcon slot=\"FileUpload.icon\" />\n </span>\n <span {...part(`title`)}>{ctx.t(`dropFiles`)}</span>\n <Show when={hint()}>\n <span {...part(`hint`)} id={`${id}-hint`}>\n {hint()}\n </span>\n </Show>\n {/* Round 2 §7: the Browse button inside the zone (an outline small\n Button's look; the zone itself is the control). */}\n <span {...part(`browse`)} class={`${part(`browse`).class as string} ${partClass(`Button`, `root`)}`} data-r-variant=\"outline\" data-r-size=\"sm\" aria-hidden=\"true\">\n {ctx.t(`browse`)}\n </span>\n <input\n ref={inputEl}\n id={id}\n type=\"file\"\n class=\"xui-sr-only\"\n tabindex=\"-1\"\n accept={accept() || undefined}\n multiple={multiple()}\n disabled={disabled()}\n name={name()}\n onChange={(e) => {\n take(e.currentTarget.files)\n e.currentTarget.value = ``\n }}\n />\n </div>\n <Show when={files().length}>\n <ul class=\"xui-file-list\">\n <For each={files()}>\n {(file, i) => {\n const href = () => linkHref(ctx.host, file.url)\n return (\n <li {...part.at(`file`, i())}>\n <span {...part.at(`fileIcon`, i())}>\n <BuiltinIcon slot=\"FileUpload.file\" />\n </span>\n <span {...part.at(`fileName`, i())}>\n {href() ? (\n <a href={href()} target=\"_blank\" rel=\"noreferrer\">\n {file.name}\n </a>\n ) : (\n file.name\n )}\n </span>\n <Show when={file.size !== undefined}>\n <span {...part.at(`fileMeta`, i())}>{size(file.size)}</span>\n </Show>\n <Show when={!disabled()}>\n <button type=\"button\" {...part.at(`remove`, i())} aria-label={phrase(ctx, `removeItem`, { name: file.name }, () => `${ctx.t(`remove`)} ${file.name}`)} onClick={() => remove(file.name)}>\n <BuiltinIcon slot=\"FileUpload.remove\" />\n </button>\n </Show>\n </li>\n )\n }}\n </For>\n </ul>\n </Show>\n <Show when={refused().length}>\n <div {...part(`error`)} id={`${id}-refused`} role=\"alert\">\n <For each={refused()}>{(m) => <span class=\"xui-field-error\">{m}</span>}</For>\n </div>\n </Show>\n <FieldErrors part={part} field={f} />\n </div>\n )\n}\n\nexport const NATIVES_CHIPS: Record<string, Component<NativeProps>> = {\n ChipInput: ChipInputNative,\n FileUpload: FileUploadNative,\n}\n","// FEED-128 (React's natives/choice-tiles.tsx + the headless half of\n// primitives/choice-tiles.tsx, `ChoiceTilesFrame`): ChoiceTiles (EXP-1280),\n// picture tiles picking one value or several. A `radiogroup` of `radio`\n// buttons (single) or a `group` of `checkbox` buttons (multiple); the picked\n// tile (else the first enabled one) is the tab stop; arrows move focus with\n// wrap (a single pick follows focus); Space/Enter toggle (the button's own\n// click). Every tile has a picture box once ANY option has an image. The\n// parts wear the theme's recipe: `tile.<i>` (`selected`, `disabled`,\n// `invalid`), `picture.<i>`, `label.<i>`, `description.<i>`. The value is\n// bindable, comma-joined when `type: multiple`; a pick writes it and fires\n// `change {value}`.\n//\n// The React frame is a Tailwind-dressed shadcn primitive ONLY in its app\n// skin (`ChoiceTiles`); the eUI native passes the recipe part attributes,\n// so the native's DOM carries no Tailwind class and needs no extra sheet.\n\nimport { createMemo, Index, Show, type Component, type JSX } from \"solid-js\"\nimport { useSurfaceContext } from \"../context\"\nimport { createField, FieldErrors } from \"../form\"\nimport { createMediaSource } from \"../media\"\nimport type { NativeProps } from \"../node-view\"\nimport { createBoundState } from \"./bound\"\nimport { bool, BuiltinIcon, objects, parts, str } from \"./shared\"\n\ninterface ChoiceTileOption {\n value: string\n label: string\n description?: string | null\n image?: string | null\n disabled?: boolean\n}\n\n/** `columns` clamped to 1–4 (default 2). */\nfunction choiceColumns(columns: unknown): number {\n const n = typeof columns === `number` && Number.isFinite(columns) ? Math.round(columns) : 2\n return Math.min(4, Math.max(1, n))\n}\n\n/** The values a comma-joined eUI `value` picks (single: the whole string). */\nfunction choiceValues(value: unknown, multiple: boolean): string[] {\n if (Array.isArray(value)) return value.map(String).filter(Boolean)\n const raw = value === undefined || value === null ? `` : String(value)\n if (!multiple) return raw ? [raw] : []\n return raw\n .split(`,`)\n .map((s) => s.trim())\n .filter(Boolean)\n}\n\n/** A press on `value`: single picks it; multiple toggles it, the list kept in\n * OPTION order (fixtures/interactions-round1.json `choiceTiles`). */\nfunction choiceToggle(picked: readonly string[], value: string, multiple: boolean, order: readonly string[]): string[] {\n if (!multiple) return [value]\n const next = picked.includes(value) ? picked.filter((v) => v !== value) : [...picked, value]\n const rank = (v: string) => {\n const i = order.indexOf(v)\n return i < 0 ? Number.MAX_SAFE_INTEGER : i\n }\n return next.slice().sort((a, b) => rank(a) - rank(b))\n}\n\nfunction TilePicture(props: { src: string | null }): JSX.Element {\n const ctx = useSurfaceContext()\n const media = createMediaSource(() => ctx.host, () => props.src ?? ``)\n return (\n <Show when={props.src && media().url && !media().error} fallback={<BuiltinIcon slot=\"Image.fallback\" />}>\n <img src={media().url} alt=\"\" loading=\"lazy\" decoding=\"async\" />\n </Show>\n )\n}\n\nexport function ChoiceTilesNative(props: NativeProps): JSX.Element {\n const part = parts(props)\n const ctx = useSurfaceContext()\n const multiple = () => str(props.props.type, `single`) === `multiple`\n // Tiles stay mounted across a bind pass (a pick keeps the focused tile):\n // by INDEX, the option's fields followed live.\n const options = createMemo(\n () =>\n objects<Record<string, unknown>>(props.props.options).map(\n (o): ChoiceTileOption => ({ value: str(o.value), label: str(o.label), description: o.description === undefined ? null : str(o.description), image: typeof o.image === `string` && o.image ? o.image : null, disabled: bool(o.disabled) })\n ),\n undefined,\n { equals: (a, b) => JSON.stringify(a) === JSON.stringify(b) }\n )\n const [value, setValue] = createBoundState(() => props.node, () => props.scope, `value`, () => str(props.props.value))\n let rootEl: HTMLDivElement | undefined\n const buttons: (HTMLButtonElement | undefined)[] = []\n // The field's focus target: the tab stop (the picked tile, else the first).\n const f = createField({\n node: () => props.node,\n domId: () => props.domId,\n props: () => props.props,\n value,\n focusEl: () => (rootEl?.querySelector(`button[tabindex=\"0\"]`) ?? rootEl?.querySelector(`button`)) as HTMLElement | null,\n })\n const disabled = () => bool(props.props.disabled) || Boolean(f.form?.disabled)\n const picked = createMemo(() => choiceValues(value(), multiple()))\n const order = createMemo(() => options().map((o) => o.value))\n const pictures = () => options().some((o) => Boolean(o.image))\n const enabled = (i: number) => !disabled() && !options()[i]?.disabled\n const tabStop = () => {\n const firstPicked = options().findIndex((o, i) => picked().includes(o.value) && enabled(i))\n return firstPicked >= 0 ? firstPicked : options().findIndex((_, i) => enabled(i))\n }\n const dir = () => (ctx.direction === `rtl` ? `rtl` : `ltr`)\n const onPick = (next: string[]) => {\n const joined = next.join(`,`)\n setValue(joined)\n f.change(joined)\n f.touch()\n void props.emit(`change`, { value: joined }, { value: joined })\n }\n const pick = (i: number) => onPick(choiceToggle(picked(), options()[i]!.value, multiple(), order()))\n const move = (from: number, delta: number) => {\n const n = options().length\n for (let step = 1; step <= n; step++) {\n const i = (((from + delta * step) % n) + n) % n\n if (enabled(i)) return i\n }\n return -1\n }\n const onKeyDown = (i: number, e: KeyboardEvent) => {\n const forward = dir() === `rtl` ? `ArrowLeft` : `ArrowRight`\n const back = dir() === `rtl` ? `ArrowRight` : `ArrowLeft`\n const delta = e.key === forward || e.key === `ArrowDown` ? 1 : e.key === back || e.key === `ArrowUp` ? -1 : 0\n if (delta === 0) return\n e.preventDefault()\n const next = move(i, delta)\n if (next < 0) return\n buttons[next]?.focus()\n if (!multiple() && !picked().includes(options()[next]!.value)) pick(next)\n }\n const rootRest = createMemo(() => {\n const { class: rootClass, style: _style, ...rest } = props.rootProps\n return { ...rest, class: `${str(rootClass)} xui-choice-tiles`, \"aria-describedby\": f.describedBy }\n })\n const style = () => ({ display: `grid`, \"grid-template-columns\": `repeat(${choiceColumns(props.props.columns)}, minmax(0, 1fr))`, ...((props.rootProps.style as Record<string, string> | undefined) ?? {}) })\n const states = (selected: boolean, off: boolean) => [selected && `selected`, off && `disabled`, f.invalid && `invalid`] as const\n return (\n <div ref={rootEl} role={multiple() ? `group` : `radiogroup`} aria-invalid={f.invalid || undefined} aria-disabled={disabled() || undefined} dir={dir()} {...rootRest()} style={style()}>\n <Index each={options()}>\n {(opt, index) => {\n const i = () => index\n const o = {\n get value() {\n return opt().value\n },\n get label() {\n return opt().label\n },\n get description() {\n return opt().description\n },\n get image() {\n return opt().image\n },\n }\n const selected = () => picked().includes(o.value)\n const off = () => !enabled(i())\n const description = () => (o.description ? String(o.description) : ``)\n return (\n <button\n ref={(el) => (buttons[i()] = el)}\n type=\"button\"\n role={multiple() ? `checkbox` : `radio`}\n aria-checked={selected()}\n aria-label={o.label}\n disabled={off()}\n tabindex={i() === tabStop() ? 0 : -1}\n data-state={selected() ? `checked` : `unchecked`}\n data-value={o.value}\n onClick={() => pick(i())}\n onKeyDown={(e) => onKeyDown(i(), e)}\n {...part.at(`tile`, i(), ...states(selected(), off()))}\n >\n <Show when={pictures()}>\n <span aria-hidden=\"true\" {...part.at(`picture`, i(), ...states(selected(), off()))}>\n <TilePicture src={o.image ? String(o.image) : null} />\n </span>\n </Show>\n <span {...part.at(`label`, i(), ...states(selected(), off()))}>{o.label}</span>\n <Show when={description()}>\n <span {...part.at(`description`, i(), ...states(selected(), off()))}>{description()}</span>\n </Show>\n </button>\n )\n }}\n </Index>\n <FieldErrors part={part} field={f} />\n </div>\n )\n}\n\nexport const NATIVES_CHOICE_TILES: Record<string, Component<NativeProps>> = { ChoiceTiles: ChoiceTilesNative }\n","// FEED-128 (React's natives/code.tsx; round 1 contract §3 CodeBlock,\n// a11y.json CodeBlock): the code block on the catalog's ONE tokenizer\n// (`tokenizeCode`, catalog/code.json), painted per token kind through the\n// `CodeBlock/token` recipe (`when: {kind}`). An optional header (title +\n// the copy button: `builtinIcons` copy/copied, `copied` announced), a\n// line-number gutter, emphasised `highlight` lines (the `selected` state),\n// `wrap`, and `maxLines` before the block scrolls. EXP-1324: `variant`\n// (destructive) and `size` (sm) are recipe props; `ansi` output copies\n// without its escapes.\n\nimport { Index, Show, createMemo, createSignal, onCleanup, type Component, type JSX } from \"solid-js\"\nimport { codeText, tokenizeCode } from \"@exponential-at/ui\"\nimport { useSurfaceContext } from \"../context\"\nimport type { NativeProps } from \"../node-view\"\nimport { arr, bool, BuiltinIcon, css, num, parts, str } from \"./shared\"\n\nexport function CodeBlockNative(props: NativeProps): JSX.Element {\n const ctx = useSurfaceContext()\n const part = parts(props)\n const code = () => str(props.props.code)\n const language = () => str(props.props.language, `plain`)\n const lines = createMemo(() => tokenizeCode(code(), language()))\n const highlight = createMemo(() => new Set(arr<unknown>(props.props.highlight).map((v) => num(v))))\n const numbers = () => bool(props.props.lineNumbers)\n const copyable = () => props.props.copyable !== false\n const title = () => str(props.props.title)\n // Round 2 (§7 CodeBlock): an untitled block names its language in the\n // header (`ts`; none for `plain`); the region's name stays `codeBlock`.\n const heading = () => title() || (language() === `plain` ? `` : language())\n const maxLines = () => (props.props.maxLines === undefined ? 0 : num(props.props.maxLines))\n const [copied, setCopied] = createSignal(false)\n let timer: ReturnType<typeof setTimeout> | null = null\n onCleanup(() => {\n if (timer) clearTimeout(timer)\n })\n const copy = async () => {\n // Acknowledge only a copy that happened: no clipboard (an insecure\n // origin) or a refusal leaves the button as it was and says nothing.\n const clipboard = typeof navigator === `undefined` ? undefined : navigator.clipboard\n if (!clipboard?.writeText) return\n try {\n await clipboard.writeText(codeText(code(), language()))\n } catch {\n return\n }\n setCopied(true)\n ctx.announce(ctx.t(`copied`))\n if (timer) clearTimeout(timer)\n timer = setTimeout(() => setCopied(false), 1500)\n }\n const gutterWidth = () => `${String(lines().length).length + 1}ch`\n const bodyClass = () => `${part(`body`).class as string} xui-codeblock-scroll`\n const codeClass = () => `${part(`code`).class as string} xui-codeblock-text`\n return (\n <div {...props.rootProps} role=\"region\" aria-label={title() || ctx.t(`codeBlock`)} data-language={language()}>\n <Show when={heading() || copyable()}>\n <div {...part(`header`)}>\n <Show when={heading()} fallback={<span class=\"xui-codeblock-spacer\" />}>\n <span {...part(`title`)}>{heading()}</span>\n </Show>\n <Show when={copyable()}>\n <button type=\"button\" {...part(`copy`, copied() && `checked`)} aria-label={copied() ? ctx.t(`copied`) : ctx.t(`copy`)} onClick={() => void copy()}>\n <BuiltinIcon slot={copied() ? `CodeBlock.copied` : `CodeBlock.copy`} />\n </button>\n </Show>\n </div>\n </Show>\n <div {...part(`body`)} class={bodyClass()} data-wrap={bool(props.props.wrap) ? `true` : undefined} style={maxLines() > 0 ? css({ \"--xui-code-lines\": maxLines() }) : undefined} data-max-lines={maxLines() > 0 ? maxLines() : undefined} tabindex={0}>\n <pre class=\"xui-codeblock-pre\" id={`${props.domId}.code`}>\n <code>\n <Index each={lines()}>\n {(tokens, i) => (\n <span {...part.at(`line`, i, highlight().has(i + 1) && `selected`)} data-line={i + 1}>\n <Show when={numbers()}>\n <span {...part(`gutter`)} style={{ \"min-width\": gutterWidth() }} aria-hidden=\"true\">\n <span {...part.at(`lineNumber`, i)}>{i + 1}</span>\n </span>\n </Show>\n <span {...part.at(`code`, i)} class={codeClass()}>\n {tokens().length === 0 ? `` : null}\n <Index each={tokens()}>{(t) => <span {...part.with(`token`, { kind: t().kind })}>{t().text}</span>}</Index>\n </span>\n {`\\n`}\n </span>\n )}\n </Index>\n </code>\n </pre>\n </div>\n </div>\n )\n}\n\nexport const NATIVES_CODE: Record<string, Component<NativeProps>> = {\n CodeBlock: CodeBlockNative,\n}\n","// FEED-128 (React's natives/dates.tsx; round 1 contract §3–4, a11y.json\n// DatePicker): DatePicker, DateRangePicker and TimePicker. ONE calendar\n// grid (role=grid, a roving tab stop on the focused day): arrows ±1 day /\n// ±1 week, PageUp/PageDown ±1 month (Shift = ±1 year), Home/End = the\n// start/end of the week by the LOCALE week start (`weekStart(locale)`), Enter\n// / Space pick. Month and weekday names are the surface locale's (Intl). The\n// range picker selects in two steps (start, then end; an earlier end swaps).\n// TimePicker = a listbox of `step`-minute times between min and max (shown\n// in the locale's clock).\n//\n// The popover is Radix Popover's DOM painted by hand (`PickerPopover`,\n// src/behaviors/picker-popover.tsx): the portalled\n// `data-radix-popper-content-wrapper` positioned by @floating-ui/dom with\n// Radix's middleware and inline style, the content's `data-side`/\n// `data-align`/`tabindex=-1`/`--radix-popover-*` variables, non-modal\n// dismissal (outside pointer/focus, Escape) and the focus return; the\n// trigger's `aria-expanded`/`aria-controls`/`data-state` are painted here.\n\nimport { For, Index, batch, createComputed, createEffect, createMemo, createSignal, createUniqueId, on, untrack, type Component, type JSX } from \"solid-js\"\nimport { weekStart } from \"@exponential-at/ui\"\nimport type { Formatter } from \"@exponential-at/ui\"\nimport { addDays, addMonths, calendarStop, isoDate, monthGrid, parseIsoDate, sameDay } from \"@exponential-at/ui/web\"\nimport { useSurfaceContext } from \"../context\"\nimport { FieldErrors, createField } from \"../form\"\nimport type { NativeProps } from \"../node-view\"\nimport { createBoundState } from \"./bound\"\nimport { bool, BuiltinIcon, num, parts, str, TextPart, type Attrs, type PartFn } from \"./shared\"\nimport { createListNavigationSync, PickerPopover } from \"../behaviors\"\n\nexport { calendarStop, isoDate, monthGrid, parseIsoDate }\n\n// ── the popover (Radix Popover's DOM: `PickerPopover`, ../behaviors) ─────\n\n/** PopoverPrimitive.Trigger's own attributes (the painter's win). */\nconst triggerAttrs = (open: boolean, contentId: string): Attrs => ({ type: `button`, \"aria-haspopup\": `dialog`, \"aria-expanded\": open, \"aria-controls\": contentId, \"data-state\": open ? `open` : `closed` })\n\n// ── the calendar ─────────────────────────────────────────────────────────\n\ninterface CalendarProps {\n part: PartFn\n dayPart: `day`\n locale: string\n /** The surface Formatter: month and weekday names, day labels. */\n formatter: Formatter\n firstDay: number\n min: Date | null\n max: Date | null\n /** Days drawn selected. */\n isSelected: (d: Date) => boolean\n /** Days drawn inside a range (DateRangePicker). */\n inRange?: (d: Date) => boolean\n initial: Date\n onPick: (d: Date) => void\n t: (id: string) => string\n /** The SURFACE direction: ArrowLeft/Right mirror in RTL. */\n direction?: `ltr` | `rtl`\n}\n\nexport function CalendarGrid(props: CalendarProps): JSX.Element {\n const initial = untrack(() => props.initial)\n const [focus, setFocus] = createSignal<Date>(initial)\n const [view, setView] = createSignal<Date>(new Date(initial.getFullYear(), initial.getMonth(), 1))\n let grid: HTMLDivElement | undefined\n let moved = false\n const days = createMemo(() => monthGrid(view(), props.firstDay))\n const weekdays = createMemo(() => {\n // 2023-01-01 was a Sunday; names through the surface Formatter (`EEE`;\n // the one-letter column head is the locale's narrow form, Intl).\n const narrow = new Intl.DateTimeFormat(props.formatter.locale, { weekday: `narrow` })\n return Array.from({ length: 7 }, (_, i) => {\n const d = new Date(2023, 0, 1 + ((props.firstDay + i) % 7))\n return { short: props.formatter.date(isoDate(d), { format: `EEE` }), narrow: narrow.format(d) }\n })\n })\n const monthLabel = () => props.formatter.date(isoDate(view()), { format: `MMMM yyyy` })\n const dayLabel = createMemo(() => new Intl.DateTimeFormat(props.formatter.locale, { weekday: `long`, year: `numeric`, month: `long`, day: `numeric` }))\n const disabled = (d: Date) => (props.min !== null && d < props.min) || (props.max !== null && d > props.max)\n // The month buttons move the focused day WITH the view.\n const shiftMonth = (n: number) => {\n const next = addMonths(focus(), n)\n batch(() => {\n setFocus(next)\n setView(new Date(next.getFullYear(), next.getMonth(), 1))\n })\n }\n const stop = createMemo(() => calendarStop(days(), view(), focus(), disabled))\n const goto = (d: Date) => {\n moved = true\n // One update: the refocus below runs against the NEW month's grid.\n batch(() => {\n setFocus(d)\n const v = view()\n if (d.getMonth() !== v.getMonth() || d.getFullYear() !== v.getFullYear()) setView(new Date(d.getFullYear(), d.getMonth(), 1))\n })\n }\n createEffect(\n on([focus, view], () => {\n if (!moved) return\n moved = false\n grid?.querySelector<HTMLButtonElement>(`[data-date=\"${isoDate(focus())}\"]`)?.focus()\n })\n )\n const onKey = (e: KeyboardEvent) => {\n const k = e.key\n const f = focus()\n const rtl = props.direction === `rtl`\n let next: Date | null = null\n if (k === `ArrowLeft`) next = addDays(f, rtl ? 1 : -1)\n else if (k === `ArrowRight`) next = addDays(f, rtl ? -1 : 1)\n else if (k === `ArrowUp`) next = addDays(f, -7)\n else if (k === `ArrowDown`) next = addDays(f, 7)\n else if (k === `PageUp`) next = addMonths(f, e.shiftKey ? -12 : -1)\n else if (k === `PageDown`) next = addMonths(f, e.shiftKey ? 12 : 1)\n else if (k === `Home`) next = addDays(f, -((f.getDay() - props.firstDay + 7) % 7))\n else if (k === `End`) next = addDays(f, 6 - ((f.getDay() - props.firstDay + 7) % 7))\n else if (k === `Enter` || k === ` `) {\n e.preventDefault()\n if (!disabled(f)) props.onPick(f)\n return\n }\n if (next) {\n e.preventDefault()\n goto(next)\n }\n }\n const rows = createMemo(() => {\n const out: Date[][] = []\n const all = days()\n for (let i = 0; i < 6; i++) out.push(all.slice(i * 7, i * 7 + 7))\n return out\n })\n return (\n <>\n <div class=\"xui-calendar-head\">\n <button type=\"button\" class=\"xui-calendar-nav\" aria-label={props.t(`previousMonth`)} onClick={() => shiftMonth(-1)}>\n <BuiltinIcon slot=\"DatePicker.previousMonth\" />\n </button>\n <span aria-live=\"polite\">{monthLabel()}</span>\n <button type=\"button\" class=\"xui-calendar-nav\" aria-label={props.t(`nextMonth`)} onClick={() => shiftMonth(1)}>\n <BuiltinIcon slot=\"DatePicker.nextMonth\" />\n </button>\n </div>\n <div ref={grid} class=\"xui-calendar-grid\" role=\"grid\" aria-label={monthLabel()} onKeyDown={onKey}>\n <div role=\"row\" class=\"xui-calendar-row\">\n <Index each={weekdays()}>\n {(w) => (\n <span role=\"columnheader\" class=\"xui-calendar-weekday\" aria-label={w().short} title={w().short}>\n {w().narrow}\n </span>\n )}\n </Index>\n </div>\n <Index each={rows()}>\n {(week) => (\n <div role=\"row\" class=\"xui-calendar-row\">\n <Index each={week()}>\n {(day) => {\n const d = day\n const sel = () => props.isSelected(d())\n const range = () => props.inRange?.(d()) ?? false\n const outside = () => d().getMonth() !== view().getMonth()\n const off = () => disabled(d())\n const focused = () => sameDay(d(), stop())\n const today = () => sameDay(d(), new Date())\n return (\n <span role=\"gridcell\" aria-selected={sel()} class=\"xui-calendar-cell\">\n <button\n type=\"button\"\n {...props.part(props.dayPart, sel() && `selected`, off() && `disabled`)}\n data-date={isoDate(d())}\n data-outside={outside() ? `` : undefined}\n data-range={range() ? `` : undefined}\n data-today={today() ? `` : undefined}\n disabled={off()}\n tabindex={focused() ? 0 : -1}\n onFocus={() => {\n if (!sameDay(d(), focus())) setFocus(d())\n }}\n aria-label={dayLabel().format(d())}\n aria-current={today() ? `date` : undefined}\n onClick={() => {\n setFocus(d())\n props.onPick(d())\n }}\n >\n {range() && !sel() ? <span {...props.part(`range`)} aria-hidden=\"true\" /> : null}\n <span class=\"xui-calendar-day-label\">{d().getDate()}</span>\n </button>\n </span>\n )\n }}\n </Index>\n </div>\n )}\n </Index>\n </div>\n </>\n )\n}\n\nfunction firstDayOf(props: Record<string, unknown>, locale: string): number {\n return props.firstDayOfWeek === undefined ? weekStart(locale) : ((Math.round(num(props.firstDayOfWeek)) % 7) + 7) % 7\n}\n\nconst focusGridStop = (content: HTMLElement) => content.querySelector<HTMLButtonElement>(`.xui-calendar-grid button[tabindex=\"0\"]`)?.focus()\n\nexport function DatePickerNative(props: NativeProps): JSX.Element {\n const part = parts(props)\n const ctx = useSurfaceContext()\n const id = createUniqueId()\n const contentId = createUniqueId()\n const [value, setValue] = createBoundState(() => props.node, () => props.scope, `value`, () => str(props.props.value))\n let trigger: HTMLButtonElement | undefined\n const f = createField({ node: () => props.node, domId: () => props.domId, props: () => props.props, value, focusEl: () => trigger })\n const [open, setOpen] = createSignal(false)\n const selected = createMemo(() => (value() ? parseIsoDate(value()) : null))\n const min = createMemo(() => (props.props.min ? parseIsoDate(str(props.props.min)) : null))\n const max = createMemo(() => (props.props.max ? parseIsoDate(str(props.props.max)) : null))\n const firstDay = () => firstDayOf(props.props, ctx.locale)\n const label = () => {\n const s = selected()\n return s ? ctx.formatter.date(isoDate(s)) : ``\n }\n const disabled = () => bool(props.props.disabled) || Boolean(f.form?.disabled)\n const pick = (d: Date) => {\n const next = isoDate(d)\n setValue(next)\n f.change(next)\n f.touch()\n void props.emit(`change`, { value: next }, { value: next })\n setOpen(false)\n }\n return (\n <div {...props.rootProps}>\n <TextPart part={part(`label`)} text={props.props.label} as=\"label\" htmlFor={id} />\n <button\n ref={trigger}\n {...triggerAttrs(open(), contentId)}\n id={id}\n {...part(`trigger`, open() && `open`, f.invalid && `invalid`, disabled() && `disabled`)}\n disabled={disabled()}\n data-value={value() || undefined}\n aria-haspopup=\"dialog\"\n aria-invalid={f.invalid || undefined}\n aria-describedby={f.describedBy}\n onClick={() => setOpen(!open())}\n >\n <span>{label() || <span {...part(`placeholder`)}>{str(props.props.placeholder)}</span>}</span>\n <BuiltinIcon slot=\"DatePicker.trigger\" />\n </button>\n <PickerPopover\n portal={ctx.portal}\n dir={ctx.direction}\n open={open()}\n setOpen={setOpen}\n trigger={() => trigger}\n contentId={contentId}\n attrs={{ ...part(`calendar`, open() && `open`), dir: ctx.direction, role: `dialog`, \"aria-label\": str(props.props.label) || undefined, \"data-xui-overlay\": `DatePicker` }}\n onOpenAutoFocus={focusGridStop}\n >\n <CalendarGrid part={part} dayPart=\"day\" locale={ctx.locale} formatter={ctx.formatter} firstDay={firstDay()} min={min()} max={max()} isSelected={(d) => sameDay(d, selected())} initial={selected() ?? new Date()} onPick={pick} t={ctx.t} direction={ctx.direction} />\n </PickerPopover>\n <FieldErrors part={part} field={f} />\n </div>\n )\n}\n\nexport function DateRangePickerNative(props: NativeProps): JSX.Element {\n const part = parts(props)\n const ctx = useSurfaceContext()\n const id = createUniqueId()\n const contentId = createUniqueId()\n const [start, setStart] = createBoundState(() => props.node, () => props.scope, `start`, () => str(props.props.start))\n const [end, setEnd] = createBoundState(() => props.node, () => props.scope, `end`, () => str(props.props.end))\n let trigger: HTMLButtonElement | undefined\n const f = createField({ node: () => props.node, domId: () => props.domId, props: () => props.props, value: () => ({ start: start(), end: end() }), focusEl: () => trigger })\n const [open, setOpen] = createSignal(false)\n const [pending, setPending] = createSignal<Date | null>(null)\n const [hover, setHover] = createSignal<Date | null>(null)\n const s = createMemo(() => (start() ? parseIsoDate(start()) : null))\n const e = createMemo(() => (end() ? parseIsoDate(end()) : null))\n const min = createMemo(() => (props.props.min ? parseIsoDate(str(props.props.min)) : null))\n const max = createMemo(() => (props.props.max ? parseIsoDate(str(props.props.max)) : null))\n const firstDay = () => firstDayOf(props.props, ctx.locale)\n const fmt = (d: Date) => ctx.formatter.date(isoDate(d))\n const label = () => {\n const a = s()\n const b = e()\n return a ? `${fmt(a)} – ${b ? fmt(b) : ``}` : ``\n }\n createComputed(\n on(open, (o) => {\n if (!o) {\n setPending(null)\n setHover(null)\n }\n })\n )\n const pick = (d: Date) => {\n const p = pending()\n if (!p) {\n setPending(d)\n return\n }\n const [a, b] = d < p ? [d, p] : [p, d]\n const next = { start: isoDate(a), end: isoDate(b) }\n setStart(next.start)\n setEnd(next.end)\n setPending(null)\n f.change(next)\n f.touch()\n void props.emit(`change`, next, next)\n setOpen(false)\n }\n const range = createMemo(() => {\n const lo = pending() ?? s()\n const hi = pending() ? hover() : e()\n return lo && hi ? (hi < lo ? [hi, lo] : [lo, hi]) : [lo, hi]\n })\n return (\n <div {...props.rootProps}>\n <TextPart part={part(`label`)} text={props.props.label} as=\"label\" htmlFor={id} />\n <button\n ref={trigger}\n {...triggerAttrs(open(), contentId)}\n id={id}\n {...part(`trigger`, open() && `open`, f.invalid && `invalid`)}\n data-start={start() || undefined}\n data-end={end() || undefined}\n aria-haspopup=\"dialog\"\n aria-describedby={f.describedBy}\n onClick={() => setOpen(!open())}\n >\n <span>{label() || <span {...part(`placeholder`)}>{str(props.props.placeholder)}</span>}</span>\n <BuiltinIcon slot=\"DateRangePicker.trigger\" />\n </button>\n <PickerPopover\n portal={ctx.portal}\n dir={ctx.direction}\n open={open()}\n setOpen={setOpen}\n trigger={() => trigger}\n contentId={contentId}\n attrs={{ ...part(`calendar`, open() && `open`), dir: ctx.direction, role: `dialog`, \"aria-label\": str(props.props.label) || undefined, \"data-xui-overlay\": `DateRangePicker`, \"data-pending\": pending() ? isoDate(pending()!) : undefined }}\n onOpenAutoFocus={focusGridStop}\n onPointerOver={(ev) => {\n const date = (ev.target as HTMLElement).closest?.(`[data-date]`)?.getAttribute(`data-date`)\n if (pending() && date) setHover(parseIsoDate(date))\n }}\n onFocusIn={(ev) => {\n const date = (ev.target as HTMLElement).getAttribute?.(`data-date`)\n if (pending() && date) setHover(parseIsoDate(date))\n }}\n >\n <CalendarGrid\n part={part}\n dayPart=\"day\"\n locale={ctx.locale}\n formatter={ctx.formatter}\n firstDay={firstDay()}\n min={min()}\n max={max()}\n isSelected={(d) => sameDay(d, pending()) || (!pending() && (sameDay(d, s()) || sameDay(d, e())))}\n inRange={(d) => {\n const [a, b] = range()\n return Boolean(a && b && d > a && d < b)\n }}\n initial={s() ?? new Date()}\n onPick={pick}\n t={ctx.t}\n direction={ctx.direction}\n />\n </PickerPopover>\n <FieldErrors part={part} field={f} />\n </div>\n )\n}\n\nconst parseTime = (s: string): number | null => {\n const m = /^(\\d{1,2}):(\\d{2})$/.exec(s.trim())\n if (!m) return null\n const h = Number(m[1])\n const min = Number(m[2])\n return h < 24 && min < 60 ? h * 60 + min : null\n}\nconst formatHHmm = (minutes: number) => `${String(Math.floor(minutes / 60)).padStart(2, `0`)}:${String(minutes % 60).padStart(2, `0`)}`\n\nexport function TimePickerNative(props: NativeProps): JSX.Element {\n const part = parts(props)\n const ctx = useSurfaceContext()\n const id = createUniqueId()\n const contentId = createUniqueId()\n const listId = `${id}-list`\n const [value, setValue] = createBoundState(() => props.node, () => props.scope, `value`, () => str(props.props.value))\n let trigger: HTMLButtonElement | undefined\n const f = createField({ node: () => props.node, domId: () => props.domId, props: () => props.props, value, focusEl: () => trigger })\n const disabled = () => bool(props.props.disabled) || Boolean(f.form?.disabled)\n const [open, setOpen] = createSignal(false)\n const step = () => Math.max(1, Math.round(num(props.props.step, 15)))\n const lo = () => parseTime(str(props.props.min)) ?? 0\n const hi = () => parseTime(str(props.props.max)) ?? 24 * 60 - 1\n const times = createMemo(() => {\n const out: number[] = []\n for (let m = lo(); m <= hi(); m += step()) out.push(m)\n return out\n })\n const clock = createMemo(() => new Intl.DateTimeFormat(ctx.locale, { hour: `numeric`, minute: `2-digit` }))\n const show = (m: number) => clock().format(new Date(2000, 0, 1, Math.floor(m / 60), m % 60))\n const current = () => parseTime(value())\n const pick = (i: number) => {\n const next = formatHHmm(times()[i]!)\n setValue(next)\n f.change(next)\n f.touch()\n void props.emit(`change`, { value: next }, { value: next })\n setOpen(false)\n trigger?.focus()\n }\n const nav = createListNavigationSync({ count: () => times().length, labelOf: (i) => show(times()[i]!), onPick: pick, typeahead: true })\n let list: HTMLDivElement | undefined\n createComputed(\n on(\n open,\n (o) => {\n if (!o) return\n const c = untrack(current)\n const i = c === null ? 0 : untrack(times).findIndex((t) => t >= c)\n nav.setActive(i < 0 ? 0 : i)\n },\n { defer: true }\n )\n )\n const activeId = () => (nav.active() >= 0 ? `${listId}-${nav.active()}` : undefined)\n createEffect(\n on(activeId, (a) => {\n if (a) list?.querySelector(`[id=\"${a}\"]`)?.scrollIntoView?.({ block: `nearest` })\n })\n )\n return (\n <div {...props.rootProps}>\n <TextPart part={part(`label`)} text={props.props.label} as=\"label\" htmlFor={id} />\n <button\n ref={trigger}\n type=\"button\"\n data-state={open() ? `open` : `closed`}\n id={id}\n {...part(`trigger`, open() && `open`, disabled() && `disabled`, f.invalid && `invalid`)}\n disabled={disabled()}\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-expanded={open()}\n aria-controls={open() ? listId : undefined}\n data-value={value() || undefined}\n aria-describedby={f.describedBy}\n onClick={() => setOpen(!open())}\n >\n <span>{current() !== null ? show(current()!) : <span {...part(`placeholder`)}>{str(props.props.placeholder)}</span>}</span>\n <BuiltinIcon slot=\"TimePicker.trigger\" />\n </button>\n <PickerPopover\n portal={ctx.portal}\n dir={ctx.direction}\n open={open()}\n setOpen={setOpen}\n trigger={() => trigger}\n contentId={contentId}\n attrs={{ ...part(`list`, open() && `open`), dir: ctx.direction, \"data-xui-overlay\": `TimePicker` }}\n onOpenAutoFocus={() => list?.focus()}\n >\n <div ref={list} id={listId} role=\"listbox\" tabindex={0} aria-activedescendant={activeId()} aria-labelledby={id} class=\"xui-TimePicker-listbox\" onKeyDown={nav.onKeyDown}>\n <For each={times()}>\n {(m, i) => {\n const sel = () => m === current()\n return (\n <div\n id={`${listId}-${i()}`}\n role=\"option\"\n aria-selected={sel()}\n data-value={formatHHmm(m)}\n {...part(`item`, (sel() || i() === nav.active()) && `selected`)}\n onPointerMove={() => nav.setActive(i())}\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => pick(i())}\n >\n {show(m)}\n </div>\n )\n }}\n </For>\n </div>\n </PickerPopover>\n <FieldErrors part={part} field={f} />\n </div>\n )\n}\n\nexport const NATIVES_DATES: Record<string, Component<NativeProps>> = {\n DatePicker: DatePickerNative,\n DateRangePicker: DateRangePickerNative,\n TimePicker: TimePickerNative,\n}\n","// FEED-128 (React's natives/feedback.tsx): Ring, Spinner, Skeleton,\n// TreeGuides (Chart: chart.tsx). Sizes and strokes come from the theme's\n// recipes (`resolveRecipe`), exactly as React reads them.\n\nimport { For, Show, createMemo, type JSX } from \"solid-js\"\nimport { resolveRecipe, nativeRecipeProps, TREE_GUIDE_BRIDGE, TREE_GUIDE_COLUMN, TREE_GUIDE_RADIUS } from \"@exponential-at/ui\"\nimport type { Component } from \"solid-js\"\nimport { useSurfaceContext, type SurfaceContextValue } from \"../context\"\nimport { CHROME, PaintIcon } from \"../icons\"\nimport { mergeStyle, type NativeProps } from \"../node-view\"\nimport { arr, bool, css, num, parts, str } from \"./shared\"\n\nfunction sizeOf(ctx: SurfaceContextValue, component: string, part: string, props: Record<string, unknown>, fallback: number): number {\n const style = resolveRecipe(ctx.theme, { component, part, props: nativeRecipeProps(component, props, ctx.extensionDefs) }, ctx.mode)\n return typeof style.width === `number` ? style.width : fallback\n}\n\nexport function RingNative(props: NativeProps): JSX.Element {\n const ctx = useSurfaceContext()\n const part = parts(props)\n const geo = createMemo(() => {\n const size = sizeOf(ctx, `Ring`, `root`, props.props, 32)\n const value = Math.max(0, Math.min(1, num(props.props.value, 0)))\n const trackStyle = resolveRecipe(ctx.theme, { component: `Ring`, part: `track`, props: nativeRecipeProps(`Ring`, props.props) }, ctx.mode)\n const fillStyle = resolveRecipe(ctx.theme, { component: `Ring`, part: `fill`, props: nativeRecipeProps(`Ring`, props.props) }, ctx.mode)\n const stroke = typeof trackStyle.borderWidth === `number` ? trackStyle.borderWidth : 2\n const r = size / 2 - stroke / 2\n const c = 2 * Math.PI * r\n return { size, value, trackStyle, fillStyle, stroke, r, c, fillStroke: typeof fillStyle.borderWidth === `number` ? fillStyle.borderWidth : stroke }\n })\n const label = () => str(props.props.label)\n return (\n <span {...props.rootProps} role=\"progressbar\" aria-valuemin={0} aria-valuemax={1} aria-valuenow={geo().value} aria-label={label() || undefined} style={mergeStyle(props.rootProps, { width: geo().size, height: geo().size })}>\n <svg viewBox={`0 0 ${geo().size} ${geo().size}`} width={geo().size} height={geo().size}>\n <circle {...part(`track`)} cx={geo().size / 2} cy={geo().size / 2} r={geo().r} fill=\"none\" stroke=\"currentColor\" stroke-width={geo().stroke} style={css({ color: String(geo().trackStyle.color ?? `currentColor`) })} />\n <circle\n {...part(`fill`)}\n cx={geo().size / 2}\n cy={geo().size / 2}\n r={geo().r}\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width={geo().fillStroke}\n stroke-dasharray={`${geo().c * geo().value} ${geo().c}`}\n stroke-linecap=\"round\"\n transform={`rotate(-90 ${geo().size / 2} ${geo().size / 2})`}\n style={css({ color: String(geo().fillStyle.color ?? `currentColor`) })}\n />\n </svg>\n <Show when={label()}>\n <span {...part(`label`)}>{label()}</span>\n </Show>\n </span>\n )\n}\n\nexport function SpinnerNative(props: NativeProps): JSX.Element {\n const ctx = useSurfaceContext()\n const size = () => sizeOf(ctx, `Spinner`, `root`, props.props, 20)\n const label = () => str(props.props.label) || ctx.t(`loading`)\n return (\n <span {...props.rootProps} role=\"status\" aria-label={label()} style={mergeStyle(props.rootProps, { width: size(), height: size() })}>\n <PaintIcon icon={CHROME.spinner} aria-hidden=\"true\" />\n </span>\n )\n}\n\n/** The bars' widths per placeholder row (lead, title): the core's\n * `SKELETON_BARS`, so a stack never reads as one ruled block. */\nconst SKELETON_BARS: readonly [number, number][] = [\n [56, 168],\n [56, 120],\n [56, 192],\n]\n\n/** Skeleton: one pulsing block, or (EXP-1259, feedback-states.json\n * `placeholder`) `rows` placeholder rows in the row geometry: each a `dot`\n * (unless `dot: false`) and two `bar`s, hairline-divided; the root paints\n * nothing itself, the pieces pulse (base CSS). */\nexport function SkeletonNative(props: NativeProps): JSX.Element {\n const part = parts(props)\n const rows = () => Math.min(50, Math.floor(num(props.props.rows, 0)))\n const block = () => {\n const width = str(props.props.width, `100%`)\n const height = str(props.props.height, `16px`)\n return <div {...props.rootProps} aria-hidden=\"true\" style={mergeStyle(props.rootProps, { width, height, borderRadius: bool(props.props.rounded) ? 9999 : undefined })} />\n }\n const dot = () => (props.props.dot === undefined ? true : bool(props.props.dot))\n const height = () => (props.props.rowHeight === undefined ? `var(--xui-control-row)` : `${num(props.props.rowHeight)}px`)\n const indexes = createMemo(() => Array.from({ length: Math.max(0, rows()) }, (_, r) => r))\n return (\n <Show when={rows() >= 1} fallback={block()}>\n <div {...props.rootProps} data-rows=\"\" aria-hidden=\"true\">\n <For each={indexes()}>\n {(r) => {\n const [lead, title] = SKELETON_BARS[r % SKELETON_BARS.length]\n return (\n <div {...part.at(`row`, r)} style={css({ height: height() })}>\n <Show when={dot()}>\n <span {...part.at(`dot`, r)} />\n </Show>\n <span {...part.at(`bar`, `${r}.0`)} style={css({ width: lead })} />\n <span {...part.at(`bar`, `${r}.1`)} data-title=\"\" style={css({ width: title })} />\n </div>\n )\n }}\n </For>\n </div>\n </Show>\n )\n}\n\n/** TreeGuides (round 3, a Row's `guides` part the CORE fills: `elbowAt`,\n * `tee`, `passThrough` arrive computed): `depth` columns of\n * `TREE_GUIDE_COLUMN` (14) px; column i's line sits at its centre. The\n * elbow = ONE element whose left + bottom borders are the vertical and the\n * stub, the corner rounded by `TREE_GUIDE_RADIUS`; `tee` and pass-through\n * columns = full-height verticals from the same bridge. Stroke width +\n * colour = the `TreeGuides/line` recipe. Physical x (never mirrored). */\nexport function TreeGuidesNative(props: NativeProps): JSX.Element {\n const ctx = useSurfaceContext()\n const part = parts(props)\n const depth = () => Math.max(0, Math.floor(num(props.props.depth, 0)))\n // The core fills `elbowAt`; a row it never saw (a lone root, a template item) draws no elbow.\n const elbowAt = () => (props.props.elbowAt === undefined || props.props.elbowAt === null ? -1 : num(props.props.elbowAt))\n const tee = () => bool(props.props.tee)\n const pass = createMemo(() => new Set(arr<number>(props.props.passThrough).map((v) => num(v))))\n const stroke = () => sizeOf(ctx, `TreeGuides`, `line`, props.props, 1)\n // The line's LEFT edge sits at i·14 + 7 (the reading of the three native painters).\n const x = TREE_GUIDE_COLUMN / 2\n const vertical = () => <i {...part(`line`)} data-vertical=\"\" style={css({ left: x, width: stroke(), top: -TREE_GUIDE_BRIDGE, bottom: 0 })} />\n const cols = createMemo(() => Array.from({ length: depth() }, (_, i) => i))\n return (\n <span {...props.rootProps} aria-hidden=\"true\" data-tee={tee() ? `true` : undefined}>\n <For each={cols()}>\n {(i) => {\n const elbow = () => i === elbowAt()\n return (\n <span class=\"xui-tree-col\" data-col={i} style={css({ width: TREE_GUIDE_COLUMN })}>\n {pass().has(i) && !elbow() ? vertical() : null}\n {elbow() && tee() ? vertical() : null}\n {elbow() ? (\n <i\n {...part(`line`)}\n data-elbow=\"\"\n style={css({\n left: x,\n top: -TREE_GUIDE_BRIDGE,\n width: TREE_GUIDE_COLUMN - x,\n height: `calc(50% + ${TREE_GUIDE_BRIDGE + stroke() / 2}px)`,\n borderLeftWidth: stroke(),\n borderBottomWidth: stroke(),\n borderBottomLeftRadius: TREE_GUIDE_RADIUS,\n })}\n />\n ) : null}\n </span>\n )\n }}\n </For>\n </span>\n )\n}\n\nexport const NATIVES_FEEDBACK: Record<string, Component<NativeProps>> = {\n Ring: RingNative,\n Spinner: SpinnerNative,\n Skeleton: SkeletonNative,\n TreeGuides: TreeGuidesNative,\n}\n","// FEED-128: HOST-OWNED inputs on Solid (React's inputs.ts). The rules\n// (revision counter, debounce, echo acceptance: a host push is adopted only\n// when the field is not focused AND every revision was acknowledged, the\n// VAPP-4 typing rule) are the web layer's `HostOwnedController`; this keeps\n// one per field and exposes its state as live getters.\n\nimport { createEffect, createSignal, on, onCleanup, untrack, type Accessor } from \"solid-js\"\nimport { DEBOUNCE_MS, HostOwnedController } from \"@exponential-at/ui/web\"\n\nexport { DEBOUNCE_MS }\n\nexport interface HostOwnedOptions<T> {\n /** The value the host currently holds (resolved prop or data model). */\n external: Accessor<T>\n /** Sends an edit; a returned promise acknowledges the revision on settle.\n * Read at call time (a getter on the options object is followed). */\n send: (value: T, revision: number, kind: `change` | `commit`) => void | Promise<void>\n /** Optional local write-through (the bound data model path). */\n writeLocal?: (value: T) => void\n debounceMs?: number\n}\n\nexport interface HostOwnedValue<T> {\n readonly value: T\n readonly revision: number\n /** True while a revision the host has not acknowledged exists. */\n readonly pending: boolean\n readonly focused: boolean\n onFocus: () => void\n onBlur: () => void\n /** A local edit. */\n edit: (next: T) => void\n /** Flush the debounce and send a `commit`. */\n commit: () => void\n}\n\nexport function createHostOwnedValue<T>(options: HostOwnedOptions<T>): HostOwnedValue<T> {\n const [version, bump] = createSignal(0, { equals: false })\n const c = new HostOwnedController<T>({\n initial: untrack(options.external),\n send: (value, revision, kind) => options.send(value, revision, kind),\n writeLocal: (value) => options.writeLocal?.(value),\n debounceMs: options.debounceMs ?? DEBOUNCE_MS,\n onChange: () => bump(0),\n })\n c.attach()\n onCleanup(() => c.dispose())\n // The host's push: adopted only when idle and fully acknowledged.\n createEffect(on(options.external, (external) => void c.push(external), { defer: true }))\n return {\n get value() {\n version()\n return c.value\n },\n get revision() {\n version()\n return c.revision\n },\n get pending() {\n version()\n return c.pending\n },\n get focused() {\n version()\n return c.focused\n },\n onFocus: () => c.focus(),\n onBlur: () => c.blur(),\n edit: (next) => c.edit(next),\n commit: () => c.commit(),\n }\n}\n","// FEED-128 (React's natives/inputs.tsx): the form controls. Text inputs are\n// HOST-OWNED (`createHostOwnedValue`: local state, debounced `change` with a\n// revision, `commit` on blur/Enter, echoes applied only when idle and\n// acknowledged); the rest are controlled from the resolved prop with a\n// local mirror (`createBoundState`: a bound prop is written through to the\n// data model and `change` fires). Every named control speaks the Form\n// protocol (`createField`: all failing checks under the field, `<id>.error`\n// linked by aria-describedby, the `invalid` recipe state, Enter submits the\n// Form).\n//\n// Radix paints React's Checkbox, Switch, RadioGroup and Slider; these are\n// the same DOM hand-rolled on plain elements (Kobalte's parts write their\n// own attribute set): the Radix attributes (`data-state`, `data-disabled`,\n// `data-orientation`, `data-radix-collection-item`, `value=\"on\"`, the\n// roving tab stop, the slider's thumb wrapper and its in-bounds offset)\n// and, inside a <form>, Radix's hidden BUBBLE inputs after the control.\n\nimport { For, Show, createEffect, createMemo, createSignal, createUniqueId, onCleanup, onMount, untrack, type JSX } from \"solid-js\"\nimport { boundPath, hostPath, parseLocaleNumber } from \"@exponential-at/ui/web\"\nimport { useSurfaceContext } from \"../context\"\nimport { FieldErrors, createField, joinIds } from \"../form\"\nimport { IconGlyph } from \"../icons\"\nimport { createHostOwnedValue } from \"../inputs\"\nimport type { NativeProps } from \"../node-view\"\nimport type { SurfaceInputEvent } from \"../host\"\nimport { createBoundState } from \"./bound\"\nimport { bool, BuiltinIcon, css, num, objects, parts, str, TextPart } from \"./shared\"\nimport { BACK_KEYS, BubbleCheck, clampTo, createElementSize, createInForm, decimalCount, inBoundsOffset, KEY_INTENT, linearScale, PAGE_KEYS, percentOf, roundValue, rovingFocusFirst, SliderBubble } from \"../behaviors\"\n\n/** React's `useInputSender`: the host `onInput` sender of a host-owned\n * field and its local write-through (the bound data path). */\nexport function createInputSender(props: NativeProps, prop: string) {\n const ctx = useSurfaceContext()\n const path = createMemo(() => boundPath(props.node.props, prop, props.scope))\n const name = () => str(props.node.props.name, props.node.id)\n const send = (value: unknown, revision: number, kind: `change` | `commit`) =>\n untrack(() => {\n const e: SurfaceInputEvent = { surfaceId: ctx.surfaceId, componentId: props.domId, name: name(), path: hostPath(path()), value, revision, kind }\n return ctx.host.onInput?.(e)\n })\n const writeLocal = (value: unknown) => {\n const p = untrack(path)\n if (p) ctx.setData(p, value)\n }\n return { send, writeLocal, path, name }\n}\n\nexport function InputNative(p: NativeProps): JSX.Element {\n return <TextFieldNative {...p} multiline={false} />\n}\nexport function TextareaNative(p: NativeProps): JSX.Element {\n return <TextFieldNative {...p} multiline />\n}\n\n/** Textarea autosize (contract §3): from `rows` lines up to `maxRows`, then\n * it scrolls. */\nfunction autosize(el: HTMLTextAreaElement, rows: number, maxRows: number | null) {\n const cs = getComputedStyle(el)\n const lh = parseFloat(cs.lineHeight) || parseFloat(cs.fontSize) * 1.4 || 20\n const pad = (parseFloat(cs.paddingTop) || 0) + (parseFloat(cs.paddingBottom) || 0) + (parseFloat(cs.borderTopWidth) || 0) + (parseFloat(cs.borderBottomWidth) || 0)\n const min = rows * lh + pad\n const max = maxRows ? maxRows * lh + pad : Infinity\n el.style.height = `auto`\n const h = Math.min(max, Math.max(min, el.scrollHeight + (parseFloat(cs.borderTopWidth) || 0) + (parseFloat(cs.borderBottomWidth) || 0)))\n el.style.height = `${h}px`\n el.style.overflowY = el.scrollHeight > h ? `auto` : `hidden`\n}\n\nfunction TextFieldNative(props: NativeProps & { multiline: boolean }): JSX.Element {\n const part = parts(props)\n const id = createUniqueId()\n const { send, writeLocal } = createInputSender(props, `value`)\n const field = createHostOwnedValue<string>({ external: () => str(props.props.value), send, writeLocal })\n let el: HTMLInputElement | HTMLTextAreaElement | undefined\n const f = createField({ node: () => props.node, domId: () => props.domId, props: () => props.props, value: () => field.value, focusEl: () => el })\n const disabled = () => bool(props.props.disabled) || Boolean(f.form?.disabled)\n const label = () => str(props.props.label)\n const placeholder = () => str(props.props.placeholder)\n const description = () => str(props.props.description)\n const rows = () => Math.max(1, num(props.props.rows, 3))\n const maxRows = () => (props.props.maxRows === undefined ? null : Math.max(rows(), num(props.props.maxRows, rows())))\n const auto = () => props.multiline && bool(props.props.autosize)\n createEffect(() => {\n const a = auto()\n void field.value\n const r = rows()\n const m = maxRows()\n if (a && el) autosize(el as HTMLTextAreaElement, r, m)\n })\n const fieldStates = () => [disabled() && `disabled`, field.focused && `focus`, f.invalid && `invalid`] as const\n const onFocus = () => {\n field.onFocus()\n void props.emit(`focus`)\n }\n const onBlur = () => {\n field.onBlur()\n f.touch()\n void props.emit(`blur`)\n }\n const onInput = (e: InputEvent & { currentTarget: HTMLInputElement | HTMLTextAreaElement }) => {\n const v = e.currentTarget.value\n // React's closure reads the revision of the render before the edit.\n const revision = field.revision + 1\n field.edit(v)\n f.change(v)\n void props.emit(`change`, { value: v, revision }, { value: v })\n }\n return (\n <div {...props.rootProps} data-pending={field.pending ? `true` : undefined} data-revision={field.revision}>\n <TextPart part={part(`label`)} text={label()} as=\"label\" htmlFor={id} />\n <Show\n when={props.multiline}\n fallback={\n <input\n ref={(e) => (el = e)}\n {...part(`field`, ...fieldStates())}\n id={id}\n name={str(props.props.name, props.node.id)}\n value={field.value}\n prop:defaultValue={field.value}\n placeholder={placeholder() || undefined}\n disabled={disabled()}\n aria-invalid={f.invalid ? true : undefined}\n aria-describedby={joinIds(description() && `${id}-d`, f.describedBy)}\n onFocus={onFocus}\n onBlur={onBlur}\n onInput={onInput}\n type={str(props.props.type, `text`)}\n onKeyDown={(e) => {\n if (e.key === `Enter`) {\n e.preventDefault()\n field.commit()\n void props.emit(`submit`, { value: field.value })\n f.submit()\n }\n }}\n />\n }\n >\n <textarea\n ref={(e) => (el = e)}\n {...part(`field`, ...fieldStates())}\n id={id}\n name={str(props.props.name, props.node.id)}\n value={field.value}\n prop:defaultValue={field.value}\n placeholder={placeholder() || undefined}\n disabled={disabled()}\n aria-invalid={f.invalid ? true : undefined}\n aria-describedby={joinIds(description() && `${id}-d`, f.describedBy)}\n onFocus={onFocus}\n onBlur={onBlur}\n onInput={onInput}\n rows={rows()}\n data-autosize={auto() ? `true` : undefined}\n />\n </Show>\n <TextPart part={part(`description`)} text={description()} id={`${id}-d`} />\n <FieldErrors part={part} field={f} />\n </div>\n )\n}\n\n// ---------------------------------------------------------------------------\n// NumberField\n// ---------------------------------------------------------------------------\n\nconst decimalsOf = (n: number) => {\n const s = String(n)\n const i = s.indexOf(`.`)\n return i < 0 ? 0 : s.length - i - 1\n}\n\nexport function NumberFieldNative(props: NativeProps): JSX.Element {\n const ctx = useSurfaceContext()\n const part = parts(props)\n const id = createUniqueId()\n const min = () => (props.props.min === undefined ? null : num(props.props.min))\n const max = () => (props.props.max === undefined ? null : num(props.props.max))\n const step = () => num(props.props.step, 1) || 1\n const precision = () => (props.props.precision === undefined ? decimalsOf(step()) : Math.max(0, num(props.props.precision)))\n const external = () => (props.props.value === undefined || props.props.value === null || props.props.value === `` ? null : num(props.props.value))\n const [value, setValue] = createBoundState<number | null>(() => props.node, () => props.scope, `value`, external)\n const [text, setText] = createSignal<string | null>(null)\n let el: HTMLInputElement | undefined\n const f = createField({ node: () => props.node, domId: () => props.domId, props: () => props.props, value, focusEl: () => el })\n const disabled = () => bool(props.props.disabled) || Boolean(f.form?.disabled)\n // Display through the surface Formatter (round 2 §3); the typed text is\n // parsed in the locale's separators.\n const decimalSep = createMemo(() => new Intl.NumberFormat(ctx.locale).formatToParts(1.1).find((p) => p.type === `decimal`)?.value ?? `.`)\n const format = (n: number) => ctx.formatter.number(n, { decimals: precision() })\n const clamp = (n: number) => {\n let v = n\n const lo = min()\n const hi = max()\n if (lo !== null) v = Math.max(lo, v)\n if (hi !== null) v = Math.min(hi, v)\n return Number(v.toFixed(precision()))\n }\n const commit = (next: number | null) => {\n setValue(next)\n f.change(next)\n void props.emit(`change`, { value: next }, { value: next })\n }\n const stepBy = (delta: number) => {\n const lo = min()\n const base = value() ?? (lo !== null && lo > 0 ? lo : 0)\n commit(clamp(base + delta))\n setText(null)\n }\n const shown = () => text() ?? (value() === null ? `` : format(value()!))\n const unit = () => str(props.props.unit)\n return (\n <div {...props.rootProps}>\n <TextPart part={part(`label`)} text={props.props.label} as=\"label\" htmlFor={id} />\n <div {...part(`field`, disabled() && `disabled`, f.invalid && `invalid`)} data-xui-numberfield=\"\">\n <button\n type=\"button\"\n {...part(`decrement`, disabled() && `disabled`)}\n aria-label={ctx.t(`decrement`)}\n tabindex={-1}\n disabled={disabled() || (min() !== null && value() !== null && value()! <= min()!)}\n onClick={() => stepBy(-step())}\n >\n <BuiltinIcon slot=\"NumberField.decrement\" />\n </button>\n <input\n ref={(e) => (el = e)}\n id={id}\n {...part(`input`)}\n type=\"text\"\n inputmode={precision() > 0 ? `decimal` : `numeric`}\n role=\"spinbutton\"\n aria-valuenow={value() ?? undefined}\n aria-valuemin={min() ?? undefined}\n aria-valuemax={max() ?? undefined}\n aria-valuetext={value() === null ? undefined : `${format(value()!)}${unit() ? ` ${unit()}` : ``}`}\n aria-invalid={f.invalid || undefined}\n aria-describedby={f.describedBy}\n name={str(props.props.name, props.node.id)}\n placeholder={str(props.props.placeholder) || undefined}\n disabled={disabled()}\n value={shown()}\n prop:defaultValue={shown()}\n onFocus={() => {\n const v = value()\n setText(v === null ? `` : String(v).replace(`.`, decimalSep()))\n void props.emit(`focus`)\n }}\n onInput={(e) => {\n const raw = e.currentTarget.value\n setText(raw)\n const n = parseLocaleNumber(raw, ctx.locale)\n if (n !== null || raw.trim() === ``) commit(n)\n }}\n onBlur={() => {\n const v = value()\n if (v !== null && clamp(v) !== v) commit(clamp(v))\n setText(null)\n f.touch()\n void props.emit(`blur`)\n }}\n onKeyDown={(e) => {\n const big = e.shiftKey ? 10 : 1\n const lo = min()\n const hi = max()\n if (e.key === `ArrowUp`) {\n e.preventDefault()\n stepBy(step() * big)\n } else if (e.key === `ArrowDown`) {\n e.preventDefault()\n stepBy(-step() * big)\n } else if (e.key === `PageUp`) {\n e.preventDefault()\n stepBy(step() * 10)\n } else if (e.key === `PageDown`) {\n e.preventDefault()\n stepBy(-step() * 10)\n } else if (e.key === `Home` && lo !== null) {\n e.preventDefault()\n commit(lo)\n setText(null)\n } else if (e.key === `End` && hi !== null) {\n e.preventDefault()\n commit(hi)\n setText(null)\n } else if (e.key === `Enter`) {\n e.preventDefault()\n const cur = value()\n const v = cur === null ? null : clamp(cur)\n if (v !== cur) commit(v)\n setText(null)\n void props.emit(`submit`, { value: v }, v !== cur ? { value: v } : undefined)\n f.submit()\n }\n }}\n />\n {unit() ? <span {...part(`unit`)}>{unit()}</span> : null}\n <button\n type=\"button\"\n {...part(`increment`, disabled() && `disabled`)}\n aria-label={ctx.t(`increment`)}\n tabindex={-1}\n disabled={disabled() || (max() !== null && value() !== null && value()! >= max()!)}\n onClick={() => stepBy(step())}\n >\n <BuiltinIcon slot=\"NumberField.increment\" />\n </button>\n </div>\n <FieldErrors part={part} field={f} />\n </div>\n )\n}\n\n// ---------------------------------------------------------------------------\n// Checkbox, Switch, Radio, Slider\n// ---------------------------------------------------------------------------\n\nexport function CheckboxNative(props: NativeProps): JSX.Element {\n const part = parts(props)\n const id = createUniqueId()\n const [checked, setCheckedState] = createBoundState(() => props.node, () => props.scope, `checked`, () => bool(props.props.checked))\n const [box, setBox] = createSignal<HTMLButtonElement>()\n const f = createField({ node: () => props.node, domId: () => props.domId, props: () => props.props, value: checked, focusEl: box })\n const disabled = () => bool(props.props.disabled) || Boolean(f.form?.disabled)\n const inForm = createInForm(box)\n let stopped = false\n return (\n <div {...props.rootProps}>\n <button\n type=\"button\"\n role=\"checkbox\"\n aria-checked={checked()}\n data-state={checked() ? `checked` : `unchecked`}\n data-disabled={disabled() ? `` : undefined}\n disabled={disabled()}\n value=\"on\"\n ref={setBox}\n id={id}\n {...part(`box`, checked() && `checked`, disabled() && `disabled`, f.invalid && `invalid`)}\n aria-invalid={f.invalid || undefined}\n aria-describedby={f.describedBy}\n onKeyDown={(e) => {\n if (e.key === `Enter`) e.preventDefault()\n }}\n onClick={(e) => {\n const value = !checked()\n setCheckedState(value)\n f.change(value)\n f.touch()\n void props.emit(`change`, { checked: value }, { checked: value })\n if (inForm()) {\n stopped = e.cancelBubble\n if (!stopped) e.stopPropagation()\n }\n }}\n >\n <Show when={checked()}>\n <span data-state=\"checked\" data-disabled={disabled() ? `` : undefined} {...part(`check`)} style={css({ pointerEvents: `none` })}>\n <BuiltinIcon slot=\"Checkbox.check\" />\n </span>\n </Show>\n </button>\n <Show when={inForm()}>\n <BubbleCheck type=\"checkbox\" control={box()} checked={checked()} name={str(props.props.name, props.node.id)} value=\"on\" disabled={disabled()} transformFirst={false} bubbles={() => !stopped} />\n </Show>\n <div class=\"xui-field-text\">\n <TextPart part={part(`label`)} text={props.props.label} as=\"label\" htmlFor={id} />\n <TextPart part={part(`description`)} text={props.props.description} />\n <FieldErrors part={part} field={f} />\n </div>\n </div>\n )\n}\n\nexport function SwitchNative(props: NativeProps): JSX.Element {\n const part = parts(props)\n const id = createUniqueId()\n const ctx = useSurfaceContext()\n const [checked, setCheckedState] = createBoundState(() => props.node, () => props.scope, `checked`, () => bool(props.props.checked))\n const [track, setTrack] = createSignal<HTMLButtonElement>()\n const f = createField({ node: () => props.node, domId: () => props.domId, props: () => props.props, value: checked, focusEl: track })\n const disabled = () => bool(props.props.disabled) || Boolean(f.form?.disabled)\n const inForm = createInForm(track)\n let stopped = false\n const travel = createMemo(() => {\n const trackWidth = num((ctx.theme.recipes.Switch?.track?.[0]?.style as { width?: number } | undefined)?.width, 32)\n const thumb = num((ctx.theme.recipes.Switch?.thumb?.[0]?.style as { width?: number } | undefined)?.width, 16)\n return Math.max(0, trackWidth - thumb - 4)\n })\n const description = () => str(props.props.description)\n // Round 2 §7: [label + description][switch] — label first, the track at\n // the END; the whole row toggles (the label already clicks the control).\n const onRow = (e: MouseEvent) => {\n const target = e.target as Element\n if (disabled() || target.closest(`button,label,a,input`)) return\n track()?.click()\n }\n return (\n <div {...props.rootProps} onClick={onRow}>\n <div {...part(`body`)}>\n <TextPart part={part(`label`)} text={props.props.label} as=\"label\" htmlFor={id} />\n <TextPart part={part(`description`)} text={description()} id={`${id}-d`} />\n <FieldErrors part={part} field={f} />\n </div>\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={checked()}\n data-state={checked() ? `checked` : `unchecked`}\n data-disabled={disabled() ? `` : undefined}\n disabled={disabled()}\n value=\"on\"\n ref={setTrack}\n id={id}\n {...part(`track`, checked() && `checked`, disabled() && `disabled`)}\n aria-describedby={joinIds(description() && `${id}-d`, f.describedBy)}\n style={css({ \"--xui-switch-travel\": `${travel()}px` })}\n onClick={(e) => {\n const next = !checked()\n setCheckedState(next)\n f.change(next)\n void props.emit(`change`, { checked: next }, { checked: next })\n if (inForm()) {\n stopped = e.cancelBubble\n if (!stopped) e.stopPropagation()\n }\n }}\n >\n <span data-state={checked() ? `checked` : `unchecked`} data-disabled={disabled() ? `` : undefined} {...part(`thumb`, checked() && `checked`)} />\n </button>\n <Show when={inForm()}>\n <BubbleCheck type=\"checkbox\" control={track()} checked={checked()} name={str(props.props.name, props.node.id)} value=\"on\" disabled={disabled()} transformFirst bubbles={() => !stopped} />\n </Show>\n </div>\n )\n}\n\ninterface Option {\n label: string\n value: string\n icon?: string\n disabled?: boolean\n}\n\nconst ARROWS = [`ArrowUp`, `ArrowDown`, `ArrowLeft`, `ArrowRight`]\n\nexport function RadioNative(props: NativeProps): JSX.Element {\n const part = parts(props)\n const ctx = useSurfaceContext()\n const id = createUniqueId()\n const options = createMemo(() => objects<Option>(props.props.options))\n const [value, setValue] = createBoundState(() => props.node, () => props.scope, `value`, () => str(props.props.value))\n let group: HTMLDivElement | undefined\n // Focus goes to the checked item (else the first), the group's tab stop.\n const itemEl = () => (group?.querySelector(`[data-state=\"checked\"]`) ?? group?.querySelector(`button`)) as HTMLElement | null\n const f = createField({ node: () => props.node, domId: () => props.domId, props: () => props.props, value, focusEl: itemEl })\n const orientation = () => str(props.props.orientation, `vertical`) as `vertical` | `horizontal`\n const name = () => str(props.props.name, props.node.id)\n const inForm = createInForm(() => group)\n // Radix's RovingFocusGroup: the current tab stop, the group's own tab\n // stop while it has focusable items, entry focus to the checked item.\n const [tabStop, setTabStop] = createSignal<string | null>(null)\n const [tabbingBack, setTabbingBack] = createSignal(false)\n const focusable = () => options().filter((o) => !bool(o.disabled)).length\n let clickFocus = false\n let arrowDown = false\n const onDocKeyDown = (e: KeyboardEvent) => {\n if (ARROWS.includes(e.key)) arrowDown = true\n }\n const onDocKeyUp = () => (arrowDown = false)\n onMount(() => {\n document.addEventListener(`keydown`, onDocKeyDown)\n document.addEventListener(`keyup`, onDocKeyUp)\n })\n onCleanup(() => {\n document.removeEventListener(`keydown`, onDocKeyDown)\n document.removeEventListener(`keyup`, onDocKeyUp)\n })\n const itemNodes = () => Array.from(group?.querySelectorAll<HTMLButtonElement>(`[role=\"radio\"]`) ?? []).filter((b) => !b.disabled)\n const choose = (next: string) => {\n setValue(next)\n f.change(next)\n void props.emit(`change`, { value: next }, { value: next })\n }\n let stopped = false\n return (\n <div {...props.rootProps} role=\"group\" aria-labelledby={props.props.label ? `${id}-l` : undefined} aria-describedby={f.describedBy}>\n <TextPart part={part(`label`)} text={props.props.label} id={`${id}-l`} />\n <div\n role=\"radiogroup\"\n aria-required={false}\n aria-orientation={orientation()}\n dir={ctx.direction}\n tabindex={tabbingBack() || focusable() === 0 ? -1 : 0}\n data-orientation={orientation()}\n ref={group}\n {...part(`items`)}\n class={`${part(`items`).class as string} xui-radio-items`}\n aria-invalid={f.invalid || undefined}\n style={css({ outline: `none` })}\n onMouseDown={() => (clickFocus = true)}\n onFocus={(e) => {\n const keyboard = !clickFocus\n if (e.target === e.currentTarget && keyboard && !tabbingBack()) {\n const nodes = itemNodes()\n const active = nodes.find((n) => n.value === untrack(value))\n const current = nodes.find((n) => n.value === untrack(tabStop))\n rovingFocusFirst([active, current, ...nodes])\n }\n clickFocus = false\n }}\n onBlur={() => setTabbingBack(false)}\n >\n <For each={options()}>\n {(o, i) => {\n const checked = () => o.value === value()\n const isDisabled = () => bool(o.disabled)\n const oid = `${id}-${o.value}`\n let btn: HTMLButtonElement | undefined\n const [btnEl, setBtnEl] = createSignal<HTMLButtonElement>()\n // Placed parts (round 2 §6): the option ROW = `item.<i>`, its\n // circle = `dot.<i>` (the recipe's item), its text = `label.<i>`.\n return (\n <label class=\"xui-radio-row\" for={oid} data-xui-id={`${part.domId}.item.${i()}`}>\n <button\n tabindex={tabStop() === o.value ? 0 : -1}\n data-orientation={orientation()}\n type=\"button\"\n role=\"radio\"\n aria-checked={checked()}\n data-state={checked() ? `checked` : `unchecked`}\n data-disabled={isDisabled() ? `` : undefined}\n disabled={isDisabled()}\n value={o.value}\n id={oid}\n data-radix-collection-item=\"\"\n ref={(e) => {\n btn = e\n setBtnEl(e)\n }}\n {...part(`item`, checked() && `checked`, isDisabled() && `disabled`, f.invalid && `invalid`)}\n data-xui-id={`${part.domId}.dot.${i()}`}\n onMouseDown={(e) => {\n if (isDisabled()) e.preventDefault()\n else setTabStop(o.value)\n }}\n onFocus={() => {\n setTabStop(o.value)\n if (arrowDown) btn?.click()\n }}\n onKeyDown={(e) => {\n if (e.key === `Tab` && e.shiftKey) {\n setTabbingBack(true)\n return\n }\n if (e.target !== e.currentTarget) return\n const key = ctx.direction !== `rtl` ? e.key : e.key === `ArrowLeft` ? `ArrowRight` : e.key === `ArrowRight` ? `ArrowLeft` : e.key\n const vertical = orientation() === `vertical`\n if (vertical && (key === `ArrowLeft` || key === `ArrowRight`)) return\n if (!vertical && (key === `ArrowUp` || key === `ArrowDown`)) return\n const intent = KEY_INTENT[key]\n if (intent !== undefined) {\n if (e.metaKey || e.ctrlKey || e.altKey || e.shiftKey) return\n e.preventDefault()\n let candidates = itemNodes() as HTMLElement[]\n if (intent === `last`) candidates.reverse()\n else if (intent === `prev` || intent === `next`) {\n if (intent === `prev`) candidates.reverse()\n const at = candidates.indexOf(e.currentTarget)\n candidates = candidates.map((_, k) => candidates[(at + 1 + k) % candidates.length])\n }\n setTimeout(() => rovingFocusFirst(candidates))\n } else if (e.key === `Enter`) e.preventDefault()\n }}\n onClick={(e) => {\n if (!checked()) choose(o.value)\n if (inForm()) {\n stopped = e.cancelBubble\n if (!stopped) e.stopPropagation()\n }\n }}\n >\n <Show when={checked()}>\n <span data-state=\"checked\" data-disabled={isDisabled() ? `` : undefined} {...part(`dot`, checked() && `checked`)} />\n </Show>\n </button>\n <Show when={inForm()}>\n <BubbleCheck type=\"radio\" control={btnEl()} checked={checked()} name={name()} value={o.value} disabled={isDisabled()} transformFirst bubbles={() => !stopped} />\n </Show>\n {o.icon ? <IconGlyph icons={ctx.host.icons} name={o.icon} class=\"xui-icon\" width={16} height={16} /> : null}\n <span {...part.at(`label`, i())}>{str(o.label)}</span>\n </label>\n )\n }}\n </For>\n </div>\n <FieldErrors part={part} field={f} />\n </div>\n )\n}\n\n/** Radix's single-thumb horizontal Slider. */\nexport function SliderNative(props: NativeProps): JSX.Element {\n const part = parts(props)\n const ctx = useSurfaceContext()\n const id = createUniqueId()\n const min = () => num(props.props.min, 0)\n const max = () => num(props.props.max, 100)\n const step = () => num(props.props.step, 1)\n const [value, setValue] = createBoundState(() => props.node, () => props.scope, `value`, () => num(props.props.value, min()))\n let root: HTMLSpanElement | undefined\n const [thumb, setThumb] = createSignal<HTMLSpanElement>()\n const thumbSize = createElementSize(thumb)\n const inForm = createInForm(thumb)\n const fromLeft = () => ctx.direction !== `rtl`\n const startEdge = () => (fromLeft() ? `left` : `right`)\n const endEdge = () => (fromLeft() ? `right` : `left`)\n const percent = () => percentOf(value(), min(), max())\n const offset = () => {\n const w = thumbSize()?.width\n return w ? inBoundsOffset(w, percent(), fromLeft() ? 1 : -1) : 0\n }\n /** Radix's `updateValues`: snap to the step, clamp, write; a commit\n * fires `change`. Every change focuses the thumb (Radix's onChange). */\n const update = (raw: number, commit: boolean) => {\n const snapped = roundValue(Math.round((raw - min()) / step()) * step() + min(), decimalCount(step()))\n const next = clampTo(snapped, [min(), max()])\n if (next === value()) return\n thumb()?.focus()\n setValue(next)\n if (commit) void props.emit(`change`, { value: next }, { value: next })\n }\n let rect: DOMRect | undefined\n let before = 0\n const fromPointer = (x: number) => {\n const r = rect ?? root!.getBoundingClientRect()\n rect = r\n return linearScale([0, r.width], fromLeft() ? [min(), max()] : [max(), min()])(x - r.left)\n }\n const rangeStyle = () => {\n const s: Record<string, string> = {}\n s[startEdge()] = `0%`\n s[endEdge()] = `${100 - percent()}%`\n return s\n }\n const wrapperStyle = () => {\n const s: Record<string, string> = { transform: `var(--radix-slider-thumb-transform)`, position: `absolute` }\n s[startEdge()] = `calc(${percent()}% + ${offset()}px)`\n return s\n }\n return (\n <div {...props.rootProps}>\n <div {...part(`header`)} class={`${part(`header`).class as string} xui-slider-head`}>\n <TextPart part={part(`label`)} text={props.props.label} as=\"label\" htmlFor={id} />\n <span {...part(`value`)}>{ctx.formatter.number(value())}</span>\n </div>\n <span\n ref={root}\n aria-disabled={false}\n dir={ctx.direction}\n data-orientation=\"horizontal\"\n class=\"xui-slider-root\"\n style={css({ \"--radix-slider-thumb-transform\": `translateX(-50%)` })}\n onKeyDown={(e) => {\n if (e.key === `Home`) {\n update(min(), true)\n e.preventDefault()\n } else if (e.key === `End`) {\n update(max(), true)\n e.preventDefault()\n } else if (PAGE_KEYS.includes(e.key) || ARROWS.includes(e.key)) {\n const back = BACK_KEYS[fromLeft() ? `from-left` : `from-right`].includes(e.key)\n const skip = PAGE_KEYS.includes(e.key) || (e.shiftKey && ARROWS.includes(e.key))\n update(value() + step() * (skip ? 10 : 1) * (back ? -1 : 1), true)\n e.preventDefault()\n }\n }}\n onPointerDown={(e) => {\n before = value()\n const target = e.target as HTMLElement\n target.setPointerCapture?.(e.pointerId)\n e.preventDefault()\n if (target === thumb()) target.focus()\n else update(fromPointer(e.clientX), false)\n }}\n onPointerMove={(e) => {\n const target = e.target as HTMLElement\n if (target.hasPointerCapture?.(e.pointerId)) update(fromPointer(e.clientX), false)\n }}\n onPointerUp={(e) => {\n const target = e.target as HTMLElement\n if (target.hasPointerCapture?.(e.pointerId)) {\n target.releasePointerCapture(e.pointerId)\n rect = undefined\n const next = value()\n if (next !== before) void props.emit(`change`, { value: next }, { value: next })\n }\n }}\n >\n <span data-orientation=\"horizontal\" {...part(`track`)}>\n <span data-orientation=\"horizontal\" {...part(`range`)} style={rangeStyle()} />\n </span>\n <span style={wrapperStyle()}>\n <span\n role=\"slider\"\n aria-label={str(props.props.label) || undefined}\n aria-valuemin={min()}\n aria-valuenow={value()}\n aria-valuemax={max()}\n aria-orientation=\"horizontal\"\n data-orientation=\"horizontal\"\n tabindex={0}\n id={id}\n data-radix-collection-item=\"\"\n ref={setThumb}\n {...part(`thumb`)}\n attr:style=\"\"\n />\n <Show when={inForm()}>\n <SliderBubble name={str(props.props.name) || undefined} value={value()} />\n </Show>\n </span>\n </span>\n </div>\n )\n}\n\n// ---------------------------------------------------------------------------\n// Composer\n// ---------------------------------------------------------------------------\n\nexport function ComposerNative(props: NativeProps): JSX.Element {\n const part = parts(props)\n const ctx = useSurfaceContext()\n const { send, writeLocal } = createInputSender(props, `value`)\n const field = createHostOwnedValue<string>({ external: () => str(props.props.value), send, writeLocal })\n const busy = () => bool(props.props.busy)\n let ref: HTMLTextAreaElement | undefined\n const grow = () => {\n const el = ref\n if (!el) return\n el.style.height = `auto`\n el.style.height = `${Math.min(200, el.scrollHeight)}px`\n }\n createEffect(() => {\n void field.value\n grow()\n })\n const submit = () => {\n if (busy()) {\n void props.emit(`stop`)\n return\n }\n const text = field.value.trim()\n if (!text) return\n field.commit()\n void props.emit(`submit`, { value: text })\n field.edit(``)\n }\n const placeholder = () => str(props.props.placeholder)\n const submitLabel = () => str(props.props.submitLabel) || ctx.t(`send`)\n return (\n <div {...props.rootProps} data-busy={busy() ? `true` : undefined}>\n <textarea\n ref={ref}\n {...part(`field`, field.focused && `focus`)}\n rows={1}\n placeholder={placeholder() || undefined}\n value={field.value}\n prop:defaultValue={field.value}\n aria-label={ctx.t(`message`)}\n onFocus={() => field.onFocus()}\n onBlur={() => field.onBlur()}\n onInput={(e) => {\n field.edit(e.currentTarget.value)\n void props.emit(`change`, { value: e.currentTarget.value }, { value: e.currentTarget.value })\n }}\n onKeyDown={(e) => {\n if (e.key === `Enter` && !e.shiftKey) {\n e.preventDefault()\n submit()\n }\n }}\n />\n <div class=\"xui-composer-bar\">\n {bool(props.props.attachments) ? (\n <button type=\"button\" {...part(`attachment`)} aria-label={ctx.t(`browse`)} onClick={() => void props.emit(`attach`)}>\n <BuiltinIcon slot=\"Composer.attachment\" />\n </button>\n ) : null}\n <button type=\"button\" {...part(`send`, busy() && `pressed`)} aria-label={busy() ? ctx.t(`stop`) : submitLabel()} disabled={!busy() && field.value.trim() === ``} onClick={submit}>\n {busy() ? <BuiltinIcon slot=\"Composer.stop\" /> : <BuiltinIcon slot=\"Composer.send\" />}\n </button>\n </div>\n </div>\n )\n}\n\nexport const NATIVES_INPUTS: Record<string, (props: NativeProps) => JSX.Element> = {\n Input: InputNative,\n Textarea: TextareaNative,\n NumberField: NumberFieldNative,\n Checkbox: CheckboxNative,\n Radio: RadioNative,\n Switch: SwitchNative,\n Slider: SliderNative,\n Composer: ComposerNative,\n}\n","// FEED-128 (React's natives/media.tsx; VAPP-87): Image, Video,\n// AudioPlayer, Avatar, Carousel. Every src goes through the host's media\n// request and the media policy (`createMediaSource` / `createMediaSrc`).\n// Avatar paints Radix Avatar's DOM by hand (a span root, the <img> only once\n// the picture LOADED, the fallback after its delay), Kobalte's Image would\n// paint its own attributes.\n\nimport { For, Show, createComputed, createRenderEffect, createEffect, createMemo, createSignal, on, onCleanup, type Component, type JSX } from \"solid-js\"\nimport { MEDIA_ASPECT_RATIO, MEDIA_INTRINSIC_WIDTH } from \"@exponential-at/ui\"\nimport type { UiNode } from \"@exponential-at/ui\"\nimport { useSurfaceContext } from \"../context\"\nimport { IconGlyph } from \"../icons\"\nimport { createMediaSource, createMediaSrc } from \"../media\"\nimport { NodeView, mergeStyle, withClass, type NativeProps } from \"../node-view\"\nimport { createBoundState } from \"./bound\"\nimport { bool, BuiltinIcon, css, num, parts, str, type Attrs } from \"./shared\"\nimport { createImageLoadingStatus } from \"../behaviors\"\n\n/** The media box's intrinsic width (catalog/layout.json\n * `mediaIntrinsicWidth`: max-content 320, min-content 0), so the box never\n * waits for the picture or the browser's 300×150 video default. */\nfunction MediaSizer(): JSX.Element {\n return <svg class=\"xui-media-sizer\" aria-hidden=\"true\" width={MEDIA_INTRINSIC_WIDTH} height={1} />\n}\n\n/** React's `{...spread} key={value}`: a later `undefined` REMOVES the key\n * (Solid's merge would keep the spread's value). */\nconst over = (base: Attrs, extra: Attrs): Attrs => ({ ...base, ...extra })\n\n/** Image (contract §3): `loading` lazy|eager, `focalX/focalY` (0..1 →\n * `object-position`), and the `fallback` icon (default\n * `builtinIcons[\"Image.fallback\"]`) on error or without a src;\n * `data-state` = loading | loaded | error | empty. */\nexport function ImageNative(props: NativeProps): JSX.Element {\n const ctx = useSurfaceContext()\n const part = parts(props)\n const src = () => str(props.props.src)\n const alt = () => str(props.props.alt)\n const fit = () => str(props.props.fit, `cover`)\n const [state, setState] = createSignal<`loading` | `loaded` | `error`>(`loading`)\n createComputed(on(src, () => setState(`loading`), { defer: true }))\n const style = createMemo(() => {\n const p = props.props\n const out: Record<string, string | number> = {}\n if (p.width !== undefined) out.width = num(p.width)\n if (p.height !== undefined) out.height = num(p.height)\n // Round 2 §7: `aspectRatio`, else 16:9 without a height.\n if (p.aspectRatio !== undefined) out.aspectRatio = String(num(p.aspectRatio))\n else if (p.height === undefined) out.aspectRatio = String(MEDIA_ASPECT_RATIO)\n return Object.keys(out).length ? out : undefined\n })\n const objectFit = () => (fit() === `scaleDown` ? `scale-down` : fit())\n const fx = () => Math.max(0, Math.min(1, num(props.props.focalX, 0.5)))\n const fy = () => Math.max(0, Math.min(1, num(props.props.focalY, 0.5)))\n // The host's media request (VAPP-91: headers → a blob url once fetched);\n // a failed fetch is the Image's error state (fallback + alt).\n const media = createMediaSource(() => ctx.host, src)\n const shown = () => (media().error ? `error` : state())\n const failed = () => !src() || shown() === `error`\n const fallback = () => str(props.props.fallback)\n return (\n <div {...over(props.rootProps, { style: mergeStyle(props.rootProps, style()), role: failed() ? `img` : undefined, \"aria-label\": failed() ? alt() : undefined, \"data-state\": src() ? shown() : `empty` })}>\n <Show when={src() && media().url && shown() !== `error`}>\n <img\n src={media().url}\n alt={alt()}\n loading={props.props.loading === `eager` ? `eager` : `lazy`}\n decoding=\"async\"\n style={css({ objectFit: objectFit(), objectPosition: `${fx() * 100}% ${fy() * 100}%` })}\n onLoad={() => setState(`loaded`)}\n onError={() => setState(`error`)}\n />\n </Show>\n <MediaSizer />\n <Show when={failed()}>\n <div {...part(`fallback`)} aria-hidden=\"true\">\n <Show when={fallback()} fallback={<BuiltinIcon slot=\"Image.fallback\" />}>\n <IconGlyph icons={ctx.host.icons} name={fallback()} />\n </Show>\n </div>\n </Show>\n </div>\n )\n}\n\nexport function VideoNative(props: NativeProps): JSX.Element {\n const ctx = useSurfaceContext()\n const part = parts(props)\n // The video streams (no byte caps); its poster is an image (the limits hold).\n const url = createMediaSrc(() => ctx.host, () => str(props.props.src), `stream`)\n const posterUrl = createMediaSrc(() => ctx.host, () => str(props.props.poster))\n // Round 2 §7: height = width / `aspectRatio` (default 16:9).\n const ratio = () => num(props.props.aspectRatio, MEDIA_ASPECT_RATIO) || MEDIA_ASPECT_RATIO\n const autoplay = () => bool(props.props.autoplay)\n return (\n <div {...props.rootProps} style={mergeStyle(props.rootProps, { aspectRatio: String(ratio()) })}>\n <MediaSizer />\n <video\n {...part(`controls`)}\n src={url()}\n poster={posterUrl()}\n controls\n autoplay={autoplay()}\n ref={(el) => createRenderEffect(() => (el.muted = autoplay()))}\n playsinline\n preload=\"metadata\"\n data-duration-ms={props.props.durationMs !== undefined ? num(props.props.durationMs) : undefined}\n />\n </div>\n )\n}\n\nexport function AudioPlayerNative(props: NativeProps): JSX.Element {\n const ctx = useSurfaceContext()\n const part = parts(props)\n const title = () => str(props.props.title)\n const url = createMediaSrc(() => ctx.host, () => str(props.props.src), `stream`)\n return (\n <div {...props.rootProps} style={mergeStyle(props.rootProps, { flexDirection: `column`, gap: `var(--xui-spacing-xs)` })}>\n <Show when={title()}>\n <span {...part(`track`)}>{title()}</span>\n </Show>\n <audio {...part(`controls`)} src={url()} controls preload=\"metadata\" aria-label={title() || undefined} data-duration-ms={props.props.durationMs !== undefined ? num(props.props.durationMs) : undefined} />\n </div>\n )\n}\n\nfunction initials(name: string): string {\n return name\n .split(/\\s+/)\n .filter(Boolean)\n .slice(0, 2)\n .map((w) => w[0]!)\n .join(``)\n .toUpperCase()\n}\n\n/** A stable hue for a seed (two avatars of one person always match). */\nexport function seedHue(seed: string): number {\n let h = 0\n for (let i = 0; i < seed.length; i++) h = (h * 31 + seed.charCodeAt(i)) >>> 0\n return h % 360\n}\n\nexport function AvatarNative(props: NativeProps): JSX.Element {\n const ctx = useSurfaceContext()\n const part = parts(props)\n const name = () => str(props.props.name)\n const src = () => str(props.props.src)\n const seed = () => str(props.props.seed) || name()\n const hue = () => (seed() ? seedHue(seed()) : null)\n const url = createMediaSrc(() => ctx.host, src)\n const tint = () => {\n const h = hue()\n return h === null ? undefined : css({ backgroundColor: `color-mix(in oklab, hsl(${h} 70% 55%) 22%, transparent)`, color: `hsl(${h} 60% ${ctx.mode === `dark` ? 72 : 38}%)` })\n }\n // AvatarPrimitive.Image is only mounted with a src.\n const status = createImageLoadingStatus(() => (src() ? url() : undefined))\n const imageStatus = () => (src() ? status() : `idle`)\n // AvatarPrimitive.Fallback `delayMs={src ? 300 : 0}`: a 0 delay paints at\n // once (Radix's 0 ms timer has fired by the first frame).\n const delay = () => (src() ? 300 : 0)\n const [canRender, setCanRender] = createSignal(false)\n createComputed(on(delay, (ms) => ms === 0 && setCanRender(true)))\n createEffect(\n on(delay, (ms) => {\n if (ms === 0) return\n const timer = setTimeout(() => setCanRender(true), ms)\n onCleanup(() => clearTimeout(timer))\n })\n )\n return (\n <span {...over(props.rootProps, { \"aria-label\": name() || undefined, role: `img` })}>\n <Show when={src() && imageStatus() === `loaded`}>\n <img {...part(`image`)} src={url()} alt={name()} />\n </Show>\n <Show when={canRender() && imageStatus() !== `loaded`}>\n <span {...part(`fallback`)} style={tint()}>\n {initials(name()) || `?`}\n </span>\n </Show>\n </span>\n )\n}\n\nexport function CarouselNative(props: NativeProps): JSX.Element {\n const ctx = useSurfaceContext()\n const part = parts(props)\n let track: HTMLDivElement | undefined\n const pages = () => props.node.children\n const external = () => num(props.props.page, 0)\n const [page, setPage] = createBoundState(() => props.node, () => props.scope, `page`, external)\n const scrollTo = (i: number) => {\n const el = track\n if (el && el.children[i] && typeof el.scrollTo === `function`) el.scrollTo({ left: (el.children[i] as HTMLElement).offsetLeft, behavior: ctx.reducedMotion ? `auto` : `smooth` })\n }\n createEffect(on(external, (p) => scrollTo(p)))\n const onScroll = () => {\n const el = track\n if (!el || el.clientWidth === 0) return\n const next = Math.round(Math.abs(el.scrollLeft) / el.clientWidth)\n if (next !== page()) {\n setPage(next)\n void props.emit(`change`, { page: next }, { page: next })\n }\n }\n const go = (next: number) => {\n const n = pages().length\n if (n === 0) return\n const target = bool(props.props.loop) ? ((next % n) + n) % n : Math.max(0, Math.min(n - 1, next))\n setPage(target)\n void props.emit(`change`, { page: target }, { page: target })\n scrollTo(target)\n }\n const many = () => pages().length > 1\n const byId = createMemo(() => new Map(pages().map((n, i) => [n.id, { node: n, index: i }])))\n const ids = createMemo(() => pages().map((n) => n.id), undefined, { equals: (a, b) => a.length === b.length && a.every((x, i) => x === b[i]) })\n const pageOf = (i: number) => ctx.t(`pageOf`, { page: i + 1, total: pages().length })\n return (\n <div\n {...props.rootProps}\n role=\"region\"\n aria-roledescription={ctx.t(`carousel`)}\n onKeyDown={(e) => {\n const rtl = ctx.direction === `rtl`\n if (e.key === `ArrowRight`) go(page() + (rtl ? -1 : 1))\n else if (e.key === `ArrowLeft`) go(page() + (rtl ? 1 : -1))\n }}\n >\n <div ref={track} class=\"xui-carousel-track\" onScroll={onScroll} aria-live=\"polite\">\n <For each={ids()}>\n {(id) => {\n const entry = createMemo<{ node: UiNode; index: number }>((prev) => byId().get(id) ?? prev!)\n // Round 2 §7: only the ACTIVE page is placed; the others stay\n // mounted for swiping, hidden from AT, inert, `data-xui-inactive`.\n // `inert` as the ATTRIBUTE (React 19 writes `inert=\"\"`; Solid's\n // `inert={true}` sets only the property).\n const active = () => entry().index === page()\n const attrs = () => {\n const a = { ...part(`page`, active() && `selected`) }\n if (!active()) delete a[`data-xui-id`]\n return a\n }\n return (\n <div {...attrs()} role=\"group\" aria-roledescription={ctx.t(`slide`)} aria-label={pageOf(entry().index)} aria-hidden={active() ? undefined : true} data-xui-inactive={active() ? undefined : ``} ref={(el) => createRenderEffect(() => el.toggleAttribute(`inert`, !active()))}>\n <NodeView node={entry().node} />\n </div>\n )\n }}\n </For>\n </div>\n <Show when={many()}>\n <div {...withClass(part(`controls`), `xui-carousel-controls`)}>\n <button type=\"button\" {...withClass(part(`previous`), `xui-carousel-nav`)} aria-label={ctx.t(`previous`)} disabled={!bool(props.props.loop) && page() === 0} onClick={() => go(page() - 1)}>\n <BuiltinIcon slot=\"Carousel.previous\" />\n </button>\n <Show when={props.props.indicators !== false}>\n <div {...part(`indicator`)} class=\"xui-carousel-dots\" data-xui-part=\"Carousel/indicators\" role=\"tablist\">\n <For each={ids()}>\n {(id) => {\n const index = () => byId().get(id)?.index ?? 0\n const attrs = () => {\n const a = { ...part(`indicator`, index() === page() && `selected`) }\n delete a[`data-xui-id`]\n return a\n }\n return <button type=\"button\" {...attrs()} role=\"tab\" aria-selected={index() === page()} aria-label={pageOf(index())} onClick={() => go(index())} />\n }}\n </For>\n </div>\n </Show>\n <button type=\"button\" {...withClass(part(`next`), `xui-carousel-nav`)} aria-label={ctx.t(`next`)} disabled={!bool(props.props.loop) && page() === pages().length - 1} onClick={() => go(page() + 1)}>\n <BuiltinIcon slot=\"Carousel.next\" />\n </button>\n </div>\n </Show>\n </div>\n )\n}\n\nexport const NATIVES_MEDIA: Record<string, Component<NativeProps>> = {\n Image: ImageNative,\n Video: VideoNative,\n AudioPlayer: AudioPlayerNative,\n Avatar: AvatarNative,\n Carousel: CarouselNative,\n}\n","// FEED-128 (React's natives/nav.tsx): Tabs, Segmented (was ToggleGroup),\n// Accordion — Radix behaviour (roving tab stop, arrows wrap, Home/End:\n// a11y.json), recipe paint, a bound `value` written through (multiple =\n// comma-joined when it came as a string, an array when it came as one).\n//\n// The parts are HAND-ROLLED on plain elements rather than Kobalte's\n// Tabs/ToggleGroup/Accordion: Kobalte's roving model puts the tab stop on\n// the selected trigger (`tabindex=\"0\"`) and none on the list, writes\n// `data-selected`/`data-expanded`/`data-key`, and has no equivalent of\n// Radix's focusable group (`tabindex=\"0\"` + `outline: none` on the\n// tablist / toggle group, every item `-1` until one takes focus) nor of\n// Radix's mount-animation styles (`animation-duration: 0s` on the first\n// active panel, the `--radix-accordion-content-*` variables). The DOM the\n// theme CSS and the web-parity check read is Radix's, so the painters\n// reproduce Radix's DOM and its keyboard model (RovingFocusGroup:\n// `focusFirst` in a timeout, `createRovingGroup` in ../behaviors; Accordion:\n// the root's arrow handler here, the content = `createCollapsibleContent`).\n\nimport { For, Show, createMemo, createSignal, createUniqueId, onCleanup, onMount, untrack, type Accessor, type Component, type JSX } from \"solid-js\"\nimport type { UiNode } from \"@exponential-at/ui\"\nimport { useSurfaceContext } from \"../context\"\nimport { IconGlyph } from \"../icons\"\nimport type { NativeProps } from \"../node-view\"\nimport { NodeView } from \"../node-view\"\nimport { createBoundState } from \"./bound\"\nimport { bool, BuiltinIcon, css, num, objects, parts, str, type PartFn } from \"./shared\"\nimport { createCollapsibleContent, createRovingGroup } from \"../behaviors\"\n\ninterface Tab {\n label: string\n value: string\n icon?: string\n count?: number\n}\n\nconst sameKeys = (a: readonly string[], b: readonly string[]): boolean => a.length === b.length && a.every((x, i) => x === b[i])\n\n/** The values of a list as a memo that only changes when the KEYS change\n * (React keys its rows by `value`: a row keeps its subtree). */\nfunction keysOf<T>(list: Accessor<T[]>, key: (item: T) => string): Accessor<string[]> {\n return createMemo(() => list().map(key), undefined, { equals: sameKeys })\n}\n\n/** The child node at `index`, followed live. */\nconst childAt = (node: () => UiNode, index: Accessor<number>) => createMemo(() => node().children[index()] as UiNode | undefined)\n\n// ── Tabs ────────────────────────────────────────────────────────────────\n\nexport function TabsNative(props: NativeProps): JSX.Element {\n const ctx = useSurfaceContext()\n const part = parts(props)\n const tabs = createMemo(() => objects<Tab>(props.props.tabs))\n const external = () => str(props.props.value) || tabs()[0]?.value || ``\n const [value, setValue] = createBoundState(() => props.node, () => props.scope, `value`, external)\n const fill = () => bool(props.props.fill)\n // EXP-1259: the close glyph per tab (`closable`; `hover` = only while its\n // tab or itself is hovered or keyboard-focused: the tab LENDS it those\n // states) and the + after the last tab (`addable`).\n const closable = () => props.props.closable === `hover` || props.props.closable === `always`\n const [lent, setLent] = createSignal<{ index: number; state: `hover` | `focus` } | null>(null)\n const lend = (index: number, state: `hover` | `focus` | null) => setLent((cur) => (state ? { index, state } : cur?.index === index ? null : cur))\n const lending = () => closable() && props.props.closable === `hover`\n const baseId = createUniqueId()\n const triggerId = (v: string) => `${baseId}-trigger-${v}`\n const contentId = (v: string) => `${baseId}-content-${v}`\n let list: HTMLDivElement | undefined\n const triggers = () => (list ? Array.from(list.querySelectorAll<HTMLElement>(`:scope > [role=\"tab\"]`)) : [])\n const roving = createRovingGroup({ orientation: `horizontal`, dir: () => ctx.direction, loop: true, items: triggers, focusable: (el) => !(el as HTMLButtonElement).disabled, active: (el) => el.getAttribute(`aria-selected`) === `true` })\n const select = (next: string) => {\n if (next === untrack(value)) return\n setValue(next)\n void props.emit(`change`, { value: next }, { value: next })\n }\n const keys = keysOf(tabs, (t) => t.value)\n // Radix: the panel active at MOUNT renders `animation-duration: 0s`\n // until the first render after its next frame.\n const initial = untrack(value)\n let mountPrevented = true\n onMount(() => {\n const raf = requestAnimationFrame(() => (mountPrevented = false))\n onCleanup(() => cancelAnimationFrame(raf))\n })\n return (\n <div {...props.rootProps} dir={ctx.direction} data-orientation=\"horizontal\">\n <div ref={list} role=\"tablist\" aria-orientation=\"horizontal\" {...part(`list`)} data-fill={fill() ? `true` : undefined} {...roving.group()} style={{ outline: `none` }} {...roving.groupHandlers}>\n <For each={keys()}>\n {(key, index) => {\n const tab = createMemo(() => tabs()[index()]!)\n const selected = () => key === value()\n let el: HTMLButtonElement | undefined\n const item = roving.item(() => el, () => true)\n const trigger = (\n <button\n ref={el}\n type=\"button\"\n role=\"tab\"\n aria-selected={selected()}\n aria-controls={contentId(key)}\n data-state={selected() ? `active` : `inactive`}\n id={triggerId(key)}\n {...part.at(`tab`, index(), selected() && `selected`)}\n tabindex={item.tabindex()}\n data-orientation=\"horizontal\"\n data-radix-collection-item=\"\"\n onPointerEnter={() => lending() && lend(index(), `hover`)}\n onPointerLeave={() => lending() && lend(index(), null)}\n onBlur={() => lending() && lend(index(), null)}\n onMouseDown={(e) => {\n item.onMouseDown(e)\n if (e.button === 0 && !e.ctrlKey) select(key)\n else e.preventDefault()\n }}\n onKeyDown={(e) => {\n item.onKeyDown(e)\n if (e.key === ` ` || e.key === `Enter`) select(key)\n }}\n onFocus={(e) => {\n item.onFocus()\n if (lending() && e.currentTarget.matches(`:focus-visible`)) lend(index(), `focus`)\n if (!selected()) select(key)\n }}\n >\n <span class=\"xui-Tabs-tab-body\">\n {tab().icon ? <IconGlyph icons={ctx.host.icons} name={tab().icon!} class=\"xui-icon\" width={16} height={16} /> : null}\n <span>{str(tab().label)}</span>\n {tab().count !== undefined ? <span data-count=\"\">{ctx.formatter.number(num(tab().count))}</span> : null}\n </span>\n <span {...part(`indicator`, selected() && `selected`)} aria-hidden=\"true\" />\n </button>\n )\n return (\n <>\n {trigger}\n <Show when={closable()}>\n <button\n type=\"button\"\n {...part.at(`close`, index(), lent()?.index === index() && lent()!.state)}\n aria-label={ctx.t(`closeTab`, { name: str(tab().label) })}\n onPointerEnter={() => lending() && lend(index(), `hover`)}\n onPointerLeave={() => lending() && lend(index(), null)}\n onClick={() => void props.emit(`close`, { value: key })}\n >\n <BuiltinIcon slot=\"Tabs.close\" />\n </button>\n </Show>\n </>\n )\n }}\n </For>\n <Show when={bool(props.props.addable)}>\n <button type=\"button\" {...part(`new`)} aria-label={ctx.t(`newTab`)} onClick={() => void props.emit(`new`)}>\n <BuiltinIcon slot=\"Tabs.new\" />\n </button>\n </Show>\n </div>\n <For each={keys()}>\n {(key, index) => {\n const child = childAt(() => props.node, index)\n const present = () => key === value()\n // Only the ACTIVE panel is placed (`<id>.content`); the others are hidden.\n const attrs = () => {\n const a = part(`content`)\n if (!present()) delete a[`data-xui-id`]\n return a\n }\n const styled = key === initial\n const style = () => {\n value()\n return styled ? (mountPrevented ? { \"animation-duration\": `0s` } : {}) : undefined\n }\n return (\n <div data-state={present() ? `active` : `inactive`} data-orientation=\"horizontal\" role=\"tabpanel\" aria-labelledby={triggerId(key)} hidden={!present()} id={contentId(key)} tabindex={0} {...attrs()} style={style()}>\n <Show when={present() && child()}>\n <NodeView node={child()!} />\n </Show>\n </div>\n )\n }}\n </For>\n </div>\n )\n}\n\n// ── Segmented ───────────────────────────────────────────────────────────\n\ninterface Item {\n label: string\n value: string\n icon?: string\n disabled?: boolean\n}\n\nconst joinLike = (raw: unknown, next: string[]): string | string[] => (Array.isArray(raw) ? next : next.join(`,`))\nconst asArray = (v: string | string[]): string[] => (Array.isArray(v) ? v : v ? v.split(`,`) : [])\n\n/** Segmented (round 3): ONE row of segments.\n * `segmented` (default, the pill track) / `toggles` (bare) / `outline`\n * (joined) = Radix's ToggleGroup DOM (radiogroup single, toolbar of\n * toggle buttons multiple; roving tab stop, arrows wrap, Home/End). `bar`\n * = the full-width bottom destinations: role navigation, each item a\n * column button (icon above a caption label), the selected one\n * `aria-current=\"page\"`, the same roving keys. Parts: root, item, icon,\n * label (the selected state rides every part of the selected item). */\nexport function SegmentedNative(props: NativeProps): JSX.Element {\n const ctx = useSurfaceContext()\n const part = parts(props)\n const items = createMemo(() => objects<Item>(props.props.items))\n const variant = () => str(props.props.variant, `segmented`)\n const bar = () => variant() === `bar`\n const multiple = () => !bar() && props.props.type === `multiple`\n const external = (): string | string[] => {\n const raw = props.props.value\n return multiple() ? (Array.isArray(raw) ? raw.map(String) : raw ? String(raw).split(`,`) : []) : str(raw)\n }\n const [value, setBound] = createBoundState<string | string[]>(() => props.node, () => props.scope, `value`, external)\n const setValue = (next: string | string[]) => setBound(Array.isArray(next) ? (joinLike(untrack(() => props.props.value), next) as string[]) : next)\n const isSelected = (item: Item) => (multiple() ? asArray(value()).includes(item.value) : value() === item.value)\n const content = (item: Accessor<Item>, selected: Accessor<boolean>) => (\n <>\n {item().icon ? (\n <span {...part(`icon`, selected() && `selected`)} aria-hidden=\"true\">\n <IconGlyph icons={ctx.host.icons} name={item().icon!} class=\"xui-icon\" width={bar() ? 20 : 16} height={bar() ? 20 : 16} />\n </span>\n ) : null}\n {item().label ? <span {...part(`label`, selected() && `selected`)}>{str(item().label)}</span> : null}\n </>\n )\n const keys = keysOf(items, (i) => i.value)\n let root: HTMLDivElement | undefined\n const roving = createRovingGroup({ dir: () => ctx.direction, loop: true, items: () => (root ? Array.from(root.querySelectorAll<HTMLElement>(`:scope > button`)) : []), focusable: (el) => !(el as HTMLButtonElement).disabled, active: (el) => el.getAttribute(`data-state`) === `on` })\n const press = (item: Item) => {\n const raw = untrack(() => props.props.value)\n if (multiple()) {\n const cur = asArray(untrack(value))\n const next = cur.includes(item.value) ? cur.filter((v) => v !== item.value) : [...cur, item.value]\n setValue(next)\n void props.emit(`change`, { value: joinLike(raw, next) }, { value: joinLike(raw, next) })\n return\n }\n // Radix single: pressing the pressed item asks for `` (ignored).\n if (untrack(value) === item.value) return\n setValue(item.value)\n void props.emit(`change`, { value: item.value }, { value: item.value })\n }\n return (\n <Show\n when={bar()}\n fallback={\n <div ref={root} {...roving.group()} role=\"group\" {...props.rootProps} dir={ctx.direction} style={{ outline: `none`, ...((props.rootProps.style as Record<string, string> | undefined) ?? {}) }} {...roving.groupHandlers}>\n <For each={keys()}>\n {(key, index) => {\n const item = createMemo(() => items()[index()]!)\n const selected = () => isSelected(item())\n const disabled = () => bool(item().disabled)\n let el: HTMLButtonElement | undefined\n const r = roving.item(() => el, () => !disabled())\n return (\n <button\n ref={el}\n type=\"button\"\n role={multiple() ? undefined : `radio`}\n aria-checked={multiple() ? undefined : selected()}\n aria-pressed={multiple() ? selected() : undefined}\n data-state={selected() ? `on` : `off`}\n data-disabled={disabled() ? `` : undefined}\n disabled={disabled()}\n aria-label={item().label ? undefined : key}\n {...part(`item`, selected() && `selected`, disabled() && `disabled`)}\n tabindex={r.tabindex()}\n data-radix-collection-item=\"\"\n onMouseDown={r.onMouseDown}\n onFocus={r.onFocus}\n onKeyDown={r.onKeyDown}\n onClick={() => {\n if (!disabled()) press(item())\n }}\n >\n {content(item, selected)}\n </button>\n )\n }}\n </For>\n </div>\n }\n >\n <SegmentedBar rootProps={props.rootProps} items={items} keys={keys} value={() => value() as string} part={part} content={content} onPick={(next) => {\n setValue(next)\n void props.emit(`change`, { value: next }, { value: next })\n }} />\n </Show>\n )\n}\n\n/** The `bar` variant: a navigation landmark of buttons with ONE roving tab\n * stop (the selected item, else the first enabled one). */\nfunction SegmentedBar(props: { rootProps: Record<string, unknown>; items: Accessor<Item[]>; keys: Accessor<string[]>; value: Accessor<string>; part: PartFn; content: (item: Accessor<Item>, selected: Accessor<boolean>) => JSX.Element; onPick: (value: string) => void }): JSX.Element {\n const ctx = useSurfaceContext()\n const refs: (HTMLButtonElement | undefined)[] = []\n const enabled = createMemo(() => props.items().map((item, i) => (bool(item.disabled) ? -1 : i)).filter((i) => i >= 0))\n const selectedIndex = () => props.items().findIndex((item) => item.value === props.value() && !bool(item.disabled))\n const [focusIndex, setFocusIndex] = createSignal<number | null>(null)\n const stop = () => focusIndex() ?? (selectedIndex() >= 0 ? selectedIndex() : (enabled()[0] ?? -1))\n const move = (from: number, key: string) => {\n const en = enabled()\n if (!en.length) return\n const at = en.indexOf(from)\n const rtl = ctx.direction === `rtl`\n const forward = key === `ArrowDown` || key === (rtl ? `ArrowLeft` : `ArrowRight`)\n const back = key === `ArrowUp` || key === (rtl ? `ArrowRight` : `ArrowLeft`)\n let next: number | null | undefined = null\n if (forward) next = en[(at + 1) % en.length]\n else if (back) next = en[(at - 1 + en.length) % en.length]\n else if (key === `Home`) next = en[0]\n else if (key === `End`) next = en[en.length - 1]\n if (next === null || next === undefined) return false\n setFocusIndex(next)\n refs[next]?.focus()\n return true\n }\n return (\n <nav {...props.rootProps} dir={ctx.direction}>\n <For each={props.keys()}>\n {(key, index) => {\n const item = createMemo(() => props.items()[index()]!)\n const selected = () => key === props.value()\n const disabled = () => bool(item().disabled)\n return (\n <button\n ref={(el) => void (refs[index()] = el)}\n type=\"button\"\n {...props.part(`item`, selected() && `selected`, disabled() && `disabled`)}\n disabled={disabled()}\n tabindex={index() === stop() ? 0 : -1}\n aria-current={selected() ? `page` : undefined}\n aria-label={item().label ? undefined : key}\n onFocus={() => setFocusIndex(index())}\n onKeyDown={(e) => {\n if (move(index(), e.key)) e.preventDefault()\n }}\n onClick={() => props.onPick(key)}\n >\n {props.content(item, selected)}\n </button>\n )\n }}\n </For>\n </nav>\n )\n}\n\n// ── Accordion ───────────────────────────────────────────────────────────\n\ninterface AccordionItem {\n title: string\n value: string\n count?: number\n}\n\nconst ACCORDION_KEYS = new Set([`Home`, `End`, `ArrowDown`, `ArrowUp`, `ArrowLeft`, `ArrowRight`])\n\nexport function AccordionNative(props: NativeProps): JSX.Element {\n const part = parts(props)\n const items = createMemo(() => objects<AccordionItem>(props.props.items))\n const multiple = () => props.props.type === `multiple`\n const external = (): string | string[] => {\n const raw = props.props.value\n return multiple() ? (Array.isArray(raw) ? raw.map(String) : raw ? String(raw).split(`,`) : []) : str(raw)\n }\n const [value, setBound] = createBoundState<string | string[]>(() => props.node, () => props.scope, `value`, external)\n const setValue = (next: string | string[]) => setBound(Array.isArray(next) ? (joinLike(untrack(() => props.props.value), next) as string[]) : next)\n const isOpen = (v: string) => (multiple() ? asArray(value()).includes(v) : value() === v)\n const toggle = (v: string) => {\n const raw = untrack(() => props.props.value)\n if (multiple()) {\n const cur = asArray(untrack(value))\n const next = cur.includes(v) ? cur.filter((x) => x !== v) : [...cur, v]\n setValue(next)\n void props.emit(`change`, { value: joinLike(raw, next) }, { value: joinLike(raw, next) })\n return\n }\n // Single + collapsible: the open item closes to ``.\n const next = untrack(value) === v ? `` : v\n setValue(next)\n void props.emit(`change`, { value: next }, { value: next })\n }\n let root: HTMLDivElement | undefined\n // Radix: the arrows move between the (enabled) triggers, wrapping.\n const onKeyDown = (e: KeyboardEvent) => {\n if (!ACCORDION_KEYS.has(e.key) || !root) return\n const triggers = Array.from(root.querySelectorAll<HTMLButtonElement>(`:scope > div > div > button[data-radix-collection-item]`)).filter((b) => !b.disabled)\n const at = triggers.indexOf(e.target as HTMLButtonElement)\n if (at === -1) return\n e.preventDefault()\n const count = triggers.length\n let next = at\n if (e.key === `Home`) next = 0\n else if (e.key === `End`) next = count - 1\n else if (e.key === `ArrowDown`) next = at + 1 > count - 1 ? 0 : at + 1\n else if (e.key === `ArrowUp`) next = at - 1 < 0 ? count - 1 : at - 1\n triggers[next % count]?.focus()\n }\n const keys = keysOf(items, (i) => i.value)\n // Radix's Accordion root drops `dir` (it reads it, never renders it).\n const rootAttrs = () => {\n const { dir: _dir, ...rest } = props.rootProps\n return rest\n }\n return (\n <div ref={root} {...rootAttrs()} data-orientation=\"vertical\" onKeyDown={onKeyDown}>\n <For each={keys()}>\n {(key, index) => {\n const item = createMemo(() => items()[index()]!)\n return <AccordionRow part={part} index={index} item={item} open={() => isOpen(key)} child={childAt(() => props.node, index)} onToggle={() => toggle(key)} />\n }}\n </For>\n </div>\n )\n}\n\n/** One Radix Accordion.Item (a Collapsible): item, header, trigger, content.\n * The content reproduces Radix's CollapsibleContent: it stays painted for\n * the frame that measures it while closing, `hidden` (and empty) when\n * closed, and its style carries Radix's variables in Radix's order (the\n * measured `--radix-collapsible-content-*` appended by the render after a\n * toggle, and the mount measurement by the render after mount;\n * `transition-duration: 0s; animation-name: none` left in place on an item\n * open at mount). */\nfunction AccordionRow(props: { part: PartFn; index: Accessor<number>; item: Accessor<AccordionItem>; open: Accessor<boolean>; child: Accessor<UiNode | undefined>; onToggle: () => void }): JSX.Element {\n const ctx = useSurfaceContext()\n const triggerId = createUniqueId()\n const contentId = createUniqueId()\n const collapsible = createCollapsibleContent(props.open, `accordion`)\n const shown = collapsible.shown\n const state = () => (props.open() ? `open` : `closed`)\n return (\n <div data-orientation=\"vertical\" {...props.part.at(`item`, props.index(), props.open() && `open`)} data-state={state()}>\n <div data-orientation=\"vertical\" data-state={state()} style={css({ display: `flex` })}>\n <button\n type=\"button\"\n aria-controls={contentId}\n aria-expanded={props.open()}\n data-state={state()}\n {...props.part.at(`trigger`, props.index(), props.open() && `open`)}\n data-orientation=\"vertical\"\n id={triggerId}\n data-radix-collection-item=\"\"\n onClick={() => props.onToggle()}\n >\n <span class=\"xui-accordion-title\">\n {str(props.item().title)}\n {/* Round 2 §7: the count is its own muted part after the title. */}\n {props.item().count !== undefined ? <span {...props.part.at(`count`, props.index())}>{ctx.formatter.number(num(props.item().count))}</span> : null}\n </span>\n <BuiltinIcon slot=\"Accordion.trigger\" size={16} />\n </button>\n </div>\n <div ref={collapsible.ref} data-state={state()} id={contentId} hidden={!shown()} role=\"region\" aria-labelledby={triggerId} data-orientation=\"vertical\" {...props.part.at(`content`, props.index(), props.open() && `open`)} style={collapsible.style()}>\n <Show when={shown() && props.child()}>\n <NodeView node={props.child()!} />\n </Show>\n </div>\n </div>\n )\n}\n\nexport const NATIVES_NAV: Record<string, Component<NativeProps>> = {\n Tabs: TabsNative,\n Segmented: SegmentedNative,\n Accordion: AccordionNative,\n}\n","// FEED-128 (React's natives/search.tsx; EXP-1259): the SearchList native\n// and the searchable Menu submenu's body —\n// packages/domain-contract/fixtures/search-list.json.\n//\n// ONE body: a `head` row (the `search` field with its glyph, the muted\n// result `count` once a query is typed) over the `body`: a `list` of `item`\n// rows (`icon`, mono `identifier`, `label`, the picked row's `check`) at\n// most `maxRows` tall, scrolling under a bottom `fade` while rows sit\n// below. The focus STAYS in the field: ↑/↓ move the highlighted row (no\n// wrap, no animation; it scrolls into view), Enter or Tab pick it, a hover\n// moves it, typing puts it back on the top row. Part ids mirror the core's\n// layout tree (`<id>.head`, `<id>.item.<i>`, …).\n\nimport { For, Show, createEffect, createMemo, createSignal, createUniqueId, on, onCleanup, onMount, untrack, type Component, type JSX } from \"solid-js\"\nimport { useSurfaceContext } from \"../context\"\nimport { DEBOUNCE_MS } from \"../inputs\"\nimport { IconGlyph } from \"../icons\"\nimport type { NativeProps } from \"../node-view\"\nimport { createBoundState } from \"./bound\"\nimport { bool, BuiltinIcon, css, num, objects, parts, str, type Attrs, type PartFn } from \"./shared\"\nimport { searchMatches } from \"../behaviors\"\n\nexport interface SearchItem {\n label: string\n value: string\n icon?: string\n identifier?: string\n disabled?: boolean\n}\n\n/** React's `SearchBodyProps` (live getters on Solid: never destructure). */\nexport interface SearchBodyProps {\n part: PartFn\n /** Whose body this is (a SearchList, or a Menu's searchable submenu). */\n owner: `SearchList` | `Menu`\n /** `\"\"` for a SearchList, `.<i>` for submenu `i` (the core's suffix). */\n suffix: string\n /** The rows ALREADY filtered, each with its index in the full list. */\n rows: { index: number; item: SearchItem }[]\n query: string\n onQuery: (query: string) => void\n placeholder: string\n emptyText: string\n maxRows: number\n showCount: boolean\n picked?: string\n onPick: (item: SearchItem) => void\n autoFocus?: boolean\n /** ← with the caret at the start leaves the field's key to the menu (a\n * searchable submenu closes back to its row). */\n leaveBubbles?: boolean\n /** The rows' recipe part (`item`) and the row id prefix. */\n rowPart?: (item: SearchItem, index: number, active: boolean) => Attrs\n renderRow?: (item: SearchItem, index: number) => JSX.Element\n}\n\nexport function SearchBody(props: SearchBodyProps): JSX.Element {\n const ctx = useSurfaceContext()\n const listId = createUniqueId()\n const [active, setActive] = createSignal(0)\n let listEl: HTMLDivElement | undefined\n let inputEl: HTMLInputElement | undefined\n const [moreBelow, setMoreBelow] = createSignal(false)\n const at = createMemo(() => Math.min(active(), Math.max(0, props.rows.length - 1)))\n const single = (name: string): Attrs => {\n const attrs = props.part(name)\n if (props.suffix && attrs[`data-xui-id`]) attrs[`data-xui-id`] = `${attrs[`data-xui-id`] as string}${props.suffix}`\n return attrs\n }\n // The highlight goes back to the top row whenever the query changes.\n createEffect(on(() => props.query, () => setActive(0), { defer: true }))\n const measure = () => {\n const list = listEl\n if (list) setMoreBelow(list.scrollTop + list.clientHeight < list.scrollHeight - 1)\n }\n createEffect(\n on([() => props.rows.length, () => props.maxRows], () => {\n measure()\n })\n )\n // Keep the highlighted row inside the window (instant: keys never\n // animate). The list scrolls itself: scrollIntoView would scroll the page\n // to a list further down on mount.\n createEffect(\n on(at, () => {\n const list = listEl\n const row = list?.querySelector<HTMLElement>(`[data-active=\"true\"]`)\n if (!list || !row) return\n const l = list.getBoundingClientRect()\n const r = row.getBoundingClientRect()\n if (r.top < l.top) list.scrollTop -= l.top - r.top\n else if (r.bottom > l.bottom) list.scrollTop += r.bottom - l.bottom\n })\n )\n onMount(() => {\n if (props.autoFocus) inputEl?.focus()\n })\n const pick = (i: number) => {\n const row = props.rows[i]\n if (row && !bool(row.item.disabled)) props.onPick(row.item)\n }\n const onKeyDown = (e: KeyboardEvent & { currentTarget: HTMLInputElement }) => {\n if (e.isComposing) return\n const count = props.rows.length\n if (e.key === `ArrowDown` || e.key === `ArrowUp`) {\n e.preventDefault()\n e.stopPropagation()\n setActive((a) => Math.max(0, Math.min(count - 1, a + (e.key === `ArrowDown` ? 1 : -1))))\n } else if (e.key === `Enter` || (e.key === `Tab` && !e.shiftKey && count > 0)) {\n e.preventDefault()\n e.stopPropagation()\n pick(untrack(at))\n } else if (props.leaveBubbles && e.key === (ctx.direction === `rtl` ? `ArrowRight` : `ArrowLeft`) && e.currentTarget.selectionStart === 0 && e.currentTarget.selectionEnd === 0) {\n // The submenu's own key handling closes it.\n } else if (e.key !== `Escape`) {\n // Typing stays in the field (a menu's typeahead never sees it).\n e.stopPropagation()\n }\n }\n const activeId = () => {\n const row = props.rows[at()]\n return row ? `${listId}-${row.index}` : undefined\n }\n // Rows keyed by their index in the full list (React's `key`).\n const indices = createMemo(() => props.rows.map((r) => r.index), undefined, { equals: (a, b) => a.length === b.length && a.every((x, i) => x === b[i]) })\n return (\n <>\n <div {...single(`head`)}>\n <div {...single(`search`)}>\n <BuiltinIcon slot=\"SearchList.search\" />\n <input\n ref={inputEl}\n type=\"text\"\n role=\"combobox\"\n aria-expanded=\"true\"\n aria-controls={listId}\n aria-activedescendant={activeId()}\n aria-autocomplete=\"list\"\n value={props.query}\n attr:value={props.query}\n placeholder={props.placeholder}\n onInput={(e) => props.onQuery(e.currentTarget.value)}\n onKeyDown={onKeyDown}\n />\n </div>\n <Show when={props.showCount && props.query.trim() !== ``}>\n <span {...single(`count`)} role=\"status\" aria-live=\"polite\">\n {ctx.formatter.number(props.rows.length)}\n </span>\n </Show>\n </div>\n <div {...single(`body`)}>\n <div {...single(`list`)} ref={listEl} id={listId} role=\"listbox\" onScroll={measure} style={css({ maxHeight: `calc(${props.maxRows} * var(--xui-control-row, 32px))` })}>\n <For each={indices()}>\n {(index) => {\n const pos = createMemo<number>((prev) => {\n const p = indices().indexOf(index)\n return p >= 0 ? p : prev!\n })\n const item = createMemo<SearchItem>((prev) => props.rows[pos()]?.item ?? prev!)\n const isActive = () => pos() === at()\n const disabled = () => bool(item().disabled)\n return (\n <div\n id={`${listId}-${index}`}\n role=\"option\"\n aria-selected={isActive()}\n aria-disabled={disabled() || undefined}\n data-active={isActive() ? `true` : undefined}\n {...(props.rowPart ? props.rowPart(item(), index, isActive()) : props.part.at(`item`, `${props.suffix ? `${props.suffix.slice(1)}.` : ``}${index}`, isActive() && `selected`, disabled() && `disabled`))}\n onPointerMove={() => pos() !== untrack(at) && setActive(untrack(pos))}\n onPointerDown={(e) => e.preventDefault()}\n onClick={() => pick(untrack(pos))}\n >\n {props.renderRow ? (\n props.renderRow(item(), index)\n ) : (\n <>\n <Show when={item().icon}>\n <span {...props.part.at(`icon`, index)} aria-hidden=\"true\">\n <IconGlyph icons={ctx.host.icons} name={item().icon!} />\n </span>\n </Show>\n <Show when={str(item().identifier)}>\n <span {...props.part.at(`identifier`, index)}>{str(item().identifier)}</span>\n </Show>\n <span {...props.part.at(`label`, index)}>{str(item().label)}</span>\n <Show when={props.picked !== undefined && props.picked !== `` && item().value === props.picked}>\n <span {...props.part.at(`check`, index)} aria-hidden=\"true\">\n <BuiltinIcon slot=\"SearchList.check\" />\n </span>\n </Show>\n </>\n )}\n </div>\n )\n }}\n </For>\n <Show when={props.rows.length === 0}>\n <div {...single(`empty`)}>{props.emptyText}</div>\n </Show>\n </div>\n <Show when={moreBelow() && props.rows.length > props.maxRows}>\n <div {...single(`fade`)} aria-hidden=\"true\" />\n </Show>\n </div>\n </>\n )\n}\n\n/** SearchList: the field filters the rows locally (label or identifier)\n * unless the host searches itself (`on.search`, its rows arrive through\n * the bound `items`); `search {query}` fires 150 ms after the last\n * keystroke; a pick writes the bound `value` and fires `select {value}`. */\nexport function SearchListNative(props: NativeProps): JSX.Element {\n const ctx = useSurfaceContext()\n const part = parts(props)\n const items = createMemo(() => objects<SearchItem>(props.props.items))\n const [query, setQuery] = createBoundState(\n () => props.node,\n () => props.scope,\n `query`,\n () => str(props.props.query)\n )\n const [picked, setPicked] = createBoundState(\n () => props.node,\n () => props.scope,\n `value`,\n () => str(props.props.value)\n )\n const hostSearches = () => Boolean(props.node.on?.search)\n let typed = false\n createEffect(\n on(query, (q) => {\n if (!typed) return\n const t = setTimeout(() => void props.emit(`search`, { query: q }), DEBOUNCE_MS)\n onCleanup(() => clearTimeout(t))\n })\n )\n const rows = createMemo(() => items().map((item, index) => ({ index, item })).filter(({ item }) => hostSearches() || searchMatches(item, query())))\n const maxRows = () => Math.max(1, Math.floor(num(props.props.maxRows, 8)))\n return (\n <div {...props.rootProps}>\n <SearchBody\n part={part}\n owner=\"SearchList\"\n suffix=\"\"\n rows={rows()}\n query={query()}\n onQuery={(q) => {\n typed = true\n setQuery(q)\n }}\n placeholder={str(props.props.placeholder) || ctx.t(`search`)}\n emptyText={str(props.props.emptyText) || ctx.t(`noResults`)}\n maxRows={maxRows()}\n showCount={props.props.showCount === undefined ? true : bool(props.props.showCount)}\n picked={picked()}\n onPick={(item) => {\n setPicked(item.value)\n void props.emit(`select`, { value: item.value }, { value: item.value })\n }}\n />\n </div>\n )\n}\n\nexport const NATIVES_SEARCH: Record<string, Component<NativeProps>> = {\n SearchList: SearchListNative,\n}\n","// FEED-128 (React's natives/overlays.tsx): the OVERLAYS — Dialog, Drawer,\n// Popover, Tooltip, Menu (press | contextmenu) and the Toast. Every portal\n// mounts into the surface's OVERLAY LAYER inside the `xui` container (so a\n// breakpoint still matches inside a Dialog, audit bug C); toasts mount into\n// the TOAST layer above it.\n//\n// React paints these on Radix; the Solid painter paints Radix's DOM itself\n// (Kobalte's parts cannot produce it: their wrappers, attribute names,\n// portal containers and positioning differ) on plain elements, with the\n// SAME machinery underneath: `@floating-ui/dom` with Radix Popper's exact\n// middleware (offset → shift(limitShift) → flip → size → transformOrigin,\n// `strategy: fixed`, `OVERLAY_OFFSET`/`OVERLAY_PADDING`, so `placeOverlay`\n// and fixtures/overlay-geometry.json hold), `aria-hidden`'s `hideOthers`,\n// the dismissable-layer stack (Escape, pointer-down and focus outside, the\n// body's pointer-events while a modal layer is up), the focus-scope stack\n// (auto focus, trap, loop, return), the focus guards and the scroll lock,\n// each writing what Radix writes in the order Radix writes it (the\n// web-parity check diffs the `style` attribute strings).\n\nimport { For, Show, createContext, createEffect, createMemo, createSignal, createUniqueId, on, onCleanup, onMount, untrack, useContext, type Accessor, type Component, type JSX } from \"solid-js\"\nimport { Dynamic } from \"solid-js/web\"\nimport type { VirtualElement } from \"@floating-ui/dom\"\nimport { OVERLAY_OFFSET, OVERLAY_PADDING } from \"@exponential-at/ui\"\nimport { absolutePath, isBinding } from \"@exponential-at/ui/web\"\nimport { useSurfaceContext } from \"../context\"\nimport { CloseOnSubmitContext } from \"../form\"\nimport { IconGlyph } from \"../icons\"\nimport type { NativeProps } from \"../node-view\"\nimport { createBoundState } from \"./bound\"\nimport { bool, BuiltinIcon, css, num, objects, parts, str, type Attrs, type PartFn } from \"./shared\"\nimport { SearchBody, type SearchItem } from \"./search\"\nimport { bindStyle, createDragToDismiss, createFocusScope, createLayer, createMenuRow, createPresence, createSelectable, graceArea, inPolygon, LayerContext, LayerPortal, MenuContent, Popper, popperContentStyle, searchMatches, useFocusGuards, useKeyboardTracking, useModalEffects, useScrollLock, VisuallyHidden, type Point, type Side } from \"../behaviors\"\n\n// The machinery (Radix's primitives on plain elements: the layer stack, the\n// focus scopes, the popper, the menu content) lives in `../behaviors`; this\n// file paints the overlays' parts on it.\n\n// ---------------------------------------------------------------------------\n// Shared pieces of the overlays\n// ---------------------------------------------------------------------------\n\n/** Radix's triggers write `type=\"button\"` on the slot wrapper span too. */\nconst TYPE_BUTTON: Attrs = { type: `button` }\n\n/** An overlay's `open`: local mirror, bound path written, `change {open}`. */\nfunction createOpenState(props: NativeProps): [Accessor<boolean>, (next: boolean) => void] {\n const [open, setOpen] = createBoundState(\n () => props.node,\n () => props.scope,\n `open`,\n () => bool(props.props.open)\n )\n const change = (next: boolean) => {\n setOpen(next)\n void props.emit(`change`, { open: next }, { open: next })\n }\n return [open, change]\n}\n\n/** Round 2 §7: an overlay is LAYOUT-TRANSPARENT — its frame is its\n * trigger's; without a trigger it lays out nothing. */\nfunction overlayRootProps(rootProps: Record<string, unknown>, trigger: boolean, triggerNode?: { component: string } | null): Record<string, unknown> {\n if (!trigger) return { ...rootProps, \"data-xui-overlay-root\": `none` }\n return { ...rootProps, \"data-xui-overlay-root\": triggerNode?.component === `Link` ? `stretch` : `` }\n}\n\n// ---------------------------------------------------------------------------\n// Dialog + Drawer\n// ---------------------------------------------------------------------------\n\nexport function DialogNative(props: NativeProps): JSX.Element {\n return <ModalNative {...props} kind=\"Dialog\" />\n}\nexport function DrawerNative(props: NativeProps): JSX.Element {\n return <ModalNative {...props} kind=\"Drawer\" />\n}\n\nfunction ModalNative(props: NativeProps & { kind: `Dialog` | `Drawer` }): JSX.Element {\n const ctx = useSurfaceContext()\n const part = parts(props)\n const [open, setOpen] = createOpenState(props)\n const dismissible = () => props.props.dismissible !== false\n const side = () => str(props.props.side, `bottom`)\n const title = () => str(props.props.title)\n const description = () => str(props.props.description)\n const contentId = createUniqueId()\n const titleId = createUniqueId()\n const descriptionId = createUniqueId()\n const onOpenChange = (next: boolean) => (next || untrack(dismissible) ? setOpen(next) : undefined)\n const close = () => setOpen(false)\n const drag = createDragToDismiss(side, () => props.kind === `Drawer` && props.props.dragToDismiss !== false && dismissible(), () => setOpen(false), () => ctx.reducedMotion)\n const hasTrigger = () => Boolean(props.node.slots?.trigger)\n let triggerEl: HTMLSpanElement | undefined\n const state = () => (open() ? `open` : `closed`)\n const overlayPresence = createPresence(open)\n const contentPresence = createPresence(open)\n\n const Content = (): JSX.Element => {\n const layer = createLayer({\n disableOutsidePointerEvents: () => true,\n onEscapeKeyDown: (e) => {\n if (!untrack(dismissible)) e.preventDefault()\n },\n onPointerDownOutside: (e) => {\n const original = e.detail.originalEvent as PointerEvent\n const ctrlLeftClick = original.button === 0 && original.ctrlKey === true\n if (original.button === 2 || ctrlLeftClick) e.preventDefault()\n if (!untrack(dismissible)) e.preventDefault()\n },\n onFocusOutside: (e) => e.preventDefault(),\n onInteractOutside: (e) => {\n if (!untrack(dismissible)) e.preventDefault()\n },\n onDismiss: () => onOpenChange(false),\n })\n const scope = createFocusScope({\n trapped: () => true,\n loop: true,\n onMountAutoFocus: (e) => {\n // A part marked `accessibility.autoFocus` (contract §6: the\n // AlertDialog's cancel) takes the focus, else the cancel action.\n const content = e.currentTarget as HTMLElement | null\n const marked = content?.querySelector<HTMLElement>(`[data-xui-autofocus]`) ?? content?.querySelector<HTMLElement>(`[data-xui-part=\"AlertDialog/cancel\"]`)\n const target = marked && (marked.matches(`button,input,textarea,select,a[href],[tabindex]`) ? marked : marked.querySelector<HTMLElement>(`button,input,textarea,select,a[href],[tabindex]`))\n if (target) {\n e.preventDefault()\n target.focus()\n }\n },\n onUnmountAutoFocus: (e) => {\n e.preventDefault()\n triggerEl?.focus()\n },\n })\n const [registered, setRegistered] = createSignal(false)\n const el = (\n <div\n {...part(`content`, open() && `open`)}\n data-side={props.kind === `Drawer` ? side() : undefined}\n data-xui-overlay={props.kind}\n dir={ctx.direction}\n role={props.kind === `Dialog` && !dismissible() ? `alertdialog` : `dialog`}\n id={contentId}\n aria-describedby={description() ? descriptionId : undefined}\n aria-labelledby={titleId}\n data-state={state()}\n tabindex=\"-1\"\n onKeyDown={scope.onKeyDown}\n >\n {props.kind === `Drawer` && (side() === `bottom` || side() === `top`) ? <div {...part(`handle`)} aria-hidden=\"true\" onPointerDown={drag.onPointerDown} onPointerMove={drag.onPointerMove} onPointerUp={drag.onPointerUp} on:pointercancel={drag.onPointerCancel} /> : null}\n {title() || description() ? (\n props.kind === `Drawer` ? (\n <div class=\"xui-overlay-head\" onPointerDown={drag.onPointerDown} onPointerMove={drag.onPointerMove} onPointerUp={drag.onPointerUp} on:pointercancel={drag.onPointerCancel}>\n <ModalHead part={part} title={title()} description={description()} titleId={titleId} descriptionId={descriptionId} fallback={ctx.t(`dialog`)} />\n </div>\n ) : (\n <div class=\"xui-overlay-head\">\n <ModalHead part={part} title={title()} description={description()} titleId={titleId} descriptionId={descriptionId} fallback={ctx.t(`dialog`)} />\n </div>\n )\n ) : (\n <h2 class=\"xui-sr-only\" id={titleId}>\n {ctx.t(`dialog`)}\n </h2>\n )}\n {/* Round 4: a valid submit closes THIS overlay when it is the\n nearest one around the form and dismissible (an AlertDialog,\n dismissible false, never auto-closes). */}\n <CloseOnSubmitContext.Provider value={() => (untrack(dismissible) ? close() : undefined)}>\n <LayerContext.Provider value={layer.layer}>\n <div class=\"xui-overlay-body\">{props.children}</div>\n <Show when={props.node.slots?.footer}>\n <div {...part(`footer`)}>{props.slots.footer}</div>\n </Show>\n </LayerContext.Provider>\n </CloseOnSubmitContext.Provider>\n {props.kind === `Dialog` && dismissible() ? (\n <button type=\"button\" {...part(`close`)} aria-label={ctx.t(`close`)} onClick={() => onOpenChange(false)}>\n <BuiltinIcon slot=\"Dialog.close\" />\n </button>\n ) : null}\n </div>\n ) as HTMLDivElement\n contentPresence.ref(el)\n drag.setPanel(el)\n bindStyle(el, () => ({ \"pointer-events\": layer.pointerEvents(registered()) }))\n onMount(() => {\n layer.attach(el)\n setRegistered(true)\n scope.attach(el)\n useFocusGuards()\n useModalEffects(el, false)\n })\n return el\n }\n\n const Overlay = (): JSX.Element => {\n const el = (<div {...part(`overlay`, open() && `open`)} data-xui-overlay-backdrop={props.kind} data-state={state()} />) as HTMLDivElement\n overlayPresence.ref(el)\n bindStyle(el, () => ({ \"pointer-events\": `auto` }))\n // react-remove-scroll sits on the Dialog's overlay.\n onMount(() => useScrollLock())\n return el\n }\n\n return (\n <>\n <div {...overlayRootProps(props.rootProps, hasTrigger(), props.node.slots?.trigger)}>\n <Show when={hasTrigger()}>\n <span ref={triggerEl} class=\"xui-trigger\" {...TYPE_BUTTON} aria-haspopup=\"dialog\" aria-expanded={open()} aria-controls={contentId} data-state={state()} onClick={() => onOpenChange(!untrack(open))}>\n {props.slots.trigger}\n </span>\n </Show>\n </div>\n {/* Radix: one portal per part (the overlay's, then the content's). */}\n <LayerPortal mount={ctx.portal}>\n <Show when={overlayPresence.mounted()}>\n <Overlay />\n </Show>\n </LayerPortal>\n <LayerPortal mount={ctx.portal}>\n <Show when={contentPresence.mounted()}>\n <Content />\n </Show>\n </LayerPortal>\n </>\n )\n}\n\nfunction ModalHead(props: { part: PartFn; title: string; description: string; titleId: string; descriptionId: string; fallback: string }): JSX.Element {\n return (\n <>\n {props.title ? (\n <h2 {...props.part(`title`)} id={props.titleId}>\n {props.title}\n </h2>\n ) : (\n <h2 class=\"xui-sr-only\" id={props.titleId}>\n {props.fallback}\n </h2>\n )}\n {props.description ? (\n <p {...props.part(`description`)} id={props.descriptionId}>\n {props.description}\n </p>\n ) : null}\n </>\n )\n}\n\n// ---------------------------------------------------------------------------\n// Popover\n// ---------------------------------------------------------------------------\n\nconst HOVER_OPEN_MS = 200\nconst HOVER_CLOSE_MS = 150\n\nexport function PopoverNative(props: NativeProps): JSX.Element {\n const ctx = useSurfaceContext()\n const part = parts(props)\n const [open, setOpen] = createOpenState(props)\n const side = () => str(props.props.side, `bottom`) as Side\n // `openOn: hover` (a hover card): opens on pointer hover AND keyboard focus\n // of the trigger, stays while the pointer is over the content; touch\n // (no hover pointer) keeps press.\n const hoverMode = () => props.props.openOn === `hover` && ctx.hover\n const contentId = createUniqueId()\n const hasTrigger = () => Boolean(props.node.slots?.trigger)\n let timer: ReturnType<typeof setTimeout> | undefined\n // THIS popover's content (focus moving from the trigger into it keeps it open).\n let contentEl: HTMLElement | undefined\n const schedule = (next: boolean) => {\n if (timer) clearTimeout(timer)\n timer = setTimeout(\n () => {\n if (untrack(open) !== next) setOpen(next)\n },\n next ? HOVER_OPEN_MS : HOVER_CLOSE_MS\n )\n }\n onCleanup(() => timer && clearTimeout(timer))\n const [anchor, setAnchor] = createSignal<HTMLElement>()\n const state = () => (open() ? `open` : `closed`)\n const presence = createPresence(open)\n\n const Content = (): JSX.Element => {\n let hasInteractedOutside = false\n let hasPointerDownOutside = false\n const layer = createLayer({\n onInteractOutside: (e) => {\n if (!e.defaultPrevented) {\n hasInteractedOutside = true\n if (e.detail.originalEvent.type === `pointerdown`) hasPointerDownOutside = true\n }\n const target = e.target as Node | null\n if (target && anchor()?.contains(target) && hasTrigger()) e.preventDefault()\n if (e.detail.originalEvent.type === `focusin` && hasPointerDownOutside) e.preventDefault()\n },\n onDismiss: () => setOpen(false),\n })\n const scope = createFocusScope({\n trapped: () => false,\n loop: true,\n onMountAutoFocus: (e) => {\n if (untrack(hoverMode)) e.preventDefault()\n },\n onUnmountAutoFocus: (e) => {\n if (!hasInteractedOutside && hasTrigger()) anchor()?.focus()\n e.preventDefault()\n hasInteractedOutside = false\n hasPointerDownOutside = false\n },\n })\n const [registered, setRegistered] = createSignal(false)\n return (\n <Popper anchor={anchor()} side={side()} align=\"center\" sideOffset={OVERLAY_OFFSET} collisionPadding={OVERLAY_PADDING} dir={ctx.direction}>\n {(popper) => {\n const el = (\n <div\n {...part(`content`, open() && `open`)}\n data-side={popper.placedSide()}\n data-align={popper.placedAlign()}\n data-state={state()}\n role=\"dialog\"\n id={contentId}\n data-xui-overlay=\"Popover\"\n data-open-on={hoverMode() ? `hover` : undefined}\n dir={ctx.direction}\n tabindex=\"-1\"\n onKeyDown={scope.onKeyDown}\n onPointerEnter={() => hoverMode() && schedule(true)}\n onPointerLeave={() => hoverMode() && schedule(false)}\n >\n {/* The nearest overlay decides: a Form in a Popover closes nothing,\n not even a Dialog around the Popover. */}\n <CloseOnSubmitContext.Provider value={null}>\n <LayerContext.Provider value={layer.layer}>{props.children}</LayerContext.Provider>\n </CloseOnSubmitContext.Provider>\n </div>\n ) as HTMLDivElement\n contentEl = el\n presence.ref(el)\n popper.setContent(el)\n bindStyle(el, () => popperContentStyle(`popover`, `trigger`, layer.pointerEvents(registered()), popper.isPositioned()))\n onMount(() => {\n layer.attach(el)\n setRegistered(true)\n scope.attach(el)\n useFocusGuards()\n })\n return el\n }}\n </Popper>\n )\n }\n\n return (\n <>\n <div {...overlayRootProps(props.rootProps, hasTrigger(), props.node.slots?.trigger)}>\n <Show when={hasTrigger()} fallback={<span ref={setAnchor} style={css({ display: `inline-flex` })} />}>\n <span\n ref={setAnchor}\n class=\"xui-trigger\"\n {...TYPE_BUTTON}\n aria-haspopup=\"dialog\"\n aria-expanded={open()}\n aria-controls={contentId}\n data-state={state()}\n onClick={() => setOpen(!untrack(open))}\n onPointerEnter={(e) => hoverMode() && e.pointerType !== `touch` && schedule(true)}\n onPointerLeave={(e) => hoverMode() && e.pointerType !== `touch` && schedule(false)}\n onFocusIn={() => hoverMode() && schedule(true)}\n onFocusOut={(e) => {\n if (!hoverMode()) return\n const to = e.relatedTarget as Node | null\n if (!to || !contentEl?.contains(to)) schedule(false)\n }}\n >\n {props.slots.trigger}\n </span>\n </Show>\n </div>\n <LayerPortal mount={ctx.portal}>\n <Show when={presence.mounted()}>\n <Content />\n </Show>\n </LayerPortal>\n </>\n )\n}\n\n// ---------------------------------------------------------------------------\n// Tooltip\n// ---------------------------------------------------------------------------\n\nconst TOOLTIP_OPEN = `tooltip.open`\nconst TOOLTIP_DELAY_MS = 300\nconst TOOLTIP_SKIP_DELAY_MS = 300\n\n/** Tooltip: shows on hover AND keyboard focus (a11y.json), Escape hides. */\nexport function TooltipNative(props: NativeProps): JSX.Element {\n const ctx = useSurfaceContext()\n const part = parts(props)\n const side = () => str(props.props.side, `top`) as Side\n const content = () => str(props.props.content) || str(props.props.text)\n const contentId = createUniqueId()\n const [open, setOpenState] = createSignal(false)\n const [delayed, setDelayed] = createSignal(false)\n let openDelayed = true\n let openTimer: ReturnType<typeof setTimeout> | undefined\n let skipTimer: ReturnType<typeof setTimeout> | undefined\n let pointerMoveOpened = false\n let pointerDown = false\n let anchorEl: HTMLDivElement | undefined\n let contentEl: HTMLElement | undefined\n const setOpen = (next: boolean) => {\n if (next) {\n clearTimeout(skipTimer)\n openDelayed = false\n document.dispatchEvent(new CustomEvent(TOOLTIP_OPEN))\n } else {\n clearTimeout(skipTimer)\n skipTimer = setTimeout(() => (openDelayed = true), TOOLTIP_SKIP_DELAY_MS)\n }\n setOpenState(next)\n }\n const handleOpen = () => {\n clearTimeout(openTimer)\n setDelayed(false)\n setOpen(true)\n }\n const handleClose = () => {\n clearTimeout(openTimer)\n if (untrack(open)) setOpen(false)\n }\n const handleDelayedOpen = () => {\n clearTimeout(openTimer)\n openTimer = setTimeout(() => {\n setDelayed(true)\n setOpen(true)\n }, TOOLTIP_DELAY_MS)\n }\n onCleanup(() => {\n clearTimeout(openTimer)\n clearTimeout(skipTimer)\n })\n const stateAttribute = () => (open() ? (delayed() ? `delayed-open` : `instant-open`) : `closed`)\n // Hoverable content: leaving the trigger toward the content keeps it open.\n let grace: Point[] | null = null\n const trackGrace = (e: PointerEvent) => {\n if (!grace) return\n const target = e.target as Node | null\n const point = { x: e.clientX, y: e.clientY }\n const overTrigger = anchorEl?.contains(target) ?? false\n const overContent = contentEl?.contains(target) ?? false\n if (overTrigger || overContent) grace = null\n else if (!inPolygon(point, grace)) {\n grace = null\n handleClose()\n }\n }\n // Radix tracks the grace area from an effect after the leave: the\n // pointer move that caused the leave itself is never judged.\n const leave = (e: PointerEvent, from: HTMLElement | undefined, to: HTMLElement | undefined) => {\n if (!from || !to || !untrack(open)) return\n const area = graceArea({ x: e.clientX, y: e.clientY }, from.getBoundingClientRect(), to.getBoundingClientRect())\n setTimeout(() => (grace = area), 0)\n }\n document.addEventListener(`pointermove`, trackGrace)\n onCleanup(() => document.removeEventListener(`pointermove`, trackGrace))\n const presence = createPresence(open)\n\n const Content = (): JSX.Element => {\n const layer = createLayer({ onFocusOutside: (e) => e.preventDefault(), onDismiss: handleClose })\n const [registered, setRegistered] = createSignal(false)\n const onOtherOpen = () => handleClose()\n const onScroll = (e: Event) => {\n const target = e.target as Node | null\n if (target && anchorEl && (target as Node).contains?.(anchorEl)) handleClose()\n }\n return (\n <Popper anchor={anchorEl} side={side()} align=\"center\" sideOffset={OVERLAY_OFFSET} collisionPadding={OVERLAY_PADDING}>\n {(popper) => {\n const el = (\n <div {...part(`content`)} data-side={popper.placedSide()} data-align={popper.placedAlign()} data-state={stateAttribute()} data-xui-overlay=\"Tooltip\" onPointerLeave={(e) => leave(e, contentEl, anchorEl)}>\n {content()}\n <VisuallyHidden id={contentId}>{content()}</VisuallyHidden>\n </div>\n ) as HTMLDivElement\n contentEl = el\n presence.ref(el)\n popper.setContent(el)\n bindStyle(el, () => popperContentStyle(`tooltip`, `trigger`, layer.pointerEvents(registered()), popper.isPositioned()))\n onMount(() => {\n layer.attach(el)\n setRegistered(true)\n // Another tooltip opening closes this one; so does scrolling the trigger away.\n setTimeout(() => document.addEventListener(TOOLTIP_OPEN, onOtherOpen), 0)\n window.addEventListener(`scroll`, onScroll, { capture: true })\n onCleanup(() => {\n document.removeEventListener(TOOLTIP_OPEN, onOtherOpen)\n window.removeEventListener(`scroll`, onScroll, { capture: true })\n })\n })\n return el\n }}\n </Popper>\n )\n }\n\n // The tooltip wraps its children in the ANCHOR (`<id>.anchor`), the frame\n // it shows against; the root is layout-transparent around it.\n return (\n <>\n <div {...props.rootProps} data-xui-overlay-root=\"\">\n <div\n ref={anchorEl}\n {...part(`anchor`)}\n tabindex=\"0\"\n aria-describedby={open() ? contentId : undefined}\n data-state={stateAttribute()}\n onPointerMove={(e) => {\n if (e.pointerType === `touch`) return\n if (!pointerMoveOpened && !grace) {\n if (openDelayed) handleDelayedOpen()\n else handleOpen()\n pointerMoveOpened = true\n }\n }}\n onPointerLeave={(e) => {\n clearTimeout(openTimer)\n pointerMoveOpened = false\n leave(e, anchorEl, contentEl)\n }}\n onPointerDown={() => {\n if (untrack(open)) handleClose()\n pointerDown = true\n document.addEventListener(`pointerup`, () => setTimeout(() => (pointerDown = false), 0), { once: true })\n }}\n onFocusIn={() => {\n if (!pointerDown) handleOpen()\n }}\n onFocusOut={handleClose}\n onClick={handleClose}\n >\n {props.children}\n </div>\n </div>\n <LayerPortal mount={ctx.portal}>\n <Show when={presence.mounted()}>\n <Content />\n </Show>\n </LayerPortal>\n </>\n )\n}\n\n// ---------------------------------------------------------------------------\n// Menu (round 3: ONE native for press and context menus)\n// ---------------------------------------------------------------------------\n\ninterface MenuItem {\n label?: string\n value?: string\n kind?: `item` | `checkbox` | `separator` | `label` | `submenu`\n icon?: string\n shortcut?: string\n checked?: boolean\n destructive?: boolean\n disabled?: boolean\n separator?: boolean\n items?: MenuItem[]\n /** EXP-1259: the submenu is a search list of its entries. */\n searchable?: boolean\n placeholder?: string\n}\n\ninterface MenuRoot {\n close: () => void\n dir: () => `ltr` | `rtl`\n overlay: string\n openOn: string\n part: PartFn\n emit: NativeProps[`emit`]\n scope: () => string\n}\nconst MenuRootContext = createContext<MenuRoot>()\n/** The menu content's `--radix-<kind>-content-*` prefix. */\nconst menuKind = (root: MenuRoot) => (root.openOn === `contextmenu` ? `context-menu` : `dropdown-menu`)\n\nfunction MenuEntry(props: { item: MenuItem; raw: Record<string, unknown> | undefined; path: string }): JSX.Element {\n const root = useContext(MenuRootContext)!\n const kind = () => (props.item.separator ? `separator` : (props.item.kind ?? `item`))\n return (\n <Dynamic\n component={(() => {\n const k = kind()\n if (k === `separator`) return MenuSeparator\n if (k === `label`) return MenuLabel\n if (k === `submenu`) return MenuSub\n if (k === `checkbox`) return MenuCheckbox\n return MenuPlainItem\n })()}\n item={props.item}\n raw={props.raw}\n path={props.path}\n root={root}\n />\n )\n}\n\ntype EntryProps = { item: MenuItem; raw: Record<string, unknown> | undefined; path: string; root: MenuRoot }\n\nfunction MenuSeparator(props: EntryProps): JSX.Element {\n return <div role=\"separator\" aria-orientation=\"horizontal\" {...props.root.part(`separator`)} />\n}\nfunction MenuLabel(props: EntryProps): JSX.Element {\n return <div {...props.root.part(`label`)}>{str(props.item.label)}</div>\n}\n\nfunction ItemIcon(props: { name?: string }): JSX.Element {\n const ctx = useSurfaceContext()\n return <Show when={props.name}>{(name) => <IconGlyph icons={ctx.host.icons} name={name()} />}</Show>\n}\nfunction Shortcut(props: { text?: string; part: PartFn }): JSX.Element {\n return <Show when={props.text}>{(t) => <span {...props.part(`shortcut`)}>{t()}</span>}</Show>\n}\n\nfunction MenuPlainItem(props: EntryProps): JSX.Element {\n const disabled = () => bool(props.item.disabled)\n const row = createSelectable(disabled, () => void props.root.emit(`select`, { value: props.item.value ?? props.item.label }), props.root.close)\n return (\n <div\n ref={row.ref}\n role=\"menuitem\"\n {...props.root.part(`item`, disabled() && `disabled`)}\n data-destructive={props.item.destructive ? `true` : undefined}\n {...row.attrs()}\n onClick={row.handlers.onClick}\n onPointerDown={row.handlers.onPointerDown}\n onPointerUp={row.handlers.onPointerUp}\n onPointerMove={row.handlers.onPointerMove}\n onPointerLeave={row.handlers.onPointerLeave}\n onKeyDown={row.handlers.onKeyDown}\n onFocus={row.handlers.onFocus}\n onBlur={row.handlers.onBlur}\n >\n <ItemIcon name={props.item.icon} />\n <span class=\"xui-menu-label\">{str(props.item.label)}</span>\n <Shortcut text={props.item.shortcut} part={props.root.part} />\n </div>\n )\n}\n\nfunction MenuCheckbox(props: EntryProps): JSX.Element {\n const ctx = useSurfaceContext()\n const disabled = () => bool(props.item.disabled)\n const checked = () => bool(props.item.checked)\n const row = createSelectable(disabled, (e) => {\n const next = !untrack(checked)\n const raw = props.raw?.checked\n if (isBinding(raw)) ctx.setData(absolutePath(raw.path, props.root.scope()), next)\n void props.root.emit(`select`, { value: props.item.value ?? props.item.label, checked: next })\n e.preventDefault()\n }, props.root.close)\n return (\n <div\n ref={row.ref}\n role=\"menuitemcheckbox\"\n aria-checked={checked() ? `true` : `false`}\n {...props.root.part(`item`, disabled() && `disabled`, checked() && `checked`)}\n data-state={checked() ? `checked` : `unchecked`}\n {...row.attrs()}\n onClick={row.handlers.onClick}\n onPointerDown={row.handlers.onPointerDown}\n onPointerUp={row.handlers.onPointerUp}\n onPointerMove={row.handlers.onPointerMove}\n onPointerLeave={row.handlers.onPointerLeave}\n onKeyDown={row.handlers.onKeyDown}\n onFocus={row.handlers.onFocus}\n onBlur={row.handlers.onBlur}\n >\n <span {...props.root.part(`check`)}>\n <Show when={checked()}>\n <span data-state=\"checked\">\n <BuiltinIcon slot=\"Menu.check\" />\n </span>\n </Show>\n </span>\n <span class=\"xui-menu-label\">{str(props.item.label)}</span>\n <Shortcut text={props.item.shortcut} part={props.root.part} />\n </div>\n )\n}\n\nfunction MenuSub(props: EntryProps): JSX.Element {\n const ctx = useSurfaceContext()\n const disabled = () => bool(props.item.disabled)\n const row = createMenuRow(disabled)\n const [open, setOpen] = createSignal(false)\n const triggerId = createUniqueId()\n const contentId = createUniqueId()\n const [trigger, setTrigger] = createSignal<HTMLElement>()\n const [content, setContent] = createSignal<HTMLElement>()\n let openTimer: ReturnType<typeof setTimeout> | undefined\n let graceTimer: ReturnType<typeof setTimeout> | undefined\n onCleanup(() => {\n clearTimeout(openTimer)\n clearTimeout(graceTimer)\n })\n const rtl = () => props.root.dir() === `rtl`\n const openKeys = () => [`Enter`, ` `, rtl() ? `ArrowLeft` : `ArrowRight`]\n const closeKey = () => (rtl() ? `ArrowRight` : `ArrowLeft`)\n const presence = createPresence(open)\n return (\n <>\n <div\n ref={(el) => {\n row.ref(el)\n setTrigger(el)\n }}\n role=\"menuitem\"\n id={triggerId}\n aria-haspopup=\"menu\"\n aria-expanded={open() ? `true` : `false`}\n aria-controls={contentId}\n data-state={open() ? `open` : `closed`}\n {...props.root.part(`item`, disabled() && `disabled`)}\n {...row.attrs()}\n onClick={() => {\n if (!untrack(disabled) && !untrack(open)) setOpen(true)\n }}\n onPointerMove={(e: PointerEvent) => {\n row.handlers.onPointerMove(e)\n if (e.pointerType !== `mouse`) return\n if (!untrack(disabled) && !untrack(open) && !openTimer) {\n row.level.setGrace(null)\n openTimer = setTimeout(() => {\n setOpen(true)\n openTimer = undefined\n }, 100)\n }\n }}\n onPointerLeave={(e: PointerEvent) => {\n if (e.pointerType !== `mouse`) return\n clearTimeout(openTimer)\n openTimer = undefined\n const rect = content()?.getBoundingClientRect()\n if (rect) {\n const s = content()?.dataset.side as Side\n const right = s === `right`\n const bleed = right ? -5 : 5\n const near = rect[right ? `left` : `right`]\n const far = rect[right ? `right` : `left`]\n row.level.setGrace({\n area: [\n { x: e.clientX + bleed, y: e.clientY },\n { x: near, y: rect.top },\n { x: far, y: rect.top },\n { x: far, y: rect.bottom },\n { x: near, y: rect.bottom },\n ],\n side: s,\n })\n clearTimeout(graceTimer)\n graceTimer = setTimeout(() => row.level.setGrace(null), 300)\n } else {\n if (row.level.onTriggerLeave(e)) return\n row.level.setGrace(null)\n row.handlers.onPointerLeave(e)\n }\n }}\n onKeyDown={(e: KeyboardEvent) => {\n const typingAhead = row.level.search() !== ``\n if (untrack(disabled) || (typingAhead && e.key === ` `)) return\n if (openKeys().includes(e.key)) {\n if (untrack(open)) content()?.focus({ preventScroll: true })\n else setOpen(true)\n e.preventDefault()\n return\n }\n row.handlers.onKeyDown(e)\n }}\n onFocus={row.handlers.onFocus}\n onBlur={row.handlers.onBlur}\n >\n <ItemIcon name={props.item.icon} />\n <span class=\"xui-menu-label\">{str(props.item.label)}</span>\n <span {...props.root.part(`submenuIndicator`)}>\n <BuiltinIcon slot=\"Menu.submenuIndicator\" />\n </span>\n </div>\n <LayerPortal mount={ctx.portal}>\n <Show when={presence.mounted()}>\n <MenuContent\n anchor={trigger()}\n side={rtl() ? `left` : `right`}\n align=\"start\"\n sideOffset={2}\n dir={props.root.dir()}\n kind={menuKind(props.root)}\n root={false}\n id={contentId}\n labelledBy={triggerId}\n state={() => (open() ? `open` : `closed`)}\n attrs={() => ({ ...props.root.part(`content`), \"data-xui-overlay\": `${props.root.overlay}.sub`, \"data-searchable\": props.item.searchable ? `true` : undefined })}\n setContent={(el) => {\n setContent(el)\n if (el) presence.ref(el)\n }}\n onDismiss={() => setOpen(false)}\n onEscapeKeyDown={(e) => {\n props.root.close()\n e.preventDefault()\n }}\n onFocusOutside={(e) => {\n if (e.target !== trigger()) setOpen(false)\n }}\n onCloseAutoFocus={(e) => e.preventDefault()}\n onKeyDown={(e) => {\n const el = content()\n if (el?.contains(e.target as Node) && e.key === closeKey()) {\n setOpen(false)\n trigger()?.focus()\n e.preventDefault()\n }\n }}\n >\n <Show when={props.item.searchable} fallback={<MenuEntries items={objects<MenuItem>(props.item.items)} raws={objects<Record<string, unknown>>(props.raw?.items)} path={`${props.path}.`} />}>\n <MenuSearch item={props.item} i={props.path} />\n </Show>\n </MenuContent>\n </Show>\n </LayerPortal>\n </>\n )\n}\n\n/** EXP-1259: a searchable submenu = the search list (head, the entries that\n * match as menu rows, the highlighted one `selected`, the fade): its field\n * takes the focus when it opens (and when the pointer enters), ↑/↓ move,\n * Enter or Tab pick (the menu closes), ← at the caret's start returns to\n * the parent row. The list itself is the SearchList's body (search.tsx). */\nfunction MenuSearch(props: { item: MenuItem; i: string }): JSX.Element {\n const ctx = useSurfaceContext()\n const root = useContext(MenuRootContext)!\n const [query, setQuery] = createSignal(``)\n let box: HTMLDivElement | undefined\n // The field takes the focus once the opened content has it.\n onMount(() => {\n const frame = requestAnimationFrame(() => box?.querySelector<HTMLInputElement>(`input`)?.focus({ preventScroll: true }))\n onCleanup(() => cancelAnimationFrame(frame))\n })\n const rows = createMemo(() =>\n objects<MenuItem>(props.item.items)\n .map((entry, index) => ({ index, entry }))\n .filter(({ entry }) => entry.kind !== `separator` && entry.kind !== `label` && !entry.separator && searchMatches({ label: str(entry.label) }, query()))\n .map(({ index, entry }) => ({ index, item: { label: str(entry.label), value: str(entry.value ?? entry.label), icon: entry.icon, disabled: bool(entry.disabled) } as SearchItem }))\n )\n return (\n <div\n ref={box}\n class=\"xui-menu-search\"\n onPointerEnter={(e) => {\n const input = e.currentTarget.querySelector<HTMLInputElement>(`input`)\n if (input && !e.currentTarget.contains(document.activeElement)) input.focus({ preventScroll: true })\n }}\n >\n <SearchBody\n part={root.part}\n owner=\"Menu\"\n suffix={`.${props.i}`}\n rows={rows()}\n query={query()}\n onQuery={setQuery}\n placeholder={str(props.item.placeholder) || ctx.t(`search`)}\n emptyText={ctx.t(`noResults`)}\n maxRows={8}\n showCount\n autoFocus\n leaveBubbles\n onPick={(picked) => {\n void root.emit(`select`, { value: picked.value })\n root.close()\n }}\n rowPart={(_, __, active) => root.part(`item`, active && `selected`)}\n renderRow={(row) => (\n <>\n {row.icon ? <IconGlyph icons={ctx.host.icons} name={row.icon} /> : null}\n <span class=\"xui-menu-label\">{row.label}</span>\n </>\n )}\n />\n </div>\n )\n}\n\n/** The entries of one level. A submenu's `items` may be a binding (`{path}`\n * to rows a host source feeds): the bind pass resolved it already. */\nfunction MenuEntries(props: { items: MenuItem[]; raws: Record<string, unknown>[]; path: string }): JSX.Element {\n const indexes = createMemo(() => props.items.map((_, i) => i), undefined, { equals: (a, b) => a.length === b.length })\n return <For each={indexes()}>{(i) => <MenuEntry item={props.items[i]} raw={props.raws[i]} path={`${props.path}${i}`} />}</For>\n}\n\n/** Menu: `openOn: press` (default) = a dropdown menu, its ONE child the\n * trigger (no child = the default outline Button from label/icon, no\n * chevron), anchored bottom-start; `openOn: contextmenu` = a context menu\n * over the child (right-click / long-press / Shift+F10 / the Menu key),\n * opened at the pointer (the child's corner from the keyboard). */\nexport function MenuNative(props: NativeProps): JSX.Element {\n return (\n <Show when={props.props.openOn === `contextmenu`} fallback={<PressMenuOpening {...props} />}>\n <ContextMenuOpening {...props} />\n </Show>\n )\n}\n\nfunction createMenuRoot(props: NativeProps, part: PartFn, close: () => void, openOn: string): MenuRoot {\n const ctx = useSurfaceContext()\n useKeyboardTracking()\n return { close, dir: () => ctx.direction, overlay: `Menu`, openOn, part, emit: props.emit, scope: () => props.scope }\n}\n\nfunction PressMenuOpening(props: NativeProps): JSX.Element {\n const ctx = useSurfaceContext()\n const part = parts(props)\n const items = () => objects<MenuItem>(props.props.items)\n const label = () => str(props.props.label)\n const icon = () => str(props.props.icon)\n const [open, setOpen] = createSignal(false)\n const hasChild = () => props.node.children.length > 0\n const triggerId = createUniqueId()\n const contentId = createUniqueId()\n const [trigger, setTrigger] = createSignal<HTMLElement>()\n const root = createMenuRoot(props, part, () => setOpen(false), `press`)\n const presence = createPresence(open)\n let interactedOutside = false\n const triggerAttrs = (): Attrs => ({\n type: `button`,\n id: triggerId,\n \"aria-haspopup\": `menu`,\n \"aria-expanded\": open() ? `true` : `false`,\n \"aria-controls\": open() ? contentId : undefined,\n \"data-state\": open() ? `open` : `closed`,\n })\n const onPointerDown = (e: PointerEvent) => {\n if (e.button === 0 && e.ctrlKey === false) {\n const was = untrack(open)\n setOpen(!was)\n if (!was) e.preventDefault()\n }\n }\n const onKeyDown = (e: KeyboardEvent) => {\n if ([`Enter`, ` `].includes(e.key)) setOpen(!untrack(open))\n if (e.key === `ArrowDown`) setOpen(true)\n if ([`Enter`, ` `, `ArrowDown`].includes(e.key)) e.preventDefault()\n }\n return (\n <MenuRootContext.Provider value={root}>\n <div {...overlayRootProps(props.rootProps, true, props.node.children[0] ?? null)}>\n <Show\n when={hasChild()}\n fallback={\n // Round 2 §7: the default trigger = an outline button with the\n // icon (when set) and the label (`$string.menu` without one and\n // without an icon), no chevron.\n <button ref={setTrigger} {...triggerAttrs()} {...part(`trigger`, open() && `open`)} aria-label={label() || ctx.t(`menu`)} onPointerDown={onPointerDown} onKeyDown={onKeyDown}>\n {icon() ? <IconGlyph icons={ctx.host.icons} name={icon()} class=\"xui-icon\" width={16} height={16} /> : null}\n {label() || !icon() ? <span>{label() || ctx.t(`menu`)}</span> : null}\n </button>\n }\n >\n <span ref={setTrigger} class=\"xui-trigger\" {...triggerAttrs()} onPointerDown={onPointerDown} onKeyDown={onKeyDown}>\n {props.children}\n </span>\n </Show>\n </div>\n <LayerPortal mount={ctx.portal}>\n <Show when={presence.mounted()}>\n <MenuContent\n anchor={trigger()}\n side=\"bottom\"\n align=\"start\"\n sideOffset={OVERLAY_OFFSET}\n dir={root.dir()}\n kind={menuKind(root)}\n root\n id={contentId}\n labelledBy={triggerId}\n state={() => (open() ? `open` : `closed`)}\n attrs={() => ({ ...part(`content`, open() && `open`), \"data-xui-overlay\": `Menu`, \"data-open-on\": `press` })}\n setContent={(el) => el && presence.ref(el)}\n onDismiss={() => setOpen(false)}\n onInteractOutside={(e) => {\n const original = e.detail.originalEvent as PointerEvent\n const ctrlLeftClick = original.button === 0 && original.ctrlKey === true\n if (original.button === 2 || ctrlLeftClick) interactedOutside = true\n }}\n onCloseAutoFocus={(e) => {\n if (!interactedOutside) trigger()?.focus()\n interactedOutside = false\n e.preventDefault()\n }}\n >\n <MenuEntries items={items()} raws={objects<Record<string, unknown>>(props.node.props.items)} path=\"\" />\n </MenuContent>\n </Show>\n </LayerPortal>\n </MenuRootContext.Provider>\n )\n}\n\nfunction ContextMenuOpening(props: NativeProps): JSX.Element {\n const ctx = useSurfaceContext()\n const part = parts(props)\n const items = () => objects<MenuItem>(props.props.items)\n const [open, setOpen] = createSignal(false)\n const [point, setPoint] = createSignal({ x: 0, y: 0 })\n const root = createMenuRoot(props, part, () => setOpen(false), `contextmenu`)\n const presence = createPresence(open)\n let longPress: ReturnType<typeof setTimeout> | undefined\n const clearLongPress = () => clearTimeout(longPress)\n onCleanup(clearLongPress)\n const openAt = (e: { clientX: number; clientY: number }) => {\n setPoint({ x: e.clientX, y: e.clientY })\n setOpen(true)\n }\n const anchor: VirtualElement = { getBoundingClientRect: () => DOMRect.fromRect({ width: 0, height: 0, ...point() }) }\n return (\n <MenuRootContext.Provider value={root}>\n <div\n {...props.rootProps}\n data-state={open() ? `open` : `closed`}\n on:contextmenu={(e: MouseEvent) => {\n clearLongPress()\n openAt(e)\n e.preventDefault()\n }}\n onPointerDown={(e: PointerEvent) => {\n if (e.pointerType === `mouse`) return\n clearLongPress()\n longPress = setTimeout(() => openAt(e), 700)\n }}\n onPointerMove={(e: PointerEvent) => e.pointerType !== `mouse` && clearLongPress()}\n on:pointercancel={(e: PointerEvent) => e.pointerType !== `mouse` && clearLongPress()}\n onPointerUp={(e: PointerEvent) => e.pointerType !== `mouse` && clearLongPress()}\n onKeyDown={(e: KeyboardEvent) => {\n if ((e.key === `F10` && e.shiftKey) || e.key === `ContextMenu`) {\n e.preventDefault()\n const r = (e.currentTarget as HTMLElement).getBoundingClientRect()\n e.currentTarget!.dispatchEvent(new MouseEvent(`contextmenu`, { bubbles: true, cancelable: true, clientX: r.left + 8, clientY: r.top + 8 }))\n }\n }}\n >\n {props.children}\n </div>\n <LayerPortal mount={ctx.portal}>\n <Show when={presence.mounted()}>\n <MenuContent\n anchor={anchor}\n side=\"right\"\n align=\"start\"\n sideOffset={2}\n dir={root.dir()}\n kind={menuKind(root)}\n root\n state={() => (open() ? `open` : `closed`)}\n attrs={() => ({ ...part(`content`, open() && `open`), \"data-xui-overlay\": `Menu`, \"data-open-on\": `contextmenu` })}\n setContent={(el) => el && presence.ref(el)}\n onDismiss={() => setOpen(false)}\n onCloseAutoFocus={() => undefined}\n >\n <MenuEntries items={items()} raws={objects<Record<string, unknown>>(props.node.props.items)} path=\"\" />\n </MenuContent>\n </Show>\n </LayerPortal>\n </MenuRootContext.Provider>\n )\n}\n\n// ---------------------------------------------------------------------------\n// Toast\n// ---------------------------------------------------------------------------\n\n/** Toast (contract §3): in the TOAST layer, newest nearest the edge, at most\n * 3 visible (base CSS). The renderer runs `duration` (0 = sticky), PAUSED\n * while hovered or focused, then writes `open: false` and fires `dismiss`\n * + `change`. `error` is assertive, the rest polite; never takes focus. */\nexport function ToastNative(props: NativeProps): JSX.Element {\n const ctx = useSurfaceContext()\n const part = parts(props)\n const [open, setOpenState] = createBoundState(\n () => props.node,\n () => props.scope,\n `open`,\n () => (props.props.open === undefined ? true : bool(props.props.open))\n )\n const [leaving, setLeaving] = createSignal(false)\n const [paused, setPaused] = createSignal(false)\n const duration = () => (props.props.duration === undefined ? 5000 : Math.max(0, num(props.props.duration, 5000)))\n const type = () => str(props.props.type, `info`)\n let remaining = untrack(duration)\n let startedAt = 0\n const close = () => {\n setOpenState(false)\n void props.emit(`dismiss`, undefined, { open: false })\n void props.emit(`change`, { open: false }, { open: false })\n }\n // Exit: keep the element for the motion duration with data-state=closed.\n const [shown, setShown] = createSignal(untrack(open))\n createEffect(\n on(open, (o) => {\n if (o) {\n setShown(true)\n setLeaving(false)\n remaining = untrack(duration)\n return\n }\n if (!untrack(shown)) return\n setLeaving(true)\n const ms = ctx.reducedMotion ? 0 : (ctx.theme.tokens.motion?.standard ?? 180)\n const t = setTimeout(() => {\n setShown(false)\n setLeaving(false)\n }, ms)\n onCleanup(() => clearTimeout(t))\n }, { defer: true })\n )\n createEffect(() => {\n if (!open() || duration() === 0 || paused()) return\n startedAt = Date.now()\n const t = setTimeout(close, remaining)\n onCleanup(() => {\n clearTimeout(t)\n remaining = Math.max(0, remaining - (Date.now() - startedAt))\n })\n })\n const assertive = () => type() === `error`\n return (\n <LayerPortal mount={shown() ? ctx.toastLayer : null}>\n <div\n {...props.rootProps}\n role={assertive() ? `alert` : `status`}\n aria-live={assertive() ? `assertive` : `polite`}\n aria-atomic=\"true\"\n data-state={leaving() ? `closed` : `open`}\n data-xui-overlay=\"Toast\"\n onPointerEnter={() => setPaused(true)}\n onPointerLeave={() => setPaused(false)}\n onFocusIn={() => setPaused(true)}\n onFocusOut={() => setPaused(false)}\n onKeyDown={(e: KeyboardEvent) => {\n if (e.key === `Escape` && props.props.dismissible !== false) {\n e.stopPropagation()\n close()\n }\n }}\n >\n <span {...part(`icon`)}>\n <BuiltinIcon slot={`Toast.icon.${type()}`} />\n </span>\n <div class=\"xui-toast-text\">\n <span {...part(`title`)}>{str(props.props.title)}</span>\n {str(props.props.description) ? <span {...part(`description`)}>{str(props.props.description)}</span> : null}\n </div>\n {str(props.props.actionLabel) ? (\n <button type=\"button\" {...part(`action`)} onClick={() => void props.emit(`action`)}>\n {str(props.props.actionLabel)}\n </button>\n ) : null}\n {props.props.dismissible !== false ? (\n <button type=\"button\" {...part(`close`)} aria-label={ctx.t(`dismiss`)} onClick={close}>\n <BuiltinIcon slot=\"Toast.close\" />\n </button>\n ) : null}\n </div>\n </LayerPortal>\n )\n}\n\nexport const NATIVES_OVERLAYS: Record<string, Component<NativeProps>> = {\n Dialog: DialogNative,\n Drawer: DrawerNative,\n Popover: PopoverNative,\n Tooltip: TooltipNative,\n Menu: MenuNative,\n Toast: ToastNative,\n}\n","// FEED-128 (React's natives/resizable.tsx; round 2, docs/round-2-contract.md\n// §1): Resizable — panels (its children) split by handles. The arithmetic\n// is the core's (`normalizeSizes`, `resizePanels` from the sizes at the drag\n// START, `keyboardResize`, `dragDelta`): sizes are percentages of the main\n// axis minus the handles, laid out as flex-grow factors over a 0 basis (=\n// `panelExtents`). Each handle is `$control.hairline` thick in layout with a\n// `resizeHandleHit` (8 px) hit area centred on it, a focusable `separator`\n// (orientation of the line, value = the panel before it, its limits,\n// `controls` = that panel, named `$string.resize`). A bound `sizes` is\n// written; `change {sizes}` fires after every drag end or key.\n\nimport { For, Show, createMemo, createSignal, untrack, type Component, type JSX } from \"solid-js\"\nimport { dragDelta, keyboardResize, normalizeSizes, resizePanels, RESIZE_HANDLE_HIT, type PanelLimits, type UiNode } from \"@exponential-at/ui\"\nimport { useSurfaceContext } from \"../context\"\nimport type { NativeProps } from \"../node-view\"\nimport { NodeView } from \"../node-view\"\nimport { createBoundState } from \"./bound\"\nimport { arr, bool, css, num, parts } from \"./shared\"\n\nconst RESIZE_KEYS = new Set([`ArrowLeft`, `ArrowRight`, `ArrowUp`, `ArrowDown`, `Home`, `End`, `Enter`])\n\nconst sameKeys = (a: readonly string[], b: readonly string[]): boolean => a.length === b.length && a.every((x, i) => x === b[i])\n\nexport function ResizableNative(props: NativeProps): JSX.Element {\n const ctx = useSurfaceContext()\n const part = parts(props)\n const orientation = (): `horizontal` | `vertical` => (props.props.direction === `vertical` ? `vertical` : `horizontal`)\n const count = () => props.node.children.length\n const limits = createMemo(() => arr<PanelLimits>(props.props.panels))\n const external = createMemo(() => normalizeSizes(arr<unknown>(props.props.sizes), count(), limits()))\n const [sizes, setBound] = createBoundState<number[]>(() => props.node, () => props.scope, `sizes`, external)\n // Live sizes while a drag runs (written + `change` at its end).\n const [live, setLive] = createSignal<number[] | null>(null)\n // The latest drag sizes, for the commit.\n let liveLatest: number[] | null = null\n const shown = () => live() ?? (sizes().length === count() ? sizes() : external())\n const hairline = () => num((ctx.theme.tokens as unknown as { control?: Record<string, number> }).control?.hairline, 1)\n let rootEl: HTMLDivElement | undefined\n let drag: { id: number; handle: number; start: number[]; at: number; container: number } | null = null\n const commit = (next: number[]) => {\n setBound(next)\n void props.emit(`change`, { sizes: next }, { sizes: next })\n }\n const mainOf = (e: { clientX: number; clientY: number }) => (untrack(orientation) === `horizontal` ? e.clientX : e.clientY)\n const onPointerDown = (i: number) => (e: PointerEvent) => {\n if (e.button !== 0) return\n const box = rootEl?.getBoundingClientRect()\n if (!box) return\n e.preventDefault()\n const target = e.currentTarget as HTMLElement\n try {\n target.setPointerCapture?.(e.pointerId)\n } catch {\n // A synthetic or already-released pointer: the drag still follows moves on the handle.\n }\n target.focus()\n drag = { id: e.pointerId, handle: i, start: untrack(shown), at: mainOf(e), container: untrack(orientation) === `horizontal` ? box.width : box.height }\n liveLatest = null\n }\n const onPointerMove = (e: PointerEvent) => {\n const d = drag\n if (!d || d.id !== e.pointerId) return\n const delta = dragDelta(mainOf(e) - d.at, d.container, untrack(count), untrack(orientation), ctx.direction, untrack(hairline))\n const next = resizePanels(d.start, d.handle, delta, untrack(limits))\n liveLatest = next\n setLive(next)\n }\n const onPointerEnd = (e: PointerEvent) => {\n const d = drag\n if (!d || d.id !== e.pointerId) return\n drag = null\n const next = liveLatest\n liveLatest = null\n setLive(null)\n if (next && next.some((v, k) => v !== d.start[k])) commit(next)\n }\n const onKey = (i: number) => (e: KeyboardEvent) => {\n if (!RESIZE_KEYS.has(e.key)) return\n e.preventDefault()\n const cur = untrack(shown)\n const next = keyboardResize(cur, i, e.key, untrack(orientation), ctx.direction, untrack(limits))\n if (next.some((v, k) => v !== cur[k])) commit(next)\n }\n // Panels keyed by child id (React's keys): a re-reduce keeps each subtree.\n const byId = createMemo(() => new Map(props.node.children.map((n) => [n.id, n])))\n const ids = createMemo(() => props.node.children.map((n) => n.id), undefined, { equals: sameKeys })\n return (\n <div ref={rootEl} {...props.rootProps} role=\"group\" data-orientation={orientation()} data-dragging={live() ? `` : undefined}>\n <For each={ids()}>\n {(id, index) => {\n const child = createMemo<UiNode>((prev) => byId().get(id) ?? prev!)\n const size = () => shown()[index()] ?? 0\n const panelId = () => `${props.domId}.panel.${index()}`\n const lim = () => limits()[index()] ?? {}\n const active = () => live() !== null && drag?.handle === index()\n return (\n <>\n <div {...part.at(`panel`, index())} id={panelId()} data-size={size()} style={{ flex: `${size()} 1 0px` }}>\n <NodeView node={child()} />\n </div>\n <Show when={index() < count() - 1}>\n <div\n {...part.at(`handle`, index(), active() && `pressed`)}\n role=\"separator\"\n tabindex={0}\n aria-orientation={orientation() === `horizontal` ? `vertical` : `horizontal`}\n aria-valuenow={Math.round(size())}\n aria-valuemin={typeof lim().min === `number` ? lim().min : undefined}\n aria-valuemax={typeof lim().max === `number` ? lim().max : undefined}\n aria-controls={panelId()}\n aria-label={ctx.t(`resize`)}\n onPointerDown={(e) => onPointerDown(index())(e)}\n onPointerMove={onPointerMove}\n onPointerUp={onPointerEnd}\n onPointerCancel={onPointerEnd}\n onKeyDown={(e) => onKey(index())(e)}\n >\n <span class=\"xui-resize-hit\" aria-hidden=\"true\" style={css(orientation() === `horizontal` ? { width: RESIZE_HANDLE_HIT } : { height: RESIZE_HANDLE_HIT })} />\n {bool(props.props.handle) ? <span {...part.at(`grip`, index())} aria-hidden=\"true\" /> : null}\n </div>\n </Show>\n </>\n )\n }}\n </For>\n </div>\n )\n}\n\nexport const NATIVES_RESIZABLE: Record<string, Component<NativeProps>> = {\n Resizable: ResizableNative,\n}\n","// FEED-128 (React's natives/select.tsx; contract §3 Select = the combobox;\n// a11y.json Select). A plain single Select is Radix's Select on React\n// (arrows, type-ahead, Home/End built in); here the same DOM and keyboard\n// model hand-rolled: the trigger (role=combobox, aria-controls the content\n// id, `data-state`, `data-placeholder`), inside a <form> Radix's hidden\n// native <select>, and when open the popper wrapper + the listbox content\n// whose items take focus (`data-highlighted`). `searchable` and/or\n// `multiple` is the COMBOBOX (Radix's Popover on React): a trigger opening a\n// listbox; with `searchable` the filter field keeps focus and drives the\n// active option through aria-activedescendant, typing fires `search\n// {query}` (150 ms debounce). Options come from the `options` prop\n// (bindable: the host refills the bound path on `search`, the async\n// source), or from the host's `optionSource(source, query)` when `source`\n// names a host list. Local filtering applies only to inline, unbound\n// options. `emptyText` (default `$string.noResults`) shows when nothing\n// matches.\n\nimport { For, Show, createEffect, createMemo, createSignal, createUniqueId, on, onCleanup, onMount, untrack, type Accessor, type JSX } from \"solid-js\"\nimport { OVERLAY_OFFSET, OVERLAY_PADDING } from \"@exponential-at/ui\"\nimport { boundPath } from \"@exponential-at/ui/web\"\nimport { useSurfaceContext } from \"../context\"\nimport { DEBOUNCE_MS } from \"../inputs\"\nimport { FieldErrors, createField, type FieldState } from \"../form\"\nimport { IconGlyph } from \"../icons\"\nimport type { NativeProps } from \"../node-view\"\nimport { createBoundState } from \"./bound\"\nimport { bool, BuiltinIcon, css, objects, parts, str, TextPart, type PartFn } from \"./shared\"\nimport { createListNavigation, dismissable, findNextItem, mountIn, NativeSelect, OPEN_KEYS, popperWrapper, radixTypeahead, SELECTION_KEYS } from \"../behaviors\"\n\nexport interface SelectOption {\n label: string\n value: string\n icon?: string\n disabled?: boolean\n}\n\nconst asList = (raw: unknown): string[] => (Array.isArray(raw) ? raw.map(String) : raw === undefined || raw === null || raw === `` ? [] : String(raw).split(`,`))\n\n// ---------------------------------------------------------------------------\n// Select\n// ---------------------------------------------------------------------------\n\ninterface SelectState {\n part: PartFn\n id: string\n listId: string\n multiple: () => boolean\n searchable: () => boolean\n placeholder: () => string\n options: () => SelectOption[]\n value: () => string | string[]\n commit: (next: string | string[]) => void\n open: () => boolean\n setOpen: (open: boolean) => void\n query: () => string\n setQuery: (q: string) => void\n disabled: () => boolean\n setTrigger: (el: HTMLButtonElement) => void\n trigger: () => HTMLButtonElement | undefined\n source: () => string\n localFilter: () => boolean\n field: FieldState\n}\n\nexport function SelectNative(props: NativeProps): JSX.Element {\n const part = parts(props)\n const ctx = useSurfaceContext()\n const id = createUniqueId()\n const listId = `${id}-list`\n const multiple = () => bool(props.props.multiple)\n const searchable = () => bool(props.props.searchable)\n const placeholder = () => str(props.props.placeholder) || ctx.t(`choose`)\n const raw = () => props.props.value\n const [value, setValue] = createBoundState<string | string[]>(() => props.node, () => props.scope, `value`, () => (multiple() ? asList(raw()) : str(raw())))\n const [trigger, setTrigger] = createSignal<HTMLButtonElement>()\n const f = createField({ node: () => props.node, domId: () => props.domId, props: () => props.props, value, focusEl: trigger })\n const disabled = () => bool(props.props.disabled) || Boolean(f.form?.disabled)\n const [open, setOpen] = createSignal(false)\n const [query, setQuery] = createSignal(``)\n const source = () => str(props.props.source)\n const optionsBound = () => boundPath(props.node.props, `options`, props.scope) !== undefined\n const [sourced, setSourced] = createSignal<SelectOption[] | null>(null)\n // Every optionSource request is numbered; a response that is not the\n // latest one is dropped (an older query resolving last must not win).\n let request = 0\n const askSource = (q: string) => {\n const src = untrack(source)\n const host = untrack(() => ctx.host)\n if (!src || !host.optionSource) return\n const mine = ++request\n const r = host.optionSource(src, q)\n const take = (list: SelectOption[] | null | undefined) => {\n if (mine === request) setSourced(objects<SelectOption>(list))\n }\n if (r && typeof (r as Promise<SelectOption[]>).then === `function`) void (r as Promise<SelectOption[]>).then(take, () => undefined)\n else take(r as SelectOption[])\n }\n onCleanup(() => request++)\n const inline = createMemo(() => objects<SelectOption>(props.props.options))\n const options = () => sourced() ?? inline()\n const commit = (next: string | string[]) => {\n const r = untrack(raw)\n const out = untrack(multiple) && !Array.isArray(r) && typeof r === `string` ? (next as string[]).join(`,`) : next\n setValue(next, out)\n f.change(out)\n f.touch()\n void props.emit(`change`, { value: out }, { value: out })\n }\n\n // `search {query}` debounced; a host source answers the same query.\n createEffect(\n on([query, open, searchable, source], ([q, o, s]) => {\n if (!s || !o) return\n const t = setTimeout(() => {\n void props.emit(`search`, { query: q })\n askSource(q)\n }, DEBOUNCE_MS)\n onCleanup(() => clearTimeout(t))\n })\n )\n createEffect(\n on([source, () => ctx.host, searchable], ([src, host, s]) => {\n if (!src || !host.optionSource || s) return\n askSource(``)\n })\n )\n\n const state: SelectState = { part, id, listId, multiple, searchable, placeholder, options, value, commit, open, setOpen, query, setQuery, disabled, setTrigger, trigger, source, localFilter: () => !optionsBound() && !source(), field: f }\n return (\n <div {...props.rootProps} data-source={source() || undefined}>\n <TextPart part={part(`label`)} text={props.props.label} as=\"label\" htmlFor={id} />\n <Show when={!multiple() && !searchable()} fallback={<Combobox s={state} emptyText={str(props.props.emptyText)} />}>\n <PlainSelect s={state} name={str(props.props.name, props.node.id)} emptyText={str(props.props.emptyText)} />\n </Show>\n <FieldErrors part={part} field={f} />\n </div>\n )\n}\n\nfunction PlainSelect(props: { s: SelectState; name: string; emptyText: string }): JSX.Element {\n const ctx = useSurfaceContext()\n const s = props.s\n const part = s.part\n const contentId = createUniqueId()\n const current = () => (s.value() as string) || undefined\n const chosen = () => s.options().find((o) => o.value === s.value())\n const enabled = () => s.options().filter((o) => !bool(o.disabled))\n const [inForm, setInForm] = createSignal(false)\n onMount(() => setInForm(Boolean(s.trigger()?.closest(`form`))))\n let pointerType = `touch`\n let downAt: { x: number; y: number } | null = null\n const typeahead = radixTypeahead((search) => {\n const items = enabled()\n const next = findNextItem(items.map((o) => ({ label: str(o.label), o })), search, items.map((o) => ({ label: str(o.label), o })).find((i) => i.o.value === current()))\n if (next) s.commit(next.o.value)\n })\n const openUp = (e?: PointerEvent | MouseEvent) => {\n if (!s.disabled()) {\n s.setOpen(true)\n typeahead.reset()\n }\n if (e) downAt = { x: Math.round(e.pageX), y: Math.round(e.pageY) }\n }\n // Radix keys the native select by its option values (a new option list\n // remounts it).\n const optionKey = createMemo(() => s.options().map((o) => o.value).join(`;`))\n return (\n <>\n <button\n type=\"button\"\n role=\"combobox\"\n aria-controls={contentId}\n aria-expanded={s.open()}\n aria-autocomplete=\"none\"\n dir={ctx.direction}\n data-state={s.open() ? `open` : `closed`}\n disabled={s.disabled()}\n data-disabled={s.disabled() ? `` : undefined}\n data-placeholder={current() === undefined ? `` : undefined}\n ref={s.setTrigger}\n id={s.id}\n {...part(`trigger`, s.open() && `open`, s.disabled() && `disabled`, s.field.invalid && `invalid`)}\n aria-invalid={s.field.invalid || undefined}\n aria-describedby={s.field.describedBy}\n onClick={(e) => {\n e.currentTarget.focus()\n if (pointerType !== `mouse`) openUp(e)\n }}\n onPointerDown={(e) => {\n pointerType = e.pointerType\n const target = e.target as HTMLElement\n if (target.hasPointerCapture?.(e.pointerId)) target.releasePointerCapture(e.pointerId)\n if (e.button === 0 && e.ctrlKey === false && e.pointerType === `mouse`) {\n openUp(e)\n e.preventDefault()\n }\n }}\n onKeyDown={(e) => {\n const typing = typeahead.search !== ``\n const modifier = e.ctrlKey || e.altKey || e.metaKey\n if (!modifier && e.key.length === 1) typeahead.type(e.key)\n if (typing && e.key === ` `) return\n if (OPEN_KEYS.includes(e.key)) {\n openUp()\n e.preventDefault()\n }\n }}\n >\n <span>\n {chosen() ? <span style={css({ pointerEvents: `none` })}>{str(chosen()!.label)}</span> : <span {...part(`placeholder`)}>{s.placeholder()}</span>}\n </span>\n <BuiltinIcon slot=\"Select.trigger\" />\n </button>\n <Show when={inForm() ? `${optionKey()}#` : false} keyed>\n {(_key) => <NativeSelect name={props.name} value={current()} disabled={s.disabled()} options={s.options()} onChange={(v) => s.commit(v)} />}\n </Show>\n <Show when={s.open()}>\n <PlainSelectContent s={s} contentId={contentId} current={current} emptyText={props.emptyText} downAt={() => downAt} clearDownAt={() => (downAt = null)} />\n </Show>\n </>\n )\n}\n\nfunction PlainSelectContent(props: { s: SelectState; contentId: string; current: () => string | undefined; emptyText: string; downAt: () => { x: number; y: number } | null; clearDownAt: () => void }): JSX.Element {\n const ctx = useSurfaceContext()\n const s = props.s\n const part = s.part\n let content: HTMLElement | undefined\n let viewport: HTMLDivElement | undefined\n const items: HTMLElement[] = []\n const [focused, setFocused] = createSignal(-1)\n const close = () => s.setOpen(false)\n const pick = (o: SelectOption) => {\n if (bool(o.disabled)) return\n // VAPP-146: \"\" is an ordinary value: compare with the value itself, not `current()` (undefined for \"\").\n if (o.value !== (s.value() as string)) s.commit(o.value)\n close()\n }\n const enabledNodes = () => items.filter((el, i) => el && !bool(s.options()[i]?.disabled))\n const focusFirstOf = (candidates: (HTMLElement | undefined)[]) => {\n const [first, ...rest] = items\n const [last] = rest.slice(-1)\n const previous = document.activeElement\n for (const c of candidates) {\n if (!c) continue\n if (c === previous) return\n c.scrollIntoView?.({ block: `nearest` })\n if (c === first && viewport) viewport.scrollTop = 0\n if (c === last && viewport) viewport.scrollTop = viewport.scrollHeight\n c.focus()\n if (document.activeElement !== previous) return\n }\n }\n const selectedNode = () => {\n const opts = s.options()\n const i = opts.findIndex((o) => props.current() !== undefined && o.value === props.current())\n return items[i >= 0 ? i : opts.findIndex((o) => !bool(o.disabled))]\n }\n const typeahead = radixTypeahead((search) => {\n const opts = s.options()\n const list = enabledNodes().map((el) => ({ el, label: str(opts[items.indexOf(el)]?.label) }))\n const next = findNextItem(list, search, list.find((i) => i.el === document.activeElement))\n if (next) setTimeout(() => next.el.focus())\n })\n const onWindowClose = () => close()\n onMount(() => {\n window.addEventListener(`blur`, onWindowClose)\n window.addEventListener(`resize`, onWindowClose)\n // A pointerdown on the trigger opened it: a pointerup within 10 px is\n // not a pick.\n if (props.downAt() !== null) {\n let delta = { x: 0, y: 0 }\n const move = (e: PointerEvent) => {\n const at = props.downAt()\n delta = { x: Math.abs(Math.round(e.pageX) - (at?.x ?? 0)), y: Math.abs(Math.round(e.pageY) - (at?.y ?? 0)) }\n }\n const up = (e: PointerEvent) => {\n if (delta.x <= 10 && delta.y <= 10) e.preventDefault()\n else if (!content?.contains(e.target as Node)) close()\n document.removeEventListener(`pointermove`, move)\n props.clearDownAt()\n }\n document.addEventListener(`pointermove`, move)\n document.addEventListener(`pointerup`, up, { capture: true, once: true })\n onCleanup(() => {\n document.removeEventListener(`pointermove`, move)\n document.removeEventListener(`pointerup`, up, { capture: true })\n })\n }\n })\n onCleanup(() => {\n window.removeEventListener(`blur`, onWindowClose)\n window.removeEventListener(`resize`, onWindowClose)\n // Radix's FocusScope restores focus a task later (so the Enter that\n // picked never lands on the trigger as a click).\n const trigger = s.trigger()\n setTimeout(() => trigger?.focus({ preventScroll: true }))\n })\n dismissable({ layer: () => content, onDismiss: close, keepOnFocusOutside: true })\n const wrapper = popperWrapper({\n anchor: s.trigger,\n sideOffset: OVERLAY_OFFSET,\n align: `start`,\n collisionPadding: OVERLAY_PADDING,\n onPlaced: () => focusFirstOf([selectedNode(), content]),\n content: (placed, ref) => (\n <div\n data-side={placed().side}\n data-align={placed().align}\n role=\"listbox\"\n id={props.contentId}\n data-state=\"open\"\n dir={ctx.direction}\n tabindex={-1}\n {...part(`content`, `open`)}\n data-xui-overlay=\"Select\"\n ref={(el) => {\n content = el\n ref(el)\n }}\n style={css({\n boxSizing: `border-box`,\n pointerEvents: `auto`,\n display: `flex`,\n flexDirection: `column`,\n outline: `none`,\n minWidth: `var(--radix-select-trigger-width)`,\n \"--radix-select-content-transform-origin\": `var(--radix-popper-transform-origin)`,\n \"--radix-select-content-available-width\": `var(--radix-popper-available-width)`,\n \"--radix-select-content-available-height\": `var(--radix-popper-available-height)`,\n \"--radix-select-trigger-width\": `var(--radix-popper-anchor-width)`,\n \"--radix-select-trigger-height\": `var(--radix-popper-anchor-height)`,\n animation: placed().positioned ? undefined : `none`,\n })}\n onContextMenu={(e) => e.preventDefault()}\n onKeyDown={(e) => {\n const modifier = e.ctrlKey || e.altKey || e.metaKey\n if (e.key === `Tab`) e.preventDefault()\n if (!modifier && e.key.length === 1) typeahead.type(e.key)\n if ([`ArrowUp`, `ArrowDown`, `Home`, `End`].includes(e.key)) {\n let candidates = enabledNodes()\n if ([`ArrowUp`, `End`].includes(e.key)) candidates = candidates.slice().reverse()\n if ([`ArrowUp`, `ArrowDown`].includes(e.key)) candidates = candidates.slice(candidates.indexOf(e.target as HTMLElement) + 1)\n setTimeout(() => focusFirstOf(candidates))\n e.preventDefault()\n }\n }}\n >\n <style>{`[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}`}</style>\n <div ref={viewport} data-radix-select-viewport=\"\" role=\"presentation\" style={css({ position: `relative`, flex: 1, overflow: `hidden auto` })}>\n {s.options().length === 0 ? <div {...part(`empty`)}>{props.emptyText || ctx.t(`noResults`)}</div> : null}\n <For each={s.options()}>\n {(o, i) => {\n const textId = createUniqueId()\n const selected = () => o.value === props.current()\n const isFocused = () => focused() === i()\n const off = () => bool(o.disabled)\n let pointer = `touch`\n return (\n <div\n role=\"option\"\n aria-labelledby={textId}\n data-highlighted={isFocused() ? `` : undefined}\n aria-selected={selected() && isFocused()}\n data-state={selected() ? `checked` : `unchecked`}\n aria-disabled={off() || undefined}\n data-disabled={off() ? `` : undefined}\n tabindex={off() ? undefined : -1}\n {...part(`item`, o.value === s.value() && `selected`, off() && `disabled`)}\n ref={(el) => (items[i()] = el)}\n onFocus={() => setFocused(i())}\n onBlur={() => setFocused((f) => (f === i() ? -1 : f))}\n onClick={() => {\n if (pointer !== `mouse`) pick(o)\n }}\n onPointerUp={(e) => {\n if (!e.defaultPrevented && pointer === `mouse`) pick(o)\n }}\n onPointerDown={(e) => (pointer = e.pointerType)}\n onPointerMove={(e) => {\n pointer = e.pointerType\n if (off()) content?.focus()\n else if (pointer === `mouse`) e.currentTarget.focus({ preventScroll: true })\n }}\n onPointerLeave={(e) => {\n if (e.currentTarget === document.activeElement) content?.focus()\n }}\n onKeyDown={(e) => {\n if (typeahead.search !== `` && e.key === ` `) return\n if (SELECTION_KEYS.includes(e.key)) pick(o)\n if (e.key === ` `) e.preventDefault()\n }}\n >\n {o.icon ? <IconGlyph icons={ctx.host.icons} name={o.icon} /> : null}\n <span id={textId}>{str(o.label)}</span>\n <Show when={selected()}>\n <span aria-hidden=\"true\" {...part(`check`)} class={`${part(`check`).class as string} xui-Select-check`}>\n <BuiltinIcon slot=\"Select.check\" size={16} />\n </span>\n </Show>\n </div>\n )\n }}\n </For>\n </div>\n </div>\n ),\n })\n mountIn(ctx.portal ?? document.body, wrapper)\n return null\n}\n\nfunction Combobox(props: { s: SelectState; emptyText: string }): JSX.Element {\n const s = props.s\n const part = s.part\n const contentId = createUniqueId()\n const selected = () => {\n const v = s.value()\n return s.multiple() ? (v as string[]) : v ? [v as string] : []\n }\n const chosen = () => s.options().filter((o) => selected().includes(o.value))\n const shown = createMemo(() => {\n const q = s.query()\n return q && s.localFilter() ? s.options().filter((o) => str(o.label).toLowerCase().includes(q.toLowerCase())) : s.options()\n })\n let listEl: HTMLDivElement | undefined\n const pick = (i: number) => {\n const o = shown()[i]\n if (!o || bool(o.disabled)) return\n if (s.multiple()) {\n const sel = selected()\n s.commit(sel.includes(o.value) ? sel.filter((v) => v !== o.value) : [...sel, o.value])\n } else {\n s.commit(o.value)\n s.setOpen(false)\n }\n }\n const nav = createListNavigation({ count: () => shown().length, isDisabled: (i) => bool(shown()[i]?.disabled), labelOf: (i) => str(shown()[i]?.label), onPick: pick, typeahead: () => !s.searchable() })\n createEffect(\n on(\n s.open,\n (o) => {\n if (o) {\n const i = shown().findIndex((x) => selected().includes(x.value))\n nav.setActive(i >= 0 ? i : shown().findIndex((x) => !bool(x.disabled)))\n } else s.setQuery(``)\n }\n )\n )\n createEffect(\n on(\n s.query,\n () => {\n if (!untrack(s.searchable) || !untrack(s.open)) return\n nav.setActive(untrack(shown).findIndex((x) => !bool(x.disabled)))\n },\n { defer: true }\n )\n )\n const optionId = (i: number) => `${s.listId}-${i}`\n const activeId = () => (nav.active() >= 0 && nav.active() < shown().length ? optionId(nav.active()) : undefined)\n createEffect(() => {\n const a = activeId()\n if (a) listEl?.querySelector(`[id=\"${a}\"]`)?.scrollIntoView?.({ block: `nearest` })\n })\n return (\n <>\n <button\n type=\"button\"\n aria-haspopup=\"listbox\"\n aria-expanded={s.open()}\n aria-controls={s.open() ? s.listId : undefined}\n data-state={s.open() ? `open` : `closed`}\n ref={s.setTrigger}\n id={s.id}\n {...part(`trigger`, s.open() && `open`, s.disabled() && `disabled`, s.field.invalid && `invalid`)}\n disabled={s.disabled()}\n role=\"combobox\"\n aria-invalid={s.field.invalid || undefined}\n aria-describedby={s.field.describedBy}\n onKeyDown={(e) => {\n if (!s.open() && (e.key === `ArrowDown` || e.key === `ArrowUp`)) {\n e.preventDefault()\n s.setOpen(true)\n }\n }}\n onClick={() => s.setOpen(!s.open())}\n >\n <span>{chosen().length ? chosen().map((o) => str(o.label)).join(`, `) : <span {...part(`placeholder`)}>{s.placeholder()}</span>}</span>\n <BuiltinIcon slot=\"Select.trigger\" />\n </button>\n <Show when={s.open()}>\n <ComboboxContent s={s} contentId={contentId} shown={shown} selected={selected} nav={nav} pick={pick} optionId={optionId} activeId={activeId} emptyText={props.emptyText} listRef={(el) => (listEl = el)} />\n </Show>\n </>\n )\n}\n\nfunction ComboboxContent(props: {\n s: SelectState\n contentId: string\n shown: Accessor<SelectOption[]>\n selected: Accessor<string[]>\n nav: ReturnType<typeof createListNavigation>\n pick: (i: number) => void\n optionId: (i: number) => string\n activeId: Accessor<string | undefined>\n emptyText: string\n listRef: (el: HTMLDivElement) => void\n}): JSX.Element {\n const ctx = useSurfaceContext()\n const s = props.s\n const part = s.part\n let content: HTMLElement | undefined\n let listEl: HTMLDivElement | undefined\n let interactedOutside = false\n const close = () => s.setOpen(false)\n dismissable({ layer: () => content, onDismiss: close, isInside: (t) => Boolean(s.trigger()?.contains(t)), onOutside: () => (interactedOutside = true) })\n // FocusScope: mount auto-focus (the search field, else the listbox as\n // React's onOpenAutoFocus asks), unmount back to the trigger unless the\n // person interacted outside.\n onCleanup(() => {\n const trigger = s.trigger()\n if (!interactedOutside) setTimeout(() => trigger?.focus())\n })\n const wrapper = popperWrapper({\n anchor: s.trigger,\n sideOffset: OVERLAY_OFFSET,\n align: `start`,\n collisionPadding: OVERLAY_PADDING,\n dir: () => undefined,\n content: (placed, ref) => (\n <div\n data-side={placed().side}\n data-align={placed().align}\n data-state=\"open\"\n role=\"dialog\"\n id={props.contentId}\n {...part(`content`, `open`)}\n dir={ctx.direction}\n data-xui-overlay=\"Select\"\n tabindex={-1}\n ref={(el) => {\n content = el\n ref(el)\n }}\n style={css({\n minWidth: `var(--radix-popover-trigger-width)`,\n animation: placed().positioned ? undefined : `none`,\n \"--radix-popover-content-transform-origin\": `var(--radix-popper-transform-origin)`,\n \"--radix-popover-content-available-width\": `var(--radix-popper-available-width)`,\n \"--radix-popover-content-available-height\": `var(--radix-popper-available-height)`,\n \"--radix-popover-trigger-width\": `var(--radix-popper-anchor-width)`,\n \"--radix-popover-trigger-height\": `var(--radix-popper-anchor-height)`,\n })}\n >\n {s.searchable() ? (\n <div class=\"xui-Select-searchbox\">\n <BuiltinIcon slot=\"Select.search\" size={16} />\n <input\n {...part(`search`)}\n class={`${part(`search`).class as string} xui-Select-search`}\n role=\"combobox\"\n aria-expanded={true}\n aria-controls={s.listId}\n aria-activedescendant={props.activeId()}\n aria-autocomplete=\"list\"\n placeholder={ctx.t(`search`)}\n aria-label={ctx.t(`search`)}\n value={s.query()}\n prop:defaultValue={s.query()}\n onInput={(e) => s.setQuery(e.currentTarget.value)}\n onKeyDown={props.nav.onKeyDown}\n />\n </div>\n ) : null}\n <div\n ref={(el) => {\n listEl = el\n props.listRef(el)\n }}\n id={s.listId}\n role=\"listbox\"\n tabindex={s.searchable() ? -1 : 0}\n aria-multiselectable={s.multiple() || undefined}\n aria-activedescendant={s.searchable() ? undefined : props.activeId()}\n aria-labelledby={s.id}\n class=\"xui-Select-listbox\"\n onKeyDown={(e) => {\n if (!s.searchable()) props.nav.onKeyDown(e)\n }}\n >\n {props.shown().length === 0 ? <div {...part(`empty`)}>{props.emptyText || ctx.t(`noResults`)}</div> : null}\n <For each={props.shown()}>\n {(o, i) => {\n const isSel = () => props.selected().includes(o.value)\n const isActive = () => i() === props.nav.active()\n return (\n <div\n id={props.optionId(i())}\n role=\"option\"\n aria-selected={isSel()}\n aria-disabled={bool(o.disabled) || undefined}\n data-active={isActive() ? `` : undefined}\n {...part(`item`, (isSel() || isActive()) && `selected`, bool(o.disabled) && `disabled`, isActive() && `hover`)}\n onPointerMove={() => props.nav.setActive(i())}\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => props.pick(i())}\n >\n {o.icon ? <IconGlyph icons={ctx.host.icons} name={o.icon} /> : null}\n <span>{str(o.label)}</span>\n {isSel() ? (\n <span {...part(`check`)} class={`${part(`check`).class as string} xui-Select-check`}>\n <BuiltinIcon slot=\"Select.check\" size={16} />\n </span>\n ) : null}\n </div>\n )\n }}\n </For>\n </div>\n </div>\n ),\n })\n mountIn(ctx.portal ?? document.body, wrapper)\n onMount(() => {\n if (s.searchable()) content?.querySelector<HTMLInputElement>(`input`)?.focus()\n else listEl?.focus()\n })\n return null\n}\n\nexport const NATIVES_SELECT: Record<string, (props: NativeProps) => JSX.Element> = { Select: SelectNative }\n","// FEED-128 (React's natives/table.tsx; round 1 contract §3 Table, a11y.json\n// Table): the data TABLE as a native. Object columns (`{key, label, type,\n// slot, width, align, sortable}`) and rows; cells by type (text, a LOCALE\n// number, a locale date, a tick, the value in a Badge look, or the Table\n// slot named by `slot` rendered once per row with the ROW as its data\n// scope). Sorting: a sortable header cycles asc → desc; a BOUND `sort` is\n// the host's (it orders `rows`), an unbound one sorts a local copy\n// (`sortRows`). Selection: `single` = a row press selects, `multiple` = a\n// checkbox column with a select-all header (Radix's Checkbox DOM, painted\n// by hand: `button[role=checkbox]` + the `data-state` indicator); a bound\n// `selected` is written. Past `WINDOW_THRESHOLD` (50) rows the body windows\n// (`WindowedList`). Keyboard: ONE roving tab stop on the rows; ArrowUp/Down,\n// Home/End move it BY INDEX, Enter presses, Space selects.\n\nimport { For, Index, Show, createEffect, createMemo, createSignal, onCleanup, onMount, untrack, type Accessor, type Component, type JSX } from \"solid-js\"\nimport { displayString, tableRowKeys, WINDOW_THRESHOLD, type UiNode } from \"@exponential-at/ui\"\nimport { boundPath, getPointer, LITERAL_ROWS_ROOT, partClass, setPointer, sortRows, type TableColumn, type TableSort as Sort } from \"@exponential-at/ui/web\"\nimport { InstanceContext, ScopeContext, SurfaceContext, deriveContext, useInstance, useSurfaceContext } from \"../context\"\nimport { bindAttrs } from \"../bind-attrs\"\nimport { WindowedList, type WindowedListHandle } from \"../list\"\nimport { NodeView, type NativeProps } from \"../node-view\"\nimport { css } from \"../style\"\nimport { createBoundState } from \"./bound\"\nimport { arr, bool, BuiltinIcon, num, objects, parts, phrase, str, type Attrs } from \"./shared\"\n\nexport { sortRows }\nexport type { TableColumn }\n\nconst CURRENCY_CODE = /^[A-Za-z]{3}$/\n\n/** A cell value as a number (a number, or a numeric string); NaN otherwise. */\nconst cellNumber = (v: unknown): number => (typeof v === `number` ? v : typeof v === `string` && v.trim() !== `` ? Number(v) : NaN)\n\ntype Checked = boolean | `indeterminate`\nconst checkState = (c: Checked) => (c === `indeterminate` ? `indeterminate` : c ? `checked` : `unchecked`)\n\n/** Radix's `Checkbox.Root` + `Checkbox.Indicator` DOM: a `button` with\n * `role=checkbox`, `aria-checked` (`mixed` when indeterminate),\n * `data-state`, `value=\"on\"`; the indicator span (`pointer-events: none`)\n * only while checked or indeterminate; the hidden bubble input only inside\n * a `<form>` (Radix's `isFormControl`). */\nfunction TableCheckbox(props: { attrs: Attrs; class: string; checked: Checked; label: string; stop?: boolean; onChange: (next: boolean) => void }): JSX.Element {\n let button: HTMLButtonElement | undefined\n // Radix renders the bubble input until the control is known, then only\n // inside a form.\n const [inForm, setInForm] = createSignal(true)\n const [size, setSize] = createSignal<{ width: number; height: number } | undefined>(undefined)\n const initial = untrack(() => props.checked === true)\n onMount(() => {\n setInForm(Boolean(button?.closest(`form`)))\n if (button) setSize({ width: button.offsetWidth, height: button.offsetHeight })\n })\n const state = () => checkState(props.checked)\n return (\n <>\n <button\n ref={button}\n {...props.attrs}\n class={props.class}\n type=\"button\"\n role=\"checkbox\"\n aria-checked={props.checked === `indeterminate` ? `mixed` : props.checked}\n data-state={state()}\n value=\"on\"\n aria-label={props.label}\n onKeyDown={(e) => {\n if (e.key === `Enter`) e.preventDefault()\n }}\n onClick={(e) => {\n if (props.stop) e.stopPropagation()\n const c = props.checked\n props.onChange(c === `indeterminate` ? true : !c)\n if (inForm() && !props.stop) e.stopPropagation()\n }}\n >\n <Show when={props.checked !== false}>\n <span data-state={state()} class=\"xui-Checkbox-check\" style={css({ pointerEvents: `none` })}>\n <BuiltinIcon slot=\"Checkbox.check\" />\n </span>\n </Show>\n </button>\n <Show when={inForm()}>\n <input\n type=\"checkbox\"\n aria-hidden=\"true\"\n attr:checked={initial ? `` : undefined}\n value=\"on\"\n tabindex=\"-1\"\n style={css({ ...(size() ?? {}), position: `absolute`, pointerEvents: `none`, opacity: 0, margin: 0, transform: `translateX(-100%)` })}\n />\n </Show>\n </>\n )\n}\n\nexport function TableNative(props: NativeProps): JSX.Element {\n const ctx = useSurfaceContext()\n const part = parts(props)\n const columns = createMemo(() => objects<TableColumn>(props.props.columns))\n const rows = createMemo(() => objects<Record<string, unknown>>(props.props.rows))\n const rowKey = () => str(props.props.rowKey, `id`)\n const selectable = () => str(props.props.selectable, `none`)\n const striped = () => bool(props.props.striped)\n const rowsPath = createMemo(() => boundPath(props.node.props, `rows`, props.scope))\n const sortBound = createMemo(() => boundPath(props.node.props, `sort`, props.scope) !== undefined)\n const [sort, setSort] = createBoundState<Sort | null>(\n () => props.node,\n () => props.scope,\n `sort`,\n () => {\n const raw = props.props.sort as Sort | undefined\n return raw && raw.key ? { key: raw.key, direction: raw.direction === `desc` ? `desc` : `asc` } : null\n }\n )\n const [selected, setSelected] = createBoundState<string[]>(\n () => props.node,\n () => props.scope,\n `selected`,\n () => arr<unknown>(props.props.selected).map(String)\n )\n // Round 2 §4: the row keys (`rowKey` field; missing, empty or duplicate →\n // `#<index>`), the instance suffix of every row part and slot cell.\n const rowKeys = createMemo(() => tableRowKeys(rows(), rowKey()))\n const keyOf = (i: number) => rowKeys()[i] ?? String(i)\n const order = createMemo(() => {\n const s = sort()\n return sortBound() ? rows().map((_, i) => i) : sortRows(rows(), s, columns().find((c) => c.key === s?.key), ctx.locale)\n })\n // The checkbox column is as wide as the checkbox (round 2 §7).\n const template = createMemo(() => [selectable() === `multiple` ? `var(--xui-control-checkbox, 16px)` : null, ...columns().map((c) => (c.width ? `${c.width}px` : `minmax(0, 1fr)`))].filter(Boolean).join(` `))\n const cycle = (c: TableColumn) => {\n const cur = untrack(sort)\n const next: Sort = cur?.key === c.key && cur.direction === `asc` ? { key: c.key, direction: `desc` } : { key: c.key, direction: `asc` }\n setSort(next)\n void props.emit(`sort`, { sort: next }, { sort: next })\n }\n const select = (next: string[]) => {\n setSelected(next)\n void props.emit(`select`, { selected: next }, { selected: next })\n }\n const allKeys = createMemo(() => rows().map((_, i) => keyOf(i)))\n const allSelected = createMemo(() => allKeys().length > 0 && allKeys().every((k) => selected().includes(k)))\n const someSelected = createMemo(() => !allSelected() && allKeys().some((k) => selected().includes(k)))\n const interactive = () => selectable() !== `none` || Boolean(props.node.on?.rowPress)\n const windowed = () => rows().length > WINDOW_THRESHOLD\n\n // The roving tab stop (by row KEY, so a re-sort keeps it on its row).\n const [focusKey, setFocusKey] = createSignal<string | null>(null)\n const orderKeys = createMemo(() => order().map((i) => keyOf(i)), undefined, { equals: (a, b) => a.length === b.length && a.every((k, i) => k === b[i]) })\n const stopKey = createMemo(() => {\n const f = focusKey()\n const keys = orderKeys()\n return f !== null && keys.includes(f) ? f : (keys.find((k) => selected().includes(k)) ?? keys[0] ?? null)\n })\n let bodyEl: HTMLDivElement | undefined\n let windowHandle: WindowedListHandle | undefined\n let pendingFocus: string | null = null\n // OWN rows only (flat: the body's children; windowed: the window's\n // items'): a nested Table in a slot cell has rows of its own.\n const focusRow = (key: string) => {\n const k = `[role=\"row\"][data-key=\"${typeof CSS !== `undefined` && CSS.escape ? CSS.escape(key) : key.replace(/\"/g, `\\\\\"`)}\"]`\n return bodyEl?.querySelector<HTMLElement>(`:scope > ${k}, :scope > .xui-list-window > .xui-list-item > ${k}`) ?? null\n }\n const moveTo = (pos: number) => {\n const keys = untrack(orderKeys)\n if (keys.length === 0) return\n const clamped = Math.max(0, Math.min(keys.length - 1, pos))\n const key = keys[clamped]\n setFocusKey(key)\n const el = focusRow(key)\n if (el) el.focus()\n else {\n // Windowed and not mounted yet: bring it into the window; the row\n // focuses itself when it mounts.\n pendingFocus = key\n windowHandle?.scrollToIndex(clamped)\n }\n }\n // The `scrollToIndex` host command (round 2 §5): the DATA index (before a\n // local sort) → its position in the shown order.\n createEffect(() => {\n const id = props.domId\n onCleanup(\n ctx.registerScroller(id, (index, align) => {\n const pos = untrack(order).indexOf(index)\n if (pos < 0) return\n if (untrack(windowed)) windowHandle?.scrollToIndex(pos, align)\n else focusRow(untrack(() => keyOf(index)))?.scrollIntoView({ block: align === `center` || align === `start` || align === `end` ? align : `nearest` })\n })\n )\n })\n // Literal (unbound) rows: a slot cell's edits live HERE, per row key,\n // never in the surface data model (there is no path to write them to).\n const [literalEdits, setLiteralEdits] = createSignal<Record<string, Record<string, unknown>>>({})\n const editLiteral = (key: string, base: Record<string, unknown>, pointer: string, value: unknown) => {\n setLiteralEdits((cur) => ({ ...cur, [key]: setPointer(cur[key] ?? base, pointer, value) as Record<string, unknown> }))\n }\n\n /** A formatted (non-slot) cell's content. */\n const formatted = (c: TableColumn, row: Record<string, unknown>): JSX.Element => {\n const v = row?.[c.key]\n const missing = v === undefined || v === null || v === ``\n const decimals = c.decimals === undefined ? undefined : num(c.decimals)\n const n = cellNumber(v)\n const text = (s: string) => (s === `` ? null : s)\n switch (c.type) {\n case `number`:\n return text(Number.isFinite(n) ? ctx.formatter.number(n, { decimals }) : ``)\n case `currency`: {\n const code = c.currency === undefined ? `USD` : c.currency\n return text(Number.isFinite(n) && typeof code === `string` && CURRENCY_CODE.test(code) ? ctx.formatter.currency(n, code, { decimals }) : ``)\n }\n case `percent`:\n return text(Number.isFinite(n) ? ctx.formatter.percent(n, { decimals }) : ``)\n case `date`:\n return text(missing ? `` : ctx.formatter.date(v))\n case `relativeTime`:\n return text(missing ? `` : ctx.formatter.relativeTime(v, ctx.now()))\n case `boolean`:\n return v ? <BuiltinIcon slot=\"Checkbox.check\" size={16} /> : <span class=\"xui-sr-only\">—</span>\n case `badge`:\n return missing ? null : (\n <span class={`${ctx.compiled.scope} ${partClass(`Badge`, `root`)} xui-table-badge`} data-xui-part=\"Badge/root\" data-m-variant=\"secondary\">\n <span class={`${ctx.compiled.scope} ${partClass(`Badge`, `label`)}`} data-xui-part=\"Badge/label\" data-m-variant=\"secondary\">\n {String(v)}\n </span>\n </span>\n )\n default:\n return text(displayString(v))\n }\n }\n\n /** One body row at shown position `pos` (keyed by its row key). */\n const Row = (rp: { rowKey: string; pos: Accessor<number> }): JSX.Element => {\n const key = rp.rowKey\n const index = createMemo<number>((prev) => order()[rp.pos()] ?? prev!)\n const row = () => rows()[index()]\n const isSel = () => selected().includes(key)\n const odd = () => rp.pos() % 2 === 1\n const press = () => {\n const sel = untrack(isSel)\n if (untrack(selectable) === `single`) select(sel ? [] : [key])\n if (props.node.on?.rowPress) void props.emit(`rowPress`, { key, row: untrack(row) })\n }\n return (\n <div\n role=\"row\"\n aria-rowindex={rp.pos() + 2}\n aria-selected={selectable() !== `none` ? isSel() : undefined}\n tabindex={interactive() ? (key === stopKey() ? 0 : -1) : undefined}\n data-key={key}\n onFocus={(e) => {\n if (interactive() && e.target === e.currentTarget && key !== focusKey()) setFocusKey(key)\n }}\n ref={(el: HTMLDivElement) => {\n bindAttrs(el, () => part.atWith(`row`, key, { striped: striped() && odd() }, isSel() && `selected`))\n // A row the keyboard moved to before it was mounted (a windowed\n // body): focus it the moment it mounts.\n if (untrack(interactive) && pendingFocus === key) {\n pendingFocus = null\n queueMicrotask(() => el.focus())\n }\n }}\n style={css({ gridTemplateColumns: template() })}\n onClick={() => {\n if ((interactive() && selectable() !== `multiple`) || props.node.on?.rowPress) press()\n }}\n onKeyDown={(e: KeyboardEvent) => {\n if (e.target !== e.currentTarget) return\n if (e.key === `Enter` || (e.key === ` ` && selectable() === `single`)) {\n e.preventDefault()\n press()\n } else if (e.key === `ArrowDown` || e.key === `ArrowUp`) {\n e.preventDefault()\n // From the row the keyboard is GOING to (a pending, not yet\n // mounted one) so fast presses are never lost.\n const keys = untrack(orderKeys)\n const pending = pendingFocus === null ? -1 : keys.indexOf(pendingFocus)\n moveTo((pending >= 0 ? pending : untrack(rp.pos)) + (e.key === `ArrowDown` ? 1 : -1))\n } else if (e.key === `Home` || e.key === `End`) {\n e.preventDefault()\n moveTo(e.key === `Home` ? 0 : untrack(orderKeys).length - 1)\n }\n }}\n >\n <Show when={selectable() === `multiple`}>\n <div role=\"gridcell\" class=\"xui-table-check\">\n <TableCheckbox\n attrs={part.at(`checkbox`, key, isSel() && `checked`)}\n class={`${part(`checkbox`).class as string} xui-Checkbox-box`}\n checked={isSel()}\n label={ctx.t(`selectRow`)}\n stop\n onChange={(next) => {\n const cur = untrack(selected)\n select(next ? [...cur, key] : cur.filter((k) => k !== key))\n }}\n />\n </div>\n </Show>\n <Index each={columns()}>\n {(c, ci) => {\n const kind = createMemo(() => c().type)\n return (\n <div ref={(el) => bindAttrs(el, () => part.atWith(`cell`, `${key}.${ci}`, { align: c().align ?? `start` }))} role={interactive() ? `gridcell` : `cell`} data-type={c().type ?? `text`}>\n {(() => {\n if (kind() !== `slot`) return formatted(c(), row())\n return untrack(() => {\n const slot = createMemo(() => (c().slot ? props.node.slots?.[c().slot as string] : undefined))\n return (\n <Show when={slot()}>\n <RowScope rowsPath={rowsPath()} row={rowsPath() ? row() : (literalEdits()[key] ?? row())} rowKey={key} index={index()} tableId={props.domId} node={slot()!} onLiteralEdit={editLiteral} />\n </Show>\n )\n })\n })()}\n </div>\n )\n }}\n </Index>\n </div>\n )\n }\n\n const caption = () => str(props.props.caption)\n return (\n <div\n {...props.rootProps}\n role={interactive() ? `grid` : `table`}\n aria-rowcount={rows().length + 1}\n aria-multiselectable={selectable() === `multiple` || undefined}\n aria-describedby={caption() ? `${props.domId}.caption` : undefined}\n aria-label={caption() ? undefined : ((props.rootProps[`aria-label`] as string | undefined) ?? ctx.t(`table`))}\n data-windowed={windowed() ? `true` : undefined}\n >\n <div role=\"rowgroup\" {...part(`header`)} data-sticky={bool(props.props.stickyHeader) ? `true` : undefined}>\n <div role=\"row\" aria-rowindex={1} class=\"xui-table-row\" style={css({ gridTemplateColumns: template() })}>\n <Show when={selectable() === `multiple`}>\n <div role=\"columnheader\" class=\"xui-table-check\">\n <TableCheckbox\n attrs={part.at(`checkbox`, `header`, allSelected() && `checked`)}\n class={`${part(`checkbox`).class as string} xui-Checkbox-box`}\n checked={allSelected() ? true : someSelected() ? `indeterminate` : false}\n label={ctx.t(`selectAll`)}\n onChange={(next) => select(next ? untrack(allKeys) : [])}\n />\n </div>\n </Show>\n <Index each={columns()}>\n {(c, ci) => {\n const active = () => {\n const s = sort()\n return s?.key === c().key ? s.direction : null\n }\n const ariaSort = () => (active() === `asc` ? `ascending` : active() === `desc` ? `descending` : c().sortable ? `none` : undefined)\n return (\n <div role=\"columnheader\" aria-sort={ariaSort()} {...part.atWith(`headerCell`, ci, { align: c().align ?? `start` })}>\n <Show when={c().sortable} fallback={<span>{str(c().label)}</span>}>\n <button\n type=\"button\"\n class=\"xui-table-sort\"\n aria-label={phrase(ctx, active() === `asc` ? `sortByDescending` : `sortByAscending`, { name: str(c().label) }, () => `${str(c().label)}: ${ctx.t(active() === `asc` ? `sortDescending` : `sortAscending`)}`)}\n onClick={() => cycle(untrack(c))}\n >\n <span>{str(c().label)}</span>\n <span {...part(`sortIcon`)} data-direction={active() ?? undefined} aria-hidden=\"true\">\n {active() ? <BuiltinIcon slot={`Table.sortIcon.${active()}`} /> : null}\n </span>\n </button>\n </Show>\n </div>\n )\n }}\n </Index>\n </div>\n </div>\n <div role=\"rowgroup\" {...part(`body`)} class={`${part(`body`).class as string} xui-table-body`} ref={bodyEl}>\n <Show\n when={rows().length > 0}\n fallback={\n <div role=\"row\">\n <div role=\"cell\" {...part(`empty`)}>\n {str(props.props.emptyText) || ctx.t(`noResults`)}\n </div>\n </div>\n }\n >\n <Show when={windowed()} fallback={<For each={orderKeys()}>{(key) => <Row rowKey={key} pos={createMemo<number>((prev) => { const p = orderKeys().indexOf(key); return p >= 0 ? p : prev! })} />}</For>}>\n <WindowedList\n ref={(h) => (windowHandle = h)}\n count={order().length}\n itemKey={(i) => keyOf(order()[i])}\n estimatedItemHeight={num(ctx.theme.tokens.control?.row, 40)}\n overscan={8}\n renderItem={(i) => <Row rowKey={untrack(() => keyOf(order()[i()]))} pos={i} />}\n />\n </Show>\n </Show>\n </div>\n <Show when={caption()}>\n <div {...part(`caption`)} id={`${props.domId}.caption`}>\n {caption()}\n </div>\n </Show>\n <Show when={selectable() === `multiple` && selected().length}>\n <span class=\"xui-sr-only\" aria-live=\"polite\">\n {ctx.t(`selectedCount`, { count: selected().length })}\n </span>\n </Show>\n </div>\n )\n}\n\n/** A slot cell: the ROW is the slot's data scope and its instance suffix is\n * APPENDED to the outer one (`<id><outer>.<row key>`). A bound `rows`\n * scopes to the row's pointer. Literal rows are mounted into a read view\n * of the data model at a synthetic pointer: absolute bindings still read\n * (and write) the real model, a write UNDER the row goes to the table's\n * local per-row state (`onLiteralEdit`). */\nfunction RowScope(props: { rowsPath?: string; row: Record<string, unknown>; rowKey: string; index: number; tableId: string; node: UiNode; onLiteralEdit: (key: string, base: Record<string, unknown>, pointer: string, value: unknown) => void }): JSX.Element {\n const ctx = useSurfaceContext()\n const outer = useInstance()\n const literalPath = () => `${LITERAL_ROWS_ROOT}/${props.tableId.replace(/[~/]/g, `_`)}/${props.index}`\n const literalData = createMemo(() => (props.rowsPath ? null : setPointer(ctx.data as Record<string, unknown>, literalPath(), props.row)))\n const view = deriveContext(ctx, {\n data: () => literalData() ?? ctx.data,\n setData: () =>\n props.rowsPath\n ? ctx.setData\n : (pointer: string, value: unknown) => {\n const lp = untrack(literalPath)\n if (pointer === lp || pointer.startsWith(`${lp}/`)) {\n const data = untrack(literalData)\n props.onLiteralEdit(props.rowKey, (getPointer(data, lp) as Record<string, unknown>) ?? untrack(() => props.row), pointer.slice(lp.length), value)\n } else ctx.setData(pointer, value)\n },\n })\n return (\n <SurfaceContext.Provider value={view}>\n <ScopeContext.Provider value={() => (props.rowsPath ? `${props.rowsPath}/${props.index}` : literalPath())}>\n <InstanceContext.Provider value={() => `${outer()}.${props.rowKey}`}>\n <NodeView node={props.node} />\n </InstanceContext.Provider>\n </ScopeContext.Provider>\n </SurfaceContext.Provider>\n )\n}\n\nexport const NATIVES_TABLE: Record<string, Component<NativeProps>> = {\n Table: TableNative,\n}\n","// FEED-128: the native component map (React's natives/index.ts): every\n// `kind: native` of the core catalog, the SAME 48 keys in React's order\n// (`owners.ts` NATIVE_ORDER). Each natives file exports its own record;\n// a native no file paints yet is painted by `Pending` (natives.test.ts\n// gates the map against the catalog and the owners table).\n\nimport type { Component } from \"solid-js\"\nimport { FormNative } from \"../form\"\nimport type { NativeProps } from \"../node-view\"\nimport { BoxNative, ListNative, UnknownNative } from \"./layout\"\nimport { NATIVE_ORDER } from \"./owners\"\nimport { Pending } from \"./pending\"\nimport { IconNative, MarkdownNative, TextNative } from \"./text\"\nimport { NATIVES_ACTIONS } from \"./actions\"\nimport { NATIVES_CHART } from \"./chart\"\nimport { NATIVES_CHIPS } from \"./chips\"\nimport { NATIVES_CHOICE_TILES } from \"./choice-tiles\"\nimport { NATIVES_CODE } from \"./code\"\nimport { NATIVES_DATES } from \"./dates\"\nimport { NATIVES_FEEDBACK } from \"./feedback\"\nimport { NATIVES_INPUTS } from \"./inputs\"\nimport { NATIVES_MEDIA } from \"./media\"\nimport { NATIVES_NAV } from \"./nav\"\nimport { NATIVES_OVERLAYS } from \"./overlays\"\nimport { NATIVES_RESIZABLE } from \"./resizable\"\nimport { NATIVES_SEARCH } from \"./search\"\nimport { NATIVES_SELECT } from \"./select\"\nimport { NATIVES_TABLE } from \"./table\"\n\nconst PROVIDED: Record<string, Component<NativeProps>> = {\n Box: BoxNative,\n List: ListNative,\n Unknown: UnknownNative,\n Text: TextNative,\n Markdown: MarkdownNative,\n Icon: IconNative,\n Form: FormNative,\n ...NATIVES_ACTIONS,\n ...NATIVES_CHART,\n ...NATIVES_CHIPS,\n ...NATIVES_CHOICE_TILES,\n ...NATIVES_CODE,\n ...NATIVES_DATES,\n ...NATIVES_FEEDBACK,\n ...NATIVES_INPUTS,\n ...NATIVES_MEDIA,\n ...NATIVES_NAV,\n ...NATIVES_OVERLAYS,\n ...NATIVES_RESIZABLE,\n ...NATIVES_SEARCH,\n ...NATIVES_SELECT,\n ...NATIVES_TABLE,\n}\n\nexport const NATIVES: Record<string, Component<NativeProps>> = Object.fromEntries(NATIVE_ORDER.map((name) => [name, PROVIDED[name] ?? Pending]))\n\nexport const NATIVE_NAMES: readonly string[] = Object.keys(NATIVES)\n\n/** The natives still painted by `Pending` (empty once the fan-out landed). */\nexport const PENDING_NATIVES: readonly string[] = NATIVE_ORDER.filter((name) => !PROVIDED[name])\n","// FEED-128: ONE normalized node → its painted DOM (React's node-view.tsx on\n// Solid). The BIND pass (`@exponential-at/ui` `bindTree` is the reference)\n// is a set of memos per node: a node whose `visible` resolves falsy is not\n// rendered at all; props, dynamic style values and macro recipe props\n// resolve against the data model, `$string.<id>` through the string table;\n// a RESPONSIVE prop takes its value at the active breakpoint. Then the\n// painter is picked (an extension component, a painter override, or the\n// native) through `<Dynamic>` and handed the root attributes and an emitter\n// that runs an action in the contract's order (resolve the function args\n// and the event context, apply `set`, dispatch the event).\n//\n// Identity: children are KEYED BY ID (`NodeList`) and template items by\n// `template.key` (`TemplateChildren`), and a node's painter is kept while\n// its component stays the same, so a re-reduce (new node objects, same ids)\n// re-binds in place and keeps every control's state, as React's keyed\n// reconciliation does.\n\nimport { ErrorBoundary, For, Show, createComputed, createEffect, createMemo, on, onCleanup, onMount, untrack, type Accessor, type JSX } from \"solid-js\"\nimport { Dynamic } from \"solid-js/web\"\nimport { UNKNOWN_COMPONENT, catalogView, instanceSegment, isResponsiveValue, nativeRecipeProps, responsiveAt, templateItemKeys, templateSiteKey, withOwnWrites } from \"@exponential-at/ui\"\nimport type { ExtensionDef, UiNode } from \"@exponential-at/ui\"\nimport { absolutePath, ariaAttributes, cssValue, dynamicStyleEntries, getPointer, isMacroComponent, nodeClass, partClass, propAttribute, queryToken, resolveAccessibility, resolveNodeProps, resolveValue, resolveVisible, styleDirection, type ResolveContext } from \"@exponential-at/ui/web\"\nimport { InstanceContext, ScopeContext, SurfaceContext, deriveContext, resolveContextOf, useInstance, useScope, useSurfaceContext, type SurfaceContextValue } from \"./context\"\nimport { extensionComponent, extensionMacroNames } from \"./extensions\"\nimport type { ExtensionComponentProps, SurfaceActionEvent } from \"./host\"\nimport { NATIVES } from \"./natives\"\nimport { css, type SolidStyle, type StyleInput } from \"./style\"\n\n/** What a painter receives: React's `NativeProps` as a Solid props object.\n * EVERY field is a live getter: never destructure it (`props.props.label`\n * inside JSX or a memo follows the data), read `children` and each slot\n * ONCE. */\nexport interface NativeProps extends ExtensionComponentProps {\n /** The data scope (template item) this node renders under. */\n readonly scope: string\n /** The node's id as painted (`data-xui-id`): its id + the template\n * instance suffix. DOM ids derive from it (`<id>.error`). */\n readonly domId: string\n}\n\nconst CONTAINERS = new Set([`Box`, `List`])\n\nconst responsiveCache = new WeakMap<readonly ExtensionDef[], Map<string, string[]>>()\n\n/** The props of a component marked `responsive: true` in the catalog. */\nfunction responsiveProps(component: string, extensions: readonly ExtensionDef[]): string[] {\n let byComponent = responsiveCache.get(extensions)\n if (!byComponent) {\n byComponent = new Map()\n responsiveCache.set(extensions, byComponent)\n }\n let hit = byComponent.get(component)\n if (!hit) {\n const def = catalogView(extensions as ExtensionDef[]).components[component]\n hit = def ? Object.entries(def.props).filter(([, s]) => s.responsive).map(([n]) => n) : []\n byComponent.set(component, hit)\n }\n return hit\n}\n\n/** The id a node's style rules are keyed by. */\nexport function styleIdOf(node: UiNode): string {\n return (node as UiNode & { styleId?: string }).styleId ?? node.id\n}\n\n/** The attributes every painted root carries (React's `useRootProps`):\n * `class` (`xui-el xui-n-<id> <scope> xui-<Component>-root [macro part]`),\n * `data-xui-id`, `data-xui-c`, `data-xui-part`, the recipe props\n * (`data-m-*` macro / `data-r-*` native), `data-xs`, the resolved\n * accessibility, `style` (Solid form), `dir`. A live accessor. */\nexport function createRootProps(node: Accessor<UiNode>, props: Accessor<Record<string, unknown>>, domId: Accessor<string> = () => node().id, recipeProps?: Accessor<Record<string, unknown> | undefined>, style?: Accessor<SolidStyle | undefined>): Accessor<Record<string, unknown>> {\n const ctx = useSurfaceContext()\n const scope = useScope()\n return createMemo(() => {\n const n = node()\n const macros = extensionMacroNames(ctx.extensions)\n const classes = [`xui-el`, nodeClass(styleIdOf(n)), ctx.compiled.scope, partClass(n.component, `root`)]\n const attrs: Record<string, unknown> = {}\n if (n.recipe) {\n classes.push(partClass(n.recipe.macro, n.recipe.part))\n attrs[`data-xui-part`] = `${n.recipe.macro}/${n.recipe.part}`\n const macro = isMacroComponent(n.recipe.macro, macros)\n for (const [k, v] of Object.entries(recipeProps?.() ?? n.recipe.props)) if (v !== undefined && v !== null && typeof v !== `object`) attrs[propAttribute(macro, k)] = String(v)\n }\n for (const [k, v] of Object.entries(nativeRecipeProps(n.component, props(), ctx.extensionDefs))) if (typeof v !== `object`) attrs[propAttribute(false, k)] = String(v)\n if (ctx.states.length) attrs[`data-xs`] = ctx.states.join(` `)\n // Contract §6: the node's accessibility resolved, then mapped to ARIA. A\n // painter's own role/aria-* set after the spread wins.\n if (n.accessibility) Object.assign(attrs, ariaAttributes(resolveAccessibility(n.accessibility, resolveContextOf(ctx, scope()))))\n const s = style?.()\n if (s) attrs.style = s\n const dir = ownDirection(n, ctx)\n if (dir) attrs.dir = dir\n return { class: classes.join(` `), \"data-xui-id\": domId(), \"data-xui-c\": n.component, ...attrs }\n })\n}\n\n/** `class` on top of the renderer's own. */\nexport function withClass(rootProps: Record<string, unknown>, ...extra: (string | false | undefined | null)[]): Record<string, unknown> {\n const more = extra.filter(Boolean).join(` `)\n return more ? { ...rootProps, class: `${rootProps.class as string} ${more}` } : rootProps\n}\n\n/** A painter's own inline style (React form: camelCase, numbers = px)\n * merged over the root's (the dynamic style variables live there and must\n * survive), in Solid's form. */\nexport function mergeStyle(rootProps: Record<string, unknown>, style: StyleInput | undefined): SolidStyle | undefined {\n const own = rootProps.style as SolidStyle | undefined\n const mine = css(style)\n if (!own) return mine\n if (!mine) return own\n return { ...own, ...mine }\n}\n\n/** Forced states on a part element (`data-xs`). */\nexport function forced(states: readonly string[], ...extra: (string | false | undefined)[]): string | undefined {\n const all = [...states, ...extra.filter((s): s is string => Boolean(s))]\n return all.length ? all.join(` `) : undefined\n}\n\n/** Run one of a node's actions (round-1 contract §1 `runAction`), exactly\n * React's `runNodeAction`. */\nexport function runNodeAction(ctx: SurfaceContextValue, node: UiNode, domId: string, scope: string, event: string, payload?: Record<string, unknown>, own?: Record<string, unknown>): Promise<void> | void {\n const action = node.on?.[event]\n if (!action) return undefined\n const base = resolveContextOf(ctx, scope)\n const rctx: ResolveContext = own ? { ...base, data: withOwnWrites(ctx.data, node.props, own, scope ? { base: scope } : {}) } : base\n const fn = action.functionCall\n const args = fn ? ((resolveValue(fn.args ?? {}, rctx) as Record<string, unknown>) ?? {}) : undefined\n const context = action.event ? ((resolveValue(action.event.context ?? {}, rctx) as Record<string, unknown>) ?? {}) : undefined\n let pending: unknown\n if (fn && args) {\n if (fn.call === `set`) {\n if (typeof args.path === `string`) ctx.setData(absolutePath(args.path, scope), args.value)\n } else {\n const f = ctx.functions[fn.call]\n // A name outside the client functions is a HOST function (VAPP-91).\n if (f) f(args, rctx)\n else pending = ctx.host.onFunctionCall?.({ surfaceId: ctx.surfaceId, componentId: domId, name: fn.call, args })\n }\n }\n if (pending instanceof Promise) {\n const sent = action.event ? runNodeEvent(ctx, action.event, domId, event, context, payload) : undefined\n return Promise.all([pending, sent]).then(() => undefined)\n }\n if (action.event) return runNodeEvent(ctx, action.event, domId, event, context, payload)\n return undefined\n}\n\nfunction runNodeEvent(ctx: SurfaceContextValue, ev: { name: string }, domId: string, event: string, context: Record<string, unknown> | undefined, payload?: Record<string, unknown>): Promise<void> | void {\n const e: SurfaceActionEvent = {\n surfaceId: ctx.surfaceId,\n event,\n name: ev.name,\n componentId: domId,\n context: { ...(context ?? {}), ...(payload ?? {}) },\n payload,\n timestamp: new Date().toISOString(),\n }\n return ctx.host.onAction?.(e) ?? undefined\n}\n\n/** React's `useEmitter`: the node's emitter (reads the node, scope and id\n * at call time). */\nexport function createEmitter(node: Accessor<UiNode>, scope: Accessor<string>, domId: Accessor<string> = () => node().id) {\n const ctx = useSurfaceContext()\n return (event: string, payload?: Record<string, unknown>, own?: Record<string, unknown>): Promise<void> | void => untrack(() => runNodeAction(ctx, node(), domId(), scope(), event, payload, own))\n}\n\n/** A node's own style `direction` (round 2 §2), matching `@media` blocks\n * included. */\nexport function ownDirection(node: UiNode, ctx?: Pick<SurfaceContextValue, `theme` | `xq`>): `ltr` | `rtl` | undefined {\n if (!node.style) return undefined\n // `xq` read only when a `@media` block sets a direction (VAPP-152: a\n // memo over every styled node would follow the surface's queries).\n let tokens: string[] | undefined\n return styleDirection(node.style, ctx?.theme, (key) => (tokens ??= ctx?.xq ? ctx.xq.split(` `) : []).includes(queryToken(key)))\n}\n\n/** A node, or nothing when its `visible` resolves falsy. `props.node` is\n * followed live (a re-reduce re-binds in place). */\nexport function NodeView(props: { node: UiNode }): JSX.Element {\n const ctx = useSurfaceContext()\n const scope = useScope()\n const visible = createMemo(() => props.node.visible === undefined || resolveVisible(props.node.visible, resolveContextOf(ctx, scope())))\n const own = createMemo(() => ownDirection(props.node, ctx))\n const directed = createMemo(() => {\n const d = own()\n return d && d !== ctx.direction ? d : undefined\n })\n return (\n <Show when={visible()}>\n <Show when={directed()} fallback={<BoundNode node={props.node} />}>\n <SurfaceContext.Provider value={deriveContext(ctx, { direction: () => directed() ?? ctx.direction })}>\n <BoundNode node={props.node} />\n </SurfaceContext.Provider>\n </Show>\n </Show>\n )\n}\n\n/** Nodes painted in order, KEYED BY ID: a re-reduce hands new node objects\n * for the same ids and each keeps its painted subtree. */\nexport function NodeList(props: { nodes: readonly UiNode[] }): JSX.Element {\n const ctx = useSurfaceContext()\n const byId = createMemo(() => new Map(props.nodes.map((n) => [n.id, n])))\n const ids = createMemo(() => props.nodes.map((n) => n.id), undefined, { equals: sameList })\n return (\n <For each={ids()}>\n {(id) => {\n // The surface's cell when this list paints the tree's own node\n // (VAPP-152), else the parent's list.\n const cell = ctx.nodeCell?.(id)\n const own = cell && untrack(cell) === untrack(byId).get(id) ? cell : undefined\n const node = createMemo<UiNode>((prev) => (own ? own() : byId().get(id)) ?? prev!)\n return <NodeView node={node()} />\n }}\n </For>\n )\n}\n\n/** The latest non-empty value of `fn` (what a `<Show>` child reads instead\n * of Show's accessor: a child disposed after its condition went falsy\n * never reads a stale accessor). */\nexport function latest<T>(fn: () => T | null | undefined | false): Accessor<T> {\n return createMemo<T>((prev) => (fn() || prev) as T)\n}\n\nconst sameList = (a: readonly string[], b: readonly string[]): boolean => a.length === b.length && a.every((x, i) => x === b[i])\n\nfunction BoundNode(props: { node: UiNode }): JSX.Element {\n const ctx = useSurfaceContext()\n const scope = useScope()\n const instance = useInstance()\n const node = () => props.node\n const domId = createMemo(() => `${props.node.id}${instance()}`)\n const rctx = createMemo(() => resolveContextOf(ctx, scope()))\n const resolved = createMemo(() => {\n const n = props.node\n const out = resolveNodeProps(n.component, n.props, rctx(), ctx.extensionDefs)\n for (const name of responsiveProps(n.component, ctx.extensionDefs)) {\n const v = out[name]\n if (isResponsiveValue(v)) out[name] = responsiveAt(v, ctx.breakpoint)\n }\n return out\n })\n const recipeProps = createMemo(() => (props.node.recipe ? (resolveValue(props.node.recipe.props, rctx()) as Record<string, unknown>) : undefined))\n const dynamicStyle = createMemo(() => {\n const entries = dynamicStyleEntries(props.node.style)\n if (entries.length === 0) return undefined\n const out: SolidStyle = {}\n // EVERY entry is set: a value that resolves to nothing is `initial`.\n for (const e of entries) {\n const v = cssValue(e.key, resolveValue(e.value, rctx()), ctx.theme.fonts)\n out[e.name] = v ?? `initial`\n }\n return out\n })\n const rootProps = createRootProps(node, resolved, domId, recipeProps, dynamicStyle)\n const emit = createEmitter(node, scope, domId)\n const component = createMemo(() => props.node.component)\n const override = createMemo(() => extensionComponent(ctx.extensions, component()))\n const Painter = createMemo(() => override() ?? NATIVES[component()] ?? NATIVES[UNKNOWN_COMPONENT])\n const unknown = createMemo(() => component() === UNKNOWN_COMPONENT || (!NATIVES[component()] && !override()))\n createEffect(() => {\n if (unknown()) {\n const n = props.node\n untrack(() => ctx.host.onUnknown?.(n))\n }\n })\n\n // Geometry mode: a leaf is a fixed box (the core's fake measure) with NO\n // recipe on it — only its node style lays out, like the core.\n const measured = createMemo(() => (ctx.measure && !CONTAINERS.has(component()) ? ctx.measure(props.node) : null))\n const latestSize = latest(measured)\n\n const painterProps: NativeProps = {\n get node() {\n return props.node\n },\n get props() {\n return resolved()\n },\n get theme() {\n return ctx.theme\n },\n get mode() {\n return ctx.mode\n },\n get tokens() {\n return ctx.theme.tokens\n },\n get children() {\n return (\n <>\n <NodeList nodes={props.node.children} />\n <Show when={props.node.template}>\n <TemplateChildren node={props.node} scope={scope()} />\n </Show>\n </>\n )\n },\n get slots() {\n const out: Record<string, JSX.Element> = {}\n for (const name of Object.keys(props.node.slots ?? {})) {\n Object.defineProperty(out, name, { enumerable: true, get: () => <SlotView node={props.node} name={name} /> })\n }\n return out\n },\n emit,\n get rootProps() {\n return rootProps()\n },\n get scope() {\n return scope()\n },\n get domId() {\n return domId()\n },\n }\n\n const paint = () => <Dynamic component={Painter()} {...painterProps} />\n const guarded = createMemo(() => !(UNGUARDED.has(component()) && !override()))\n return (\n <Show\n when={measured()}\n fallback={\n <Show when={guarded()} fallback={paint()}>\n <PaintBoundary node={props.node} domId={domId()}>\n {paint()}\n </PaintBoundary>\n </Show>\n }\n >\n <div class={`xui-el ${nodeClass(props.node.id)} xui-leaf`} data-xui-id={domId()} data-xui-c={props.node.component}>\n <div class=\"xui-measured\" style={css({ width: latestSize().w, height: latestSize().h })} />\n </div>\n </Show>\n )\n}\n\n/** One slot of a node, followed by name (a re-reduce keeps it mounted). */\nfunction SlotView(props: { node: UiNode; name: string }): JSX.Element {\n const slot = createMemo<UiNode | undefined>((prev) => props.node.slots?.[props.name] ?? prev)\n return (\n <Show when={slot()}>\n <NodeView node={slot()!} />\n </Show>\n )\n}\n\n/** A failed node's identity for the once-per-props rule. */\nfunction propsSignature(node: UiNode): string {\n try {\n return `${node.component}\\u0000${JSON.stringify(node.props)}`\n } catch {\n return node.component\n }\n}\n\n/** The plain painters (no formatting, no host code) skip the boundary. */\nconst UNGUARDED = new Set([`Box`, `Text`])\n\n/** One node's painter that throws paints an EMPTY box in its place; the\n * rest of the surface stays mounted and the host hears it through\n * `onPaintError` (once per painted node until its props change). A new\n * node (a re-reduce) retries. */\nfunction PaintBoundary(props: { node: UiNode; domId: string; children: JSX.Element }): JSX.Element {\n const ctx = useSurfaceContext()\n let reset: (() => void) | undefined\n createEffect(\n on(\n () => props.node,\n () => {\n const r = reset\n reset = undefined\n r?.()\n },\n { defer: true }\n )\n )\n // The painted id as last seen (props are not read during disposal: the\n // node may already be gone).\n let paintedId = untrack(() => props.domId)\n createComputed(() => (paintedId = props.domId))\n onCleanup(() => ctx.paintFailures?.delete(paintedId))\n const report = (error: unknown) => {\n const node = untrack(() => props.node)\n const domId = untrack(() => props.domId)\n const failures = ctx.paintFailures\n const signature = propsSignature(node)\n if (failures?.get(domId) === signature) return\n failures?.set(domId, signature)\n const message = `${node.component} failed to paint: ${error instanceof Error ? error.message : String(error)}`\n const onPaintError = ctx.host.onPaintError\n if (onPaintError) {\n try {\n onPaintError({ surfaceId: ctx.surfaceId, componentId: node.id, message })\n } catch (e) {\n console.error(`[exponential-ui] onPaintError threw`, e)\n }\n } else console.error(`[exponential-ui] ${node.component} \"${node.id}\" failed to paint`, error)\n }\n return (\n <ErrorBoundary\n fallback={(error, r) => {\n reset = r\n report(error)\n return <div class={`xui-el ${nodeClass(props.node.id)}`} data-xui-id={props.domId} data-xui-c={props.node.component} data-xui-error=\"\" />\n }}\n >\n <Painted domId={props.domId} />\n {props.children}\n </ErrorBoundary>\n )\n}\n\n/** A node that paints again is no longer a remembered failure. */\nfunction Painted(props: { domId: string }): JSX.Element {\n const ctx = useSurfaceContext()\n onMount(() => ctx.paintFailures?.delete(props.domId))\n return null\n}\n\nexport interface TemplateItem {\n /** The item's instance key: the `template.key` value; the index when the\n * template has no key; `#<index>` when missing / empty / a duplicate. */\n key: string\n /** The item's data pointer (its scope). */\n path: string\n index: number\n}\n\n/** The items of a node's data template (React's `templateItems`). Reads\n * the surface's getters: call it inside a memo. */\nexport function templateItems(ctx: SurfaceContextValue, node: UiNode, scope: string): { items: TemplateItem[]; tpl: UiNode } | null {\n const template = node.template\n if (!template) return null\n const path = absolutePath(template.path, scope)\n const list = getPointer(ctx.data, path)\n const tpl = ctx.templateNode(template.component)\n if (!Array.isArray(list) || !tpl) return null\n const keys = templateItemKeys(list, template.key)\n // VAPP-103: the surface's `maxTemplateItems` budget for this site.\n const count = ctx.templateBudget?.allowed.get(templateSiteKey(node.id, scope)) ?? list.length\n const items = list.slice(0, count).map((_, index) => ({ key: keys[index], path: `${path}/${index}`, index }))\n return { items, tpl }\n}\n\n/** A template item's instance suffix: the enclosing one + `.<key>`, the\n * key escaped (`instanceSegment`). */\nexport const itemInstance = (instance: string, key: string): string => `${instance}.${instanceSegment(key)}`\n\n/** One template item: its scope + instance suffix around the node (both\n * followed live: a moved item keeps its subtree and re-scopes). */\nexport function TemplateItemView(props: { tpl: UiNode; item: TemplateItem }): JSX.Element {\n const outer = useInstance()\n return (\n <ScopeContext.Provider value={() => props.item.path}>\n <InstanceContext.Provider value={() => itemInstance(outer(), props.item.key)}>\n <NodeView node={props.tpl} />\n </InstanceContext.Provider>\n </ScopeContext.Provider>\n )\n}\n\n/** The template items of a list, keyed by `template.key`. */\nexport function TemplateItems(props: { items: readonly TemplateItem[]; tpl: UiNode }): JSX.Element {\n const byKey = createMemo(() => new Map(props.items.map((i) => [i.key, i])))\n const keys = createMemo(() => props.items.map((i) => i.key), undefined, { equals: sameList })\n return (\n <For each={keys()}>\n {(key) => {\n const item = createMemo<TemplateItem>((prev) => byKey().get(key) ?? prev!)\n return <TemplateItemView tpl={props.tpl} item={item()} />\n }}\n </For>\n )\n}\n\nfunction TemplateChildren(props: { node: UiNode; scope: string }): JSX.Element {\n const ctx = useSurfaceContext()\n const t = createMemo(() => templateItems(ctx, props.node, props.scope))\n const last = latest(t)\n return (\n <Show when={t()}>\n <TemplateItems items={last().items} tpl={last().tpl} />\n </Show>\n )\n}\n","// FEED-128: `<ExponentialSurface>` on Solid — one A2UI surface painted with\n// the SAME DOM and the SAME compiled stylesheet as the React renderer\n// (surface.tsx there): the root carries the theme's scope class + the\n// variable block (per mode), the surface's node sheet, the live regions,\n// and an inner `xui` CONTAINER the breakpoints resolve against; the OVERLAY\n// and TOAST layers sit INSIDE the container. Everything is derived: signals\n// for the inputs (props, platform preferences, the measured box), memos for\n// the theme, the sheets, the layout facts; the context is an object of\n// getters over them, so a node re-binds only on what it reads.\n\nimport { For, Show, createComputed, createEffect, createMemo, createSignal, createUniqueId, mergeProps, on, onCleanup, onMount, untrack, type JSX } from \"solid-js\"\nimport {\n activeBreakpoint,\n applyContrast,\n applyDensity,\n builtinTheme,\n formatString,\n intlFormatter,\n themeOrDefault,\n mediaMatches,\n parseMediaCondition,\n resolveMode,\n stringTable,\n templateBudget,\n textDirection,\n DEFAULT_LOCALE,\n DEFAULT_THEME_ID,\n} from \"@exponential-at/ui\"\nimport type { ModeName, ResolvedTheme, ScrollAlign, ThemeIssue, ThemeSource, UiNode, SurfaceCommand } from \"@exponential-at/ui\"\nimport { BASE_CSS, CLIENT_FUNCTIONS, compileNodeSheet, compiledTheme, memoFormatter, nodeSheetBatches, openAllowed, queryToken, setPointer, share, surfaceClass, walkNodes, type DataModel, type NodeSheetBatch } from \"@exponential-at/ui/web\"\nimport { SurfaceContext, type SurfaceContextValue } from \"./context\"\nimport { extensionCatalogs, extensionMacroNames, registeredExtensions, type SolidExtension } from \"./extensions\"\nimport type { HostPlugin } from \"./host\"\nimport { NodeView, latest } from \"./node-view\"\nimport { createMediaQuery } from \"./platform\"\nimport { px, type SolidStyle } from \"./style\"\nimport type { SurfaceState } from \"./create-surface\"\n\nexport type ThemeInput = ResolvedTheme | ThemeSource | string\n\n/** What a host can ask of a live surface (`SurfaceCommand`, a11y.json). */\nexport interface SurfaceHandle {\n run: (command: SurfaceCommand) => void\n /** Focus the node (or its first focusable descendant); false if absent. */\n focus: (id: string) => boolean\n announce: (text: string, live?: `polite` | `assertive`) => void\n scrollIntoView: (id: string) => boolean\n /** Item `index` (data order) of the List/Table `id` into view. */\n scrollToIndex: (id: string, index: number, align?: ScrollAlign) => boolean\n}\n\nexport interface ExponentialSurfaceProps {\n /** The state from `createSurface` (tree + data + templates)… */\n surface?: SurfaceState\n /** …or a normalized tree (a fixture) with an optional data model… */\n root?: UiNode | null\n /** …and its LIFTED templates (`ReduceResult.templates`). */\n templates?: Readonly<Record<string, UiNode>>\n data?: DataModel\n /** A built-in id, a theme file (resolved against the built-ins) or a\n * resolved theme. */\n theme?: ThemeInput\n /** `light | dark | system` (default `system`, followed live). */\n mode?: ModeName | `system`\n density?: `compact` | `default` | `comfortable`\n contrast?: `normal` | `high` | `system`\n /** BCP 47 (default `en-US`). */\n locale?: string\n /** IANA time zone (default the platform's). */\n timeZone?: string\n /** Built-in string overrides by id (`catalog/strings.json`). */\n strings?: Record<string, string>\n host?: HostPlugin\n extensions?: readonly SolidExtension[]\n /** Forced interaction states on every node (the builder's recipe sheet). */\n states?: readonly string[]\n /** Geometry mode: leaves become fixed boxes of the returned size. */\n measure?: (node: UiNode) => { w: number; h: number } | null\n /** Default: the locale's direction (`textDirection`). */\n direction?: `ltr` | `rtl`\n /** The surface width; default = the host's box. */\n width?: number | string\n /** The height of the VIEWPORT the surface is shown in (the height and\n * orientation conditions); default an explicit inline `style.height`,\n * else unknown. */\n viewportHeight?: number\n /** An explicit id (defaults to `createUniqueId`); unique per page. */\n id?: string\n /** Host → surface commands: called once with the surface's handle (React's\n * `handleRef`, as a Solid ref callback). */\n handleRef?: (handle: SurfaceHandle) => void\n class?: string\n /** Solid's style form (kebab-case keys). */\n style?: JSX.CSSProperties\n children?: JSX.Element\n}\n\n/** A theme prop, resolved: the theme to paint with and why the asked one\n * was refused (empty when it loaded). */\nexport interface ThemeResolution {\n theme: ResolvedTheme\n issues: ThemeIssue[]\n}\n\nconst resolvedCache = new Map<string, ThemeResolution>()\n\n/** A theme prop → the resolved theme. NEVER throws (round 4). */\nexport function resolveThemeInput(input: ThemeInput | undefined): ThemeResolution {\n if (!input) return { theme: builtinTheme(DEFAULT_THEME_ID), issues: [] }\n if (typeof input === `string`) return themeOrDefault(input)\n if (`chain` in input && Array.isArray((input as ResolvedTheme).chain)) return { theme: input as ResolvedTheme, issues: [] }\n let key: string\n try {\n key = JSON.stringify(input)\n } catch {\n return { theme: builtinTheme(DEFAULT_THEME_ID), issues: [{ path: `theme`, message: `expected a theme object {id, name, modes, tokens, recipes}` }] }\n }\n let hit = resolvedCache.get(key)\n if (!hit) {\n hit = themeOrDefault(input)\n resolvedCache.set(key, hit)\n }\n return hit\n}\n\nconst derivedCache = new WeakMap<ResolvedTheme, Map<string, ResolvedTheme>>()\n\n/** The theme a surface runs with: density applied, then the contrast\n * overlays when asked (memoized per theme, so the compiled sheet is too). */\nexport function surfaceTheme(theme: ResolvedTheme, density: `compact` | `default` | `comfortable`, highContrast: boolean): ResolvedTheme {\n if (density === `default` && !highContrast) return theme\n let byKey = derivedCache.get(theme)\n if (!byKey) {\n byKey = new Map()\n derivedCache.set(theme, byKey)\n }\n const key = `${density}/${highContrast}`\n let hit = byKey.get(key)\n if (!hit) {\n hit = applyDensity(theme, density)\n if (highContrast) hit = applyContrast(hit)\n byKey.set(key, hit)\n }\n return hit\n}\n\nconst EMPTY: readonly never[] = []\nconst NO_TEMPLATES: Readonly<Record<string, UiNode>> = {}\nconst EMPTY_HOST: HostPlugin = {}\n\n/** What the surface knows of its box. */\nexport interface SurfaceBox {\n width: number\n /** Undefined = unknown. */\n height: number | undefined\n measured: boolean\n}\n\nexport interface LayoutInputs {\n breakpoints: Record<string, number>\n queries: readonly string[]\n viewportHeight: number | undefined\n hover: boolean\n reducedMotion: boolean\n}\n\n/** The only layout facts that reach the tree: the active breakpoint and the\n * matching JS-evaluated conditions (`data-xq`). */\nexport function surfaceLayout(box: SurfaceBox, inputs: LayoutInputs): { breakpoint: string | null; xq: string } {\n const breakpoint = activeBreakpoint(box.width, inputs.breakpoints)\n const height = inputs.viewportHeight ?? box.height\n const ctx = { width: box.width, height, hover: inputs.hover, reducedMotion: inputs.reducedMotion }\n const xq = inputs.queries\n .filter((key) => {\n const c = parseMediaCondition(key)\n return c ? mediaMatches(c, ctx) : false\n })\n .map(queryToken)\n .join(` `)\n return { breakpoint, xq }\n}\n\nconst FOCUSABLE = `input:not([disabled]),textarea:not([disabled]),select:not([disabled]),button:not([disabled]),a[href],[tabindex]:not([tabindex=\"-1\"]),[contenteditable=\"true\"]`\n\nconst platformZone = (): string => {\n try {\n return Intl.DateTimeFormat().resolvedOptions().timeZone || `UTC`\n } catch {\n return `UTC`\n }\n}\n\ndeclare const process: { env: { NODE_ENV?: string } }\nconst IS_DEV = (() => {\n try {\n return process.env.NODE_ENV !== `production`\n } catch {\n return false\n }\n})()\nconst warnedTemplates = new Set<string>()\n\n/** Dev only: a node whose `template.component` is not in `templates`. */\nfunction warnMissingTemplates(surfaceId: string, root: UiNode, templates: Readonly<Record<string, UiNode>>): void {\n const visit = (n: UiNode) => {\n const id = (n.template as { component?: unknown } | undefined)?.component\n if (typeof id === `string` && !templates[id]) {\n const key = `${surfaceId}\\u0000${id}`\n if (!warnedTemplates.has(key)) {\n warnedTemplates.add(key)\n console.warn(`[exponential-ui] surface \"${surfaceId}\": \"${n.id}\" templates \"${id}\", which is not in \\`templates\\` (pass the reducer's \\`templates\\` with \\`root\\`); it renders no items.`)\n }\n }\n for (const c of n.children) visit(c)\n for (const sl of Object.values(n.slots ?? {})) visit(sl)\n }\n visit(root)\n for (const t of Object.values(templates)) visit(t)\n}\n\nconst isPlain = (v: unknown): v is Record<string, unknown> => typeof v === `object` && v !== null && !Array.isArray(v)\n\n/** Structural equality, short-circuiting on identity at every level. */\nexport function sameData(a: unknown, b: unknown): boolean {\n if (Object.is(a, b)) return true\n if (typeof a !== `object` || typeof b !== `object` || a === null || b === null) return false\n if (Array.isArray(a)) {\n if (!Array.isArray(b) || a.length !== b.length) return false\n for (let i = 0; i < a.length; i++) if (!sameData(a[i], b[i])) return false\n return true\n }\n if (!isPlain(b) || Array.isArray(b)) return false\n const pa = Object.getPrototypeOf(a)\n if (pa !== Object.prototype && pa !== null) return false\n const ka = Object.keys(a as object)\n if (ka.length !== Object.keys(b).length) return false\n for (const k of ka) if (!Object.prototype.hasOwnProperty.call(b, k) || !sameData((a as Record<string, unknown>)[k], b[k])) return false\n return true\n}\n\nfunction usesLiveClock(value: unknown): boolean {\n if (Array.isArray(value)) return value.some(usesLiveClock)\n if (typeof value !== `object` || value === null) return false\n const v = value as Record<string, unknown>\n if (v.call === `formatRelativeTime` && (typeof v.args !== `object` || v.args === null || (v.args as Record<string, unknown>).now === undefined)) return true\n if (v.component === `Table`) {\n const columns = (v.props as Record<string, unknown> | undefined)?.columns\n if (Array.isArray(columns) ? columns.some((c) => (c as Record<string, unknown> | null)?.type === `relativeTime`) : typeof columns === `object` && columns !== null) return true\n }\n return Object.values(v).some(usesLiveClock)\n}\n\nexport function ExponentialSurface(input: ExponentialSurfaceProps): JSX.Element {\n const props = mergeProps({ mode: `system` as const, density: `default` as const, contrast: `system` as const, locale: DEFAULT_LOCALE }, input)\n const uid = createUniqueId()\n const surfaceId = createMemo(() => props.id ?? props.surface?.surfaceId ?? uid.replace(/[^a-zA-Z0-9]/g, ``))\n const prefersDark = createMediaQuery(`(prefers-color-scheme: dark)`)\n const prefersContrast = createMediaQuery(`(prefers-contrast: more)`)\n const reducedMotion = createMediaQuery(`(prefers-reduced-motion: reduce)`)\n const hover = createMediaQuery(`(hover: hover)`, true)\n const mode = createMemo((): ModeName => (props.mode === `system` ? resolveMode(`system`, prefersDark()) : props.mode))\n const resolution = createMemo(() => resolveThemeInput(props.theme))\n // An unusable theme never crashes the host: the surface paints with the\n // default theme and hands the issues over once per resolution.\n createEffect(() => {\n const r = resolution()\n const report = props.host?.onThemeIssues\n if (r.issues.length > 0) untrack(() => report?.(r.issues))\n })\n const theme = createMemo(() => surfaceTheme(resolution().theme, props.density, props.contrast === `high` || (props.contrast === `system` && prefersContrast())))\n const extensions = createMemo(() => [...registeredExtensions(), ...(props.extensions ?? EMPTY)])\n const extensionDefs = createMemo(() => extensionCatalogs(extensions()))\n const macros = createMemo(() => extensionMacroNames(extensions()))\n const compiled = createMemo(() => compiledTheme(theme(), { extensionMacros: macros() }))\n const direction = createMemo(() => props.direction ?? textDirection(props.locale))\n const strings = createMemo(() => stringTable(props.strings ?? {}))\n const t = (id: string, params?: Record<string, unknown>) => formatString(strings()[id] ?? id, params ?? {})\n\n // Data: the surface state's, or a local signal over the `data` prop. A\n // `data` prop with new CONTENT replaces the local model (an equal one\n // keeps the user's edits), compared structurally against the last ADOPTED.\n const [localData, setLocalData] = createSignal<DataModel>(untrack(() => props.data) ?? {})\n let seenData = untrack(() => props.data)\n createEffect(\n on(\n () => props.data,\n (next) => {\n if (next !== seenData && !sameData(next, seenData)) {\n seenData = next\n setLocalData(next ?? {})\n }\n },\n { defer: true }\n )\n )\n const data = () => (props.surface ? props.surface.data : localData())\n const setData = (pointer: string, value: unknown) => {\n if (props.surface) props.surface.setData(pointer, value)\n else setLocalData((cur) => setPointer(cur, pointer, value))\n }\n\n // VAPP-152: a new tree shares every unchanged node with the last one\n // (`share`), so a streamed `updateComponents` re-binds only the nodes it\n // changed.\n const root = createMemo<UiNode | null>((prev) => share(prev, props.surface ? props.surface.root : (props.root ?? null)))\n const latestRoot = latest(root)\n const templates = createMemo<Readonly<Record<string, UiNode>>>((prev) => share(prev, (props.surface ? props.surface.templates : props.templates) ?? NO_TEMPLATES))\n const templateNode = (componentId: string) => templates()[componentId]\n const templateRoots = createMemo(() => Object.values(templates()))\n // VAPP-152: one signal per node id, written only when that id's node\n // OBJECT changed (the shared tree keeps the others). A listed child reads\n // its own cell, not its parent's node, so a streamed card notifies the\n // nodes it changed instead of marking the whole tree.\n let byId = new Map<string, UiNode>()\n const cells = new Map<string, { get: () => UiNode | undefined; set: (n: UiNode | undefined) => void }>()\n createComputed(() => {\n const next = new Map<string, UiNode>()\n const r = root()\n for (const top of r ? [r, ...templateRoots()] : templateRoots()) for (const n of walkNodes(top)) if (!next.has(n.id)) next.set(n.id, n)\n byId = next\n for (const [id, cell] of cells) {\n const n = next.get(id)\n if (n === undefined) cells.delete(id)\n else cell.set(n)\n }\n })\n const nodeCell = (id: string): (() => UiNode | undefined) | undefined => {\n let cell = cells.get(id)\n if (!cell) {\n const n = byId.get(id)\n if (n === undefined) return undefined\n const [get, set] = createSignal<UiNode | undefined>(n)\n cell = { get, set: (v) => set(() => v) }\n cells.set(id, cell)\n }\n return cell.get\n }\n // VAPP-103: past `maxTemplateItems` items or `maxComponents` nodes.\n const budget = createMemo(() => {\n const r = root()\n return r ? templateBudget(r, data(), templateNode) : undefined\n })\n createEffect(\n on(\n () => [surfaceId(), budget()?.issue?.id, budget()?.issue?.message] as const,\n ([id, issueId, message]) => {\n if (issueId) console.warn(`[exponential-ui] ${id}: ${issueId}: ${message}`)\n }\n )\n )\n createEffect(() => {\n const r = root()\n if (IS_DEV && r) warnMissingTemplates(surfaceId(), r, templates())\n })\n const sheet = createMemo(() => {\n const r = root()\n return r ? compileNodeSheet([r, ...templateRoots()], surfaceId(), theme()) : { css: ``, queries: [] as string[], chunks: new Map<string, string>() }\n })\n // VAPP-152: the node sheet in `<style>` batches; a streamed node adds\n // one, the unchanged ones keep their element (no surface-wide restyle).\n const batches = createMemo<NodeSheetBatch[]>((prev) => nodeSheetBatches(prev ?? [], sheet().chunks))\n const styleBatches = createMemo((): readonly NodeSheetBatch[] => (batches().length ? batches() : [{ chunks: new Map(), css: sheet().css }]))\n\n const [portal, setPortal] = createSignal<HTMLElement | null>(null)\n const [toastLayer, setToastLayer] = createSignal<HTMLElement | null>(null)\n let rootEl: HTMLDivElement | undefined\n // The box is a signal only the layout memo reads: a resize that changes\n // neither the breakpoint nor `data-xq` re-binds nothing.\n const [box, setBox] = createSignal<SurfaceBox>({ width: typeof untrack(() => props.width) === `number` ? (untrack(() => props.width) as number) : 0, height: undefined, measured: false })\n const layout = createMemo(\n () => surfaceLayout(box(), { breakpoints: theme().tokens.breakpoint ?? {}, queries: sheet().queries, viewportHeight: props.viewportHeight, hover: hover(), reducedMotion: reducedMotion() }),\n undefined,\n { equals: (a, b) => a.breakpoint === b.breakpoint && a.xq === b.xq }\n )\n const breakpoint = () => layout().breakpoint\n const xq = () => layout().xq\n onMount(() => {\n const el = rootEl\n if (!el) return\n const read = () => {\n const r = el.getBoundingClientRect()\n // No layout yet (jsdom, display:none): keep the initial guess.\n if (!untrack(box).measured && r.width === 0 && r.height === 0) return\n // Only an EXPLICIT height is a viewport; a content-sized root is not.\n const explicit = el.style.height !== `` && el.style.height !== `auto`\n setBox({ width: r.width, height: explicit ? r.height : undefined, measured: true })\n }\n read()\n if (typeof ResizeObserver === `undefined`) return\n const ro = new ResizeObserver(read)\n ro.observe(el)\n onCleanup(() => ro.disconnect())\n })\n\n // Live regions: `announce` swaps the text (cleared first, so the same\n // message twice is spoken twice).\n let politeEl: HTMLDivElement | undefined\n let assertiveEl: HTMLDivElement | undefined\n const announce = (text: string, live: `polite` | `assertive` = `polite`) => {\n const el = live === `assertive` ? assertiveEl : politeEl\n if (!el) return\n el.textContent = ``\n setTimeout(() => {\n el.textContent = text\n }, 30)\n }\n\n const functions = createMemo(() => ({ ...CLIENT_FUNCTIONS, ...(props.host?.functions ?? {}) }))\n const formatter = createMemo(() => memoFormatter(intlFormatter(props.locale, props.timeZone ?? platformZone())))\n // The surface clock: a tree that formats a relative time against \"now\"\n // re-binds once a minute.\n const liveClock = createMemo(() => usesLiveClock(root()) || usesLiveClock(templateRoots()))\n const [minute, setMinute] = createSignal(Date.now())\n createEffect(() => {\n if (!liveClock()) return\n const timer = setInterval(() => setMinute(Date.now()), 60_000)\n onCleanup(() => clearInterval(timer))\n })\n const now = createMemo(() => {\n minute()\n return () => Date.now()\n })\n const scrollers = new Map<string, (index: number, align?: ScrollAlign) => void>()\n const registerScroller = (id: string, scroll: (index: number, align?: ScrollAlign) => void) => {\n scrollers.set(id, scroll)\n return () => {\n if (scrollers.get(id) === scroll) scrollers.delete(id)\n }\n }\n const paintFailures = new Map<string, string>()\n const host = createMemo(() => props.host ?? EMPTY_HOST)\n // Every open passes the URL policy (the host's opener or a new tab).\n const openUrl = (url: string) => openAllowed(untrack(host), url)\n\n const ctx: SurfaceContextValue = {\n get surfaceId() {\n return surfaceId()\n },\n get compiled() {\n return compiled()\n },\n get theme() {\n return theme()\n },\n get mode() {\n return mode()\n },\n get host() {\n return host()\n },\n get extensions() {\n return extensions()\n },\n get extensionDefs() {\n return extensionDefs()\n },\n get data() {\n return data()\n },\n setData,\n templateNode,\n nodeCell,\n get templateBudget() {\n return budget()\n },\n get states() {\n return props.states ?? EMPTY\n },\n get measure() {\n return props.measure\n },\n get portal() {\n return portal()\n },\n get toastLayer() {\n return toastLayer()\n },\n get direction() {\n return direction()\n },\n get functions() {\n return functions()\n },\n openUrl,\n get locale() {\n return props.locale\n },\n get formatter() {\n return formatter()\n },\n get now() {\n return now()\n },\n registerScroller,\n paintFailures,\n get strings() {\n return strings()\n },\n t,\n get breakpoint() {\n return breakpoint()\n },\n get xq() {\n return xq()\n },\n get reducedMotion() {\n return reducedMotion()\n },\n get hover() {\n return hover()\n },\n announce,\n }\n\n const nodeEl = (id: string): HTMLElement | null => rootEl?.querySelector<HTMLElement>(`[data-xui-id=\"${typeof CSS !== `undefined` && CSS.escape ? CSS.escape(id) : id.replace(/\"/g, `\\\\\"`)}\"]`) ?? null\n const focus = (id: string) => {\n const el = nodeEl(id)\n if (!el) return false\n const target = el.matches(FOCUSABLE) ? el : el.querySelector<HTMLElement>(FOCUSABLE)\n ;(target ?? el).focus()\n return true\n }\n const scrollIntoView = (id: string) => {\n const el = nodeEl(id)\n if (!el) return false\n el.scrollIntoView({ block: `nearest`, behavior: untrack(reducedMotion) ? `auto` : `smooth` })\n return true\n }\n const scrollToIndex = (id: string, index: number, align?: ScrollAlign) => {\n const scroll = scrollers.get(id)\n if (!scroll) return false\n scroll(index, align)\n return true\n }\n const handle: SurfaceHandle = {\n focus,\n scrollIntoView,\n scrollToIndex,\n announce,\n run: (command) => {\n if (`focus` in command) focus(command.focus.id)\n else if (`announce` in command) announce(command.announce.text, command.announce.live)\n else if (`scrollIntoView` in command) scrollIntoView(command.scrollIntoView.id)\n else if (`scrollToIndex` in command) scrollToIndex(command.scrollToIndex.id, command.scrollToIndex.index, command.scrollToIndex.align)\n },\n }\n untrack(() => props.handleRef?.(handle))\n\n const layerCss = createMemo(() => {\n const md = theme().tokens.breakpoint?.md ?? 768\n const scopeSel = `.${surfaceClass(surfaceId())}`\n return `@layer xui-base{@container xui (width >= ${md}px){${scopeSel} .xui-toast-layer{left:auto;right:var(--xui-spacing-lg);transform:none;align-items:flex-end}${scopeSel}[dir=\"rtl\"] .xui-toast-layer{right:auto;left:var(--xui-spacing-lg)}}}`\n })\n const rootStyle = (): JSX.CSSProperties | undefined => (props.width === undefined ? props.style : ({ width: px(props.width), ...(props.style ?? {}) } as SolidStyle))\n\n return (\n <div\n ref={rootEl}\n class={[`xui-surface`, compiled().scope, surfaceClass(surfaceId()), props.class].filter(Boolean).join(` `)}\n data-xui-surface={surfaceId()}\n data-xui-mode={mode()}\n data-xui-theme={theme().id}\n data-xui-density={props.density === `default` ? undefined : props.density}\n data-xui-motion={reducedMotion() ? `reduce` : undefined}\n data-xq={xq() || undefined}\n dir={direction()}\n style={rootStyle()}\n >\n <style data-xui-style=\"theme\" textContent={`${BASE_CSS}\\n${compiled().css}`} />\n <For each={styleBatches()}>{(batch, i) => <style data-xui-style=\"nodes\" textContent={i() === 0 ? `${batch.css}${layerCss()}` : batch.css} />}</For>\n <SurfaceContext.Provider value={ctx}>\n <div class=\"xui-container\">\n <Show when={root()}>\n <NodeView node={latestRoot()} />\n </Show>\n {props.children}\n <div ref={setPortal} class=\"xui-layer\" data-xui-layer=\"overlay\" />\n <div ref={setToastLayer} class=\"xui-toast-layer\" data-xui-layer=\"toast\" />\n </div>\n </SurfaceContext.Provider>\n <div ref={politeEl} class=\"xui-sr-only\" aria-live=\"polite\" aria-atomic=\"true\" data-xui-live=\"polite\" />\n <div ref={assertiveEl} class=\"xui-sr-only\" aria-live=\"assertive\" aria-atomic=\"true\" data-xui-live=\"assertive\" />\n </div>\n )\n}\n","// FEED-128: `createSurface` — the TS reducer as a Solid store (React's\n// `useSurface`). Feed it A2UI v0.9 server messages (`createSurface`,\n// `updateComponents`, `updateDataModel`, `deleteSurface`) or a nested\n// authoring tree, read back the normalized root, the issues and the data\n// model (live getters), and hand the result to\n// `<ExponentialSurface surface={…}>`.\n\nimport { createMemo, createSignal } from \"solid-js\"\nimport { CORE_CATALOG_ID, reduceNested, reduceSurface } from \"@exponential-at/ui\"\nimport type { ExtensionDef, FlatComponent, NestedNode, ReduceIssue, ResolvedTheme, UiNode } from \"@exponential-at/ui\"\nimport { setPointer } from \"@exponential-at/ui/web\"\nimport type { DataModel } from \"@exponential-at/ui/web\"\n\nexport interface A2uiMessage {\n version?: string\n createSurface?: { surfaceId: string; catalogId: string; theme?: unknown; sendDataModel?: boolean }\n updateComponents?: { surfaceId: string; components: FlatComponent[] }\n updateDataModel?: { surfaceId: string; path?: string; value?: unknown }\n deleteSurface?: { surfaceId: string }\n}\n\nexport interface CreateSurfaceOptions {\n /** The surface id messages must carry; default `main`. */\n surfaceId?: string\n catalogId?: string\n extensions?: readonly ExtensionDef[]\n /** A nested tree to start from (fixtures, static screens). */\n initial?: NestedNode\n /** The initial data model. */\n data?: DataModel\n}\n\n/** React's name for the options. */\nexport type UseSurfaceOptions = CreateSurfaceOptions\n\n/** The surface state (every field a live getter on the object\n * `createSurface` returns; never destructure it). */\nexport interface SurfaceState {\n readonly surfaceId: string\n readonly catalogId: string\n readonly root: UiNode | null\n readonly issues: ReduceIssue[]\n /** Round 2: the nodes a data `template` renders per item, by component id. */\n readonly templates?: Readonly<Record<string, UiNode>>\n /** The server's `createSurface.theme`, resolved (a host surface). */\n readonly theme?: ResolvedTheme\n readonly data: DataModel\n /** True after `deleteSurface`. */\n readonly deleted: boolean\n readonly components: readonly FlatComponent[]\n readonly extensions: readonly ExtensionDef[]\n apply: (message: A2uiMessage) => void\n setData: (pointer: string, value: unknown) => void\n /** Replace the tree with a nested authoring tree. */\n setNested: (tree: NestedNode) => void\n reset: () => void\n}\n\ninterface Inner {\n catalogId: string\n components: FlatComponent[]\n nested: NestedNode | null\n deleted: boolean\n}\n\nexport function createSurface(options: CreateSurfaceOptions = {}): SurfaceState {\n const surfaceId = options.surfaceId ?? `main`\n const extensions = options.extensions ?? []\n const initial: Inner = { catalogId: options.catalogId ?? CORE_CATALOG_ID, components: [], nested: options.initial ?? null, deleted: false }\n const initialData = options.data ?? {}\n // The tree and the data are two signals: a data write never re-reduces.\n const [inner, setInner] = createSignal<Inner>(initial)\n const [data, setDataModel] = createSignal<DataModel>(initialData)\n\n const apply = (message: A2uiMessage) => {\n if (message.createSurface) {\n if (message.createSurface.surfaceId !== surfaceId) return\n const catalogId = message.createSurface.catalogId\n setInner((cur) => ({ ...cur, catalogId, components: [], nested: null, deleted: false }))\n } else if (message.updateComponents) {\n if (message.updateComponents.surfaceId !== surfaceId) return\n const update = message.updateComponents.components\n // A later update replaces components by id and keeps the rest.\n setInner((cur) => {\n const byId = new Map(cur.components.map((c) => [c.id, c]))\n for (const c of update) byId.set(c.id, c)\n return { ...cur, components: [...byId.values()], nested: null, deleted: false }\n })\n } else if (message.updateDataModel) {\n if (message.updateDataModel.surfaceId !== surfaceId) return\n const { path, value } = message.updateDataModel\n setDataModel((cur) => setPointer(cur, path ?? ``, value))\n } else if (message.deleteSurface) {\n if (message.deleteSurface.surfaceId !== surfaceId) return\n setInner((cur) => ({ ...cur, components: [], nested: null, deleted: true }))\n }\n }\n\n const reduced = createMemo((): { root: UiNode | null; issues: ReduceIssue[]; templates?: Record<string, UiNode> } => {\n const cur = inner()\n if (cur.deleted) return { root: null, issues: [] }\n if (cur.nested) return reduceNested(cur.nested, { catalogId: cur.catalogId, extensions: extensions as ExtensionDef[] })\n if (cur.components.length === 0) return { root: null, issues: [] }\n return reduceSurface(cur.components, { catalogId: cur.catalogId, extensions: extensions as ExtensionDef[] })\n })\n\n return {\n surfaceId,\n get catalogId() {\n return inner().catalogId\n },\n get root() {\n return reduced().root\n },\n get issues() {\n return reduced().issues\n },\n get templates() {\n return reduced().templates\n },\n get data() {\n return data()\n },\n get deleted() {\n return inner().deleted\n },\n get components() {\n return inner().components\n },\n extensions,\n apply,\n setData: (pointer, value) => setDataModel((cur) => setPointer(cur, pointer, value)),\n setNested: (tree) => setInner((cur) => ({ ...cur, nested: tree, components: [], deleted: false })),\n reset: () => {\n setInner(initial)\n setDataModel(initialData)\n },\n }\n}\n","// FEED-128: the Solid side of the host API (React's host-surface.tsx). An\n// `ExponentialHost` (transport, router, surfaces, sources, functions,\n// policy) feeds `<HostSurface>`; the renderer's interactions go back\n// through `hostPlugin(host)`. Nothing here knows a transport or a backend.\n\nimport { Show, createEffect, createMemo, createSignal, onCleanup, splitProps, type Accessor, type JSX } from \"solid-js\"\nimport type { ExponentialHost, SurfaceStore, TransportStatus } from \"@exponential-at/ui\"\nimport type { HostPlugin } from \"./host\"\nimport type { SurfaceState } from \"./create-surface\"\nimport { ExponentialSurface, type ExponentialSurfaceProps } from \"./surface\"\nimport { latest } from \"./node-view\"\n\n/** The renderer callbacks that route through the host (React's\n * `hostPlugin`, identical). */\nexport function hostPlugin(host: ExponentialHost, base: HostPlugin = {}): HostPlugin {\n return {\n ...base,\n onAction: (e) => {\n host.action({ surfaceId: e.surfaceId, componentId: e.componentId, name: e.name, context: e.context, payload: e.payload, timestamp: e.timestamp })\n return base.onAction?.(e)\n },\n onFunctionCall: async (call) => {\n const outcome = await host.callFunction(call)\n await base.onFunctionCall?.(call)\n return outcome\n },\n openUrl: (url) => {\n host.openUrl(url)\n },\n urls: host.urlPolicy(),\n media: host.mediaOptions(),\n mediaRequest: base.mediaRequest ?? ((src) => host.mediaRequest(src)),\n onPaintError: (error) => {\n host.paintError(error)\n base.onPaintError?.(error)\n },\n }\n}\n\n/** A signal bumped on every host change (unsubscribed on cleanup). */\nfunction hostTick(host: ExponentialHost): Accessor<number> {\n const [tick, setTick] = createSignal(0)\n onCleanup(host.subscribe(() => setTick((n) => n + 1)))\n return tick\n}\n\n/** The ids of the host's surfaces, live (React's `useHostSurfaceIds`). */\nexport function createHostSurfaceIds(host: ExponentialHost): Accessor<string[]> {\n const tick = hostTick(host)\n return createMemo(\n () => {\n tick()\n return host.surfaceIds()\n },\n undefined,\n { equals: (a, b) => a.join(`\\n`) === b.join(`\\n`) }\n )\n}\n\n/** The host's transport state and the catalog it could not render, as live\n * getters (React's `useHostStatus`). */\nexport function createHostStatus(host: ExponentialHost): { readonly status: TransportStatus; readonly detail?: string; readonly unsupportedCatalog?: string } {\n const tick = hostTick(host)\n return {\n get status() {\n tick()\n return host.status\n },\n get detail() {\n tick()\n return host.statusDetail\n },\n get unsupportedCatalog() {\n tick()\n return host.unsupportedCatalog\n },\n }\n}\n\n/** React's name. */\nexport const useHostStatus = createHostStatus\n\n/** One host surface as the `SurfaceState` `<ExponentialSurface>` paints\n * (React's `useHostSurface`); null while the host has none. */\nexport function createHostSurface(host: ExponentialHost, surfaceId: string): Accessor<SurfaceState | null> {\n const tick = hostTick(host)\n const store = createMemo(() => {\n tick()\n return host.surface(surfaceId) ?? null\n })\n const [version, setVersion] = createSignal(0)\n createEffect(() => {\n const s = store()\n if (!s) return\n onCleanup(s.subscribe(() => setVersion((n) => n + 1)))\n })\n return createMemo(() => {\n version()\n const s = store()\n return s ? stateOf(host, s) : null\n })\n}\n\nfunction stateOf(host: ExponentialHost, store: SurfaceStore): SurfaceState {\n return {\n surfaceId: store.surfaceId,\n catalogId: store.catalogId,\n root: store.root,\n issues: store.issues,\n templates: store.templates,\n theme: store.theme,\n data: store.data,\n deleted: false,\n components: store.components,\n extensions: host.extensionDefs,\n apply: (message) => {\n host.receive(message)\n },\n setData: (pointer, value) => store.setData(pointer, value),\n setNested: () => {\n throw new Error(`exponential-ui: a host surface is fed by its transport, not setNested`)\n },\n reset: () => {},\n }\n}\n\nexport interface HostSurfaceProps extends Omit<ExponentialSurfaceProps, `surface` | `root` | `data` | `host`> {\n host: ExponentialHost\n surfaceId: string\n /** Icons, markdown, input observers… (actions, functions, urls and media\n * route through the host). */\n plugin?: HostPlugin\n /** Shown while the host has no surface with this id. */\n fallback?: JSX.Element\n}\n\n/** A surface the host's transport feeds. */\nexport function HostSurface(props: HostSurfaceProps): JSX.Element {\n const [local, rest] = splitProps(props, [`host`, `surfaceId`, `plugin`, `fallback`])\n const surface = createHostSurface(local.host, local.surfaceId)\n const plugin = createMemo(() => hostPlugin(local.host, local.plugin))\n const last = latest(surface)\n return (\n <Show when={surface()} fallback={local.fallback}>\n <ExponentialSurface {...rest} theme={last().theme ?? rest.theme} id={rest.id ?? local.surfaceId} surface={last()} host={plugin()} />\n </Show>\n )\n}\n"],"names":["parts","source","ctx","useSurfaceContext","instance","useInstance","recipeAttrs","createMemo","out","k","v","Object","entries","nativeRecipeProps","node","component","props","extensionDefs","propAttribute","String","domId","id","build","name","extra","states","item","PLACED","includes","all","filter","s","Boolean","own","undefined","class","compiled","scope","partClass","length","join","fn","with","at","atWith","defineProperty","get","useParts","TextPart","displayString","text","_$memo","Tag","as","_el$","_tmpl$","_$spread","_$mergeProps","part","htmlFor","_$insert","_el$2","_tmpl$2","_el$3","_tmpl$3","_el$4","_tmpl$4","BuiltinIcon","_$createComponent","IconGlyph","icons","host","builtinIconName","slot","width","size","height","FormContext","createContext","CloseOnSubmitContext","useForm","useContext","FormNative","closeOverlay","fields","FormRegistry","attempts","setAttempts","createSignal","summary","setSummary","disabled","bool","busy","submit","untrack","result","check","ok","n","errors","first","focus","announce","t","emit","values","value","register","field","changed","live","data","stillFailing","Provider","children","_el$5","firstChild","rootProps","str","e","preventDefault","stopPropagation","Show","when","nextSibling","For","each","_el$6","message","_$effect","createField","options","form","failingChecks","checks","touched","setTouched","dirty","setDirty","submitted","setSubmitted","show","fieldErrorsVisible","validateOn","validateOnDefault","createEffect","onCleanup","focusEl","element","errorId","invalid","describedBy","touch","change","FieldErrors","_el$7","m","_el$8","_tmpl$5","WindowedList","el","extentsByKey","Map","crossByKey","observed","keyOfEl","WeakMap","observer","version","bump","view","setView","equals","a","b","scroll","viewport","axis","horizontal","rtl","direction","gap","estimated","estimatedItemHeight","extents","est","count","key","itemKey","itemExtents","Array","from","_","i","isH","ResizeObserver","ro","entry","target","box","borderBoxSize","w","inlineSize","contentRect","h","blockSize","main","cross","set","observe","disconnect","scroller","setScroller","r","read","viewportOf","window","addEventListener","passive","removeEventListener","ext","off","itemOffsets","total","found","scrollParent","fallbackViewport","innerWidth","innerHeight","win","virtualWindow","overscan","WINDOW_OVERSCAN","start","end","headers","stickyRows","sort","pinned","stickyHeader","row","offset","pending","jump","index","align","header","inset","scrollOffsetForIndex","Math","max","delta","abs","by","left","top","scrollBy","on","p","tries","cancel","events","ref","scrollToIndex","place","right","transform","indices","push","rows","byKey","keys","every","c","spacer","css","_ref$","_$use","prev","isPinned","line","divider","measure","itemProps","bindAttrs","delete","unobserve","_c$","_p$","_v$9","_v$0","_$setAttribute","_$style","renderItem","_v$6","_v$7","_v$8","zIndex","_v$","_v$2","_v$3","_v$4","_v$5","_$className","o","BoxNative","pressable","press","onKey","currentTarget","fallback","onClick","WINDOW_THRESHOLD","CATALOG_WINDOW_THRESHOLD","ListNative","divided","tokens","theme","gapPx","num","spacing","hairline","control","rowExtent","tpl","templateItems","childCount","itemCount","items","sectionBy","sections","listSections","map","getPointer","path","cc","sectionRows","sticky","stickyHeaders","windowed","step","flatGap","style","mergeStyle","rowKeys","keyOf","dividerBefore","windowHandle","rootEl","rowOfIndex","findIndex","registerScroller","querySelector","block","scrollIntoView","inline","renderRow","ListRowView","listRole","role","itemRole","itemAttrs","before","flatKeys","flatIndex","_ref$2","flatMap","kind","paint","Number","slice","section","latest","_c$2","slots","LiteralScope","pointer","LITERAL_ROWS_ROOT","replace","suffix","NodeView","TemplateItemView","outer","deriveContext","setPointer","setData","startsWith","SurfaceContext","ScopeContext","InstanceContext","UnknownNative","_el$9","_el$0","_el$1","Pending","MarkdownImage","media","createMediaSource","src","mediaRequestOf","alt","url","error","MarkdownLink","openUrl","href","$$click","nodes","type","_tmpl$6","_tmpl$7","_tmpl$8","_tmpl$9","linkHref","dest","label","_tmpl$0","renderList","list","_tmpl$1","task","_el$10","_tmpl$10","checked","content","ordered","_el$11","_tmpl$11","_el$12","_tmpl$12","_el$13","_el$14","_tmpl$13","_el$15","lang","Dynamic","min","level","_el$16","_tmpl$14","blocks","_el$17","_tmpl$15","_el$18","_el$19","_el$20","head","_el$21","_tmpl$16","_$p","textAlign","_el$22","_tmpl$17","cell","_el$23","_tmpl$18","_tmpl$19","tree","renderMarkdown","parseMarkdown","BuiltinMarkdown","_el$25","_tmpl$20","_$delegateEvents","TextNative","lines","shimmer","WebkitLineClamp","MarkdownNative","Markdown","IconNative","createPending","setPending","mounted","track","then","createPendingShown","loading","shown","setShown","setTimeout","PENDING_DELAY_MS","clearTimeout","ButtonNative","icon","iconOnly","hasChild","pendingLabel","shownLabel","idleWidth","offsetWidth","styled","root","minWidth","xs","PaintIcon","CHROME","spinner","LinkNative","raw","external","rel","handled","ToggleNative","pressed","setPressed","createBoundState","next","_c$3","NATIVES_ACTIONS","Button","Link","Toggle","colorVar","tone","tokenVar","seriesColor","AXIS_FONT","ChartNative","createUniqueId","sparkline","round","series","objects","arr","NaN","categories","boxHeight","showAxes","showGrid","showValues","setBox","createElementSize","fmt","formatter","number","active","setActive","plotRef","geo","sp","rd","ss","nn","measured","chartExtent","ticks","niceTicks","lo","hi","tickText","yLabel","xLabel","axes","sv","pad","l","innerW","innerH","y","cx","zero","mx","x","px","arcs","bars","lineValues","R","ox","oy","inner","DONUT_HOLE","ring","forEach","si","r0","r1","reduce","isFinite","a0","PI","share","a1","large","cos","sin","full","d","mid","rm","pts","color","area","dots","cy","stacked","groupW","bw","acc","x0","to","barW","rx","fill","middle","legendEntries","legend","showLegend","title","summaryParams","chartSummaryParams","summaryText","onMove","getBoundingClientRect","g","clientX","floor","dim","low","valueLabel","body","_v$1","_v$10","_v$11","_v$12","_v$13","_v$14","_v$15","_v$16","_v$17","_v$18","_v$19","_v$20","tooltip","tipX","cat","position","pointerEvents","background","$$pointermove","$$keydown","_el$29","_v$36","_v$37","_v$38","_v$39","_v$21","_v$22","_v$23","_v$24","Index","_el$30","_v$40","_v$41","_v$42","_el$31","_v$43","_v$44","_v$25","_v$26","_v$27","_v$28","_v$29","_v$30","_el$32","_el$33","_el$26","_el$28","_el$24","_el$34","_el$35","_tmpl$21","_el$36","_el$37","_tmpl$22","_c$4","_v$31","_v$32","_v$33","_v$34","_v$35","NATIVES_CHART","Chart","TABBABLE","tabbables","container","querySelectorAll","tabIndex","closest","PickerPopover","present","setPresent","open","prevAnimation","animationName","getComputedStyle","was","current","display","defer","presence","mount","unmount","CSS","escape","animationFillMode","PopoverContent","placement","setPlacement","positioned","setPositioned","wrapper","setWrapper","interactedOutside","pointerDownOutside","side","split","mountWrapper","setAttribute","dir","interactOutside","trigger","Node","contains","inside","onMount","floating","anchor","z","detect","padding","OVERLAY_PADDING","boundary","altBoundary","update","computePosition","strategy","middleware","mainAxis","OVERLAY_OFFSET","alignmentAxis","shift","crossAxis","limiter","limitShift","flip","apply","elements","rects","availableWidth","availableHeight","setProperty","reference","transformOrigin","placed","middlewareData","dpr","devicePixelRatio","willChange","origin","stop","autoUpdate","doc","ownerDocument","onPointerDown","setOpen","onFocusIn","onEscape","timer","capture","onOpenAutoFocus","back","onKeyDown","altKey","ctrlKey","metaKey","focused","document","activeElement","last","shiftKey","animation","Portal","portal","contentId","attrs","onPointerOver","ChipInputNative","listId","setValues","setText","setFocused","inputEl","f","Infinity","suggestions","toLowerCase","add","trim","cur","listEl","chipAt","remove","focusIndex","onChipKey","nav","createListNavigation","isDisabled","onPick","activeId","placeholder","removeAttribute","phrase","joinIds","onFocus","onBlur","pieces","pop","$$mousedown","FileUploadNative","files","setFiles","zoneEl","multiple","accept","maxSize","drag","setDrag","setBusy","refused","setRefused","formatFileSize","locale","take","many","picked","file","acceptsFile","meta","some","added","onUpload","nodeId","finally","fileName","onDrag","over","hint","_ref$3","tabindex","click","dataTransfer","_ref$4","NATIVES_CHIPS","ChipInput","FileUpload","choiceColumns","columns","choiceValues","isArray","choiceToggle","order","rank","indexOf","MAX_SAFE_INTEGER","TilePicture","ChoiceTilesNative","description","image","JSON","stringify","setValue","buttons","pictures","enabled","tabStop","firstPicked","joined","pick","move","forward","rootRest","rootClass","_style","rest","selected","opt","NATIVES_CHOICE_TILES","ChoiceTiles","CodeBlockNative","code","language","tokenizeCode","highlight","Set","numbers","lineNumbers","copyable","heading","maxLines","copied","setCopied","copy","clipboard","navigator","writeText","codeText","gutterWidth","bodyClass","codeClass","wrap","has","NATIVES_CODE","CodeBlock","triggerAttrs","CalendarGrid","initial","setFocus","Date","getFullYear","getMonth","grid","moved","days","monthGrid","firstDay","weekdays","narrow","Intl","DateTimeFormat","weekday","short","date","isoDate","format","monthLabel","dayLabel","year","month","day","shiftMonth","addMonths","batch","calendarStop","goto","addDays","getDay","week","sel","isSelected","range","inRange","outside","sameDay","today","dayPart","getDate","firstDayOf","firstDayOfWeek","weekStart","focusGridStop","DatePickerNative","parseIsoDate","DateRangePickerNative","setStart","setEnd","hover","setHover","createComputed","ev","getAttribute","parseTime","exec","formatHHmm","minutes","padStart","TimePickerNative","times","clock","hour","minute","createListNavigationSync","labelOf","typeahead","_$addEventListener","_ref$5","onPointerMove","NATIVES_DATES","DatePicker","DateRangePicker","TimePicker","sizeOf","resolveRecipe","mode","RingNative","trackStyle","fillStyle","stroke","borderWidth","fillStroke","SpinnerNative","SKELETON_BARS","SkeletonNative","borderRadius","rounded","dot","rowHeight","indexes","lead","TreeGuidesNative","depth","elbowAt","tee","pass","passThrough","TREE_GUIDE_COLUMN","vertical","TREE_GUIDE_BRIDGE","bottom","cols","elbow","borderLeftWidth","borderBottomWidth","borderBottomLeftRadius","TREE_GUIDE_RADIUS","NATIVES_FEEDBACK","Ring","Spinner","Skeleton","TreeGuides","createInputSender","prop","boundPath","send","revision","surfaceId","componentId","hostPath","onInput","writeLocal","InputNative","TextFieldNative","multiline","TextareaNative","autosize","maxRows","cs","lh","parseFloat","lineHeight","fontSize","paddingTop","paddingBottom","borderTopWidth","scrollHeight","overflowY","createHostOwnedValue","auto","fieldStates","edit","commit","defaultValue","decimalsOf","NumberFieldNative","precision","decimalSep","NumberFormat","formatToParts","find","decimals","clamp","toFixed","stepBy","base","unit","inputmode","parseLocaleNumber","big","CheckboxNative","setCheckedState","inForm","createInForm","stopped","cancelBubble","BubbleCheck","transformFirst","bubbles","SwitchNative","setTrack","travel","trackWidth","recipes","Switch","thumb","onRow","ARROWS","RadioNative","group","itemEl","orientation","setTabStop","tabbingBack","setTabbingBack","focusable","clickFocus","arrowDown","onDocKeyDown","onDocKeyUp","itemNodes","choose","outline","onMouseDown","keyboard","rovingFocusFirst","oid","btn","btnEl","setBtnEl","intent","KEY_INTENT","candidates","reverse","SliderNative","setThumb","thumbSize","fromLeft","startEdge","endEdge","percent","percentOf","inBoundsOffset","snapped","roundValue","decimalCount","clampTo","rect","fromPointer","linearScale","rangeStyle","wrapperStyle","_el$27","$$pointerup","hasPointerCapture","pointerId","releasePointerCapture","$$pointerdown","setPointerCapture","PAGE_KEYS","BACK_KEYS","skip","SliderBubble","ComposerNative","grow","submitLabel","attachments","NATIVES_INPUTS","Input","Textarea","NumberField","Checkbox","Radio","Slider","Composer","MediaSizer","MEDIA_INTRINSIC_WIDTH","ImageNative","fit","state","setState","aspectRatio","MEDIA_ASPECT_RATIO","objectFit","fx","focalX","fy","focalY","failed","objectPosition","VideoNative","createMediaSrc","posterUrl","poster","ratio","autoplay","createRenderEffect","muted","durationMs","AudioPlayerNative","flexDirection","initials","toUpperCase","seedHue","seed","charCodeAt","AvatarNative","hue","tint","backgroundColor","status","createImageLoadingStatus","imageStatus","delay","canRender","setCanRender","ms","CarouselNative","pages","page","setPage","scrollTo","offsetLeft","behavior","reducedMotion","onScroll","clientWidth","scrollLeft","go","loop","byId","ids","pageOf","toggleAttribute","withClass","indicators","NATIVES_MEDIA","Image","Video","AudioPlayer","Avatar","Carousel","sameKeys","keysOf","childAt","TabsNative","tabs","closable","lent","setLent","lend","lending","baseId","triggerId","triggers","roving","createRovingGroup","select","mountPrevented","raf","requestAnimationFrame","cancelAnimationFrame","groupHandlers","tab","onPointerEnter","onPointerLeave","button","matches","addable","child","hidden","joinLike","asArray","SegmentedNative","variant","bar","setBound","SegmentedBar","refs","selectedIndex","setFocusIndex","en","ACCORDION_KEYS","AccordionNative","isOpen","toggle","rootAttrs","_dir","AccordionRow","onToggle","collapsible","createCollapsibleContent","_ref$6","NATIVES_NAV","Tabs","Segmented","Accordion","SearchBody","moreBelow","setMoreBelow","single","query","scrollTop","clientHeight","autoFocus","isComposing","leaveBubbles","selectionStart","selectionEnd","$$input","onQuery","showCount","maxHeight","pos","isActive","rowPart","identifier","emptyText","SearchListNative","setQuery","setPicked","hostSearches","search","typed","q","DEBOUNCE_MS","searchMatches","owner","NATIVES_SEARCH","SearchList","TYPE_BUTTON","createOpenState","overlayRootProps","triggerNode","DialogNative","ModalNative","DrawerNative","dismissible","titleId","descriptionId","onOpenChange","close","createDragToDismiss","dragToDismiss","hasTrigger","triggerEl","overlayPresence","createPresence","contentPresence","Content","layer","createLayer","disableOutsidePointerEvents","onEscapeKeyDown","onPointerDownOutside","original","detail","originalEvent","ctrlLeftClick","onFocusOutside","onInteractOutside","onDismiss","createFocusScope","trapped","onMountAutoFocus","marked","onUnmountAutoFocus","registered","setRegistered","onPointerUp","onPointerCancel","ModalHead","LayerContext","footer","setPanel","bindStyle","attach","useFocusGuards","useModalEffects","Overlay","useScrollLock","LayerPortal","HOVER_OPEN_MS","HOVER_CLOSE_MS","PopoverNative","hoverMode","openOn","contentEl","schedule","setAnchor","hasInteractedOutside","hasPointerDownOutside","defaultPrevented","Popper","sideOffset","collisionPadding","popper","placedSide","placedAlign","setContent","popperContentStyle","isPositioned","pointerType","relatedTarget","TOOLTIP_OPEN","TOOLTIP_DELAY_MS","TOOLTIP_SKIP_DELAY_MS","TooltipNative","setOpenState","delayed","setDelayed","openDelayed","openTimer","skipTimer","pointerMoveOpened","pointerDown","anchorEl","dispatchEvent","CustomEvent","handleOpen","handleClose","handleDelayedOpen","stateAttribute","grace","trackGrace","point","clientY","overTrigger","overContent","inPolygon","leave","graceArea","onOtherOpen","VisuallyHidden","once","MenuRootContext","menuKind","MenuEntry","separator","MenuSeparator","MenuLabel","MenuSub","MenuCheckbox","MenuPlainItem","ItemIcon","Shortcut","createSelectable","destructive","handlers","shortcut","isBinding","absolutePath","createMenuRow","setTrigger","graceTimer","openKeys","closeKey","setGrace","dataset","bleed","near","far","onTriggerLeave","typingAhead","preventScroll","MenuContent","labelledBy","overlay","searchable","onCloseAutoFocus","MenuEntries","raws","MenuSearch","frame","input","__","MenuNative","PressMenuOpening","ContextMenuOpening","createMenuRoot","useKeyboardTracking","_c$5","setPoint","longPress","clearLongPress","openAt","DOMRect","fromRect","_el$38","on:contextmenu","on:pointercancel","MouseEvent","cancelable","ToastNative","leaving","setLeaving","paused","setPaused","duration","remaining","startedAt","motion","standard","now","assertive","toastLayer","_el$39","_el$40","_el$41","_el$42","onFocusOut","_c$6","_el$43","_c$7","actionLabel","_el$44","_c$8","_el$45","NATIVES_OVERLAYS","Dialog","Drawer","Popover","Tooltip","Menu","Toast","RESIZE_KEYS","ResizableNative","limits","panels","normalizeSizes","sizes","setLive","liveLatest","mainOf","handle","dragDelta","resizePanels","onPointerEnd","keyboardResize","panelId","lim","flex","RESIZE_HANDLE_HIT","NATIVES_RESIZABLE","Resizable","asList","SelectNative","optionsBound","sourced","setSourced","request","askSource","optionSource","mine","localFilter","Combobox","PlainSelect","chosen","setInForm","downAt","radixTypeahead","findNextItem","openUp","reset","pageX","pageY","optionKey","typing","modifier","OPEN_KEYS","keyed","_key","NativeSelect","onChange","PlainSelectContent","clearDownAt","enabledNodes","focusFirstOf","previous","selectedNode","opts","onWindowClose","up","dismissable","keepOnFocusOutside","popperWrapper","onPlaced","boxSizing","textId","isFocused","SELECTION_KEYS","overflow","mountIn","optionId","ComboboxContent","listRef","isInside","onOutside","isSel","NATIVES_SELECT","Select","CURRENCY_CODE","cellNumber","checkState","TableCheckbox","setSize","offsetHeight","opacity","margin","TableNative","rowKey","selectable","striped","rowsPath","sortBound","setSort","setSelected","tableRowKeys","sortRows","template","cycle","allKeys","allSelected","someSelected","interactive","rowPress","focusKey","setFocusKey","orderKeys","stopKey","bodyEl","pendingFocus","focusRow","moveTo","clamped","literalEdits","setLiteralEdits","editLiteral","formatted","missing","currency","test","relativeTime","Row","rp","odd","queueMicrotask","ci","RowScope","tableId","onLiteralEdit","gridTemplateColumns","caption","ariaSort","sortable","literalPath","literalData","lp","NATIVES_TABLE","Table","CONTAINERS","responsiveCache","responsiveProps","extensions","byComponent","hit","def","catalogView","components","responsive","styleIdOf","styleId","createRootProps","recipeProps","useScope","macros","extensionMacroNames","classes","nodeClass","recipe","macro","isMacroComponent","accessibility","assign","ariaAttributes","resolveAccessibility","resolveContextOf","ownDirection","more","forced","runNodeAction","event","payload","action","rctx","withOwnWrites","functionCall","args","resolveValue","context","call","functions","onFunctionCall","Promise","sent","runNodeEvent","timestamp","toISOString","onAction","createEmitter","styleDirection","xq","queryToken","visible","resolveVisible","directed","BoundNode","NodeList","sameList","nodeCell","resolved","resolveNodeProps","isResponsiveValue","responsiveAt","breakpoint","dynamicStyle","dynamicStyleEntries","cssValue","fonts","override","extensionComponent","Painter","NATIVES","UNKNOWN_COMPONENT","unknown","onUnknown","latestSize","painterProps","TemplateChildren","enumerable","SlotView","guarded","UNGUARDED","PaintBoundary","propsSignature","paintedId","paintFailures","report","failures","signature","Error","onPaintError","console","ErrorBoundary","Painted","templateNode","templateItemKeys","templateBudget","allowed","templateSiteKey","itemInstance","instanceSegment","TemplateItems","resolvedCache","resolveThemeInput","builtinTheme","DEFAULT_THEME_ID","issues","themeOrDefault","chain","derivedCache","surfaceTheme","density","highContrast","applyDensity","applyContrast","EMPTY","NO_TEMPLATES","EMPTY_HOST","surfaceLayout","inputs","activeBreakpoint","breakpoints","viewportHeight","queries","parseMediaCondition","mediaMatches","FOCUSABLE","platformZone","resolvedOptions","timeZone","IS_DEV","process","warnedTemplates","warnMissingTemplates","templates","visit","warn","sl","isPlain","sameData","is","pa","getPrototypeOf","prototype","ka","hasOwnProperty","usesLiveClock","ExponentialSurface","mergeProps","contrast","DEFAULT_LOCALE","uid","surface","prefersDark","createMediaQuery","prefersContrast","resolveMode","resolution","onThemeIssues","registeredExtensions","extensionCatalogs","compiledTheme","extensionMacros","textDirection","strings","stringTable","params","formatString","localData","setLocalData","seenData","latestRoot","templateRoots","cells","walkNodes","budget","issue","issueId","sheet","compileNodeSheet","chunks","batches","nodeSheetBatches","styleBatches","setPortal","setToastLayer","layout","explicit","politeEl","assertiveEl","textContent","CLIENT_FUNCTIONS","memoFormatter","intlFormatter","liveClock","setMinute","setInterval","clearInterval","scrollers","openAllowed","nodeEl","run","command","handleRef","layerCss","md","scopeSel","surfaceClass","rootStyle","BASE_CSS","hostPlugin","outcome","callFunction","urls","urlPolicy","mediaOptions","mediaRequest","paintError","hostTick","tick","setTick","subscribe","createHostSurfaceIds","surfaceIds","createHostStatus","statusDetail","unsupportedCatalog","useHostStatus","createHostSurface","store","setVersion","stateOf","catalogId","deleted","receive","setNested","HostSurface","local","splitProps","plugin"],"mappings":"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"}
|