@exponential_app/eui-react 0.2.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/surface.tsx", "../src/context.tsx", "../src/extensions.ts", "../src/node-view.tsx", "../src/live.ts", "../src/form.tsx", "../src/natives/shared.tsx", "../src/icons.tsx", "../src/natives/actions.tsx", "../src/natives/bound.ts", "../src/natives/chart.tsx", "../src/platform.ts", "../src/natives/chips.tsx", "../src/natives/listbox.ts", "../src/natives/choice-tiles.tsx", "../src/media.ts", "../src/natives/code.tsx", "../src/natives/dates.tsx", "../src/natives/resizable.tsx", "../src/natives/feedback.tsx", "../src/natives/inputs.tsx", "../src/inputs.ts", "../src/natives/layout.tsx", "../src/list.tsx", "../src/natives/media.tsx", "../src/natives/nav.tsx", "../src/natives/overlays.tsx", "../src/natives/search.tsx", "../src/natives/qr.tsx", "../src/natives/select.tsx", "../src/natives/table.tsx", "../src/natives/text.tsx", "../src/markdown.tsx", "../src/natives/index.ts", "../src/use-surface.ts", "../src/index.ts", "../src/host-surface.tsx"],
3
+ "sources": ["../src/surface.tsx", "../src/context.tsx", "../src/extensions.ts", "../src/node-view.tsx", "../src/live.ts", "../src/form.tsx", "../src/natives/shared.tsx", "../src/icons.tsx", "../src/natives/actions.tsx", "../src/natives/bound.ts", "../src/natives/chart.tsx", "../src/platform.ts", "../src/natives/chips.tsx", "../src/natives/listbox.ts", "../src/natives/choice-tiles.tsx", "../src/media.ts", "../src/natives/code.tsx", "../src/natives/dates.tsx", "../src/natives/motion.tsx", "../src/natives/resizable.tsx", "../src/natives/feedback.tsx", "../src/natives/inputs.tsx", "../src/inputs.ts", "../src/natives/layout.tsx", "../src/list.tsx", "../src/natives/media.tsx", "../src/natives/nav.tsx", "../src/natives/overlays.tsx", "../src/natives/search.tsx", "../src/natives/qr.tsx", "../src/natives/select.tsx", "../src/natives/table.tsx", "../src/natives/text.tsx", "../src/markdown.tsx", "../src/natives/zoomable-image.tsx", "../src/natives/index.ts", "../src/use-surface.ts", "../src/index.ts", "../src/host-surface.tsx"],
4
4
  "sourcesContent": [
5
5
  "// VAPP-87 + round 1: `<ExponentialSurface>` — one A2UI surface painted with\n// real CSS. The root carries the theme's scope class + the variable block\n// (per mode), the surface's node sheet, the live regions, and an inner\n// `xui` CONTAINER the breakpoints resolve against (a container query cannot\n// target its own element, so the root and the container are two elements).\n// The OVERLAY and TOAST layers sit INSIDE the container (round 1, audit bug\n// C): a Dialog's content still matches `@container xui` breakpoints, and an\n// inline-size container does not trap `position: fixed`. Themes,\n// extensions, the host plugin and the surface settings (locale, strings,\n// mode incl. `system`, density, contrast) are props; nothing global is\n// touched, so two surfaces on one page can wear two themes.\n\nimport { useCallback, useEffect, useId, useImperativeHandle, useLayoutEffect, useMemo, useRef, useState, useSyncExternalStore, type CSSProperties, type ReactNode, type Ref } from \"react\"\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_app/eui\"\nimport type { Formatter, ModeName, ResolvedTheme, ScrollAlign, TemplateBudget, ThemeIssue, ThemeSource, UiNode, SurfaceCommand } from \"@exponential_app/eui\"\nimport { BASE_CSS } from \"@exponential_app/eui/web\"\nimport { compileNodeSheet, nodeSheetBatches, queryToken, share, surfaceClass, type NodeSheetBatch } from \"@exponential_app/eui/web\"\nimport { SurfaceContext, type SurfaceContextValue } from \"./context\"\nimport { CLIENT_FUNCTIONS, memoFormatter, setPointer, type DataModel } from \"@exponential_app/eui/web\"\nimport { extensionCatalogs, extensionMacroNames, registeredExtensions, subscribeExtensions, type ReactExtension } from \"./extensions\"\nimport type { HostPlugin } from \"./host\"\nimport { NodeView } from \"./node-view\"\nimport { useMediaQuery } from \"./platform\"\nimport { openAllowed } from \"@exponential_app/eui/web\"\nimport { compiledTheme } from \"@exponential_app/eui/web\"\nimport { layoutSize } from \"@exponential_app/eui/web\"\nimport type { SurfaceState } from \"./use-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 /** Round 2: item `index` (data order) of the List/Table `id` into view;\n * false when no such list is painted. */\n scrollToIndex: (id: string, index: number, align?: ScrollAlign) => boolean\n}\n\nexport interface ExponentialSurfaceProps {\n /** The state from `useSurface` (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`, round 2 §4): a\n * data template's component lives here, never in the tree. */\n templates?: Readonly<Record<string, UiNode>>\n data?: DataModel\n /** A built-in id (`exponential` | `neutral` | `playful` | `orange`), a theme file\n * (resolved against the built-ins) or a resolved theme. */\n theme?: ThemeInput\n /** `light | dark | system` (default `system`: the platform's preference,\n * followed live). */\n mode?: ModeName | `system`\n /** Scales `$control.*` and `$spacing.*` by the theme's `$density.*`. */\n density?: `compact` | `default` | `comfortable`\n /** `system` (default) follows `prefers-contrast: more`; `high` forces the\n * theme's high-contrast overlays. */\n contrast?: `normal` | `high` | `system`\n /** BCP 47 (default `en-US`): formatting, calendar names, week start, the\n * default text direction. */\n locale?: string\n /** IANA time zone dates and relative times format in (default the\n * 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 ReactExtension[]\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: what the height and\n * orientation style conditions test (the Rust core's `set_viewport`\n * height). Default: an explicit inline `style.height` on the surface,\n * else UNKNOWN (orientation = landscape, no min/max-height matches;\n * contract §2) — never the surface's CONTENT height (a height rule must\n * not feed back into its own measurement). The gpui host passes 0 (=\n * unknown) today, so the default keeps web and desktop identical. */\n viewportHeight?: number\n /** An explicit id (defaults to React's `useId`); must be unique per page. */\n id?: string\n /** Host → surface commands (focus, announce, scrollIntoView). */\n handleRef?: Ref<SurfaceHandle>\n className?: string\n style?: CSSProperties\n children?: ReactNode\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 (built-ins cached by id, theme files\n * resolved against the built-ins and cached by content). NEVER throws\n * (round 4, VAPP-103): an unknown built-in id or an invalid theme file\n * paints with the default theme and carries its issues, which the surface\n * reports through `HostPlugin.onThemeIssues`. */\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 ReactExtension[] = []\nconst NO_TEMPLATES: Readonly<Record<string, UiNode>> = {}\nconst EMPTY_HOST: HostPlugin = {}\n\nconst useIsoLayoutEffect = typeof window === `undefined` ? useEffect : useLayoutEffect\n\n/** What the surface knows of its box: the measured WIDTH and the condition\n * height (an explicit inline height; see `viewportHeight`). */\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 React: the active breakpoint and the\n * matching JS-evaluated conditions (`data-xq`). A resize that changes\n * neither re-renders nothing. */\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 NO_CHUNKS: ReadonlyMap<string, string> = new Map()\n/** One `dangerouslySetInnerHTML` object per batch (a new object rewrites the element). */\nconst batchHtml = new WeakMap<NodeSheetBatch, { __html: string }>()\n\nconst FOCUSABLE = `input:not([disabled]),textarea:not([disabled]),select:not([disabled]),button:not([disabled]),a[href],[tabindex]:not([tabindex=\"-1\"]),[contenteditable=\"true\"]`\n\n/** `intlFormatter` built on its first use (VAPP-137): the platform zone\n * costs an `Intl.DateTimeFormat` (~7 ms cold), and most surfaces format\n * nothing. */\nfunction lazyFormatter(locale: string, timeZone: string | undefined): Formatter {\n let base: Formatter | undefined\n const get = () => (base ??= intlFormatter(locale, timeZone ?? platformZone()))\n return {\n locale,\n number: (value, o) => get().number(value, o),\n currency: (value, currency, o) => get().currency(value, currency, o),\n percent: (value, o) => get().percent(value, o),\n date: (value, o) => get().date(value, o),\n relativeTime: (value, now) => get().relativeTime(value, now),\n plural: (value) => get().plural(value),\n }\n}\n\nconst platformZone = (): string => {\n try {\n return Intl.DateTimeFormat().resolvedOptions().timeZone || `UTC`\n } catch {\n return `UTC`\n }\n}\n\n/** Bundlers replace `process.env.NODE_ENV`; without one (a raw ESM load)\n * it throws, which counts as production. Declared here so the published\n * types build without Node's. */\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` paints\n * NO items (round 2 §4: the reducer lifts templates out of the tree; pass\n * the reduce result's `templates` next to `root`). */\nfunction warnMissingTemplates(surfaceId: string, root: UiNode, templates: 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\n/** Whether a tree calls `formatRelativeTime` without a `now`, or has a\n * Table with a `relativeTime` column (or bound columns, unknown until\n * data): the surface then re-binds once a minute (round 2 §3). */\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 (an\n * inline `data={{ items, filter }}` with stable values costs one pass over\n * its top-level keys). */\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\nfunction sameBudget(a: TemplateBudget | undefined, b: TemplateBudget | undefined): boolean {\n if (a === b) return true\n if (!a || !b || a.issue?.id !== b.issue?.id || a.issue?.message !== b.issue?.message || a.allowed.size !== b.allowed.size) return false\n for (const [k, v] of a.allowed) if (b.allowed.get(k) !== v) return false\n return true\n}\n\ntype LiveMembers = Pick<SurfaceContextValue, `data` | `breakpoint` | `xq` | `mode`>\n\n/** The context with its live members as getters over `live`. */\nfunction withLive(value: Omit<SurfaceContextValue, keyof LiveMembers>, live: { current: LiveMembers }): SurfaceContextValue {\n return Object.defineProperties(value, {\n data: { get: () => live.current.data, enumerable: true, configurable: true },\n breakpoint: { get: () => live.current.breakpoint, enumerable: true, configurable: true },\n xq: { get: () => live.current.xq, enumerable: true, configurable: true },\n mode: { get: () => live.current.mode, enumerable: true, configurable: true },\n }) as SurfaceContextValue\n}\n\nexport function ExponentialSurface({\n surface,\n root: rootProp,\n templates: templatesProp,\n data: dataProp,\n theme: themeProp,\n mode: modeSetting = `system`,\n density = `default`,\n contrast = `system`,\n locale = DEFAULT_LOCALE,\n timeZone,\n strings: stringOverrides,\n host,\n extensions: extensionsProp = EMPTY,\n states = EMPTY as unknown as readonly string[],\n measure,\n direction: directionProp,\n width,\n viewportHeight,\n id: idProp,\n handleRef,\n className,\n style,\n children,\n}: ExponentialSurfaceProps) {\n const reactId = useId()\n const surfaceId = idProp ?? surface?.surfaceId ?? reactId.replace(/[^a-zA-Z0-9]/g, ``)\n const prefersDark = useMediaQuery(`(prefers-color-scheme: dark)`)\n const prefersContrast = useMediaQuery(`(prefers-contrast: more)`)\n const reducedMotion = useMediaQuery(`(prefers-reduced-motion: reduce)`)\n const hover = useMediaQuery(`(hover: hover)`, true)\n const mode: ModeName = modeSetting === `system` ? resolveMode(`system`, prefersDark) : modeSetting\n const resolution = useMemo(() => resolveThemeInput(themeProp), [themeProp])\n const baseTheme = resolution.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 const onThemeIssues = host?.onThemeIssues\n useEffect(() => {\n if (resolution.issues.length > 0) onThemeIssues?.(resolution.issues)\n }, [resolution, onThemeIssues])\n const theme = surfaceTheme(baseTheme, density, contrast === `high` || (contrast === `system` && prefersContrast))\n const global = useSyncExternalStore(subscribeExtensions, registeredExtensions, registeredExtensions)\n const extensions = useMemo(() => [...global, ...extensionsProp], [global, extensionsProp])\n const extensionDefs = useMemo(() => extensionCatalogs(extensions), [extensions])\n const macros = useMemo(() => extensionMacroNames(extensions), [extensions])\n const compiled = useMemo(() => compiledTheme(theme, { extensionMacros: macros }), [theme, macros])\n const direction = directionProp ?? textDirection(locale)\n const strings = useMemo(() => stringTable(stringOverrides ?? {}), [stringOverrides])\n const t = useCallback((id: string, params?: Record<string, unknown>) => formatString(strings[id] ?? id, params ?? {}), [strings])\n\n // Data: the surface state's, or local state over the `data` prop.\n // A `data` prop with new CONTENT replaces the local model (an inline\n // object re-created on every parent render keeps the user's edits).\n // Compared structurally against the last ADOPTED prop (identity first,\n // then per top-level key), never serialised.\n const [localData, setLocalData] = useState<DataModel>(dataProp ?? {})\n const [seenData, setSeenData] = useState(dataProp)\n if (dataProp !== seenData && !sameData(dataProp, seenData)) {\n setSeenData(dataProp)\n setLocalData(dataProp ?? {})\n }\n const data = surface ? surface.data : localData\n // Through a ref: the surface state is a new object on every change, and a\n // new `setData` would be a new context (every node re-rendered).\n const latestSurface = useRef(surface)\n latestSurface.current = surface\n const setData = useCallback((pointer: string, value: unknown) => {\n const current = latestSurface.current\n if (current) current.setData(pointer, value)\n else setLocalData((cur) => setPointer(cur, pointer, value))\n }, [])\n\n // VAPP-141: a new tree shares every unchanged node with the last one\n // (`share`), so a streamed `updateComponents` re-renders only the nodes\n // it changed.\n const lastTree = useRef<{ root: UiNode | null; templates: Readonly<Record<string, UiNode>> }>({ root: null, templates: NO_TEMPLATES })\n const rawRoot = surface ? surface.root : (rootProp ?? null)\n const root = useMemo(() => (lastTree.current.root = share(lastTree.current.root, rawRoot)), [rawRoot])\n // Round 2 §4: a data template's node comes from the reducer's LIFTED\n // `templates` (it is no longer in the tree, so never painted in place).\n const rawTemplates = (surface ? surface.templates : templatesProp) ?? NO_TEMPLATES\n const templates = useMemo(() => (lastTree.current.templates = share(lastTree.current.templates, rawTemplates)), [rawTemplates])\n const templateNode = useCallback((componentId: string) => templates[componentId], [templates])\n const templateRoots = useMemo(() => Object.values(templates), [templates])\n // VAPP-103: past `maxTemplateItems` items or `maxComponents` nodes per\n // surface the rest is not rendered (ONE issue, the Rust build's rule).\n // Kept while its counts are the same (it is in the context: a new one\n // re-renders every node).\n const lastBudget = useRef<TemplateBudget | undefined>(undefined)\n const budget = useMemo(() => {\n const next = root ? templateBudget(root, data, templateNode) : undefined\n if (sameBudget(lastBudget.current, next)) return lastBudget.current\n return (lastBudget.current = next)\n }, [root, data, templateNode])\n useEffect(() => {\n if (budget?.issue) console.warn(`[exponential-ui] ${surfaceId}: ${budget.issue.id}: ${budget.issue.message}`)\n }, [surfaceId, budget?.issue?.id, budget?.issue?.message])\n useEffect(() => {\n if (IS_DEV && root) warnMissingTemplates(surfaceId, root, templates)\n }, [surfaceId, root, templates])\n const sheet = useMemo(() => (root ? compileNodeSheet([root, ...templateRoots], surfaceId, theme) : { css: ``, queries: [], chunks: NO_CHUNKS }), [root, templateRoots, surfaceId, theme])\n // VAPP-152: the node sheet in `<style>` batches; a streamed node adds\n // one, the unchanged ones keep their element and text (no surface-wide\n // restyle).\n const lastBatches = useRef<NodeSheetBatch[]>([])\n const batches = useMemo(() => (lastBatches.current = nodeSheetBatches(lastBatches.current, sheet.chunks)), [sheet.chunks])\n\n const [rootEl, setRootEl] = useState<HTMLElement | null>(null)\n const [portal, setPortal] = useState<HTMLElement | null>(null)\n const [toastLayer, setToastLayer] = useState<HTMLElement | null>(null)\n // The box lives in a REF: the ResizeObserver tick updates it and only\n // pokes React when the derived layout (breakpoint + data-xq) changes, so\n // dragging a window edge does not re-render the tree 60 times a second.\n const box = useRef<SurfaceBox>({ width: typeof width === `number` ? width : 0, height: undefined, measured: false })\n const layoutInputs: LayoutInputs = { breakpoints: theme.tokens.breakpoint ?? {}, queries: sheet.queries, viewportHeight, hover, reducedMotion }\n const { breakpoint, xq } = surfaceLayout(box.current, layoutInputs)\n const inputsRef = useRef(layoutInputs)\n inputsRef.current = layoutInputs\n const [, setLayoutKey] = useState(``)\n useIsoLayoutEffect(() => {\n if (!rootEl) return\n // NEW-82: layout px, so a zoomed/scaled host frame keeps its breakpoints.\n const read = (entries?: ResizeObserverEntry[]) => {\n const r = layoutSize(rootEl, entries?.find((e) => e.target === rootEl))\n // No layout yet (SSR, jsdom, display:none): keep the initial guess.\n if (!box.current.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 = rootEl.style.height !== `` && rootEl.style.height !== `auto`\n box.current = { width: r.width, height: explicit ? r.height : undefined, measured: true }\n const next = surfaceLayout(box.current, inputsRef.current)\n setLayoutKey(`${next.breakpoint ?? ``}|${next.xq}`)\n }\n read()\n if (typeof ResizeObserver === `undefined`) return\n const ro = new ResizeObserver((entries) => read(entries))\n ro.observe(rootEl)\n return () => ro.disconnect()\n }, [rootEl])\n\n // Live regions: `announce` swaps the text (cleared first, so the same\n // message twice is spoken twice).\n const politeRef = useRef<HTMLDivElement>(null)\n const assertiveRef = useRef<HTMLDivElement>(null)\n const announce = useCallback((text: string, live: `polite` | `assertive` = `polite`) => {\n const el = live === `assertive` ? assertiveRef.current : politeRef.current\n if (!el) return\n el.textContent = ``\n setTimeout(() => {\n el.textContent = text\n }, 30)\n }, [])\n\n const functions = useMemo(() => ({ ...CLIENT_FUNCTIONS, ...(host?.functions ?? {}) }), [host?.functions])\n const formatter = useMemo(() => memoFormatter(lazyFormatter(locale, timeZone)), [locale, timeZone])\n // The surface clock: a tree that formats a relative time against \"now\"\n // re-binds once a minute (a new `now` reaches every node).\n const liveClock = useMemo(() => usesLiveClock(root) || usesLiveClock(templateRoots), [root, templateRoots])\n const [minute, setMinute] = useState(() => Date.now())\n useEffect(() => {\n if (!liveClock) return\n const timer = setInterval(() => setMinute(Date.now()), 60_000)\n return () => clearInterval(timer)\n }, [liveClock])\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const now = useMemo(() => () => Date.now(), [minute])\n const scrollers = useRef(new Map<string, (index: number, align?: ScrollAlign) => void>())\n const registerScroller = useCallback((id: string, scroll: (index: number, align?: ScrollAlign) => void) => {\n scrollers.current.set(id, scroll)\n return () => {\n if (scrollers.current.get(id) === scroll) scrollers.current.delete(id)\n }\n }, [])\n const paintFailures = useRef(new Map<string, string>()).current\n const hostValue = host ?? EMPTY_HOST\n // Every open passes the URL policy (the host's opener or a new tab).\n const openUrl = useCallback((url: string) => openAllowed(hostValue, url), [hostValue])\n\n // VAPP-141 + VAPP-130: data, breakpoint, xq and mode are LIVE members (getters over this\n // render's values); the context keeps its identity when only they change\n // and the layout effect below tells the subscribed nodes (`live.ts`).\n const live = useRef({ data, breakpoint, xq, mode })\n live.current = { data, breakpoint, xq, mode }\n const listeners = useRef(new Set<() => void>()).current\n const subscribe = useCallback(\n (listener: () => void) => {\n listeners.add(listener)\n return () => void listeners.delete(listener)\n },\n [listeners]\n )\n useIsoLayoutEffect(() => {\n for (const listener of [...listeners]) listener()\n }, [data, breakpoint, xq, mode, listeners])\n const ctx: SurfaceContextValue = useMemo(\n () => withLive({\n surfaceId,\n compiled,\n theme,\n host: hostValue,\n extensions,\n extensionDefs,\n setData,\n templateNode,\n templateBudget: budget,\n states,\n measure,\n portal,\n toastLayer,\n direction,\n functions,\n openUrl,\n locale,\n formatter,\n now,\n registerScroller,\n paintFailures,\n strings,\n t,\n reducedMotion,\n hover,\n announce,\n subscribe,\n }, live),\n [surfaceId, compiled, theme, hostValue, extensions, extensionDefs, setData, templateNode, budget, states, measure, portal, toastLayer, direction, functions, openUrl, locale, formatter, now, registerScroller, paintFailures, strings, t, reducedMotion, hover, announce, subscribe]\n )\n\n const nodeEl = useCallback((id: string): HTMLElement | null => rootEl?.querySelector<HTMLElement>(`[data-xui-id=\"${typeof CSS !== `undefined` && CSS.escape ? CSS.escape(id) : id.replace(/\"/g, `\\\\\"`)}\"]`) ?? null, [rootEl])\n useImperativeHandle(\n handleRef,\n (): SurfaceHandle => {\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: reducedMotion ? `auto` : `smooth` })\n return true\n }\n const scrollToIndex = (id: string, index: number, align?: ScrollAlign) => {\n const scroll = scrollers.current.get(id)\n if (!scroll) return false\n scroll(index, align)\n return true\n }\n return {\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 },\n [nodeEl, announce, reducedMotion]\n )\n\n const md = theme.tokens.breakpoint?.md ?? 768\n const scopeSel = `.${surfaceClass(surfaceId)}`\n const layerCss = `@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 // VAPP-141: React rewrites a `dangerouslySetInnerHTML` whenever the\n // OBJECT is new, and a rewritten sheet restyles the whole surface: one\n // object per sheet text.\n const themeHtml = useMemo(() => ({ __html: `${BASE_CSS}\\n${compiled.css}` }), [compiled.css])\n const nodesHtml = useMemo(() => {\n const list: readonly NodeSheetBatch[] = batches.length ? batches : [{ chunks: NO_CHUNKS, css: sheet.css }]\n return list.map((batch, i) => {\n const css = i === 0 ? `${batch.css}${layerCss}` : batch.css\n const hit = batchHtml.get(batch)\n if (hit && hit.__html === css) return hit\n const html = { __html: css }\n batchHtml.set(batch, html)\n return html\n })\n }, [batches, sheet.css, layerCss])\n\n return (\n <div\n ref={setRootEl}\n className={[`xui-surface`, compiled.scope, surfaceClass(surfaceId), className].filter(Boolean).join(` `)}\n data-xui-surface={surfaceId}\n data-xui-mode={mode}\n data-xui-theme={theme.id}\n data-xui-density={density === `default` ? undefined : density}\n data-xui-motion={reducedMotion ? `reduce` : undefined}\n data-xq={xq || undefined}\n dir={direction}\n style={width === undefined ? style : { width, ...style }}\n >\n <style data-xui-style=\"theme\" dangerouslySetInnerHTML={themeHtml} />\n {nodesHtml.map((html, i) => (\n <style key={i} data-xui-style=\"nodes\" dangerouslySetInnerHTML={html} />\n ))}\n <SurfaceContext.Provider value={ctx}>\n <div className=\"xui-container\">\n {root ? <NodeView node={root} /> : null}\n {children}\n <div ref={setPortal} className=\"xui-layer\" data-xui-layer=\"overlay\" />\n <div ref={setToastLayer} className=\"xui-toast-layer\" data-xui-layer=\"toast\" />\n </div>\n </SurfaceContext.Provider>\n <div ref={politeRef} className=\"xui-sr-only\" aria-live=\"polite\" aria-atomic=\"true\" data-xui-live=\"polite\" />\n <div ref={assertiveRef} className=\"xui-sr-only\" aria-live=\"assertive\" aria-atomic=\"true\" data-xui-live=\"assertive\" />\n </div>\n )\n}\n",
6
6
  "// VAPP-87 + round 1: what every painted node reads from its surface.\n\nimport { createContext, useContext } from \"react\"\nimport type { ExtensionDef, Formatter, ModeName, ResolvedTheme, ScrollAlign, TemplateBudget, UiNode } from \"@exponential_app/eui\"\nimport type { CompiledTheme } from \"@exponential_app/eui/web\"\nimport type { HostPlugin } from \"./host\"\nimport type { ReactExtension } from \"./extensions\"\nimport type { ClientFunction, DataModel, ResolveContext } from \"@exponential_app/eui/web\"\nimport { setPointer } from \"@exponential_app/eui/web\"\n\nexport interface SurfaceContextValue {\n surfaceId: string\n compiled: CompiledTheme\n /** The theme the surface runs with (density + contrast applied). */\n theme: ResolvedTheme\n /** The RESOLVED mode (`system` already followed). */\n mode: ModeName\n host: HostPlugin\n extensions: readonly ReactExtension[]\n extensionDefs: readonly ExtensionDef[]\n data: DataModel\n setData: (pointer: string, value: unknown) => void\n /** A template component id → its node (round 2: the reducer's LIFTED\n * `templates`); `undefined` when absent. */\n templateNode: (componentId: string) => UiNode | undefined\n /** VAPP-103: the surface's template items counted against\n * `maxTemplateItems` (`templateBudget`); absent = every item renders. */\n templateBudget?: TemplateBudget\n /** Interaction states forced on every node (the recipe sheet). */\n states: readonly string[]\n /** Geometry mode: every leaf becomes a fixed box of this size. */\n measure?: (node: UiNode) => { w: number; h: number } | null\n /** Where overlays portal: the overlay LAYER inside the `xui` container\n * (so container breakpoints still match in a Dialog, audit bug C). */\n portal: HTMLElement | null\n /** The toast layer (above dialogs). */\n toastLayer: HTMLElement | null\n /** The direction of the node being painted (round 2 §2: `direction` on\n * ANY node, inherited; the surface's at the root). */\n direction: `ltr` | `rtl`\n functions: Record<string, ClientFunction>\n openUrl: (url: string) => void\n /** Round 1 §4: the surface locale (BCP 47). */\n locale: string\n /** Round 2 §3: the surface Formatter (Intl in `locale` + the time zone). */\n formatter: Formatter\n /** The surface clock (epoch ms) `formatRelativeTime` reads without `now`;\n * ticks once a minute while the tree uses it. */\n now: () => number\n /** Round 2: a windowed List/Table registers its `scrollToIndex` under its\n * painted id (the host command); returns the unregister. */\n registerScroller: (id: string, scroll: (index: number, align?: ScrollAlign) => void) => () => void\n /** VAPP-103: the painted ids whose painter failed → their props as they\n * failed (reported once until the props change; an entry leaves when\n * the node paints or unmounts, so it never outgrows the mounted tree). */\n paintFailures?: Map<string, string>\n /** The built-in string table (defaults + host overrides). */\n strings: Readonly<Record<string, string>>\n /** A built-in string by id with `{name}` placeholders filled. */\n t: (id: string, params?: Record<string, unknown>) => string\n /** `activeBreakpoint(surface width, theme.tokens.breakpoint)`; null =\n * base. (The raw box is NOT in the context, nor in React state: the\n * surface keeps it in a ref and re-renders only when the breakpoint or\n * the matching height/orientation conditions (`data-xq`) change; nodes\n * are memoized, so a surface re-render does not cascade by itself.) */\n breakpoint: string | null\n /** The surface's matching JS-evaluated conditions (`data-xq` tokens):\n * a `@media` block's `direction` reads it. */\n xq?: string\n /** The platform asks for reduced motion. */\n reducedMotion: boolean\n /** A hover-capable pointer. */\n hover: boolean\n /** Speak a message through the surface's live regions. */\n announce: (text: string, live?: `polite` | `assertive`) => void\n /** VAPP-141: `data`, `breakpoint`, `xq` and `mode` are LIVE (the surface's\n * latest render; the context object keeps its identity when only they\n * change): a listener hears every change, and a node re-renders when a\n * value it reads is new (`live.ts`). Returns the unsubscribe. */\n subscribe: (listener: () => void) => () => void\n}\n\nexport const SurfaceContext = createContext<SurfaceContextValue | null>(null)\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 context with some members replaced, the live getters (`data`,\n * `breakpoint`, `xq`, `mode`) kept live (a plain spread would freeze them);\n * `data` may be a getter of its own (a read view over the live model). */\nexport function deriveContext(ctx: SurfaceContextValue, values: Partial<SurfaceContextValue>, data?: () => DataModel): SurfaceContextValue {\n const out = Object.defineProperties({}, Object.getOwnPropertyDescriptors(ctx)) as SurfaceContextValue\n for (const [key, value] of Object.entries(values)) Object.defineProperty(out, key, { value, enumerable: true, configurable: true, writable: true })\n if (data) Object.defineProperty(out, `data`, { get: data, enumerable: true, configurable: true })\n return out\n}\n\n/** The live model with `value` mounted at `pointer` (a literal scope's\n * read view), rebuilt only when the live model is a new object. */\nexport function readView(ctx: SurfaceContextValue, pointer: string, value: unknown): () => DataModel {\n let base: unknown = undefined\n let view: DataModel = {}\n return () => {\n const data = ctx.data\n if (data !== base || base === undefined) {\n base = data\n view = setPointer(data as Record<string, unknown>, pointer, value)\n }\n return view\n }\n}\n\n/** The data scope of a template item (relative paths resolve here). */\nexport const ScopeContext = createContext<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, so every item wears the node sheet's rules. */\nexport const InstanceContext = createContext<string>(``)\n\n/** The resolve context of one render (bindings + calls + `$string`). */\nexport function resolveContextOf(ctx: SurfaceContextValue, scope: string): ResolveContext {\n return { data: ctx.data, scope, functions: ctx.functions, openUrl: ctx.openUrl, locale: ctx.locale, strings: ctx.strings, formatter: ctx.formatter, now: ctx.now }\n}\n",
@@ -9,38 +9,40 @@
9
9
  "// VAPP-141 + VAPP-137 + VAPP-130: what a node re-renders FOR. The surface\n// context is stable across data, breakpoint, `data-xq` and mode changes\n// (those four are getters over the surface's latest render,\n// `SurfaceContextValue.subscribe` announces a change); each node subscribes to the values ITS bindings\n// read — the absolute pointers in its props, `visible`, dynamic style,\n// recipe props, accessibility and template path, the breakpoint when it\n// has a responsive prop, `data-xq` when an `@media` block sets its\n// direction, the mode when its painter reads it (the stylesheet carries\n// both modes) — and re-renders only when one of them is a new value. A call\n// whose function may read the model on its own (`formatString`, a host\n// function) or a host-painted component re-renders on every change.\n\nimport { useMemo, useRef, useSyncExternalStore } from \"react\"\nimport { sharedCatalogView } from \"@exponential_app/eui\"\nimport type { ExtensionDef, UiNode } from \"@exponential_app/eui\"\nimport { CLIENT_FUNCTIONS, absolutePath, isBinding, isCall, pointerTokens } from \"@exponential_app/eui/web\"\nimport type { SurfaceContextValue } from \"./context\"\nimport { extensionComponent } from \"./extensions\"\n\nexport interface NodeDeps {\n paths: string[]\n /** `paths` as pointer tokens (read on every change of every node). */\n tokens: string[][]\n /** Re-render on any data change. */\n all: boolean\n breakpoint: boolean\n xq: boolean\n mode: boolean\n}\n\n/** The natives that read `ctx.mode` while painting (a recipe size or\n * colour resolved in JS); every other node's look follows the root's\n * `data-xui-mode` in CSS. */\nconst MODE_READERS = new Set([`Ring`, `Spinner`, `TreeGuides`, `Avatar`, `VoiceWave`])\n\n/** The client functions that read nothing but their arguments. */\nconst PURE = new Set(Object.keys(CLIENT_FUNCTIONS).filter((name) => name !== `formatString`))\n\n/** Collects the binding pointers of a value; true = it may read anything. */\nfunction collect(value: unknown, scope: string, paths: string[], functions: SurfaceContextValue[`functions`]): boolean {\n if (isBinding(value)) {\n paths.push(absolutePath(value.path, scope))\n return false\n }\n if (isCall(value)) {\n const fn = functions[value.call] ?? CLIENT_FUNCTIONS[value.call]\n if (!PURE.has(value.call) || fn !== CLIENT_FUNCTIONS[value.call]) return true\n return collect(value.args, scope, paths, functions)\n }\n if (Array.isArray(value)) {\n for (const v of value) if (collect(v, scope, paths, functions)) return true\n return false\n }\n if (typeof value === `object` && value !== null) {\n for (const v of Object.values(value)) if (collect(v, scope, paths, functions)) return true\n }\n return false\n}\n\nconst responsiveCache = new WeakMap<readonly ExtensionDef[], Map<string, string[]>>()\n\n/** The props of a component marked `responsive: true` in the catalog. */\nexport function 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 = sharedCatalogView(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\nfunction mediaDirection(style: Record<string, unknown> | undefined): boolean {\n if (!style) return false\n for (const [key, value] of Object.entries(style)) if (key.startsWith(`@`) && typeof value === `object` && value !== null && `direction` in value) return true\n return false\n}\n\nexport function nodeDeps(node: UiNode, scope: string, ctx: SurfaceContextValue): NodeDeps {\n const paths: string[] = []\n // A host-painted component may read any live member itself.\n const hosted = extensionComponent(ctx.extensions, node.component) !== undefined\n const all =\n hosted ||\n collect(node.props, scope, paths, ctx.functions) ||\n collect(node.visible, scope, paths, ctx.functions) ||\n collect(node.style, scope, paths, ctx.functions) ||\n collect(node.recipe?.props, scope, paths, ctx.functions) ||\n collect(node.accessibility, scope, paths, ctx.functions)\n if (node.template) paths.push(absolutePath(node.template.path, scope))\n const unique = [...new Set(paths)]\n return { paths: unique, tokens: unique.map(pointerTokens), all, breakpoint: hosted || responsiveProps(node.component, ctx.extensionDefs).length > 0, xq: hosted || mediaDirection(node.style as Record<string, unknown> | undefined), mode: hosted || MODE_READERS.has(node.component) }\n}\n\nconst INDEX = /^[0-9]+$/\n\n/** `getPointer` over pre-split tokens (the same rule: real indices and\n * OWN keys only; `-` = the last element, EXP-1385, so a node bound to\n * `/log/-` repaints on an append). */\nfunction readTokens(data: unknown, tokens: readonly string[]): unknown {\n let cur = data\n for (const token of tokens) {\n if (cur === null || typeof cur !== `object`) return undefined\n if (Array.isArray(cur)) cur = token === `-` ? cur[cur.length - 1] : INDEX.test(token) ? cur[Number(token)] : undefined\n else cur = Object.prototype.hasOwnProperty.call(cur, token) ? (cur as Record<string, unknown>)[token] : undefined\n }\n return cur\n}\n\nconst NONE: readonly unknown[] = []\nconst noSubscription = () => () => {}\n\n/** The live values a node reads, as one array that keeps its identity\n * until one of them changes (the node's re-render key). */\nexport function useLive(ctx: SurfaceContextValue, node: UiNode, scope: string): readonly unknown[] {\n const deps = useMemo(() => nodeDeps(node, scope, ctx), [node, scope, ctx])\n const last = useRef<readonly unknown[]>(NONE)\n const watches = deps.all || deps.breakpoint || deps.xq || deps.mode || deps.paths.length > 0\n const read = (): readonly unknown[] => {\n if (!watches) return NONE\n const data = ctx.data\n const next: unknown[] = deps.tokens.map((t) => readTokens(data, t))\n next.push(deps.all ? data : undefined, deps.breakpoint ? ctx.breakpoint : undefined, deps.xq ? ctx.xq : undefined, deps.mode ? ctx.mode : undefined)\n const prev = last.current\n if (prev.length === next.length && prev.every((v, i) => Object.is(v, next[i]))) return prev\n last.current = next\n return next\n }\n return useSyncExternalStore(watches ? ctx.subscribe : noSubscription, read, read)\n}\n\n",
10
10
  "// Round 1 (contract §3 Form): the FORM native and the field protocol every\n// named control speaks. A Form collects every field beneath it that has a\n// `name` (a nested Form collects its own). Submit — a `submit` Button or\n// Enter in a single-line field — runs EVERY field's checks regardless of\n// `validateOn`; any failure: no `submit`, `invalid {errors}` fires, every\n// failing field shows ALL its messages (id `<field id>.error`, linked by\n// aria-describedby), `summary` also lists them above the fields, focus\n// moves to the first invalid field (document order) and `invalidFields` is\n// announced. `busy` refuses submits (the submit Button shows loading),\n// `disabled` makes every field inert (a disabled fieldset).\n\nimport { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState, type ReactNode } from \"react\"\nimport { FormRegistry, fieldErrorsVisible, joinIds, validateOnDefault } from \"@exponential_app/eui/web\"\nimport { useSurfaceContext } from \"./context\"\nimport type { NativeProps } from \"./node-view\"\nimport { bool, failingChecks, str, useParts, 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\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 disabled: boolean\n busy: boolean\n /** Bumps on every refused submit: every field shows its errors. */\n attempts: number\n}\n\nexport const FormContext = createContext<FormContextValue | null>(null)\n\n/** Round 4 (VAPP-103, `submitClosesOverlay`): the NEAREST overlay around a\n * Form decides — a dismissible Dialog or Drawer provides its close, every\n * other overlay (a Popover, a non-dismissible Dialog = AlertDialog)\n * provides null; a valid Form submit beneath calls it right after\n * `submit` (the author never resets the bound `open` flag). */\nexport const CloseOnSubmitContext = createContext<(() => void) | null>(null)\n\nexport function useForm(): FormContextValue | null {\n return useContext(FormContext)\n}\n\nexport function FormNative({ node, props, rootProps, emit, children }: NativeProps) {\n const ctx = useSurfaceContext()\n const part = useParts(node, props)\n const closeOverlay = useContext(CloseOnSubmitContext)\n const registry = useRef<FormRegistry<FieldHandle> | null>(null)\n if (!registry.current) registry.current = new FormRegistry<FieldHandle>()\n const fields = registry.current\n const [attempts, setAttempts] = useState(0)\n const [summary, setSummary] = useState<{ name: string; message: string }[]>([])\n const disabled = bool(props.disabled)\n const busy = bool(props.busy)\n const busyRef = useRef(busy)\n busyRef.current = busy\n const register = useCallback((field: FieldHandle) => fields.register(field), [fields])\n const submit = useCallback(() => {\n if (busyRef.current) 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 emit(`invalid`, { errors: result.errors })\n return\n }\n setSummary([])\n void emit(`submit`, { values: result.values })\n closeOverlay?.()\n }, [emit, ctx, closeOverlay, fields])\n const changed = useCallback((name: string, value: unknown) => void emit(`change`, { name, value }), [emit])\n const value = useMemo<FormContextValue>(() => ({ register, submit, changed, disabled, busy, attempts }), [register, submit, changed, disabled, busy, attempts])\n // Summary entries clear as their fields become valid.\n const live = fields.stillFailing(summary)\n return (\n <FormContext.Provider value={value}>\n <form\n {...(rootProps as Record<string, unknown>)}\n noValidate\n aria-busy={busy || undefined}\n aria-disabled={disabled || undefined}\n name={str(props.name) || undefined}\n onSubmit={(e) => {\n e.preventDefault()\n e.stopPropagation()\n submit()\n }}\n >\n {bool(props.summary) && live.length ? (\n <div {...(part(`summary`) as Record<string, string>)} role=\"alert\" id={`${node.id}.summary`}>\n <span className=\"xui-sr-only\">{ctx.t(`invalidFields`)}</span>\n <ul className=\"xui-form-summary-list\">\n {live.map((e, i) => (\n <li key={`${e.name}-${i}`}>{e.message}</li>\n ))}\n </ul>\n </div>\n ) : null}\n <fieldset className=\"xui-form-fields\" disabled={disabled}>\n {children}\n </fieldset>\n </form>\n </FormContext.Provider>\n )\n}\n\nexport interface FieldOptions {\n node: NativeProps[`node`]\n domId: string\n props: Record<string, unknown>\n /** The field's current (local) value. */\n value: unknown\n /** The element focus moves to when the field is the first invalid one. */\n focusRef: { readonly current: HTMLElement | null }\n}\n\nexport interface FieldState {\n /** The messages to SHOW now (all failing checks once validation shows). */\n errors: string[]\n invalid: boolean\n /** `<field id>.error` — put it in the control's aria-describedby. */\n errorId: string\n describedBy: string | undefined\n /** Report a blur / a change / an Enter submit. */\n touch: () => void\n change: (value: unknown) => void\n submit: () => void\n form: FormContextValue | null\n}\n\n/** A named control's validation + its registration with the nearest Form. */\nexport function useField({ node, domId, props, value, focusRef }: FieldOptions): FieldState {\n const form = useForm()\n const ctx = useSurfaceContext()\n const all = failingChecks(props.checks, ctx.t(`invalidValue`))\n const [touched, setTouched] = useState(false)\n const [dirty, setDirty] = useState(false)\n const [submitted, setSubmitted] = useState(false)\n const on = str(props.validateOn, validateOnDefault(node.component) ?? `blur`)\n const show = fieldErrorsVisible({ validateOn: on, submitted, attempts: form?.attempts ?? 0, dirty, touched })\n const latest = useRef({ value, all })\n latest.current = { value, all }\n const name = str(props.name)\n useEffect(() => {\n if (!form || !name) return\n return form.register({\n name,\n domId,\n value: () => latest.current.value,\n errors: () => latest.current.all,\n focus: () => focusRef.current?.focus(),\n element: () => focusRef.current,\n })\n }, [form, name, domId, focusRef])\n const errors = show ? all : []\n const errorId = `${domId}.error`\n return {\n errors,\n invalid: errors.length > 0,\n errorId,\n describedBy: errors.length ? errorId : undefined,\n touch: () => setTouched(true),\n change: (v: unknown) => {\n setDirty(true)\n if (form && name) form.changed(name, 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({ part, field }: { part: PartFn; field: FieldState }) {\n if (!field.errors.length) return null\n return (\n <div {...(part(`error`) as Record<string, string>)} id={field.errorId} role=\"alert\">\n {field.errors.map((m, i) => (\n <span key={i} className=\"xui-field-error\">\n {m}\n </span>\n ))}\n </div>\n )\n}\n\nexport { joinIds }\n\nexport type { ReactNode }\n",
11
11
  "// VAPP-87 + round 1: what every native painter shares — the part attributes\n// (class + recipe props + forced states, plus a part-level discriminator the\n// painter supplies: CodeBlock/token `kind`, Table/cell `align`, Table/row\n// `striped`), prop coercions, the label/description/error parts the form\n// controls repeat, and the built-in glyphs of `core.catalog.json`\n// `builtinIcons` (never a hardcoded glyph for an owned part).\n\nimport { useContext, useMemo, type ReactNode } from \"react\"\nimport { displayString, nativeRecipeProps } from \"@exponential_app/eui\"\nimport { arr, bool, builtinIconName, failingCheck, failingChecks, formatFileSize, num, objects, phrase, str } from \"@exponential_app/eui/web\"\nimport type { UiNode } from \"@exponential_app/eui\"\nimport { InstanceContext, useSurfaceContext } from \"../context\"\nimport { IconGlyph } from \"../icons\"\n// FEED-128: `PLACED` (round 2 §6, the placed-part table) lives in the web layer, shared with Solid.\nimport { PLACED, partClass, propAttribute } from \"@exponential_app/eui/web\"\n\nexport type Attrs = Record<string, unknown>\n\n// FEED-128: the pure helpers live in `@exponential_app/eui/web` (coerce.ts).\nexport { str, num, bool, arr, objects, phrase, formatFileSize, failingChecks, failingCheck, builtinIconName }\n\nexport type PartFn = ((name: string, ...states: (string | false | undefined | null)[]) => Attrs) & {\n /** The same with part-level recipe props (`{kind: \"keyword\"}`). */\n with: (name: string, extra: Record<string, unknown>, ...states: (string | false | undefined | null)[]) => Attrs\n /** A PER-ITEM placed part (round 2 §6): `data-xui-id=\"<id>.<part>.<item>\"`\n * (`item` = an index or a row key: `tab.1`, `cell.alice.0`). */\n at: (name: string, item: string | number, ...states: (string | false | undefined | null)[]) => Attrs\n /** `at` with part-level recipe props. */\n atWith: (name: string, item: string | number, extra: Record<string, unknown>, ...states: (string | false | undefined | null)[]) => Attrs\n /** The painted id of the node (`<id><instance suffix>`). */\n domId: string\n}\n\n/** `part(name, …states)` → the attributes of one part element of `node`. */\nexport function useParts(node: UiNode, props: Record<string, unknown>): PartFn {\n const ctx = useSurfaceContext()\n const instance = useContext(InstanceContext)\n return useMemo(() => {\n const recipe = nativeRecipeProps(node.component, props, ctx.extensionDefs)\n const recipeAttrs: Attrs = {}\n for (const [k, v] of Object.entries(recipe)) if (typeof v !== `object`) recipeAttrs[propAttribute(false, k)] = String(v)\n const scope = ctx.compiled.scope\n const forcedStates = ctx.states\n const domId = `${node.id}${instance}`\n const placed = PLACED[node.component]\n const build = (name: string, extra: Record<string, unknown> | null, states: (string | false | undefined | null)[], id: string | null): Attrs => {\n const all = [...forcedStates, ...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 className: `${scope} ${partClass(node.component, name)}`,\n \"data-xui-part\": `${node.component}/${name}`,\n ...(id !== null ? { \"data-xui-id\": id } : {}),\n ...recipeAttrs,\n ...own,\n ...(all.length ? { \"data-xs\": all.join(` `) } : {}),\n }\n }\n const single = (name: string) => (placed?.includes(name) ? `${domId}.${name}` : null)\n const fn = ((name: string, ...states: (string | false | undefined | null)[]) => build(name, null, states, single(name))) as PartFn\n fn.with = (name, extra, ...states) => build(name, extra, states, single(name))\n fn.at = (name, item, ...states) => build(name, null, states, `${domId}.${name}.${item}`)\n fn.atWith = (name, item, extra, ...states) => build(name, extra, states, `${domId}.${name}.${item}`)\n fn.domId = domId\n return fn\n }, [node.component, node.id, instance, props, ctx.compiled.scope, ctx.states, ctx.extensionDefs])\n}\n\nexport function TextPart({ part, text, as: Tag = `span`, id, htmlFor }: { part: Attrs; text: unknown; as?: `span` | `label` | `div` | `p`; id?: string; htmlFor?: string }) {\n // Round 2 §3: a bound number shows `412`, a boolean `true`; objects nothing.\n const s = displayString(text)\n if (!s) return null\n const attrs = part as Record<string, string>\n if (Tag === `label`) return <label {...attrs} id={id} htmlFor={htmlFor}>{s}</label>\n if (Tag === `div`) return <div {...attrs} id={id}>{s}</div>\n if (Tag === `p`) return <p {...attrs} id={id}>{s}</p>\n return <span {...attrs} id={id}>{s}</span>\n}\n\nexport function Hidden({ children }: { children: ReactNode }) {\n return <span className=\"xui-sr-only\">{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({ slot, className, size }: { slot: string; className?: string; size?: number }) {\n const ctx = useSurfaceContext()\n return <IconGlyph icons={ctx.host.icons} name={builtinIconName(slot)} className={className} width={size} height={size} data-slot={slot} />\n}\n",
12
- "// VAPP-87 + round 1: icons. The catalog's `Icon` names come from the host's\n// registry (`host.icons`, the Exponential app passes its generated Lucide\n// map); the renderer's OWN parts draw the glyph `core.catalog.json`\n// `builtinIcons` names (`BuiltinIcon` in natives/shared.tsx), resolved\n// through the host first and, without a registry, through the fallbacks\n// below: the SAME Lucide glyphs `packages/icons/icons.json` maps those\n// concept names to, so a host without a registry still gets working,\n// matching controls. An unknown name paints the placeholder glyph and names\n// itself in `data-icon`.\n\nimport type { ComponentType, SVGProps } from \"react\"\nimport {\n ArrowLeft,\n AudioLines,\n Calendar,\n Check,\n CheckCheck,\n ChevronDown,\n ChevronLeft,\n ChevronRight,\n ChevronUp,\n ChevronsUpDown,\n CircleCheck,\n CircleDashed,\n CircleStop,\n CircleX,\n Clock,\n Copy,\n Ear,\n Ellipsis,\n File,\n Hand,\n Info,\n Loader,\n Menu,\n Mic,\n MicOff,\n Minus,\n Paperclip,\n PhoneIncoming,\n PhoneOff,\n Play,\n Plus,\n QrCode,\n ScanLine,\n Search,\n Send,\n Square,\n Star,\n TriangleAlert,\n Upload,\n Volume2,\n X,\n createLucideIcon,\n} from \"lucide-react\"\nimport type { IconNode } from \"lucide-react\"\nimport { CUSTOM_ICON_NODES, lookupIcon } from \"@exponential_app/eui/web\"\nimport type { IconComponent, IconMap } from \"./host\"\n\n/** The renderer's own chrome glyphs that are NOT catalog part glyphs (the\n * busy spinner, media play, the field and picker adornments). */\nexport const CHROME = {\n check: Check,\n chevronDown: ChevronDown,\n chevronUp: ChevronUp,\n chevronLeft: ChevronLeft,\n chevronRight: ChevronRight,\n close: X,\n search: Search,\n calendar: Calendar,\n send: Send,\n stop: Square,\n play: Play,\n attach: Paperclip,\n spinner: Loader,\n placeholder: CircleDashed,\n} as const\n\n/** icons.json concept / registry names → the Lucide glyph icons.json gives\n * them (`semantic`), for every name the catalog's `builtinIcons` and the\n * core macros draw. */\nexport const FALLBACK_ICONS: Record<string, IconComponent> = {\n \"ui-check\": Check,\n \"ui-chevron-down\": ChevronDown,\n \"ui-chevron-up\": ChevronUp,\n \"ui-chevron-left\": ChevronLeft,\n \"ui-chevron-right\": ChevronRight,\n \"ui-selector\": ChevronsUpDown,\n \"ui-close\": X,\n \"ui-copy\": Copy,\n \"ui-file\": File,\n \"ui-minus\": Minus,\n \"ui-add\": Plus,\n \"ui-clock\": Clock,\n \"ui-info\": Info,\n \"ui-success\": CircleCheck,\n \"ui-warning\": TriangleAlert,\n \"ui-error\": CircleX,\n \"ui-stop\": CircleStop,\n \"ui-attach\": Paperclip,\n \"ui-send\": Send,\n \"ui-back\": ArrowLeft,\n \"ui-more\": Ellipsis,\n \"ui-menu\": Menu,\n \"ui-search\": Search,\n \"ui-icon-placeholder\": CircleDashed,\n // VAPP-162: the round-5 pieces (MessageBubble, CallSurface, QrScanner, the hold button).\n \"ui-read\": CheckCheck,\n \"ui-scan\": ScanLine,\n \"ui-qr-code\": QrCode,\n \"ui-hold\": Hand,\n \"voice-level\": AudioLines,\n \"call-mute\": Mic,\n \"call-unmute\": MicOff,\n \"call-speaker\": Volume2,\n \"call-speaker-off\": Ear,\n \"call-end\": PhoneOff,\n \"call-incoming\": PhoneIncoming,\n calendar: Calendar,\n search: Search,\n upload: Upload,\n star: Star,\n // VAPP-163: the icons.json names a Lucide registry has no glyph for (the\n // OS marks, the progress pies), so an `Icon` paints them without a host map.\n ...Object.fromEntries(Object.entries(CUSTOM_ICON_NODES).map(([name, node]) => [name, createLucideIcon(name, node as IconNode)])),\n}\n\nexport function resolveIcon(icons: IconMap | undefined, name: string): IconComponent | undefined {\n return lookupIcon(icons, name, FALLBACK_ICONS)\n}\n\nexport function IconGlyph({ icons, name, size, className, ...rest }: { icons?: IconMap; name: string; size?: number; className?: string } & SVGProps<SVGSVGElement>) {\n const resolved = resolveIcon(icons, name)\n const Comp: ComponentType<SVGProps<SVGSVGElement> & { size?: number | string }> = resolved ?? CircleDashed\n return <Comp aria-hidden=\"true\" data-icon={name} data-icon-missing={resolved ? undefined : `true`} size={size} className={className} {...rest} />\n}\n",
13
- "// VAPP-87 + round 1: Button, Link, Toggle. A Button is OPTIMISTIC: it goes\n// disabled (and `aria-busy`) the moment it is pressed and stays so until the\n// host's `onAction` promise settles. A `submit` Button submits the enclosing\n// Form (and shows loading while the Form is `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\nimport { useEffect, useLayoutEffect, useRef, useState, type KeyboardEvent, type MouseEvent, type PointerEvent } from \"react\"\nimport { PENDING_DELAY_MS } from \"@exponential_app/eui\"\nimport { Toggle as TogglePrimitive } from \"radix-ui\"\nimport { useSurfaceContext } from \"../context\"\nimport { useForm } from \"../form\"\nimport { CHROME, IconGlyph } from \"../icons\"\nimport { useBoundState } from \"./bound\"\nimport { ButtonHold, linkHref } from \"@exponential_app/eui/web\"\nimport type { NativeProps } from \"../node-view\"\nimport { bool, str, useParts } from \"./shared\"\n\nexport function usePending() {\n const [pending, setPending] = useState(false)\n const mounted = useRef(true)\n useEffect(() => {\n mounted.current = true\n return () => {\n mounted.current = false\n }\n }, [])\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.current && setPending(false),\n () => mounted.current && setPending(false)\n )\n }\n }\n return { pending, track }\n}\n\nexport function ButtonNative({ node, props, rootProps, emit, children }: NativeProps) {\n const ctx = useSurfaceContext()\n const part = useParts(node, props)\n const form = useForm()\n const submit = bool(props.submit) && form !== null\n const { pending, track } = usePending()\n const label = str(props.label)\n const icon = str(props.icon)\n const loading = bool(props.loading) || pending || (submit && form.busy)\n const disabled = bool(props.disabled) || loading\n const iconOnly = props.size === `icon`\n const Spinner = CHROME.spinner\n const hasChild = node.children.length > 0\n const shown = usePendingShown(loading)\n const pendingLabel = str(props.pendingLabel)\n const shownLabel = shown && pendingLabel ? pendingLabel : label\n // The idle width is the pending state's minimum.\n const ref = useRef<HTMLButtonElement | null>(null)\n const idleWidth = useRef<number | null>(null)\n // The width the pending label keeps: read while loading but not yet\n // shown (the idle label still painted), never on an idle render (a read\n // there forces a layout in every commit).\n useLayoutEffect(() => {\n if (loading && !shown && ref.current) idleWidth.current = ref.current.offsetWidth || null\n })\n const rootStyle = (rootProps as { style?: Record<string, unknown> }).style\n // VAPP-162 (round-5 contract §9): `hold` = holdStart/holdEnd/holdCancel, never `press`.\n const hold = bool(props.hold)\n const { held, handlers } = useHold(hold, disabled, emit)\n const holdingLabel = str(props.holdingLabel)\n const paintedLabel = held && holdingLabel ? holdingLabel : shownLabel\n const states = [...(ctx.states ?? []), disabled ? `disabled` : ``, pending ? `pending` : ``, held ? `pressed` : ``].filter(Boolean).join(` `)\n return (\n <button\n {...(rootProps as Record<string, unknown>)}\n ref={ref}\n style={shown && idleWidth.current ? { ...rootStyle, minWidth: idleWidth.current } : rootStyle}\n type=\"button\"\n disabled={disabled}\n aria-busy={loading || undefined}\n data-pending={shown ? `true` : undefined}\n // VAPP-162: an author/macro label (`$a11y`, a CallSurface round button) survives: Solid keeps the spread's.\n aria-label={iconOnly && label ? label : ((rootProps as Record<string, unknown>)[`aria-label`] as string | undefined)}\n data-xs={states || undefined}\n data-submit={submit ? `true` : undefined}\n data-hold={hold ? `true` : undefined}\n {...(hold ? handlers : {})}\n onClick={(e: MouseEvent) => {\n e.stopPropagation()\n if (hold) return\n track(emit(`press`))\n if (submit) form.submit()\n }}\n >\n {shown ? (\n <span {...(part(`spinner`) as Record<string, string>)}>\n <Spinner aria-hidden=\"true\" />\n </span>\n ) : icon ? (\n <span {...(part(`icon`) as Record<string, string>)}>\n <IconGlyph icons={ctx.host.icons} name={icon} />\n </span>\n ) : null}\n {hasChild ? children : !iconOnly && paintedLabel ? <span {...(part(`label`) as Record<string, string>)}>{paintedLabel}</span> : null}\n </button>\n )\n}\n\n/** THE hold machine (`@exponential_app/eui/web` ButtonHold) wired to a\n * button's DOM events: the pointer is captured on down (a long-press or a\n * scroll never steals it), the slop is measured against the button's box,\n * Space/Enter hold from key down to key up, Escape and blur cancel. */\nfunction useHold(enabled: boolean, disabled: boolean, emit: NativeProps[`emit`]) {\n const [held, setHeld] = useState(false)\n const emitRef = useRef(emit)\n emitRef.current = emit\n const disabledRef = useRef(disabled)\n disabledRef.current = disabled\n const machine = useRef<ButtonHold | null>(null)\n machine.current ??= new ButtonHold((event) => void emitRef.current(event), setHeld, () => disabledRef.current)\n useEffect(() => {\n if (disabled || !enabled) machine.current?.reset()\n }, [disabled, enabled])\n useEffect(() => () => machine.current?.reset(), [])\n const m = machine.current\n const rect = (el: HTMLElement) => el.getBoundingClientRect()\n const handlers = {\n onPointerDown: (e: PointerEvent<HTMLButtonElement>) => {\n if (e.button !== undefined && e.button !== 0) return\n if (!m.pointerDown(e.pointerId ?? null)) return\n try {\n e.currentTarget.setPointerCapture?.(e.pointerId)\n } catch {\n // A synthetic pointer (tests) has no capture.\n }\n },\n onPointerMove: (e: PointerEvent<HTMLButtonElement>) => m.pointerMove(rect(e.currentTarget), e.clientX ?? 0, e.clientY ?? 0, e.pointerId ?? null),\n onPointerUp: (e: PointerEvent<HTMLButtonElement>) => m.pointerUp(rect(e.currentTarget), e.clientX ?? 0, e.clientY ?? 0, e.pointerId ?? null),\n onPointerCancel: (e: PointerEvent<HTMLButtonElement>) => m.pointerCancel(e.pointerId ?? null),\n onKeyDown: (e: KeyboardEvent<HTMLButtonElement>) => {\n if (m.keyDown(e.key, e.repeat)) e.preventDefault()\n },\n onKeyUp: (e: KeyboardEvent<HTMLButtonElement>) => {\n if (m.keyUp(e.key)) e.preventDefault()\n },\n onBlur: () => m.blur(),\n onContextMenu: (e: MouseEvent) => e.preventDefault(),\n }\n return { held: enabled && held, handlers }\n}\n\n/** `loading` held for `PENDING_DELAY_MS` (false again at once when it ends). */\nexport function usePendingShown(loading: boolean): boolean {\n const [shown, setShown] = useState(false)\n useEffect(() => {\n if (!loading) {\n setShown(false)\n return\n }\n const t = setTimeout(() => setShown(true), PENDING_DELAY_MS)\n return () => clearTimeout(t)\n }, [loading])\n return loading && shown\n}\n\nexport function LinkNative({ props, rootProps, emit }: NativeProps) {\n const ctx = useSurfaceContext()\n const raw = str(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.external)\n const label = str(props.label) || raw\n return (\n <a\n {...(rootProps as Record<string, unknown>)}\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: MouseEvent) => {\n const handled = emit(`press`)\n if (!href) 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(href)\n }\n }}\n >\n {label}\n </a>\n )\n}\n\nexport function ToggleNative({ node, props, rootProps, emit, scope }: NativeProps) {\n const ctx = useSurfaceContext()\n const part = useParts(node, props)\n const [pressed, setPressed] = useBoundState(node, scope, `pressed`, bool(props.pressed))\n const icon = str(props.icon)\n const label = str(props.label)\n return (\n <TogglePrimitive.Root\n {...(rootProps as Record<string, unknown>)}\n pressed={pressed}\n onPressedChange={(next) => {\n setPressed(next)\n void emit(`change`, { pressed: next }, { pressed: next })\n }}\n aria-label={icon && label ? label : ((rootProps as Record<string, unknown>)[`aria-label`] as string | undefined)}\n >\n {icon ? (\n <span {...(part(`icon`) as Record<string, string>)}>\n <IconGlyph icons={ctx.host.icons} name={icon} />\n </span>\n ) : null}\n {label ? <span {...(part(`label`) as Record<string, string>)}>{label}</span> : null}\n </TogglePrimitive.Root>\n )\n}\n",
12
+ "// VAPP-87 + round 1: icons. The catalog's `Icon` names come from the host's\n// registry (`host.icons`, the Exponential app passes its generated Lucide\n// map); the renderer's OWN parts draw the glyph `core.catalog.json`\n// `builtinIcons` names (`BuiltinIcon` in natives/shared.tsx), resolved\n// through the host first and, without a registry, through the fallbacks\n// below: the SAME Lucide glyphs `packages/icons/icons.json` maps those\n// concept names to, so a host without a registry still gets working,\n// matching controls. An unknown name paints the placeholder glyph and names\n// itself in `data-icon`.\n\nimport type { ComponentType, SVGProps } from \"react\"\nimport {\n ArrowLeft,\n AudioLines,\n Calendar,\n Check,\n CheckCheck,\n ChevronDown,\n ChevronLeft,\n ChevronRight,\n ChevronUp,\n ChevronsUpDown,\n CircleCheck,\n CircleDashed,\n CircleStop,\n CircleX,\n Clock,\n Copy,\n Ear,\n Ellipsis,\n File,\n Hand,\n Info,\n LoaderCircle,\n Maximize2,\n Menu,\n Mic,\n MicOff,\n Minus,\n Paperclip,\n PhoneIncoming,\n PhoneOff,\n Play,\n Pause,\n Plus,\n QrCode,\n ScanLine,\n Search,\n Send,\n Square,\n Star,\n TriangleAlert,\n Upload,\n Volume2,\n X,\n createLucideIcon,\n} from \"lucide-react\"\nimport type { IconNode } from \"lucide-react\"\nimport { CUSTOM_ICON_NODES, lookupIcon } from \"@exponential_app/eui/web\"\nimport type { IconComponent, IconMap } from \"./host\"\n\n/** The renderer's own chrome glyphs that are NOT catalog part glyphs (the\n * busy spinner, media play, the field and picker adornments). */\nexport const CHROME = {\n check: Check,\n chevronDown: ChevronDown,\n chevronUp: ChevronUp,\n chevronLeft: ChevronLeft,\n chevronRight: ChevronRight,\n close: X,\n search: Search,\n calendar: Calendar,\n send: Send,\n stop: Square,\n play: Play,\n pause: Pause,\n attach: Paperclip,\n spinner: LoaderCircle,\n placeholder: CircleDashed,\n} as const\n\n/** icons.json concept / registry names → the Lucide glyph icons.json gives\n * them (`semantic`), for every name the catalog's `builtinIcons` and the\n * core macros draw. */\nexport const FALLBACK_ICONS: Record<string, IconComponent> = {\n \"ui-check\": Check,\n \"ui-chevron-down\": ChevronDown,\n \"ui-chevron-up\": ChevronUp,\n \"ui-chevron-left\": ChevronLeft,\n \"ui-chevron-right\": ChevronRight,\n \"ui-selector\": ChevronsUpDown,\n \"ui-close\": X,\n \"ui-copy\": Copy,\n \"ui-file\": File,\n \"ui-minus\": Minus,\n \"ui-add\": Plus,\n \"ui-clock\": Clock,\n \"ui-info\": Info,\n \"ui-success\": CircleCheck,\n \"ui-warning\": TriangleAlert,\n \"ui-error\": CircleX,\n \"ui-stop\": CircleStop,\n \"ui-attach\": Paperclip,\n \"ui-send\": Send,\n \"ui-back\": ArrowLeft,\n \"ui-more\": Ellipsis,\n \"ui-menu\": Menu,\n \"ui-search\": Search,\n \"ui-icon-placeholder\": CircleDashed,\n // VAPP-162: the round-5 pieces (MessageBubble, CallSurface, QrScanner, the hold button).\n \"ui-read\": CheckCheck,\n \"ui-scan\": ScanLine,\n \"ui-qr-code\": QrCode,\n \"ui-hold\": Hand,\n // EXP-1586: the ZoomableImage pill's fit button.\n \"ui-fullscreen\": Maximize2,\n \"voice-level\": AudioLines,\n \"call-mute\": Mic,\n \"call-unmute\": MicOff,\n \"call-speaker\": Volume2,\n \"call-speaker-off\": Ear,\n \"call-end\": PhoneOff,\n \"call-incoming\": PhoneIncoming,\n calendar: Calendar,\n search: Search,\n upload: Upload,\n star: Star,\n // VAPP-163: the icons.json names a Lucide registry has no glyph for (the\n // OS marks, the progress pies), so an `Icon` paints them without a host map.\n ...Object.fromEntries(Object.entries(CUSTOM_ICON_NODES).map(([name, node]) => [name, createLucideIcon(name, node as IconNode)])),\n}\n\nexport function resolveIcon(icons: IconMap | undefined, name: string): IconComponent | undefined {\n return lookupIcon(icons, name, FALLBACK_ICONS)\n}\n\nexport function IconGlyph({ icons, name, size, className, ...rest }: { icons?: IconMap; name: string; size?: number; className?: string } & SVGProps<SVGSVGElement>) {\n const resolved = resolveIcon(icons, name)\n const Comp: ComponentType<SVGProps<SVGSVGElement> & { size?: number | string }> = resolved ?? CircleDashed\n return <Comp aria-hidden=\"true\" data-icon={name} data-icon-missing={resolved ? undefined : `true`} size={size} className={className} {...rest} />\n}\n",
13
+ "// VAPP-87 + round 1: Button, Link, Toggle. A Button is OPTIMISTIC: it goes\n// inert (`aria-busy`, presses refused) the moment it is pressed and stays so until the\n// host's `onAction` promise settles. A `submit` Button submits the enclosing\n// Form (and shows loading while the Form is `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\nimport { useEffect, useLayoutEffect, useRef, useState, type KeyboardEvent, type MouseEvent, type PointerEvent } from \"react\"\nimport { PENDING_DELAY_MS } from \"@exponential_app/eui\"\nimport { Toggle as TogglePrimitive } from \"radix-ui\"\nimport { useSurfaceContext } from \"../context\"\nimport { useForm } from \"../form\"\nimport { CHROME, IconGlyph } from \"../icons\"\nimport { useBoundState } from \"./bound\"\nimport { ButtonHold, linkHref } from \"@exponential_app/eui/web\"\nimport type { NativeProps } from \"../node-view\"\nimport { bool, str, useParts } from \"./shared\"\n\nexport function usePending() {\n const [pending, setPending] = useState(false)\n const mounted = useRef(true)\n useEffect(() => {\n mounted.current = true\n return () => {\n mounted.current = false\n }\n }, [])\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.current && setPending(false),\n () => mounted.current && setPending(false)\n )\n }\n }\n return { pending, track }\n}\n\nexport function ButtonNative({ node, props, rootProps, emit, children }: NativeProps) {\n const ctx = useSurfaceContext()\n const part = useParts(node, props)\n const form = useForm()\n const submit = bool(props.submit) && form !== null\n const { pending, track } = usePending()\n const label = str(props.label)\n const icon = str(props.icon)\n const loading = bool(props.loading) || pending || (submit && form.busy)\n // EXP-1556: loading refuses presses but keeps the idle look (the spinner\n // shows it); only `disabled` dims, as on desktop, iOS and Android.\n const disabled = bool(props.disabled)\n const inert = disabled || loading\n const iconOnly = props.size === `icon`\n const Spinner = CHROME.spinner\n const hasChild = node.children.length > 0\n const shown = usePendingShown(loading)\n const pendingLabel = str(props.pendingLabel)\n const shownLabel = shown && pendingLabel ? pendingLabel : label\n // The idle width is the pending state's minimum.\n const ref = useRef<HTMLButtonElement | null>(null)\n const idleWidth = useRef<number | null>(null)\n // The width the pending label keeps: read while loading but not yet\n // shown (the idle label still painted), never on an idle render (a read\n // there forces a layout in every commit).\n useLayoutEffect(() => {\n if (loading && !shown && ref.current) idleWidth.current = ref.current.offsetWidth || null\n })\n const rootStyle = (rootProps as { style?: Record<string, unknown> }).style\n // VAPP-162 (round-5 contract §9): `hold` = holdStart/holdEnd/holdCancel, never `press`.\n const hold = bool(props.hold)\n const { held, handlers } = useHold(hold, inert, emit)\n const holdingLabel = str(props.holdingLabel)\n const paintedLabel = held && holdingLabel ? holdingLabel : shownLabel\n const states = [...(ctx.states ?? []), disabled ? `disabled` : ``, pending ? `pending` : ``, held ? `pressed` : ``].filter(Boolean).join(` `)\n return (\n <button\n {...(rootProps as Record<string, unknown>)}\n ref={ref}\n style={shown && idleWidth.current ? { ...rootStyle, minWidth: idleWidth.current } : rootStyle}\n type=\"button\"\n disabled={disabled}\n aria-busy={loading || undefined}\n data-pending={shown ? `true` : undefined}\n // VAPP-162: an author/macro label (`$a11y`, a CallSurface round button) survives: Solid keeps the spread's.\n aria-label={iconOnly && label ? label : ((rootProps as Record<string, unknown>)[`aria-label`] as string | undefined)}\n data-xs={states || undefined}\n data-submit={submit ? `true` : undefined}\n data-hold={hold ? `true` : undefined}\n {...(hold ? handlers : {})}\n onClick={(e: MouseEvent) => {\n e.stopPropagation()\n if (hold || inert) return\n track(emit(`press`))\n if (submit) form.submit()\n }}\n >\n {shown ? (\n <span {...(part(`spinner`) as Record<string, string>)}>\n <Spinner aria-hidden=\"true\" />\n </span>\n ) : icon ? (\n <span {...(part(`icon`) as Record<string, string>)}>\n <IconGlyph icons={ctx.host.icons} name={icon} />\n </span>\n ) : null}\n {hasChild ? children : !iconOnly && paintedLabel ? <span {...(part(`label`) as Record<string, string>)}>{paintedLabel}</span> : null}\n </button>\n )\n}\n\n/** THE hold machine (`@exponential_app/eui/web` ButtonHold) wired to a\n * button's DOM events: the pointer is captured on down (a long-press or a\n * scroll never steals it), the slop is measured against the button's box,\n * Space/Enter hold from key down to key up, Escape and blur cancel. */\nfunction useHold(enabled: boolean, disabled: boolean, emit: NativeProps[`emit`]) {\n const [held, setHeld] = useState(false)\n const emitRef = useRef(emit)\n emitRef.current = emit\n const disabledRef = useRef(disabled)\n disabledRef.current = disabled\n const machine = useRef<ButtonHold | null>(null)\n machine.current ??= new ButtonHold((event) => void emitRef.current(event), setHeld, () => disabledRef.current)\n useEffect(() => {\n if (disabled || !enabled) machine.current?.reset()\n }, [disabled, enabled])\n useEffect(() => () => machine.current?.reset(), [])\n const m = machine.current\n const rect = (el: HTMLElement) => el.getBoundingClientRect()\n const handlers = {\n onPointerDown: (e: PointerEvent<HTMLButtonElement>) => {\n if (e.button !== undefined && e.button !== 0) return\n if (!m.pointerDown(e.pointerId ?? null)) return\n try {\n e.currentTarget.setPointerCapture?.(e.pointerId)\n } catch {\n // A synthetic pointer (tests) has no capture.\n }\n },\n onPointerMove: (e: PointerEvent<HTMLButtonElement>) => m.pointerMove(rect(e.currentTarget), e.clientX ?? 0, e.clientY ?? 0, e.pointerId ?? null),\n onPointerUp: (e: PointerEvent<HTMLButtonElement>) => m.pointerUp(rect(e.currentTarget), e.clientX ?? 0, e.clientY ?? 0, e.pointerId ?? null),\n onPointerCancel: (e: PointerEvent<HTMLButtonElement>) => m.pointerCancel(e.pointerId ?? null),\n onKeyDown: (e: KeyboardEvent<HTMLButtonElement>) => {\n if (m.keyDown(e.key, e.repeat)) e.preventDefault()\n },\n onKeyUp: (e: KeyboardEvent<HTMLButtonElement>) => {\n if (m.keyUp(e.key)) e.preventDefault()\n },\n onBlur: () => m.blur(),\n onContextMenu: (e: MouseEvent) => e.preventDefault(),\n }\n return { held: enabled && held, handlers }\n}\n\n/** `loading` held for `PENDING_DELAY_MS` (false again at once when it ends). */\nexport function usePendingShown(loading: boolean): boolean {\n const [shown, setShown] = useState(false)\n useEffect(() => {\n if (!loading) {\n setShown(false)\n return\n }\n const t = setTimeout(() => setShown(true), PENDING_DELAY_MS)\n return () => clearTimeout(t)\n }, [loading])\n return loading && shown\n}\n\nexport function LinkNative({ props, rootProps, emit }: NativeProps) {\n const ctx = useSurfaceContext()\n const raw = str(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.external)\n const label = str(props.label) || raw\n return (\n <a\n {...(rootProps as Record<string, unknown>)}\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: MouseEvent) => {\n const handled = emit(`press`)\n if (!href) 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(href)\n }\n }}\n >\n {label}\n </a>\n )\n}\n\nexport function ToggleNative({ node, props, rootProps, emit, scope }: NativeProps) {\n const ctx = useSurfaceContext()\n const part = useParts(node, props)\n const [pressed, setPressed] = useBoundState(node, scope, `pressed`, bool(props.pressed))\n const icon = str(props.icon)\n const label = str(props.label)\n return (\n <TogglePrimitive.Root\n {...(rootProps as Record<string, unknown>)}\n pressed={pressed}\n onPressedChange={(next) => {\n setPressed(next)\n void emit(`change`, { pressed: next }, { pressed: next })\n }}\n aria-label={icon && label ? label : ((rootProps as Record<string, unknown>)[`aria-label`] as string | undefined)}\n >\n {icon ? (\n <span {...(part(`icon`) as Record<string, string>)}>\n <IconGlyph icons={ctx.host.icons} name={icon} />\n </span>\n ) : null}\n {label ? <span {...(part(`label`) as Record<string, string>)}>{label}</span> : null}\n </TogglePrimitive.Root>\n )\n}\n",
14
14
  "// Round 1 (contract §1, \"Natives with bindable state\"): when a native's\n// state prop is a DataBinding, the renderer writes the user's change to that\n// path itself AND fires `change`. `useBoundState` is that rule for every\n// controlled native: a local mirror (a press shows at once), the host's /\n// data model's value wins whenever it changes, the write goes to the bound\n// path (relative paths against the node's scope).\n\nimport { useCallback, useEffect, useRef, useState } from \"react\"\nimport { useSurfaceContext } from \"../context\"\nimport { boundPath } from \"@exponential_app/eui/web\"\nimport type { NativeProps } from \"../node-view\"\n\nexport function useBoundState<T>(node: NativeProps[`node`], scope: string, prop: string, external: T, key: (v: T) => string = (v) => JSON.stringify(v) ?? ``): [T, (next: T, written?: unknown) => void, string | undefined] {\n const ctx = useSurfaceContext()\n const path = boundPath(node.props, prop, scope)\n const [value, setValue] = useState<T>(external)\n const externalKey = key(external)\n const last = useRef(externalKey)\n useEffect(() => {\n if (last.current === externalKey) return\n last.current = externalKey\n setValue(external)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [externalKey])\n const set = useCallback(\n // `written` = the value the bound path receives when it differs from\n // the local shape (a multiple Select bound to a string: the list shows,\n // the comma-joined string is written).\n (next: T, written: unknown = next) => {\n setValue(next)\n last.current = key(next)\n if (path) ctx.setData(path, written)\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [path, ctx.setData]\n )\n return [value, set, path]\n}\n",
15
- "// Round 1 (contract §3 Chart, a11y.json Chart): kinds bar, stackedBar,\n// line, area, pie, donut and sparkline. The width is the BOX's (measured,\n// no fixed viewBox, so text is never stretched); the numbers every painter\n// shares come from `@exponential_app/eui` (`chartExtent`, `niceTicks` for the\n// axis ticks and grid lines, `seriesColor` = the tone else\n// `$color.chart1..8` wrapping, `DONUT_HOLE`). Pie and donut draw one RING\n// per series (slices = categories). The legend shows with 2+ series or\n// slices; the tooltip part follows hover and, with the chart focused,\n// ArrowLeft/ArrowRight between categories; screen readers get a summary\n// label plus a data table. In RTL the cartesian kinds MIRROR (the first\n// category on the right, the value axis on the right), so ArrowLeft/Right\n// keep moving the highlight the way the arrow points; pie and donut do not\n// mirror.\n\nimport { useId, useMemo, useRef, useState, type KeyboardEvent, type ReactNode } from \"react\"\nimport { chartExtent, chartSummaryParams, niceTicks, seriesColor, DONUT_HOLE } from \"@exponential_app/eui\"\nimport { useSurfaceContext } from \"../context\"\nimport type { NativeProps } from \"../node-view\"\nimport { mergeStyle } from \"../node-view\"\nimport { useElementSize } from \"../platform\"\nimport { tokenVar, visualScale } from \"@exponential_app/eui/web\"\nimport { arr, bool, num, str, useParts, objects } 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\nexport function ChartNative({ node, props, rootProps }: NativeProps) {\n const ctx = useSurfaceContext()\n const part = useParts(node, props)\n const id = useId()\n const kind = str(props.kind, `bar`)\n const sparkline = kind === `sparkline`\n const round = kind === `pie` || kind === `donut`\n const series = objects<Series>(props.series).map((s) => ({ name: str(s?.name), tone: s?.tone, values: arr<unknown>(s?.values).map((v) => num(v, NaN)) }))\n const longest = Math.max(0, ...series.map((s) => s.values.length))\n const categories = arr<unknown>(props.categories).map(String)\n const n = Math.max(categories.length, longest)\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.height, sparkline ? 24 : 200))\n const showAxes = !sparkline && !round && props.showAxes !== false\n const showGrid = !sparkline && !round && props.showGrid !== false\n const showValues = bool(props.showValues)\n const [box, setBox] = useState<HTMLDivElement | null>(null)\n const size = useElementSize(box, 320)\n const width = Math.max(40, size.width || 320)\n const height = Math.max(16, size.measured && size.height > 0 ? size.height : boxHeight)\n // Ticks, value labels, the tooltip and the summary format through the\n // surface Formatter (round 2 §3).\n const fmt = useMemo(() => ({ format: (v: number) => ctx.formatter.number(v) }), [ctx.formatter])\n const [active, setActive] = useState<number | null>(null)\n const plotRef = useRef<SVGSVGElement>(null)\n\n const ext = chartExtent(kind, series, props.min === undefined ? undefined : num(props.min), props.max === undefined ? undefined : num(props.max))\n const ticks = sparkline || round ? { 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.format(t))\n const yLabel = str(props.yLabel)\n const xLabel = str(props.xLabel)\n const pad = {\n l: (showAxes ? Math.max(...tickText.map((t) => t.length), 1) * AXIS_FONT * 0.62 + 8 : sparkline ? 1 : 4) + (yLabel ? 16 : 0),\n r: sparkline ? 1 : 8,\n t: sparkline ? 2 : showValues ? 16 : 8,\n b: (showAxes ? AXIS_FONT + 10 : sparkline ? 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, n)\n const cx = (i: number) => (sparkline ? pad.l + (n <= 1 ? innerW / 2 : (innerW * i) / (n - 1)) : pad.l + slot * (i + 0.5))\n const zero = y(Math.max(lo, Math.min(hi, 0)))\n // The x mirror of the cartesian kinds in RTL (geometry is laid out LTR,\n // then every x goes through `mx`).\n const rtl = ctx.direction === `rtl` && !round\n const mx = (x: number) => (rtl ? width - x : x)\n const px = (i: number) => mx(cx(i))\n\n let body: ReactNode = null\n let values: ReactNode = null\n if (round) {\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 = kind === `donut` ? R * DONUT_HOLE : 0\n const ring = (R - inner) / Math.max(1, series.length)\n const arcs: ReactNode[] = []\n const labels: ReactNode[] = []\n series.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 arcs.push(<path key={`${si}-${i}`} d={d} fill={colorVar(i)} fillRule=\"evenodd\" stroke=\"var(--xui-color-background)\" strokeWidth={1} data-category={i} data-active={active === i ? `` : undefined} opacity={active === null || active === i ? 1 : 0.55} onPointerEnter={() => setActive(i)} />)\n if (showValues) {\n const mid = (a0 + a1) / 2\n const rm = (r0 + r1) / 2\n labels.push(\n <text key={`v${si}-${i}`} {...(part(`valueLabel`) as Record<string, string>)} x={ox + rm * Math.cos(mid)} y={oy + rm * Math.sin(mid)} textAnchor=\"middle\" dominantBaseline=\"middle\">\n {fmt.format(v)}\n </text>\n )\n }\n }\n a0 = a1\n })\n })\n body = arcs\n values = labels\n } else if (kind === `line` || kind === `area` || sparkline) {\n body = series.map((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 null\n const line = `M${pts.map((p) => p.join(`,`)).join(` L`)}`\n const color = colorVar(si, s.tone)\n return (\n <g key={si} data-series={si}>\n {kind === `area` ? <path d={`${line} L${pts[pts.length - 1][0]},${zero} L${pts[0][0]},${zero} Z`} fill={color} opacity={0.18} /> : null}\n <path d={line} fill=\"none\" stroke={color} strokeWidth={sparkline ? 1.5 : 2} strokeLinejoin=\"round\" strokeLinecap=\"round\" />\n {!sparkline ? s.values.map((v, i) => (Number.isFinite(v) ? <circle key={i} cx={px(i)} cy={y(v)} r={active === i ? 4 : 2.5} fill={color} /> : null)) : null}\n </g>\n )\n })\n if (showValues)\n values = series.flatMap((s, si) =>\n s.values.map((v, i) =>\n Number.isFinite(v) ? (\n <text key={`${si}-${i}`} {...(part(`valueLabel`) as Record<string, string>)} x={px(i)} y={y(v) - 6} textAnchor=\"middle\">\n {fmt.format(v)}\n </text>\n ) : null\n )\n )\n } else {\n const stacked = kind === `stackedBar`\n const groupW = slot * 0.72\n const bw = stacked ? groupW : groupW / Math.max(1, series.length)\n const bars: ReactNode[] = []\n const labels: ReactNode[] = []\n for (let i = 0; i < n; i++) {\n let acc = 0\n series.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(<rect key={`${si}-${i}`} x={rtl ? width - x0 - barW : x0} y={top} width={barW} height={Math.max(0, h)} rx={stacked ? 0 : 2} fill={colorVar(si, s.tone)} opacity={active === null || active === i ? 1 : 0.6} />)\n if (showValues)\n labels.push(\n <text key={`${si}-${i}`} {...(part(`valueLabel`) as Record<string, string>)} x={mx(x0 + bw / 2)} y={stacked ? top + h / 2 : top - 4} textAnchor=\"middle\" dominantBaseline={stacked ? `middle` : undefined}>\n {fmt.format(v)}\n </text>\n )\n })\n }\n body = bars\n values = labels\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.showLegend !== false && !sparkline && legendEntries.length >= 2\n const title = str(props.title)\n const summaryParams = chartSummaryParams(series)\n const summaryText = ctx.t(`chartSummary`, { series: summaryParams.series, min: fmt.format(summaryParams.min), max: fmt.format(summaryParams.max) })\n const summary = title ? `${title}: ${summaryText}` : summaryText\n\n const onKey = (e: KeyboardEvent) => {\n if (n === 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 : n - 1) : (a + delta + n) % n))\n } else if (e.key === `Home`) setActive(0)\n else if (e.key === `End`) setActive(n - 1)\n else if (e.key === `Escape`) setActive(null)\n }\n const onMove = (e: React.PointerEvent<SVGSVGElement>) => {\n if (round || n === 0) return\n const r = plotRef.current?.getBoundingClientRect()\n if (!r) return\n // NEW-82: the pointer offset is in visual px (zoom, transforms); the plot in layout px.\n const x = (rtl ? r.right - e.clientX : e.clientX - r.left) / visualScale(r.width, width) - pad.l\n const i = sparkline ? Math.round((x / innerW) * (n - 1)) : Math.floor(x / slot)\n setActive(i >= 0 && i < n ? i : null)\n }\n const tipX = active === null ? 0 : round ? pad.l + innerW / 2 : px(active)\n const tooltip =\n active !== null && active < n ? (\n <div {...(part(`tooltip`) as Record<string, string>)} role=\"presentation\" style={{ position: `absolute`, left: Math.min(Math.max(0, tipX - 60), width - 120), top: pad.t, pointerEvents: `none` }} data-category={active}>\n {categories[active] ? <strong>{categories[active]}</strong> : null}\n {series.map((s, si) => (\n <span key={si} className=\"xui-chart-tip-row\">\n <i style={{ background: round ? colorVar(active) : colorVar(si, s.tone) }} />\n {s.name ? `${s.name}: ` : ``}\n {Number.isFinite(s.values[active]) ? fmt.format(s.values[active]) : `—`}\n </span>\n ))}\n </div>\n ) : null\n\n return (\n <div {...(rootProps as Record<string, unknown>)} style={mergeStyle(rootProps, { height: boxHeight })} data-kind={kind} data-mirrored={rtl ? `true` : undefined}>\n {title ? (\n <span {...(part(`title`) as Record<string, string>)} id={`${id}-title`}>\n {title}\n </span>\n ) : null}\n <div ref={setBox} className=\"xui-chart-plot\">\n <svg\n ref={plotRef}\n width={width}\n height={height}\n viewBox={`0 0 ${width} ${height}`}\n role=\"img\"\n aria-label={summary}\n tabIndex={sparkline ? undefined : 0}\n onKeyDown={sparkline ? undefined : onKey}\n onPointerMove={sparkline ? undefined : onMove}\n onPointerLeave={() => setActive(null)}\n onBlur={() => setActive(null)}\n className=\"xui-chart-svg\"\n >\n {showGrid ? (\n <g {...(part(`grid`) as Record<string, string>)} stroke=\"currentColor\" strokeWidth={1} shapeRendering=\"crispEdges\">\n {ticks.ticks.map((t) => (\n <line key={t} x1={mx(pad.l)} x2={mx(width - pad.r)} y1={Math.round(y(t)) + 0.5} y2={Math.round(y(t)) + 0.5} />\n ))}\n </g>\n ) : null}\n {!round && active !== null && !sparkline ? <rect className=\"xui-chart-band\" x={rtl ? width - pad.l - slot * (active + 1) : pad.l + slot * active} y={pad.t} width={slot} height={innerH} fill=\"currentColor\" opacity={0.06} /> : null}\n {body}\n {values}\n {showAxes ? (\n <g {...(part(`axis`) as Record<string, string>)} fill=\"currentColor\" fontSize={AXIS_FONT}>\n <line x1={mx(pad.l)} x2={mx(width - pad.r)} y1={zero} y2={zero} stroke=\"currentColor\" strokeWidth={1} opacity={0.6} shapeRendering=\"crispEdges\" />\n {ticks.ticks.map((t, i) => (\n <text key={t} x={mx(pad.l - 6)} y={y(t)} textAnchor={rtl ? `start` : `end`} dominantBaseline=\"middle\">\n {tickText[i]}\n </text>\n ))}\n {categories.map((c, i) => (\n <text key={i} x={px(i)} y={pad.t + innerH + AXIS_FONT + 4} textAnchor=\"middle\">\n {c}\n </text>\n ))}\n {xLabel ? (\n <text x={mx(pad.l + innerW / 2)} y={height - 3} textAnchor=\"middle\">\n {xLabel}\n </text>\n ) : null}\n {yLabel ? (\n <text x={0} y={0} transform={`translate(${rtl ? width - AXIS_FONT : AXIS_FONT}, ${pad.t + innerH / 2}) rotate(${rtl ? 90 : -90})`} textAnchor=\"middle\">\n {yLabel}\n </text>\n ) : null}\n </g>\n ) : null}\n </svg>\n {tooltip}\n </div>\n {legend ? (\n <div {...(part(`legend`) as Record<string, string>)}>\n {legendEntries.map((e, i) => (\n <span key={i}>\n <i style={{ background: e.color }} />\n {e.name}\n </span>\n ))}\n </div>\n ) : null}\n {sparkline ? null : (\n <table className=\"xui-sr-only\">\n {title ? <caption>{title}</caption> : null}\n <thead>\n <tr>\n <th scope=\"col\" />\n {series.map((s, si) => (\n <th key={si} scope=\"col\">\n {s.name}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {Array.from({ length: n }, (_, i) => (\n <tr key={i}>\n <th scope=\"row\">{categories[i] ?? String(i + 1)}</th>\n {series.map((s, si) => (\n <td key={si}>{Number.isFinite(s.values[i]) ? fmt.format(s.values[i]) : ``}</td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n )}\n </div>\n )\n}\n",
15
+ "// Round 1 (contract §3 Chart, a11y.json Chart): kinds bar, stackedBar,\n// line, area, pie, donut and sparkline. The width is the BOX's (measured,\n// no fixed viewBox, so text is never stretched); the numbers every painter\n// shares come from `@exponential_app/eui` (`chartExtent`, `niceTicks` for the\n// axis ticks and grid lines, `seriesColor` = the tone else\n// `$color.chart1..8` wrapping, `DONUT_HOLE`). Pie and donut draw one RING\n// per series (slices = categories). The legend shows with 2+ series or\n// slices; the tooltip part follows hover and, with the chart focused,\n// ArrowLeft/ArrowRight between categories; screen readers get a summary\n// label plus a data table. In RTL the cartesian kinds MIRROR (the first\n// category on the right, the value axis on the right), so ArrowLeft/Right\n// keep moving the highlight the way the arrow points; pie and donut do not\n// mirror.\n\nimport { useId, useMemo, useRef, useState, type KeyboardEvent, type ReactNode } from \"react\"\nimport { chartExtent, chartSummaryParams, niceTicks, seriesColor, DONUT_HOLE } from \"@exponential_app/eui\"\nimport { useSurfaceContext } from \"../context\"\nimport type { NativeProps } from \"../node-view\"\nimport { mergeStyle } from \"../node-view\"\nimport { useElementSize } from \"../platform\"\nimport { tokenVar, visualScale } from \"@exponential_app/eui/web\"\nimport { arr, bool, num, str, useParts, objects } 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\nexport function ChartNative({ node, props, rootProps }: NativeProps) {\n const ctx = useSurfaceContext()\n const part = useParts(node, props)\n const id = useId()\n const kind = str(props.kind, `bar`)\n const sparkline = kind === `sparkline`\n const round = kind === `pie` || kind === `donut`\n const series = objects<Series>(props.series).map((s) => ({ name: str(s?.name), tone: s?.tone, values: arr<unknown>(s?.values).map((v) => num(v, NaN)) }))\n const longest = Math.max(0, ...series.map((s) => s.values.length))\n const categories = arr<unknown>(props.categories).map(String)\n const n = Math.max(categories.length, longest)\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.height, sparkline ? 24 : 200))\n const showAxes = !sparkline && !round && props.showAxes !== false\n const showGrid = !sparkline && !round && props.showGrid !== false\n const showValues = bool(props.showValues)\n const [box, setBox] = useState<HTMLDivElement | null>(null)\n const size = useElementSize(box, 320)\n const width = Math.max(40, size.width || 320)\n const height = Math.max(16, size.measured && size.height > 0 ? size.height : boxHeight)\n // Ticks, value labels, the tooltip and the summary format through the\n // surface Formatter (round 2 §3).\n const fmt = useMemo(() => ({ format: (v: number) => ctx.formatter.number(v) }), [ctx.formatter])\n const [active, setActive] = useState<number | null>(null)\n const plotRef = useRef<SVGSVGElement>(null)\n\n const ext = chartExtent(kind, series, props.min === undefined ? undefined : num(props.min), props.max === undefined ? undefined : num(props.max))\n const ticks = sparkline || round ? { 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.format(t))\n const yLabel = str(props.yLabel)\n const xLabel = str(props.xLabel)\n const pad = {\n l: (showAxes ? Math.max(...tickText.map((t) => t.length), 1) * AXIS_FONT * 0.62 + 8 : sparkline ? 1 : 4) + (yLabel ? 16 : 0),\n r: sparkline ? 1 : 8,\n t: sparkline ? 2 : showValues ? 16 : 8,\n b: (showAxes ? AXIS_FONT + 10 : sparkline ? 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, n)\n const cx = (i: number) => (sparkline ? pad.l + (n <= 1 ? innerW / 2 : (innerW * i) / (n - 1)) : pad.l + slot * (i + 0.5))\n const zero = y(Math.max(lo, Math.min(hi, 0)))\n // The x mirror of the cartesian kinds in RTL (geometry is laid out LTR,\n // then every x goes through `mx`).\n const rtl = ctx.direction === `rtl` && !round\n const mx = (x: number) => (rtl ? width - x : x)\n const px = (i: number) => mx(cx(i))\n\n let body: ReactNode = null\n let values: ReactNode = null\n if (round) {\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 = kind === `donut` ? R * DONUT_HOLE : 0\n const ring = (R - inner) / Math.max(1, series.length)\n const arcs: ReactNode[] = []\n const labels: ReactNode[] = []\n series.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 arcs.push(<path key={`${si}-${i}`} d={d} fill={colorVar(i)} fillRule=\"evenodd\" stroke=\"var(--xui-color-background)\" strokeWidth={1} data-category={i} data-active={active === i ? `` : undefined} opacity={active === null || active === i ? 1 : 0.55} onPointerEnter={() => setActive(i)} />)\n if (showValues) {\n const mid = (a0 + a1) / 2\n const rm = (r0 + r1) / 2\n labels.push(\n <text key={`v${si}-${i}`} {...(part(`valueLabel`) as Record<string, string>)} x={ox + rm * Math.cos(mid)} y={oy + rm * Math.sin(mid)} textAnchor=\"middle\" dominantBaseline=\"middle\">\n {fmt.format(v)}\n </text>\n )\n }\n }\n a0 = a1\n })\n })\n body = arcs\n values = labels\n } else if (kind === `line` || kind === `area` || sparkline) {\n body = series.map((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 null\n const line = `M${pts.map((p) => p.join(`,`)).join(` L`)}`\n const color = colorVar(si, s.tone)\n return (\n <g key={si} data-series={si}>\n {kind === `area` ? <path d={`${line} L${pts[pts.length - 1][0]},${zero} L${pts[0][0]},${zero} Z`} fill={color} opacity={0.18} /> : null}\n <path d={line} fill=\"none\" stroke={color} strokeWidth={sparkline ? 1.5 : 2} strokeLinejoin=\"round\" strokeLinecap=\"round\" />\n {/* EXP-1556: the bare line ×4; only the active point gets a marker. */}\n {!sparkline && active !== null && Number.isFinite(s.values[active]) ? <circle cx={px(active)} cy={y(s.values[active])} r={4} fill={color} /> : null}\n </g>\n )\n })\n if (showValues)\n values = series.flatMap((s, si) =>\n s.values.map((v, i) =>\n Number.isFinite(v) ? (\n <text key={`${si}-${i}`} {...(part(`valueLabel`) as Record<string, string>)} x={px(i)} y={y(v) - 6} textAnchor=\"middle\">\n {fmt.format(v)}\n </text>\n ) : null\n )\n )\n } else {\n const stacked = kind === `stackedBar`\n const groupW = slot * 0.72\n const bw = stacked ? groupW : groupW / Math.max(1, series.length)\n const bars: ReactNode[] = []\n const labels: ReactNode[] = []\n for (let i = 0; i < n; i++) {\n let acc = 0\n series.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(<rect key={`${si}-${i}`} x={rtl ? width - x0 - barW : x0} y={top} width={barW} height={Math.max(0, h)} rx={stacked ? 0 : 2} fill={colorVar(si, s.tone)} opacity={active === null || active === i ? 1 : 0.6} />)\n if (showValues)\n labels.push(\n <text key={`${si}-${i}`} {...(part(`valueLabel`) as Record<string, string>)} x={mx(x0 + bw / 2)} y={stacked ? top + h / 2 : top - 4} textAnchor=\"middle\" dominantBaseline={stacked ? `middle` : undefined}>\n {fmt.format(v)}\n </text>\n )\n })\n }\n body = bars\n values = labels\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.showLegend !== false && !sparkline && legendEntries.length >= 2\n const title = str(props.title)\n const summaryParams = chartSummaryParams(series)\n const summaryText = ctx.t(`chartSummary`, { series: summaryParams.series, min: fmt.format(summaryParams.min), max: fmt.format(summaryParams.max) })\n const summary = title ? `${title}: ${summaryText}` : summaryText\n\n const onKey = (e: KeyboardEvent) => {\n if (n === 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 : n - 1) : (a + delta + n) % n))\n } else if (e.key === `Home`) setActive(0)\n else if (e.key === `End`) setActive(n - 1)\n else if (e.key === `Escape`) setActive(null)\n }\n const onMove = (e: React.PointerEvent<SVGSVGElement>) => {\n if (round || n === 0) return\n const r = plotRef.current?.getBoundingClientRect()\n if (!r) return\n // NEW-82: the pointer offset is in visual px (zoom, transforms); the plot in layout px.\n const x = (rtl ? r.right - e.clientX : e.clientX - r.left) / visualScale(r.width, width) - pad.l\n const i = sparkline ? Math.round((x / innerW) * (n - 1)) : Math.floor(x / slot)\n setActive(i >= 0 && i < n ? i : null)\n }\n const tipX = active === null ? 0 : round ? pad.l + innerW / 2 : px(active)\n const tooltip =\n active !== null && active < n ? (\n <div {...(part(`tooltip`) as Record<string, string>)} role=\"presentation\" style={{ position: `absolute`, left: Math.min(Math.max(0, tipX - 60), width - 120), top: pad.t, pointerEvents: `none` }} data-category={active}>\n {categories[active] ? <strong>{categories[active]}</strong> : null}\n {series.map((s, si) => (\n <span key={si} className=\"xui-chart-tip-row\">\n <i style={{ background: round ? colorVar(active) : colorVar(si, s.tone) }} />\n {s.name ? `${s.name}: ` : ``}\n {Number.isFinite(s.values[active]) ? fmt.format(s.values[active]) : `—`}\n </span>\n ))}\n </div>\n ) : null\n\n return (\n <div {...(rootProps as Record<string, unknown>)} style={mergeStyle(rootProps, { height: boxHeight })} data-kind={kind} data-mirrored={rtl ? `true` : undefined}>\n {title ? (\n <span {...(part(`title`) as Record<string, string>)} id={`${id}-title`}>\n {title}\n </span>\n ) : null}\n <div ref={setBox} className=\"xui-chart-plot\">\n <svg\n ref={plotRef}\n width={width}\n height={height}\n viewBox={`0 0 ${width} ${height}`}\n role=\"img\"\n aria-label={summary}\n tabIndex={sparkline ? undefined : 0}\n onKeyDown={sparkline ? undefined : onKey}\n onPointerMove={sparkline ? undefined : onMove}\n onPointerLeave={() => setActive(null)}\n onBlur={() => setActive(null)}\n className=\"xui-chart-svg\"\n >\n {showGrid ? (\n <g {...(part(`grid`) as Record<string, string>)} stroke=\"currentColor\" strokeWidth={1} shapeRendering=\"crispEdges\">\n {ticks.ticks.map((t) => (\n <line key={t} x1={mx(pad.l)} x2={mx(width - pad.r)} y1={Math.round(y(t)) + 0.5} y2={Math.round(y(t)) + 0.5} />\n ))}\n </g>\n ) : null}\n {!round && active !== null && !sparkline ? <rect className=\"xui-chart-band\" x={rtl ? width - pad.l - slot * (active + 1) : pad.l + slot * active} y={pad.t} width={slot} height={innerH} fill=\"currentColor\" opacity={0.06} /> : null}\n {body}\n {values}\n {showAxes ? (\n <g {...(part(`axis`) as Record<string, string>)} fill=\"currentColor\" fontSize={AXIS_FONT}>\n {/* EXP-1556: the baseline in the gridlines' colour, as the natives draw it. */}\n <g {...(part(`grid`) as Record<string, string>)}>\n <line x1={mx(pad.l)} x2={mx(width - pad.r)} y1={zero} y2={zero} stroke=\"currentColor\" strokeWidth={1} shapeRendering=\"crispEdges\" />\n </g>\n {ticks.ticks.map((t, i) => (\n <text key={t} x={mx(pad.l - 6)} y={y(t)} textAnchor={rtl ? `start` : `end`} dominantBaseline=\"middle\">\n {tickText[i]}\n </text>\n ))}\n {categories.map((c, i) => (\n <text key={i} x={px(i)} y={pad.t + innerH + AXIS_FONT + 4} textAnchor=\"middle\">\n {c}\n </text>\n ))}\n {xLabel ? (\n <text x={mx(pad.l + innerW / 2)} y={height - 3} textAnchor=\"middle\">\n {xLabel}\n </text>\n ) : null}\n {yLabel ? (\n <text x={0} y={0} transform={`translate(${rtl ? width - AXIS_FONT : AXIS_FONT}, ${pad.t + innerH / 2}) rotate(${rtl ? 90 : -90})`} textAnchor=\"middle\">\n {yLabel}\n </text>\n ) : null}\n </g>\n ) : null}\n </svg>\n {tooltip}\n </div>\n {legend ? (\n <div {...(part(`legend`) as Record<string, string>)}>\n {legendEntries.map((e, i) => (\n <span key={i}>\n <i style={{ background: e.color }} />\n {e.name}\n </span>\n ))}\n </div>\n ) : null}\n {sparkline ? null : (\n <table className=\"xui-sr-only\">\n {title ? <caption>{title}</caption> : null}\n <thead>\n <tr>\n <th scope=\"col\" />\n {series.map((s, si) => (\n <th key={si} scope=\"col\">\n {s.name}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {Array.from({ length: n }, (_, i) => (\n <tr key={i}>\n <th scope=\"row\">{categories[i] ?? String(i + 1)}</th>\n {series.map((s, si) => (\n <td key={si}>{Number.isFinite(s.values[i]) ? fmt.format(s.values[i]) : ``}</td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n )}\n </div>\n )\n}\n",
16
16
  "// Round 1: the platform preferences a surface follows LIVE — dark mode for\n// `mode: system`, `prefers-contrast: more` for `contrast: system`, reduced\n// motion, a hover-capable pointer — and the surface's own measured box\n// (breakpoints and height/orientation conditions resolve against the\n// SURFACE, never the window).\n\nimport { useCallback, useEffect, useLayoutEffect, useState, useSyncExternalStore } from \"react\"\nimport { layoutSize } from \"@exponential_app/eui/web\"\n\nconst useIsoLayoutEffect = typeof window === `undefined` ? useEffect : useLayoutEffect\n\n/** `matchMedia(query).matches`, live; `fallback` without `matchMedia`\n * (SSR, jsdom). */\nexport function useMediaQuery(query: string, fallback = false): boolean {\n const subscribe = useCallback(\n (onChange: () => void) => {\n if (typeof window === `undefined` || typeof window.matchMedia !== `function`) return () => {}\n const mql = window.matchMedia(query)\n mql.addEventListener?.(`change`, onChange)\n return () => mql.removeEventListener?.(`change`, onChange)\n },\n [query]\n )\n const read = () => (typeof window === `undefined` || typeof window.matchMedia !== `function` ? fallback : window.matchMedia(query).matches)\n return useSyncExternalStore(subscribe, read, () => fallback)\n}\n\nexport interface BoxSize {\n width: number\n height: number\n /** False until the first measurement. */\n measured: boolean\n}\n\n/** An element's border box in layout px (NEW-82: unzoomed, untransformed;\n * `layoutSize`), live (ResizeObserver, disconnected on unmount). */\nexport function useElementSize(el: HTMLElement | null, initialWidth = 0): BoxSize {\n const [size, setSize] = useState<BoxSize>({ width: initialWidth, height: 0, measured: false })\n useIsoLayoutEffect(() => {\n if (!el) return\n const read = (entries?: ResizeObserverEntry[]) => {\n const r = layoutSize(el, entries?.find((e) => e.target === el))\n setSize((cur) => {\n // No layout yet (SSR, jsdom, display:none): keep the initial guess.\n if (!cur.measured && r.width === 0 && r.height === 0) return cur\n return cur.measured && cur.width === r.width && cur.height === r.height ? cur : { width: r.width, height: r.height, measured: true }\n })\n }\n read()\n if (typeof ResizeObserver === `undefined`) return\n const ro = new ResizeObserver((entries) => read(entries))\n ro.observe(el)\n return () => ro.disconnect()\n }, [el])\n return size\n}\n",
17
17
  "// Round 1 (contract §3, a11y.json 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 removes the last\n// chip, each chip has a remove control; `suggestions` complete the typing\n// (a listbox driven by the field: ArrowUp/Down + Enter). Events: `add\n// {value}`, `remove {value}`, `change {values}`; a 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 { useId, useMemo, useRef, useState, type DragEvent } from \"react\"\nimport { useSurfaceContext } from \"../context\"\nimport { FieldErrors, joinIds, useField } from \"../form\"\nimport type { NativeProps } from \"../node-view\"\nimport { useBoundState } from \"./bound\"\nimport { linkHref } from \"@exponential_app/eui/web\"\nimport { useListNavigation } from \"./listbox\"\nimport { partClass } from \"@exponential_app/eui/web\"\nimport { arr, bool, BuiltinIcon, formatFileSize, num, phrase, str, useParts, TextPart, objects } from \"./shared\"\nimport { acceptsFile } from \"@exponential_app/eui/web\"\n\nexport { acceptsFile }\n\nexport function ChipInputNative({ node, props, rootProps, emit, scope, domId }: NativeProps) {\n const part = useParts(node, props)\n const ctx = useSurfaceContext()\n const id = useId()\n const listId = `${id}-suggestions`\n const external = arr<unknown>(props.values).map(String)\n const [values, setValues] = useBoundState<string[]>(node, scope, `values`, external)\n const [text, setText] = useState(``)\n const [focused, setFocused] = useState(false)\n const inputRef = useRef<HTMLInputElement | null>(null)\n const f = useField({ node, domId, props, value: values, focusRef: inputRef })\n const disabled = bool(props.disabled) || Boolean(f.form?.disabled)\n const max = props.max === undefined ? Infinity : num(props.max, Infinity)\n const suggestions = objects<{ label: string; value: string; disabled?: boolean }>(props.suggestions)\n const shown = useMemo(() => (text ? suggestions.filter((s) => !values.includes(s.value) && str(s.label).toLowerCase().includes(text.toLowerCase())) : []), [suggestions, text, values])\n const update = (next: string[]) => {\n setValues(next)\n f.change(next)\n void emit(`change`, { values: next }, { values: next })\n return next\n }\n const add = (raw: string) => {\n const value = raw.trim()\n if (!value || values.includes(value) || values.length >= max) return false\n const next = update([...values, value])\n void emit(`add`, { value }, { values: next })\n setText(``)\n return true\n }\n const listRef = useRef<HTMLUListElement | null>(null)\n const chipAt = (i: number) => listRef.current?.querySelectorAll<HTMLElement>(`[data-chip]`)[i] ?? null\n const remove = (value: string, focusIndex?: number) => {\n const next = update(values.filter((v) => v !== value))\n void 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 ?? inputRef.current)?.focus()\n }, 0)\n }\n const onChipKey = (e: React.KeyboardEvent, i: number) => {\n const rtl = ctx.direction === `rtl`\n const prev = rtl ? `ArrowRight` : `ArrowLeft`\n const next = rtl ? `ArrowLeft` : `ArrowRight`\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 < values.length) chipAt(i + 1)?.focus()\n else inputRef.current?.focus()\n } else if ((e.key === `Backspace` || e.key === `Delete`) && !disabled) {\n e.preventDefault()\n remove(values[i], e.key === `Backspace` ? i - 1 : i < values.length - 1 ? i : i - 1)\n }\n }\n const nav = useListNavigation({ count: shown.length, isDisabled: (i) => bool(shown[i]?.disabled), onPick: (i) => add(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.placeholder)\n return (\n <div {...(rootProps as Record<string, unknown>)}>\n <TextPart part={part(`label`)} text={props.label} as=\"label\" htmlFor={id} />\n <div {...(part(`field`, focused && `focus`, disabled && `disabled`, f.invalid && `invalid`) as Record<string, string>)} onClick={() => inputRef.current?.focus()} data-xui-chipfield=\"\">\n <ul ref={listRef} className=\"xui-chip-list\" aria-label={str(props.label) || undefined}>\n {values.map((v, i) => (\n <li key={v} {...(part.at(`chip`, i) as Record<string, string>)} data-chip=\"\" tabIndex={-1} onKeyDown={(e) => onChipKey(e, i)} onFocus={(e) => e.currentTarget.setAttribute(`data-xs`, `focus`)} onBlur={(e) => e.currentTarget.removeAttribute(`data-xs`)}>\n <span {...(part.at(`chipLabel`, i) as Record<string, string>)}>{v}</span>\n {disabled ? null : (\n <button type=\"button\" tabIndex={-1} {...(part.at(`remove`, i) as Record<string, string>)} aria-label={phrase(ctx, `removeItem`, { name: v }, () => `${ctx.t(`remove`)} ${v}`)} onClick={(e) => {\n e.stopPropagation()\n remove(v)\n }}>\n <BuiltinIcon slot=\"ChipInput.remove\" />\n </button>\n )}\n </li>\n ))}\n </ul>\n <input\n ref={inputRef}\n id={id}\n {...(part(`input`) as Record<string, string>)}\n 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 onChange={(e) => {\n const v = e.target.value\n if (v.includes(`,`)) {\n const parts = v.split(`,`)\n const last = parts.pop() ?? ``\n for (const p of parts) add(p)\n setText(last)\n } else setText(v)\n }}\n onKeyDown={(e) => {\n if (open && (e.key === `ArrowDown` || e.key === `ArrowUp` || (e.key === `Enter` && nav.active >= 0))) {\n nav.onKeyDown(e)\n return\n }\n if (e.key === `Enter`) {\n e.preventDefault()\n if (text.trim()) add(text)\n else f.submit()\n } else if (e.key === `Backspace` && text === `` && values.length) {\n // First Backspace focuses the last chip; on the chip it removes.\n e.preventDefault()\n chipAt(values.length - 1)?.focus()\n } else if ((e.key === `ArrowLeft` || e.key === `ArrowRight`) && text === `` && values.length && e.key === (ctx.direction === `rtl` ? `ArrowRight` : `ArrowLeft`)) {\n e.preventDefault()\n chipAt(values.length - 1)?.focus()\n } else if (e.key === `Escape`) setText(``)\n }}\n />\n </div>\n {open ? (\n <div id={listId} role=\"listbox\" className=\"xui-ChipInput-suggestions\">\n {shown.map((s, i) => (\n <div key={s.value} id={`${listId}-${i}`} role=\"option\" aria-selected={i === nav.active} className=\"xui-ChipInput-suggestion\" data-active={i === nav.active ? `` : undefined} onMouseDown={(e) => e.preventDefault()} onClick={() => add(s.value)}>\n {str(s.label)}\n </div>\n ))}\n </div>\n ) : null}\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({ node, props, rootProps, emit, scope, domId }: NativeProps) {\n const part = useParts(node, props)\n const ctx = useSurfaceContext()\n const id = useId()\n const external = objects<FileMeta>(props.files)\n const [files, setFiles] = useBoundState<FileMeta[]>(node, scope, `files`, external)\n const zoneRef = useRef<HTMLDivElement | null>(null)\n const inputRef = useRef<HTMLInputElement | null>(null)\n const f = useField({ node, domId, props, value: files, focusRef: zoneRef })\n const disabled = bool(props.disabled) || Boolean(f.form?.disabled)\n const multiple = bool(props.multiple)\n const accept = str(props.accept)\n const maxSize = props.maxSize === undefined ? Infinity : num(props.maxSize, Infinity)\n const [drag, setDrag] = useState(false)\n const [busy, setBusy] = useState(false)\n const [refused, setRefused] = useState<string[]>([])\n const name = str(props.name, node.id)\n const size = (n: number | undefined) => (n === undefined ? `` : formatFileSize(n, ctx.locale))\n const take = (list: FileList | File[] | null) => {\n if (!list || disabled) return\n const picked = Array.from(list).slice(0, multiple ? undefined : 1)\n const ok: File[] = []\n const errors: string[] = []\n for (const file of picked) {\n if (!acceptsFile(accept, file)) errors.push(phrase(ctx, `unsupportedFileNamed`, { name: file.name }, () => `${file.name}: ${ctx.t(`unsupportedFile`)}`))\n else if (file.size > 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 = multiple ? [...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 emit(`upload`, { files: next, added: meta }, { files: next })\n const r = ctx.host.onUpload?.(ok, { nodeId: domId, 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 = files.filter((x) => x.name !== fileName)\n setFiles(next)\n f.change(next)\n void emit(`remove`, { name: fileName, files: next }, { files: next })\n }\n const onDrag = (e: DragEvent, over: boolean) => {\n e.preventDefault()\n if (disabled) return\n setDrag(over)\n }\n const hint = str(props.hint)\n return (\n <div {...(rootProps as Record<string, unknown>)}>\n <TextPart part={part(`label`)} text={props.label} as=\"label\" htmlFor={id} />\n <div\n ref={zoneRef}\n {...(part(`dropzone`, drag && `dragover`, disabled && `disabled`, f.invalid && `invalid`) as Record<string, string>)}\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.label) || ctx.t(`dropFiles`)}\n data-dragover={drag ? `` : undefined}\n onClick={() => !disabled && inputRef.current?.click()}\n onKeyDown={(e) => {\n if (disabled) return\n if (e.key === `Enter` || e.key === ` `) {\n e.preventDefault()\n inputRef.current?.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`) as Record<string, string>)}>\n <BuiltinIcon slot=\"FileUpload.icon\" />\n </span>\n <span {...(part(`title`) as Record<string, string>)}>{ctx.t(`dropFiles`)}</span>\n {hint ? (\n <span {...(part(`hint`) as Record<string, string>)} id={`${id}-hint`}>\n {hint}\n </span>\n ) : null}\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`) as Record<string, string>)} className={`${(part(`browse`) as { className: string }).className} ${partClass(`Button`, `root`)}`} data-r-variant=\"outline\" data-r-size=\"sm\" aria-hidden=\"true\">\n {ctx.t(`browse`)}\n </span>\n <input ref={inputRef} id={id} type=\"file\" className=\"xui-sr-only\" tabIndex={-1} accept={accept || undefined} multiple={multiple} disabled={disabled} name={name} onChange={(e) => {\n take(e.target.files)\n e.target.value = ``\n }} />\n </div>\n {files.length ? (\n <ul className=\"xui-file-list\">\n {files.map((file, i) => (\n <li key={file.name} {...(part.at(`file`, i) as Record<string, string>)}>\n <span {...(part.at(`fileIcon`, i) as Record<string, string>)}>\n <BuiltinIcon slot=\"FileUpload.file\" />\n </span>\n <span {...(part.at(`fileName`, i) as Record<string, string>)}>{linkHref(ctx.host, file.url) ? <a href={linkHref(ctx.host, file.url)} target=\"_blank\" rel=\"noreferrer\">{file.name}</a> : file.name}</span>\n {file.size !== undefined ? <span {...(part.at(`fileMeta`, i) as Record<string, string>)}>{size(file.size)}</span> : null}\n {disabled ? null : (\n <button type=\"button\" {...(part.at(`remove`, i) as Record<string, string>)} 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 )}\n </li>\n ))}\n </ul>\n ) : null}\n {refused.length ? (\n <div {...(part(`error`) as Record<string, string>)} id={`${id}-refused`} role=\"alert\">\n {refused.map((m) => (\n <span key={m} className=\"xui-field-error\">\n {m}\n </span>\n ))}\n </div>\n ) : null}\n <FieldErrors part={part} field={f} />\n </div>\n )\n}\n",
18
18
  "// Round 1 (a11y.json Select / TimePicker / ChipInput suggestions): the\n// LISTBOX keyboard model the hand-built pickers share — an active option\n// (aria-activedescendant, focus stays where it is), ArrowUp/ArrowDown move\n// it (wrapping, skipping disabled), Home/End jump, Enter picks, printable\n// keys type-ahead by label when the list owns focus.\n\nimport { useCallback, useEffect, useRef, useState, type KeyboardEvent } from \"react\"\nimport { nextEnabledIndex, typeaheadStep } from \"@exponential_app/eui/web\"\n\nexport interface ListNavOptions {\n count: number\n isDisabled?: (index: number) => boolean\n labelOf?: (index: number) => string\n onPick: (index: number) => void\n /** Type-ahead (off when a search field owns the keys). */\n typeahead?: boolean\n initial?: number\n}\n\nexport function useListNavigation({ count, isDisabled = () => false, labelOf = () => ``, onPick, typeahead = false, initial = -1 }: ListNavOptions) {\n const [active, setActive] = useState(initial)\n const buffer = useRef({ text: ``, at: 0 })\n useEffect(() => {\n if (active >= count) setActive(count - 1)\n }, [count, active])\n const move = useCallback((from: number, delta: number) => nextEnabledIndex(count, from, delta, isDisabled), [count, isDisabled])\n const onKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (e.key === `ArrowDown`) {\n e.preventDefault()\n setActive((a) => move(a < 0 ? -1 : a, 1))\n } else if (e.key === `ArrowUp`) {\n e.preventDefault()\n setActive((a) => move(a < 0 ? 0 : a, -1))\n } else if (e.key === `Home`) {\n e.preventDefault()\n setActive(move(-1, 1))\n } else if (e.key === `End`) {\n e.preventDefault()\n setActive(move(0, -1))\n } else if (e.key === `Enter` || (e.key === ` ` && typeahead && buffer.current.text === ``)) {\n if (active >= 0 && active < count && !isDisabled(active)) {\n e.preventDefault()\n onPick(active)\n }\n } else if (typeahead && e.key.length === 1 && !e.metaKey && !e.ctrlKey && !e.altKey) {\n const step = typeaheadStep(buffer.current, e.key, Date.now(), active, count, isDisabled, labelOf)\n buffer.current = step.buffer\n if (step.index >= 0) setActive(step.index)\n }\n },\n [move, active, count, isDisabled, onPick, typeahead, labelOf]\n )\n return { active, setActive, onKeyDown }\n}\n",
19
19
  "// EXP-1280: ChoiceTiles — picture tiles picking one value or several. The\n// headless frame (grid, radio/checkbox buttons, roving keys) is the\n// primitive's (`primitives/choice-tiles.tsx`, the app's plan card uses the\n// same frame); here it wears the theme's recipe parts: `tile.<i>`\n// (`selected`, `disabled`, `invalid`), `picture.<i>` (through the host's\n// media request, so a relative `/api/attachments/{id}` loads in the app; a\n// tile without an image keeps the box with the Image fallback glyph),\n// `label.<i>`, `description.<i>`. The value is bindable, comma-joined when\n// `type: multiple` (like Segmented); a pick writes it and fires\n// `change {value}` (fixtures/interactions-round1.json `choiceTiles`).\n\nimport { useMemo, useRef } from \"react\"\nimport { useSurfaceContext } from \"../context\"\nimport { FieldErrors, useField } from \"../form\"\nimport type { NativeProps } from \"../node-view\"\nimport { useMediaSource } from \"../media\"\nimport { ChoiceTilesFrame, choiceColumns, choiceValues, type ChoiceTileOption } from \"../primitives/choice-tiles\"\nimport { useBoundState } from \"./bound\"\nimport { bool, BuiltinIcon, objects, str } from \"./shared\"\nimport { useParts } from \"./shared\"\n\nfunction TilePicture({ src }: { src: string | null }) {\n const ctx = useSurfaceContext()\n const media = useMediaSource(ctx.host, src ?? ``)\n if (src && media.url && !media.error) return <img src={media.url} alt=\"\" loading=\"lazy\" decoding=\"async\" />\n return <BuiltinIcon slot=\"Image.fallback\" />\n}\n\nexport function ChoiceTilesNative({ node, props, rootProps, emit, scope, domId }: NativeProps) {\n const part = useParts(node, props)\n const ctx = useSurfaceContext()\n const multiple = str(props.type, `single`) === `multiple`\n const options = useMemo(\n () =>\n objects<Record<string, unknown>>(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 [props.options]\n )\n const [value, setValue] = useBoundState(node, scope, `value`, str(props.value))\n const rootRef = useRef<HTMLDivElement | null>(null)\n // The field's focus target: the tab stop (the picked tile, else the first).\n const focusRef = useMemo(\n () => ({\n get current(): HTMLElement | null {\n return (rootRef.current?.querySelector(`button[tabindex=\"0\"]`) ?? rootRef.current?.querySelector(`button`)) as HTMLElement | null\n },\n }),\n []\n )\n const f = useField({ node, domId, props, value, focusRef })\n const disabled = bool(props.disabled) || Boolean(f.form?.disabled)\n const picked = choiceValues(value, multiple)\n const states = (s: { selected: boolean; disabled: boolean }) => [s.selected && `selected`, s.disabled && `disabled`, f.invalid && `invalid`] as const\n const { className: rootClass, ...rootRest } = rootProps as Record<string, unknown>\n return (\n <ChoiceTilesFrame\n rootRef={rootRef}\n options={options}\n picked={picked}\n multiple={multiple}\n columns={choiceColumns(props.columns)}\n disabled={disabled}\n invalid={f.invalid}\n dir={ctx.direction === `rtl` ? `rtl` : `ltr`}\n onPick={(next) => {\n const joined = next.join(`,`)\n setValue(joined)\n f.change(joined)\n f.touch()\n void emit(`change`, { value: joined }, { value: joined })\n }}\n rootProps={{ ...rootRest, className: `${str(rootClass)} xui-choice-tiles`, \"aria-describedby\": f.describedBy }}\n tileProps={(s) => part.at(`tile`, s.index, ...states(s))}\n pictureProps={(s) => part.at(`picture`, s.index, ...states(s))}\n labelProps={(s) => part.at(`label`, s.index, ...states(s))}\n descriptionProps={(s) => part.at(`description`, s.index, ...states(s))}\n renderPicture={(src) => <TilePicture src={src} />}\n after={<FieldErrors part={part} field={f} />}\n />\n )\n}\n",
20
20
  "// VAPP-91: the media loader on React. The policy, the bounded blob-url\n// cache and the limited fetchers are the web layer's\n// (`@exponential_app/eui/web` media.ts, FEED-128); this is the hook around\n// `openMediaSource`: a fetched source loads once per mounted consumer set\n// (the cache holds it while any consumer is mounted), a direct one is used\n// as is, a denied one is a failed load.\n\nimport { useEffect, useState } from \"react\"\nimport { openMediaSource, type MediaKind } from \"@exponential_app/eui/web\"\nimport type { HostPlugin } from \"./host\"\n\nexport { clearMediaCache, fetchLimited, fetchStream, mediaCacheStats, MEDIA_CACHE_IDLE_MAX } from \"@exponential_app/eui/web\"\nexport type { MediaKind } from \"@exponential_app/eui/web\"\n\n/** A media source's state: the url to use (undefined while a fetched one\n * loads or after it failed) and whether the fetch failed (so an Image can\n * show its fallback; an <img> never sees a failed fetch). A src the media\n * policy denies has no url and `error`. */\nexport function useMediaSource(host: HostPlugin, src: string, kind: MediaKind = `image`): { url: string | undefined; error: boolean } {\n const plan = openMediaSource(host, src, kind)\n const [blob, setBlob] = useState<{ for: string; url?: string; error?: true } | null>(null)\n const k = plan.key\n useEffect(() => {\n if (!plan.fetched) 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 return () => {\n live = false\n release()\n }\n // the plan is derived from k\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [plan.fetched, k])\n // A src the media policy denies is a failed load (the fallback paints).\n if (!plan.fetched) return { url: plan.direct, error: plan.denied }\n return blob?.for === k ? { url: blob.url, error: blob.error === true } : { url: undefined, error: false }\n}\n\n/** The src an element should use, or undefined while a fetched one loads\n * (or after it failed). */\nexport function useMediaSrc(host: HostPlugin, src: string, kind: MediaKind = `image`): string | undefined {\n return useMediaSource(host, src, kind).url\n}\n",
21
21
  "// Round 1 (contract §3 CodeBlock, a11y.json CodeBlock): the code block on\n// the catalog's ONE tokenizer (`tokenizeCode`, catalog/code.json — the same\n// tokens on every platform), 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 (shadcn's code-block look\n// lives in the theme); `ansi` output copies without its escapes.\n\nimport { useMemo, useRef, useState } from \"react\"\nimport { codeText, tokenizeCode } from \"@exponential_app/eui\"\nimport { useSurfaceContext } from \"../context\"\nimport type { NativeProps } from \"../node-view\"\nimport { arr, bool, BuiltinIcon, num, str, useParts } from \"./shared\"\n\nexport function CodeBlockNative({ node, props, rootProps, domId }: NativeProps) {\n const ctx = useSurfaceContext()\n const part = useParts(node, props)\n const code = str(props.code)\n const language = str(props.language, `plain`)\n const lines = useMemo(() => tokenizeCode(code, language), [code, language])\n const highlight = new Set(arr<unknown>(props.highlight).map((v) => num(v)))\n const numbers = bool(props.lineNumbers)\n const copyable = props.copyable !== false\n const title = str(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.maxLines === undefined ? 0 : num(props.maxLines)\n const [copied, setCopied] = useState(false)\n const timer = useRef<ReturnType<typeof setTimeout> | null>(null)\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.current) clearTimeout(timer.current)\n timer.current = setTimeout(() => setCopied(false), 1500)\n }\n const gutterWidth = `${String(lines.length).length + 1}ch`\n return (\n <div {...(rootProps as Record<string, unknown>)} role=\"region\" aria-label={title || ctx.t(`codeBlock`)} data-language={language}>\n {heading || copyable ? (\n <div {...(part(`header`) as Record<string, string>)}>\n {heading ? <span {...(part(`title`) as Record<string, string>)}>{heading}</span> : <span className=\"xui-codeblock-spacer\" />}\n {copyable ? (\n <button type=\"button\" {...(part(`copy`, copied && `checked`) as Record<string, string>)} aria-label={copied ? ctx.t(`copied`) : ctx.t(`copy`)} onClick={() => void copy()}>\n <BuiltinIcon slot={copied ? `CodeBlock.copied` : `CodeBlock.copy`} />\n </button>\n ) : null}\n </div>\n ) : null}\n <div {...(part(`body`) as Record<string, string>)} className={`${(part(`body`) as { className: string }).className} xui-codeblock-scroll`} data-wrap={bool(props.wrap) ? `true` : undefined} style={maxLines > 0 ? ({ \"--xui-code-lines\": maxLines } as React.CSSProperties) : undefined} data-max-lines={maxLines > 0 ? maxLines : undefined} tabIndex={0} aria-labelledby={title ? undefined : undefined}>\n <pre className=\"xui-codeblock-pre\" id={`${domId}.code`}>\n <code>\n {lines.map((tokens, i) => (\n <span key={i} {...(part.at(`line`, i, highlight.has(i + 1) && `selected`) as Record<string, string>)} data-line={i + 1}>\n {numbers ? (\n <span {...(part(`gutter`) as Record<string, string>)} style={{ minWidth: gutterWidth }} aria-hidden=\"true\">\n <span {...(part.at(`lineNumber`, i) as Record<string, string>)}>{i + 1}</span>\n </span>\n ) : null}\n <span {...(part.at(`code`, i) as Record<string, string>)} className={`${(part(`code`) as { className: string }).className} xui-codeblock-text`}>\n {tokens.length === 0 ? `​` : null}\n {tokens.map((t, j) => (\n <span key={j} {...(part.with(`token`, { kind: t.kind }) as Record<string, string>)}>\n {t.text}\n </span>\n ))}\n </span>\n {`\\n`}\n </span>\n ))}\n </code>\n </pre>\n </div>\n </div>\n )\n}\n",
22
- "// Round 1 (contract §3–4, a11y.json DatePicker): DatePicker, DateRangePicker\n// and TimePicker. ONE calendar grid (role=grid, a roving tab stop on the\n// focused day): arrows ±1 day / ±1 week, PageUp/PageDown ±1 month (Shift =\n// ±1 year), Home/End = the start/end of the week by the LOCALE week start\n// (`weekStart(locale)` from catalog/locale.json, never the browser's), Enter\n// / Space pick. Month and weekday names are the surface locale's (Intl).\n// The range picker selects in two steps (start, then end; an earlier end\n// swaps). TimePicker = a listbox of `step`-minute times between min and max\n// (shown in the locale's clock), typed `HH:mm` accepted in its filter.\n\nimport { useEffect, useId, useMemo, useRef, useState, type KeyboardEvent } from \"react\"\nimport { Popover as PopoverPrimitive } from \"radix-ui\"\nimport { OVERLAY_OFFSET, OVERLAY_PADDING, weekStart } from \"@exponential_app/eui\"\nimport type { Formatter } from \"@exponential_app/eui\"\nimport { useSurfaceContext } from \"../context\"\nimport { FieldErrors, useField } from \"../form\"\nimport type { NativeProps } from \"../node-view\"\nimport { useBoundState } from \"./bound\"\nimport { useListNavigation } from \"./listbox\"\nimport { bool, BuiltinIcon, num, str, useParts, TextPart, type PartFn } from \"./shared\"\nimport { addDays, addMonths, calendarStop, isoDate, monthGrid, parseIsoDate, sameDay } from \"@exponential_app/eui/web\"\n\nexport { calendarStop, isoDate, monthGrid, parseIsoDate }\n\ninterface CalendarProps {\n part: PartFn\n dayPart: `day`\n locale: string\n /** The surface Formatter: month and weekday names, day labels (round 2 §3). */\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 (never the document's): ArrowLeft/Right mirror in\n * RTL, like the grid. */\n direction?: `ltr` | `rtl`\n}\n\nexport function CalendarGrid({ part, dayPart, formatter, firstDay, min, max, isSelected, inRange, initial, onPick, t, direction = `ltr` }: CalendarProps) {\n const [focus, setFocus] = useState<Date>(initial)\n const [view, setView] = useState<Date>(new Date(initial.getFullYear(), initial.getMonth(), 1))\n const grid = useRef<HTMLDivElement>(null)\n const moved = useRef(false)\n const days = monthGrid(view, firstDay)\n const weekdays = useMemo(() => {\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(formatter.locale, { weekday: `narrow` })\n return Array.from({ length: 7 }, (_, i) => {\n const d = new Date(2023, 0, 1 + ((firstDay + i) % 7))\n return { short: formatter.date(isoDate(d), { format: `EEE` }), narrow: narrow.format(d) }\n })\n }, [formatter, firstDay])\n const monthLabel = formatter.date(isoDate(view), { format: `MMMM yyyy` })\n const dayLabel = useMemo(() => new Intl.DateTimeFormat(formatter.locale, { weekday: `long`, year: `numeric`, month: `long`, day: `numeric` }), [formatter.locale])\n const disabled = (d: Date) => (min !== null && d < min) || (max !== null && d > max)\n // The month buttons move the focused day WITH the view (same day number,\n // clamped to the month), so the grid keeps a tab stop.\n const shiftMonth = (n: number) => {\n const next = addMonths(focus, n)\n setFocus(next)\n setView(new Date(next.getFullYear(), next.getMonth(), 1))\n }\n const stop = calendarStop(days, view, focus, disabled)\n const goto = (d: Date) => {\n moved.current = true\n setFocus(d)\n if (d.getMonth() !== view.getMonth() || d.getFullYear() !== view.getFullYear()) setView(new Date(d.getFullYear(), d.getMonth(), 1))\n }\n useEffect(() => {\n if (!moved.current) return\n moved.current = false\n grid.current?.querySelector<HTMLButtonElement>(`[data-date=\"${isoDate(focus)}\"]`)?.focus()\n }, [focus, view])\n const onKey = (e: KeyboardEvent) => {\n const k = e.key\n let next: Date | null = null\n if (k === `ArrowLeft`) next = addDays(focus, direction === `rtl` ? 1 : -1)\n else if (k === `ArrowRight`) next = addDays(focus, direction === `rtl` ? -1 : 1)\n else if (k === `ArrowUp`) next = addDays(focus, -7)\n else if (k === `ArrowDown`) next = addDays(focus, 7)\n else if (k === `PageUp`) next = addMonths(focus, e.shiftKey ? -12 : -1)\n else if (k === `PageDown`) next = addMonths(focus, e.shiftKey ? 12 : 1)\n else if (k === `Home`) next = addDays(focus, -((focus.getDay() - firstDay + 7) % 7))\n else if (k === `End`) next = addDays(focus, 6 - ((focus.getDay() - firstDay + 7) % 7))\n else if (k === `Enter` || k === ` `) {\n e.preventDefault()\n if (!disabled(focus)) onPick(focus)\n return\n }\n if (next) {\n e.preventDefault()\n goto(next)\n }\n }\n const rows: Date[][] = []\n for (let i = 0; i < 6; i++) rows.push(days.slice(i * 7, i * 7 + 7))\n return (\n <>\n <div className=\"xui-calendar-head\">\n <button type=\"button\" className=\"xui-calendar-nav\" aria-label={t(`previousMonth`)} onClick={() => shiftMonth(-1)}>\n <BuiltinIcon slot=\"DatePicker.previousMonth\" />\n </button>\n <span aria-live=\"polite\">{monthLabel}</span>\n <button type=\"button\" className=\"xui-calendar-nav\" aria-label={t(`nextMonth`)} onClick={() => shiftMonth(1)}>\n <BuiltinIcon slot=\"DatePicker.nextMonth\" />\n </button>\n </div>\n <div ref={grid} className=\"xui-calendar-grid\" role=\"grid\" aria-label={monthLabel} onKeyDown={onKey}>\n <div role=\"row\" className=\"xui-calendar-row\">\n {weekdays.map((w, i) => (\n <span key={i} role=\"columnheader\" className=\"xui-calendar-weekday\" aria-label={w.short} title={w.short}>\n {w.narrow}\n </span>\n ))}\n </div>\n {rows.map((week, r) => (\n <div role=\"row\" key={r} className=\"xui-calendar-row\">\n {week.map((d) => {\n const key = isoDate(d)\n const sel = isSelected(d)\n const range = inRange?.(d) ?? false\n const outside = d.getMonth() !== view.getMonth()\n const off = disabled(d)\n const focused = sameDay(d, stop)\n return (\n <span role=\"gridcell\" key={key} aria-selected={sel} className=\"xui-calendar-cell\">\n <button\n type=\"button\"\n {...(part(dayPart, sel && `selected`, off && `disabled`) as Record<string, string>)}\n data-date={key}\n data-outside={outside ? `` : undefined}\n data-range={range ? `` : undefined}\n data-today={sameDay(d, new Date()) ? `` : 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={sameDay(d, new Date()) ? `date` : undefined}\n onClick={() => {\n setFocus(d)\n onPick(d)\n }}\n >\n {range && !sel ? <span {...(part(`range`) as Record<string, string>)} aria-hidden=\"true\" /> : null}\n <span className=\"xui-calendar-day-label\">{d.getDate()}</span>\n </button>\n </span>\n )\n })}\n </div>\n ))}\n </div>\n </>\n )\n}\n\nfunction useFirstDay(props: Record<string, unknown>, locale: string): number {\n return props.firstDayOfWeek === undefined ? weekStart(locale) : ((Math.round(num(props.firstDayOfWeek)) % 7) + 7) % 7\n}\n\nexport function DatePickerNative({ node, props, rootProps, emit, scope, domId }: NativeProps) {\n const part = useParts(node, props)\n const ctx = useSurfaceContext()\n const id = useId()\n const [value, setValue] = useBoundState(node, scope, `value`, str(props.value))\n const triggerRef = useRef<HTMLButtonElement | null>(null)\n const f = useField({ node, domId, props, value, focusRef: triggerRef })\n const [open, setOpen] = useState(false)\n const selected = value ? parseIsoDate(value) : null\n const min = props.min ? parseIsoDate(str(props.min)) : null\n const max = props.max ? parseIsoDate(str(props.max)) : null\n const firstDay = useFirstDay(props, ctx.locale)\n const label = selected ? ctx.formatter.date(isoDate(selected)) : ``\n const disabled = bool(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 emit(`change`, { value: next }, { value: next })\n setOpen(false)\n }\n return (\n <div {...(rootProps as Record<string, unknown>)}>\n <TextPart part={part(`label`)} text={props.label} as=\"label\" htmlFor={id} />\n <PopoverPrimitive.Root open={open} onOpenChange={setOpen}>\n <PopoverPrimitive.Trigger ref={triggerRef} id={id} {...(part(`trigger`, open && `open`, f.invalid && `invalid`, disabled && `disabled`) as Record<string, string>)} disabled={disabled} data-value={value || undefined} aria-haspopup=\"dialog\" aria-invalid={f.invalid || undefined} aria-describedby={f.describedBy}>\n <span>{label || <span {...(part(`placeholder`) as Record<string, string>)}>{str(props.placeholder)}</span>}</span>\n <BuiltinIcon slot=\"DatePicker.trigger\" />\n </PopoverPrimitive.Trigger>\n <PopoverPrimitive.Portal container={ctx.portal ?? undefined}>\n <PopoverPrimitive.Content {...(part(`calendar`, open && `open`) as Record<string, string>)} dir={ctx.direction} role=\"dialog\" aria-label={str(props.label) || undefined} align=\"start\" sideOffset={OVERLAY_OFFSET} collisionPadding={OVERLAY_PADDING} data-xui-overlay=\"DatePicker\" onOpenAutoFocus={(e) => {\n e.preventDefault()\n const el = (e.currentTarget as HTMLElement | null)?.querySelector<HTMLButtonElement>(`.xui-calendar-grid button[tabindex=\"0\"]`)\n el?.focus()\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 </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n <FieldErrors part={part} field={f} />\n </div>\n )\n}\n\nexport function DateRangePickerNative({ node, props, rootProps, emit, scope, domId }: NativeProps) {\n const part = useParts(node, props)\n const ctx = useSurfaceContext()\n const id = useId()\n const [start, setStart] = useBoundState(node, scope, `start`, str(props.start))\n const [end, setEnd] = useBoundState(node, scope, `end`, str(props.end))\n const triggerRef = useRef<HTMLButtonElement | null>(null)\n const f = useField({ node, domId, props, value: { start, end }, focusRef: triggerRef })\n const [open, setOpen] = useState(false)\n const [pending, setPending] = useState<Date | null>(null)\n const [hover, setHover] = useState<Date | null>(null)\n const s = start ? parseIsoDate(start) : null\n const e = end ? parseIsoDate(end) : null\n const min = props.min ? parseIsoDate(str(props.min)) : null\n const max = props.max ? parseIsoDate(str(props.max)) : null\n const firstDay = useFirstDay(props, ctx.locale)\n const fmt = { format: (d: Date) => ctx.formatter.date(isoDate(d)) }\n const label = s ? `${fmt.format(s)} – ${e ? fmt.format(e) : ``}` : ``\n useEffect(() => {\n if (!open) {\n setPending(null)\n setHover(null)\n }\n }, [open])\n const pick = (d: Date) => {\n if (!pending) {\n setPending(d)\n return\n }\n const [a, b] = d < pending ? [d, pending] : [pending, 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 emit(`change`, next, next)\n setOpen(false)\n }\n const lo = pending ?? s\n const hi = pending ? hover : e\n const [rangeA, rangeB] = lo && hi ? (hi < lo ? [hi, lo] : [lo, hi]) : [lo, hi]\n return (\n <div {...(rootProps as Record<string, unknown>)}>\n <TextPart part={part(`label`)} text={props.label} as=\"label\" htmlFor={id} />\n <PopoverPrimitive.Root open={open} onOpenChange={setOpen}>\n <PopoverPrimitive.Trigger ref={triggerRef} id={id} {...(part(`trigger`, open && `open`, f.invalid && `invalid`) as Record<string, string>)} data-start={start || undefined} data-end={end || undefined} aria-haspopup=\"dialog\" aria-describedby={f.describedBy}>\n <span>{label || <span {...(part(`placeholder`) as Record<string, string>)}>{str(props.placeholder)}</span>}</span>\n <BuiltinIcon slot=\"DateRangePicker.trigger\" />\n </PopoverPrimitive.Trigger>\n <PopoverPrimitive.Portal container={ctx.portal ?? undefined}>\n <PopoverPrimitive.Content {...(part(`calendar`, open && `open`) as Record<string, string>)} dir={ctx.direction} role=\"dialog\" aria-label={str(props.label) || undefined} align=\"start\" sideOffset={OVERLAY_OFFSET} collisionPadding={OVERLAY_PADDING} data-xui-overlay=\"DateRangePicker\" data-pending={pending ? isoDate(pending) : undefined} onOpenAutoFocus={(ev) => {\n ev.preventDefault()\n ;(ev.currentTarget as HTMLElement | null)?.querySelector<HTMLButtonElement>(`.xui-calendar-grid button[tabindex=\"0\"]`)?.focus()\n }} onPointerOver={(ev) => {\n const date = (ev.target as HTMLElement).closest?.(`[data-date]`)?.getAttribute(`data-date`)\n if (pending && date) setHover(parseIsoDate(date))\n }} onFocus={(ev) => {\n const date = (ev.target as HTMLElement).getAttribute?.(`data-date`)\n if (pending && date) setHover(parseIsoDate(date))\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) => Boolean(rangeA && rangeB && d > rangeA && d < rangeB)}\n initial={s ?? new Date()}\n onPick={pick}\n t={ctx.t}\n direction={ctx.direction}\n />\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\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({ node, props, rootProps, emit, scope, domId }: NativeProps) {\n const part = useParts(node, props)\n const ctx = useSurfaceContext()\n const id = useId()\n const listId = `${id}-list`\n const [value, setValue] = useBoundState(node, scope, `value`, str(props.value))\n const triggerRef = useRef<HTMLButtonElement | null>(null)\n const f = useField({ node, domId, props, value, focusRef: triggerRef })\n const disabled = bool(props.disabled) || Boolean(f.form?.disabled)\n const [open, setOpen] = useState(false)\n const step = Math.max(1, Math.round(num(props.step, 15)))\n const lo = parseTime(str(props.min)) ?? 0\n const hi = parseTime(str(props.max)) ?? 24 * 60 - 1\n const times = useMemo(() => {\n const out: number[] = []\n for (let m = lo; m <= hi; m += step) out.push(m)\n return out\n }, [lo, hi, step])\n const clock = useMemo(() => new Intl.DateTimeFormat(ctx.locale, { hour: `numeric`, minute: `2-digit` }), [ctx.locale])\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 emit(`change`, { value: next }, { value: next })\n setOpen(false)\n triggerRef.current?.focus()\n }\n const nav = useListNavigation({ count: times.length, labelOf: (i) => show(times[i]), onPick: pick, typeahead: true })\n const listRef = useRef<HTMLDivElement>(null)\n useEffect(() => {\n if (!open) return\n const i = current === null ? 0 : times.findIndex((t) => t >= current)\n nav.setActive(i < 0 ? 0 : i)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open])\n const activeId = nav.active >= 0 ? `${listId}-${nav.active}` : undefined\n useEffect(() => {\n if (activeId) listRef.current?.querySelector(`[id=\"${activeId}\"]`)?.scrollIntoView?.({ block: `nearest` })\n }, [activeId])\n return (\n <div {...(rootProps as Record<string, unknown>)}>\n <TextPart part={part(`label`)} text={props.label} as=\"label\" htmlFor={id} />\n <PopoverPrimitive.Root open={open} onOpenChange={setOpen}>\n <PopoverPrimitive.Trigger ref={triggerRef} id={id} {...(part(`trigger`, open && `open`, disabled && `disabled`, f.invalid && `invalid`) as Record<string, string>)} disabled={disabled} role=\"combobox\" aria-haspopup=\"listbox\" aria-expanded={open} aria-controls={open ? listId : undefined} data-value={value || undefined} aria-describedby={f.describedBy}>\n <span>{current !== null ? show(current) : <span {...(part(`placeholder`) as Record<string, string>)}>{str(props.placeholder)}</span>}</span>\n <BuiltinIcon slot=\"TimePicker.trigger\" />\n </PopoverPrimitive.Trigger>\n <PopoverPrimitive.Portal container={ctx.portal ?? undefined}>\n <PopoverPrimitive.Content {...(part(`list`, open && `open`) as Record<string, string>)} dir={ctx.direction} align=\"start\" sideOffset={OVERLAY_OFFSET} collisionPadding={OVERLAY_PADDING} data-xui-overlay=\"TimePicker\" onOpenAutoFocus={(e) => {\n e.preventDefault()\n listRef.current?.focus()\n }}>\n <div ref={listRef} id={listId} role=\"listbox\" tabIndex={0} aria-activedescendant={activeId} aria-labelledby={id} className=\"xui-TimePicker-listbox\" onKeyDown={nav.onKeyDown}>\n {times.map((m, i) => {\n const sel = m === current\n return (\n <div key={m} id={`${listId}-${i}`} role=\"option\" aria-selected={sel} data-value={formatHHmm(m)} {...(part(`item`, (sel || i === nav.active) && `selected`) as Record<string, string>)} onPointerMove={() => nav.setActive(i)} onMouseDown={(e) => e.preventDefault()} onClick={() => pick(i)}>\n {show(m)}\n </div>\n )\n })}\n </div>\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n <FieldErrors part={part} field={f} />\n </div>\n )\n}\n",
22
+ "// Round 1 (contract §3–4, a11y.json DatePicker): DatePicker, DateRangePicker\n// and TimePicker. ONE calendar grid (role=grid, a roving tab stop on the\n// focused day): arrows ±1 day / ±1 week, PageUp/PageDown ±1 month (Shift =\n// ±1 year), Home/End = the start/end of the week by the LOCALE week start\n// (`weekStart(locale)` from catalog/locale.json, never the browser's), Enter\n// / Space pick. Month and weekday names are the surface locale's (Intl).\n// The range picker selects in two steps (start, then end; an earlier end\n// swaps). TimePicker = a listbox of `step`-minute times between min and max\n// (shown in the locale's clock), typed `HH:mm` accepted in its filter.\n\nimport { useEffect, useId, useMemo, useRef, useState, type KeyboardEvent } from \"react\"\nimport { Popover as PopoverPrimitive } from \"radix-ui\"\nimport { OVERLAY_OFFSET, OVERLAY_PADDING, weekStart } from \"@exponential_app/eui\"\nimport type { Formatter } from \"@exponential_app/eui\"\nimport { useSurfaceContext } from \"../context\"\nimport { FieldErrors, useField } from \"../form\"\nimport type { NativeProps } from \"../node-view\"\nimport { useBoundState } from \"./bound\"\nimport { useListNavigation } from \"./listbox\"\nimport { bool, BuiltinIcon, num, str, useParts, TextPart, type PartFn } from \"./shared\"\nimport { addDays, addMonths, calendarStop, isoDate, monthGrid, parseIsoDate, sameDay } from \"@exponential_app/eui/web\"\n\nexport { calendarStop, isoDate, monthGrid, parseIsoDate }\n\ninterface CalendarProps {\n part: PartFn\n dayPart: `day`\n locale: string\n /** The surface Formatter: month and weekday names, day labels (round 2 §3). */\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 (never the document's): ArrowLeft/Right mirror in\n * RTL, like the grid. */\n direction?: `ltr` | `rtl`\n}\n\nexport function CalendarGrid({ part, dayPart, formatter, firstDay, min, max, isSelected, inRange, initial, onPick, t, direction = `ltr` }: CalendarProps) {\n const [focus, setFocus] = useState<Date>(initial)\n const [view, setView] = useState<Date>(new Date(initial.getFullYear(), initial.getMonth(), 1))\n const grid = useRef<HTMLDivElement>(null)\n const moved = useRef(false)\n const days = monthGrid(view, firstDay)\n const weekdays = useMemo(() => {\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(formatter.locale, { weekday: `narrow` })\n return Array.from({ length: 7 }, (_, i) => {\n const d = new Date(2023, 0, 1 + ((firstDay + i) % 7))\n return { short: formatter.date(isoDate(d), { format: `EEE` }), narrow: narrow.format(d) }\n })\n }, [formatter, firstDay])\n const monthLabel = formatter.date(isoDate(view), { format: `MMMM yyyy` })\n const dayLabel = useMemo(() => new Intl.DateTimeFormat(formatter.locale, { weekday: `long`, year: `numeric`, month: `long`, day: `numeric` }), [formatter.locale])\n const disabled = (d: Date) => (min !== null && d < min) || (max !== null && d > max)\n // The month buttons move the focused day WITH the view (same day number,\n // clamped to the month), so the grid keeps a tab stop.\n const shiftMonth = (n: number) => {\n const next = addMonths(focus, n)\n setFocus(next)\n setView(new Date(next.getFullYear(), next.getMonth(), 1))\n }\n const stop = calendarStop(days, view, focus, disabled)\n const goto = (d: Date) => {\n moved.current = true\n setFocus(d)\n if (d.getMonth() !== view.getMonth() || d.getFullYear() !== view.getFullYear()) setView(new Date(d.getFullYear(), d.getMonth(), 1))\n }\n useEffect(() => {\n if (!moved.current) return\n moved.current = false\n grid.current?.querySelector<HTMLButtonElement>(`[data-date=\"${isoDate(focus)}\"]`)?.focus()\n }, [focus, view])\n const onKey = (e: KeyboardEvent) => {\n const k = e.key\n let next: Date | null = null\n if (k === `ArrowLeft`) next = addDays(focus, direction === `rtl` ? 1 : -1)\n else if (k === `ArrowRight`) next = addDays(focus, direction === `rtl` ? -1 : 1)\n else if (k === `ArrowUp`) next = addDays(focus, -7)\n else if (k === `ArrowDown`) next = addDays(focus, 7)\n else if (k === `PageUp`) next = addMonths(focus, e.shiftKey ? -12 : -1)\n else if (k === `PageDown`) next = addMonths(focus, e.shiftKey ? 12 : 1)\n else if (k === `Home`) next = addDays(focus, -((focus.getDay() - firstDay + 7) % 7))\n else if (k === `End`) next = addDays(focus, 6 - ((focus.getDay() - firstDay + 7) % 7))\n else if (k === `Enter` || k === ` `) {\n e.preventDefault()\n if (!disabled(focus)) onPick(focus)\n return\n }\n if (next) {\n e.preventDefault()\n goto(next)\n }\n }\n const rows: Date[][] = []\n for (let i = 0; i < 6; i++) rows.push(days.slice(i * 7, i * 7 + 7))\n return (\n <>\n <div className=\"xui-calendar-head\">\n <button type=\"button\" className=\"xui-calendar-nav\" aria-label={t(`previousMonth`)} onClick={() => shiftMonth(-1)}>\n <BuiltinIcon slot=\"DatePicker.previousMonth\" />\n </button>\n <span aria-live=\"polite\">{monthLabel}</span>\n <button type=\"button\" className=\"xui-calendar-nav\" aria-label={t(`nextMonth`)} onClick={() => shiftMonth(1)}>\n <BuiltinIcon slot=\"DatePicker.nextMonth\" />\n </button>\n </div>\n <div ref={grid} className=\"xui-calendar-grid\" role=\"grid\" aria-label={monthLabel} onKeyDown={onKey}>\n <div role=\"row\" className=\"xui-calendar-row\">\n {weekdays.map((w, i) => (\n <span key={i} role=\"columnheader\" className=\"xui-calendar-weekday\" aria-label={w.short} title={w.short}>\n {w.narrow}\n </span>\n ))}\n </div>\n {rows.map((week, r) => (\n <div role=\"row\" key={r} className=\"xui-calendar-row\">\n {week.map((d) => {\n const key = isoDate(d)\n const sel = isSelected(d)\n const range = inRange?.(d) ?? false\n const outside = d.getMonth() !== view.getMonth()\n const off = disabled(d)\n const focused = sameDay(d, stop)\n return (\n <span role=\"gridcell\" key={key} aria-selected={sel} className=\"xui-calendar-cell\">\n <button\n type=\"button\"\n {...(part(dayPart, sel && `selected`, off && `disabled`) as Record<string, string>)}\n data-date={key}\n data-outside={outside ? `` : undefined}\n data-range={range ? `` : undefined}\n data-today={sameDay(d, new Date()) ? `` : 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={sameDay(d, new Date()) ? `date` : undefined}\n onClick={() => {\n setFocus(d)\n onPick(d)\n }}\n >\n {range && !sel ? <span {...(part(`range`) as Record<string, string>)} aria-hidden=\"true\" /> : null}\n <span className=\"xui-calendar-day-label\">{d.getDate()}</span>\n </button>\n </span>\n )\n })}\n </div>\n ))}\n </div>\n </>\n )\n}\n\nfunction useFirstDay(props: Record<string, unknown>, locale: string): number {\n return props.firstDayOfWeek === undefined ? weekStart(locale) : ((Math.round(num(props.firstDayOfWeek)) % 7) + 7) % 7\n}\n\nexport function DatePickerNative({ node, props, rootProps, emit, scope, domId }: NativeProps) {\n const part = useParts(node, props)\n const ctx = useSurfaceContext()\n const id = useId()\n const [value, setValue] = useBoundState(node, scope, `value`, str(props.value))\n const triggerRef = useRef<HTMLButtonElement | null>(null)\n const f = useField({ node, domId, props, value, focusRef: triggerRef })\n const [open, setOpen] = useState(false)\n const selected = value ? parseIsoDate(value) : null\n const min = props.min ? parseIsoDate(str(props.min)) : null\n const max = props.max ? parseIsoDate(str(props.max)) : null\n const firstDay = useFirstDay(props, ctx.locale)\n const label = selected ? ctx.formatter.date(isoDate(selected)) : ``\n const disabled = bool(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 emit(`change`, { value: next }, { value: next })\n setOpen(false)\n }\n return (\n <div {...(rootProps as Record<string, unknown>)}>\n <TextPart part={part(`label`)} text={props.label} as=\"label\" htmlFor={id} />\n <PopoverPrimitive.Root open={open} onOpenChange={setOpen}>\n <PopoverPrimitive.Trigger ref={triggerRef} id={id} {...(part(`trigger`, open && `open`, f.invalid && `invalid`, disabled && `disabled`) as Record<string, string>)} disabled={disabled} data-value={value || undefined} aria-haspopup=\"dialog\" aria-invalid={f.invalid || undefined} aria-describedby={f.describedBy}>\n <span>{label || <span {...(part(`placeholder`) as Record<string, string>)}>{str(props.placeholder)}</span>}</span>\n <BuiltinIcon slot=\"DatePicker.trigger\" />\n </PopoverPrimitive.Trigger>\n <PopoverPrimitive.Portal container={ctx.portal ?? undefined}>\n <PopoverPrimitive.Content {...(part(`calendar`, open && `open`) as Record<string, string>)} dir={ctx.direction} role=\"dialog\" aria-label={str(props.label) || undefined} align=\"start\" sideOffset={OVERLAY_OFFSET} collisionPadding={OVERLAY_PADDING} data-xui-overlay=\"DatePicker\" onOpenAutoFocus={(e) => {\n e.preventDefault()\n const el = (e.currentTarget as HTMLElement | null)?.querySelector<HTMLButtonElement>(`.xui-calendar-grid button[tabindex=\"0\"]`)\n el?.focus()\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 </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n <FieldErrors part={part} field={f} />\n </div>\n )\n}\n\nexport function DateRangePickerNative({ node, props, rootProps, emit, scope, domId }: NativeProps) {\n const part = useParts(node, props)\n const ctx = useSurfaceContext()\n const id = useId()\n const [start, setStart] = useBoundState(node, scope, `start`, str(props.start))\n const [end, setEnd] = useBoundState(node, scope, `end`, str(props.end))\n const triggerRef = useRef<HTMLButtonElement | null>(null)\n const f = useField({ node, domId, props, value: { start, end }, focusRef: triggerRef })\n const [open, setOpen] = useState(false)\n const [pending, setPending] = useState<Date | null>(null)\n const [hover, setHover] = useState<Date | null>(null)\n const s = start ? parseIsoDate(start) : null\n const e = end ? parseIsoDate(end) : null\n const min = props.min ? parseIsoDate(str(props.min)) : null\n const max = props.max ? parseIsoDate(str(props.max)) : null\n const firstDay = useFirstDay(props, ctx.locale)\n const fmt = { format: (d: Date) => ctx.formatter.date(isoDate(d)) }\n const label = s ? `${fmt.format(s)} – ${e ? fmt.format(e) : ``}` : ``\n useEffect(() => {\n if (!open) {\n setPending(null)\n setHover(null)\n }\n }, [open])\n const pick = (d: Date) => {\n if (!pending) {\n setPending(d)\n return\n }\n const [a, b] = d < pending ? [d, pending] : [pending, 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 emit(`change`, next, next)\n setOpen(false)\n }\n const lo = pending ?? s\n const hi = pending ? hover : e\n const [rangeA, rangeB] = lo && hi ? (hi < lo ? [hi, lo] : [lo, hi]) : [lo, hi]\n return (\n <div {...(rootProps as Record<string, unknown>)}>\n <TextPart part={part(`label`)} text={props.label} as=\"label\" htmlFor={id} />\n <PopoverPrimitive.Root open={open} onOpenChange={setOpen}>\n <PopoverPrimitive.Trigger ref={triggerRef} id={id} {...(part(`trigger`, open && `open`, f.invalid && `invalid`) as Record<string, string>)} data-start={start || undefined} data-end={end || undefined} aria-haspopup=\"dialog\" aria-describedby={f.describedBy}>\n <span>{label || <span {...(part(`placeholder`) as Record<string, string>)}>{str(props.placeholder)}</span>}</span>\n <BuiltinIcon slot=\"DateRangePicker.trigger\" />\n </PopoverPrimitive.Trigger>\n <PopoverPrimitive.Portal container={ctx.portal ?? undefined}>\n <PopoverPrimitive.Content {...(part(`calendar`, open && `open`) as Record<string, string>)} dir={ctx.direction} role=\"dialog\" aria-label={str(props.label) || undefined} align=\"start\" sideOffset={OVERLAY_OFFSET} collisionPadding={OVERLAY_PADDING} data-xui-overlay=\"DateRangePicker\" data-pending={pending ? isoDate(pending) : undefined} onOpenAutoFocus={(ev) => {\n ev.preventDefault()\n ;(ev.currentTarget as HTMLElement | null)?.querySelector<HTMLButtonElement>(`.xui-calendar-grid button[tabindex=\"0\"]`)?.focus()\n }} onPointerOver={(ev) => {\n const date = (ev.target as HTMLElement).closest?.(`[data-date]`)?.getAttribute(`data-date`)\n if (pending && date) setHover(parseIsoDate(date))\n }} onFocus={(ev) => {\n const date = (ev.target as HTMLElement).getAttribute?.(`data-date`)\n if (pending && date) setHover(parseIsoDate(date))\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) => Boolean(rangeA && rangeB && d > rangeA && d < rangeB)}\n initial={s ?? new Date()}\n onPick={pick}\n t={ctx.t}\n direction={ctx.direction}\n />\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\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({ node, props, rootProps, emit, scope, domId }: NativeProps) {\n const part = useParts(node, props)\n const ctx = useSurfaceContext()\n const id = useId()\n const listId = `${id}-list`\n const [value, setValue] = useBoundState(node, scope, `value`, str(props.value))\n const triggerRef = useRef<HTMLButtonElement | null>(null)\n const f = useField({ node, domId, props, value, focusRef: triggerRef })\n const disabled = bool(props.disabled) || Boolean(f.form?.disabled)\n const [open, setOpen] = useState(false)\n const step = Math.max(1, Math.round(num(props.step, 15)))\n const lo = parseTime(str(props.min)) ?? 0\n const hi = parseTime(str(props.max)) ?? 24 * 60 - 1\n const times = useMemo(() => {\n const out: number[] = []\n for (let m = lo; m <= hi; m += step) out.push(m)\n return out\n }, [lo, hi, step])\n // EXP-1556: `HH:mm` (the spec's), as desktop, iOS and Android show it.\n const show = formatHHmm\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 emit(`change`, { value: next }, { value: next })\n setOpen(false)\n triggerRef.current?.focus()\n }\n const nav = useListNavigation({ count: times.length, labelOf: (i) => show(times[i]), onPick: pick, typeahead: true })\n const listRef = useRef<HTMLDivElement>(null)\n useEffect(() => {\n if (!open) return\n const i = current === null ? 0 : times.findIndex((t) => t >= current)\n nav.setActive(i < 0 ? 0 : i)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open])\n const activeId = nav.active >= 0 ? `${listId}-${nav.active}` : undefined\n useEffect(() => {\n if (activeId) listRef.current?.querySelector(`[id=\"${activeId}\"]`)?.scrollIntoView?.({ block: `nearest` })\n }, [activeId])\n return (\n <div {...(rootProps as Record<string, unknown>)}>\n <TextPart part={part(`label`)} text={props.label} as=\"label\" htmlFor={id} />\n <PopoverPrimitive.Root open={open} onOpenChange={setOpen}>\n <PopoverPrimitive.Trigger ref={triggerRef} id={id} {...(part(`trigger`, open && `open`, disabled && `disabled`, f.invalid && `invalid`) as Record<string, string>)} disabled={disabled} role=\"combobox\" aria-haspopup=\"listbox\" aria-expanded={open} aria-controls={open ? listId : undefined} data-value={value || undefined} aria-describedby={f.describedBy}>\n <span>{current !== null ? show(current) : <span {...(part(`placeholder`) as Record<string, string>)}>{str(props.placeholder)}</span>}</span>\n <BuiltinIcon slot=\"TimePicker.trigger\" />\n </PopoverPrimitive.Trigger>\n <PopoverPrimitive.Portal container={ctx.portal ?? undefined}>\n <PopoverPrimitive.Content {...(part(`list`, open && `open`) as Record<string, string>)} dir={ctx.direction} align=\"start\" sideOffset={OVERLAY_OFFSET} collisionPadding={OVERLAY_PADDING} data-xui-overlay=\"TimePicker\" onOpenAutoFocus={(e) => {\n e.preventDefault()\n listRef.current?.focus()\n }}>\n <div ref={listRef} id={listId} role=\"listbox\" tabIndex={0} aria-activedescendant={activeId} aria-labelledby={id} className=\"xui-TimePicker-listbox\" onKeyDown={nav.onKeyDown}>\n {times.map((m, i) => {\n const sel = m === current\n return (\n <div key={m} id={`${listId}-${i}`} role=\"option\" aria-selected={sel} data-value={formatHHmm(m)} {...(part(`item`, (sel || i === nav.active) && `selected`) as Record<string, string>)} onPointerMove={() => nav.setActive(i)} onMouseDown={(e) => e.preventDefault()} onClick={() => pick(i)}>\n {show(m)}\n </div>\n )\n })}\n </div>\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n <FieldErrors part={part} field={f} />\n </div>\n )\n}\n",
23
+ "// EXP-1604: Motion, a thin wrapper over the shared web painter\n// (`MotionView`, @exponential_app/eui/web: source, slots, clock, Canvas2D).\n// The box: the node's style, else the composition's px size shrinking to\n// the width (`motionBoxStyle`); the canvas fills it. M4 (EXP-1605): the\n// view's events (press, hover, visible, complete, state) reach the node's\n// `on` through `emit`; with `on.press` it is a button.\n\nimport { useEffect, useLayoutEffect, useRef } from \"react\"\nimport { MotionView, motionA11y, motionBoxStyle, motionDeclaredSize } from \"@exponential_app/eui/web\"\nimport { useSurfaceContext } from \"../context\"\nimport type { NativeProps } from \"../node-view\"\nimport { mergeStyle } from \"../node-view\"\n\nconst CANVAS_STYLE = { display: `block`, width: `100%`, height: `100%` } as const\n\nexport function MotionNative({ node, props, rootProps, emit }: NativeProps) {\n const ctx = useSurfaceContext()\n const root = useRef<HTMLDivElement | null>(null)\n const canvas = useRef<HTMLCanvasElement | null>(null)\n const view = useRef<MotionView | null>(null)\n useLayoutEffect(() => {\n view.current = new MotionView(root.current!, canvas.current!)\n return () => {\n view.current?.destroy()\n view.current = null\n }\n }, [])\n const host = ctx.host\n const surfaceId = ctx.surfaceId\n const pressable = Boolean(node.on?.press)\n useEffect(() => {\n view.current?.update(props, { theme: ctx.theme, mode: ctx.mode, reducedMotion: ctx.reducedMotion, host, onError: (message) => host.onPaintError?.({ surfaceId, componentId: node.id, message }), emit: (event, payload) => void emit(event, payload), pressable }, node.style)\n })\n return (\n <div ref={root} {...(rootProps as Record<string, unknown>)} {...motionA11y(props.label, pressable)} style={mergeStyle(rootProps, motionBoxStyle(motionDeclaredSize(props), node.style))}>\n <canvas ref={canvas} aria-hidden=\"true\" style={CANVAS_STYLE} />\n </div>\n )\n}\n",
23
24
  "// Round 2 (docs/round-2-contract.md §1): Resizable — panels (its children)\n// split by handles. The arithmetic is the core's (`normalizeSizes`,\n// `resizePanels` from the sizes at the drag START, `keyboardResize`,\n// `dragDelta`): sizes are percentages of the main axis minus the handles,\n// laid out as flex-grow factors over a 0 basis (= `panelExtents`). Each\n// handle is `$control.hairline` thick in layout with a `resizeHandleHit` (8\n// px) hit area centred on it, a focusable `separator` (orientation of the\n// line, value = the panel before it, its limits, `controls` = that panel,\n// named `$string.resize`). A bound `sizes` is written; `change {sizes}`\n// fires after every drag end or key.\n\nimport { useMemo, useRef, useState, type KeyboardEvent, type PointerEvent as ReactPointerEvent } from \"react\"\nimport { dragDelta, keyboardResize, normalizeSizes, resizePanels, RESIZE_HANDLE_HIT, type PanelLimits } from \"@exponential_app/eui\"\nimport { useSurfaceContext } from \"../context\"\nimport type { NativeProps } from \"../node-view\"\nimport { NodeView } from \"../node-view\"\nimport { useBoundState } from \"./bound\"\nimport { arr, bool, num, useParts } from \"./shared\"\n\nconst RESIZE_KEYS = new Set([`ArrowLeft`, `ArrowRight`, `ArrowUp`, `ArrowDown`, `Home`, `End`, `Enter`])\n\nexport function ResizableNative({ node, props, rootProps, emit, scope, domId }: NativeProps) {\n const ctx = useSurfaceContext()\n const part = useParts(node, props)\n const orientation: `horizontal` | `vertical` = props.direction === `vertical` ? `vertical` : `horizontal`\n const count = node.children.length\n const limits = useMemo(() => arr<PanelLimits>(props.panels), [props.panels])\n const external = useMemo(() => normalizeSizes(arr<unknown>(props.sizes), count, limits), [props.sizes, count, limits])\n const [sizes, setBound] = useBoundState<number[]>(node, scope, `sizes`, external)\n // Live sizes while a drag runs (written + `change` at its end).\n const [live, setLive] = useState<number[] | null>(null)\n // The latest drag sizes, for the commit: a pointerup can land before the\n // last move's render, so the render-time `live` may be one step behind.\n const liveRef = useRef<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 const rootRef = useRef<HTMLDivElement | null>(null)\n const drag = useRef<{ id: number; handle: number; start: number[]; at: number; container: number } | null>(null)\n const commit = (next: number[]) => {\n setBound(next)\n void emit(`change`, { sizes: next }, { sizes: next })\n }\n const mainOf = (e: { clientX: number; clientY: number }) => (orientation === `horizontal` ? e.clientX : e.clientY)\n const onPointerDown = (i: number) => (e: ReactPointerEvent<HTMLDivElement>) => {\n if (e.button !== 0) return\n const box = rootRef.current?.getBoundingClientRect()\n if (!box) return\n e.preventDefault()\n try {\n ;(e.currentTarget as HTMLElement).setPointerCapture?.(e.pointerId)\n } catch {\n // A synthetic or already-released pointer: the drag still follows moves on the handle.\n }\n ;(e.currentTarget as HTMLElement).focus()\n drag.current = { id: e.pointerId, handle: i, start: shown, at: mainOf(e), container: orientation === `horizontal` ? box.width : box.height }\n liveRef.current = null\n }\n const onPointerMove = (e: ReactPointerEvent<HTMLDivElement>) => {\n const d = drag.current\n if (!d || d.id !== e.pointerId) return\n const delta = dragDelta(mainOf(e) - d.at, d.container, count, orientation, ctx.direction, hairline)\n const next = resizePanels(d.start, d.handle, delta, limits)\n liveRef.current = next\n setLive(next)\n }\n const onPointerEnd = (e: ReactPointerEvent<HTMLDivElement>) => {\n const d = drag.current\n if (!d || d.id !== e.pointerId) return\n drag.current = null\n const next = liveRef.current\n liveRef.current = 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<HTMLDivElement>) => {\n if (!RESIZE_KEYS.has(e.key)) return\n e.preventDefault()\n const next = keyboardResize(shown, i, e.key, orientation, ctx.direction, limits)\n if (next.some((v, k) => v !== shown[k])) commit(next)\n }\n const parts = []\n for (let i = 0; i < count; i++) {\n const size = shown[i] ?? 0\n parts.push(\n <div key={node.children[i].id} {...(part.at(`panel`, i) as Record<string, string>)} id={`${domId}.panel.${i}`} data-size={size} style={{ flex: `${size} 1 0px` }}>\n <NodeView node={node.children[i]} />\n </div>\n )\n if (i < count - 1) {\n const lim = limits[i] ?? {}\n const active = live !== null && drag.current?.handle === i\n parts.push(\n <div\n key={`h${i}`}\n {...(part.at(`handle`, i, active && `pressed`) as Record<string, string>)}\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={`${domId}.panel.${i}`}\n aria-label={ctx.t(`resize`)}\n onPointerDown={onPointerDown(i)}\n onPointerMove={onPointerMove}\n onPointerUp={onPointerEnd}\n onPointerCancel={onPointerEnd}\n onKeyDown={onKey(i)}\n >\n <span className=\"xui-resize-hit\" aria-hidden=\"true\" style={{ [orientation === `horizontal` ? `width` : `height`]: RESIZE_HANDLE_HIT }} />\n {bool(props.handle) ? <span {...(part.at(`grip`, i) as Record<string, string>)} aria-hidden=\"true\" /> : null}\n </div>\n )\n }\n }\n return (\n <div ref={rootRef} {...(rootProps as Record<string, unknown>)} role=\"group\" data-orientation={orientation} data-dragging={live ? `` : undefined}>\n {parts}\n </div>\n )\n}\n",
24
25
  "// VAPP-87: Ring, Spinner, Skeleton, TreeGuides, VoiceWave (Chart: chart.tsx).\n\nimport { useEffect, useLayoutEffect, useRef } from \"react\"\nimport { resolveRecipe, nativeRecipeProps, voiceWave, voiceWaveBars, voiceWaveChildBox, voiceWavePath, voiceWaveVariant, TREE_GUIDE_BRIDGE, TREE_GUIDE_COLUMN, TREE_GUIDE_RADIUS, VOICE_WAVE_ACTIVITIES } from \"@exponential_app/eui\"\nimport type { VoiceWaveActivity, VoiceWaveSizeName } from \"@exponential_app/eui\"\nimport { voiceWaveAnimates, voiceWaveClock, voiceWaveFitChild, voiceWaveName } from \"@exponential_app/eui/web\"\nimport { useSurfaceContext } from \"../context\"\nimport { CHROME } from \"../icons\"\nimport type { NativeProps } from \"../node-view\"\nimport { mergeStyle } from \"../node-view\"\nimport { arr, bool, num, str, useParts } from \"./shared\"\n\nfunction sizeOf(ctx: ReturnType<typeof useSurfaceContext>, 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({ node, props, rootProps }: NativeProps) {\n const ctx = useSurfaceContext()\n const part = useParts(node, props)\n const size = sizeOf(ctx, `Ring`, `root`, props, 32)\n const value = Math.max(0, Math.min(1, num(props.value, 0)))\n const trackStyle = resolveRecipe(ctx.theme, { component: `Ring`, part: `track`, props: nativeRecipeProps(`Ring`, props) }, ctx.mode)\n const fillStyle = resolveRecipe(ctx.theme, { component: `Ring`, part: `fill`, props: nativeRecipeProps(`Ring`, 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 const label = str(props.label)\n return (\n <span {...(rootProps as Record<string, unknown>)} role=\"progressbar\" aria-valuemin={0} aria-valuemax={1} aria-valuenow={value} aria-label={label || undefined} style={mergeStyle(rootProps, { width: size, height: size })}>\n <svg viewBox={`0 0 ${size} ${size}`} width={size} height={size}>\n <circle {...(part(`track`) as Record<string, string>)} cx={size / 2} cy={size / 2} r={r} fill=\"none\" stroke=\"currentColor\" strokeWidth={stroke} style={{ color: String(trackStyle.color ?? `currentColor`) }} />\n <circle {...(part(`fill`) as Record<string, string>)} cx={size / 2} cy={size / 2} r={r} fill=\"none\" stroke=\"currentColor\" strokeWidth={typeof fillStyle.borderWidth === `number` ? fillStyle.borderWidth : stroke} strokeDasharray={`${c * value} ${c}`} strokeLinecap=\"round\" transform={`rotate(-90 ${size / 2} ${size / 2})`} style={{ color: String(fillStyle.color ?? `currentColor`) }} />\n </svg>\n {label ? <span {...(part(`label`) as Record<string, string>)}>{label}</span> : null}\n </span>\n )\n}\n\nexport function SpinnerNative({ props, rootProps }: NativeProps) {\n const ctx = useSurfaceContext()\n const size = sizeOf(ctx, `Spinner`, `root`, props, 20)\n const Icon = CHROME.spinner\n const label = str(props.label) || ctx.t(`loading`)\n return (\n <span {...(rootProps as Record<string, unknown>)} role=\"status\" aria-label={label} style={mergeStyle(rootProps, { width: size, height: size })}>\n <Icon 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({ node, props, rootProps }: NativeProps) {\n const part = useParts(node, props)\n const rows = Math.min(50, Math.floor(num(props.rows, 0)))\n if (rows >= 1) {\n const dot = props.dot === undefined ? true : bool(props.dot)\n const height = props.rowHeight === undefined ? `var(--xui-control-row)` : `${num(props.rowHeight)}px`\n return (\n <div {...(rootProps as Record<string, unknown>)} data-rows=\"\" aria-hidden=\"true\">\n {Array.from({ length: rows }, (_, r) => {\n const [lead, title] = SKELETON_BARS[r % SKELETON_BARS.length]\n return (\n <div key={r} {...(part.at(`row`, r) as Record<string, string>)} style={{ height }}>\n {dot ? <span {...(part.at(`dot`, r) as Record<string, string>)} /> : null}\n <span {...(part.at(`bar`, `${r}.0`) as Record<string, string>)} style={{ width: lead }} />\n <span {...(part.at(`bar`, `${r}.1`) as Record<string, string>)} data-title=\"\" style={{ width: title }} />\n </div>\n )\n })}\n </div>\n )\n }\n const width = str(props.width, `100%`)\n const height = str(props.height, `16px`)\n return <div {...(rootProps as Record<string, unknown>)} aria-hidden=\"true\" style={mergeStyle(rootProps, { width, height, borderRadius: bool(props.rounded) ? 9999 : undefined })} />\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\n * (x = i·14 + 7). The elbow = ONE element whose left + bottom borders are\n * the vertical (from `TREE_GUIDE_BRIDGE` px above the row's top to its\n * centre) and the stub (to the column's right edge), the corner rounded by\n * `TREE_GUIDE_RADIUS`; `tee` and pass-through columns = full-height\n * verticals from the same bridge (paint only: the overshoot covers a\n * Section's hairline divider, never layout). Stroke width + colour = the\n * `TreeGuides/line` recipe. Physical x (the gutter is not mirrored). */\nexport function TreeGuidesNative({ node, props, rootProps }: NativeProps) {\n const ctx = useSurfaceContext()\n const part = useParts(node, props)\n const depth = Math.max(0, Math.floor(num(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.elbowAt === undefined || props.elbowAt === null ? -1 : num(props.elbowAt)\n const tee = bool(props.tee)\n const pass = new Set(arr<number>(props.passThrough).map((v) => num(v)))\n const stroke = sizeOf(ctx, `TreeGuides`, `line`, props, 1)\n const line = part(`line`) as Record<string, string>\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 = (key: string) => <i key={key} {...line} data-vertical=\"\" style={{ left: x, width: stroke, top: -TREE_GUIDE_BRIDGE, bottom: 0 }} />\n const cols = []\n for (let i = 0; i < depth; i++) {\n const elbow = i === elbowAt\n cols.push(\n <span key={i} className=\"xui-tree-col\" data-col={i} style={{ width: TREE_GUIDE_COLUMN }}>\n {pass.has(i) && !elbow ? vertical(`p`) : null}\n {elbow && tee ? vertical(`t`) : null}\n {elbow ? (\n <i\n key=\"e\"\n {...line}\n data-elbow=\"\"\n style={{\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 return (\n <span {...(rootProps as Record<string, unknown>)} aria-hidden=\"true\" data-tee={tee ? `true` : undefined}>\n {cols}\n </span>\n )\n}\n\n/** NEW-77: VoiceWave (catalog/style.json `voiceWave`): one SVG of three\n * closed waves, the core's `voiceWave` per frame, each ring filled and\n * stroked in its part's recipe colour at the ring's alphas; the root\n * recipe sizes the box and sets the opacity (CSS); the ONE child sits\n * centred at its own size, drawn scaled about the centre by\n * `voiceWaveChildBox` (never up; at `sm` kept but unpainted). While\n * listening, thinking or speaking (and not under reduced motion) the\n * frames write the paths' `d` directly, never a re-render; the elapsed\n * seconds count from the moment the wave started moving. */\nexport function VoiceWaveNative(p: NativeProps) {\n return voiceWaveVariant(p.props.variant) === `bars` ? <VoiceWaveBarsNative {...p} /> : <VoiceWaveRingNative {...p} />\n}\n\n/** VAPP-162 (round-5 contract §5): `variant: bars`, the horizontal level\n * meter: the core's `voiceWaveBars` per frame as rounded rects in the\n * `bar` part colour; the root recipe sizes the box; a child stays in the\n * tree, never painted. While moving, the frames write each rect's `y` and\n * `height` directly, never a re-render. */\nfunction VoiceWaveBarsNative({ node, props, rootProps, children }: NativeProps) {\n const ctx = useSurfaceContext()\n const part = useParts(node, props)\n const activity: VoiceWaveActivity = (VOICE_WAVE_ACTIVITIES as readonly string[]).includes(str(props.activity)) ? (str(props.activity) as VoiceWaveActivity) : `idle`\n const input = { size: str(props.size, `md`) as VoiceWaveSizeName, activity, level: num(props.level, 0), bands: arr<unknown>(props.bands).map((b) => num(b, 0)), reducedMotion: ctx.reducedMotion }\n const latest = useRef(input)\n latest.current = input\n const elapsed = useRef(0)\n const rects = useRef<(SVGRectElement | null)[]>([])\n const animates = voiceWaveAnimates(activity) && !ctx.reducedMotion\n useEffect(() => {\n if (!animates) {\n elapsed.current = 0\n return\n }\n return voiceWaveClock((t) => {\n elapsed.current = t\n voiceWaveBars({ ...latest.current, elapsed: t }).bars.forEach((bar, i) => {\n const el = rects.current[i]\n if (!el) return\n el.setAttribute(`y`, String(bar.y))\n el.setAttribute(`height`, String(bar.height))\n })\n })\n }, [animates])\n const meter = voiceWaveBars({ ...input, elapsed: elapsed.current })\n const colour = String(resolveRecipe(ctx.theme, { component: `VoiceWave`, part: `bar`, props: nativeRecipeProps(`VoiceWave`, props) }, ctx.mode).color ?? `currentColor`)\n const name = voiceWaveName(str(props.label) || undefined, activity)\n return (\n <span {...(rootProps as Record<string, unknown>)} role={name ? `img` : undefined} aria-label={name} aria-hidden={name ? undefined : `true`} data-variant=\"bars\" style={mergeStyle(rootProps, { width: meter.width, height: meter.height })}>\n <svg viewBox={`0 0 ${meter.width} ${meter.height}`} width={meter.width} height={meter.height} aria-hidden=\"true\" style={{ color: colour }}>\n {meter.bars.map((bar, i) => (\n <rect\n key={i}\n ref={(el) => {\n rects.current[i] = el\n }}\n {...(part(`bar`) as Record<string, string>)}\n x={bar.x}\n y={bar.y}\n width={bar.width}\n height={bar.height}\n rx={bar.radius}\n fill=\"currentColor\"\n />\n ))}\n </svg>\n {node.children.length > 0 ? (\n <span {...(part(`child`) as Record<string, string>)} data-hidden=\"true\" aria-hidden=\"true\">\n {children}\n </span>\n ) : null}\n </span>\n )\n}\n\nfunction VoiceWaveRingNative({ node, props, rootProps, children }: NativeProps) {\n const ctx = useSurfaceContext()\n const part = useParts(node, props)\n const size = sizeOf(ctx, `VoiceWave`, `root`, props, 56)\n const activity: VoiceWaveActivity = (VOICE_WAVE_ACTIVITIES as readonly string[]).includes(str(props.activity)) ? (str(props.activity) as VoiceWaveActivity) : `idle`\n const input = { size, activity, level: num(props.level, 0), bands: arr<unknown>(props.bands).map((b) => num(b, 0)), reducedMotion: ctx.reducedMotion }\n const latest = useRef(input)\n latest.current = input\n const elapsed = useRef(0)\n const paths = useRef<(SVGPathElement | null)[]>([])\n const animates = voiceWaveAnimates(activity) && !ctx.reducedMotion\n useEffect(() => {\n if (!animates) {\n elapsed.current = 0\n return\n }\n return voiceWaveClock((t) => {\n elapsed.current = t\n voiceWave({ ...latest.current, elapsed: t }).rings.forEach((ring, k) => paths.current[k]?.setAttribute(`d`, voiceWavePath(ring)))\n })\n }, [animates])\n const childEl = useRef<HTMLSpanElement | null>(null)\n const hasChild = node.children.length > 0\n useLayoutEffect(() => (hasChild && childEl.current ? voiceWaveFitChild(childEl.current, (c) => voiceWaveChildBox(size, c).scale) : undefined), [hasChild, size])\n const wave = voiceWave({ ...input, elapsed: elapsed.current })\n const recipeProps = nativeRecipeProps(`VoiceWave`, props)\n const colour = (name: string) => String(resolveRecipe(ctx.theme, { component: `VoiceWave`, part: name, props: recipeProps }, ctx.mode).color ?? `currentColor`)\n const name = voiceWaveName(str(props.label) || undefined, activity)\n return (\n <span {...(rootProps as Record<string, unknown>)} role={name ? `img` : undefined} aria-label={name} aria-hidden={name ? undefined : `true`} style={mergeStyle(rootProps, { width: size, height: size })}>\n <svg viewBox={`0 0 ${size} ${size}`} width={size} height={size} aria-hidden=\"true\">\n {wave.rings.map((ring, k) => (\n <path\n key={ring.part}\n ref={(el) => {\n paths.current[k] = el\n }}\n {...(part(ring.part) as Record<string, string>)}\n d={voiceWavePath(ring)}\n fill=\"currentColor\"\n fillOpacity={ring.fillAlpha}\n stroke=\"currentColor\"\n strokeOpacity={ring.strokeAlpha}\n strokeWidth={ring.strokeWidth}\n strokeLinejoin=\"round\"\n style={{ color: colour(ring.part) }}\n />\n ))}\n </svg>\n {hasChild ? (\n <span ref={childEl} {...(part(`child`) as Record<string, string>)} data-hidden={wave.childSize > 0 ? undefined : `true`} aria-hidden={wave.childSize > 0 ? undefined : `true`} style={{ color: colour(`child`) }}>\n {children}\n </span>\n ) : null}\n </span>\n )\n}\n",
25
26
  "// VAPP-87 + round 1: the form controls. Text inputs are HOST-OWNED\n// (`useHostOwnedValue`: local state, debounced `change` with a revision,\n// `commit` on blur/Enter, echoes applied only when idle and acknowledged);\n// the rest are controlled from the resolved prop with a local mirror\n// (`useBoundState`: a bound prop is written through to the data model and\n// `change` fires). Every named control speaks the Form protocol\n// (`useField`: all failing checks under the field, `<id>.error` linked by\n// aria-describedby, the `invalid` recipe state, Enter submits the Form).\n\nimport { useEffect, useId, useMemo, useRef, useState, type ChangeEvent, type KeyboardEvent } from \"react\"\nimport { Checkbox as CheckboxPrimitive, RadioGroup as RadioPrimitive, Slider as SliderPrimitive, Switch as SwitchPrimitive } from \"radix-ui\"\nimport { useSurfaceContext } from \"../context\"\nimport { boundPath, hostPath } from \"@exponential_app/eui/web\"\nimport { FieldErrors, joinIds, useField } from \"../form\"\nimport { CHROME, IconGlyph } from \"../icons\"\nimport { useHostOwnedValue } from \"../inputs\"\nimport type { NativeProps } from \"../node-view\"\nimport { mergeStyle } from \"../node-view\"\nimport { useBoundState } from \"./bound\"\nimport { bool, BuiltinIcon, num, str, useParts, TextPart, objects } from \"./shared\"\nimport type { SurfaceInputEvent } from \"../host\"\nimport { parseLocaleNumber } from \"@exponential_app/eui/web\"\n\nexport function useInputSender(node: NativeProps[`node`], scope: string, prop: string, domId: string = node.id) {\n const ctx = useSurfaceContext()\n const path = boundPath(node.props, prop, scope)\n const name = str(node.props.name, node.id)\n const send = useMemo(\n () => (value: unknown, revision: number, kind: `change` | `commit`) => {\n const e: SurfaceInputEvent = { surfaceId: ctx.surfaceId, componentId: domId, name, path: hostPath(path), value, revision, kind }\n return ctx.host.onInput?.(e)\n },\n [ctx.surfaceId, ctx.host, domId, name, path]\n )\n const writeLocal = useMemo(() => (path ? (value: unknown) => ctx.setData(path, value) : undefined), [path, ctx])\n return { send, writeLocal, path, name }\n}\n\nexport function InputNative(p: NativeProps) {\n return <TextFieldNative {...p} multiline={false} />\n}\nexport function TextareaNative(p: NativeProps) {\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({ node, props, rootProps, emit, scope, domId, multiline }: NativeProps & { multiline: boolean }) {\n const part = useParts(node, props)\n const ctx = useSurfaceContext()\n const id = useId()\n const { send, writeLocal } = useInputSender(node, scope, `value`, domId)\n const external = str(props.value)\n const field = useHostOwnedValue<string>({ external, send, writeLocal })\n const focusRef = useRef<HTMLInputElement | HTMLTextAreaElement | null>(null)\n const f = useField({ node, domId, props, value: field.value, focusRef })\n const disabled = bool(props.disabled) || Boolean(f.form?.disabled)\n const label = str(props.label)\n const placeholder = str(props.placeholder)\n const description = str(props.description)\n const rows = Math.max(1, num(props.rows, 3))\n const maxRows = props.maxRows === undefined ? null : Math.max(rows, num(props.maxRows, rows))\n const auto = multiline && bool(props.autosize)\n useEffect(() => {\n if (auto && focusRef.current) autosize(focusRef.current as HTMLTextAreaElement, rows, maxRows)\n }, [auto, field.value, rows, maxRows])\n const shared = {\n id,\n name: str(props.name, node.id),\n value: field.value,\n placeholder: placeholder || undefined,\n disabled,\n \"aria-invalid\": f.invalid ? true : undefined,\n \"aria-describedby\": joinIds(description && `${id}-d`, f.describedBy),\n onFocus: () => {\n field.onFocus()\n void emit(`focus`)\n },\n onBlur: () => {\n field.onBlur()\n f.touch()\n void emit(`blur`)\n },\n onChange: (e: ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n field.edit(e.target.value)\n f.change(e.target.value)\n void emit(`change`, { value: e.target.value, revision: field.revision + 1 }, { value: e.target.value })\n },\n }\n const fieldStates = [disabled && `disabled`, field.focused && `focus`, f.invalid && `invalid`] as const\n void ctx\n return (\n <div {...(rootProps as Record<string, unknown>)} data-pending={field.pending ? `true` : undefined} data-revision={field.revision}>\n <TextPart part={part(`label`)} text={label} as=\"label\" htmlFor={id} />\n {multiline ? (\n <textarea ref={focusRef as React.Ref<HTMLTextAreaElement>} {...(part(`field`, ...fieldStates) as Record<string, string>)} {...shared} rows={rows} data-autosize={auto ? `true` : undefined} />\n ) : (\n <input\n ref={focusRef as React.Ref<HTMLInputElement>}\n {...(part(`field`, ...fieldStates) as Record<string, string>)}\n {...shared}\n type={str(props.type, `text`)}\n onKeyDown={(e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === `Enter`) {\n e.preventDefault()\n field.commit()\n void emit(`submit`, { value: field.value })\n f.submit()\n }\n }}\n />\n )}\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({ node, props, rootProps, emit, scope, domId }: NativeProps) {\n const ctx = useSurfaceContext()\n const part = useParts(node, props)\n const id = useId()\n const min = props.min === undefined ? null : num(props.min)\n const max = props.max === undefined ? null : num(props.max)\n const step = num(props.step, 1) || 1\n const precision = props.precision === undefined ? decimalsOf(step) : Math.max(0, num(props.precision))\n const external = props.value === undefined || props.value === null || props.value === `` ? null : num(props.value)\n const [value, setValue] = useBoundState<number | null>(node, scope, `value`, external)\n const [text, setText] = useState<string | null>(null)\n const focusRef = useRef<HTMLInputElement | null>(null)\n const f = useField({ node, domId, props, value, focusRef })\n const disabled = bool(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 = useMemo(() => new Intl.NumberFormat(ctx.locale).formatToParts(1.1).find((p) => p.type === `decimal`)?.value ?? `.`, [ctx.locale])\n const format = useMemo(() => ({ format: (n: number) => ctx.formatter.number(n, { decimals: precision }) }), [ctx.formatter, precision])\n const clamp = (n: number) => {\n let v = n\n if (min !== null) v = Math.max(min, v)\n if (max !== null) v = Math.min(max, v)\n return Number(v.toFixed(precision))\n }\n const commit = (next: number | null) => {\n setValue(next)\n f.change(next)\n void emit(`change`, { value: next }, { value: next })\n }\n const stepBy = (delta: number) => {\n const base = value ?? (min !== null && min > 0 ? min : 0)\n commit(clamp(base + delta))\n setText(null)\n }\n const shown = text ?? (value === null ? `` : format.format(value))\n const unit = str(props.unit)\n return (\n <div {...(rootProps as Record<string, unknown>)}>\n <TextPart part={part(`label`)} text={props.label} as=\"label\" htmlFor={id} />\n <div {...(part(`field`, disabled && `disabled`, f.invalid && `invalid`) as Record<string, string>)} data-xui-numberfield=\"\">\n <button type=\"button\" {...(part(`decrement`, disabled && `disabled`) as Record<string, string>)} aria-label={ctx.t(`decrement`)} tabIndex={-1} disabled={disabled || (min !== null && value !== null && value <= min)} onClick={() => stepBy(-step)}>\n <BuiltinIcon slot=\"NumberField.decrement\" />\n </button>\n <input\n ref={focusRef}\n id={id}\n {...(part(`input`) as Record<string, string>)}\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.format(value)}${unit ? ` ${unit}` : ``}`}\n aria-invalid={f.invalid || undefined}\n aria-describedby={f.describedBy}\n name={str(props.name, node.id)}\n placeholder={str(props.placeholder) || undefined}\n disabled={disabled}\n value={shown}\n onFocus={() => {\n setText(value === null ? `` : String(value).replace(`.`, decimalSep))\n void emit(`focus`)\n }}\n onChange={(e) => {\n setText(e.target.value)\n const n = parseLocaleNumber(e.target.value, ctx.locale)\n if (n !== null || e.target.value.trim() === ``) commit(n)\n }}\n onBlur={() => {\n if (value !== null && clamp(value) !== value) commit(clamp(value))\n setText(null)\n f.touch()\n void emit(`blur`)\n }}\n onKeyDown={(e) => {\n const big = e.shiftKey ? 10 : 1\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` && min !== null) {\n e.preventDefault()\n commit(min)\n setText(null)\n } else if (e.key === `End` && max !== null) {\n e.preventDefault()\n commit(max)\n setText(null)\n } else if (e.key === `Enter`) {\n e.preventDefault()\n const v = value === null ? null : clamp(value)\n if (v !== value) commit(v)\n setText(null)\n void emit(`submit`, { value: v }, v !== value ? { value: v } : undefined)\n f.submit()\n }\n }}\n />\n {unit ? <span {...(part(`unit`) as Record<string, string>)}>{unit}</span> : null}\n <button type=\"button\" {...(part(`increment`, disabled && `disabled`) as Record<string, string>)} aria-label={ctx.t(`increment`)} tabIndex={-1} disabled={disabled || (max !== null && value !== null && value >= max)} onClick={() => stepBy(step)}>\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({ node, props, rootProps, emit, scope, domId }: NativeProps) {\n const part = useParts(node, props)\n const id = useId()\n const [checked, setChecked] = useBoundState(node, scope, `checked`, bool(props.checked))\n const focusRef = useRef<HTMLButtonElement | null>(null)\n const f = useField({ node, domId, props, value: checked, focusRef })\n const disabled = bool(props.disabled) || Boolean(f.form?.disabled)\n return (\n <div {...(rootProps as Record<string, unknown>)}>\n <CheckboxPrimitive.Root\n ref={focusRef}\n id={id}\n {...(part(`box`, checked && `checked`, disabled && `disabled`, f.invalid && `invalid`) as Record<string, string>)}\n checked={checked}\n disabled={disabled}\n name={str(props.name, node.id)}\n aria-invalid={f.invalid || undefined}\n aria-describedby={f.describedBy}\n onCheckedChange={(next) => {\n const value = next === true\n setChecked(value)\n f.change(value)\n f.touch()\n void emit(`change`, { checked: value }, { checked: value })\n }}\n >\n <CheckboxPrimitive.Indicator {...(part(`check`) as Record<string, string>)}>\n <BuiltinIcon slot=\"Checkbox.check\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n <div className=\"xui-field-text\">\n <TextPart part={part(`label`)} text={props.label} as=\"label\" htmlFor={id} />\n <TextPart part={part(`description`)} text={props.description} />\n <FieldErrors part={part} field={f} />\n </div>\n </div>\n )\n}\n\nexport function SwitchNative({ node, props, rootProps, emit, scope, domId }: NativeProps) {\n const part = useParts(node, props)\n const id = useId()\n const ctx = useSurfaceContext()\n const [checked, setChecked] = useBoundState(node, scope, `checked`, bool(props.checked))\n const focusRef = useRef<HTMLButtonElement | null>(null)\n const f = useField({ node, domId, props, value: checked, focusRef })\n const disabled = bool(props.disabled) || Boolean(f.form?.disabled)\n const travel = useMemo(() => {\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 }, [ctx.theme])\n const description = str(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: React.MouseEvent) => {\n const target = e.target as Element\n if (disabled || target.closest(`button,label,a,input`)) return\n focusRef.current?.click()\n }\n return (\n <div {...(rootProps as Record<string, unknown>)} onClick={onRow}>\n <div {...(part(`body`) as Record<string, string>)}>\n <TextPart part={part(`label`)} text={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 <SwitchPrimitive.Root\n ref={focusRef}\n id={id}\n {...(part(`track`, checked && `checked`, disabled && `disabled`) as Record<string, string>)}\n checked={checked}\n disabled={disabled}\n name={str(props.name, node.id)}\n aria-describedby={joinIds(description && `${id}-d`, f.describedBy)}\n style={{ \"--xui-switch-travel\": `${travel}px` } as React.CSSProperties}\n onCheckedChange={(next) => {\n setChecked(next)\n f.change(next)\n void emit(`change`, { checked: next }, { checked: next })\n }}\n >\n <SwitchPrimitive.Thumb {...(part(`thumb`, checked && `checked`) as Record<string, string>)} />\n </SwitchPrimitive.Root>\n </div>\n )\n}\n\ninterface Option {\n label: string\n value: string\n icon?: string\n disabled?: boolean\n}\n\nexport function RadioNative({ node, props, rootProps, emit, scope, domId }: NativeProps) {\n const part = useParts(node, props)\n const ctx = useSurfaceContext()\n const id = useId()\n const options = objects<Option>(props.options)\n const [value, setValue] = useBoundState(node, scope, `value`, str(props.value))\n const focusRef = useRef<HTMLDivElement | null>(null)\n // Focus goes to the checked item (else the first), the group's tab stop.\n const itemRef = useMemo(\n () => ({\n get current(): HTMLElement | null {\n return (focusRef.current?.querySelector(`[data-state=\"checked\"]`) ?? focusRef.current?.querySelector(`button`)) as HTMLElement | null\n },\n }),\n []\n )\n const f = useField({ node, domId, props, value, focusRef: itemRef })\n return (\n <div {...(rootProps as Record<string, unknown>)} role=\"group\" aria-labelledby={props.label ? `${id}-l` : undefined} aria-describedby={f.describedBy}>\n <TextPart part={part(`label`)} text={props.label} id={`${id}-l`} />\n <RadioPrimitive.Root\n ref={focusRef}\n {...(part(`items`) as Record<string, string>)}\n className={`${(part(`items`) as { className: string }).className} xui-radio-items`}\n value={value}\n name={str(props.name, node.id)}\n orientation={str(props.orientation, `vertical`) as `vertical` | `horizontal`}\n dir={ctx.direction}\n loop\n aria-invalid={f.invalid || undefined}\n onValueChange={(next) => {\n setValue(next)\n f.change(next)\n void emit(`change`, { value: next }, { value: next })\n }}\n >\n {options.map((o, i) => {\n const checked = o.value === value\n const oid = `${id}-${o.value}`\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 key={o.value} className=\"xui-radio-row\" htmlFor={oid} data-xui-id={`${part.domId}.item.${i}`}>\n <RadioPrimitive.Item id={oid} value={o.value} disabled={bool(o.disabled)} {...(part(`item`, checked && `checked`, bool(o.disabled) && `disabled`, f.invalid && `invalid`) as Record<string, string>)} data-xui-id={`${part.domId}.dot.${i}`}>\n <RadioPrimitive.Indicator {...(part(`dot`, checked && `checked`) as Record<string, string>)} />\n </RadioPrimitive.Item>\n {o.icon ? <IconGlyph icons={ctx.host.icons} name={o.icon} className=\"xui-icon\" width={16} height={16} /> : null}\n <span {...(part.at(`label`, i) as Record<string, string>)}>{str(o.label)}</span>\n </label>\n )\n })}\n </RadioPrimitive.Root>\n <FieldErrors part={part} field={f} />\n </div>\n )\n}\n\nexport function SliderNative({ node, props, rootProps, emit, scope }: NativeProps) {\n const part = useParts(node, props)\n const ctx = useSurfaceContext()\n const id = useId()\n const min = num(props.min, 0)\n const max = num(props.max, 100)\n const step = num(props.step, 1)\n const [value, setValue] = useBoundState(node, scope, `value`, num(props.value, min))\n return (\n <div {...(rootProps as Record<string, unknown>)}>\n <div {...(part(`header`) as Record<string, string>)} className={`${(part(`header`) as { className: string }).className} xui-slider-head`}>\n <TextPart part={part(`label`)} text={props.label} as=\"label\" htmlFor={id} />\n <span {...(part(`value`) as Record<string, string>)}>{ctx.formatter.number(value)}</span>\n </div>\n <SliderPrimitive.Root\n className=\"xui-slider-root\"\n value={[value]}\n min={min}\n max={max}\n step={step}\n dir={ctx.direction}\n name={str(props.name) || undefined}\n onValueChange={([next]) => setValue(next)}\n onValueCommit={([next]) => void emit(`change`, { value: next }, { value: next })}\n >\n <SliderPrimitive.Track {...(part(`track`) as Record<string, string>)}>\n <SliderPrimitive.Range {...(part(`range`) as Record<string, string>)} />\n </SliderPrimitive.Track>\n <SliderPrimitive.Thumb id={id} {...(part(`thumb`) as Record<string, string>)} aria-label={str(props.label) || undefined} />\n </SliderPrimitive.Root>\n </div>\n )\n}\n\n// ---------------------------------------------------------------------------\n// Composer\n// ---------------------------------------------------------------------------\n\nexport function ComposerNative({ node, props, rootProps, emit, scope, domId }: NativeProps) {\n const part = useParts(node, props)\n const ctx = useSurfaceContext()\n const { send, writeLocal } = useInputSender(node, scope, `value`, domId)\n const external = str(props.value)\n const field = useHostOwnedValue<string>({ external, send, writeLocal })\n const busy = bool(props.busy)\n const ref = useRef<HTMLTextAreaElement>(null)\n const grow = () => {\n const el = ref.current\n if (!el) return\n el.style.height = `auto`\n el.style.height = `${Math.min(200, el.scrollHeight)}px`\n }\n useEffect(grow, [field.value])\n const submit = () => {\n if (busy) {\n void emit(`stop`)\n return\n }\n const text = field.value.trim()\n if (!text) return\n field.commit()\n void emit(`submit`, { value: text })\n field.edit(``)\n }\n const placeholder = str(props.placeholder)\n const submitLabel = str(props.submitLabel) || ctx.t(`send`)\n return (\n <div {...(rootProps as Record<string, unknown>)} data-busy={busy ? `true` : undefined}>\n <textarea\n ref={ref}\n {...(part(`field`, field.focused && `focus`) as Record<string, string>)}\n rows={1}\n placeholder={placeholder || undefined}\n value={field.value}\n aria-label={ctx.t(`message`)}\n onFocus={field.onFocus}\n onBlur={field.onBlur}\n onChange={(e) => {\n field.edit(e.target.value)\n void emit(`change`, { value: e.target.value }, { value: e.target.value })\n }}\n onKeyDown={(e) => {\n if (e.key === `Enter` && !e.shiftKey) {\n e.preventDefault()\n submit()\n }\n }}\n />\n <div className=\"xui-composer-bar\">\n {bool(props.attachments) ? (\n <button type=\"button\" {...(part(`attachment`) as Record<string, string>)} aria-label={ctx.t(`browse`)} onClick={() => void emit(`attach`)}>\n <BuiltinIcon slot=\"Composer.attachment\" />\n </button>\n ) : null}\n <button type=\"button\" {...(part(`send`, busy && `pressed`) as Record<string, string>)} 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 { CHROME, mergeStyle, parseLocaleNumber }\n",
26
27
  "// VAPP-87: HOST-OWNED inputs on React. The rules (revision counter,\n// debounce, echo acceptance: a host push is adopted only when the field is\n// not focused AND every revision was acknowledged, the VAPP-4 typing rule)\n// are the web layer's `HostOwnedController` (`@exponential_app/eui/web`\n// inputs.ts, FEED-128); this hook keeps one per field and re-renders on its\n// changes.\n\nimport { useCallback, useEffect, useReducer, useRef } from \"react\"\nimport { DEBOUNCE_MS, HostOwnedController } from \"@exponential_app/eui/web\"\n\nexport { DEBOUNCE_MS }\n\nexport interface HostOwnedOptions<T> {\n /** The value the host currently holds (resolved prop or data model). */\n external: T\n /** Sends an edit; a returned promise acknowledges the revision on settle. */\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 value: T\n revision: number\n /** True while a revision the host has not acknowledged exists. */\n pending: boolean\n 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 useHostOwnedValue<T>({ external, send, writeLocal, debounceMs = DEBOUNCE_MS }: HostOwnedOptions<T>): HostOwnedValue<T> {\n const [, rerender] = useReducer((n: number) => n + 1, 0)\n const ref = useRef<HostOwnedController<T> | null>(null)\n if (!ref.current) ref.current = new HostOwnedController<T>({ initial: external, send, writeLocal, debounceMs, onChange: rerender })\n const c = ref.current\n c.configure({ send, writeLocal, debounceMs })\n useEffect(() => {\n c.attach()\n return () => c.dispose()\n }, [c])\n // The host's push: adopted only when idle and fully acknowledged.\n useEffect(() => {\n c.push(external)\n }, [c, external])\n const onFocus = useCallback(() => c.focus(), [c])\n const onBlur = useCallback(() => c.blur(), [c])\n const edit = useCallback((next: T) => c.edit(next), [c])\n const commit = useCallback(() => c.commit(), [c])\n return { value: c.value, revision: c.revision, pending: c.pending, focused: c.focused, onFocus, onBlur, edit, commit }\n}\n",
27
28
  "// VAPP-87 + rounds 1–2: Box, List and the Unknown placeholder. A List renders\n// its children then its data template's items (keyed by `template.key`, so\n// reordering keeps each item's state), optionally in sections; past\n// `WINDOW_THRESHOLD` (50, the catalog's) items it windows on its axis.\n\nimport { memo, useCallback, useContext, useEffect, useMemo, useRef, type KeyboardEvent, type ReactNode } from \"react\"\nimport { listSections, sectionRows, WINDOW_THRESHOLD as CATALOG_WINDOW_THRESHOLD, type ListSection } from \"@exponential_app/eui\"\nimport { InstanceContext, ScopeContext, SurfaceContext, deriveContext, readView, useSurfaceContext } from \"../context\"\nimport { getPointer, LITERAL_ROWS_ROOT } from \"@exponential_app/eui/web\"\nimport { WindowedList, type WindowedListHandle } from \"../list\"\nimport type { NativeProps } from \"../node-view\"\nimport { NodeView, TemplateItemView, mergeStyle, templateItems } from \"../node-view\"\nimport { bool, BuiltinIcon, num, str, useParts, type PartFn } from \"./shared\"\n\nexport function BoxNative({ node, props, rootProps, emit, children }: NativeProps) {\n const pressable = bool(props.pressable) || Boolean(node.on?.press)\n if (!pressable) return <div {...(rootProps as Record<string, unknown>)}>{children}</div>\n const onKey = (e: KeyboardEvent) => {\n if (e.target !== e.currentTarget) return\n if (e.key === `Enter` || e.key === ` `) {\n e.preventDefault()\n void emit(`press`)\n }\n }\n return (\n <div {...(rootProps as Record<string, unknown>)} data-pressable=\"true\" role=\"button\" tabIndex={0} onClick={() => void emit(`press`)} onKeyDown={onKey}>\n {children}\n </div>\n )\n}\n\n/** Past this many items a List windows (fewer render flat, so fixtures\n * snapshot every row). The catalog's number (`layout.json`). */\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 (the slot,\n * bound once per section with the literal scope `{value, count, index}`,\n * else the value); past `WINDOW_THRESHOLD` items, or with `stickyHeaders`,\n * the list WINDOWS on its axis (vertical or horizontal) against its own\n * scroll, the nearest scroller or the viewport. Every item is a listitem\n * with its position in the whole list; `scrollToIndex` (the host command)\n * takes the data index. */\nexport function ListNative({ node, props, rootProps, scope, domId }: NativeProps) {\n const ctx = useSurfaceContext()\n const part = useParts(node, props)\n const divided = bool(props.divided)\n const horizontal = props.direction === `horizontal`\n const gap = str(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 // Keyed once per data change (a 100,000-row list must not re-key on scroll).\n const tpl = useMemo(() => templateItems(ctx, node, scope), [ctx.data, ctx.templateNode, node, scope]) // eslint-disable-line react-hooks/exhaustive-deps\n const childCount = node.children.length\n const itemCount = childCount + (tpl?.items.length ?? 0)\n const sectionBy = str(props.sectionBy)\n const sections = useMemo(() => (sectionBy && tpl ? listSections(tpl.items.map((item) => getPointer(ctx.data, item.path)), sectionBy) : null), [sectionBy, tpl, ctx.data])\n const rows = useMemo((): ListRow[] => {\n const out: ListRow[] = []\n for (let i = 0; i < childCount; i++) out.push({ item: i })\n if (sections) for (const r of sectionRows(sections)) out.push(`header` in r ? r : { item: childCount + r.item })\n else for (let i = childCount; i < itemCount; i++) out.push({ item: i })\n return out\n }, [childCount, itemCount, sections])\n const sticky = bool(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. Flat and windowed lay out the same.\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(rootProps, { gap: windowed ? undefined : flatGap })\n const rtl = horizontal && ctx.direction === `rtl`\n const keyOf = (r: number) => {\n const row = rows[r]\n if (`header` in row) return `s:${row.header}`\n return row.item < childCount ? node.children[row.item].id : `t:${tpl!.items[row.item - childCount].key}`\n }\n // A divider sits before every item that follows another item.\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 const windowRef = useRef<WindowedListHandle | null>(null)\n const rootRef = useRef<HTMLDivElement | null>(null)\n // `scrollToIndex` {id, index (data order), align}: the template's index\n // (children come first), else the child's.\n const rowOfIndex = useCallback((index: number) => rows.findIndex((r) => `item` in r && r.item === (tpl ? childCount + index : index)), [rows, tpl, childCount])\n useEffect(\n () =>\n ctx.registerScroller(domId, (index, align) => {\n const r = rowOfIndex(index)\n if (r < 0) return\n if (windowed) windowRef.current?.scrollToIndex(r, align)\n else {\n // Own rows only (`:scope >`): a nested List has rows of its own.\n const el = rootRef.current?.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 [ctx, domId, rowOfIndex, windowed, horizontal]\n )\n const renderRow = (r: number) => <ListRowView row={rows[r]} node={node} tpl={tpl} sections={sections} childCount={childCount} part={part} />\n // Round 3: a Section body with `tree` asks for role `tree` ($a11y); its\n // items are then treeitems (a tree owns treeitems only).\n const listRole = (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 // A section header is a listitem holding its heading (a list owns\n // listitems only); items carry their position among the ITEMS.\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) as Record<string, string>)} role=\"separator\" />\n }\n if (windowed) {\n const headerRows = sticky ? rows.flatMap((row, r) => (`header` in row ? [r] : [])) : undefined\n return (\n <div ref={rootRef} {...(rootProps as Record<string, unknown>)} style={style} role={listRole}>\n <WindowedList\n ref={windowRef}\n count={rows.length}\n itemKey={keyOf}\n estimatedItemHeight={rowExtent}\n axis={horizontal ? `horizontal` : `vertical`}\n direction={ctx.direction}\n gap={step}\n divider={divider}\n stickyRows={headerRows}\n itemProps={itemAttrs}\n renderItem={renderRow}\n />\n </div>\n )\n }\n // Flat: each row is a real box (the listitem; a `display: contents`\n // role is dropped by some engines) stretching its node as the List would;\n // the divider sits centred in the gap before it, as WindowedList draws it.\n const axis = horizontal ? `horizontal` : `vertical`\n const out: ReactNode[] = []\n for (let r = 0; r < rows.length; r++) {\n const line = divider(r)\n out.push(\n <div key={keyOf(r)} className=\"xui-list-row\" data-axis={axis} data-xui-row={r} {...itemAttrs(r)}>\n {line ? (\n <div className=\"xui-list-gap\" aria-hidden=\"true\" data-axis={axis} style={horizontal ? { [rtl ? `right` : `left`]: -(step / 2) } : { top: -(step / 2) }}>\n {line}\n </div>\n ) : null}\n {renderRow(r)}\n </div>\n )\n }\n return (\n <div ref={rootRef} {...(rootProps as Record<string, unknown>)} style={style} role={listRole}>\n {out}\n </div>\n )\n}\n\nconst ListRowView = memo(function ListRowView({ row, node, tpl, sections, childCount, part }: { row: ListRow; node: NativeProps[`node`]; tpl: ReturnType<typeof templateItems>; sections: ListSection[] | null; childCount: number; part: PartFn }) {\n if (`header` in row) {\n const section = sections?.[row.header]\n if (!section) return null\n return (\n <div {...(part.at(`section`, row.header) as Record<string, string>)} role=\"heading\" aria-level={3}>\n {node.slots?.section ? <LiteralScope value={{ value: section.value, count: section.count, index: row.header }} pointer={`${LITERAL_ROWS_ROOT}/${node.id.replace(/[~/]/g, `_`)}/sections/${row.header}`} suffix={`.${row.header}`} node={node.slots.section} /> : section.value}\n </div>\n )\n }\n if (row.item < childCount) return <NodeView node={node.children[row.item]} />\n const item = tpl?.items[row.item - childCount]\n if (!tpl || !item) return null\n return <TemplateItemView tpl={tpl.tpl} item={item} />\n})\n\n/** A node bound against a LITERAL scope (a List section header's `{value,\n * count, index}`): mounted into a read view of the data model at a\n * synthetic pointer (relative paths read the literal, absolute ones the\n * surface data; writes under it go nowhere). */\nfunction LiteralScope({ value, pointer, suffix, node }: { value: unknown; pointer: string; suffix: string; node: NativeProps[`node`] }) {\n const ctx = useSurfaceContext()\n const outer = useContext(InstanceContext)\n const view = useMemo(() => {\n const data = readView(ctx, pointer, value)\n const setData = (p: string, v: unknown) => {\n if (p !== pointer && !p.startsWith(`${pointer}/`)) ctx.setData(p, v)\n }\n return deriveContext(ctx, { setData }, data)\n }, [ctx, pointer, value])\n return (\n <SurfaceContext.Provider value={view}>\n <ScopeContext.Provider value={pointer}>\n <InstanceContext.Provider value={`${outer}${suffix}`}>\n <NodeView node={node} />\n </InstanceContext.Provider>\n </ScopeContext.Provider>\n </SurfaceContext.Provider>\n )\n}\n\nexport function UnknownNative({ node, props, rootProps }: NativeProps) {\n const ctx = useSurfaceContext()\n const part = useParts(node, props)\n return (\n <div {...(rootProps as Record<string, unknown>)} role=\"note\" data-xui-unknown={str(props.component, node.component)}>\n <BuiltinIcon slot=\"Unknown.root\" size={16} />\n <span {...(part(`label`) as Record<string, string>)}>\n {ctx.t(`unknownComponent`)} {str(props.component, node.component)}\n </span>\n </div>\n )\n}\n",
28
29
  "// VAPP-87 + round 2 (docs/round-2-contract.md §5): the WINDOWED list on ONE\n// axis (vertical or horizontal). The numbers are the core's (`itemOffsets`,\n// `virtualWindow`, `scrollOffsetForIndex`, `stickyHeader` from\n// `@exponential_app/eui`): rows sit end to end with `gap` between them (a\n// divided list adds the hairline to the gap and draws the divider centred\n// in it), unmeasured rows take the measured mean, or the estimate (`$control.row`) before any is measured. Rows are\n// positioned absolutely inside a spacer as long as the content; ONE\n// ResizeObserver corrects each rendered row's extent (a row leaving the\n// window is unobserved, the observer disconnects on unmount). The window\n// follows the nearest ancestor that ACTUALLY scrolls on the axis (overflow\n// auto/scroll AND content longer than its box: the List itself when it has\n// a bounded size), else the host viewport; it is re-found when the rows or\n// their total change, and the viewport re-read on scroll and on a resize of\n// the window, the scroller or the list. A sticky header row (`stickyRows`)\n// pins at the viewport start, pushed back by the next one, and renders even\n// outside the window. `scrollToIndex` brings a row into view (start | center\n// | end | nearest) minus the pinned header.\n\nimport { forwardRef, useCallback, useEffect, useImperativeHandle, useLayoutEffect, useMemo, useRef, useState, type CSSProperties, type ReactNode } from \"react\"\nimport { itemExtents, itemOffsets, scrollOffsetForIndex, stickyHeader, virtualWindow, WINDOW_OVERSCAN, type ScrollAlign } from \"@exponential_app/eui\"\nimport { listViewport as viewportOf, scrollParent, type ListAxis } from \"@exponential_app/eui/web\"\n\nexport type { ListAxis }\n\nexport interface WindowedListProps {\n count: number\n itemKey: (index: number) => string\n renderItem: (index: number) => ReactNode\n /** The extent (px on the axis) of a row before it is measured. */\n estimatedItemHeight?: number | ((index: number) => number)\n overscan?: number\n className?: string\n axis?: ListAxis\n /** Inline direction (a horizontal list starts at the right in rtl). */\n direction?: `ltr` | `rtl`\n /** Space between rows on the axis (px; a divided list adds the hairline). */\n gap?: number\n /** A divider drawn centred in the gap BEFORE row `index` (null = none). */\n divider?: (index: number) => ReactNode | 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}\n\nexport interface WindowedListHandle {\n /** Scroll row `index` into view (`start` | `center` | `end` | `nearest`,\n * default nearest), the pinned header's extent subtracted. */\n scrollToIndex: (index: number, align?: ScrollAlign) => void\n}\n\nconst useIsoLayoutEffect = typeof window === `undefined` ? useEffect : useLayoutEffect\n\nexport { scrollParent }\n\nexport const WindowedList = forwardRef<WindowedListHandle, WindowedListProps>(function WindowedList(\n { count, itemKey, renderItem, estimatedItemHeight = 40, overscan = WINDOW_OVERSCAN, className, axis = `vertical`, direction = `ltr`, gap = 0, divider, stickyRows, itemProps },\n handle\n) {\n const ref = useRef<HTMLDivElement>(null)\n const extentsByKey = useRef<Map<string, number>>(new Map())\n const crossByKey = useRef<Map<string, number>>(new Map())\n const observed = useRef<Map<string, Element>>(new Map())\n const keyOfEl = useRef<WeakMap<Element, string>>(new WeakMap())\n const observer = useRef<ResizeObserver | null>(null)\n const [version, bump] = useState(0)\n const [view, setView] = useState<{ scroll: number; viewport: number } | null>(null)\n const horizontal = axis === `horizontal`\n const rtl = horizontal && direction === `rtl`\n\n const estimate = useCallback((i: number) => (typeof estimatedItemHeight === `function` ? estimatedItemHeight(i) : estimatedItemHeight), [estimatedItemHeight])\n // Bumped with every new measurement (synchronously, unlike `version`).\n const measured = useRef(0)\n const extentsCache = useRef<{ count: number; itemKey: WindowedListProps[`itemKey`]; estimate: WindowedListProps[`estimatedItemHeight`]; measured: number; ext: number[] } | null>(null)\n /** Every row's extent; one pass over the rows per measurement (VAPP-139:\n * a 100,000-row jump read them twice). */\n const extents = (): number[] => {\n const c = extentsCache.current\n if (c && c.count === count && c.itemKey === itemKey && c.estimate === estimatedItemHeight && c.measured === measured.current) return c.ext\n let ext: number[]\n // §5: a fixed estimate gives way to the mean of the measured rows.\n if (typeof estimatedItemHeight === `number`) ext = itemExtents(Array.from({ length: count }, (_, i) => extentsByKey.current.get(itemKey(i))), estimatedItemHeight)\n else {\n ext = new Array<number>(count)\n for (let i = 0; i < count; i++) ext[i] = extentsByKey.current.get(itemKey(i)) ?? estimate(i)\n }\n extentsCache.current = { count, itemKey, estimate: estimatedItemHeight, measured: measured.current, ext }\n return ext\n }\n\n useEffect(() => {\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.current.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 = horizontal ? w : h\n const cross = horizontal ? h : w\n if (key === undefined || main <= 0) continue\n if (extentsByKey.current.get(key) !== main) {\n extentsByKey.current.set(key, main)\n changed = true\n }\n if (crossByKey.current.get(key) !== cross) {\n crossByKey.current.set(key, cross)\n changed = true\n }\n }\n if (changed) {\n measured.current++\n bump((n) => n + 1)\n }\n })\n observer.current = ro\n for (const el of observed.current.values()) ro.observe(el)\n return () => {\n ro.disconnect()\n observer.current = null\n }\n }, [horizontal])\n\n // The scroller (undefined = not resolved yet, null = the window). Re-found\n // when the rows or their measured total change: a box may only start\n // scrolling once its rows are measured.\n const [scroller, setScroller] = useState<HTMLElement | null | undefined>(undefined)\n // The viewport is re-read on scroll, a window resize AND a resize of the\n // scroller or the list itself (a Resizable panel, a sibling growing).\n useIsoLayoutEffect(() => {\n const el = ref.current\n if (!el || scroller === undefined) return\n const read = () => {\n const v = viewportOf(el, axis, rtl, scroller)\n setView((cur) => (cur && cur.scroll === v.scroll && cur.viewport === v.viewport ? cur : { scroll: v.scroll, viewport: v.viewport }))\n }\n read()\n const target: EventTarget = scroller ?? 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 (scroller) ro.observe(scroller)\n ro.observe(el)\n }\n return () => {\n target.removeEventListener(`scroll`, read)\n window.removeEventListener(`resize`, read)\n ro?.disconnect()\n }\n }, [scroller, axis, rtl])\n\n const measure = useCallback(\n (key: string) => (node: HTMLDivElement | null) => {\n const prev = observed.current.get(key)\n if (prev && prev !== node) {\n observer.current?.unobserve(prev)\n observed.current.delete(key)\n }\n if (!node) return\n observed.current.set(key, node)\n keyOfEl.current.set(node, key)\n observer.current?.observe(node)\n },\n []\n )\n\n // Extents and offsets change with the rows and their measurements, never\n // with the scroll position (a scroll step re-renders only the window).\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const ext = useMemo(extents, [count, itemKey, estimate, version])\n const off = useMemo(() => itemOffsets(ext, gap), [ext, gap])\n const total = off[count] ?? 0\n useIsoLayoutEffect(() => {\n const el = ref.current\n if (!el) return\n const found = scrollParent(el, axis)\n setScroller((cur) => (cur === found ? cur : found))\n }, [count, axis, total])\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 = virtualWindow(ext, gap, scroll, viewport, overscan)\n const headers = useMemo(() => [...(stickyRows ?? [])].filter((r) => r >= 0 && r < count).sort((a, b) => a - b), [stickyRows, count])\n const pinned = headers.length && scroll >= 0 ? stickyHeader(off, ext, headers, scroll) : null\n\n // scrollToIndex: scroll so the row sits where `align` says, minus the\n // header that will be pinned there; unmeasured rows were estimates, so the\n // jump is re-aimed after the rows it reveals are measured (a few frames).\n const pending = useRef<{ index: number; align: ScrollAlign; tries: number } | null>(null)\n const jump = (index: number, align: ScrollAlign): boolean => {\n const el = ref.current\n if (!el || index < 0 || index >= count) return false\n const e = extents()\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 and so every unmeasured\n // row above the target: re-aim on the next renders, until user input.\n useEffect(() => {\n const p = pending.current\n if (!p) return\n if (p.tries++ >= 12) pending.current = null\n else jump(p.index, p.align)\n })\n useEffect(() => {\n const target: EventTarget = scroller ?? window\n const cancel = () => {\n pending.current = null\n }\n const events = [`wheel`, `touchstart`, `pointerdown`, `keydown`] as const\n for (const e of events) target.addEventListener(e, cancel, { passive: true })\n return () => {\n for (const e of events) target.removeEventListener(e, cancel)\n }\n }, [scroller])\n useImperativeHandle(\n handle,\n () => ({\n scrollToIndex: (index, align = `nearest`) => {\n pending.current = { index, align, tries: 0 }\n if (!jump(index, align)) pending.current = null\n },\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [count, itemKey, estimate, axis, rtl, gap, headers]\n )\n\n const place = (at: number): CSSProperties => (horizontal ? (rtl ? { right: 0, transform: `translateX(${-at}px)` } : { left: 0, transform: `translateX(${at}px)` }) : { transform: `translateY(${at}px)` })\n const indices: number[] = []\n if (pinned && (pinned.row < win.start || pinned.row >= win.end)) indices.push(pinned.row)\n for (let i = win.start; i < win.end; i++) indices.push(i)\n let cross = 0\n const rows = indices.map((i) => {\n const key = itemKey(i)\n cross = Math.max(cross, crossByKey.current.get(key) ?? 0)\n const isPinned = pinned?.row === i\n const at = isPinned ? pinned.offset : off[i]\n const line = i > 0 && divider ? divider(i) : null\n return (\n <div key={key} ref={measure(key)} className=\"xui-list-item\" data-index={i} data-pinned={isPinned && pinned.offset !== off[i] ? `` : undefined} {...(itemProps?.(i) ?? {})} style={{ ...place(at), ...(isPinned ? { zIndex: 1 } : {}) }}>\n {line ? (\n <div className=\"xui-list-gap\" aria-hidden=\"true\" data-axis={axis} style={horizontal ? { [rtl ? `right` : `left`]: -(gap / 2) } : { top: -(gap / 2) }}>\n {line}\n </div>\n ) : null}\n {renderItem(i)}\n </div>\n )\n })\n const spacer: CSSProperties = horizontal ? { width: total, height: cross || undefined } : { height: total }\n return (\n <div ref={ref} className={className ? `xui-list-window ${className}` : `xui-list-window`} data-axis={axis} style={spacer} data-window-start={win.start} data-window-end={win.end}>\n {rows}\n </div>\n )\n})\n",
29
- "// VAPP-87: Image, Video, AudioPlayer, Avatar, Carousel.\n\nimport { useEffect, useRef, useState } from \"react\"\nimport { useBoundState } from \"./bound\"\nimport { Avatar as AvatarPrimitive } from \"radix-ui\"\nimport { useSurfaceContext } from \"../context\"\nimport { IconGlyph } from \"../icons\"\nimport type { NativeProps } from \"../node-view\"\nimport { NodeView, mergeStyle, withClass } from \"../node-view\"\nimport { MEDIA_ASPECT_RATIO, MEDIA_INTRINSIC_WIDTH } from \"@exponential_app/eui\"\n\n/** The media box's intrinsic width (catalog/layout.json\n * `mediaIntrinsicWidth`: max-content 320, min-content 0 — a compressible\n * replaced element with `max-width: 100%`), so the box never waits for the\n * picture or the browser's 300×150 video default. */\nfunction MediaSizer() {\n return <svg className=\"xui-media-sizer\" aria-hidden=\"true\" width={MEDIA_INTRINSIC_WIDTH} height={1} />\n}\nimport { bool, BuiltinIcon, num, str, useParts } from \"./shared\"\nimport { useMediaSource, useMediaSrc } from \"../media\"\n\n/** `inert` on an inactive page (React 19, the peer range, takes a boolean). */\nconst INERT: Record<string, unknown> = { inert: true }\n\n/** Image (contract §3): `loading` lazy|eager, `focalX/focalY` (0..1, the\n * point kept when the picture is cropped → `object-position`), and the\n * `fallback` icon (default `builtinIcons[\"Image.fallback\"]`) on error or\n * without a src; `data-state` = loading | loaded | error | empty. */\nexport function ImageNative({ node, props, rootProps }: NativeProps) {\n const ctx = useSurfaceContext()\n const part = useParts(node, props)\n const src = str(props.src)\n const alt = str(props.alt)\n const fit = str(props.fit, `cover`)\n const [state, setState] = useState<`loading` | `loaded` | `error`>(`loading`)\n useEffect(() => setState(`loading`), [src])\n const style: Record<string, string | number> = {}\n if (props.width !== undefined) style.width = num(props.width)\n if (props.height !== undefined) style.height = num(props.height)\n // Round 2 §7: `aspectRatio`, else 16:9 without a height (the box never\n // waits for the picture: the img is laid over it).\n if (props.aspectRatio !== undefined) style.aspectRatio = String(num(props.aspectRatio))\n else if (props.height === undefined) style.aspectRatio = String(MEDIA_ASPECT_RATIO)\n const objectFit = fit === `scaleDown` ? `scale-down` : fit\n const fx = Math.max(0, Math.min(1, num(props.focalX, 0.5)))\n const fy = Math.max(0, Math.min(1, num(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 = useMediaSource(ctx.host, src)\n const url = media.url\n const shown = media.error ? `error` : state\n const failed = !src || shown === `error`\n const fallback = str(props.fallback)\n return (\n <div {...(rootProps as Record<string, unknown>)} style={mergeStyle(rootProps, Object.keys(style).length ? style : undefined)} role={failed ? `img` : undefined} aria-label={failed ? alt : undefined} data-state={src ? shown : `empty`}>\n {src && url && shown !== `error` ? (\n <img\n src={url}\n alt={alt}\n loading={props.loading === `eager` ? `eager` : `lazy`}\n decoding=\"async\"\n style={{ objectFit: objectFit as never, objectPosition: `${fx * 100}% ${fy * 100}%` }}\n onLoad={() => setState(`loaded`)}\n onError={() => setState(`error`)}\n />\n ) : null}\n <MediaSizer />\n {failed ? (\n <div {...(part(`fallback`) as Record<string, string>)} aria-hidden=\"true\">\n {fallback ? <IconGlyph icons={ctx.host.icons} name={fallback} /> : <BuiltinIcon slot=\"Image.fallback\" />}\n </div>\n ) : null}\n </div>\n )\n}\n\nexport function VideoNative({ node, props, rootProps }: NativeProps) {\n const ctx = useSurfaceContext()\n const part = useParts(node, props)\n const src = str(props.src)\n const poster = str(props.poster)\n // The video streams (no byte caps); its poster is an image (the limits hold).\n const url = useMediaSrc(ctx.host, src, `stream`)\n const posterUrl = useMediaSrc(ctx.host, poster)\n // Round 2 §7: height = width / `aspectRatio` (default 16:9), never the\n // browser's 300×150.\n const ratio = num(props.aspectRatio, MEDIA_ASPECT_RATIO) || MEDIA_ASPECT_RATIO\n return (\n <div {...(rootProps as Record<string, unknown>)} style={mergeStyle(rootProps, { aspectRatio: String(ratio) })}>\n <MediaSizer />\n <video {...(part(`controls`) as Record<string, string>)} src={url} poster={posterUrl} controls autoPlay={bool(props.autoplay)} muted={bool(props.autoplay)} playsInline preload=\"metadata\" data-duration-ms={props.durationMs !== undefined ? num(props.durationMs) : undefined} />\n </div>\n )\n}\n\nexport function AudioPlayerNative({ node, props, rootProps }: NativeProps) {\n const ctx = useSurfaceContext()\n const part = useParts(node, props)\n const src = str(props.src)\n const title = str(props.title)\n const url = useMediaSrc(ctx.host, src, `stream`)\n return (\n <div {...(rootProps as Record<string, unknown>)} style={mergeStyle(rootProps, { flexDirection: `column`, gap: `var(--xui-spacing-xs)` })}>\n {title ? <span {...(part(`track`) as Record<string, string>)}>{title}</span> : null}\n <audio {...(part(`controls`) as Record<string, string>)} src={url} controls preload=\"metadata\" aria-label={title || undefined} data-duration-ms={props.durationMs !== undefined ? num(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 (the app's avatar palette is host-side; the SDK\n * tints with one hue so 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({ node, props, rootProps }: NativeProps) {\n const ctx = useSurfaceContext()\n const part = useParts(node, props)\n const name = str(props.name)\n const src = str(props.src)\n const seed = str(props.seed) || name\n const hue = seed ? seedHue(seed) : null\n const url = useMediaSrc(ctx.host, src)\n const tint = hue === null ? undefined : { backgroundColor: `color-mix(in oklab, hsl(${hue} 70% 55%) 22%, transparent)`, color: `hsl(${hue} 60% ${ctx.mode === `dark` ? 72 : 38}%)` }\n return (\n <AvatarPrimitive.Root {...(rootProps as Record<string, unknown>)} aria-label={name || undefined} role=\"img\">\n {src ? <AvatarPrimitive.Image {...(part(`image`) as Record<string, string>)} src={url} alt={name} /> : null}\n {/* No picture to wait for: the initials paint with the first frame\n (Radix holds a 0 ms delay one timer tick; Solid paints at once). */}\n <AvatarPrimitive.Fallback {...(part(`fallback`) as Record<string, string>)} delayMs={src ? 300 : undefined} style={tint}>\n {initials(name) || `?`}\n </AvatarPrimitive.Fallback>\n </AvatarPrimitive.Root>\n )\n}\n\nexport function CarouselNative({ node, props, rootProps, emit, scope }: NativeProps) {\n const ctx = useSurfaceContext()\n const part = useParts(node, props)\n const track = useRef<HTMLDivElement>(null)\n const pages = node.children\n const [page, setPage] = useBoundState(node, scope, `page`, num(props.page, 0))\n const scrollTo = (i: number) => {\n const el = track.current\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 const external = num(props.page, 0)\n useEffect(() => scrollTo(external), [external])\n const onScroll = () => {\n const el = track.current\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 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.loop) ? ((next % n) + n) % n : Math.max(0, Math.min(n - 1, next))\n setPage(target)\n void emit(`change`, { page: target }, { page: target })\n scrollTo(target)\n }\n const many = pages.length > 1\n return (\n <div\n {...(rootProps as Record<string, unknown>)}\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} className=\"xui-carousel-track\" onScroll={onScroll} aria-live=\"polite\">\n {pages.map((child, i) => {\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 const active = i === page\n const attrs = part(`page`, active && `selected`) as Record<string, string>\n if (!active) delete attrs[`data-xui-id`]\n return (\n <div key={child.id} {...attrs} role=\"group\" aria-roledescription={ctx.t(`slide`)} aria-label={ctx.t(`pageOf`, { page: i + 1, total: pages.length })} aria-hidden={active ? undefined : true} data-xui-inactive={active ? undefined : ``} {...(active ? {} : INERT)}>\n <NodeView node={child} />\n </div>\n )\n })}\n </div>\n {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.loop) && page === 0} onClick={() => go(page - 1)}>\n <BuiltinIcon slot=\"Carousel.previous\" />\n </button>\n {props.indicators !== false ? (\n <div {...(part(`indicator`) as Record<string, string>)} className=\"xui-carousel-dots\" data-xui-part=\"Carousel/indicators\" role=\"tablist\">\n {pages.map((child, i) => (\n <button key={child.id} type=\"button\" {...(part(`indicator`, i === page && `selected`) as Record<string, string>)} data-xui-id={undefined} role=\"tab\" aria-selected={i === page} aria-label={ctx.t(`pageOf`, { page: i + 1, total: pages.length })} onClick={() => go(i)} />\n ))}\n </div>\n ) : null}\n <button type=\"button\" {...withClass(part(`next`), `xui-carousel-nav`)} aria-label={ctx.t(`next`)} disabled={!bool(props.loop) && page === pages.length - 1} onClick={() => go(page + 1)}>\n <BuiltinIcon slot=\"Carousel.next\" />\n </button>\n </div>\n ) : null}\n </div>\n )\n}\n",
30
+ "// VAPP-87: Image, Video, AudioPlayer, Avatar, Carousel.\n\nimport { useEffect, useRef, useState } from \"react\"\nimport { useBoundState } from \"./bound\"\nimport { Avatar as AvatarPrimitive } from \"radix-ui\"\nimport { useSurfaceContext } from \"../context\"\nimport { CHROME, IconGlyph } from \"../icons\"\nimport type { NativeProps } from \"../node-view\"\nimport { NodeView, mergeStyle, withClass } from \"../node-view\"\nimport { MEDIA_ASPECT_RATIO, MEDIA_INTRINSIC_WIDTH } from \"@exponential_app/eui\"\nimport { mediaClock } from \"@exponential_app/eui/web\"\n\n/** The media box's intrinsic width (catalog/layout.json\n * `mediaIntrinsicWidth`: max-content 320, min-content 0 — a compressible\n * replaced element with `max-width: 100%`), so the box never waits for the\n * picture or the browser's 300×150 video default. */\nfunction MediaSizer() {\n return <svg className=\"xui-media-sizer\" aria-hidden=\"true\" width={MEDIA_INTRINSIC_WIDTH} height={1} />\n}\nimport { bool, BuiltinIcon, num, str, useParts } from \"./shared\"\nimport { useMediaSource, useMediaSrc } from \"../media\"\n\n/** `inert` on an inactive page (React 19, the peer range, takes a boolean). */\nconst INERT: Record<string, unknown> = { inert: true }\n\n/** Image (contract §3): `loading` lazy|eager, `focalX/focalY` (0..1, the\n * point kept when the picture is cropped → `object-position`), and the\n * `fallback` icon (default `builtinIcons[\"Image.fallback\"]`) on error or\n * without a src; `data-state` = loading | loaded | error | empty. */\nexport function ImageNative({ node, props, rootProps }: NativeProps) {\n const ctx = useSurfaceContext()\n const part = useParts(node, props)\n const src = str(props.src)\n const alt = str(props.alt)\n const fit = str(props.fit, `cover`)\n const [state, setState] = useState<`loading` | `loaded` | `error`>(`loading`)\n useEffect(() => setState(`loading`), [src])\n const style: Record<string, string | number> = {}\n if (props.width !== undefined) style.width = num(props.width)\n if (props.height !== undefined) style.height = num(props.height)\n // Round 2 §7: `aspectRatio`, else 16:9 without a height (the box never\n // waits for the picture: the img is laid over it).\n if (props.aspectRatio !== undefined) style.aspectRatio = String(num(props.aspectRatio))\n else if (props.height === undefined) style.aspectRatio = String(MEDIA_ASPECT_RATIO)\n const objectFit = fit === `scaleDown` ? `scale-down` : fit\n const fx = Math.max(0, Math.min(1, num(props.focalX, 0.5)))\n const fy = Math.max(0, Math.min(1, num(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 = useMediaSource(ctx.host, src)\n const url = media.url\n const shown = media.error ? `error` : state\n const failed = !src || shown === `error`\n const fallback = str(props.fallback)\n return (\n <div {...(rootProps as Record<string, unknown>)} style={mergeStyle(rootProps, Object.keys(style).length ? style : undefined)} role={failed ? `img` : undefined} aria-label={failed ? alt : undefined} data-state={src ? shown : `empty`}>\n {src && url && shown !== `error` ? (\n <img\n src={url}\n alt={alt}\n loading={props.loading === `eager` ? `eager` : `lazy`}\n decoding=\"async\"\n style={{ objectFit: objectFit as never, objectPosition: `${fx * 100}% ${fy * 100}%` }}\n onLoad={() => setState(`loaded`)}\n onError={() => setState(`error`)}\n />\n ) : null}\n <MediaSizer />\n {failed ? (\n <div {...(part(`fallback`) as Record<string, string>)} aria-hidden=\"true\">\n {fallback ? <IconGlyph icons={ctx.host.icons} name={fallback} /> : <BuiltinIcon slot=\"Image.fallback\" />}\n </div>\n ) : null}\n </div>\n )\n}\n\n/** Video (×4 since EXP-1556): the poster (or a dark tint) with the round\n * play button and the `durationMs` clock, as desktop, iOS and Android draw\n * it; the press (or `autoplay`) swaps in the browser's player with its\n * controls, playing. */\nexport function VideoNative({ node, props, rootProps }: NativeProps) {\n const ctx = useSurfaceContext()\n const part = useParts(node, props)\n const src = str(props.src)\n const poster = str(props.poster)\n const autoplay = bool(props.autoplay)\n const [started, setStarted] = useState(false)\n // The video streams (no byte caps); its poster is an image (the limits hold).\n const url = useMediaSrc(ctx.host, src, `stream`)\n const posterUrl = useMediaSrc(ctx.host, poster)\n // Round 2 §7: height = width / `aspectRatio` (default 16:9), never the\n // browser's 300×150.\n const ratio = num(props.aspectRatio, MEDIA_ASPECT_RATIO) || MEDIA_ASPECT_RATIO\n const durationMs = props.durationMs !== undefined ? num(props.durationMs) : undefined\n const Play = CHROME.play\n return (\n <div {...(rootProps as Record<string, unknown>)} style={mergeStyle(rootProps, { aspectRatio: String(ratio) })}>\n <MediaSizer />\n {started || autoplay ? (\n <video {...(part(`controls`) as Record<string, string>)} src={url} poster={posterUrl} controls autoPlay muted={autoplay && !started} playsInline preload=\"metadata\" data-duration-ms={durationMs} />\n ) : (\n <>\n {posterUrl ? <img className=\"xui-video-poster\" src={posterUrl} alt=\"\" aria-hidden=\"true\" decoding=\"async\" draggable={false} /> : null}\n <button type=\"button\" className=\"xui-media-play\" data-size=\"lg\" aria-label={ctx.t(`play`)} disabled={!url} onClick={() => setStarted(true)}>\n <Play aria-hidden=\"true\" />\n </button>\n {durationMs !== undefined ? <span className=\"xui-video-duration\">{mediaClock(durationMs)}</span> : null}\n </>\n )}\n </div>\n )\n}\n\n/** AudioPlayer (×4 since EXP-1556): the title over a bar of the round\n * play/pause button, the progress track and `position / duration`, as\n * desktop, iOS and Android draw it; a hidden `<audio>` plays. */\nexport function AudioPlayerNative({ node, props, rootProps }: NativeProps) {\n const ctx = useSurfaceContext()\n const part = useParts(node, props)\n const src = str(props.src)\n const title = str(props.title)\n const url = useMediaSrc(ctx.host, src, `stream`)\n const audio = useRef<HTMLAudioElement>(null)\n const [playing, setPlaying] = useState(false)\n const [position, setPosition] = useState(0)\n const [loadedMs, setLoadedMs] = useState<number | null>(null)\n const durationMs = props.durationMs !== undefined ? num(props.durationMs) : (loadedMs ?? 0)\n const Glyph = playing ? CHROME.pause : CHROME.play\n const toggle = () => {\n const el = audio.current\n if (!el) return\n if (el.paused) void el.play()?.catch(() => setPlaying(false))\n else el.pause()\n }\n return (\n <div {...(rootProps as Record<string, unknown>)} style={mergeStyle(rootProps, { flexDirection: `column`, gap: `var(--xui-spacing-xs)` })}>\n {title ? <span {...(part(`track`) as Record<string, string>)}>{title}</span> : null}\n <div {...(part(`controls`) as Record<string, string>)} data-duration-ms={props.durationMs !== undefined ? num(props.durationMs) : undefined}>\n <button type=\"button\" className=\"xui-media-play\" data-size=\"sm\" aria-label={ctx.t(playing ? `pause` : `play`)} disabled={!url} onClick={toggle}>\n <Glyph aria-hidden=\"true\" />\n </button>\n <span className=\"xui-audio-progress\" aria-hidden=\"true\">\n <span style={{ width: `${durationMs > 0 ? Math.min(100, (position / durationMs) * 100) : 0}%` }} />\n </span>\n <span className=\"xui-audio-clock\">{`${mediaClock(position)} / ${mediaClock(durationMs)}`}</span>\n </div>\n <audio\n ref={audio}\n src={url}\n preload=\"metadata\"\n aria-label={title || undefined}\n onPlay={() => setPlaying(true)}\n onPause={() => setPlaying(false)}\n onEnded={() => setPlaying(false)}\n onTimeUpdate={(e) => setPosition(e.currentTarget.currentTime * 1000)}\n onLoadedMetadata={(e) => setLoadedMs(Number.isFinite(e.currentTarget.duration) ? e.currentTarget.duration * 1000 : null)}\n />\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 (the app's avatar palette is host-side; the SDK\n * tints with one hue so 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({ node, props, rootProps }: NativeProps) {\n const ctx = useSurfaceContext()\n const part = useParts(node, props)\n const name = str(props.name)\n const src = str(props.src)\n const seed = str(props.seed) || name\n const hue = seed ? seedHue(seed) : null\n const url = useMediaSrc(ctx.host, src)\n const tint = hue === null ? undefined : { backgroundColor: `color-mix(in oklab, hsl(${hue} 70% 55%) 22%, transparent)`, color: `hsl(${hue} 60% ${ctx.mode === `dark` ? 72 : 38}%)` }\n return (\n <AvatarPrimitive.Root {...(rootProps as Record<string, unknown>)} aria-label={name || undefined} role=\"img\">\n {src ? <AvatarPrimitive.Image {...(part(`image`) as Record<string, string>)} src={url} alt={name} /> : null}\n {/* No picture to wait for: the initials paint with the first frame\n (Radix holds a 0 ms delay one timer tick; Solid paints at once). */}\n <AvatarPrimitive.Fallback {...(part(`fallback`) as Record<string, string>)} delayMs={src ? 300 : undefined} style={tint}>\n {initials(name) || `?`}\n </AvatarPrimitive.Fallback>\n </AvatarPrimitive.Root>\n )\n}\n\n/** One thumbnail of the strip (round 6 §3): a button over its picture\n * (through the host's media request); EXP-1556: the muted square shows the\n * Image placeholder glyph until the picture paints over it (none, loading\n * or failed), never the browser's broken-image icon. */\nfunction CarouselThumbnail({ attrs, src, current, label, onPress }: { attrs: Record<string, unknown>; src: string; current: boolean; label: string; onPress: () => void }) {\n const ctx = useSurfaceContext()\n const url = useMediaSrc(ctx.host, src)\n const [broken, setBroken] = useState<string | null>(null)\n return (\n <button type=\"button\" {...(attrs as Record<string, string>)} aria-label={label} aria-current={current ? `true` : undefined} data-current={current ? `true` : undefined} onClick={onPress}>\n <span className=\"xui-carousel-thumb-fallback\" aria-hidden=\"true\">\n <BuiltinIcon slot=\"Image.fallback\" />\n </span>\n {src && url && broken !== url ? <img className=\"xui-carousel-thumb\" src={url} alt=\"\" aria-hidden=\"true\" loading=\"lazy\" decoding=\"async\" draggable={false} onError={() => setBroken(url)} /> : null}\n </button>\n )\n}\n\nexport function CarouselNative({ node, props, rootProps, emit, scope }: NativeProps) {\n const ctx = useSurfaceContext()\n const part = useParts(node, props)\n const track = useRef<HTMLDivElement>(null)\n const pages = node.children\n const [page, setPage] = useBoundState(node, scope, `page`, num(props.page, 0))\n const scrollTo = (i: number) => {\n const el = track.current\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 const external = num(props.page, 0)\n useEffect(() => scrollTo(external), [external])\n const onScroll = () => {\n const el = track.current\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 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.loop) ? ((next % n) + n) % n : Math.max(0, Math.min(n - 1, next))\n setPage(target)\n void emit(`change`, { page: target }, { page: target })\n scrollTo(target)\n }\n const many = pages.length > 1\n // EXP-1495 (round 6 §3): the counter pill and the thumbnail strip, both\n // only with two or more pages.\n const counter = many && bool(props.counter)\n const thumbnails = many && Array.isArray(props.thumbnails) ? (props.thumbnails as unknown[]) : null\n const strip = useRef<HTMLDivElement>(null)\n useEffect(() => {\n // The current thumbnail scrolled into view (the strip only: never the\n // page around it).\n const el = strip.current\n const thumb = el?.children[page] as HTMLElement | undefined\n if (!el || !thumb) return\n const a = el.getBoundingClientRect()\n const b = thumb.getBoundingClientRect()\n const delta = b.left < a.left ? b.left - a.left : b.right > a.right ? b.right - a.right : 0\n if (delta !== 0) el.scrollLeft += delta\n }, [page, thumbnails !== null])\n const trackView = (\n <div ref={track} className=\"xui-carousel-track\" onScroll={onScroll} aria-live=\"polite\">\n {pages.map((child, i) => {\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 const active = i === page\n const attrs = part(`page`, active && `selected`) as Record<string, string>\n if (!active) delete attrs[`data-xui-id`]\n return (\n <div key={child.id} {...attrs} role=\"group\" aria-roledescription={ctx.t(`slide`)} aria-label={ctx.t(`pageOf`, { page: i + 1, total: pages.length })} aria-hidden={active ? undefined : true} data-xui-inactive={active ? undefined : ``} {...(active ? {} : INERT)}>\n <NodeView node={child} />\n </div>\n )\n })}\n </div>\n )\n return (\n <div\n {...(rootProps as Record<string, unknown>)}\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 {counter ? (\n <div className=\"xui-carousel-stage\">\n {trackView}\n <span {...(part(`counter`) as Record<string, string>)} aria-hidden=\"true\">\n {ctx.t(`pageCounter`, { page: page + 1, total: pages.length })}\n </span>\n </div>\n ) : (\n trackView\n )}\n {thumbnails ? (\n <div ref={strip} {...(part(`thumbnails`) as Record<string, string>)}>\n {pages.map((child, i) => (\n <CarouselThumbnail key={child.id} attrs={part.at(`thumbnail`, i, i === page && `selected`)} src={typeof thumbnails[i] === `string` ? (thumbnails[i] as string) : ``} current={i === page} label={ctx.t(`pageOf`, { page: i + 1, total: pages.length })} onPress={() => go(i)} />\n ))}\n </div>\n ) : null}\n {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.loop) && page === 0} onClick={() => go(page - 1)}>\n <BuiltinIcon slot=\"Carousel.previous\" />\n </button>\n {props.indicators !== false ? (\n <div {...(part(`indicator`) as Record<string, string>)} className=\"xui-carousel-dots\" data-xui-part=\"Carousel/indicators\" role=\"tablist\">\n {pages.map((child, i) => (\n <button key={child.id} type=\"button\" {...(part(`indicator`, i === page && `selected`) as Record<string, string>)} data-xui-id={undefined} role=\"tab\" aria-selected={i === page} aria-label={ctx.t(`pageOf`, { page: i + 1, total: pages.length })} onClick={() => go(i)} />\n ))}\n </div>\n ) : null}\n <button type=\"button\" {...withClass(part(`next`), `xui-carousel-nav`)} aria-label={ctx.t(`next`)} disabled={!bool(props.loop) && page === pages.length - 1} onClick={() => go(page + 1)}>\n <BuiltinIcon slot=\"Carousel.next\" />\n </button>\n </div>\n ) : null}\n </div>\n )\n}\n",
30
31
  "// VAPP-87 + round 1 + round 3: Tabs, Segmented (was ToggleGroup), Accordion — Radix behaviour (roving\n// tab stop, arrows wrap, Home/End: a11y.json), recipe paint, a bound\n// `value` written through (multiple = comma-joined when it came as a\n// string, an array when it came as one).\n\nimport { Fragment, useRef, useState, type ReactNode } from \"react\"\nimport { useBoundState } from \"./bound\"\nimport { Accordion as AccordionPrimitive, Tabs as TabsPrimitive, ToggleGroup as ToggleGroupPrimitive } from \"radix-ui\"\nimport { useSurfaceContext } from \"../context\"\nimport { IconGlyph } from \"../icons\"\nimport type { NativeProps } from \"../node-view\"\nimport { NodeView } from \"../node-view\"\nimport { bool, BuiltinIcon, num, str, useParts, type PartFn, objects } from \"./shared\"\nimport { segmentedBadge } from \"@exponential_app/eui/web\"\n\ninterface Tab {\n label: string\n value: string\n icon?: string\n count?: number\n}\n\nexport function TabsNative({ node, props, rootProps, emit, scope }: NativeProps) {\n const ctx = useSurfaceContext()\n const part = useParts(node, props)\n const tabs = objects<Tab>(props.tabs)\n const external = str(props.value) || tabs[0]?.value || ``\n const [value, setValue] = useBoundState(node, scope, `value`, external)\n const fill = bool(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.closable === `hover` || props.closable === `always`\n const [lent, setLent] = useState<{ 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.closable === `hover`\n return (\n <TabsPrimitive.Root\n {...(rootProps as Record<string, unknown>)}\n value={value}\n onValueChange={(next) => {\n setValue(next)\n void emit(`change`, { value: next }, { value: next })\n }}\n orientation=\"horizontal\"\n activationMode=\"automatic\"\n dir={ctx.direction}\n >\n <TabsPrimitive.List {...(part(`list`) as Record<string, string>)} data-fill={fill ? `true` : undefined} loop>\n {tabs.map((tab, i) => {\n const selected = tab.value === value\n const trigger = (\n <TabsPrimitive.Trigger\n key={tab.value}\n value={tab.value}\n {...(part.at(`tab`, i, selected && `selected`) as Record<string, string>)}\n onPointerEnter={lending ? () => lend(i, `hover`) : undefined}\n onPointerLeave={lending ? () => lend(i, null) : undefined}\n onFocus={lending ? (e) => (e.currentTarget.matches(`:focus-visible`) ? lend(i, `focus`) : undefined) : undefined}\n onBlur={lending ? () => lend(i, null) : undefined}\n >\n <span className=\"xui-Tabs-tab-body\">\n {tab.icon ? <IconGlyph icons={ctx.host.icons} name={tab.icon} className=\"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`) as Record<string, string>)} aria-hidden=\"true\" />\n </TabsPrimitive.Trigger>\n )\n if (!closable) return trigger\n return (\n <Fragment key={tab.value}>\n {trigger}\n <button\n type=\"button\"\n {...(part.at(`close`, i, lent?.index === i && lent.state) as Record<string, string>)}\n aria-label={ctx.t(`closeTab`, { name: str(tab.label) })}\n onPointerEnter={lending ? () => lend(i, `hover`) : undefined}\n onPointerLeave={lending ? () => lend(i, null) : undefined}\n onClick={() => void emit(`close`, { value: tab.value })}\n >\n <BuiltinIcon slot=\"Tabs.close\" />\n </button>\n </Fragment>\n )\n })}\n {bool(props.addable) ? (\n <button type=\"button\" {...(part(`new`) as Record<string, string>)} aria-label={ctx.t(`newTab`)} onClick={() => void emit(`new`)}>\n <BuiltinIcon slot=\"Tabs.new\" />\n </button>\n ) : null}\n </TabsPrimitive.List>\n {tabs.map((tab, i) => {\n // Only the ACTIVE panel is placed (`<id>.content`); the others are hidden.\n const attrs = part(`content`) as Record<string, string>\n if (tab.value !== value) delete attrs[`data-xui-id`]\n return (\n <TabsPrimitive.Content key={tab.value} value={tab.value} {...attrs}>\n {node.children[i] ? <NodeView node={node.children[i]} /> : null}\n </TabsPrimitive.Content>\n )\n })}\n </TabsPrimitive.Root>\n )\n}\n\ninterface Item {\n label: string\n value: string\n icon?: string\n disabled?: boolean\n /** VAPP-162: a `bar` item's count badge. */\n count?: number\n}\n\nconst joinLike = (raw: unknown, next: string[]): string | string[] => (Array.isArray(raw) ? next : next.join(`,`))\n\n/** Segmented (round 3): ONE row of segments.\n * `segmented` (default, the pill track) / `toggles` (bare) / `outline`\n * (joined) = a Radix ToggleGroup (radiogroup single, toolbar of toggle\n * buttons multiple; roving tab stop, arrows wrap, Home/End). `bar` = the\n * full-width bottom destinations: role navigation, each item a column\n * 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).\n * VAPP-162 (round-5 contract §3): `orientation: vertical` stacks every\n * variant top to bottom (ArrowUp/ArrowDown move focus); a vertical `bar`\n * is THE navigation rail (72 px items). A `bar` item's `count` paints the\n * `badge` at its icon's top-end corner (`99+` above 99, none at 0) and\n * reads after the label (`Chats, 3`). */\nexport function SegmentedNative({ node, props, rootProps, emit, scope }: NativeProps) {\n const ctx = useSurfaceContext()\n const part = useParts(node, props)\n const items = objects<Item>(props.items)\n const variant = str(props.variant, `segmented`)\n const bar = variant === `bar`\n const vertical = props.orientation === `vertical`\n const multiple = !bar && props.type === `multiple`\n const externalRaw = props.value\n const external = multiple ? (Array.isArray(externalRaw) ? externalRaw.map(String) : externalRaw ? String(externalRaw).split(`,`) : []) : str(externalRaw)\n const [value, setBound] = useBoundState<string | string[]>(node, scope, `value`, external)\n const setValue = (next: string | string[]) => setBound(Array.isArray(next) ? (joinLike(externalRaw, next) as string[]) : next)\n const isSelected = (item: Item) => (multiple ? asArray(value).includes(item.value) : value === item.value)\n const content = (item: Item, selected: boolean) => {\n const badge = bar ? segmentedBadge(item.count) : null\n return (\n <>\n {item.icon ? (\n <span {...(part(`icon`, selected && `selected`) as Record<string, string>)} aria-hidden=\"true\">\n <IconGlyph icons={ctx.host.icons} name={item.icon} className=\"xui-icon\" width={bar ? 20 : 16} height={bar ? 20 : 16} />\n {badge ? <span {...(part(`badge`, selected && `selected`) as Record<string, string>)}>{badge}</span> : null}\n </span>\n ) : null}\n {item.label ? <span {...(part(`label`, selected && `selected`) as Record<string, string>)}>{str(item.label)}</span> : null}\n </>\n )\n }\n if (bar) return <SegmentedBar node={node} rootProps={rootProps} vertical={vertical} items={items} value={value as string} part={part} content={content} onPick={(next) => {\n setValue(next)\n void emit(`change`, { value: next }, { value: next })\n }} />\n const body = items.map((item) => {\n const selected = isSelected(item)\n return (\n <ToggleGroupPrimitive.Item key={item.value} value={item.value} disabled={bool(item.disabled)} aria-label={item.label ? undefined : item.value} {...(part(`item`, selected && `selected`, bool(item.disabled) && `disabled`) as Record<string, string>)}>\n {content(item, selected)}\n </ToggleGroupPrimitive.Item>\n )\n })\n if (multiple) {\n return (\n <ToggleGroupPrimitive.Root\n {...(rootProps as Record<string, unknown>)}\n type=\"multiple\"\n value={Array.isArray(value) ? value : asArray(value)}\n loop\n orientation={vertical ? `vertical` : undefined}\n onValueChange={(next: string[]) => {\n setValue(next)\n void emit(`change`, { value: joinLike(externalRaw, next) }, { value: joinLike(externalRaw, next) })\n }}\n dir={ctx.direction}\n >\n {body}\n </ToggleGroupPrimitive.Root>\n )\n }\n return (\n <ToggleGroupPrimitive.Root\n {...(rootProps as Record<string, unknown>)}\n type=\"single\"\n value={value as string}\n loop\n orientation={vertical ? `vertical` : undefined}\n onValueChange={(next: string) => {\n if (!next) return\n setValue(next)\n void emit(`change`, { value: next }, { value: next })\n }}\n dir={ctx.direction}\n >\n {body}\n </ToggleGroupPrimitive.Root>\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({ rootProps, vertical, items, value, part, content, onPick }: { node: NativeProps[`node`]; rootProps: NativeProps[`rootProps`]; vertical: boolean; items: Item[]; value: string; part: PartFn; content: (item: Item, selected: boolean) => ReactNode; onPick: (value: string) => void }) {\n const ctx = useSurfaceContext()\n const refs = useRef<(HTMLButtonElement | null)[]>([])\n const enabled = items.map((item, i) => (bool(item.disabled) ? -1 : i)).filter((i) => i >= 0)\n const selectedIndex = items.findIndex((item) => item.value === value && !bool(item.disabled))\n const [focusIndex, setFocusIndex] = useState<number | null>(null)\n const stop = focusIndex ?? (selectedIndex >= 0 ? selectedIndex : (enabled[0] ?? -1))\n const move = (from: number, key: string) => {\n if (!enabled.length) return\n const at = enabled.indexOf(from)\n const rtl = ctx.direction === `rtl`\n const forward = key === `ArrowDown` || (!vertical && key === (rtl ? `ArrowLeft` : `ArrowRight`))\n const back = key === `ArrowUp` || (!vertical && key === (rtl ? `ArrowRight` : `ArrowLeft`))\n let next: number | null = null\n if (forward) next = enabled[(at + 1) % enabled.length]\n else if (back) next = enabled[(at - 1 + enabled.length) % enabled.length]\n else if (key === `Home`) next = enabled[0]\n else if (key === `End`) next = enabled[enabled.length - 1]\n if (next === null || next === undefined) return false\n setFocusIndex(next)\n refs.current[next]?.focus()\n return true\n }\n return (\n <nav {...(rootProps as Record<string, unknown>)} dir={ctx.direction}>\n {items.map((item, i) => {\n const selected = item.value === value\n const disabled = bool(item.disabled)\n return (\n <button\n key={item.value}\n ref={(el) => void (refs.current[i] = el)}\n type=\"button\"\n {...(part(`item`, selected && `selected`, disabled && `disabled`) as Record<string, string>)}\n disabled={disabled}\n tabIndex={i === stop ? 0 : -1}\n aria-current={selected ? `page` : undefined}\n aria-label={segmentedBadge(item.count) ? `${str(item.label) || item.value}, ${segmentedBadge(item.count)}` : item.label ? undefined : item.value}\n onFocus={() => setFocusIndex(i)}\n onKeyDown={(e) => {\n if (move(i, e.key)) e.preventDefault()\n }}\n onClick={() => onPick(item.value)}\n >\n {content(item, selected)}\n </button>\n )\n })}\n </nav>\n )\n}\n\ninterface AccordionItem {\n title: string\n value: string\n count?: number\n}\n\nexport function AccordionNative({ node, props, rootProps, emit, scope }: NativeProps) {\n const ctx = useSurfaceContext()\n const part = useParts(node, props)\n const items = objects<AccordionItem>(props.items)\n const multiple = props.type === `multiple`\n const raw = props.value\n const external = multiple ? (Array.isArray(raw) ? raw.map(String) : raw ? String(raw).split(`,`) : []) : str(raw)\n const [value, setBound] = useBoundState<string | string[]>(node, scope, `value`, external)\n const setValue = (next: string | string[]) => setBound(Array.isArray(next) ? (joinLike(raw, next) as string[]) : next)\n const body = items.map((item, i) => {\n const open = multiple ? asArray(value).includes(item.value) : value === item.value\n return (\n <AccordionPrimitive.Item key={item.value} value={item.value} {...(part.at(`item`, i, open && `open`) as Record<string, string>)}>\n <AccordionPrimitive.Header asChild>\n <div style={{ display: `flex` }}>\n <AccordionPrimitive.Trigger {...(part.at(`trigger`, i, open && `open`) as Record<string, string>)}>\n <span className=\"xui-accordion-title\">\n {str(item.title)}\n {/* Round 2 §7: the count is its own muted part after the title. */}\n {item.count !== undefined ? <span {...(part.at(`count`, i) as Record<string, string>)}>{ctx.formatter.number(num(item.count))}</span> : null}\n </span>\n <BuiltinIcon slot=\"Accordion.trigger\" size={16} />\n </AccordionPrimitive.Trigger>\n </div>\n </AccordionPrimitive.Header>\n <AccordionPrimitive.Content {...(part.at(`content`, i, open && `open`) as Record<string, string>)}>{node.children[i] ? <NodeView node={node.children[i]} /> : null}</AccordionPrimitive.Content>\n </AccordionPrimitive.Item>\n )\n })\n if (multiple) {\n return (\n <AccordionPrimitive.Root\n {...(rootProps as Record<string, unknown>)}\n type=\"multiple\"\n value={asArray(value)}\n dir={ctx.direction}\n onValueChange={(next: string[]) => {\n setValue(next)\n void emit(`change`, { value: joinLike(raw, next) }, { value: joinLike(raw, next) })\n }}\n >\n {body}\n </AccordionPrimitive.Root>\n )\n }\n return (\n <AccordionPrimitive.Root\n {...(rootProps as Record<string, unknown>)}\n type=\"single\"\n collapsible\n dir={ctx.direction}\n value={value as string}\n onValueChange={(next: string) => {\n setValue(next)\n void emit(`change`, { value: next }, { value: next })\n }}\n >\n {body}\n </AccordionPrimitive.Root>\n )\n}\n\nconst asArray = (v: string | string[]): string[] => (Array.isArray(v) ? v : v ? v.split(`,`) : [])\n",
31
- "// VAPP-87 + round 1: the OVERLAYS — Dialog, Drawer, Popover, Tooltip,\n// Menu (press | contextmenu) on Radix portals, 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. The placement contract the core mirrors: side +\n// centre alignment, `OVERLAY_OFFSET` from the anchor, flip when the\n// preferred side lacks room, shift to stay `OVERLAY_PADDING` inside the\n// viewport (`placeOverlay`, fixtures/overlay-geometry.json). Enter/exit\n// animate on the theme's motion tokens (base-css.ts; zero under reduced\n// motion). A trigger slot is wrapped in an inline-flex span so Radix\n// measures the slot's own box and the slot's painter keeps its element.\n\nimport { forwardRef, useCallback, useEffect, useRef, useState, type HTMLAttributes, type PointerEvent as ReactPointerEvent, type ReactNode } from \"react\"\nimport { createPortal } from \"react-dom\"\nimport { ContextMenu as ContextPrimitive, Dialog as DialogPrimitive, DropdownMenu as MenuPrimitive, Popover as PopoverPrimitive, Tooltip as TooltipPrimitive } from \"radix-ui\"\nimport { OVERLAY_OFFSET, OVERLAY_PADDING } from \"@exponential_app/eui\"\nimport { useSurfaceContext } from \"../context\"\nimport { isBinding } from \"@exponential_app/eui/web\"\nimport { absolutePath } from \"@exponential_app/eui/web\"\nimport { IconGlyph } from \"../icons\"\nimport type { NativeProps } from \"../node-view\"\nimport { CloseOnSubmitContext } from \"../form\"\nimport { useBoundState } from \"./bound\"\nimport { bool, BuiltinIcon, num, str, useParts, type PartFn, objects } from \"./shared\"\nimport { SearchBody, searchMatches } from \"./search\"\n\n/** An overlay's `open`: local mirror, bound path written, `change {open}`. */\nfunction useOpenState(node: NativeProps[`node`], scope: string, external: boolean, emit: NativeProps[`emit`]) {\n const [open, setOpen] = useBoundState(node, scope, `open`, external)\n const change = useCallback(\n (next: boolean) => {\n setOpen(next)\n void emit(`change`, { open: next }, { open: next })\n },\n [setOpen, emit]\n )\n return [open, change] as const\n}\n\n/** The slot wrapper Radix anchors to and clicks through (forwardRef so the\n * popper can measure it; the rest of the props are Radix's). */\nconst Trigger = forwardRef<HTMLSpanElement, HTMLAttributes<HTMLSpanElement> & { children?: ReactNode }>(function Trigger({ children, ...rest }, ref) {\n return (\n <span ref={ref} className=\"xui-trigger\" {...rest}>\n {children}\n </span>\n )\n})\n\n/** Round 2 §7: an overlay is LAYOUT-TRANSPARENT — its frame is its\n * trigger's (the trigger is the flex item: a Link stretches in a stretch\n * row, a Button keeps its control height; the overlay never fills a column\n * or stretches a row on its own); without a trigger it lays out nothing. */\nfunction overlayRootProps(rootProps: Record<string, unknown>, trigger: NativeProps[`slots`][string] | undefined | null, 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\nexport function DialogNative(p: NativeProps) {\n return <ModalNative {...p} kind=\"Dialog\" />\n}\nexport function DrawerNative(p: NativeProps) {\n return <ModalNative {...p} kind=\"Drawer\" />\n}\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. */\nfunction useDragToDismiss(side: string, enabled: boolean, onDismiss: () => void, reducedMotion: boolean) {\n const panel = useRef<HTMLDivElement | null>(null)\n const drag = useRef<{ 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: ReactPointerEvent) => {\n const d = drag.current\n if (!d) return 0\n return Math.max(0, ((axis === `x` ? e.clientX - d.x : e.clientY - d.y) * sign))\n }\n const paint = (px: number, animate: boolean) => {\n const el = panel.current\n if (!el) return\n el.style.transition = animate && !reducedMotion ? `transform var(--xui-motion-standard) var(--xui-ease-decelerate)` : `none`\n el.style.transform = px ? `translate${axis === `x` ? `X` : `Y`}(${px * sign}px)` : ``\n }\n const handlers = enabled\n ? {\n onPointerDown: (e: ReactPointerEvent) => {\n if (e.button !== 0) return\n drag.current = { id: e.pointerId, x: e.clientX, y: e.clientY, at: performance.now() }\n ;(e.currentTarget as HTMLElement).setPointerCapture?.(e.pointerId)\n },\n onPointerMove: (e: ReactPointerEvent) => {\n if (drag.current?.id === e.pointerId) paint(distance(e), false)\n },\n onPointerUp: (e: ReactPointerEvent) => {\n if (drag.current?.id !== e.pointerId) return\n const px = distance(e)\n const dt = performance.now() - drag.current.at\n drag.current = 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 drag.current = null\n paint(0, true)\n },\n }\n : {}\n return { panel, handlers }\n}\n\nfunction ModalNative({ node, props, rootProps, emit, children, slots, scope, kind }: NativeProps & { kind: `Dialog` | `Drawer` }) {\n const ctx = useSurfaceContext()\n const part = useParts(node, props)\n const [open, setOpen] = useOpenState(node, scope, bool(props.open), emit)\n const dismissible = props.dismissible !== false\n const side = str(props.side, `bottom`)\n const title = str(props.title)\n const description = str(props.description)\n const drag = useDragToDismiss(side, kind === `Drawer` && props.dragToDismiss !== false && dismissible, () => setOpen(false), ctx.reducedMotion)\n const close = useCallback(() => setOpen(false), [setOpen])\n return (\n <DialogPrimitive.Root open={open} onOpenChange={(next) => (next || dismissible ? setOpen(next) : undefined)}>\n <div {...overlayRootProps(rootProps, slots.trigger, node.slots?.trigger)}>\n {slots.trigger ? (\n <DialogPrimitive.Trigger asChild>\n <Trigger>{slots.trigger}</Trigger>\n </DialogPrimitive.Trigger>\n ) : null}\n </div>\n <DialogPrimitive.Portal container={ctx.portal ?? undefined}>\n <DialogPrimitive.Overlay {...(part(`overlay`, open && `open`) as Record<string, string>)} data-xui-overlay-backdrop={kind} />\n <DialogPrimitive.Content\n ref={drag.panel}\n {...(part(`content`, open && `open`) as Record<string, string>)}\n data-side={kind === `Drawer` ? side : undefined}\n data-xui-overlay={kind}\n dir={ctx.direction}\n role={kind === `Dialog` && !dismissible ? `alertdialog` : `dialog`}\n onEscapeKeyDown={dismissible ? undefined : (e) => e.preventDefault()}\n onPointerDownOutside={dismissible ? undefined : (e) => e.preventDefault()}\n onInteractOutside={dismissible ? undefined : (e) => e.preventDefault()}\n onOpenAutoFocus={(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 {...(description ? {} : { \"aria-describedby\": undefined })}\n >\n {kind === `Drawer` && (side === `bottom` || side === `top`) ? <div {...(part(`handle`) as Record<string, string>)} aria-hidden=\"true\" {...drag.handlers} /> : null}\n {title || description ? (\n <div className=\"xui-overlay-head\" {...(kind === `Drawer` ? drag.handlers : {})}>\n {title ? <DialogPrimitive.Title {...(part(`title`) as Record<string, string>)}>{title}</DialogPrimitive.Title> : <DialogPrimitive.Title className=\"xui-sr-only\">{ctx.t(`dialog`)}</DialogPrimitive.Title>}\n {description ? <DialogPrimitive.Description {...(part(`description`) as Record<string, string>)}>{description}</DialogPrimitive.Description> : null}\n </div>\n ) : (\n <DialogPrimitive.Title className=\"xui-sr-only\">{ctx.t(`dialog`)}</DialogPrimitive.Title>\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={dismissible ? close : null}>\n <div className=\"xui-overlay-body\">{children}</div>\n {slots.footer ? <div {...(part(`footer`) as Record<string, string>)}>{slots.footer}</div> : null}\n </CloseOnSubmitContext.Provider>\n {kind === `Dialog` && dismissible ? (\n <DialogPrimitive.Close {...(part(`close`) as Record<string, string>)} aria-label={ctx.t(`close`)}>\n <BuiltinIcon slot=\"Dialog.close\" />\n </DialogPrimitive.Close>\n ) : null}\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n </DialogPrimitive.Root>\n )\n}\n\nconst HOVER_OPEN_MS = 200\nconst HOVER_CLOSE_MS = 150\n\nexport function PopoverNative({ node, props, rootProps, emit, children, slots, scope }: NativeProps) {\n const ctx = useSurfaceContext()\n const part = useParts(node, props)\n const [open, setOpen] = useOpenState(node, scope, bool(props.open), emit)\n const side = str(props.side, `bottom`) as `top` | `right` | `bottom` | `left`\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.openOn === `hover` && ctx.hover\n const timer = useRef<ReturnType<typeof setTimeout> | null>(null)\n const openRef = useRef(open)\n openRef.current = open\n // THIS popover's content (focus moving from the trigger into it keeps it\n // open; another hover card's content on the page does not count).\n const contentRef = useRef<HTMLDivElement | null>(null)\n const schedule = (next: boolean) => {\n if (timer.current) clearTimeout(timer.current)\n timer.current = setTimeout(() => {\n if (openRef.current !== next) setOpen(next)\n }, next ? HOVER_OPEN_MS : HOVER_CLOSE_MS)\n }\n useEffect(() => () => void (timer.current && clearTimeout(timer.current)), [])\n const hoverProps = hoverMode\n ? {\n onPointerEnter: (e: ReactPointerEvent) => e.pointerType !== `touch` && schedule(true),\n onPointerLeave: (e: ReactPointerEvent) => e.pointerType !== `touch` && schedule(false),\n onFocus: () => schedule(true),\n onBlur: (e: React.FocusEvent) => {\n const to = e.relatedTarget as Node | null\n if (!to || !contentRef.current?.contains(to)) schedule(false)\n },\n }\n : {}\n return (\n <PopoverPrimitive.Root open={open} onOpenChange={setOpen}>\n <div {...overlayRootProps(rootProps, slots.trigger, node.slots?.trigger)}>\n {slots.trigger ? (\n <PopoverPrimitive.Trigger asChild>\n <Trigger {...hoverProps}>{slots.trigger}</Trigger>\n </PopoverPrimitive.Trigger>\n ) : (\n <PopoverPrimitive.Anchor asChild>\n <span style={{ display: `inline-flex` }} />\n </PopoverPrimitive.Anchor>\n )}\n </div>\n <PopoverPrimitive.Portal container={ctx.portal ?? undefined}>\n <PopoverPrimitive.Content\n ref={contentRef}\n {...(part(`content`, open && `open`) as Record<string, string>)}\n side={side}\n align=\"center\"\n sideOffset={OVERLAY_OFFSET}\n collisionPadding={OVERLAY_PADDING}\n data-xui-overlay=\"Popover\"\n data-open-on={hoverMode ? `hover` : undefined}\n dir={ctx.direction}\n onOpenAutoFocus={hoverMode ? (e) => e.preventDefault() : undefined}\n onPointerEnter={hoverMode ? () => schedule(true) : undefined}\n onPointerLeave={hoverMode ? () => schedule(false) : undefined}\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}>{children}</CloseOnSubmitContext.Provider>\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n )\n}\n\n/** Tooltip: shows on hover AND keyboard focus (a11y.json), Escape hides. */\nexport function TooltipNative({ node, props, rootProps, children }: NativeProps) {\n const ctx = useSurfaceContext()\n const part = useParts(node, props)\n const side = str(props.side, `top`) as `top` | `right` | `bottom` | `left`\n const content = str(props.content) || str(props.text)\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 <TooltipPrimitive.Provider delayDuration={300}>\n <TooltipPrimitive.Root>\n <div {...(rootProps as Record<string, unknown>)} data-xui-overlay-root=\"\">\n <TooltipPrimitive.Trigger asChild>\n <div {...(part(`anchor`) as Record<string, string>)} tabIndex={0}>\n {children}\n </div>\n </TooltipPrimitive.Trigger>\n </div>\n <TooltipPrimitive.Portal container={ctx.portal ?? undefined}>\n <TooltipPrimitive.Content {...(part(`content`) as Record<string, string>)} side={side} sideOffset={OVERLAY_OFFSET} collisionPadding={OVERLAY_PADDING} data-xui-overlay=\"Tooltip\">\n {content}\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n </TooltipPrimitive.Root>\n </TooltipPrimitive.Provider>\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\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. */\nfunction MenuSearch({ item, i, part, emit, close }: { item: MenuItem; i: string; part: PartFn; emit: NativeProps[`emit`]; close: () => void }) {\n const ctx = useSurfaceContext()\n const [query, setQuery] = useState(``)\n const box = useRef<HTMLDivElement | null>(null)\n // The field takes the focus once Radix has focused the opened content.\n useEffect(() => {\n const frame = requestAnimationFrame(() => box.current?.querySelector<HTMLInputElement>(`input`)?.focus({ preventScroll: true }))\n return () => cancelAnimationFrame(frame)\n }, [])\n const rows = objects<MenuItem>(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) } }))\n return (\n <div\n ref={box}\n className=\"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={part}\n owner=\"Menu\"\n suffix={`.${i}`}\n rows={rows}\n query={query}\n onQuery={setQuery}\n placeholder={str(item.placeholder) || ctx.t(`search`)}\n emptyText={ctx.t(`noResults`)}\n maxRows={8}\n showCount\n autoFocus\n leaveBubbles\n onPick={(picked) => {\n void emit(`select`, { value: picked.value })\n close()\n }}\n rowPart={(_, __, active) => part(`item`, active && `selected`) as Record<string, string>}\n renderRow={(row) => (\n <>\n {row.icon ? <IconGlyph icons={ctx.host.icons} name={row.icon} /> : null}\n <span className=\"xui-menu-label\">{row.label}</span>\n </>\n )}\n />\n </div>\n )\n}\n\ntype MenuNs = typeof MenuPrimitive | typeof ContextPrimitive\n\n/** The entries, shared by both openings. A submenu's `items` may be a\n * binding (`{path}` to rows a host source feeds): the bind pass resolved it\n * already, so it renders like a literal one. */\nfunction MenuItems({ ns, items, rawItems, part, overlay, emit, scope, path, close }: { ns: MenuNs; items: MenuItem[]; rawItems: unknown; part: PartFn; overlay: string; emit: NativeProps[`emit`]; scope: string; path: string; close: () => void }) {\n const ctx = useSurfaceContext()\n const raws = objects<Record<string, unknown>>(rawItems)\n const N = ns as typeof MenuPrimitive\n return (\n <>\n {items.map((item, i) => {\n const kind = item.separator ? `separator` : (item.kind ?? `item`)\n const key = `${path}${i}`\n const icon = item.icon ? <IconGlyph icons={ctx.host.icons} name={item.icon} /> : null\n const shortcut = item.shortcut ? <span {...(part(`shortcut`) as Record<string, string>)}>{item.shortcut}</span> : null\n if (kind === `separator`) return <N.Separator key={key} {...(part(`separator`) as Record<string, string>)} />\n if (kind === `label`) return <N.Label key={key} {...(part(`label`) as Record<string, string>)}>{str(item.label)}</N.Label>\n if (kind === `submenu`) {\n return (\n <N.Sub key={key}>\n <N.SubTrigger {...(part(`item`, bool(item.disabled) && `disabled`) as Record<string, string>)} disabled={bool(item.disabled)}>\n {icon}\n <span className=\"xui-menu-label\">{str(item.label)}</span>\n <span {...(part(`submenuIndicator`) as Record<string, string>)}>\n <BuiltinIcon slot=\"Menu.submenuIndicator\" />\n </span>\n </N.SubTrigger>\n <N.Portal container={ctx.portal ?? undefined}>\n <N.SubContent\n {...(part(`content`) as Record<string, string>)}\n sideOffset={2}\n collisionPadding={OVERLAY_PADDING}\n data-xui-overlay={`${overlay}.sub`}\n data-searchable={item.searchable ? `true` : undefined}\n >\n {item.searchable ? (\n <MenuSearch item={item} i={key} part={part} emit={emit} close={close} />\n ) : (\n <MenuItems ns={ns} items={objects<MenuItem>(item.items)} rawItems={raws[i]?.items} part={part} overlay={overlay} emit={emit} scope={scope} path={`${key}.`} close={close} />\n )}\n </N.SubContent>\n </N.Portal>\n </N.Sub>\n )\n }\n if (kind === `checkbox`) {\n const raw = raws[i]?.checked\n return (\n <N.CheckboxItem\n key={key}\n {...(part(`item`, bool(item.disabled) && `disabled`, bool(item.checked) && `checked`) as Record<string, string>)}\n checked={bool(item.checked)}\n disabled={bool(item.disabled)}\n onCheckedChange={(next) => {\n const checked = next === true\n if (isBinding(raw)) ctx.setData(absolutePath(raw.path, scope), checked)\n void emit(`select`, { value: item.value ?? item.label, checked })\n }}\n onSelect={(e) => e.preventDefault()}\n >\n <span {...(part(`check`) as Record<string, string>)}>\n <N.ItemIndicator>\n <BuiltinIcon slot=\"Menu.check\" />\n </N.ItemIndicator>\n </span>\n <span className=\"xui-menu-label\">{str(item.label)}</span>\n {shortcut}\n </N.CheckboxItem>\n )\n }\n return (\n <N.Item key={key} {...(part(`item`, bool(item.disabled) && `disabled`) as Record<string, string>)} disabled={bool(item.disabled)} data-destructive={item.destructive ? `true` : undefined} onSelect={() => void emit(`select`, { value: item.value ?? item.label })}>\n {icon}\n <span className=\"xui-menu-label\">{str(item.label)}</span>\n {shortcut}\n </N.Item>\n )\n })}\n </>\n )\n}\n\n/** Menu: `openOn: press` (default) = a Radix DropdownMenu, its ONE child the\n * trigger (no child = the default outline Button from label/icon, no\n * chevron), anchored bottom-start; `openOn: contextmenu` = a Radix\n * ContextMenu over the child (right-click / long-press / Shift+F10 / the\n * Menu key), opened at the pointer (the child's corner from the keyboard). */\nexport function MenuNative(p: NativeProps) {\n return p.props.openOn === `contextmenu` ? <ContextMenuOpening {...p} /> : <PressMenuOpening {...p} />\n}\n\nfunction PressMenuOpening({ node, props, rootProps, emit, children, scope }: NativeProps) {\n const ctx = useSurfaceContext()\n const part = useParts(node, props)\n const items = objects<MenuItem>(props.items)\n const label = str(props.label)\n const icon = str(props.icon)\n const [open, setOpen] = useState(false)\n const child = node.children[0] ?? null\n return (\n <MenuPrimitive.Root open={open} onOpenChange={setOpen} dir={ctx.direction}>\n <div {...overlayRootProps(rootProps, true, child)}>\n <MenuPrimitive.Trigger asChild>\n {child ? (\n <Trigger>{children}</Trigger>\n ) : (\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 type=\"button\" {...(part(`trigger`, open && `open`) as Record<string, string>)} aria-label={label || ctx.t(`menu`)}>\n {icon ? <IconGlyph icons={ctx.host.icons} name={icon} className=\"xui-icon\" width={16} height={16} /> : null}\n {label || !icon ? <span>{label || ctx.t(`menu`)}</span> : null}\n </button>\n )}\n </MenuPrimitive.Trigger>\n </div>\n <MenuPrimitive.Portal container={ctx.portal ?? undefined}>\n <MenuPrimitive.Content {...(part(`content`, open && `open`) as Record<string, string>)} align=\"start\" sideOffset={OVERLAY_OFFSET} collisionPadding={OVERLAY_PADDING} data-xui-overlay=\"Menu\" data-open-on=\"press\">\n <MenuItems ns={MenuPrimitive} items={items} rawItems={node.props.items} part={part} overlay=\"Menu\" emit={emit} scope={scope} path=\"\" close={() => setOpen(false)} />\n </MenuPrimitive.Content>\n </MenuPrimitive.Portal>\n </MenuPrimitive.Root>\n )\n}\n\n/** A context menu is uncontrolled (Radix): close it the way Escape does. */\nfunction closeContextMenu() {\n document.dispatchEvent(new KeyboardEvent(`keydown`, { key: `Escape`, bubbles: true }))\n}\n\nfunction ContextMenuOpening({ node, props, rootProps, emit, children, scope }: NativeProps) {\n const ctx = useSurfaceContext()\n const part = useParts(node, props)\n const items = objects<MenuItem>(props.items)\n const [open, setOpen] = useState(false)\n return (\n <ContextPrimitive.Root onOpenChange={setOpen} dir={ctx.direction}>\n <ContextPrimitive.Trigger asChild>\n <div\n {...(rootProps as Record<string, unknown>)}\n data-state={open ? `open` : `closed`}\n onKeyDown={(e) => {\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 {children}\n </div>\n </ContextPrimitive.Trigger>\n <ContextPrimitive.Portal container={ctx.portal ?? undefined}>\n <ContextPrimitive.Content {...(part(`content`, open && `open`) as Record<string, string>)} collisionPadding={OVERLAY_PADDING} data-xui-overlay=\"Menu\" data-open-on=\"contextmenu\">\n <MenuItems ns={ContextPrimitive} items={items} rawItems={node.props.items} part={part} overlay=\"Menu\" emit={emit} scope={scope} path=\"\" close={closeContextMenu} />\n </ContextPrimitive.Content>\n </ContextPrimitive.Portal>\n </ContextPrimitive.Root>\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({ node, props, rootProps, emit, scope }: NativeProps) {\n const ctx = useSurfaceContext()\n const part = useParts(node, props)\n const [open, setOpenState] = useBoundState(node, scope, `open`, props.open === undefined ? true : bool(props.open))\n const [leaving, setLeaving] = useState(false)\n const [paused, setPaused] = useState(false)\n const duration = props.duration === undefined ? 5000 : Math.max(0, num(props.duration, 5000))\n const type = str(props.type, `info`)\n const remaining = useRef(duration)\n const startedAt = useRef(0)\n const close = useCallback(() => {\n setOpenState(false)\n void emit(`dismiss`, undefined, { open: false })\n void emit(`change`, { open: false }, { open: false })\n }, [setOpenState, emit])\n // Exit: keep the element for the motion duration with data-state=closed.\n const [shown, setShown] = useState(open)\n useEffect(() => {\n if (open) {\n setShown(true)\n setLeaving(false)\n remaining.current = duration\n return\n }\n if (!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 return () => clearTimeout(t)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open])\n useEffect(() => {\n if (!open || duration === 0 || paused) return\n startedAt.current = Date.now()\n const t = setTimeout(close, remaining.current)\n return () => {\n clearTimeout(t)\n remaining.current = Math.max(0, remaining.current - (Date.now() - startedAt.current))\n }\n }, [open, duration, paused, close])\n if (!shown || !ctx.toastLayer) return null\n const title = str(props.title)\n const description = str(props.description)\n const actionLabel = str(props.actionLabel)\n const assertive = type === `error`\n return createPortal(\n <div\n {...(rootProps as Record<string, unknown>)}\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 onFocus={() => setPaused(true)}\n onBlur={() => setPaused(false)}\n onKeyDown={(e) => {\n if (e.key === `Escape` && props.dismissible !== false) {\n e.stopPropagation()\n close()\n }\n }}\n >\n <span {...(part(`icon`) as Record<string, string>)}>\n <BuiltinIcon slot={`Toast.icon.${type}`} />\n </span>\n <div className=\"xui-toast-text\">\n <span {...(part(`title`) as Record<string, string>)}>{title}</span>\n {description ? <span {...(part(`description`) as Record<string, string>)}>{description}</span> : null}\n </div>\n {actionLabel ? (\n <button type=\"button\" {...(part(`action`) as Record<string, string>)} onClick={() => void emit(`action`)}>\n {actionLabel}\n </button>\n ) : null}\n {props.dismissible !== false ? (\n <button type=\"button\" {...(part(`close`) as Record<string, string>)} aria-label={ctx.t(`dismiss`)} onClick={close}>\n <BuiltinIcon slot=\"Toast.close\" />\n </button>\n ) : null}\n </div>,\n ctx.toastLayer\n )\n}\n",
32
+ "// VAPP-87 + round 1: the OVERLAYS — Dialog, Drawer, Popover, Tooltip,\n// Menu (press | contextmenu) on Radix portals, 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. The placement contract the core mirrors: side +\n// centre alignment, `OVERLAY_OFFSET` from the anchor, flip when the\n// preferred side lacks room, shift to stay `OVERLAY_PADDING` inside the\n// viewport (`placeOverlay`, fixtures/overlay-geometry.json). Enter/exit\n// animate on the theme's motion tokens (base-css.ts; zero under reduced\n// motion). A trigger slot is wrapped in an inline-flex span so Radix\n// measures the slot's own box and the slot's painter keeps its element.\n\nimport { forwardRef, useCallback, useEffect, useRef, useState, type HTMLAttributes, type PointerEvent as ReactPointerEvent, type ReactNode } from \"react\"\nimport { createPortal } from \"react-dom\"\nimport { ContextMenu as ContextPrimitive, Dialog as DialogPrimitive, DropdownMenu as MenuPrimitive, Popover as PopoverPrimitive, Tooltip as TooltipPrimitive } from \"radix-ui\"\nimport { OVERLAY_OFFSET, OVERLAY_PADDING } from \"@exponential_app/eui\"\nimport { useSurfaceContext } from \"../context\"\nimport { isBinding, overlayOpenFocus } from \"@exponential_app/eui/web\"\nimport { absolutePath } from \"@exponential_app/eui/web\"\nimport { IconGlyph } from \"../icons\"\nimport type { NativeProps } from \"../node-view\"\nimport { CloseOnSubmitContext } from \"../form\"\nimport { useBoundState } from \"./bound\"\nimport { bool, BuiltinIcon, num, str, useParts, type PartFn, objects } from \"./shared\"\nimport { SearchBody, searchMatches } from \"./search\"\n\n/** An overlay's `open`: local mirror, bound path written, `change {open}`. */\nfunction useOpenState(node: NativeProps[`node`], scope: string, external: boolean, emit: NativeProps[`emit`]) {\n const [open, setOpen] = useBoundState(node, scope, `open`, external)\n const change = useCallback(\n (next: boolean) => {\n setOpen(next)\n void emit(`change`, { open: next }, { open: next })\n },\n [setOpen, emit]\n )\n return [open, change] as const\n}\n\n/** The slot wrapper Radix anchors to and clicks through (forwardRef so the\n * popper can measure it; the rest of the props are Radix's). */\nconst Trigger = forwardRef<HTMLSpanElement, HTMLAttributes<HTMLSpanElement> & { children?: ReactNode }>(function Trigger({ children, ...rest }, ref) {\n return (\n <span ref={ref} className=\"xui-trigger\" {...rest}>\n {children}\n </span>\n )\n})\n\n/** Round 2 §7: an overlay is LAYOUT-TRANSPARENT — its frame is its\n * trigger's (the trigger is the flex item: a Link stretches in a stretch\n * row, a Button keeps its control height; the overlay never fills a column\n * or stretches a row on its own); without a trigger it lays out nothing. */\nfunction overlayRootProps(rootProps: Record<string, unknown>, trigger: NativeProps[`slots`][string] | undefined | null, 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\nexport function DialogNative(p: NativeProps) {\n return <ModalNative {...p} kind=\"Dialog\" />\n}\nexport function DrawerNative(p: NativeProps) {\n return <ModalNative {...p} kind=\"Drawer\" />\n}\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. */\nfunction useDragToDismiss(side: string, enabled: boolean, onDismiss: () => void, reducedMotion: boolean) {\n const panel = useRef<HTMLDivElement | null>(null)\n const drag = useRef<{ 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: ReactPointerEvent) => {\n const d = drag.current\n if (!d) return 0\n return Math.max(0, ((axis === `x` ? e.clientX - d.x : e.clientY - d.y) * sign))\n }\n const paint = (px: number, animate: boolean) => {\n const el = panel.current\n if (!el) return\n el.style.transition = animate && !reducedMotion ? `transform var(--xui-motion-standard) var(--xui-ease-decelerate)` : `none`\n el.style.transform = px ? `translate${axis === `x` ? `X` : `Y`}(${px * sign}px)` : ``\n }\n const handlers = enabled\n ? {\n onPointerDown: (e: ReactPointerEvent) => {\n if (e.button !== 0) return\n drag.current = { id: e.pointerId, x: e.clientX, y: e.clientY, at: performance.now() }\n ;(e.currentTarget as HTMLElement).setPointerCapture?.(e.pointerId)\n },\n onPointerMove: (e: ReactPointerEvent) => {\n if (drag.current?.id === e.pointerId) paint(distance(e), false)\n },\n onPointerUp: (e: ReactPointerEvent) => {\n if (drag.current?.id !== e.pointerId) return\n const px = distance(e)\n const dt = performance.now() - drag.current.at\n drag.current = 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 drag.current = null\n paint(0, true)\n },\n }\n : {}\n return { panel, handlers }\n}\n\nfunction ModalNative({ node, props, rootProps, emit, children, slots, scope, kind }: NativeProps & { kind: `Dialog` | `Drawer` }) {\n const ctx = useSurfaceContext()\n const part = useParts(node, props)\n const [open, setOpen] = useOpenState(node, scope, bool(props.open), emit)\n const dismissible = props.dismissible !== false\n const side = str(props.side, `bottom`)\n const title = str(props.title)\n const description = str(props.description)\n const drag = useDragToDismiss(side, kind === `Drawer` && props.dragToDismiss !== false && dismissible, () => setOpen(false), ctx.reducedMotion)\n const close = useCallback(() => setOpen(false), [setOpen])\n return (\n <DialogPrimitive.Root open={open} onOpenChange={(next) => (next || dismissible ? setOpen(next) : undefined)}>\n <div {...overlayRootProps(rootProps, slots.trigger, node.slots?.trigger)}>\n {slots.trigger ? (\n <DialogPrimitive.Trigger asChild>\n <Trigger>{slots.trigger}</Trigger>\n </DialogPrimitive.Trigger>\n ) : null}\n </div>\n <DialogPrimitive.Portal container={ctx.portal ?? undefined}>\n <DialogPrimitive.Overlay {...(part(`overlay`, open && `open`) as Record<string, string>)} data-xui-overlay-backdrop={kind} />\n <DialogPrimitive.Content\n ref={drag.panel}\n {...(part(`content`, open && `open`) as Record<string, string>)}\n data-side={kind === `Drawer` ? side : undefined}\n data-xui-overlay={kind}\n dir={ctx.direction}\n role={kind === `Dialog` && !dismissible ? `alertdialog` : `dialog`}\n onEscapeKeyDown={dismissible ? undefined : (e) => e.preventDefault()}\n onPointerDownOutside={dismissible ? undefined : (e) => e.preventDefault()}\n onInteractOutside={dismissible ? undefined : (e) => e.preventDefault()}\n onOpenAutoFocus={overlayOpenFocus}\n {...(description ? {} : { \"aria-describedby\": undefined })}\n >\n {kind === `Drawer` && (side === `bottom` || side === `top`) ? <div {...(part(`handle`) as Record<string, string>)} aria-hidden=\"true\" {...drag.handlers} /> : null}\n {title || description ? (\n <div className=\"xui-overlay-head\" {...(kind === `Drawer` ? drag.handlers : {})}>\n {title ? <DialogPrimitive.Title {...(part(`title`) as Record<string, string>)}>{title}</DialogPrimitive.Title> : <DialogPrimitive.Title className=\"xui-sr-only\">{ctx.t(`dialog`)}</DialogPrimitive.Title>}\n {description ? <DialogPrimitive.Description {...(part(`description`) as Record<string, string>)}>{description}</DialogPrimitive.Description> : null}\n </div>\n ) : (\n <DialogPrimitive.Title className=\"xui-sr-only\">{ctx.t(`dialog`)}</DialogPrimitive.Title>\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={dismissible ? close : null}>\n <div className=\"xui-overlay-body\">{children}</div>\n {slots.footer ? <div {...(part(`footer`) as Record<string, string>)}>{slots.footer}</div> : null}\n </CloseOnSubmitContext.Provider>\n {kind === `Dialog` && dismissible ? (\n <DialogPrimitive.Close {...(part(`close`) as Record<string, string>)} aria-label={ctx.t(`close`)}>\n <BuiltinIcon slot=\"Dialog.close\" />\n </DialogPrimitive.Close>\n ) : null}\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n </DialogPrimitive.Root>\n )\n}\n\nconst HOVER_OPEN_MS = 200\nconst HOVER_CLOSE_MS = 150\n\nexport function PopoverNative({ node, props, rootProps, emit, children, slots, scope }: NativeProps) {\n const ctx = useSurfaceContext()\n const part = useParts(node, props)\n const [open, setOpen] = useOpenState(node, scope, bool(props.open), emit)\n const side = str(props.side, `bottom`) as `top` | `right` | `bottom` | `left`\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.openOn === `hover` && ctx.hover\n const timer = useRef<ReturnType<typeof setTimeout> | null>(null)\n const openRef = useRef(open)\n openRef.current = open\n // THIS popover's content (focus moving from the trigger into it keeps it\n // open; another hover card's content on the page does not count).\n const contentRef = useRef<HTMLDivElement | null>(null)\n const schedule = (next: boolean) => {\n if (timer.current) clearTimeout(timer.current)\n timer.current = setTimeout(() => {\n if (openRef.current !== next) setOpen(next)\n }, next ? HOVER_OPEN_MS : HOVER_CLOSE_MS)\n }\n useEffect(() => () => void (timer.current && clearTimeout(timer.current)), [])\n const hoverProps = hoverMode\n ? {\n onPointerEnter: (e: ReactPointerEvent) => e.pointerType !== `touch` && schedule(true),\n onPointerLeave: (e: ReactPointerEvent) => e.pointerType !== `touch` && schedule(false),\n onFocus: () => schedule(true),\n onBlur: (e: React.FocusEvent) => {\n const to = e.relatedTarget as Node | null\n if (!to || !contentRef.current?.contains(to)) schedule(false)\n },\n }\n : {}\n return (\n <PopoverPrimitive.Root open={open} onOpenChange={setOpen}>\n <div {...overlayRootProps(rootProps, slots.trigger, node.slots?.trigger)}>\n {slots.trigger ? (\n <PopoverPrimitive.Trigger asChild>\n <Trigger {...hoverProps}>{slots.trigger}</Trigger>\n </PopoverPrimitive.Trigger>\n ) : (\n <PopoverPrimitive.Anchor asChild>\n <span style={{ display: `inline-flex` }} />\n </PopoverPrimitive.Anchor>\n )}\n </div>\n <PopoverPrimitive.Portal container={ctx.portal ?? undefined}>\n <PopoverPrimitive.Content\n ref={contentRef}\n {...(part(`content`, open && `open`) as Record<string, string>)}\n side={side}\n align=\"center\"\n sideOffset={OVERLAY_OFFSET}\n collisionPadding={OVERLAY_PADDING}\n data-xui-overlay=\"Popover\"\n data-open-on={hoverMode ? `hover` : undefined}\n dir={ctx.direction}\n onOpenAutoFocus={hoverMode ? (e) => e.preventDefault() : undefined}\n onPointerEnter={hoverMode ? () => schedule(true) : undefined}\n onPointerLeave={hoverMode ? () => schedule(false) : undefined}\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}>{children}</CloseOnSubmitContext.Provider>\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n )\n}\n\n/** Tooltip: shows on hover AND keyboard focus (a11y.json), Escape hides. */\nexport function TooltipNative({ node, props, rootProps, children }: NativeProps) {\n const ctx = useSurfaceContext()\n const part = useParts(node, props)\n const side = str(props.side, `top`) as `top` | `right` | `bottom` | `left`\n const content = str(props.content) || str(props.text)\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 <TooltipPrimitive.Provider delayDuration={300}>\n <TooltipPrimitive.Root>\n <div {...(rootProps as Record<string, unknown>)} data-xui-overlay-root=\"\">\n <TooltipPrimitive.Trigger asChild>\n <div {...(part(`anchor`) as Record<string, string>)} tabIndex={0}>\n {children}\n </div>\n </TooltipPrimitive.Trigger>\n </div>\n <TooltipPrimitive.Portal container={ctx.portal ?? undefined}>\n <TooltipPrimitive.Content {...(part(`content`) as Record<string, string>)} side={side} sideOffset={OVERLAY_OFFSET} collisionPadding={OVERLAY_PADDING} data-xui-overlay=\"Tooltip\">\n {content}\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n </TooltipPrimitive.Root>\n </TooltipPrimitive.Provider>\n )\n}\n\n// ---------------------------------------------------------------------------\n// Menu (round 3: ONE native for press and context menus)\n// ---------------------------------------------------------------------------\n\nexport interface 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\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. */\nfunction MenuSearch({ item, i, part, emit, close }: { item: MenuItem; i: string; part: PartFn; emit: NativeProps[`emit`]; close: () => void }) {\n const ctx = useSurfaceContext()\n const [query, setQuery] = useState(``)\n const box = useRef<HTMLDivElement | null>(null)\n // The field takes the focus once Radix has focused the opened content.\n useEffect(() => {\n const frame = requestAnimationFrame(() => box.current?.querySelector<HTMLInputElement>(`input`)?.focus({ preventScroll: true }))\n return () => cancelAnimationFrame(frame)\n }, [])\n const rows = objects<MenuItem>(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) } }))\n return (\n <div\n ref={box}\n className=\"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={part}\n owner=\"Menu\"\n suffix={`.${i}`}\n rows={rows}\n query={query}\n onQuery={setQuery}\n placeholder={str(item.placeholder) || ctx.t(`search`)}\n emptyText={ctx.t(`noResults`)}\n maxRows={8}\n showCount\n autoFocus\n leaveBubbles\n onPick={(picked) => {\n void emit(`select`, { value: picked.value })\n close()\n }}\n rowPart={(_, __, active) => part(`item`, active && `selected`) as Record<string, string>}\n renderRow={(row) => (\n <>\n {row.icon ? <IconGlyph icons={ctx.host.icons} name={row.icon} /> : null}\n <span className=\"xui-menu-label\">{row.label}</span>\n </>\n )}\n />\n </div>\n )\n}\n\ntype MenuNs = typeof MenuPrimitive | typeof ContextPrimitive\n\n/** The entries, shared by both openings. A submenu's `items` may be a\n * binding (`{path}` to rows a host source feeds): the bind pass resolved it\n * already, so it renders like a literal one. */\nexport function MenuItems({ ns, items, rawItems, part, overlay, emit, scope, path, close }: { ns: MenuNs; items: MenuItem[]; rawItems: unknown; part: PartFn; overlay: string; emit: NativeProps[`emit`]; scope: string; path: string; close: () => void }) {\n const ctx = useSurfaceContext()\n const raws = objects<Record<string, unknown>>(rawItems)\n const N = ns as typeof MenuPrimitive\n return (\n <>\n {items.map((item, i) => {\n const kind = item.separator ? `separator` : (item.kind ?? `item`)\n const key = `${path}${i}`\n const icon = item.icon ? <IconGlyph icons={ctx.host.icons} name={item.icon} /> : null\n const shortcut = item.shortcut ? <span {...(part(`shortcut`) as Record<string, string>)}>{item.shortcut}</span> : null\n if (kind === `separator`) return <N.Separator key={key} {...(part(`separator`) as Record<string, string>)} />\n if (kind === `label`) return <N.Label key={key} {...(part(`label`) as Record<string, string>)}>{str(item.label)}</N.Label>\n if (kind === `submenu`) {\n return (\n <N.Sub key={key}>\n <N.SubTrigger {...(part(`item`, bool(item.disabled) && `disabled`) as Record<string, string>)} disabled={bool(item.disabled)}>\n {icon}\n <span className=\"xui-menu-label\">{str(item.label)}</span>\n <span {...(part(`submenuIndicator`) as Record<string, string>)}>\n <BuiltinIcon slot=\"Menu.submenuIndicator\" />\n </span>\n </N.SubTrigger>\n <N.Portal container={ctx.portal ?? undefined}>\n <N.SubContent\n {...(part(`content`) as Record<string, string>)}\n sideOffset={2}\n collisionPadding={OVERLAY_PADDING}\n data-xui-overlay={`${overlay}.sub`}\n data-searchable={item.searchable ? `true` : undefined}\n >\n {item.searchable ? (\n <MenuSearch item={item} i={key} part={part} emit={emit} close={close} />\n ) : (\n <MenuItems ns={ns} items={objects<MenuItem>(item.items)} rawItems={raws[i]?.items} part={part} overlay={overlay} emit={emit} scope={scope} path={`${key}.`} close={close} />\n )}\n </N.SubContent>\n </N.Portal>\n </N.Sub>\n )\n }\n if (kind === `checkbox`) {\n const raw = raws[i]?.checked\n return (\n <N.CheckboxItem\n key={key}\n {...(part(`item`, bool(item.disabled) && `disabled`, bool(item.checked) && `checked`) as Record<string, string>)}\n checked={bool(item.checked)}\n disabled={bool(item.disabled)}\n onCheckedChange={(next) => {\n const checked = next === true\n if (isBinding(raw)) ctx.setData(absolutePath(raw.path, scope), checked)\n void emit(`select`, { value: item.value ?? item.label, checked })\n }}\n onSelect={(e) => e.preventDefault()}\n >\n <span {...(part(`check`) as Record<string, string>)}>\n <N.ItemIndicator>\n <BuiltinIcon slot=\"Menu.check\" />\n </N.ItemIndicator>\n </span>\n <span className=\"xui-menu-label\">{str(item.label)}</span>\n {shortcut}\n </N.CheckboxItem>\n )\n }\n return (\n <N.Item key={key} {...(part(`item`, bool(item.disabled) && `disabled`) as Record<string, string>)} disabled={bool(item.disabled)} data-destructive={item.destructive ? `true` : undefined} onSelect={() => void emit(`select`, { value: item.value ?? item.label })}>\n {icon}\n <span className=\"xui-menu-label\">{str(item.label)}</span>\n {shortcut}\n </N.Item>\n )\n })}\n </>\n )\n}\n\n/** Menu: `openOn: press` (default) = a Radix DropdownMenu, its ONE child the\n * trigger (no child = the default outline Button from label/icon, no\n * chevron), anchored bottom-start; `openOn: contextmenu` = a Radix\n * ContextMenu over the child (right-click / long-press / Shift+F10 / the\n * Menu key), opened at the pointer (the child's corner from the keyboard). */\nexport function MenuNative(p: NativeProps) {\n return p.props.openOn === `contextmenu` ? <ContextMenuOpening {...p} /> : <PressMenuOpening {...p} />\n}\n\nfunction PressMenuOpening({ node, props, rootProps, emit, children, scope }: NativeProps) {\n const ctx = useSurfaceContext()\n const part = useParts(node, props)\n const items = objects<MenuItem>(props.items)\n const label = str(props.label)\n const icon = str(props.icon)\n const [open, setOpen] = useState(false)\n const child = node.children[0] ?? null\n return (\n <MenuPrimitive.Root open={open} onOpenChange={setOpen} dir={ctx.direction}>\n <div {...overlayRootProps(rootProps, true, child)}>\n <MenuPrimitive.Trigger asChild>\n {child ? (\n <Trigger>{children}</Trigger>\n ) : (\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 type=\"button\" {...(part(`trigger`, open && `open`) as Record<string, string>)} aria-label={label || ctx.t(`menu`)}>\n {icon ? <IconGlyph icons={ctx.host.icons} name={icon} className=\"xui-icon\" width={16} height={16} /> : null}\n {label || !icon ? <span>{label || ctx.t(`menu`)}</span> : null}\n </button>\n )}\n </MenuPrimitive.Trigger>\n </div>\n <MenuPrimitive.Portal container={ctx.portal ?? undefined}>\n <MenuPrimitive.Content {...(part(`content`, open && `open`) as Record<string, string>)} align=\"start\" sideOffset={OVERLAY_OFFSET} collisionPadding={OVERLAY_PADDING} data-xui-overlay=\"Menu\" data-open-on=\"press\">\n <MenuItems ns={MenuPrimitive} items={items} rawItems={node.props.items} part={part} overlay=\"Menu\" emit={emit} scope={scope} path=\"\" close={() => setOpen(false)} />\n </MenuPrimitive.Content>\n </MenuPrimitive.Portal>\n </MenuPrimitive.Root>\n )\n}\n\n/** A context menu is uncontrolled (Radix): close it the way Escape does. */\nfunction closeContextMenu() {\n document.dispatchEvent(new KeyboardEvent(`keydown`, { key: `Escape`, bubbles: true }))\n}\n\nfunction ContextMenuOpening({ node, props, rootProps, emit, children, scope }: NativeProps) {\n const ctx = useSurfaceContext()\n const part = useParts(node, props)\n const items = objects<MenuItem>(props.items)\n const [open, setOpen] = useState(false)\n return (\n <ContextPrimitive.Root onOpenChange={setOpen} dir={ctx.direction}>\n <ContextPrimitive.Trigger asChild>\n <div\n {...(rootProps as Record<string, unknown>)}\n data-state={open ? `open` : `closed`}\n onKeyDown={(e) => {\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 {children}\n </div>\n </ContextPrimitive.Trigger>\n <ContextPrimitive.Portal container={ctx.portal ?? undefined}>\n <ContextPrimitive.Content {...(part(`content`, open && `open`) as Record<string, string>)} collisionPadding={OVERLAY_PADDING} data-xui-overlay=\"Menu\" data-open-on=\"contextmenu\">\n <MenuItems ns={ContextPrimitive} items={items} rawItems={node.props.items} part={part} overlay=\"Menu\" emit={emit} scope={scope} path=\"\" close={closeContextMenu} />\n </ContextPrimitive.Content>\n </ContextPrimitive.Portal>\n </ContextPrimitive.Root>\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({ node, props, rootProps, emit, scope }: NativeProps) {\n const ctx = useSurfaceContext()\n const part = useParts(node, props)\n const [open, setOpenState] = useBoundState(node, scope, `open`, props.open === undefined ? true : bool(props.open))\n const [leaving, setLeaving] = useState(false)\n const [paused, setPaused] = useState(false)\n const duration = props.duration === undefined ? 5000 : Math.max(0, num(props.duration, 5000))\n const type = str(props.type, `info`)\n const remaining = useRef(duration)\n const startedAt = useRef(0)\n const close = useCallback(() => {\n setOpenState(false)\n void emit(`dismiss`, undefined, { open: false })\n void emit(`change`, { open: false }, { open: false })\n }, [setOpenState, emit])\n // Exit: keep the element for the motion duration with data-state=closed.\n const [shown, setShown] = useState(open)\n useEffect(() => {\n if (open) {\n setShown(true)\n setLeaving(false)\n remaining.current = duration\n return\n }\n if (!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 return () => clearTimeout(t)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open])\n useEffect(() => {\n if (!open || duration === 0 || paused) return\n startedAt.current = Date.now()\n const t = setTimeout(close, remaining.current)\n return () => {\n clearTimeout(t)\n remaining.current = Math.max(0, remaining.current - (Date.now() - startedAt.current))\n }\n }, [open, duration, paused, close])\n if (!shown || !ctx.toastLayer) return null\n const title = str(props.title)\n const description = str(props.description)\n const actionLabel = str(props.actionLabel)\n const assertive = type === `error`\n return createPortal(\n <div\n {...(rootProps as Record<string, unknown>)}\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 onFocus={() => setPaused(true)}\n onBlur={() => setPaused(false)}\n onKeyDown={(e) => {\n if (e.key === `Escape` && props.dismissible !== false) {\n e.stopPropagation()\n close()\n }\n }}\n >\n <span {...(part(`icon`) as Record<string, string>)}>\n <BuiltinIcon slot={`Toast.icon.${type}`} />\n </span>\n <div className=\"xui-toast-text\">\n <span {...(part(`title`) as Record<string, string>)}>{title}</span>\n {description ? <span {...(part(`description`) as Record<string, string>)}>{description}</span> : null}\n </div>\n {actionLabel ? (\n <button type=\"button\" {...(part(`action`) as Record<string, string>)} onClick={() => void emit(`action`)}>\n {actionLabel}\n </button>\n ) : null}\n {props.dismissible !== false ? (\n <button type=\"button\" {...(part(`close`) as Record<string, string>)} aria-label={ctx.t(`dismiss`)} onClick={close}>\n <BuiltinIcon slot=\"Toast.close\" />\n </button>\n ) : null}\n </div>,\n ctx.toastLayer\n )\n}\n",
32
33
  "// EXP-1259 (the UI batch): the SearchList native and the searchable Menu\n// submenu's body — 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>`, …) so the conformance dump\n// compares the same boxes.\n\nimport { useEffect, useId, useLayoutEffect, useRef, useState, type KeyboardEvent, type ReactNode } from \"react\"\nimport { elementScale } from \"@exponential_app/eui/web\"\nimport { useSurfaceContext } from \"../context\"\nimport { DEBOUNCE_MS } from \"../inputs\"\nimport { IconGlyph } from \"../icons\"\nimport type { NativeProps } from \"../node-view\"\nimport { useBoundState } from \"./bound\"\nimport { bool, BuiltinIcon, num, objects, str, useParts, type PartFn } from \"./shared\"\n\nexport interface SearchItem {\n label: string\n value: string\n icon?: string\n identifier?: string\n disabled?: boolean\n}\n\n/** Does a row match the query (case-insensitive, label or identifier)?\n * The core's `search_matches`. */\nexport function searchMatches(item: Pick<SearchItem, `label` | `identifier`>, 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\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) => Record<string, string>\n renderRow?: (item: SearchItem, index: number) => ReactNode\n}\n\nexport function SearchBody({ part, owner, suffix, rows, query, onQuery, placeholder, emptyText, maxRows, showCount, picked, onPick, autoFocus, leaveBubbles, rowPart, renderRow }: SearchBodyProps) {\n const ctx = useSurfaceContext()\n void owner\n const listId = useId()\n const [active, setActive] = useState(0)\n const listRef = useRef<HTMLDivElement | null>(null)\n const [moreBelow, setMoreBelow] = useState(false)\n const at = Math.min(active, Math.max(0, rows.length - 1))\n const single = (name: string) => {\n const attrs = part(name) as Record<string, string>\n if (suffix && attrs[`data-xui-id`]) attrs[`data-xui-id`] = `${attrs[`data-xui-id`]}${suffix}`\n return attrs\n }\n // The highlight goes back to the top row whenever the query changes.\n useEffect(() => setActive(0), [query])\n const measure = () => {\n const list = listRef.current\n if (list) setMoreBelow(list.scrollTop + list.clientHeight < list.scrollHeight - 1)\n }\n useLayoutEffect(measure, [rows.length, maxRows])\n // Keep the highlighted row inside the window (instant: keys never animate).\n // The list scrolls itself: scrollIntoView would scroll the page to a list\n // further down on mount.\n useLayoutEffect(() => {\n const list = listRef.current\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 // NEW-82: rect deltas are visual px, scrollTop is layout px.\n const sy = elementScale(list, l).y\n if (r.top < l.top) list.scrollTop -= (l.top - r.top) / sy\n else if (r.bottom > l.bottom) list.scrollTop += (r.bottom - l.bottom) / sy\n }, [at])\n const pick = (i: number) => {\n const row = rows[i]\n if (row && !bool(row.item.disabled)) onPick(row.item)\n }\n const onKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n if (e.nativeEvent.isComposing) return\n if (e.key === `ArrowDown` || e.key === `ArrowUp`) {\n e.preventDefault()\n e.stopPropagation()\n setActive((a) => Math.max(0, Math.min(rows.length - 1, a + (e.key === `ArrowDown` ? 1 : -1))))\n } else if (e.key === `Enter` || (e.key === `Tab` && !e.shiftKey && rows.length > 0)) {\n e.preventDefault()\n e.stopPropagation()\n pick(at)\n } else if (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 = rows[at] ? `${listId}-${rows[at].index}` : undefined\n return (\n <>\n <div {...single(`head`)}>\n <div {...single(`search`)}>\n <BuiltinIcon slot=\"SearchList.search\" />\n <input\n type=\"text\"\n role=\"combobox\"\n aria-expanded=\"true\"\n aria-controls={listId}\n aria-activedescendant={activeId}\n aria-autocomplete=\"list\"\n autoFocus={autoFocus}\n value={query}\n placeholder={placeholder}\n onChange={(e) => onQuery(e.target.value)}\n onKeyDown={onKeyDown}\n />\n </div>\n {showCount && query.trim() !== `` ? (\n <span {...single(`count`)} role=\"status\" aria-live=\"polite\">\n {ctx.formatter.number(rows.length)}\n </span>\n ) : null}\n </div>\n <div {...single(`body`)}>\n <div {...single(`list`)} ref={listRef} id={listId} role=\"listbox\" onScroll={measure} style={{ maxHeight: `calc(${maxRows} * var(--xui-control-row, 32px))` }}>\n {rows.map(({ index, item }, pos) => {\n const isActive = pos === at\n const disabled = bool(item.disabled)\n return (\n <div\n key={`${index}`}\n id={`${listId}-${index}`}\n role=\"option\"\n aria-selected={isActive}\n aria-disabled={disabled || undefined}\n data-active={isActive ? `true` : undefined}\n {...(rowPart ? rowPart(item, index, isActive) : (part.at(`item`, `${suffix ? `${suffix.slice(1)}.` : ``}${index}`, isActive && `selected`, disabled && `disabled`) as Record<string, string>))}\n onPointerMove={() => pos !== at && setActive(pos)}\n onPointerDown={(e) => e.preventDefault()}\n onClick={() => pick(pos)}\n >\n {renderRow ? (\n renderRow(item, index)\n ) : (\n <>\n {item.icon ? (\n <span {...(part.at(`icon`, index) as Record<string, string>)} aria-hidden=\"true\">\n <IconGlyph icons={ctx.host.icons} name={item.icon} />\n </span>\n ) : null}\n {str(item.identifier) ? <span {...(part.at(`identifier`, index) as Record<string, string>)}>{str(item.identifier)}</span> : null}\n <span {...(part.at(`label`, index) as Record<string, string>)}>{str(item.label)}</span>\n {picked !== undefined && picked !== `` && item.value === picked ? (\n <span {...(part.at(`check`, index) as Record<string, string>)} aria-hidden=\"true\">\n <BuiltinIcon slot=\"SearchList.check\" />\n </span>\n ) : null}\n </>\n )}\n </div>\n )\n })}\n {rows.length === 0 ? <div {...single(`empty`)}>{emptyText}</div> : null}\n </div>\n {moreBelow && rows.length > maxRows ? <div {...single(`fade`)} aria-hidden=\"true\" /> : null}\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({ node, props, rootProps, emit, scope }: NativeProps) {\n const ctx = useSurfaceContext()\n const part = useParts(node, props)\n const items = objects<SearchItem>(props.items)\n const [query, setQuery] = useBoundState(node, scope, `query`, str(props.query))\n const [picked, setPicked] = useBoundState(node, scope, `value`, str(props.value))\n const hostSearches = Boolean(node.on?.search)\n const typed = useRef(false)\n useEffect(() => {\n if (!typed.current) return\n const t = setTimeout(() => void emit(`search`, { query }), DEBOUNCE_MS)\n return () => clearTimeout(t)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [query])\n const rows = items.map((item, index) => ({ index, item })).filter(({ item }) => hostSearches || searchMatches(item, query))\n const maxRows = Math.max(1, Math.floor(num(props.maxRows, 8)))\n return (\n <div {...(rootProps as Record<string, unknown>)}>\n <SearchBody\n part={part}\n owner=\"SearchList\"\n suffix=\"\"\n rows={rows}\n query={query}\n onQuery={(q) => {\n typed.current = true\n setQuery(q)\n }}\n placeholder={str(props.placeholder) || ctx.t(`search`)}\n emptyText={str(props.emptyText) || ctx.t(`noResults`)}\n maxRows={maxRows}\n showCount={props.showCount === undefined ? true : bool(props.showCount)}\n picked={picked}\n onPick={(item) => {\n setPicked(item.value)\n void emit(`select`, { value: item.value }, { value: item.value })\n }}\n />\n </div>\n )\n}\n",
33
34
  "// VAPP-162 (docs/round-5-contract.md §6, §7): QrCode and QrScanner.\n//\n// QrCode paints THE CORE'S matrix (`qrMatrix`, never a platform QR library)\n// as one SVG path in module units over a `size` px plate, quiet zone 4,\n// `shape-rendering: crispEdges` (module edges snap to device pixels, the\n// outer size stays exact); of the plate and module recipe colours the\n// lighter fills the plate (a dark theme still scans).\n//\n// QrScanner is the viewfinder CHROME; the camera is the host's: the\n// `qrScanner` host option (`HostPlugin.qrScanner.start(feed, formats,\n// onValue) → stop`) renders its feed into the `feed` element and reports\n// decoded strings, dispatched as `scanned {value}` once per distinct value.\n// No host (or a host that refuses) = the placeholder icon + `Camera\n// unavailable`; `disabled` stops the camera and dims the chrome.\n\nimport { useEffect, useMemo, useRef, useState } from \"react\"\nimport { nativeRecipeProps, resolveRecipe } from \"@exponential_app/eui\"\nimport { QR_CORNERS, QR_SCANNER, qrCornerPath, qrFeedColour, qrPaint, qrScanFormats, qrScanReporter } from \"@exponential_app/eui/web\"\nimport { useSurfaceContext } from \"../context\"\nimport { IconGlyph } from \"../icons\"\nimport type { NativeProps } from \"../node-view\"\nimport { bool, num, str, useParts } from \"./shared\"\n\ntype Ctx = ReturnType<typeof useSurfaceContext>\n\nfunction recipeOf(ctx: Ctx, component: string, part: string, props: Record<string, unknown>) {\n return resolveRecipe(ctx.theme, { component, part, props: nativeRecipeProps(component, props, ctx.extensionDefs) }, ctx.mode)\n}\n\n/** A `$string.<key>` default the reducer left in place → the built-in string. */\nfunction stringProp(ctx: Ctx, raw: unknown, fallbackKey: string): string {\n const s = str(raw)\n if (!s) return ctx.t(fallbackKey)\n return s.startsWith(`$string.`) ? ctx.t(s.slice(`$string.`.length)) : s\n}\n\nexport function QrCodeNative({ node, props, rootProps }: NativeProps) {\n const ctx = useSurfaceContext()\n const part = useParts(node, props)\n const size = Math.max(0, num(props.size, 160))\n const value = str(props.value)\n const level = str(props.level, `M`)\n const plateStyle = recipeOf(ctx, `QrCode`, `plate`, props)\n const moduleStyle = recipeOf(ctx, `QrCode`, `module`, props)\n const paint = useMemo(\n () => qrPaint(value, level, String(plateStyle.backgroundColor ?? `#ffffff`), String(moduleStyle.color ?? `#000000`)),\n [value, level, plateStyle.backgroundColor, moduleStyle.color]\n )\n const label = str(props.label)\n return (\n <div {...(rootProps as Record<string, unknown>)} role={label ? `img` : undefined} aria-label={label || undefined} aria-hidden={label ? undefined : `true`} data-empty={paint.matrix ? undefined : `true`}>\n <span {...(part(`plate`) as Record<string, string>)} style={{ width: size, height: size, backgroundColor: paint.plate }}>\n {paint.matrix ? (\n <svg viewBox={`0 0 ${paint.modules} ${paint.modules}`} width={size} height={size} shapeRendering=\"crispEdges\" aria-hidden=\"true\" focusable=\"false\">\n <path {...(part(`module`) as Record<string, string>)} d={paint.path} fill={paint.module} />\n </svg>\n ) : null}\n </span>\n {label ? (\n <span {...(part(`label`) as Record<string, string>)} aria-hidden=\"true\">\n {label}\n </span>\n ) : null}\n </div>\n )\n}\n\nexport function QrScannerNative({ node, props, rootProps, emit }: NativeProps) {\n const ctx = useSurfaceContext()\n const part = useParts(node, props)\n const disabled = bool(props.disabled)\n const host = ctx.host.qrScanner\n const formats = qrScanFormats(props.formats)\n const formatsKey = formats.join(`,`)\n const feedRef = useRef<HTMLSpanElement | null>(null)\n const [live, setLive] = useState(false)\n const emitRef = useRef(emit)\n emitRef.current = emit\n const announce = useRef(ctx.announce)\n announce.current = ctx.announce\n useEffect(() => {\n const feed = feedRef.current\n if (!host || disabled || !feed) {\n setLive(false)\n return\n }\n // One reporter per start: a remount (or re-enable) reports a held code again.\n const report = qrScanReporter((value) => {\n announce.current(value)\n void emitRef.current(`scanned`, { value })\n })\n let stop: (() => void) | false | void\n try {\n stop = host.start(feed, formatsKey.split(`,`), report)\n } catch {\n stop = false\n }\n setLive(stop !== false)\n return () => {\n if (typeof stop === `function`) stop()\n feed.replaceChildren()\n }\n }, [host, disabled, formatsKey])\n const label = stringProp(ctx, props.label, `scanQrCode`)\n const radius = num(recipeOf(ctx, `QrScanner`, `viewfinder`, props).borderRadius, 0)\n const feedColour = String(recipeOf(ctx, `QrScanner`, `feed`, props).backgroundColor ?? `#000000`)\n const hint = str(props.hint)\n const camera = Boolean(host) && live\n return (\n <div {...(rootProps as Record<string, unknown>)} aria-disabled={disabled || undefined} data-live={camera ? `true` : undefined}>\n <div {...(part(`viewfinder`) as Record<string, string>)} role=\"img\" aria-label={camera ? label : `${label}, ${ctx.t(`cameraUnavailable`)}`}>\n <span ref={feedRef} {...(part(`feed`) as Record<string, string>)} style={{ backgroundColor: qrFeedColour(feedColour) }} aria-hidden=\"true\" />\n {QR_CORNERS.map((corner) => (\n <svg key={corner} {...(part(`corner`) as Record<string, string>)} data-corner={corner} viewBox={`0 0 ${QR_SCANNER.cornerLength} ${QR_SCANNER.cornerLength}`} aria-hidden=\"true\" focusable=\"false\">\n <path d={qrCornerPath(corner, radius)} fill=\"none\" stroke=\"currentColor\" strokeWidth={QR_SCANNER.cornerStroke} strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n ))}\n {camera ? (\n <span {...(part(`scanLine`) as Record<string, string>)} aria-hidden=\"true\" />\n ) : (\n <span {...(part(`placeholder`) as Record<string, string>)} aria-hidden=\"true\">\n <span {...(part(`placeholderIcon`) as Record<string, string>)}>\n <IconGlyph icons={ctx.host.icons} name={QR_SCANNER.placeholderIcon} width={QR_SCANNER.placeholderIconSize} height={QR_SCANNER.placeholderIconSize} />\n </span>\n <span>{ctx.t(`cameraUnavailable`)}</span>\n </span>\n )}\n </div>\n {hint ? <span {...(part(`hint`) as Record<string, string>)}>{hint}</span> : null}\n </div>\n )\n}\n\n",
34
35
  "// VAPP-87 + round 1 (contract §3 Select = the combobox; a11y.json Select).\n// A plain single Select is Radix's (arrows, type-ahead, Home/End built in).\n// `searchable` and/or `multiple` is the COMBOBOX: a trigger\n// (role=combobox, aria-expanded/controls) opening a listbox; with\n// `searchable` the filter field keeps focus and drives the active option\n// through aria-activedescendant, typing fires `search {query}` (150 ms\n// debounce). Options come from the `options` prop (bindable: the host\n// refills the bound path on `search`, the async source), or from the host's\n// `optionSource(source, query)` when `source` names a host list. Local\n// filtering applies only to inline, unbound options. `emptyText` (default\n// `$string.noResults`) shows when nothing matches.\n\nimport { useEffect, useId, useMemo, useRef, useState } from \"react\"\nimport { Popover as PopoverPrimitive, Select as SelectPrimitive } from \"radix-ui\"\nimport { OVERLAY_OFFSET, OVERLAY_PADDING } from \"@exponential_app/eui\"\nimport { useSurfaceContext } from \"../context\"\nimport { boundPath } from \"@exponential_app/eui/web\"\nimport { DEBOUNCE_MS } from \"../inputs\"\nimport { FieldErrors, useField } from \"../form\"\nimport { IconGlyph } from \"../icons\"\nimport type { NativeProps } from \"../node-view\"\nimport { useBoundState } from \"./bound\"\nimport { useListNavigation } from \"./listbox\"\nimport { bool, BuiltinIcon, str, useParts, TextPart, objects } from \"./shared\"\n\nexport interface SelectOption {\n label: string\n value: string\n icon?: string\n disabled?: boolean\n}\n\n// VAPP-146 (fixtures/interactions-round1.json `select`): `\"\"` is an ordinary\n// option value. Radix's Select.Item refuses it (Radix keeps `\"\"` for \"no\n// value\"), so an empty value crosses the Radix boundary as EMPTY and comes\n// back as `\"\"`; the one DOM place Radix writes an item value (the hidden\n// native <select> inside a <form>) is set back to `\"\"`, so the DOM stays\n// the Solid painter's.\nconst EMPTY = `\\u0000xui-empty`\nconst toRadix = (value: string): string => (value === `` ? EMPTY : value)\nconst fromRadix = (value: string): string => (value === EMPTY ? `` : value)\n\n/** Keeps the hidden native <select>'s options free of `EMPTY`; a select\n * mounted while the value is `\"\"` gets the empty placeholder option first\n * and keeps it (the Solid painter's `NativeSelect`; Radix only renders it\n * for an uncontrolled value). */\nfunction useNativeEmptyOption(root: HTMLElement | null, empty: boolean): void {\n const emptyNow = useRef(empty)\n emptyNow.current = empty\n useEffect(() => {\n if (!root || typeof MutationObserver === `undefined`) return\n const seen = new WeakSet<HTMLSelectElement>()\n const fix = () => {\n for (const select of Array.from(root.querySelectorAll<HTMLSelectElement>(`select[aria-hidden]`))) {\n if (!seen.has(select)) {\n seen.add(select)\n if (emptyNow.current) select.insertBefore(document.createElement(`option`), select.firstChild).setAttribute(`value`, ``)\n }\n for (const option of Array.from(select.options)) if (option.getAttribute(`value`) === EMPTY) option.setAttribute(`value`, ``)\n }\n }\n fix()\n const observer = new MutationObserver(fix)\n observer.observe(root, { subtree: true, childList: true, attributes: true, attributeFilter: [`value`] })\n return () => observer.disconnect()\n }, [root])\n}\n\nconst asList = (raw: unknown): string[] => (Array.isArray(raw) ? raw.map(String) : raw === undefined || raw === null || raw === `` ? [] : String(raw).split(`,`))\n\nexport function SelectNative({ node, props, rootProps, emit, scope, domId }: NativeProps) {\n const part = useParts(node, props)\n const ctx = useSurfaceContext()\n const id = useId()\n const listId = `${id}-list`\n const multiple = bool(props.multiple)\n const searchable = bool(props.searchable)\n const placeholder = str(props.placeholder) || ctx.t(`choose`)\n const raw = props.value\n const rawIsArray = Array.isArray(raw)\n const [value, setValue] = useBoundState<string | string[]>(node, scope, `value`, multiple ? asList(raw) : str(raw))\n const triggerRef = useRef<HTMLButtonElement | null>(null)\n const f = useField({ node, domId, props, value, focusRef: triggerRef })\n const disabled = bool(props.disabled) || Boolean(f.form?.disabled)\n const [open, setOpen] = useState(false)\n const [query, setQuery] = useState(``)\n const source = str(props.source)\n const optionsBound = boundPath(node.props, `options`, scope) !== undefined\n const [sourced, setSourced] = useState<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 const request = useRef(0)\n const askSource = (q: string) => {\n if (!source || !ctx.host.optionSource) return\n const mine = ++request.current\n const r = ctx.host.optionSource(source, q)\n const take = (list: SelectOption[] | null | undefined) => {\n if (mine === request.current) 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 useEffect(\n () => () => {\n request.current++\n },\n []\n )\n const inline = objects<SelectOption>(props.options)\n const options = sourced ?? inline\n const hasEmpty = options.some((o) => o.value === ``)\n const [plainRoot, setPlainRoot] = useState<HTMLDivElement | null>(null)\n useNativeEmptyOption(hasEmpty ? plainRoot : null, value === ``)\n const commit = (next: string | string[]) => {\n const out = multiple && !rawIsArray && typeof raw === `string` ? (next as string[]).join(`,`) : next\n setValue(next, out)\n f.change(out)\n f.touch()\n void emit(`change`, { value: out }, { value: out })\n }\n\n // `search {query}` debounced; a host source answers the same query.\n useEffect(() => {\n if (!searchable || !open) return\n const t = setTimeout(() => {\n void emit(`search`, { query })\n askSource(query)\n }, DEBOUNCE_MS)\n return () => clearTimeout(t)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [query, open, searchable, source])\n useEffect(() => {\n if (!source || !ctx.host.optionSource || searchable) return\n askSource(``)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [source, ctx.host, searchable])\n\n const label = <TextPart part={part(`label`)} text={props.label} as=\"label\" htmlFor={id} />\n const triggerStates = (o: boolean) => [o && `open`, disabled && `disabled`, f.invalid && `invalid`] as const\n\n if (!multiple && !searchable) {\n const chosen = options.find((o) => o.value === value)\n const chosenLabel = chosen ? str(chosen.label) : ``\n return (\n <div ref={hasEmpty ? setPlainRoot : undefined} {...(rootProps as Record<string, unknown>)} data-source={source || undefined}>\n {label}\n <SelectPrimitive.Root\n // With an empty option the Select stays CONTROLLED through every\n // pick (`\"\"` is Radix's controlled \"no value\": the placeholder\n // state, no item checked, the same DOM); a flip to `undefined`\n // and back would make Radix warn. Without one, an unset value\n // stays `undefined` (the hidden native <select> keeps its empty\n // placeholder option, as Solid's).\n value={hasEmpty ? (value as string) : (value as string) || undefined}\n // The option already holding the value fires nothing (Radix's rule;\n // `\"\"` reads as Radix's \"no value\", so it is checked here).\n onValueChange={(v) => {\n const next = fromRadix(v)\n if (next !== value) commit(next)\n }} disabled={disabled} open={open} onOpenChange={setOpen} name={str(props.name, node.id)} dir={ctx.direction}>\n <SelectPrimitive.Trigger ref={triggerRef} id={id} {...(part(`trigger`, ...triggerStates(open)) as Record<string, string>)} aria-invalid={f.invalid || undefined} aria-describedby={f.describedBy}>\n {/* Radix shows `placeholder` for its \"no value\" (`\"\"`): the chosen\n label either way. */}\n <span>{chosen ? <SelectPrimitive.Value placeholder={chosenLabel}>{chosenLabel}</SelectPrimitive.Value> : <span {...(part(`placeholder`) as Record<string, string>)}>{placeholder}</span>}</span>\n <SelectPrimitive.Icon asChild>\n <BuiltinIcon slot=\"Select.trigger\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n <SelectPrimitive.Portal container={ctx.portal ?? undefined}>\n <SelectPrimitive.Content {...(part(`content`, open && `open`) as Record<string, string>)} position=\"popper\" sideOffset={OVERLAY_OFFSET} collisionPadding={OVERLAY_PADDING} data-xui-overlay=\"Select\" style={{ minWidth: `var(--radix-select-trigger-width)` }}>\n <SelectPrimitive.Viewport>\n {options.length === 0 ? <div {...(part(`empty`) as Record<string, string>)}>{str(props.emptyText) || ctx.t(`noResults`)}</div> : null}\n {options.map((o) => (\n <SelectPrimitive.Item key={o.value} value={toRadix(o.value)} disabled={bool(o.disabled)} {...(part(`item`, o.value === value && `selected`, bool(o.disabled) && `disabled`) as Record<string, string>)}>\n {o.icon ? <IconGlyph icons={ctx.host.icons} name={o.icon} /> : null}\n <SelectPrimitive.ItemText>{str(o.label)}</SelectPrimitive.ItemText>\n <SelectPrimitive.ItemIndicator {...(part(`check`) as Record<string, string>)} className={`${part(`check`).className as string} xui-Select-check`}>\n <BuiltinIcon slot=\"Select.check\" size={16} />\n </SelectPrimitive.ItemIndicator>\n </SelectPrimitive.Item>\n ))}\n </SelectPrimitive.Viewport>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n </SelectPrimitive.Root>\n <FieldErrors part={part} field={f} />\n </div>\n )\n }\n\n return (\n <Combobox\n {...{ node, props, rootProps, part, id, listId, multiple, searchable, placeholder, options, value, commit, open, setOpen, query, setQuery, disabled, triggerRef, label, source }}\n localFilter={!optionsBound && !source}\n field={f}\n />\n )\n}\n\ninterface ComboboxProps {\n node: NativeProps[`node`]\n props: Record<string, unknown>\n rootProps: Record<string, unknown>\n part: ReturnType<typeof useParts>\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 triggerRef: { current: HTMLButtonElement | null }\n label: React.ReactNode\n source: string\n localFilter: boolean\n field: ReturnType<typeof useField>\n}\n\nfunction Combobox({ props, rootProps, part, id, listId, multiple, searchable, placeholder, options, value, commit, open, setOpen, query, setQuery, disabled, triggerRef, label, source, localFilter, field }: ComboboxProps) {\n const ctx = useSurfaceContext()\n const selected = multiple ? (value as string[]) : value ? [value as string] : []\n const chosen = options.filter((o) => selected.includes(o.value))\n const shown = useMemo(() => (query && localFilter ? options.filter((o) => str(o.label).toLowerCase().includes(query.toLowerCase())) : options), [options, query, localFilter])\n const listRef = useRef<HTMLDivElement | null>(null)\n const pick = (i: number) => {\n const o = shown[i]\n if (!o || bool(o.disabled)) return\n if (multiple) commit(selected.includes(o.value) ? selected.filter((v) => v !== o.value) : [...selected, o.value])\n else {\n commit(o.value)\n setOpen(false)\n }\n }\n const nav = useListNavigation({ count: shown.length, isDisabled: (i) => bool(shown[i]?.disabled), labelOf: (i) => str(shown[i]?.label), onPick: pick, typeahead: !searchable })\n useEffect(() => {\n if (open) {\n const i = shown.findIndex((o) => selected.includes(o.value))\n nav.setActive(i >= 0 ? i : shown.findIndex((o) => !bool(o.disabled)))\n } else setQuery(``)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open])\n useEffect(() => {\n if (!searchable || !open) return\n nav.setActive(shown.findIndex((o) => !bool(o.disabled)))\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [query])\n const optionId = (i: number) => `${listId}-${i}`\n const activeId = nav.active >= 0 && nav.active < shown.length ? optionId(nav.active) : undefined\n useEffect(() => {\n if (activeId) listRef.current?.querySelector(`[id=\"${activeId}\"]`)?.scrollIntoView?.({ block: `nearest` })\n }, [activeId])\n return (\n <div {...(rootProps as Record<string, unknown>)} data-source={source || undefined}>\n {label}\n <PopoverPrimitive.Root open={open} onOpenChange={setOpen}>\n <PopoverPrimitive.Trigger\n ref={triggerRef}\n id={id}\n {...(part(`trigger`, open && `open`, disabled && `disabled`, field.invalid && `invalid`) as Record<string, string>)}\n disabled={disabled}\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-expanded={open}\n aria-controls={open ? listId : undefined}\n aria-invalid={field.invalid || undefined}\n aria-describedby={field.describedBy}\n onKeyDown={(e) => {\n if (!open && (e.key === `ArrowDown` || e.key === `ArrowUp`)) {\n e.preventDefault()\n setOpen(true)\n }\n }}\n >\n <span>{chosen.length ? chosen.map((o) => str(o.label)).join(`, `) : <span {...(part(`placeholder`) as Record<string, string>)}>{placeholder}</span>}</span>\n <BuiltinIcon slot=\"Select.trigger\" />\n </PopoverPrimitive.Trigger>\n <PopoverPrimitive.Portal container={ctx.portal ?? undefined}>\n <PopoverPrimitive.Content\n {...(part(`content`, open && `open`) as Record<string, string>)}\n dir={ctx.direction}\n align=\"start\"\n sideOffset={OVERLAY_OFFSET}\n collisionPadding={OVERLAY_PADDING}\n data-xui-overlay=\"Select\"\n style={{ minWidth: `var(--radix-popover-trigger-width)` }}\n onOpenAutoFocus={(e) => {\n if (!searchable) {\n e.preventDefault()\n listRef.current?.focus()\n }\n }}\n >\n {searchable ? (\n <div className=\"xui-Select-searchbox\">\n <BuiltinIcon slot=\"Select.search\" size={16} />\n <input\n {...(part(`search`) as Record<string, string>)}\n className={`${part(`search`).className as string} xui-Select-search`}\n role=\"combobox\"\n aria-expanded\n aria-controls={listId}\n aria-activedescendant={activeId}\n aria-autocomplete=\"list\"\n placeholder={ctx.t(`search`)}\n aria-label={ctx.t(`search`)}\n value={query}\n onChange={(e) => setQuery(e.target.value)}\n onKeyDown={nav.onKeyDown}\n />\n </div>\n ) : null}\n <div\n ref={listRef}\n id={listId}\n role=\"listbox\"\n tabIndex={searchable ? -1 : 0}\n aria-multiselectable={multiple || undefined}\n aria-activedescendant={searchable ? undefined : activeId}\n aria-labelledby={id}\n className=\"xui-Select-listbox\"\n onKeyDown={searchable ? undefined : nav.onKeyDown}\n >\n {shown.length === 0 ? <div {...(part(`empty`) as Record<string, string>)}>{str(props.emptyText) || ctx.t(`noResults`)}</div> : null}\n {shown.map((o, i) => {\n const isSel = selected.includes(o.value)\n const isActive = i === nav.active\n return (\n <div\n key={o.value}\n id={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`) as Record<string, string>)}\n onPointerMove={() => nav.setActive(i)}\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => 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`) as Record<string, string>)} className={`${part(`check`).className as string} xui-Select-check`}>\n <BuiltinIcon slot=\"Select.check\" size={16} />\n </span>\n ) : null}\n </div>\n )\n })}\n </div>\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n <FieldErrors part={part} field={field} />\n </div>\n )\n}\n",
35
- "// Round 1 (contract §3 Table, a11y.json Table): the data TABLE as a native.\n// Object columns (`{key, label, type, slot, width, align, sortable}`) and\n// rows; cells by type (text, a LOCALE number, a locale date, a tick, the\n// value in a Badge look, or the Table slot named by `slot` rendered once per\n// row with the ROW as its data scope). Sorting: a sortable header cycles\n// asc → desc; a BOUND `sort` is the host's (it orders `rows`), an unbound\n// one sorts a local copy (numbers numerically, strings by the locale\n// collator, missing last). Selection: `single` = a row press selects,\n// `multiple` = a checkbox column with a select-all header; a bound\n// `selected` is written. `striped` queries the row recipe with `striped:\n// true` on ODD rows; header/cell parts carry their column's `align`. Past\n// `WINDOW_THRESHOLD` (50) rows the body windows (`WindowedList`).\n// Keyboard (a11y.json Table): an interactive table has ONE roving tab stop\n// on its rows (the focused row, else the first selected, else the first);\n// ArrowUp/Down, Home/End move it BY INDEX (scrolling a windowed body to the\n// row first), Enter presses, Space selects.\n\nimport { useCallback, useContext, useEffect, useMemo, useRef, useState, type KeyboardEvent, type ReactNode } from \"react\"\nimport { Checkbox as CheckboxPrimitive } from \"radix-ui\"\nimport { tableRowKeys, WINDOW_THRESHOLD } from \"@exponential_app/eui\"\nimport { InstanceContext, ScopeContext, SurfaceContext, deriveContext, readView, useSurfaceContext } from \"../context\"\nimport { boundPath, getPointer, setPointer, LITERAL_ROWS_ROOT } from \"@exponential_app/eui/web\"\nimport { WindowedList, type WindowedListHandle } from \"../list\"\nimport { NodeView, type NativeProps } from \"../node-view\"\nimport { partClass } from \"@exponential_app/eui/web\"\nimport { useBoundState } from \"./bound\"\nimport { displayString } from \"@exponential_app/eui\"\nimport { arr, bool, BuiltinIcon, num, phrase, str, useParts, objects } from \"./shared\"\nimport { sortRows, type TableColumn, type TableSort as Sort } from \"@exponential_app/eui/web\"\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\nexport function TableNative({ node, props, rootProps, emit, scope, domId }: NativeProps) {\n const ctx = useSurfaceContext()\n const part = useParts(node, props)\n const columns = objects<TableColumn>(props.columns)\n const rows = objects<Record<string, unknown>>(props.rows)\n const rowKey = str(props.rowKey, `id`)\n const selectable = str(props.selectable, `none`)\n const striped = bool(props.striped)\n const rowsPath = boundPath(node.props, `rows`, scope)\n const sortBound = boundPath(node.props, `sort`, scope) !== undefined\n const rawSort = props.sort as Sort | undefined\n const [sort, setSort] = useBoundState<Sort | null>(node, scope, `sort`, rawSort && rawSort.key ? { key: rawSort.key, direction: rawSort.direction === `desc` ? `desc` : `asc` } : null)\n const [selected, setSelected] = useBoundState<string[]>(node, scope, `selected`, arr<unknown>(props.selected).map(String))\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 = useMemo(() => tableRowKeys(rows, rowKey), [rows, rowKey])\n const keyOf = (_row: Record<string, unknown>, i: number) => rowKeys[i] ?? String(i)\n const order = useMemo(() => (sortBound ? rows.map((_, i) => i) : sortRows(rows, sort, columns.find((c) => c.key === sort?.key), ctx.locale)), [rows, sort, sortBound, columns, ctx.locale])\n // The checkbox column is as wide as the checkbox (round 2 §7).\n const template = [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 next: Sort = sort?.key === c.key && sort.direction === `asc` ? { key: c.key, direction: `desc` } : { key: c.key, direction: `asc` }\n setSort(next)\n void emit(`sort`, { sort: next }, { sort: next })\n }\n const select = (next: string[]) => {\n setSelected(next)\n void emit(`select`, { selected: next }, { selected: next })\n }\n const allKeys = rows.map(keyOf)\n const allSelected = allKeys.length > 0 && allKeys.every((k) => selected.includes(k))\n const someSelected = !allSelected && allKeys.some((k) => selected.includes(k))\n const interactive = selectable !== `none` || Boolean(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] = useState<string | null>(null)\n const orderKeys = order.map((i) => keyOf(rows[i], i))\n const stopKey = focusKey !== null && orderKeys.includes(focusKey) ? focusKey : (orderKeys.find((k) => selected.includes(k)) ?? orderKeys[0] ?? null)\n const bodyRef = useRef<HTMLDivElement | null>(null)\n const windowRef = useRef<WindowedListHandle | null>(null)\n const pendingFocus = useRef<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 = useCallback((key: string) => {\n const k = `[role=\"row\"][data-key=\"${typeof CSS !== `undefined` && CSS.escape ? CSS.escape(key) : key.replace(/\"/g, `\\\\\"`)}\"]`\n return bodyRef.current?.querySelector<HTMLElement>(`:scope > ${k}, :scope > .xui-list-window > .xui-list-item > ${k}`) ?? null\n }, [])\n const moveTo = (pos: number) => {\n if (orderKeys.length === 0) return\n const clamped = Math.max(0, Math.min(orderKeys.length - 1, pos))\n const key = orderKeys[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's\n // ref focuses it when it mounts.\n pendingFocus.current = key\n windowRef.current?.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 useEffect(\n () =>\n ctx.registerScroller(domId, (index, align) => {\n const pos = order.indexOf(index)\n if (pos < 0) return\n if (windowed) windowRef.current?.scrollToIndex(pos, align)\n else focusRow(keyOf(rows[index], index))?.scrollIntoView({ block: align === `center` || align === `start` || align === `end` ? align : `nearest` })\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [ctx, domId, order, windowed, rows, rowKeys]\n )\n // Literal (unbound) rows: a slot cell's edits live HERE, per row key, never\n // in the surface data model (there is no path to write them to).\n const [literalEdits, setLiteralEdits] = useState<Record<string, Record<string, unknown>>>({})\n const editLiteral = useCallback((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 const cell = (c: TableColumn, row: Record<string, unknown>, index: number): ReactNode => {\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 // Round 2 §3: every formatted cell goes through the surface Formatter,\n // guarded as the bind table's format functions are: a value that is not\n // a finite number = an empty cell, a currency that is not 3 letters =\n // an empty cell (Intl would throw).\n const n = cellNumber(v)\n switch (c.type) {\n case `number`:\n return Number.isFinite(n) ? ctx.formatter.number(n, { decimals }) : ``\n case `currency`: {\n const code = c.currency === undefined ? `USD` : c.currency\n return Number.isFinite(n) && typeof code === `string` && CURRENCY_CODE.test(code) ? ctx.formatter.currency(n, code, { decimals }) : ``\n }\n case `percent`:\n return Number.isFinite(n) ? ctx.formatter.percent(n, { decimals }) : ``\n case `date`:\n return missing ? `` : ctx.formatter.date(v)\n case `relativeTime`:\n return missing ? `` : ctx.formatter.relativeTime(v, ctx.now())\n case `boolean`:\n return v ? <BuiltinIcon slot=\"Checkbox.check\" size={16} /> : <span className=\"xui-sr-only\">—</span>\n case `badge`:\n return v === undefined || v === null || v === `` ? null : (\n <span className={`${ctx.compiled.scope} ${partClass(`Badge`, `root`)} xui-table-badge`} data-xui-part=\"Badge/root\" data-m-variant=\"secondary\">\n <span className={`${ctx.compiled.scope} ${partClass(`Badge`, `label`)}`} data-xui-part=\"Badge/label\" data-m-variant=\"secondary\">\n {String(v)}\n </span>\n </span>\n )\n case `slot`: {\n const slot = c.slot ? node.slots?.[c.slot] : undefined\n if (!slot) return null\n const key = keyOf(row, index)\n return <RowScope rowsPath={rowsPath} row={rowsPath ? row : (literalEdits[key] ?? row)} rowKey={key} index={index} tableId={domId} node={slot} onLiteralEdit={editLiteral} />\n }\n default:\n return displayString(v)\n }\n }\n\n const renderRow = (pos: number) => {\n const index = order[pos]\n const row = rows[index]\n const key = keyOf(row, index)\n const isSel = selected.includes(key)\n const odd = pos % 2 === 1\n const press = () => {\n if (selectable === `single`) select(isSel ? [] : [key])\n if (node.on?.rowPress) void emit(`rowPress`, { key, row })\n }\n return (\n <div\n key={key}\n role=\"row\"\n aria-rowindex={pos + 2}\n aria-selected={selectable !== `none` ? isSel : undefined}\n tabIndex={interactive ? (key === stopKey ? 0 : -1) : undefined}\n data-key={key}\n onFocus={interactive ? (e) => e.target === e.currentTarget && key !== focusKey && setFocusKey(key) : undefined}\n ref={\n interactive\n ? (el: HTMLDivElement | null) => {\n // A row the keyboard moved to before it was mounted (a\n // windowed body): focus it the moment it mounts.\n if (el && pendingFocus.current === key) {\n pendingFocus.current = null\n el.focus()\n }\n }\n : undefined\n }\n {...(part.atWith(`row`, key, { striped: striped && odd }, isSel && `selected`) as Record<string, string>)}\n style={{ gridTemplateColumns: template }}\n onClick={interactive && selectable !== `multiple` ? press : node.on?.rowPress ? press : undefined}\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 pending = pendingFocus.current === null ? -1 : orderKeys.indexOf(pendingFocus.current)\n moveTo((pending >= 0 ? pending : pos) + (e.key === `ArrowDown` ? 1 : -1))\n } else if (e.key === `Home` || e.key === `End`) {\n e.preventDefault()\n moveTo(e.key === `Home` ? 0 : orderKeys.length - 1)\n }\n }}\n >\n {selectable === `multiple` ? (\n <div role=\"gridcell\" className=\"xui-table-check\">\n <CheckboxPrimitive.Root\n {...(part.at(`checkbox`, key, isSel && `checked`) as Record<string, string>)}\n className={`${part(`checkbox`).className as string} xui-Checkbox-box`}\n checked={isSel}\n aria-label={ctx.t(`selectRow`)}\n onClick={(e) => e.stopPropagation()}\n onCheckedChange={(next) => select(next === true ? [...selected, key] : selected.filter((k) => k !== key))}\n >\n <CheckboxPrimitive.Indicator className=\"xui-Checkbox-check\">\n <BuiltinIcon slot=\"Checkbox.check\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n </div>\n ) : null}\n {columns.map((c, ci) => (\n <div key={c.key} role={interactive ? `gridcell` : `cell`} {...(part.atWith(`cell`, `${key}.${ci}`, { align: c.align ?? `start` }) as Record<string, string>)} data-type={c.type ?? `text`}>\n {cell(c, row, index)}\n </div>\n ))}\n </div>\n )\n }\n\n const header = (\n <div role=\"rowgroup\" {...(part(`header`) as Record<string, string>)} data-sticky={bool(props.stickyHeader) ? `true` : undefined}>\n <div role=\"row\" aria-rowindex={1} className=\"xui-table-row\" style={{ gridTemplateColumns: template }}>\n {selectable === `multiple` ? (\n <div role=\"columnheader\" className=\"xui-table-check\">\n <CheckboxPrimitive.Root\n {...(part.at(`checkbox`, `header`, allSelected && `checked`) as Record<string, string>)}\n className={`${part(`checkbox`).className as string} xui-Checkbox-box`}\n checked={allSelected ? true : someSelected ? `indeterminate` : false}\n aria-label={ctx.t(`selectAll`)}\n onCheckedChange={(next) => select(next === true ? allKeys : [])}\n >\n <CheckboxPrimitive.Indicator className=\"xui-Checkbox-check\">\n <BuiltinIcon slot=\"Checkbox.check\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n </div>\n ) : null}\n {columns.map((c, ci) => {\n const active = sort?.key === c.key ? sort.direction : null\n const ariaSort = active === `asc` ? `ascending` : active === `desc` ? `descending` : c.sortable ? `none` : undefined\n return (\n <div key={c.key} role=\"columnheader\" aria-sort={ariaSort} {...(part.atWith(`headerCell`, ci, { align: c.align ?? `start` }) as Record<string, string>)}>\n {c.sortable ? (\n <button type=\"button\" className=\"xui-table-sort\" aria-label={phrase(ctx, active === `asc` ? `sortByDescending` : `sortByAscending`, { name: str(c.label) }, () => `${str(c.label)}: ${ctx.t(active === `asc` ? `sortDescending` : `sortAscending`)}`)} onClick={() => cycle(c)}>\n <span>{str(c.label)}</span>\n <span {...(part(`sortIcon`) as Record<string, string>)} data-direction={active ?? undefined} aria-hidden=\"true\">\n {active ? <BuiltinIcon slot={`Table.sortIcon.${active}`} /> : null}\n </span>\n </button>\n ) : (\n <span>{str(c.label)}</span>\n )}\n </div>\n )\n })}\n </div>\n </div>\n )\n\n const caption = str(props.caption)\n return (\n <div\n {...(rootProps as Record<string, unknown>)}\n role={interactive ? `grid` : `table`}\n aria-rowcount={rows.length + 1}\n aria-multiselectable={selectable === `multiple` || undefined}\n aria-describedby={caption ? `${domId}.caption` : undefined}\n aria-label={caption ? undefined : ((rootProps as Record<string, string | undefined>)[`aria-label`] ?? ctx.t(`table`))}\n data-windowed={windowed ? `true` : undefined}\n >\n {header}\n <div role=\"rowgroup\" {...(part(`body`) as Record<string, string>)} className={`${(part(`body`) as { className: string }).className} xui-table-body`} ref={bodyRef}>\n {rows.length === 0 ? (\n <div role=\"row\">\n <div role=\"cell\" {...(part(`empty`) as Record<string, string>)}>\n {str(props.emptyText) || ctx.t(`noResults`)}\n </div>\n </div>\n ) : windowed ? (\n <WindowedList ref={windowRef} count={order.length} itemKey={(i) => keyOf(rows[order[i]], order[i])} estimatedItemHeight={num(ctx.theme.tokens.control?.row, 40)} overscan={8} renderItem={renderRow} />\n ) : (\n order.map((_, pos) => renderRow(pos))\n )}\n </div>\n {caption ? (\n <div {...(part(`caption`) as Record<string, string>)} id={`${domId}.caption`}>\n {caption}\n </div>\n ) : null}\n {selectable === `multiple` && selected.length ? <span className=\"xui-sr-only\" aria-live=\"polite\">{ctx.t(`selectedCount`, { count: selected.length })}</span> : null}\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` scopes\n * to the row's pointer. Literal rows are mounted into a read view of the\n * data model at a synthetic pointer: absolute bindings still read (and\n * write) the real model, a write UNDER the row goes to the table's local\n * per-row state (`onLiteralEdit`), so it survives the next render. */\nfunction RowScope({ rowsPath, row, rowKey, index, tableId, node, onLiteralEdit }: { rowsPath?: string; row: Record<string, unknown>; rowKey: string; index: number; tableId: string; node: NativeProps[`node`]; onLiteralEdit: (key: string, base: Record<string, unknown>, pointer: string, value: unknown) => void }) {\n const ctx = useSurfaceContext()\n const outer = useContext(InstanceContext)\n const literalPath = `${LITERAL_ROWS_ROOT}/${tableId.replace(/[~/]/g, `_`)}/${index}`\n const view = useMemo(() => {\n if (rowsPath) return ctx\n const data = readView(ctx, literalPath, row)\n const setData = (pointer: string, value: unknown) => {\n if (pointer === literalPath || pointer.startsWith(`${literalPath}/`)) onLiteralEdit(rowKey, (getPointer(data(), literalPath) as Record<string, unknown>) ?? row, pointer.slice(literalPath.length), value)\n else ctx.setData(pointer, value)\n }\n return deriveContext(ctx, { setData }, data)\n }, [ctx, rowsPath, literalPath, row, rowKey, onLiteralEdit])\n return (\n <SurfaceContext.Provider value={view}>\n <ScopeContext.Provider value={rowsPath ? `${rowsPath}/${index}` : literalPath}>\n <InstanceContext.Provider value={`${outer}.${rowKey}`}>\n <NodeView node={node} />\n </InstanceContext.Provider>\n </ScopeContext.Provider>\n </SurfaceContext.Provider>\n )\n}\n",
36
+ "// Round 1 (contract §3 Table, a11y.json Table): the data TABLE as a native.\n// Object columns (`{key, label, type, slot, width, align, sortable}`) and\n// rows; cells by type (text, a LOCALE number, a locale date, a tick, the\n// value in a Badge look, or the Table slot named by `slot` rendered once per\n// row with the ROW as its data scope). Sorting: a sortable header cycles\n// asc → desc; a BOUND `sort` is the host's (it orders `rows`), an unbound\n// one sorts a local copy (numbers numerically, strings by the locale\n// collator, missing last). Selection: `single` = a row press selects,\n// `multiple` = a checkbox column with a select-all header; a bound\n// `selected` is written. `striped` queries the row recipe with `striped:\n// true` on ODD rows; header/cell parts carry their column's `align`. Past\n// `WINDOW_THRESHOLD` (50) rows the body windows (`WindowedList`).\n// Keyboard (a11y.json Table): an interactive table has ONE roving tab stop\n// on its rows (the focused row, else the first selected, else the first);\n// ArrowUp/Down, Home/End move it BY INDEX (scrolling a windowed body to the\n// row first), Enter presses, Space selects.\n\nimport { useCallback, useContext, useEffect, useMemo, useRef, useState, type KeyboardEvent, type ReactNode } from \"react\"\nimport { Checkbox as CheckboxPrimitive } from \"radix-ui\"\nimport { tableRowKeys, WINDOW_THRESHOLD } from \"@exponential_app/eui\"\nimport { InstanceContext, ScopeContext, SurfaceContext, deriveContext, readView, useSurfaceContext } from \"../context\"\nimport { boundPath, getPointer, setPointer, LITERAL_ROWS_ROOT } from \"@exponential_app/eui/web\"\nimport { WindowedList, type WindowedListHandle } from \"../list\"\nimport { NodeView, type NativeProps } from \"../node-view\"\nimport { partClass } from \"@exponential_app/eui/web\"\nimport { useBoundState } from \"./bound\"\nimport { displayString } from \"@exponential_app/eui\"\nimport { arr, bool, BuiltinIcon, num, phrase, str, useParts, objects } from \"./shared\"\nimport { sortRows, tableMinWidth, tableTemplate, type TableColumn, type TableSort as Sort } from \"@exponential_app/eui/web\"\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\nexport function TableNative({ node, props, rootProps, emit, scope, domId }: NativeProps) {\n const ctx = useSurfaceContext()\n const part = useParts(node, props)\n const columns = objects<TableColumn>(props.columns)\n const rows = objects<Record<string, unknown>>(props.rows)\n const rowKey = str(props.rowKey, `id`)\n const selectable = str(props.selectable, `none`)\n const striped = bool(props.striped)\n const rowsPath = boundPath(node.props, `rows`, scope)\n const sortBound = boundPath(node.props, `sort`, scope) !== undefined\n const rawSort = props.sort as Sort | undefined\n const [sort, setSort] = useBoundState<Sort | null>(node, scope, `sort`, rawSort && rawSort.key ? { key: rawSort.key, direction: rawSort.direction === `desc` ? `desc` : `asc` } : null)\n const [selected, setSelected] = useBoundState<string[]>(node, scope, `selected`, arr<unknown>(props.selected).map(String))\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 = useMemo(() => tableRowKeys(rows, rowKey), [rows, rowKey])\n const keyOf = (_row: Record<string, unknown>, i: number) => rowKeys[i] ?? String(i)\n const order = useMemo(() => (sortBound ? rows.map((_, i) => i) : sortRows(rows, sort, columns.find((c) => c.key === sort?.key), ctx.locale)), [rows, sort, sortBound, columns, ctx.locale])\n // The checkbox column is as wide as the checkbox (round 2 §7); EXP-1548:\n // header and body never narrower than the columns, the root scrolls.\n const template = tableTemplate(columns, selectable === `multiple`)\n const minWidth = tableMinWidth(columns, selectable === `multiple`)\n const cycle = (c: TableColumn) => {\n const next: Sort = sort?.key === c.key && sort.direction === `asc` ? { key: c.key, direction: `desc` } : { key: c.key, direction: `asc` }\n setSort(next)\n void emit(`sort`, { sort: next }, { sort: next })\n }\n const select = (next: string[]) => {\n setSelected(next)\n void emit(`select`, { selected: next }, { selected: next })\n }\n const allKeys = rows.map(keyOf)\n const allSelected = allKeys.length > 0 && allKeys.every((k) => selected.includes(k))\n const someSelected = !allSelected && allKeys.some((k) => selected.includes(k))\n const interactive = selectable !== `none` || Boolean(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] = useState<string | null>(null)\n const orderKeys = order.map((i) => keyOf(rows[i], i))\n const stopKey = focusKey !== null && orderKeys.includes(focusKey) ? focusKey : (orderKeys.find((k) => selected.includes(k)) ?? orderKeys[0] ?? null)\n const bodyRef = useRef<HTMLDivElement | null>(null)\n const windowRef = useRef<WindowedListHandle | null>(null)\n const pendingFocus = useRef<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 = useCallback((key: string) => {\n const k = `[role=\"row\"][data-key=\"${typeof CSS !== `undefined` && CSS.escape ? CSS.escape(key) : key.replace(/\"/g, `\\\\\"`)}\"]`\n return bodyRef.current?.querySelector<HTMLElement>(`:scope > ${k}, :scope > .xui-list-window > .xui-list-item > ${k}`) ?? null\n }, [])\n const moveTo = (pos: number) => {\n if (orderKeys.length === 0) return\n const clamped = Math.max(0, Math.min(orderKeys.length - 1, pos))\n const key = orderKeys[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's\n // ref focuses it when it mounts.\n pendingFocus.current = key\n windowRef.current?.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 useEffect(\n () =>\n ctx.registerScroller(domId, (index, align) => {\n const pos = order.indexOf(index)\n if (pos < 0) return\n if (windowed) windowRef.current?.scrollToIndex(pos, align)\n else focusRow(keyOf(rows[index], index))?.scrollIntoView({ block: align === `center` || align === `start` || align === `end` ? align : `nearest` })\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [ctx, domId, order, windowed, rows, rowKeys]\n )\n // Literal (unbound) rows: a slot cell's edits live HERE, per row key, never\n // in the surface data model (there is no path to write them to).\n const [literalEdits, setLiteralEdits] = useState<Record<string, Record<string, unknown>>>({})\n const editLiteral = useCallback((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 const cell = (c: TableColumn, row: Record<string, unknown>, index: number): ReactNode => {\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 // Round 2 §3: every formatted cell goes through the surface Formatter,\n // guarded as the bind table's format functions are: a value that is not\n // a finite number = an empty cell, a currency that is not 3 letters =\n // an empty cell (Intl would throw).\n const n = cellNumber(v)\n switch (c.type) {\n case `number`:\n return Number.isFinite(n) ? ctx.formatter.number(n, { decimals }) : ``\n case `currency`: {\n const code = c.currency === undefined ? `USD` : c.currency\n return Number.isFinite(n) && typeof code === `string` && CURRENCY_CODE.test(code) ? ctx.formatter.currency(n, code, { decimals }) : ``\n }\n case `percent`:\n return Number.isFinite(n) ? ctx.formatter.percent(n, { decimals }) : ``\n case `date`:\n return missing ? `` : ctx.formatter.date(v)\n case `relativeTime`:\n return missing ? `` : ctx.formatter.relativeTime(v, ctx.now())\n case `boolean`:\n return v ? <BuiltinIcon slot=\"Checkbox.check\" size={16} /> : <span className=\"xui-sr-only\">—</span>\n case `badge`:\n return v === undefined || v === null || v === `` ? null : (\n <span className={`${ctx.compiled.scope} ${partClass(`Badge`, `root`)} xui-table-badge`} data-xui-part=\"Badge/root\" data-m-variant=\"secondary\">\n <span className={`${ctx.compiled.scope} ${partClass(`Badge`, `label`)}`} data-xui-part=\"Badge/label\" data-m-variant=\"secondary\">\n {String(v)}\n </span>\n </span>\n )\n case `slot`: {\n const slot = c.slot ? node.slots?.[c.slot] : undefined\n if (!slot) return null\n const key = keyOf(row, index)\n return <RowScope rowsPath={rowsPath} row={rowsPath ? row : (literalEdits[key] ?? row)} rowKey={key} index={index} tableId={domId} node={slot} onLiteralEdit={editLiteral} />\n }\n default:\n return displayString(v)\n }\n }\n\n const renderRow = (pos: number) => {\n const index = order[pos]\n const row = rows[index]\n const key = keyOf(row, index)\n const isSel = selected.includes(key)\n const odd = pos % 2 === 1\n const press = () => {\n if (selectable === `single`) select(isSel ? [] : [key])\n if (node.on?.rowPress) void emit(`rowPress`, { key, row })\n }\n return (\n <div\n key={key}\n role=\"row\"\n aria-rowindex={pos + 2}\n aria-selected={selectable !== `none` ? isSel : undefined}\n tabIndex={interactive ? (key === stopKey ? 0 : -1) : undefined}\n data-key={key}\n onFocus={interactive ? (e) => e.target === e.currentTarget && key !== focusKey && setFocusKey(key) : undefined}\n ref={\n interactive\n ? (el: HTMLDivElement | null) => {\n // A row the keyboard moved to before it was mounted (a\n // windowed body): focus it the moment it mounts.\n if (el && pendingFocus.current === key) {\n pendingFocus.current = null\n el.focus()\n }\n }\n : undefined\n }\n {...(part.atWith(`row`, key, { striped: striped && odd }, isSel && `selected`) as Record<string, string>)}\n style={{ gridTemplateColumns: template }}\n onClick={interactive && selectable !== `multiple` ? press : node.on?.rowPress ? press : undefined}\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 pending = pendingFocus.current === null ? -1 : orderKeys.indexOf(pendingFocus.current)\n moveTo((pending >= 0 ? pending : pos) + (e.key === `ArrowDown` ? 1 : -1))\n } else if (e.key === `Home` || e.key === `End`) {\n e.preventDefault()\n moveTo(e.key === `Home` ? 0 : orderKeys.length - 1)\n }\n }}\n >\n {selectable === `multiple` ? (\n <div role=\"gridcell\" className=\"xui-table-check\">\n <CheckboxPrimitive.Root\n {...(part.at(`checkbox`, key, isSel && `checked`) as Record<string, string>)}\n className={`${part(`checkbox`).className as string} xui-Checkbox-box`}\n checked={isSel}\n aria-label={ctx.t(`selectRow`)}\n onClick={(e) => e.stopPropagation()}\n onCheckedChange={(next) => select(next === true ? [...selected, key] : selected.filter((k) => k !== key))}\n >\n <CheckboxPrimitive.Indicator className=\"xui-Checkbox-check\">\n <BuiltinIcon slot=\"Checkbox.check\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n </div>\n ) : null}\n {columns.map((c, ci) => (\n <div key={c.key} role={interactive ? `gridcell` : `cell`} {...(part.atWith(`cell`, `${key}.${ci}`, { align: c.align ?? `start` }) as Record<string, string>)} data-type={c.type ?? `text`} data-truncate={c.truncate ? `true` : undefined}>\n {c.truncate ? <span className=\"xui-table-text\">{cell(c, row, index)}</span> : cell(c, row, index)}\n </div>\n ))}\n </div>\n )\n }\n\n const header = (\n <div role=\"rowgroup\" {...(part(`header`) as Record<string, string>)} data-sticky={bool(props.stickyHeader) ? `true` : undefined} style={{ minWidth }}>\n <div role=\"row\" aria-rowindex={1} className=\"xui-table-row\" style={{ gridTemplateColumns: template }}>\n {selectable === `multiple` ? (\n <div role=\"columnheader\" className=\"xui-table-check\">\n <CheckboxPrimitive.Root\n {...(part.at(`checkbox`, `header`, allSelected && `checked`) as Record<string, string>)}\n className={`${part(`checkbox`).className as string} xui-Checkbox-box`}\n checked={allSelected ? true : someSelected ? `indeterminate` : false}\n aria-label={ctx.t(`selectAll`)}\n onCheckedChange={(next) => select(next === true ? allKeys : [])}\n >\n <CheckboxPrimitive.Indicator className=\"xui-Checkbox-check\">\n <BuiltinIcon slot=\"Checkbox.check\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n </div>\n ) : null}\n {columns.map((c, ci) => {\n const active = sort?.key === c.key ? sort.direction : null\n const ariaSort = active === `asc` ? `ascending` : active === `desc` ? `descending` : c.sortable ? `none` : undefined\n return (\n <div key={c.key} role=\"columnheader\" aria-sort={ariaSort} {...(part.atWith(`headerCell`, ci, { align: c.align ?? `start` }) as Record<string, string>)}>\n {c.sortable ? (\n <button type=\"button\" className=\"xui-table-sort\" aria-label={phrase(ctx, active === `asc` ? `sortByDescending` : `sortByAscending`, { name: str(c.label) }, () => `${str(c.label)}: ${ctx.t(active === `asc` ? `sortDescending` : `sortAscending`)}`)} onClick={() => cycle(c)}>\n <span>{str(c.label)}</span>\n <span {...(part(`sortIcon`) as Record<string, string>)} data-direction={active ?? undefined} aria-hidden=\"true\">\n {active ? <BuiltinIcon slot={`Table.sortIcon.${active}`} /> : null}\n </span>\n </button>\n ) : (\n <span>{str(c.label)}</span>\n )}\n </div>\n )\n })}\n </div>\n </div>\n )\n\n const caption = str(props.caption)\n return (\n <div\n {...(rootProps as Record<string, unknown>)}\n role={interactive ? `grid` : `table`}\n aria-rowcount={rows.length + 1}\n aria-multiselectable={selectable === `multiple` || undefined}\n aria-describedby={caption ? `${domId}.caption` : undefined}\n aria-label={caption ? undefined : ((rootProps as Record<string, string | undefined>)[`aria-label`] ?? ctx.t(`table`))}\n data-windowed={windowed ? `true` : undefined}\n >\n {header}\n <div role=\"rowgroup\" {...(part(`body`) as Record<string, string>)} className={`${(part(`body`) as { className: string }).className} xui-table-body`} style={{ minWidth }} ref={bodyRef}>\n {rows.length === 0 ? (\n <div role=\"row\">\n <div role=\"cell\" {...(part(`empty`) as Record<string, string>)}>\n {str(props.emptyText) || ctx.t(`noResults`)}\n </div>\n </div>\n ) : windowed ? (\n <WindowedList ref={windowRef} count={order.length} itemKey={(i) => keyOf(rows[order[i]], order[i])} estimatedItemHeight={num(ctx.theme.tokens.control?.row, 40)} overscan={8} renderItem={renderRow} />\n ) : (\n order.map((_, pos) => renderRow(pos))\n )}\n </div>\n {caption ? (\n <div {...(part(`caption`) as Record<string, string>)} id={`${domId}.caption`}>\n {caption}\n </div>\n ) : null}\n {selectable === `multiple` && selected.length ? <span className=\"xui-sr-only\" aria-live=\"polite\">{ctx.t(`selectedCount`, { count: selected.length })}</span> : null}\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` scopes\n * to the row's pointer. Literal rows are mounted into a read view of the\n * data model at a synthetic pointer: absolute bindings still read (and\n * write) the real model, a write UNDER the row goes to the table's local\n * per-row state (`onLiteralEdit`), so it survives the next render. */\nfunction RowScope({ rowsPath, row, rowKey, index, tableId, node, onLiteralEdit }: { rowsPath?: string; row: Record<string, unknown>; rowKey: string; index: number; tableId: string; node: NativeProps[`node`]; onLiteralEdit: (key: string, base: Record<string, unknown>, pointer: string, value: unknown) => void }) {\n const ctx = useSurfaceContext()\n const outer = useContext(InstanceContext)\n const literalPath = `${LITERAL_ROWS_ROOT}/${tableId.replace(/[~/]/g, `_`)}/${index}`\n const view = useMemo(() => {\n if (rowsPath) return ctx\n const data = readView(ctx, literalPath, row)\n const setData = (pointer: string, value: unknown) => {\n if (pointer === literalPath || pointer.startsWith(`${literalPath}/`)) onLiteralEdit(rowKey, (getPointer(data(), literalPath) as Record<string, unknown>) ?? row, pointer.slice(literalPath.length), value)\n else ctx.setData(pointer, value)\n }\n return deriveContext(ctx, { setData }, data)\n }, [ctx, rowsPath, literalPath, row, rowKey, onLiteralEdit])\n return (\n <SurfaceContext.Provider value={view}>\n <ScopeContext.Provider value={rowsPath ? `${rowsPath}/${index}` : literalPath}>\n <InstanceContext.Provider value={`${outer}.${rowKey}`}>\n <NodeView node={node} />\n </InstanceContext.Provider>\n </ScopeContext.Provider>\n </SurfaceContext.Provider>\n )\n}\n",
36
37
  "// VAPP-87 + round 1: Text (`live` → an aria-live region; EXP-1324 `shimmer`\n// → `data-xui-shimmer`, base-css), Markdown (`lines` truncation), Icon.\n\nimport { displayString } from \"@exponential_app/eui\"\nimport { useSurfaceContext } from \"../context\"\nimport { IconGlyph } from \"../icons\"\nimport { BuiltinMarkdown } from \"../markdown\"\nimport type { NativeProps } from \"../node-view\"\nimport { mergeStyle } from \"../node-view\"\nimport { num, str } from \"./shared\"\n\nexport function TextNative({ props, rootProps }: NativeProps) {\n const lines = num(props.lines, 0)\n const align = props.align === `end` ? `end` : props.align === `center` ? `center` : 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 (round 2 §2, text-direction.json).\n const style: Record<string, string | number> = {}\n if (lines > 1) style.WebkitLineClamp = lines\n const live = props.live === `polite` || props.live === `assertive` ? props.live : undefined\n return (\n <span {...(rootProps as Record<string, unknown>)} aria-live={live} aria-atomic={live ? true : undefined} data-xui-align={align} data-lines={lines > 0 ? lines : undefined} data-clamp={lines > 1 ? `` : undefined} data-xui-shimmer={props.shimmer === true ? `` : undefined} style={mergeStyle(rootProps, Object.keys(style).length ? style : undefined)}>\n {displayString(props.text)}\n </span>\n )\n}\n\nexport function MarkdownNative({ props, rootProps }: NativeProps) {\n const ctx = useSurfaceContext()\n const text = displayString(props.text)\n const Host = ctx.host.Markdown\n const lines = num(props.lines, 0)\n return (\n <div {...(rootProps as Record<string, unknown>)} data-lines={lines > 0 ? lines : undefined} style={mergeStyle(rootProps, lines > 0 ? ({ WebkitLineClamp: lines } as React.CSSProperties) : undefined)}>\n {Host ? <Host text={text} className=\"xui-md\" /> : <BuiltinMarkdown text={text} host={ctx.host} />}\n </div>\n )\n}\n\nexport function IconNative({ props, rootProps }: NativeProps) {\n const ctx = useSurfaceContext()\n const name = str(props.name, `ui-icon-placeholder`)\n const label = str(props.label)\n return (\n <span {...(rootProps as Record<string, unknown>)} 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",
37
38
  "// VAPP-87: the built-in markdown painter. The parser (a small GFM subset →\n// a block/inline tree) is the web layer's (`@exponential_app/eui/web`\n// markdown.ts, FEED-128); this paints the tree through the theme's\n// `Markdown/<part>` recipes. A host with a real renderer (the app's TipTap\n// view) passes it as `host.Markdown` and this one steps aside. VAPP-103:\n// every href passes the URL policy (denied = the label as text), every\n// image the media policy. A paragraph that is one image is a BLOCK image\n// (denied = a paragraph of its alt text); an image inside running text is\n// its alt text, as on every renderer.\n\nimport { Fragment, createElement, useMemo, type MouseEvent, type ReactNode } from \"react\"\nimport { linkHref, mediaRequestOf, parseMarkdown, type MarkdownBlock, type MarkdownInline, type MarkdownList } from \"@exponential_app/eui/web\"\nimport type { HostPlugin } from \"./host\"\nimport { useMediaSource } from \"./media\"\n\nexport { MAX_LINK_NESTING, MAX_LINK_DEST, MAX_BLOCK_NESTING, linkAt, wholeImage, parseList } from \"@exponential_app/eui/web\"\n\n/** A block image through the media policy and loader in an `imageHeight`\n * (160px, ×4) box (loading or loaded, so the box never jumps;\n * the alt text there while it loads or when it fails). A src the policy\n * DENIES is a paragraph of its alt text (nothing without one). */\nfunction MarkdownImage({ host, src, alt }: { host: HostPlugin; src: string; alt: string }) {\n const media = useMediaSource(host, src)\n if (mediaRequestOf(host, src) === null) return alt ? <p className=\"xui-Markdown-paragraph\">{alt}</p> : null\n return (\n <div className=\"xui-Markdown-image\" role=\"img\" aria-label={alt}>\n {media.url && !media.error ? <img alt=\"\" src={media.url} /> : <span className=\"xui-Markdown-imageAlt\">{alt}</span>}\n </div>\n )\n}\n\n/** A policed markdown link: a host with `openUrl` opens it (a plain click\n * goes through the host, never a bare new tab). */\nfunction MarkdownLink({ host, href, children }: { host: HostPlugin; href: string; children: ReactNode }) {\n const onClick = host.openUrl\n ? (e: MouseEvent<HTMLAnchorElement>) => {\n e.preventDefault()\n host.openUrl!(href)\n }\n : undefined\n return <a className=\"xui-Markdown-link\" href={href} target=\"_blank\" rel=\"noreferrer\" onClick={onClick}>{children}</a>\n}\n\nfunction inline(nodes: readonly MarkdownInline[], host: HostPlugin): ReactNode[] {\n return nodes.map((n, k) => {\n if (typeof n === `string`) return n\n switch (n.type) {\n case `code`:\n return <code key={k} className=\"xui-Markdown-code\">{n.text}</code>\n case `strong`:\n return <strong key={k}>{inline(n.children, host)}</strong>\n case `em`:\n return <em key={k}>{inline(n.children, host)}</em>\n case `del`:\n return <del key={k}>{n.text}</del>\n case `link`: {\n const href = linkHref(host, n.dest)\n const label = inline(n.children, host)\n return href ? <MarkdownLink key={k} host={host} href={href}>{label}</MarkdownLink> : <span key={k} className=\"xui-Markdown-link\" data-denied=\"\">{label}</span>\n }\n }\n })\n}\n\nfunction renderList(list: MarkdownList, host: HostPlugin, key: number): ReactNode {\n const items = list.items.map((item, n) => (\n <li key={n} className=\"xui-Markdown-listItem\" data-task={item.task === undefined ? undefined : item.task ? `done` : `todo`}>\n {item.task === undefined ? null : <input type=\"checkbox\" checked={item.task} readOnly />}\n {item.task === undefined ? null : ` `}\n {inline(item.content, host)}\n {item.children.map((c, ci) => <Fragment key={`c${ci}`}>{renderList(c, host, ci)}</Fragment>)}\n </li>\n ))\n return list.ordered ? <ol key={key}>{items}</ol> : <ul key={key}>{items}</ul>\n}\n\nfunction block(b: MarkdownBlock, host: HostPlugin, key: number): ReactNode {\n switch (b.type) {\n case `paragraph`:\n return <p key={key} className=\"xui-Markdown-paragraph\">{inline(b.children, host)}</p>\n case `image`:\n return <MarkdownImage key={key} host={host} src={b.src} alt={b.alt} />\n case `codeBlock`:\n return <pre key={key} className=\"xui-Markdown-codeBlock\" data-lang={b.lang}><code>{b.text}</code></pre>\n case `heading`:\n return createElement(`h${Math.min(b.level, 6)}`, { key, className: `xui-Markdown-heading`, \"data-level\": b.level }, ...inline(b.children, host))\n case `quote`:\n return <blockquote key={key} className=\"xui-Markdown-quote\">{blocks(b.children, host)}</blockquote>\n case `list`:\n return renderList(b.list, host, key)\n case `table`:\n return (\n <table key={key} className=\"xui-Markdown-table\">\n <thead><tr>{b.head.map((h, c) => <th key={c} style={b.align[c] ? { textAlign: b.align[c] } : undefined}>{inline(h, host)}</th>)}</tr></thead>\n <tbody>{b.rows.map((r, ri) => <tr key={ri}>{r.map((cell, c) => <td key={c} style={b.align[c] ? { textAlign: b.align[c] } : undefined}>{inline(cell, host)}</td>)}</tr>)}</tbody>\n </table>\n )\n case `rule`:\n return <hr key={key} />\n }\n}\n\nfunction blocks(tree: readonly MarkdownBlock[], host: HostPlugin): ReactNode[] {\n return tree.map((b, k) => <Fragment key={k}>{block(b, host, k)}</Fragment>)\n}\n\nexport function renderMarkdown(text: string, host: HostPlugin = {}): ReactNode[] {\n return blocks(parseMarkdown(text), host)\n}\n\nexport function BuiltinMarkdown({ text, className, host }: { text: string; className?: string; host?: HostPlugin }) {\n // Parsed once per text (and host), not on every parent render.\n const tree = useMemo(() => renderMarkdown(text, host), [text, host])\n return <div className={className ? `xui-md ${className}` : `xui-md`}>{tree}</div>\n}\n",
38
- "// VAPP-87 + round 1: the native component map — every `kind: native` of the\n// core catalog (macros expand in the reducer and never reach here). An\n// extension may add to or override this through `registerExtension`.\n// `natives.test.ts` gates it against the catalog: every native has a\n// painter, no painter is left without a catalog entry.\n\nimport type { ComponentType } from \"react\"\nimport { FormNative } from \"../form\"\nimport type { NativeProps } from \"../node-view\"\nimport { ButtonNative, LinkNative, ToggleNative } from \"./actions\"\nimport { ChartNative } from \"./chart\"\nimport { ChipInputNative, FileUploadNative } from \"./chips\"\nimport { ChoiceTilesNative } from \"./choice-tiles\"\nimport { CodeBlockNative } from \"./code\"\nimport { DatePickerNative, DateRangePickerNative, TimePickerNative } from \"./dates\"\nimport { ResizableNative } from \"./resizable\"\nimport { RingNative, SkeletonNative, SpinnerNative, TreeGuidesNative, VoiceWaveNative } from \"./feedback\"\nimport { CheckboxNative, ComposerNative, InputNative, NumberFieldNative, RadioNative, SliderNative, SwitchNative, TextareaNative } from \"./inputs\"\nimport { BoxNative, ListNative, UnknownNative } from \"./layout\"\nimport { AudioPlayerNative, AvatarNative, CarouselNative, ImageNative, VideoNative } from \"./media\"\nimport { AccordionNative, SegmentedNative, TabsNative } from \"./nav\"\nimport { DialogNative, DrawerNative, MenuNative, PopoverNative, ToastNative, TooltipNative } from \"./overlays\"\nimport { QrCodeNative, QrScannerNative } from \"./qr\"\nimport { SearchListNative } from \"./search\"\nimport { SelectNative } from \"./select\"\nimport { TableNative } from \"./table\"\nimport { IconNative, MarkdownNative, TextNative } from \"./text\"\n\n\nexport const NATIVES: Record<string, ComponentType<NativeProps>> = {\n Box: BoxNative,\n List: ListNative,\n Resizable: ResizableNative,\n Text: TextNative,\n Markdown: MarkdownNative,\n CodeBlock: CodeBlockNative,\n Image: ImageNative,\n Icon: IconNative,\n Video: VideoNative,\n AudioPlayer: AudioPlayerNative,\n Avatar: AvatarNative,\n QrCode: QrCodeNative,\n Carousel: CarouselNative,\n Tabs: TabsNative,\n Segmented: SegmentedNative,\n Accordion: AccordionNative,\n Dialog: DialogNative,\n Drawer: DrawerNative,\n Popover: PopoverNative,\n Tooltip: TooltipNative,\n Menu: MenuNative,\n Toast: ToastNative,\n Ring: RingNative,\n Spinner: SpinnerNative,\n Skeleton: SkeletonNative,\n VoiceWave: VoiceWaveNative,\n Table: TableNative,\n Chart: ChartNative,\n Button: ButtonNative,\n Link: LinkNative,\n Toggle: ToggleNative,\n Form: FormNative,\n Input: InputNative,\n Textarea: TextareaNative,\n NumberField: NumberFieldNative,\n Checkbox: CheckboxNative,\n Radio: RadioNative,\n ChoiceTiles: ChoiceTilesNative,\n Switch: SwitchNative,\n Slider: SliderNative,\n Select: SelectNative,\n SearchList: SearchListNative,\n ChipInput: ChipInputNative,\n DatePicker: DatePickerNative,\n DateRangePicker: DateRangePickerNative,\n TimePicker: TimePickerNative,\n FileUpload: FileUploadNative,\n QrScanner: QrScannerNative,\n Composer: ComposerNative,\n TreeGuides: TreeGuidesNative,\n Unknown: UnknownNative,\n}\n\nexport const NATIVE_NAMES: readonly string[] = Object.keys(NATIVES)\n",
39
+ "// EXP-1586: ZoomableImage (catalog/style.json `zoomableImage`): the picture\n// through the host's media request, transformed by the shared zoom controller\n// (@exponential_app/eui/web/primitives `createZoomController`, every number\n// from the core's src/zoom.ts), and THE zoom pill: − / the percent (THE Menu\n// of `zoomMenu`, on the Menu's own parts and recipe) / + / a hairline / fit.\n// The parts' look is the theme recipe; the layout styles only place them.\n\nimport { useEffect, useMemo, useState } from \"react\"\nimport { DropdownMenu as MenuPrimitive } from \"radix-ui\"\nimport { MEDIA_INTRINSIC_WIDTH, OVERLAY_OFFSET, OVERLAY_PADDING, ZOOM } from \"@exponential_app/eui\"\nimport type { UiNode, ZoomInitial } from \"@exponential_app/eui\"\nimport { ZOOMABLE_IMAGE_NATIVE_TRANSITION, zoomBoxAspect, zoomableImageLayout, type ZoomControls } from \"@exponential_app/eui/web/primitives\"\nimport { useSurfaceContext } from \"../context\"\nimport { useMediaSource } from \"../media\"\nimport type { NativeProps } from \"../node-view\"\nimport { mergeStyle } from \"../node-view\"\nimport { ZOOM_MATH, useZoomableImage } from \"../primitives/zoomable-image\"\nimport { useBoundState } from \"./bound\"\nimport { MenuItems, type MenuItem } from \"./overlays\"\nimport { BuiltinIcon, num, str, useParts } from \"./shared\"\n\nconst LAYOUT = zoomableImageLayout(ZOOM.pill)\n\nconst positive = (v: unknown): number | undefined => (typeof v === `number` && Number.isFinite(v) && v > 0 ? v : undefined)\n\nexport function ZoomableImageNative({ node, props, rootProps, emit, scope }: NativeProps) {\n const ctx = useSurfaceContext()\n const part = useParts(node, props)\n // THE Menu's parts (its recipe styles the percent button's menu).\n const menuNode = useMemo<UiNode>(() => ({ id: `${node.id}.menu`, component: `Menu`, props: {}, children: [] }), [node.id])\n const menuPart = useParts(menuNode, menuNode.props)\n const src = str(props.src)\n const alt = str(props.alt)\n const controls = str(props.controls, `auto`) as ZoomControls\n const media = useMediaSource(ctx.host, src)\n // `scale` is bindable: a settled zoom writes the bound path.\n const [, setScale] = useBoundState<number | undefined>(node, scope, `scale`, positive(props.scale))\n const zoom = useZoomableImage({\n src: media.url,\n naturalWidth: positive(props.naturalWidth),\n naturalHeight: positive(props.naturalHeight),\n initial: str(props.initial, `auto`) as ZoomInitial,\n maxScale: positive(props.maxScale),\n scale: positive(props.scale),\n controls,\n transition: ctx.reducedMotion ? null : ZOOMABLE_IMAGE_NATIVE_TRANSITION,\n onZoom: (scale, atFit) => {\n setScale(scale)\n void emit(`zoom`, { scale, atFit }, { scale })\n },\n onTap: () => void emit(`tap`),\n })\n const [menuOpen, setMenuOpen] = useState(false)\n useEffect(() => zoom.controller.current?.holdPill(menuOpen), [menuOpen])\n const styled = node.style !== undefined && (node.style.height !== undefined || node.style.aspectRatio !== undefined)\n const aspect = zoomBoxAspect(ZOOM_MATH, zoom.natural, styled)\n const items: MenuItem[] = menuOpen ? zoom.menuItems(ctx.t(`zoomFit`)).map((item, i) => ({ kind: `checkbox`, label: item.label, value: String(i), checked: item.checked })) : []\n const choose = (event: string, payload?: Record<string, unknown>) => {\n if (event !== `select`) return\n const c = zoom.controller.current\n const f = c?.frame()\n const picked = c && f ? zoom.menuItems(ctx.t(`zoomFit`))[num(payload?.value, -1)] : undefined\n setMenuOpen(false)\n if (!c || !picked) return\n if (picked.scale === null) c.rest()\n else c.zoomScale(picked.scale)\n }\n const { pill } = zoom\n return (\n <div\n {...(rootProps as Record<string, unknown>)}\n ref={zoom.rootRef}\n role=\"group\"\n aria-label={alt || undefined}\n tabIndex={0}\n style={mergeStyle(rootProps, { ...LAYOUT.root, ...(aspect !== null ? { aspectRatio: String(aspect) } : {}) })}\n >\n <img {...(part(`image`) as Record<string, string>)} ref={zoom.imageRef} src={media.url || undefined} alt={alt} draggable={false} loading=\"lazy\" decoding=\"async\" style={{ ...LAYOUT.image, ...(zoom.natural ? { width: zoom.natural.width, height: zoom.natural.height } : {}) }} onLoad={zoom.onImageLoad} />\n <svg className=\"xui-media-sizer\" aria-hidden=\"true\" width={MEDIA_INTRINSIC_WIDTH} height={1} />\n {controls !== `none` ? (\n <div {...(part(`pill`) as Record<string, string>)} ref={zoom.pillRef} role=\"toolbar\" data-state={zoom.pillVisible ? `open` : `closed`} style={zoom.pillVisible ? LAYOUT.pill : { ...LAYOUT.pill, ...LAYOUT.pillHidden }}>\n <button type=\"button\" {...(part(`zoomOut`, pill.atMin && `disabled`) as Record<string, string>)} style={LAYOUT.button} aria-label={ctx.t(`zoomOut`)} disabled={pill.atMin} onClick={() => zoom.controller.current?.step(-1)}>\n <BuiltinIcon slot=\"ZoomableImage.zoomOut\" size={16} />\n </button>\n <MenuPrimitive.Root open={menuOpen} onOpenChange={setMenuOpen} dir={ctx.direction}>\n <MenuPrimitive.Trigger asChild>\n <button type=\"button\" {...(part(`percent`, menuOpen && `open`) as Record<string, string>)} style={LAYOUT.percent} aria-label={ctx.t(`zoomLevel`)}>\n {pill.percent}\n </button>\n </MenuPrimitive.Trigger>\n <MenuPrimitive.Portal container={ctx.portal ?? undefined}>\n <MenuPrimitive.Content {...(menuPart(`content`, menuOpen && `open`) as Record<string, string>)} side=\"top\" align=\"center\" sideOffset={OVERLAY_OFFSET} collisionPadding={OVERLAY_PADDING} data-xui-overlay=\"Menu\" data-open-on=\"press\">\n <MenuItems ns={MenuPrimitive} items={items} rawItems={undefined} part={menuPart} overlay=\"Menu\" emit={choose} scope={scope} path=\"\" close={() => setMenuOpen(false)} />\n </MenuPrimitive.Content>\n </MenuPrimitive.Portal>\n </MenuPrimitive.Root>\n <button type=\"button\" {...(part(`zoomIn`, pill.atMax && `disabled`) as Record<string, string>)} style={LAYOUT.button} aria-label={ctx.t(`zoomIn`)} disabled={pill.atMax} onClick={() => zoom.controller.current?.step(1)}>\n <BuiltinIcon slot=\"ZoomableImage.zoomIn\" size={16} />\n </button>\n <span {...(part(`divider`) as Record<string, string>)} aria-hidden=\"true\" style={LAYOUT.divider} />\n <button type=\"button\" {...(part(`fit`, pill.atRest && `selected`) as Record<string, string>)} style={LAYOUT.button} aria-label={ctx.t(`zoomToFit`)} aria-pressed={pill.atRest} onClick={() => zoom.controller.current?.rest()}>\n <BuiltinIcon slot=\"ZoomableImage.fit\" size={16} />\n </button>\n </div>\n ) : null}\n </div>\n )\n}\n",
40
+ "// VAPP-87 + round 1: the native component map — every `kind: native` of the\n// core catalog (macros expand in the reducer and never reach here). An\n// extension may add to or override this through `registerExtension`.\n// `natives.test.ts` gates it against the catalog: every native has a\n// painter, no painter is left without a catalog entry.\n\nimport type { ComponentType } from \"react\"\nimport { FormNative } from \"../form\"\nimport type { NativeProps } from \"../node-view\"\nimport { ButtonNative, LinkNative, ToggleNative } from \"./actions\"\nimport { ChartNative } from \"./chart\"\nimport { ChipInputNative, FileUploadNative } from \"./chips\"\nimport { ChoiceTilesNative } from \"./choice-tiles\"\nimport { CodeBlockNative } from \"./code\"\nimport { DatePickerNative, DateRangePickerNative, TimePickerNative } from \"./dates\"\nimport { MotionNative } from \"./motion\"\nimport { ResizableNative } from \"./resizable\"\nimport { RingNative, SkeletonNative, SpinnerNative, TreeGuidesNative, VoiceWaveNative } from \"./feedback\"\nimport { CheckboxNative, ComposerNative, InputNative, NumberFieldNative, RadioNative, SliderNative, SwitchNative, TextareaNative } from \"./inputs\"\nimport { BoxNative, ListNative, UnknownNative } from \"./layout\"\nimport { AudioPlayerNative, AvatarNative, CarouselNative, ImageNative, VideoNative } from \"./media\"\nimport { AccordionNative, SegmentedNative, TabsNative } from \"./nav\"\nimport { DialogNative, DrawerNative, MenuNative, PopoverNative, ToastNative, TooltipNative } from \"./overlays\"\nimport { QrCodeNative, QrScannerNative } from \"./qr\"\nimport { SearchListNative } from \"./search\"\nimport { SelectNative } from \"./select\"\nimport { TableNative } from \"./table\"\nimport { IconNative, MarkdownNative, TextNative } from \"./text\"\nimport { ZoomableImageNative } from \"./zoomable-image\"\n\n\nexport const NATIVES: Record<string, ComponentType<NativeProps>> = {\n Box: BoxNative,\n List: ListNative,\n Resizable: ResizableNative,\n Text: TextNative,\n Markdown: MarkdownNative,\n CodeBlock: CodeBlockNative,\n Image: ImageNative,\n ZoomableImage: ZoomableImageNative,\n Icon: IconNative,\n Video: VideoNative,\n AudioPlayer: AudioPlayerNative,\n Avatar: AvatarNative,\n QrCode: QrCodeNative,\n Carousel: CarouselNative,\n Tabs: TabsNative,\n Segmented: SegmentedNative,\n Accordion: AccordionNative,\n Dialog: DialogNative,\n Drawer: DrawerNative,\n Popover: PopoverNative,\n Tooltip: TooltipNative,\n Menu: MenuNative,\n Toast: ToastNative,\n Ring: RingNative,\n Spinner: SpinnerNative,\n Skeleton: SkeletonNative,\n VoiceWave: VoiceWaveNative,\n Motion: MotionNative,\n Table: TableNative,\n Chart: ChartNative,\n Button: ButtonNative,\n Link: LinkNative,\n Toggle: ToggleNative,\n Form: FormNative,\n Input: InputNative,\n Textarea: TextareaNative,\n NumberField: NumberFieldNative,\n Checkbox: CheckboxNative,\n Radio: RadioNative,\n ChoiceTiles: ChoiceTilesNative,\n Switch: SwitchNative,\n Slider: SliderNative,\n Select: SelectNative,\n SearchList: SearchListNative,\n ChipInput: ChipInputNative,\n DatePicker: DatePickerNative,\n DateRangePicker: DateRangePickerNative,\n TimePicker: TimePickerNative,\n FileUpload: FileUploadNative,\n QrScanner: QrScannerNative,\n Composer: ComposerNative,\n TreeGuides: TreeGuidesNative,\n Unknown: UnknownNative,\n}\n\nexport const NATIVE_NAMES: readonly string[] = Object.keys(NATIVES)\n",
39
41
  "// VAPP-87: `useSurface` — the TS reducer as React state. Feed it A2UI v0.9\n// server messages (`createSurface`, `updateComponents`, `updateDataModel`,\n// `deleteSurface`) or a nested authoring tree, read back the normalized\n// root, the issues and the data model, and hand the result to\n// `<ExponentialSurface surface={…}>`.\n\nimport { useCallback, useMemo, useRef, useState } from \"react\"\nimport { CORE_CATALOG_ID, reduceNested, reduceSurface } from \"@exponential_app/eui\"\nimport type { ExtensionDef, FlatComponent, NestedNode, ReduceIssue, ResolvedTheme, UiNode } from \"@exponential_app/eui\"\nimport { setPointer } from \"@exponential_app/eui/web\"\nimport type { DataModel } from \"@exponential_app/eui/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 UseSurfaceOptions {\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\nexport interface SurfaceState {\n surfaceId: string\n catalogId: string\n root: UiNode | null\n issues: ReduceIssue[]\n /** Round 2: the nodes a data `template` renders per item, by component id\n * (`ReduceResult.templates`: lifted out of the tree, never painted in\n * place). */\n templates?: Readonly<Record<string, UiNode>>\n /** The server's `createSurface.theme`, resolved (a host surface). */\n theme?: ResolvedTheme\n data: DataModel\n /** True after `deleteSurface`. */\n deleted: boolean\n /** The flat components (for template children). */\n components: readonly FlatComponent[]\n 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 data: DataModel\n deleted: boolean\n}\n\n/** One empty list: a fresh `[]` per render would re-reduce on every render. */\nconst NO_EXTENSIONS: readonly ExtensionDef[] = []\n\nexport function useSurface(options: UseSurfaceOptions = {}): SurfaceState {\n const surfaceId = options.surfaceId ?? `main`\n const extensions = options.extensions ?? NO_EXTENSIONS\n const initialRef = useRef<Inner>({\n catalogId: options.catalogId ?? CORE_CATALOG_ID,\n components: [],\n nested: options.initial ?? null,\n data: options.data ?? {},\n deleted: false,\n })\n const [inner, setInner] = useState<Inner>(initialRef.current)\n\n const apply = useCallback(\n (message: A2uiMessage) => {\n setInner((cur) => {\n if (message.createSurface) {\n if (message.createSurface.surfaceId !== surfaceId) return cur\n return { ...cur, catalogId: message.createSurface.catalogId, components: [], nested: null, deleted: false }\n }\n if (message.updateComponents) {\n if (message.updateComponents.surfaceId !== surfaceId) return cur\n // A later update replaces components by id and keeps the rest.\n const byId = new Map(cur.components.map((c) => [c.id, c]))\n for (const c of message.updateComponents.components) byId.set(c.id, c)\n return { ...cur, components: [...byId.values()], nested: null, deleted: false }\n }\n if (message.updateDataModel) {\n if (message.updateDataModel.surfaceId !== surfaceId) return cur\n const { path, value } = message.updateDataModel\n return { ...cur, data: setPointer(cur.data, path ?? ``, value) }\n }\n if (message.deleteSurface) {\n if (message.deleteSurface.surfaceId !== surfaceId) return cur\n return { ...cur, components: [], nested: null, deleted: true }\n }\n return cur\n })\n },\n [surfaceId]\n )\n\n const setData = useCallback((pointer: string, value: unknown) => {\n setInner((cur) => ({ ...cur, data: setPointer(cur.data, pointer, value) }))\n }, [])\n\n const setNested = useCallback((tree: NestedNode) => {\n setInner((cur) => ({ ...cur, nested: tree, components: [], deleted: false }))\n }, [])\n\n const reset = useCallback(() => setInner(initialRef.current), [])\n\n const reduced = useMemo((): { root: UiNode | null; issues: ReduceIssue[]; templates?: Record<string, UiNode> } => {\n if (inner.deleted) return { root: null, issues: [] as ReduceIssue[] }\n if (inner.nested) return reduceNested(inner.nested, { catalogId: inner.catalogId, extensions })\n if (inner.components.length === 0) return { root: null, issues: [] as ReduceIssue[] }\n return reduceSurface(inner.components, { catalogId: inner.catalogId, extensions })\n // extensions are a stable array in practice; a new array means a new catalog view.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [inner.nested, inner.components, inner.catalogId, inner.deleted, extensions])\n\n return {\n surfaceId,\n catalogId: inner.catalogId,\n root: reduced.root,\n issues: reduced.issues,\n templates: reduced.templates,\n data: inner.data,\n deleted: inner.deleted,\n components: inner.components,\n extensions,\n apply,\n setData,\n setNested,\n reset,\n }\n}\n",
40
42
  "// @exponential_app/eui-react — Exponential UI's React renderer (VAPP-87 + round 1).\nexport { ExponentialSurface, resolveThemeInput, surfaceTheme } from \"./surface\"\nexport type { ExponentialSurfaceProps, ThemeInput, SurfaceHandle } from \"./surface\"\nexport { useSurface } from \"./use-surface\"\nexport type { A2uiMessage, SurfaceState, UseSurfaceOptions } from \"./use-surface\"\nexport { registerExtension, defineReactExtension, registeredExtensions, extensionCatalogs } from \"./extensions\"\nexport type { ReactExtension, ExtensionComponent, RegisterExtensionOptions } from \"./extensions\"\nexport type { HostPlugin, IconComponent, IconMap, PaintError, SurfaceActionEvent, SurfaceInputEvent, ExtensionComponentProps, SourceOption } from \"./host\"\nexport { compileTheme, compiledTheme, themeScope, partClass, propAttribute, tokenVar, tokenVarName, cssValue, declarations, ruleSelectors, STATE_SELECTORS, LAYERS } from \"@exponential_app/eui/web\"\nexport type { CompiledTheme } from \"@exponential_app/eui/web\"\nexport { nodeSheet, compileNodeSheet, dynamicStyleEntries, queryToken, nodeClass, surfaceClass, walkNodes } from \"@exponential_app/eui/web\"\nexport type { NodeSheet, DynamicStyleEntry } from \"@exponential_app/eui/web\"\nexport { BASE_CSS } from \"@exponential_app/eui/web\"\nexport { getPointer, setPointer, absolutePath, resolveValue, resolveProps, resolveNodeProps, resolveVisible, bindTree, boundPath, isBinding, isCall, hasDynamic, memoFormatter, CLIENT_FUNCTIONS } from \"@exponential_app/eui/web\"\nexport type { DataModel, DataBinding, FunctionCall, ClientFunction, ResolveContext } from \"@exponential_app/eui/web\"\nexport { useHostOwnedValue, DEBOUNCE_MS } from \"./inputs\"\nexport type { HostOwnedOptions, HostOwnedValue } from \"./inputs\"\nexport { WindowedList } from \"./list\"\nexport type { WindowedListProps, WindowedListHandle } from \"./list\"\nexport { NodeView, useRootProps, useEmitter, runNodeAction, templateItems, itemInstance, mergeStyle } from \"./node-view\"\nexport type { NativeProps, TemplateItem } from \"./node-view\"\nexport { NATIVES, NATIVE_NAMES } from \"./natives\"\nexport { useSurfaceContext, SurfaceContext, ScopeContext, InstanceContext } from \"./context\"\nexport type { SurfaceContextValue } from \"./context\"\nexport { IconGlyph, resolveIcon, FALLBACK_ICONS } from \"./icons\"\nexport { BuiltinMarkdown, renderMarkdown } from \"./markdown\"\nexport { useParts, str, num, bool, arr, BuiltinIcon, builtinIconName, failingChecks } from \"./natives/shared\"\nexport { FormContext, useForm, useField } from \"./form\"\nexport type { FieldHandle, FormContextValue, FieldState } from \"./form\"\nexport { useMediaQuery, useElementSize } from \"./platform\"\nexport { sortRows } from \"./natives/table\"\nexport { parseLocaleNumber } from \"./natives/inputs\"\nexport { acceptsFile } from \"./natives/chips\"\nexport { monthGrid } from \"./natives/dates\"\n// VAPP-91: the host API on React.\nexport { HostSurface, hostPlugin, useHostSurface, useHostSurfaceIds, useHostStatus } from \"./host-surface\"\nexport type { HostSurfaceProps } from \"./host-surface\"\nexport { useMediaSource, useMediaSrc, clearMediaCache, mediaCacheStats, fetchLimited, MEDIA_CACHE_IDLE_MAX } from \"./media\"\nexport { linkHref, mediaRequestOf, urlPolicyOf } from \"@exponential_app/eui/web\"\n",
41
43
  "// VAPP-91: the React side of the host API. An `ExponentialHost` (from\n// `@exponential_app/eui`: transport, router, surfaces, sources, functions,\n// policy) feeds `<HostSurface>`; the renderer's interactions go back through\n// `hostPlugin(host)`. Nothing here knows a transport or a backend.\n\nimport { useCallback, useMemo, useSyncExternalStore } from \"react\"\nimport type { ExponentialHost, SurfaceStore, TransportStatus } from \"@exponential_app/eui\"\nimport type { HostPlugin } from \"./host\"\nimport type { SurfaceState } from \"./use-surface\"\nimport { ExponentialSurface, type ExponentialSurfaceProps } from \"./surface\"\n\n/** The renderer callbacks that route through the host: actions become A2UI\n * client messages on its transport, host functions pass its policy gate,\n * every href its URL policy, every src its media policy + loader, paint\n * failures become `RENDER_FAILED` errors. `base` adds the rest (icons,\n * markdown, onInput…) and may observe actions first. */\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\nconst noop = () => () => {}\n\n/** The ids of the host's surfaces, re-rendered as surfaces come and go. */\nexport function useHostSurfaceIds(host: ExponentialHost): string[] {\n const subscribe = useCallback((cb: () => void) => host.subscribe(cb), [host])\n const key = useSyncExternalStore(subscribe, () => host.surfaceIds().join(`\\n`))\n return useMemo(() => (key ? key.split(`\\n`) : []), [key])\n}\n\n/** The host's transport state (`host_offline` when not `open`) and the\n * catalog it could not render (the catalog-update banner). */\nexport function useHostStatus(host: ExponentialHost): { status: TransportStatus; detail?: string; unsupportedCatalog?: string } {\n const subscribe = useCallback((cb: () => void) => host.subscribe(cb), [host])\n const status = useSyncExternalStore(subscribe, () => host.status)\n const detail = useSyncExternalStore(subscribe, () => host.statusDetail)\n const unsupportedCatalog = useSyncExternalStore(subscribe, () => host.unsupportedCatalog)\n return { status, detail, unsupportedCatalog }\n}\n\n/** One host surface as the `SurfaceState` `<ExponentialSurface>` paints. */\nexport function useHostSurface(host: ExponentialHost, surfaceId: string): SurfaceState | null {\n const subscribeHost = useCallback((cb: () => void) => host.subscribe(cb), [host])\n const store = useSyncExternalStore(subscribeHost, () => host.surface(surfaceId))\n const subscribeStore = useCallback((cb: () => void) => (store ? store.subscribe(cb) : noop()), [store])\n const version = useSyncExternalStore(subscribeStore, () => store?.version ?? -1)\n return useMemo(() => (store ? stateOf(host, store) : null), [host, store, version])\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?: React.ReactNode\n}\n\n/** A surface the host's transport feeds. */\nexport function HostSurface({ host, surfaceId, plugin, fallback = null, ...rest }: HostSurfaceProps) {\n const surface = useHostSurface(host, surfaceId)\n const p = useMemo(() => hostPlugin(host, plugin), [host, plugin])\n if (!surface) return <>{fallback}</>\n // The server's `createSurface.theme` wins; the `theme` prop is the default.\n return <ExponentialSurface {...rest} theme={surface.theme ?? rest.theme} id={rest.id ?? surfaceId} surface={surface} host={p} />\n}\n"
42
44
  ],
43
- "mappings": "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",
44
- "debugId": "6CB3D248B75B3F5F64756E2164756E21",
45
+ "mappings": "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",
46
+ "debugId": "39A4F0FB7E01DD0264756E2164756E21",
45
47
  "names": []
46
48
  }