@hjmds/react 1.45.0 → 1.46.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.
@@ -34,7 +34,7 @@ export type ReactRendererEvidenceManifest = Readonly<{
34
34
  export declare const reactRendererEvidence: {
35
35
  readonly schemaVersion: 2;
36
36
  readonly packageName: "@hjmds/react";
37
- readonly packageVersion: "1.45.0";
37
+ readonly packageVersion: "1.46.0";
38
38
  readonly surface: "web";
39
39
  readonly components: Readonly<{
40
40
  /** Canonical component id from the design-contracts catalog. */
package/dist/evidence.js CHANGED
@@ -135,7 +135,7 @@ const activeWebEntries = componentCatalog.filter((entry) => {
135
135
  export const reactRendererEvidence = {
136
136
  schemaVersion: reactRendererEvidenceSchemaVersion,
137
137
  packageName: "@hjmds/react",
138
- packageVersion: "1.45.0",
138
+ packageVersion: "1.46.0",
139
139
  surface: "web",
140
140
  components: activeWebEntries.map(derivedClaim),
141
141
  };
@@ -1 +1 @@
1
- {"version":3,"file":"evidence.js","sourceRoot":"","sources":["../src/evidence.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,yBAAyB,EAA8B,MAAM,iCAAiC,CAAC;AACzI,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEpE,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAAU,CAAC;AA6B7D,MAAM,gBAAgB,GAAG,kCAA2C,CAAC;AACrE,MAAM,eAAe,GAAG,uCAAgD,CAAC;AACzE,MAAM,mBAAmB,GAAG,mCAA4C,CAAC;AAIzE;;;;;GAKG;AACH,MAAM,eAAe,GAAuE,EAAE,CAAC;AAc/F,MAAM,QAAQ,GAAG,CAAC,OAAkB,mBAAmB,EAAe,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AAC3H,MAAM,mBAAmB,GAAG,CAAC,IAAe,EAAe,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AAE7H,MAAM,WAAW,GAA0C;IACzD,aAAa,EAAE,QAAQ,CAAC,mCAAmC,CAAC;IAC5D,wBAAwB,EAAE,EAAE,WAAW,EAAE,CAAC,aAAa,CAAC,EAAE;IAC1D,MAAM,EAAE,QAAQ,EAAE;IAClB,IAAI,EAAE,QAAQ,EAAE;IAChB,KAAK,EAAE,QAAQ,EAAE;IACjB,cAAc,EAAE,QAAQ,EAAE;IAC1B,gBAAgB,EAAE,QAAQ,EAAE;IAC5B,WAAW,EAAE,QAAQ,EAAE;IACvB,cAAc,EAAE,QAAQ,EAAE;IAC1B,MAAM,EAAE,QAAQ,EAAE;IAClB,IAAI,EAAE,QAAQ,CAAC,qCAAqC,CAAC;IACrD,aAAa,EAAE,QAAQ,EAAE;IACzB,QAAQ,EAAE,QAAQ,CAAC,gCAAgC,CAAC;IACpD,aAAa,EAAE,QAAQ,CAAC,4CAA4C,CAAC;IACrE,QAAQ,EAAE,QAAQ,EAAE;IACpB,gBAAgB,EAAE,QAAQ,EAAE;IAC5B,aAAa,EAAE,QAAQ,EAAE;IACzB,MAAM,EAAE,QAAQ,EAAE;IAClB,mBAAmB,EAAE,QAAQ,EAAE;IAC/B,IAAI,EAAE,QAAQ,EAAE;IAChB,IAAI,EAAE,QAAQ,CAAC,qCAAqC,CAAC;IACrD,UAAU,EAAE,QAAQ,CAAC,uCAAuC,CAAC;IAC7D,UAAU,EAAE,QAAQ,CAAC,2CAA2C,CAAC;IACjE,OAAO,EAAE,mBAAmB,CAAC,+BAA+B,CAAC;IAC7D,YAAY,EAAE,mBAAmB,CAAC,kCAAkC,CAAC;IACrE,QAAQ,EAAE,QAAQ,CAAC,gCAAgC,CAAC;IACpD,IAAI,EAAE,mBAAmB,CAAC,4BAA4B,CAAC;IACvD,IAAI,EAAE,QAAQ,CAAC,4BAA4B,CAAC;IAC5C,eAAe,EAAE,QAAQ,CAAC,qCAAqC,CAAC;IAChE,QAAQ,EAAE,QAAQ,CAAC,gCAAgC,CAAC;IACpD,iBAAiB,EAAE,mBAAmB,CAAC,uCAAuC,CAAC;IAC/E,SAAS,EAAE,QAAQ,CAAC,0CAA0C,CAAC;IAC/D,cAAc,EAAE,QAAQ,EAAE;IAC1B,YAAY,EAAE,QAAQ,EAAE;IACxB,UAAU,EAAE,mBAAmB,CAAC,gCAAgC,CAAC;IACjE,OAAO,EAAE,QAAQ,CAAC,+BAA+B,CAAC;IAClD,mBAAmB,EAAE,QAAQ,CAAC,2CAA2C,CAAC;IAC1E,sBAAsB,EAAE,QAAQ,EAAE;IAClC,YAAY,EAAE,QAAQ,CAAC,2CAA2C,CAAC;IACnE,WAAW,EAAE,QAAQ,CAAC,4CAA4C,CAAC;IACnE,cAAc,EAAE,mBAAmB,CAAC,iDAAiD,CAAC;IACtF,OAAO,EAAE,QAAQ,CAAC,wCAAwC,CAAC;IAC3D,MAAM,EAAE,QAAQ,CAAC,8BAA8B,CAAC;IAChD,mBAAmB,EAAE,QAAQ,CAAC,kDAAkD,CAAC;IACjF,WAAW,EAAE,QAAQ,CAAC,8CAA8C,CAAC;IACrE,QAAQ,EAAE,QAAQ,CAAC,gCAAgC,CAAC;IACpD,wBAAwB,EAAE,QAAQ,EAAE;IACpC,SAAS,EAAE,QAAQ,CAAC,0CAA0C,CAAC;IAC/D,aAAa,EAAE,QAAQ,CAAC,mCAAmC,CAAC;IAC5D,yGAAyG;IACzG,cAAc,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,gBAAgB,EAAE,eAAe,CAAC,EAAE,IAAI,EAAE,oCAAoC,EAAE,CAAC,EAAE;IACzJ,cAAc,EAAE,QAAQ,CAAC,qCAAqC,CAAC;IAC/D,4EAA4E;IAC5E,2EAA2E;IAC3E,KAAK,EAAE;QACL,WAAW,EAAE,CAAC,UAAU,CAAC;QACzB,MAAM,EAAE;YACN,EAAE,SAAS,EAAE,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE;YACtD,EAAE,SAAS,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,oCAAoC,EAAE;SACtG;KACF;IACD,MAAM,EAAE,QAAQ,EAAE;IAClB,QAAQ,EAAE,QAAQ,EAAE;IACpB,MAAM,EAAE,QAAQ,CAAC,gCAAgC,CAAC;IAClD,cAAc,EAAE,mBAAmB,CAAC,6CAA6C,CAAC;IAClF,KAAK,EAAE,mBAAmB,CAAC,oCAAoC,CAAC;IAChE,OAAO,EAAE,QAAQ,CAAC,+BAA+B,CAAC;IAClD,IAAI,EAAE,mBAAmB,CAAC,qCAAqC,CAAC;CACjE,CAAC;AAEF,MAAM,aAAa,GAAmE,mBAAmB,CAAC;AAE1G;;;;GAIG;AACH,SAAS,YAAY,CAAC,KAA4B;IAChD,MAAM,WAAW,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;IAC9C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,KAAK,sBAAsB,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC;IACpH,6FAA6F;IAC7F,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;IACzG,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,2DAA2D,CAAC,CAAC;IACxG,MAAM,WAAW,GAAG;QAClB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;QACvE,GAAG,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC;KAC9B,CAAC;IACF,MAAM,QAAQ,GAAG,2BAA2B,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,KAAK,KAAK,CAAC,EAAE,SAAS,IAAI,EAAE,CAAC;IACpH,MAAM,IAAI,GAAG,eAAe,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;IAChD,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;IACxC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IACxE,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,QAAQ,EAA6C,EAAE,CACrF,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,UAAU,IAAI,QAAQ,KAAK,gBAAgB,IAAI,QAAQ,KAAK,UAAU;WAC1G,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAyC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAyC,CAAC,CAAC,CAAC;IAC1H,MAAM,MAAM,GAAG;QACb,EAAE,SAAS,EAAE,CAAC,SAAkB,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,WAAW,EAAE;QAChF,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QACnG,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;KACnE,CAAC;IACF,OAAO;QACL,WAAW;QACX,WAAW;QACX,OAAO;QACP,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;QACrD,MAAM;KACP,CAAC;AACJ,CAAC;AAED,MAAM,gBAAgB,GAAqC,gBAAgB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;IAC3F,MAAM,MAAM,GAAG,yBAAyB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACvD,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,MAAM,CAAC;AAClD,CAAC,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,aAAa,EAAE,kCAAkC;IACjD,WAAW,EAAE,cAAc;IAC3B,cAAc,EAAE,QAAQ;IACxB,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,gBAAgB,CAAC,GAAG,CAAC,YAAY,CAAC;CACE,CAAC","sourcesContent":["import type { ShowcaseScenarioId } from \"@hjmds/design-contracts/showcase\";\nimport { getRequiredShowcaseEvidence } from \"@hjmds/design-contracts/showcase\";\nimport { componentCatalog, componentIdOf, getComponentSurfaceStatus, type ComponentCatalogEntry } from \"@hjmds/design-contracts/catalog\";\nimport { publicExportEntries } from \"./public-exports.generated.js\";\n\nexport const reactRendererEvidenceSchemaVersion = 2 as const;\n\nexport type ReactRendererEvidenceScenario = Exclude<ShowcaseScenarioId, \"contract\" | \"native-actions\">;\n\nexport type ReactRendererEvidenceComponent = Readonly<{\n /** Canonical component id from the design-contracts catalog. */\n componentId: string;\n /** Public symbols that implement this contract on the declared subpath. */\n exportNames: readonly string[];\n /** Granular @hjmds/react export used by consumers. */\n subpath: `./${string}`;\n /** Scenarios supported by automated first-party renderer evidence. */\n scenarios: readonly ReactRendererEvidenceScenario[];\n /** Repository-local executable proof for every claimed scenario. */\n proofs: readonly Readonly<{\n scenarios: readonly ReactRendererEvidenceScenario[];\n file: `test/${string}.test.tsx`;\n caseId: string;\n }>[];\n}>;\n\nexport type ReactRendererEvidenceManifest = Readonly<{\n schemaVersion: typeof reactRendererEvidenceSchemaVersion;\n packageName: \"@hjmds/react\";\n packageVersion: string;\n surface: \"web\";\n components: readonly ReactRendererEvidenceComponent[];\n}>;\n\nconst defaultProofFile = \"test/default-render.ssr.test.tsx\" as const;\nconst matrixProofFile = \"test/scenario-matrix.browser.test.tsx\" as const;\nconst stableCoreProofFile = \"test/stable-core.browser.test.tsx\" as const;\n\ntype ProofFile = `test/${string}.test.tsx`;\n\n/**\n * Scenarios a component does not pass yet. Each entry is promotion debt that\n * the generated evidence projection reports; remove it when the component is\n * fixed and the matrix case passes. Stable surfaces cannot carry a gap\n * (scripts/check-workspace-sync.mjs).\n */\nconst webScenarioGaps: Readonly<Record<string, readonly ReactRendererEvidenceScenario[]>> = {};\n\n/**\n * Proofs that live outside the shared default/matrix files: keyboard behavior in a dedicated browser test,\n * long copy proven inside a portal by the component's own test, or a whole matrix run in a component file.\n * Everything else about a claim derives from the catalog row (2026-10-18 registration input).\n */\ntype ClaimExtras = Readonly<{\n /** Extra proofs; their scenarios are removed from the shared matrix proof. */\n proofs?: readonly Readonly<{ scenarios: readonly ReactRendererEvidenceScenario[]; file: ProofFile }>[];\n /** Hooks or helpers published beside the component symbols on the same subpath. */\n exportNames?: readonly string[];\n}>;\n\nconst keyboard = (file: ProofFile = stableCoreProofFile): ClaimExtras => ({ proofs: [{ scenarios: [\"keyboard\"], file }] });\nconst keyboardAndLongCopy = (file: ProofFile): ClaimExtras => ({ proofs: [{ scenarios: [\"keyboard\", \"long-copy\"], file }] });\n\nconst claimExtras: Readonly<Record<string, ClaimExtras>> = {\n \"time-picker\": keyboard(\"test/time-picker.browser.test.tsx\"),\n \"design-system-provider\": { exportNames: [\"useHjmTheme\"] },\n layout: keyboard(),\n link: keyboard(),\n field: keyboard(),\n \"search-field\": keyboard(),\n \"password-field\": keyboard(),\n \"otp-field\": keyboard(),\n \"number-field\": keyboard(),\n slider: keyboard(),\n form: keyboard(\"test/form.keyboard.browser.test.tsx\"),\n \"date-picker\": keyboard(),\n calendar: keyboard(\"test/calendar.browser.test.tsx\"),\n \"file-picker\": keyboard(\"test/file-picker.keyboard.browser.test.tsx\"),\n checkbox: keyboard(),\n \"checkbox-group\": keyboard(),\n \"radio-group\": keyboard(),\n switch: keyboard(),\n \"segmented-control\": keyboard(),\n chip: keyboard(),\n tabs: keyboard(\"test/tabs.keyboard.browser.test.tsx\"),\n breadcrumb: keyboard(\"test/page-navigation.browser.test.tsx\"),\n pagination: keyboard(\"test/pagination.keyboard.browser.test.tsx\"),\n popover: keyboardAndLongCopy(\"test/popover.browser.test.tsx\"),\n \"side-panel\": keyboardAndLongCopy(\"test/side-panel.browser.test.tsx\"),\n splitter: keyboard(\"test/splitter.browser.test.tsx\"),\n tour: keyboardAndLongCopy(\"test/tour.browser.test.tsx\"),\n tree: keyboard(\"test/tree.browser.test.tsx\"),\n \"transfer-list\": keyboard(\"test/transfer-list.browser.test.tsx\"),\n mentions: keyboard(\"test/mentions.browser.test.tsx\"),\n \"command-palette\": keyboardAndLongCopy(\"test/command-palette.browser.test.tsx\"),\n agreement: keyboard(\"test/agreement.keyboard.browser.test.tsx\"),\n \"toggle-group\": keyboard(),\n \"tags-input\": keyboard(),\n \"skip-nav\": keyboardAndLongCopy(\"test/skip-nav.browser.test.tsx\"),\n sidebar: keyboard(\"test/sidebar.browser.test.tsx\"),\n \"date-range-picker\": keyboard(\"test/date-range.keyboard.browser.test.tsx\"),\n \"auth-provider-button\": keyboard(),\n \"data-table\": keyboard(\"test/data-table.keyboard.browser.test.tsx\"),\n collapsible: keyboard(\"test/collapsible.keyboard.browser.test.tsx\"),\n \"context-menu\": keyboardAndLongCopy(\"test/context-menu.interactions.browser.test.tsx\"),\n menubar: keyboard(\"test/menubar.keyboard.browser.test.tsx\"),\n anchor: keyboard(\"test/anchor.browser.test.tsx\"),\n \"bottom-navigation\": keyboard(\"test/bottom-navigation.keyboard.browser.test.tsx\"),\n \"load-more\": keyboard(\"test/load-more.interactions.browser.test.tsx\"),\n carousel: keyboard(\"test/carousel.browser.test.tsx\"),\n \"floating-action-button\": keyboard(),\n accordion: keyboard(\"test/accordion.keyboard.browser.test.tsx\"),\n \"upload-item\": keyboard(\"test/upload-item.browser.test.tsx\"),\n // ThinkingOrb runs its whole environment matrix in its own file (canvas timing), not in scenario-matrix.\n \"thinking-orb\": { proofs: [{ scenarios: [\"dark\", \"large-text\", \"rtl\", \"reduced-motion\", \"accessibility\"], file: \"test/thinking-orb.browser.test.tsx\" }] },\n \"color-picker\": keyboard(\"test/web-additions.browser.test.tsx\"),\n // SSR proves semantics but cannot catch the close-only row seen in BurnTok.\n // Keep real geometry evidence attached without promoting catalog maturity.\n toast: {\n exportNames: [\"useToast\"],\n proofs: [\n { scenarios: [\"keyboard\"], file: stableCoreProofFile },\n { scenarios: [\"dark\", \"long-copy\", \"large-text\", \"rtl\"], file: \"test/toast-layout.browser.test.tsx\" },\n ],\n },\n select: keyboard(),\n combobox: keyboard(),\n dialog: keyboard(\"test/advanced.browser.test.tsx\"),\n \"alert-dialog\": keyboardAndLongCopy(\"test/alert-dialog.keyboard.browser.test.tsx\"),\n sheet: keyboardAndLongCopy(\"test/sheet-layout.browser.test.tsx\"),\n tooltip: keyboard(\"test/tooltip.browser.test.tsx\"),\n menu: keyboardAndLongCopy(\"test/menu.keyboard.browser.test.tsx\"),\n};\n\nconst exportEntries: Readonly<Record<string, readonly `./${string}`[] | undefined>> = publicExportEntries;\n\n/**\n * One claim per active Web row of the catalog. The subpath is the symbol's canonical granular entry, the export\n * names are the row's own symbol plus the companions published on that entry, and the scenarios are the row's\n * required Web evidence minus recorded gaps. Keyboard is never implied: it comes only from a dedicated proof.\n */\nfunction derivedClaim(entry: ComponentCatalogEntry): ReactRendererEvidenceComponent {\n const componentId = componentIdOf(entry);\n const extras = claimExtras[componentId] ?? {};\n const symbols = entry.name === \"DesignSystemProvider\" ? [\"HjmProvider\"] : [entry.name, ...(entry.companions ?? [])];\n // A row whose own name is not a symbol (Chart) claims through its first published companion.\n const subpath = symbols.map((symbol) => exportEntries[symbol]?.[0]).find((entry) => entry !== undefined);\n if (!subpath) throw new Error(`${entry.name} has no granular @hjmds/react export to claim evidence on`);\n const exportNames = [\n ...symbols.filter((symbol) => exportEntries[symbol]?.includes(subpath)),\n ...(extras.exportNames ?? []),\n ];\n const required = getRequiredShowcaseEvidence(entry).find((evidence) => evidence.surface === \"web\")?.scenarios ?? [];\n const gaps = webScenarioGaps[componentId] ?? [];\n const extraProofs = extras.proofs ?? [];\n const proven = new Set(extraProofs.flatMap((proof) => proof.scenarios));\n const matrix = required.filter((scenario): scenario is ReactRendererEvidenceScenario =>\n scenario !== \"default\" && scenario !== \"keyboard\" && scenario !== \"native-actions\" && scenario !== \"contract\"\n && !gaps.includes(scenario as ReactRendererEvidenceScenario) && !proven.has(scenario as ReactRendererEvidenceScenario));\n const proofs = [\n { scenarios: [\"default\" as const], file: defaultProofFile, caseId: componentId },\n ...(matrix.length === 0 ? [] : [{ scenarios: matrix, file: matrixProofFile, caseId: componentId }]),\n ...extraProofs.map((proof) => ({ ...proof, caseId: componentId })),\n ];\n return {\n componentId,\n exportNames,\n subpath,\n scenarios: proofs.flatMap((proof) => proof.scenarios),\n proofs,\n };\n}\n\nconst activeWebEntries: readonly ComponentCatalogEntry[] = componentCatalog.filter((entry) => {\n const status = getComponentSurfaceStatus(entry, \"web\");\n return status === \"stable\" || status === \"beta\";\n});\n\n/**\n * First-party Web renderer claims. Scenario axes remain fail-closed: the\n * default scenario is an SSR render, the environment and accessibility\n * scenarios are computed-style assertions in scenario-matrix.browser.\n * Keyboard and cross-platform parity remain fail-closed until dedicated\n * interaction or paired-renderer proofs are mapped one-to-one.\n */\nexport const reactRendererEvidence = {\n schemaVersion: reactRendererEvidenceSchemaVersion,\n packageName: \"@hjmds/react\",\n packageVersion: \"1.45.0\",\n surface: \"web\",\n components: activeWebEntries.map(derivedClaim),\n} as const satisfies ReactRendererEvidenceManifest;\n"]}
1
+ {"version":3,"file":"evidence.js","sourceRoot":"","sources":["../src/evidence.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ShowcaseScenarioId } from \"@hjmds/design-contracts/showcase\";\nimport { getRequiredShowcaseEvidence } from \"@hjmds/design-contracts/showcase\";\nimport { componentCatalog, componentIdOf, getComponentSurfaceStatus, type ComponentCatalogEntry } from \"@hjmds/design-contracts/catalog\";\nimport { publicExportEntries } from \"./public-exports.generated.js\";\n\nexport const reactRendererEvidenceSchemaVersion = 2 as const;\n\nexport type ReactRendererEvidenceScenario = Exclude<ShowcaseScenarioId, \"contract\" | \"native-actions\">;\n\nexport type ReactRendererEvidenceComponent = Readonly<{\n /** Canonical component id from the design-contracts catalog. */\n componentId: string;\n /** Public symbols that implement this contract on the declared subpath. */\n exportNames: readonly string[];\n /** Granular @hjmds/react export used by consumers. */\n subpath: `./${string}`;\n /** Scenarios supported by automated first-party renderer evidence. */\n scenarios: readonly ReactRendererEvidenceScenario[];\n /** Repository-local executable proof for every claimed scenario. */\n proofs: readonly Readonly<{\n scenarios: readonly ReactRendererEvidenceScenario[];\n file: `test/${string}.test.tsx`;\n caseId: string;\n }>[];\n}>;\n\nexport type ReactRendererEvidenceManifest = Readonly<{\n schemaVersion: typeof reactRendererEvidenceSchemaVersion;\n packageName: \"@hjmds/react\";\n packageVersion: string;\n surface: \"web\";\n components: readonly ReactRendererEvidenceComponent[];\n}>;\n\nconst defaultProofFile = \"test/default-render.ssr.test.tsx\" as const;\nconst matrixProofFile = \"test/scenario-matrix.browser.test.tsx\" as const;\nconst stableCoreProofFile = \"test/stable-core.browser.test.tsx\" as const;\n\ntype ProofFile = `test/${string}.test.tsx`;\n\n/**\n * Scenarios a component does not pass yet. Each entry is promotion debt that\n * the generated evidence projection reports; remove it when the component is\n * fixed and the matrix case passes. Stable surfaces cannot carry a gap\n * (scripts/check-workspace-sync.mjs).\n */\nconst webScenarioGaps: Readonly<Record<string, readonly ReactRendererEvidenceScenario[]>> = {};\n\n/**\n * Proofs that live outside the shared default/matrix files: keyboard behavior in a dedicated browser test,\n * long copy proven inside a portal by the component's own test, or a whole matrix run in a component file.\n * Everything else about a claim derives from the catalog row (2026-10-18 registration input).\n */\ntype ClaimExtras = Readonly<{\n /** Extra proofs; their scenarios are removed from the shared matrix proof. */\n proofs?: readonly Readonly<{ scenarios: readonly ReactRendererEvidenceScenario[]; file: ProofFile }>[];\n /** Hooks or helpers published beside the component symbols on the same subpath. */\n exportNames?: readonly string[];\n}>;\n\nconst keyboard = (file: ProofFile = stableCoreProofFile): ClaimExtras => ({ proofs: [{ scenarios: [\"keyboard\"], file }] });\nconst keyboardAndLongCopy = (file: ProofFile): ClaimExtras => ({ proofs: [{ scenarios: [\"keyboard\", \"long-copy\"], file }] });\n\nconst claimExtras: Readonly<Record<string, ClaimExtras>> = {\n \"time-picker\": keyboard(\"test/time-picker.browser.test.tsx\"),\n \"design-system-provider\": { exportNames: [\"useHjmTheme\"] },\n layout: keyboard(),\n link: keyboard(),\n field: keyboard(),\n \"search-field\": keyboard(),\n \"password-field\": keyboard(),\n \"otp-field\": keyboard(),\n \"number-field\": keyboard(),\n slider: keyboard(),\n form: keyboard(\"test/form.keyboard.browser.test.tsx\"),\n \"date-picker\": keyboard(),\n calendar: keyboard(\"test/calendar.browser.test.tsx\"),\n \"file-picker\": keyboard(\"test/file-picker.keyboard.browser.test.tsx\"),\n checkbox: keyboard(),\n \"checkbox-group\": keyboard(),\n \"radio-group\": keyboard(),\n switch: keyboard(),\n \"segmented-control\": keyboard(),\n chip: keyboard(),\n tabs: keyboard(\"test/tabs.keyboard.browser.test.tsx\"),\n breadcrumb: keyboard(\"test/page-navigation.browser.test.tsx\"),\n pagination: keyboard(\"test/pagination.keyboard.browser.test.tsx\"),\n popover: keyboardAndLongCopy(\"test/popover.browser.test.tsx\"),\n \"side-panel\": keyboardAndLongCopy(\"test/side-panel.browser.test.tsx\"),\n splitter: keyboard(\"test/splitter.browser.test.tsx\"),\n tour: keyboardAndLongCopy(\"test/tour.browser.test.tsx\"),\n tree: keyboard(\"test/tree.browser.test.tsx\"),\n \"transfer-list\": keyboard(\"test/transfer-list.browser.test.tsx\"),\n mentions: keyboard(\"test/mentions.browser.test.tsx\"),\n \"command-palette\": keyboardAndLongCopy(\"test/command-palette.browser.test.tsx\"),\n agreement: keyboard(\"test/agreement.keyboard.browser.test.tsx\"),\n \"toggle-group\": keyboard(),\n \"tags-input\": keyboard(),\n \"skip-nav\": keyboardAndLongCopy(\"test/skip-nav.browser.test.tsx\"),\n sidebar: keyboard(\"test/sidebar.browser.test.tsx\"),\n \"date-range-picker\": keyboard(\"test/date-range.keyboard.browser.test.tsx\"),\n \"auth-provider-button\": keyboard(),\n \"data-table\": keyboard(\"test/data-table.keyboard.browser.test.tsx\"),\n collapsible: keyboard(\"test/collapsible.keyboard.browser.test.tsx\"),\n \"context-menu\": keyboardAndLongCopy(\"test/context-menu.interactions.browser.test.tsx\"),\n menubar: keyboard(\"test/menubar.keyboard.browser.test.tsx\"),\n anchor: keyboard(\"test/anchor.browser.test.tsx\"),\n \"bottom-navigation\": keyboard(\"test/bottom-navigation.keyboard.browser.test.tsx\"),\n \"load-more\": keyboard(\"test/load-more.interactions.browser.test.tsx\"),\n carousel: keyboard(\"test/carousel.browser.test.tsx\"),\n \"floating-action-button\": keyboard(),\n accordion: keyboard(\"test/accordion.keyboard.browser.test.tsx\"),\n \"upload-item\": keyboard(\"test/upload-item.browser.test.tsx\"),\n // ThinkingOrb runs its whole environment matrix in its own file (canvas timing), not in scenario-matrix.\n \"thinking-orb\": { proofs: [{ scenarios: [\"dark\", \"large-text\", \"rtl\", \"reduced-motion\", \"accessibility\"], file: \"test/thinking-orb.browser.test.tsx\" }] },\n \"color-picker\": keyboard(\"test/web-additions.browser.test.tsx\"),\n // SSR proves semantics but cannot catch the close-only row seen in BurnTok.\n // Keep real geometry evidence attached without promoting catalog maturity.\n toast: {\n exportNames: [\"useToast\"],\n proofs: [\n { scenarios: [\"keyboard\"], file: stableCoreProofFile },\n { scenarios: [\"dark\", \"long-copy\", \"large-text\", \"rtl\"], file: \"test/toast-layout.browser.test.tsx\" },\n ],\n },\n select: keyboard(),\n combobox: keyboard(),\n dialog: keyboard(\"test/advanced.browser.test.tsx\"),\n \"alert-dialog\": keyboardAndLongCopy(\"test/alert-dialog.keyboard.browser.test.tsx\"),\n sheet: keyboardAndLongCopy(\"test/sheet-layout.browser.test.tsx\"),\n tooltip: keyboard(\"test/tooltip.browser.test.tsx\"),\n menu: keyboardAndLongCopy(\"test/menu.keyboard.browser.test.tsx\"),\n};\n\nconst exportEntries: Readonly<Record<string, readonly `./${string}`[] | undefined>> = publicExportEntries;\n\n/**\n * One claim per active Web row of the catalog. The subpath is the symbol's canonical granular entry, the export\n * names are the row's own symbol plus the companions published on that entry, and the scenarios are the row's\n * required Web evidence minus recorded gaps. Keyboard is never implied: it comes only from a dedicated proof.\n */\nfunction derivedClaim(entry: ComponentCatalogEntry): ReactRendererEvidenceComponent {\n const componentId = componentIdOf(entry);\n const extras = claimExtras[componentId] ?? {};\n const symbols = entry.name === \"DesignSystemProvider\" ? [\"HjmProvider\"] : [entry.name, ...(entry.companions ?? [])];\n // A row whose own name is not a symbol (Chart) claims through its first published companion.\n const subpath = symbols.map((symbol) => exportEntries[symbol]?.[0]).find((entry) => entry !== undefined);\n if (!subpath) throw new Error(`${entry.name} has no granular @hjmds/react export to claim evidence on`);\n const exportNames = [\n ...symbols.filter((symbol) => exportEntries[symbol]?.includes(subpath)),\n ...(extras.exportNames ?? []),\n ];\n const required = getRequiredShowcaseEvidence(entry).find((evidence) => evidence.surface === \"web\")?.scenarios ?? [];\n const gaps = webScenarioGaps[componentId] ?? [];\n const extraProofs = extras.proofs ?? [];\n const proven = new Set(extraProofs.flatMap((proof) => proof.scenarios));\n const matrix = required.filter((scenario): scenario is ReactRendererEvidenceScenario =>\n scenario !== \"default\" && scenario !== \"keyboard\" && scenario !== \"native-actions\" && scenario !== \"contract\"\n && !gaps.includes(scenario as ReactRendererEvidenceScenario) && !proven.has(scenario as ReactRendererEvidenceScenario));\n const proofs = [\n { scenarios: [\"default\" as const], file: defaultProofFile, caseId: componentId },\n ...(matrix.length === 0 ? [] : [{ scenarios: matrix, file: matrixProofFile, caseId: componentId }]),\n ...extraProofs.map((proof) => ({ ...proof, caseId: componentId })),\n ];\n return {\n componentId,\n exportNames,\n subpath,\n scenarios: proofs.flatMap((proof) => proof.scenarios),\n proofs,\n };\n}\n\nconst activeWebEntries: readonly ComponentCatalogEntry[] = componentCatalog.filter((entry) => {\n const status = getComponentSurfaceStatus(entry, \"web\");\n return status === \"stable\" || status === \"beta\";\n});\n\n/**\n * First-party Web renderer claims. Scenario axes remain fail-closed: the\n * default scenario is an SSR render, the environment and accessibility\n * scenarios are computed-style assertions in scenario-matrix.browser.\n * Keyboard and cross-platform parity remain fail-closed until dedicated\n * interaction or paired-renderer proofs are mapped one-to-one.\n */\nexport const reactRendererEvidence = {\n schemaVersion: reactRendererEvidenceSchemaVersion,\n packageName: \"@hjmds/react\",\n packageVersion: \"1.46.0\",\n surface: \"web\",\n components: activeWebEntries.map(derivedClaim),\n} as const satisfies ReactRendererEvidenceManifest;\n"]}
package/dist/screens.d.ts CHANGED
@@ -154,6 +154,13 @@ export type MessageComposerProps = Omit<MessageComposerDescriptor, "attachmentCo
154
154
  cancelLabel: string;
155
155
  onCancel(): void;
156
156
  }>;
157
+ /** Editing keeps the same input mounted. The host owns the saved draft and server confirmation. */
158
+ editTarget?: Readonly<{
159
+ label: string;
160
+ excerpt: string;
161
+ cancelLabel: string;
162
+ onCancel(): void;
163
+ }>;
157
164
  /** Icon mode puts the send/attachment action inside the growing field. */
158
165
  sendIcon?: ReactNode;
159
166
  /** Reference comment layout: a filled circular send action inside the field. */
@@ -171,7 +178,7 @@ export type MessageComposerProps = Omit<MessageComposerDescriptor, "attachmentCo
171
178
  /** Canonical layout-only placement on the composer root. Controlled visual keys are excluded. */
172
179
  layoutStyle?: HjmCompositionStyleProp;
173
180
  }>;
174
- export declare function MessageComposer({ leading, quickInserts, value, label, sendLabel, placeholder, description, descriptionAlign, error, invalid, submitMode, onBlur, disabled, pending, onValueChange, onSend, maxLength, lengthFeedback, sendDisabled, additionalContent, leadingAction, inputRef, context, replyTo, sendIcon, sendPresentation, attachmentAction, attachments, onRemoveAttachment, layoutStyle }: MessageComposerProps): import("react").JSX.Element;
181
+ export declare function MessageComposer({ leading, quickInserts, value, label, sendLabel, placeholder, description, descriptionAlign, error, invalid, submitMode, onBlur, disabled, pending, onValueChange, onSend, maxLength, lengthFeedback, sendDisabled, additionalContent, leadingAction, inputRef, context, replyTo, editTarget, sendIcon, sendPresentation, attachmentAction, attachments, onRemoveAttachment, layoutStyle }: MessageComposerProps): import("react").JSX.Element;
175
182
  export type ChatMessageProps = ChatMessageDescriptor & Readonly<{
176
183
  children: ReactNode;
177
184
  interactiveContent?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"screens.d.ts","sourceRoot":"","sources":["../src/screens.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"screens.d.ts","sourceRoot":"","sources":["../src/screens.tsx"],"names":[],"mappings":"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"}
package/dist/screens.js CHANGED
@@ -115,7 +115,10 @@ export function ChatScreen({ composer, jumpToLatest, avatar, scroll = "content",
115
115
  // Conversations center the peer between back and tools and use the measured 10px timeline gutter (2026-10-16).
116
116
  return _jsx(ScreenLayout, { ...props, className: classNames("hjm-chat-screen", props.className) ?? "hjm-chat-screen", titleLeading: avatar, scroll: scroll, footer: showComposer ? _jsxs("div", { className: "hjm-chat-screen__footer", children: [jumpToLatest ? _jsx("div", { className: "hjm-chat-screen__jump", children: _jsx(IconButton, { label: jumpToLatest.label, size: "small", shape: "circle", tone: "secondary", onClick: jumpToLatest.onPress, children: jumpToLatest.icon }) }) : null, composer] }) : null });
117
117
  }
118
- export function MessageComposer({ leading, quickInserts, value, label, sendLabel, placeholder = label, description, descriptionAlign = "start", error, invalid = false, submitMode = "newline", onBlur, disabled = false, pending = false, onValueChange, onSend, maxLength, lengthFeedback, sendDisabled = false, additionalContent = false, leadingAction, inputRef, context, replyTo, sendIcon, sendPresentation = "inline", attachmentAction, attachments = [], onRemoveAttachment, layoutStyle }) {
118
+ export function MessageComposer({ leading, quickInserts, value, label, sendLabel, placeholder = label, description, descriptionAlign = "start", error, invalid = false, submitMode = "newline", onBlur, disabled = false, pending = false, onValueChange, onSend, maxLength, lengthFeedback, sendDisabled = false, additionalContent = false, leadingAction, inputRef, context, replyTo, editTarget, sendIcon, sendPresentation = "inline", attachmentAction, attachments = [], onRemoveAttachment, layoutStyle }) {
119
+ if (replyTo && editTarget)
120
+ throw new TypeError("A composer cannot reply and edit at the same time");
121
+ const target = editTarget ? { ...editTarget, author: editTarget.label } : replyTo;
119
122
  validateMessageAttachments(attachments);
120
123
  if (attachments.length && !onRemoveAttachment)
121
124
  throw new TypeError("Attachments require a removal callback");
@@ -142,7 +145,7 @@ export function MessageComposer({ leading, quickInserts, value, label, sendLabel
142
145
  onValueChange(event.currentTarget.value); }, minVisibleLines: screenPatternRecipe.composerMinLines, maxVisibleLines: screenPatternRecipe.composerMaxLines, ...(sendIcon ? { trailing: _jsx("span", { className: "hjm-message-composer__trailing", style: { minInlineSize: sendDiameter, minBlockSize: sendDiameter }, children: _jsx("span", { className: "hjm-message-composer__visible", children: hasContent || pending ? send : attach }) }) } : {}) }), sendIcon ? null : send] })] });
143
146
  const quickRow = quickInserts?.items.length ? _jsx("div", { className: "hjm-message-composer__quick", role: "group", "aria-label": quickInserts.label, style: { "--hjm-quick-size": `${composerQuickInsertRecipe.itemSize}px`, "--hjm-quick-emoji": `${composerQuickInsertRecipe.emojiSize}px` }, children: quickInserts.items.map(item => _jsx("button", { type: "button", className: "hjm-message-composer__quick-item", "aria-label": item.label, disabled: locked, onClick: () => onValueChange(value + item.emoji), children: item.emoji }, item.id)) }) : null;
144
147
  // The error is announced by TextArea's shared Field error region (internal/field-error.tsx); no composer-only copy.
145
- return _jsxs("div", { className: "hjm-message-composer", "data-send-presentation": sendPresentation, "data-description-align": descriptionAlign, style: { "--hjm-message-composer-gap": `${screenPatternRecipe.itemGap}px`, "--hjm-attachment-size": `${screenPatternRecipe.attachmentSize}px`, "--hjm-attachment-remove-size": `${screenPatternRecipe.attachmentRemoveSize}px`, ...layoutStyle }, children: [context, quickRow, _jsxs("div", { className: "hjm-message-composer__reply-card", "data-replying": replyTo ? true : undefined, children: [replyTo ? _jsxs("div", { className: "hjm-message-composer__reply", children: [_jsxs("div", { className: "hjm-message-composer__reply-text", children: [_jsx(Text, { emphasis: "strong", children: replyTo.author }), _jsx(Text, { variant: "caption", tone: "muted", className: "hjm-message-composer__reply-excerpt", children: replyTo.excerpt })] }), _jsx(IconButton, { label: replyTo.cancelLabel, tone: "secondary", size: "small", shape: "circle", disabled: locked, onClick: replyTo.onCancel, children: _jsx(Text, { children: "\u00D7" }) })] }) : null, composerBody] }), lengthFeedback && limit?.near ? _jsx(Progress, { shape: "circular", label: lengthFeedback.label, value: Math.min(limit.used, limit.max), max: limit.max, valueText: lengthFeedback.formatCount(limit.used, limit.max), children: _jsx(Text, { variant: "caption", children: lengthFeedback.formatCount(limit.used, limit.max) }) }) : null] });
148
+ return _jsxs("div", { className: "hjm-message-composer", "data-send-presentation": sendPresentation, "data-description-align": descriptionAlign, style: { "--hjm-message-composer-gap": `${screenPatternRecipe.itemGap}px`, "--hjm-attachment-size": `${screenPatternRecipe.attachmentSize}px`, "--hjm-attachment-remove-size": `${screenPatternRecipe.attachmentRemoveSize}px`, ...layoutStyle }, children: [context, quickRow, _jsxs("div", { className: "hjm-message-composer__reply-card", "data-replying": target ? true : undefined, children: [target ? _jsxs("div", { className: "hjm-message-composer__reply", children: [_jsxs("div", { className: "hjm-message-composer__reply-text", children: [_jsx(Text, { emphasis: "strong", children: target.author }), _jsx(Text, { variant: "caption", tone: "muted", className: "hjm-message-composer__reply-excerpt", children: target.excerpt })] }), _jsx(IconButton, { label: target.cancelLabel, tone: "secondary", size: "small", shape: "circle", disabled: locked, onClick: target.onCancel, children: _jsx(Text, { children: "\u00D7" }) })] }) : null, composerBody] }), lengthFeedback && limit?.near ? _jsx(Progress, { shape: "circular", label: lengthFeedback.label, value: Math.min(limit.used, limit.max), max: limit.max, valueText: lengthFeedback.formatCount(limit.used, limit.max), children: _jsx(Text, { variant: "caption", children: lengthFeedback.formatCount(limit.used, limit.max) }) }) : null] });
146
149
  }
147
150
  export function ChatMessage({ direction, author, timestamp, timestampPresentation = "always", bubbleTail = true, groupPosition = "single", deliveryLabel, avatar, reply, replyQuote, media = [], mediaAlbum, actions, replyAction, replyLink, reactions, children, interactiveContent = false, layoutStyle }) {
148
151
  const theme = useOptionalHjmTheme();
@@ -1 +1 @@
1
- {"version":3,"file":"screens.js","sourceRoot":"","sources":["../src/screens.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\";\n\nimport { cornerAccessoryPlacements, type CornerAccessoryPlacement } from \"@hjmds/design-contracts/recipes\";\nimport { iconTileRecipe, notificationRowRecipe as notificationRecipe, initialFocusDefaults, type ScreenInitialFocus, type IconTileArtwork, type IconTileFrame, type IconTileShape, type IconTileSize } from \"@hjmds/design-contracts/screen-patterns\";\nimport { BottomEntryFocusBoundary, InitialFocusScope } from \"./internal/initial-focus.js\";\nimport { iconButtonRecipe, listRowRecipe } from \"@hjmds/design-contracts/recipes\";\nimport { resolveComposerLimit, type ComposerLengthFeedback } from \"@hjmds/design-contracts/communication\";\nimport { Progress } from \"./feedback.js\";\nimport { resolveDesignProfileScreen, type DesignProfileScreenPresentation } from \"@hjmds/design-contracts/design-profile-layout\";\nimport { MessageReactions, ReactionSummaryButton, ReactionSummaryText, omitReactionSummary, type MessageMenuAction, type MessageReactionsHandle } from \"./internal/message-reactions.js\";\nimport { MediaAlbumView, useMediaAlbumIndex, type MediaAlbum } from \"./internal/media-album.js\";\nimport { validateMediaSetChoice } from \"@hjmds/design-contracts/screen-patterns\";\nexport type { MediaAlbum, MediaAlbumPageStatusProps } from \"./internal/media-album.js\";\n// Loading/failed page rendered inside `mediaAlbum.renderPage` (2026-10-18); comment rows use the same component.\nexport { MediaAlbumPageStatus } from \"./internal/media-album.js\";\nimport type { ReactionPickerProps } from \"./reaction-picker.js\";\nimport { Button, IconButton } from \"./actions.js\";\nimport { useOptionalHjmTheme } from \"./provider.js\";\nimport { TextArea } from \"./forms.js\";\nimport { useId, useLayoutEffect, useRef, useState, type Ref, type ReactNode } from \"react\";\nimport { isReplySwipe, timestampRevealOffset, shouldSubmitMessageKey, canSubmitMessage, validateMessageAttachments, type MessageAttachmentDescriptor, resolveScreenContentState, resolveCompositionStateMinHeight, type CompositionStateHeight, screenPatternRecipe, chatMessageRecipe, composerQuickInsertRecipe, resolveChatMessageGroupDisplay, resolveChatMediaColumns, resolveChatReactionSummary, type ChatReactionSummary, typingIndicatorRecipe, chatDateSeparatorRecipe, screenHeaderRecipe, validateScreenExit, type ChatMessageDescriptor, type MessageComposerDescriptor, type ScreenContentState, type ScreenContentInset } from \"@hjmds/design-contracts/screen-patterns\";\nimport { Heading } from \"./heading.js\";\nimport { Spinner } from \"./internal/spinner.js\";\nimport { topBarRecipe } from \"@hjmds/design-contracts/recipes\";\nimport { ScreenExitButton, type ScreenExit } from \"./internal/screen-exit.js\";\nimport { ScreenFooterContext } from \"./internal/screen-footer.js\";\nimport { Section, Stack, Text, VisuallyHidden } from \"./layout.js\";\nimport { ListRow, type ListRowProps } from \"./display.js\";\nimport { classNames, useDesignProfileDefaults } from \"./internal.js\";\nimport type { HjmCompositionStyleProp } from \"./composition-style.js\";\n\nexport type ScreenLayoutProps = Readonly<{\n title: string;\n /** The shared header owns badge placement; the product supplies its meaning and label. */\n titleBadge?: ReactNode;\n /**\n * Identity mark or artwork before the title (team logo, tool artwork). Decorative: the title stays the heading and\n * the accessible name. With `titleVisibility=\"hidden\"` the mark stands alone in the title slot as the heading,\n * named by `title` (2026-10-18: yajalal team detail and Utilverse tool headers rebuilt the header to get this).\n */\n titleLeading?: ReactNode;\n /** Hide duplicate route names; retain titles that identify a subject or a task. */\n titleVisibility?: \"visible\" | \"hidden\";\n /** Centered by default (2026-10-17 user rule); `start` remains available. Extra actions sit at the trailing edge. */\n headerAlignment?: \"start\" | \"center\";\n /** Preserve host navigation while the shared shell owns content and state. */\n header?: ReactNode;\n /**\n * `none`: host owns every inset. `body-edge`: only the body drops its inline padding so list rows own their inset.\n * `body-bleed`: the body drops every padding (header, notice and footer keep theirs) for an edge-to-edge map or canvas.\n */\n contentInset?: ScreenContentInset;\n /** Center a product prompt in the available body without inventing a query state. */\n contentAlignment?: \"start\" | \"center\";\n /** Keep a product wallpaper supplied by the outer host visible. */\n surface?: \"default\" | \"transparent\";\n /** Explicit layout wins over the nearest design profile. */\n presentation?: DesignProfileScreenPresentation;\n /** @deprecated Screen headers no longer show supporting copy (2026-10-18). Move required guidance into body content. Retained until the next major API cleanup. */\n description?: string;\n /**\n * Leaving this screen (back, close, settings exit): icon-only button fixed at the header's leading edge.\n * The leading edge has no free slot (2026-10-17): every product use was a hand-made back button.\n */\n exit?: ScreenExit;\n actions?: ReactNode;\n notice?: ReactNode;\n footer?: ReactNode;\n state?: ScreenContentState;\n stateAction?: ReactNode;\n /** Brand visual for `state.kind === \"loading\"`; the shared state group keeps copy, centering and announcement (as CompositionLayout). */\n loadingIndicator?: ReactNode;\n children?: ReactNode;\n /** A virtualized list must own scrolling; never nest it inside a second scroll container. */\n scroll?: \"screen\" | \"content\";\n as?: \"main\" | \"section\";\n className?: string;\n /**\n * Canonical layout-only placement on the screen root (for example `flex` or `width` in a split\n * view), matching Native ScreenLayout. Every screen built on ScreenLayout forwards it.\n */\n layoutStyle?: HjmCompositionStyleProp;\n /**\n * Focus the marked, else first enabled input once on page entry (default `first-input`). Never steals an existing\n * input's focus or focuses below an overlay. A pending entry can wait for data; after user interaction it ends.\n * Bottom sheets disable automatic focus for this screen and all nested inputs, regardless of this prop.\n */\n initialFocus?: ScreenInitialFocus;\n}>;\n\n/** Shared screen shell. Routing, data, permission checks and mutation state remain product-owned. */\nexport function ScreenLayout({ title, titleBadge, titleLeading, titleVisibility = \"visible\", headerAlignment = \"center\", header, contentInset = \"default\", contentAlignment = \"start\", surface = \"default\", presentation: suppliedPresentation, exit, actions, notice, footer, state = { kind: \"ready\" }, stateAction, loadingIndicator, children, scroll = \"screen\", as: Element = \"main\", className, layoutStyle, initialFocus = initialFocusDefaults.screen }: ScreenLayoutProps) {\n const id = useId();\n if (exit) validateScreenExit(exit, false);\n const leading = exit ? <ScreenExitButton {...exit} /> : null;\n const hasMark = titleLeading !== undefined && titleLeading !== null && titleLeading !== false;\n const showHeader = titleVisibility === \"visible\" || hasMark || !!leading || !!actions;\n // Same header band as Native (screenHeaderRecipe): a fixed 52 band (48 icon-only) so the title sits at the same\n // height with or without exit/actions buttons (2026-10-17: Web grew 58→76 when a 44 button was present).\n const compactHeader = header == null && headerAlignment === \"center\" && titleVisibility === \"hidden\" && !hasMark;\n // Screens historically work with the stylesheet alone. Optional context keeps\n // that path while inheriting profiles from an enclosing Provider when present.\n const designProfile = useDesignProfileDefaults();\n const presentation = suppliedPresentation ?? designProfile?.screens.overview;\n const profileLayout = presentation === undefined ? undefined : resolveDesignProfileScreen(presentation);\n const resolved = resolveScreenContentState(state);\n // Replacement text owns scrolling even when the ready state delegates it to\n // a virtual list. Use the rendered mode for keyboard access as well as CSS.\n const bodyScroll = resolved.replacesContent ? \"screen\" : scroll;\n const bodyRef = useRef<HTMLDivElement>(null);\n const lastBodyFocus = useRef<HTMLElement | null>(null);\n useLayoutEffect(() => {\n // Replacing a focused retry/input removes its DOM node. Keep keyboard users\n // in the same content region without stealing focus moved to another control.\n // The body is a landing target here, not a control the user moved to, so it is marked to draw no ring while it\n // holds this recovered focus (as the search results landing). The mark clears on blur: a later Tab to the region\n // shows the HJM focus ring (2026-10-23 web check: the browser's default ring outlined the whole body).\n const previous = lastBodyFocus.current;\n const body = bodyRef.current;\n if (body && previous && !previous.isConnected && document.activeElement === document.body) {\n body.setAttribute(\"data-focus-landing\", \"\");\n body.focus({ preventScroll: true });\n }\n if (previous && !previous.isConnected) lastBodyFocus.current = null;\n });\n const recipe = screenPatternRecipe;\n // The mark is decorative beside a visible title; standing alone it becomes the heading, named by `title`.\n const mark = hasMark ? <span className=\"hjm-screen__title-leading\" aria-hidden=\"true\">{titleLeading}</span> : null;\n const titleRow = (level: typeof screenHeaderRecipe.titleLevel | typeof screenHeaderRecipe.centeredTitleLevel, justify: \"center\" | \"start\") => titleVisibility === \"visible\"\n ? <Stack axis=\"inline\" gap=\"xs\" align=\"center\" justify={justify} wrap>{mark\n // A mark labels its title: one non-wrapping group whose heading shrinks and wraps beside the mark. In the wrapping\n // row the heading's max-content basis dropped a long title under a lone mark (2026-10-23, as CompositionLayout).\n ? <Stack axis=\"inline\" gap=\"xs\" align=\"center\" layoutStyle={{flexShrink: 1, minWidth: 0, maxWidth: \"100%\"}}>{mark}<Heading level={level} semanticLevel={1} id={id} layoutStyle={{minWidth: 0}}>{title}</Heading></Stack>\n : <Heading level={level} semanticLevel={1} id={id}>{title}</Heading>}{titleBadge}</Stack>\n : mark ? <div role=\"heading\" aria-level={1} aria-label={title} style={{ display: \"flex\", justifyContent: justify === \"center\" ? \"center\" : \"flex-start\" }}>{mark}</div> : null;\n return <Element aria-labelledby={header || titleVisibility === \"hidden\" ? undefined : id} aria-label={header || titleVisibility === \"hidden\" ? title : undefined} data-content-inset={contentInset} data-presentation={presentation} className={classNames(\"hjm-screen\", className)}\n style={{ backgroundColor: surface === \"transparent\" || designProfile?.material.canvas ? \"transparent\" : undefined, \"--hjm-screen-width\": `${profileLayout?.maxWidth ?? recipe.maxWidth}px`, \"--hjm-screen-padding\": `${contentInset === \"none\" ? 0 : recipe.padding}px`, \"--hjm-screen-gap\": `${profileLayout?.gap ?? recipe.sectionGap}px`, \"--hjm-screen-item-gap\": `${recipe.itemGap}px`, \"--hjm-screen-state-gap\": `${recipe.stateGap}px`, \"--hjm-screen-header-min\": `${recipe.headerMinWidth}px`, ...layoutStyle } as React.CSSProperties}><InitialFocusScope mode={initialFocus}>\n {header ?? (showHeader ? headerAlignment === \"center\" ? <header className=\"hjm-screen__header\" style={{ display: \"grid\", gridTemplateColumns: \"1fr minmax(0, auto) 1fr\", alignItems: \"center\", boxSizing: \"border-box\", minBlockSize: compactHeader ? screenHeaderRecipe.compactMinHeight : screenHeaderRecipe.minHeight, paddingBlock: compactHeader ? screenHeaderRecipe.compactPaddingVertical : screenHeaderRecipe.paddingVertical }}>\n {/* Equal side columns sized by their controls and a title-size (18) heading, matching Native's measured\n centered header (2026-10-17: the fixed 1:2:1 split with a level3 heading wrapped short titles). */}\n <div>{leading}</div><div className=\"hjm-screen__heading\" style={{ textAlign: \"center\", minWidth: 0 }}>\n {titleRow(screenHeaderRecipe.centeredTitleLevel, \"center\")}\n </div><div style={{ justifySelf: \"end\", display: \"flex\", alignItems: \"center\", gap: topBarRecipe.gap }}>{actions}</div>\n </header> : <header className=\"hjm-screen__header\" style={profileLayout ? { flexDirection: profileLayout.headerAxis, alignItems: profileLayout.centered ? \"center\" : undefined, textAlign: profileLayout.centered ? \"center\" : undefined } : undefined}>\n {leading}<div className=\"hjm-screen__heading\">{titleRow(screenHeaderRecipe.titleLevel, profileLayout?.centered ? \"center\" : \"start\")}\n </div><div style={{ display: \"flex\", alignItems: \"center\", gap: topBarRecipe.gap }}>{actions}</div>\n </header> : null)}\n {notice ? <div className=\"hjm-screen__notice\">{notice}</div> : null}\n {/* Scrollable read-only screens need a named keyboard entry point, including hidden/custom headers: tabIndex 0\n keeps a screen-scrolled body reachable by Tab (Safari does not make scrollers focusable). */}\n <div ref={bodyRef} role=\"region\" aria-label={title} tabIndex={bodyScroll === \"content\" ? -1 : 0}\n onFocusCapture={event => { lastBodyFocus.current = event.target as HTMLElement; }}\n onBlurCapture={event => {\n if (event.target === event.currentTarget) event.currentTarget.removeAttribute(\"data-focus-landing\");\n // A connected input blurred to the document intentionally relinquishes\n // focus too; only removal of the currently focused node needs recovery.\n if (event.relatedTarget ? !event.currentTarget.contains(event.relatedTarget as Node) : (event.target as HTMLElement).isConnected) {\n lastBodyFocus.current = null;\n }\n }}\n className=\"hjm-screen__body\" data-content-alignment={contentAlignment} data-scroll={bodyScroll} data-replacement={resolved.replacesContent || undefined} aria-busy={resolved.busy || undefined}>\n {state.kind === \"ready\" ? (contentAlignment === \"center\" ? <div className=\"hjm-screen__centered-content\">{children}</div> : children) : <div className=\"hjm-screen__state\">\n {/* Loading copy is an accessible name; visible copy beside the spinner\n contradicts the shared spinner-only loading contract. */}\n {/* The live role wraps only the copy: an alert around the retry action announced the button too (2026-10-17). */}\n {resolved.busy ? (loadingIndicator ? <div role=\"status\" aria-busy=\"true\" aria-label={[state.title, state.description].filter(Boolean).join(\". \")}><div aria-hidden=\"true\">{loadingIndicator}</div></div> : <Spinner label={[state.title, state.description].filter(Boolean).join(\". \")} />) : <div role={state.kind === \"error\" ? \"alert\" : \"status\"}>\n <Stack gap=\"sm\" align=\"center\"><Text variant={resolved.titleVariant}>{state.title}</Text>\n {state.description ? <Text tone=\"muted\">{state.description}</Text> : null}</Stack>\n </div>}\n {stateAction}\n </div>}\n </div>\n {/* Same rule as Native: with contentInset=\"none\" the host owns the insets, so BottomCTA keeps its own bar. */}\n {footer ? <footer className=\"hjm-screen__footer\"><ScreenFooterContext.Provider value={contentInset === \"none\" ? null : { bottomPadding: \"max(var(--hjm-screen-padding), env(safe-area-inset-bottom, 0px))\" }}><BottomEntryFocusBoundary>{footer}</BottomEntryFocusBoundary></ScreenFooterContext.Provider></footer> : null}\n </InitialFocusScope>\n </Element>;\n}\n\n/**\n * Style for a product scroller that owns the body with `scroll=\"content\"`: it reaches across the body gutter\n * (`--hjm-screen-body-inline`) and pads it back, so items stay on the gutter while the clip moves to the screen edges and\n * a bleeding CollectionRail inside scrolls edge to edge (same name and shape as Native; spint home 2026-10-17).\n * Outside a screen body the variable is unset and the room is 0; CSS resolves the distance, so no context is read.\n */\nexport function useScreenBodyScrollRoom(): Readonly<{ style: React.CSSProperties }> {\n return { style: { marginInline: \"calc(-1 * var(--hjm-screen-body-inline, 0px))\", paddingInline: \"var(--hjm-screen-body-inline, 0px)\" } };\n}\n\nexport type SettingsScreenSection = Readonly<{ id: string; title: string; description?: string; children: ReactNode }>;\nexport type SettingsScreenProps = Omit<ScreenLayoutProps, \"children\" | \"scroll\"> & Readonly<{ profile?: ReactNode; sections: readonly SettingsScreenSection[] }>;\nexport function SettingsScreen({ profile, sections, ...props }: SettingsScreenProps) {\n // Keep semantic section headings while using the smaller settings label role.\n return <ScreenLayout {...props}><Stack gap=\"md\">{profile}{sections.map(section =>\n <Section className=\"hjm-settings-section\" key={section.id} title={<Text variant=\"label\" emphasis=\"strong\" tone=\"muted\">{section.title}</Text>} description={section.description}>{section.children}</Section>)}</Stack></ScreenLayout>;\n}\n\nexport type NotificationInboxScreenProps = Omit<ScreenLayoutProps, \"children\"> & Readonly<{\n filters?: ReactNode;\n children: ReactNode;\n}>;\nexport function NotificationInboxScreen({ filters, children, notice, ...props }: NotificationInboxScreenProps) {\n return <ScreenLayout {...props} notice={<Stack gap=\"sm\">{notice}{filters}</Stack>}>{children}</ScreenLayout>;\n}\n\n/** Read/unread is announced in localized copy as well as emphasis; rendering never marks an item read. */\nexport type NotificationItemProps = Omit<ListRowProps, \"description\" | \"selected\"> & Readonly<{\n read: boolean;\n statusLabel: string;\n timestamp: string;\n description?: ReactNode;\n /**\n * Localized name of the unread dot. When given, an unread item draws the dot after the status·time line\n * (notificationRowRecipe.unreadSize, content brand — the NotificationRow mark). Spint drew a \"•\" glyph in\n * `trailing` because the item only changed weight and meta (2026-10-23).\n */\n unreadLabel?: string;\n}>;\nexport function NotificationItem({ read, statusLabel, timestamp, description, unreadLabel, title, className, ...props }: NotificationItemProps) {\n if (unreadLabel !== undefined && unreadLabel.trim().length === 0) throw new TypeError(\"NotificationItem unreadLabel must not be empty\");\n const meta = <Text variant=\"caption\" tone=\"muted\">{statusLabel} · {timestamp}</Text>;\n const dot = !read && unreadLabel !== undefined\n ? <span role=\"img\" aria-label={unreadLabel} data-hjm-unread-dot=\"true\" style={{ inlineSize: notificationRecipe.unreadSize, blockSize: notificationRecipe.unreadSize, borderRadius: \"50%\", flexShrink: 0, background: \"var(--hjm-color-content-brand)\" }} />\n : null;\n return <ListRow {...props} className={classNames(\"hjm-notification-item\", className)} data-unread={!read || undefined} title={<Text variant={listRowRecipe.title.textVariant} emphasis={read ? \"regular\" : \"strong\"}>{title}</Text>}\n description={<Stack gap=\"xxs\">{description}{dot ? <span style={{ display: \"flex\", alignItems: \"center\", gap: notificationRecipe.contentGap }}>{meta}{dot}</span> : meta}</Stack>} />;\n}\n\nexport type ChatScreenProps = Omit<ScreenLayoutProps, \"footer\" | \"titleLeading\"> & Readonly<{\n composer: ReactNode;\n /** Shown while the reader is away from the latest message; the host owns scroll position and visibility. */\n jumpToLatest?: Readonly<{ label: string; icon: ReactNode; onPress(): void }>;\n /** Peer or room photo beside the centered title; group rooms add the member count through `titleBadge`. */\n avatar?: ReactNode;\n}>;\n/** Caller supplies a virtualized timeline and keyboard-aware composer; no implicit auto-scroll or send. */\nexport function ChatScreen({ composer, jumpToLatest, avatar, scroll = \"content\", ...props }: ChatScreenProps) {\n // An empty conversation must still allow its first message; unavailable states hide input.\n const showComposer = !props.state || props.state.kind === \"ready\" || props.state.kind === \"empty\";\n // Anchor the jump control to the composer edge so it floats over the timeline without measuring the footer.\n // Conversations center the peer between back and tools and use the measured 10px timeline gutter (2026-10-16).\n return <ScreenLayout {...props} className={classNames(\"hjm-chat-screen\", props.className) ?? \"hjm-chat-screen\"} titleLeading={avatar} scroll={scroll} footer={showComposer ? <div className=\"hjm-chat-screen__footer\">\n {jumpToLatest ? <div className=\"hjm-chat-screen__jump\"><IconButton label={jumpToLatest.label} size=\"small\" shape=\"circle\" tone=\"secondary\" onClick={jumpToLatest.onPress}>{jumpToLatest.icon}</IconButton></div> : null}\n {composer}</div> : null} />;\n}\n\nexport type MessageComposerProps = Omit<MessageComposerDescriptor, \"attachmentCount\"> & Readonly<{\n maxLength?: number;\n /** Opt-in count/ring appears only near the actual maxLength; never trims drafts. */\n lengthFeedback?: ComposerLengthFeedback;\n sendDisabled?: boolean;\n additionalContent?: boolean;\n leadingAction?: ReactNode;\n inputRef?: Ref<HTMLTextAreaElement>;\n /** Release typing presence when the host input loses focus. */\n onBlur?: () => void;\n onValueChange(value: string): void;\n onSend(value: string): void;\n /** Emoji row above the input; a tap appends the emoji to the draft (measured comment sheet, 2026-10-16). */\n /** Outside the field, beside the input row (e.g. the writer's avatar); the quick-insert row stays full width. */\n leading?: ReactNode;\n quickInserts?: Readonly<{ label: string; items: readonly Readonly<{ id: string; emoji: string; label: string }>[] }>;\n context?: ReactNode;\n replyTo?: Readonly<{ author: string; excerpt: string; cancelLabel: string; onCancel(): void }>;\n /** Icon mode puts the send/attachment action inside the growing field. */\n sendIcon?: ReactNode;\n /** Reference comment layout: a filled circular send action inside the field. */\n sendPresentation?: \"inline\" | \"circle\";\n attachmentAction?: Readonly<{ label: string; icon: ReactNode; onPress(): void; disabled?: boolean }>;\n attachments?: readonly (MessageAttachmentDescriptor & Readonly<{ preview: ReactNode }>)[];\n onRemoveAttachment?: (id: string) => void;\n /** Canonical layout-only placement on the composer root. Controlled visual keys are excluded. */\n layoutStyle?: HjmCompositionStyleProp;\n}>;\nexport function MessageComposer({ leading, quickInserts, value, label, sendLabel, placeholder = label, description, descriptionAlign = \"start\", error, invalid = false, submitMode = \"newline\", onBlur, disabled = false, pending = false, onValueChange, onSend, maxLength, lengthFeedback, sendDisabled = false, additionalContent = false, leadingAction, inputRef, context, replyTo, sendIcon, sendPresentation = \"inline\", attachmentAction, attachments = [], onRemoveAttachment, layoutStyle }: MessageComposerProps) {\n validateMessageAttachments(attachments);\n if (attachments.length && !onRemoveAttachment) throw new TypeError(\"Attachments require a removal callback\");\n if (lengthFeedback && maxLength === undefined) throw new TypeError(\"Composer length feedback requires maxLength\");\n const limit = !lengthFeedback ? null : resolveComposerLimit(value, maxLength!, lengthFeedback.threshold);\n const canSend = !sendDisabled && !limit?.exceeded && canSubmitMessage({ value, label, sendLabel, disabled, pending, attachmentCount: attachments.length + (additionalContent ? 1 : 0) });\n const locked = disabled || pending;\n const sendDiameter = iconButtonRecipe.sizes[sendPresentation === \"circle\" ? \"small\" : \"medium\"].diameter;\n // A bounded corner radius keeps multiline/large-text content inside the field instead of a tall pill.\n const hasContent = !!value.trim() || attachments.length > 0 || additionalContent;\n const attach = attachmentAction ? <IconButton label={attachmentAction.label} tone=\"ghost\" disabled={locked || attachmentAction.disabled} onClick={attachmentAction.onPress}>{attachmentAction.icon}</IconButton> : null;\n const send = sendIcon ? <IconButton label={sendLabel} size={sendPresentation === \"circle\" ? \"small\" : \"medium\"} shape=\"circle\" tone={sendPresentation === \"circle\" ? \"primary\" : \"ghost\"} disabled={!canSend} loading={pending} onClick={() => { if (canSend) onSend(value); }}>{sendIcon}</IconButton> : <Button disabled={!canSend} loading={pending} onClick={() => { if (canSend) onSend(value); }}>{sendLabel}</Button>;\n // Readonly pending input preserves the keyboard/focus for receipt failure recovery; disabling it would blur desktop chat.\n // Enter is opt-in and IME-safe; receipt-driven clearing and failed-send recovery belong to the host.\n const composerBody = <>{attachments.length ? <div className=\"hjm-message-composer__attachments\">{attachments.map(item => <div key={item.id} className=\"hjm-message-composer__attachment\"><div className=\"hjm-message-composer__preview\">{item.preview}</div><span className=\"hjm-message-composer__remove\"><IconButton label={item.removeLabel} tone=\"ghost\" size=\"small\" disabled={locked || item.disabled} onClick={() => { if (!locked && !item.disabled) onRemoveAttachment?.(item.id); }}><span className=\"hjm-message-composer__remove-glyph\" aria-hidden=\"true\">×</span></IconButton></span></div>)}{attach}</div> : null}\n <div className=\"hjm-message-composer__row\">{leading ? <span className=\"hjm-message-composer__leading\">{leading}</span> : null}<TextArea ref={inputRef} maxLength={maxLength} leadingAction={leadingAction} shape=\"large\" rows={screenPatternRecipe.composerMinLines} aria-label={label} placeholder={placeholder} description={description} error={error} aria-invalid={invalid || undefined} onBlur={onBlur} value={value} disabled={disabled} readOnly={pending} aria-busy={pending || undefined}\n onKeyDown={event => { if (shouldSubmitMessageKey({key:event.key, shiftKey:event.shiftKey, isComposing:event.nativeEvent.isComposing, keyCode:event.nativeEvent.keyCode}, submitMode)) { event.preventDefault(); if (canSend) onSend(value); } }}\n onChange={event => { if (!locked) onValueChange(event.currentTarget.value); }} minVisibleLines={screenPatternRecipe.composerMinLines} maxVisibleLines={screenPatternRecipe.composerMaxLines}\n {...(sendIcon ? { trailing: <span className=\"hjm-message-composer__trailing\" style={{ minInlineSize: sendDiameter, minBlockSize: sendDiameter }}>{/* Reserve the send diameter so typing never resizes the field; a hidden duplicate made two \"send\" buttons. */}<span className=\"hjm-message-composer__visible\">{hasContent || pending ? send : attach}</span></span> } : {})} />\n {sendIcon ? null : send}\n </div></>;\n const quickRow = quickInserts?.items.length ? <div className=\"hjm-message-composer__quick\" role=\"group\" aria-label={quickInserts.label} style={{ \"--hjm-quick-size\": `${composerQuickInsertRecipe.itemSize}px`, \"--hjm-quick-emoji\": `${composerQuickInsertRecipe.emojiSize}px` } as React.CSSProperties}>\n {quickInserts.items.map(item => <button key={item.id} type=\"button\" className=\"hjm-message-composer__quick-item\" aria-label={item.label} disabled={locked} onClick={() => onValueChange(value + item.emoji)}>{item.emoji}</button>)}\n </div> : null;\n // The error is announced by TextArea's shared Field error region (internal/field-error.tsx); no composer-only copy.\n return <div className=\"hjm-message-composer\" data-send-presentation={sendPresentation} data-description-align={descriptionAlign} style={{\"--hjm-message-composer-gap\": `${screenPatternRecipe.itemGap}px`, \"--hjm-attachment-size\": `${screenPatternRecipe.attachmentSize}px`, \"--hjm-attachment-remove-size\": `${screenPatternRecipe.attachmentRemoveSize}px`, ...layoutStyle} as React.CSSProperties}>{context}{quickRow}{/* Replying wraps target, attachments and input in one card (2026-10-16 reference). */}{/* One stable wrapper whether or not replying, so the textarea is never remounted (focus stays). */}<div className=\"hjm-message-composer__reply-card\" data-replying={replyTo ? true : undefined}>{replyTo ? <div className=\"hjm-message-composer__reply\"><div className=\"hjm-message-composer__reply-text\"><Text emphasis=\"strong\">{replyTo.author}</Text><Text variant=\"caption\" tone=\"muted\" className=\"hjm-message-composer__reply-excerpt\">{replyTo.excerpt}</Text></div><IconButton label={replyTo.cancelLabel} tone=\"secondary\" size=\"small\" shape=\"circle\" disabled={locked} onClick={replyTo.onCancel}><Text>×</Text></IconButton></div> : null}{composerBody}</div>{lengthFeedback && limit?.near ? <Progress shape=\"circular\" label={lengthFeedback.label} value={Math.min(limit.used, limit.max)} max={limit.max} valueText={lengthFeedback.formatCount(limit.used, limit.max)}><Text variant=\"caption\">{lengthFeedback.formatCount(limit.used, limit.max)}</Text></Progress> : null}</div>;\n}\n\nexport type ChatMessageProps = ChatMessageDescriptor & Readonly<{ children: ReactNode; interactiveContent?: boolean; avatar?: ReactNode; reply?: ReactNode; actions?: ReactNode; replyAction?: Readonly<{label:string; onPress():void; disabled?:boolean; icon?:ReactNode}>; replyLink?: Readonly<{label:string; onPress():void}>; /** HJM-drawn quote (\"Replying to X\" + one-line excerpt) heading the bubble; preferred over a custom `reply` node. */ replyQuote?: Readonly<{ title: string; excerpt: string }>; /** Photos sent in the message. Products own the image source, viewer and upload; HJM owns the layout. */ media?: readonly Readonly<{ id: string; label: string; preview: ReactNode; aspectRatio?: number; onPress?(): void }>[]; reactions?: ReactionPickerProps & Readonly<{ closeLabel: string; menuAction?: Readonly<{ label: string; onPress(): void; disabled?: boolean }>; menuActions?: readonly MessageMenuAction[]; reportAction?: Readonly<{ label: string; onPress(): void; disabled?: boolean; icon?: ReactNode }>; summary?: ChatMessageReactionSummary }>;\n /** Canonical layout-only placement on the message row. The swipe offset still owns `transform`. */\n layoutStyle?: HjmCompositionStyleProp }> & Readonly<{\n /**\n * Paged alternative to `media` (2026-10-18, Utilverse): HJM mounts only the shown photo, so a product that authorizes\n * each image fetches one page at a time. Exclusive with `media` (validated at render): one message has one photo set.\n */\n mediaAlbum?: MediaAlbum }>;\n/**\n * Current reactions drawn beside the time as one button that opens the same hold menu (2026-10-18 BurnTok DM, which\n * showed counts as status tags because the menu could not be opened from outside). Counts and the localized\n * accessible name (\"Reactions: heart 2. Open menu\") come from the product; `items` in display order.\n */\nexport type ChatMessageReactionSummary = ChatReactionSummary;\nexport function ChatMessage({ direction, author, timestamp, timestampPresentation = \"always\", bubbleTail = true, groupPosition = \"single\", deliveryLabel, avatar, reply, replyQuote, media = [], mediaAlbum, actions, replyAction, replyLink, reactions, children, interactiveContent=false, layoutStyle }: ChatMessageProps) {\n const theme = useOptionalHjmTheme();\n const display = resolveChatMessageGroupDisplay(groupPosition);\n // A run shows its time once, beside its last bubble; delivery state stays on every bubble.\n const visibleTime = display.showTimestamp ? timestamp : \"\";\n const quote = replyQuote ? <><Text emphasis=\"strong\">{replyQuote.title}</Text><Text tone=\"muted\" className=\"hjm-chat-message__quote-excerpt\">{replyQuote.excerpt}</Text></> : reply;\n // The quote stays inside the bubble; with replyLink a click on it jumps to the original (2026-10-16 reference).\n validateMediaSetChoice(media.length > 0, mediaAlbum !== undefined);\n const [albumIndex, setAlbumIndex] = useMediaAlbumIndex(mediaAlbum);\n const mediaBlock = mediaAlbum ? <MediaAlbumView album={mediaAlbum} index={albumIndex} onIndexChange={setAlbumIndex} width={chatMessageRecipe.mediaWidth} radius={chatMessageRecipe.bubbleRadius} />\n : media.length ? <div className=\"hjm-chat-message__media\" style={{ inlineSize: chatMessageRecipe.mediaWidth, gap: chatMessageRecipe.mediaGap, gridTemplateColumns: `repeat(${resolveChatMediaColumns(media.length)}, minmax(0, 1fr))` } as React.CSSProperties}>\n {media.map(item => { const style = { aspectRatio: media.length > 1 ? 1 : item.aspectRatio ?? 1 }; return item.onPress ? <button key={item.id} type=\"button\" className=\"hjm-chat-message__media-item\" aria-label={item.label} style={style} onClick={item.onPress}>{item.preview}</button> : <div key={item.id} role=\"img\" aria-label={item.label} className=\"hjm-chat-message__media-item\" style={style}>{item.preview}</div>; })}\n </div> : null;\n // A photo-only message drops the bubble surface so the photo itself is the message.\n const photoOnly = (media.length > 0 || mediaAlbum !== undefined) && !reply && !replyQuote && (children === null || children === undefined || children === false || children === \"\");\n const quoteBlock = quote ? (replyLink ? <button type=\"button\" className=\"hjm-chat-message__reply hjm-chat-message__quote\" aria-label={replyLink.label} onClick={replyLink.onPress}>{quote}</button> : <div className=\"hjm-chat-message__reply\">{quote}</div>) : null;\n const revealTime = timestampPresentation === \"swipe\" && !!timestamp;\n // Only the pointer that began a drag can finish it; another touch must not reply or cancel it.\n const start = useRef<{x:number;y:number;pointerId:number} | null>(null);\n const [offset, setOffset] = useState(0);\n const finish = () => { start.current = null; setOffset(0); };\n const menu = useRef<MessageReactionsHandle>(null);\n const summary = reactions?.summary;\n const reactionMenu = reactions ? omitReactionSummary(reactions) : undefined;\n const summaryItems = summary ? resolveChatReactionSummary(summary) : [];\n const summaryButton = reactions && summary && summaryItems.length ? (summary.readOnly ? <ReactionSummaryText label={summary.label} items={summaryItems} /> : <ReactionSummaryButton label={summary.label} items={summaryItems} selected={reactions.value} disabled={reactions.disabled ?? false} onPress={() => menu.current?.open()} />) : null;\n return <article tabIndex={replyAction && !replyAction.disabled ? 0 : undefined}\n aria-keyshortcuts={replyAction ? \"Alt+ArrowLeft Alt+ArrowRight\" : undefined} aria-description={replyAction?.label}\n onKeyDown={event => { if (event.target === event.currentTarget && event.altKey && (event.key === \"ArrowLeft\" || event.key === \"ArrowRight\") && replyAction && !replyAction.disabled) { event.preventDefault(); replyAction.onPress(); } }}\n onPointerDown={event => { if (start.current || (!revealTime && (!replyAction || replyAction.disabled)) || event.button !== 0 || (event.target as HTMLElement).closest(\"button,a,input,textarea\")) return; start.current = {x:event.clientX,y:event.clientY,pointerId:event.pointerId}; }}\n onPointerMove={event => { if (!start.current || start.current.pointerId !== event.pointerId) return; const dx=event.clientX-start.current.x,dy=event.clientY-start.current.y; if (Math.abs(dy)>10 && Math.abs(dy)>Math.abs(dx)) {finish();return;} if (revealTime) setOffset((direction === \"outgoing\" ? -1 : 1) * timestampRevealOffset(direction === \"outgoing\" ? -dx : dx,dy)); else if (Math.abs(dx)>Math.abs(dy)*2) setOffset(Math.max(-72,Math.min(72,dx))); }}\n onPointerUp={event => { if (start.current?.pointerId !== event.pointerId) return; if (!revealTime && start.current && replyAction && !replyAction.disabled && isReplySwipe(event.clientX-start.current.x,event.clientY-start.current.y)) replyAction.onPress(); finish(); }} onPointerCancel={event => { if (start.current?.pointerId === event.pointerId) finish(); }} onPointerLeave={event => { if (start.current?.pointerId === event.pointerId) finish(); }}\n style={{ ...layoutStyle, position: \"relative\", overflow: \"hidden\", marginBlockStart: display.spacingBefore,\n // Reserve tip room only where it protrudes (own trailing edge, or leading edge without an avatar column).\n ...(bubbleTail ? (direction === \"outgoing\" ? { paddingInlineEnd: chatMessageRecipe.tailWidth } : avatar ? {} : { paddingInlineStart: chatMessageRecipe.tailWidth }) : {}), touchAction: revealTime || replyAction ? \"pan-y\" : undefined }} aria-label={author}>\n {revealTime ? <time style={{ position: \"absolute\", ...(direction === \"outgoing\" ? { right: 0, justifyContent: \"flex-end\" } : { left: 0 }), top: 0, bottom: 0, width: 80, display: \"flex\", alignItems: \"center\", opacity: offset !== 0 ? 1 : 0, pointerEvents: \"none\" }}><Text variant=\"caption\" tone=\"muted\">{timestamp}</Text></time> : null}\n <div className=\"hjm-chat-message\" style={{ transform: `translateX(${offset}px)`, transition: start.current || theme?.environment.reducedMotion ? \"none\" : \"transform var(--hjm-motion-normal, 200ms) ease-out\", \"--hjm-message-max-width\": screenPatternRecipe.messageMaxWidth, \"--hjm-chat-avatar-size\": `${chatMessageRecipe.avatarSize}px` } as React.CSSProperties} data-direction={direction} data-tail={(bubbleTail && display.showTail) || undefined}>\n {/* Later bubbles of a run keep the avatar column so their edges line up under the first bubble. */}\n {avatar ? <div className=\"hjm-chat-message__avatar\" aria-hidden={display.showAvatar ? undefined : true}>{display.showAvatar ? avatar : null}</div> : null}\n <div className=\"hjm-chat-message__content\">{author && display.showAuthor && direction !== \"outgoing\"?<Text variant=\"caption\" tone=\"muted\">{author}</Text>:null}\n {/* Time and delivery sit beside the bubble's bottom edge, on the side facing the open space. */}\n <div className=\"hjm-chat-message__body\">\n {reactionMenu ? <MessageReactions {...reactionMenu} menuRef={menu} interactiveContent={interactiveContent || mediaAlbum !== undefined} {...(timestamp ? { menuTitle: timestamp } : {})} {...(replyAction && !replyAction.disabled ? {replyAction} : {})}>{quoteBlock}{mediaBlock}{photoOnly ? null : children}</MessageReactions> : <div className=\"hjm-chat-message__bubble\" data-photo-only={photoOnly || undefined}>{quoteBlock}{mediaBlock}{photoOnly ? null : children}</div>}\n {(!revealTime && visibleTime)||deliveryLabel||actions||summaryButton?<div className=\"hjm-chat-message__meta\">{summaryButton}{(!revealTime && visibleTime)||deliveryLabel?<Text variant=\"caption\" tone=\"muted\">{[revealTime ? \"\" : visibleTime, deliveryLabel].filter(Boolean).join(\" · \")}</Text>:null}{actions}</div>:null}\n </div>\n </div>\n </div>\n </article>;\n}\n\n/** Shared structure for embedded compositions. The parent supplies size; this never creates a second scroller. */\nexport type CompositionLayoutProps = Readonly<{\n title?: string;\n /** Compact labels inside sheets retain heading semantics without a large section title. */\n titleSize?: \"default\" | \"compact\";\n /** Document heading level; visual treatment remains the shared composition title. */\n headingLevel?: 1 | 2 | 3 | 4 | 5 | 6;\n description?: string;\n badge?: ReactNode;\n leading?: ReactNode;\n actions?: ReactNode;\n notice?: ReactNode;\n children?: ReactNode;\n footer?: ReactNode;\n /** Passive supporting artwork beside the heading and body; never a header action. */\n aside?: ReactNode;\n /** Secondary footer metadata; wraps rather than squeezing the main footer. */\n footerAside?: ReactNode;\n state?: ScreenContentState;\n stateAction?: ReactNode;\n /**\n * Room the loading/empty/error/restricted replacement keeps in place so it centers without a parent height\n * (`screenPatternRecipe.compositionState`: compact 96 · regular 160 · large 220; `fit` = its own height).\n * Ready content is not affected.\n */\n stateHeight?: CompositionStateHeight;\n /** Brand visual only; the shared state group owns copy, centering and announcement. */\n loadingIndicator?: ReactNode;\n layoutStyle?: HjmCompositionStyleProp;\n}>;\nexport function CompositionLayout({title, titleSize = \"default\", headingLevel = 3, description, badge, leading, actions, notice, children, footer, aside, footerAside, state = {kind: \"ready\"}, stateAction, stateHeight = \"fit\", loadingIndicator, layoutStyle}: CompositionLayoutProps) {\n const resolved = resolveScreenContentState(state);\n const stateMinHeight = resolveCompositionStateMinHeight(stateHeight);\n // The floor sits on a host around the state group: layoutStyle is placement-only and excludes sizes.\n const stateGroup = state.kind === \"ready\" ? null : <Stack gap=\"sm\" align=\"center\" justify=\"center\" layoutStyle={{flex: 1}}>\n {resolved.busy ? (loadingIndicator ? <div role=\"status\" aria-busy=\"true\" aria-label={[state.title, state.description].filter(Boolean).join(\". \")}><div aria-hidden=\"true\">{loadingIndicator}</div></div> : <Spinner label={[state.title, state.description].filter(Boolean).join(\". \")} />) : <div role={state.kind === \"error\" ? \"alert\" : \"status\"} style={{ textAlign: \"center\" }}>{/* Block, centered lines as Native; the live role covers the copy only, not stateAction. */}<Text as=\"p\" variant={resolved.titleVariant}>{state.title}</Text>{state.description ? <Text as=\"p\" tone=\"muted\">{state.description}</Text> : null}</div>}\n {stateAction}\n </Stack>;\n const content = <>\n {title || description || badge || leading || actions ? <Stack axis=\"inline\" gap=\"sm\" align=\"center\" layoutStyle={{flexWrap: \"wrap\"}}>\n {/* Keep the copy’s natural width as its flex basis so actions wrap before squeezing a short title (Spint cell header). */}\n {/* A leading glyph and its copy are one group: when the title is long the copy wraps beside the glyph\n instead of the whole copy dropping under a lone glyph (2026-10-23, same fault as StatisticGroup). */}\n {leading ? <Stack axis=\"inline\" gap=\"sm\" align=\"center\" layoutStyle={{flexGrow: 1, flexShrink: 0, flexBasis: \"auto\", maxWidth: \"100%\"}}>\n {leading}<Stack gap=\"xxs\" layoutStyle={{flexShrink: 1, minWidth: 0}}>\n <Stack axis=\"inline\" gap=\"xs\" align=\"center\" layoutStyle={{flexWrap: \"wrap\"}}>{title ? (titleSize === \"compact\" ? <Text variant=\"body\" role=\"heading\" aria-level={headingLevel} style={{fontWeight: 500}}>{title}</Text> : <Heading level=\"level5\" semanticLevel={headingLevel}>{title}</Heading>) : null}{badge}</Stack>\n {description ? <Text tone=\"muted\">{description}</Text> : null}\n </Stack>\n </Stack> : <Stack gap=\"xxs\" layoutStyle={{flexGrow: 1, flexShrink: 0, flexBasis: \"auto\", maxWidth: \"100%\"}}>\n <Stack axis=\"inline\" gap=\"xs\" align=\"center\" layoutStyle={{flexWrap: \"wrap\"}}>{title ? (titleSize === \"compact\" ? <Text variant=\"body\" role=\"heading\" aria-level={headingLevel} style={{fontWeight: 500}}>{title}</Text> : <Heading level=\"level5\" semanticLevel={headingLevel}>{title}</Heading>) : null}{badge}</Stack>\n {description ? <Text tone=\"muted\">{description}</Text> : null}\n </Stack>}{actions}\n </Stack> : null}\n {notice}\n {state.kind === \"ready\" ? children : stateMinHeight === null ? stateGroup : <div data-hjm-state-height={stateHeight} style={{display: \"flex\", flexDirection: \"column\", flex: 1, minHeight: stateMinHeight}}>{stateGroup}</div>}\n </>;\n // Supporting art spans the heading and body, so a long title cannot push it into a separate row.\n // Diairy postcard cards (2026-10-20) exposed the misuse of header actions for this passive content.\n return <Stack gap=\"md\" {...(layoutStyle === undefined ? {} : {layoutStyle})}>\n {aside ? <Stack axis=\"inline\" gap=\"md\" align=\"start\">\n <Stack gap=\"md\" layoutStyle={{flex: 1, minWidth: 0}}>{content}</Stack>\n <Stack layoutStyle={{flexShrink: 0, maxWidth: \"40%\"}}>{aside}</Stack>\n </Stack> : content}\n {footerAside ? <Stack axis=\"inline\" gap=\"xs\" align=\"center\" justify=\"between\" wrap>\n {footer ? <Stack layoutStyle={{flexGrow: 1, minWidth: 0}}>{footer}</Stack> : null}\n {footerAside}\n </Stack> : footer}\n </Stack>;\n}\n\nexport type NotificationRowProps = Readonly<{\n /** Text and inline emphasis only; interactive content belongs outside the row. */\n preview: ReactNode;\n metadata: string;\n avatar: ReactNode;\n avatarBadge?: ReactNode;\n thumbnail?: ReactNode;\n unread?: boolean;\n /** The section/list supplies the boundary; HJM aligns its divider with the preview column. */\n separator?: boolean;\n /** One optional command around the passive preview; the product retains routing/permission decisions. */\n action?: Readonly<{ label: string; onActivate(): void; disabled?: boolean }>;\n\n}>;\n\n/** Optional shared command host; passive previews remain compatible with existing router/gesture hosts. */\nexport function NotificationRow({ preview, metadata, avatar, avatarBadge, thumbnail, unread = false, separator = false, action }: NotificationRowProps) {\n const r = notificationRecipe;\n if (action && !action.label.trim()) throw new TypeError(\"NotificationRow action requires a localized label\");\n const content = <span aria-hidden=\"true\" data-hjm-notification-row=\"true\" style={{ position: \"relative\", display: \"flex\", alignItems: \"center\", gap: r.gap, padding: `${r.paddingBlock}px ${r.paddingInline}px`, width: \"100%\", minWidth: 0, boxSizing: \"border-box\" }}>\n {separator ? <span data-hjm-notification-separator=\"true\" style={{ position: \"absolute\", insetBlockStart: 0, insetInlineStart: r.separatorInsetStart, insetInlineEnd: 0, borderBlockStart: \"1px solid var(--hjm-color-border)\" }} /> : null}\n <span style={{ position: \"relative\", width: r.avatarSize, height: r.avatarSize, flexShrink: 0 }}>\n <span style={{ display: \"flex\", width: \"100%\", height: \"100%\", overflow: \"hidden\", borderRadius: \"50%\" }}>{avatar}</span>\n {avatarBadge ? <span style={{ position: \"absolute\", bottom: 0, right: 0, display: \"flex\", alignItems: \"center\", justifyContent: \"center\", width: r.avatarBadgeSize, height: r.avatarBadgeSize, borderRadius: \"50%\", background: \"var(--hjm-color-surface)\", border: \"2px solid var(--hjm-color-surface)\", boxSizing: \"border-box\" }}>{avatarBadge}</span> : null}\n </span>\n <span data-hjm-notification-copy=\"true\" style={{ flex: 1, minWidth: 0, display: \"flex\", flexDirection: \"column\", gap: r.contentGap }}>\n <Text style={{ display: \"-webkit-box\", WebkitBoxOrient: \"vertical\", WebkitLineClamp: r.previewLines, overflow: \"hidden\" }}>{preview}</Text>\n <span style={{ display: \"flex\", alignItems: \"center\", gap: r.contentGap }}><Text variant=\"caption\" tone=\"muted\">{metadata}</Text>{unread ? <span data-hjm-unread-dot=\"true\" style={{ width: r.unreadSize, height: r.unreadSize, borderRadius: \"50%\", flexShrink: 0, background: \"var(--hjm-color-content-brand)\" }} /> : null}</span>\n </span>\n {thumbnail ? <span style={{ width: r.thumbnailSize, height: r.thumbnailSize, flexShrink: 0, overflow: \"hidden\", borderRadius: \"var(--hjm-radius-sm)\" }}>{thumbnail}</span> : null}\n </span>;\n return action ? <button type=\"button\" className=\"hjm-notification-row-action\" aria-label={action.label}\n disabled={action.disabled} onClick={() => { if (!action.disabled) action.onActivate(); }}\n style={{ \"--hjm-notification-disabled-opacity\": r.interaction.disabledOpacity, \"--hjm-notification-pressed-opacity\": r.interaction.pressedOpacity } as React.CSSProperties}>\n {content}\n </button> : content;\n}\n\nexport type IconTileProps = Readonly<{\n /**\n * Icon artwork. A function receives the rendered edge (`IconTileArtwork`) so fixed-size artwork such as an image\n * sizes itself to a `size=\"fill\"` icon without the product re-computing the cell clamp.\n */\n icon: ReactNode | ((artwork: IconTileArtwork) => ReactNode); label: string; overlay?: ReactNode; labelLines?: 1 | 2; ghost?: boolean;\n /** `none`: the icon is complete product artwork, so no frame fill or hairline is drawn. */\n frame?: IconTileFrame;\n /** Frame (and ghost outline) corner shape from the product's icon theme. */\n shape?: IconTileShape;\n /** `fill`: the icon spans the grid cell between iconTileRecipe.fillMinSize and fillMaxSize. */\n size?: IconTileSize;\n /** Simple activation is HJM-owned; omit for product drag/long-press gesture hosts. */\n onActivate?: () => void;\n activationLabel?: string;\n disabled?: boolean;\n /** Pressable but dimmed (iconTileRecipe.locked) so `onActivate` can explain why. Requires `onActivate` and `lockedLabel`. */\n locked?: boolean;\n /** Localized lock reason appended to the accessible name (\"Weather, sign-in required\"). */\n lockedLabel?: string;\n /** Corner mark (lock, clock, count) on the icon frame, overhanging by iconTileRecipe.accessory.offset. */\n accessory?: ReactNode;\n accessoryPlacement?: CornerAccessoryPlacement;\n layoutStyle?: HjmCompositionStyleProp;\n}>;\n/** Shared launcher/profile tile; simple activation and gesture-only presentation reuse identical content. */\nexport function IconTile({icon, label, overlay, labelLines = 1, ghost = false, frame = iconTileRecipe.defaults.frame, shape = iconTileRecipe.defaults.shape, size = iconTileRecipe.defaults.size, onActivate, activationLabel, disabled = false, locked = false, lockedLabel, accessory, accessoryPlacement = iconTileRecipe.defaults.accessoryPlacement, layoutStyle}: IconTileProps) {\n const r = iconTileRecipe;\n if (onActivate && !(activationLabel ?? label).trim()) throw new TypeError(\"Interactive IconTile requires a label\");\n if (locked && (!onActivate || !lockedLabel?.trim())) throw new TypeError(\"A locked IconTile needs onActivate and a lockedLabel\");\n if (!(cornerAccessoryPlacements as readonly string[]).includes(accessoryPlacement)) throw new TypeError(`Unsupported IconTile accessoryPlacement: ${accessoryPlacement}`);\n const dim = ghost ? r.ghostOpacity : locked ? r.locked.opacity : 1;\n const framed = frame === \"surface\";\n // Percent radius follows the rendered size, so a filling icon keeps its shape at every cell width.\n const dimensions = size === \"fill\" ? {width: \"100%\", minWidth: r.fillMinSize, maxWidth: r.fillMaxSize, aspectRatio: \"1\"} : {width: r.iconSize, height: r.iconSize};\n // A render-function icon needs the filling edge as a number. It is read before paint and on every resize; the\n // computed width ignores transforms (a host's press scale) and keeps fractional cell widths.\n const frameRef = useRef<HTMLSpanElement>(null);\n const measureEdge = size === \"fill\" && typeof icon === \"function\";\n const [fillEdge, setFillEdge] = useState<number>(r.fillMinSize);\n useLayoutEffect(() => {\n const element = frameRef.current;\n if (!measureEdge || !element) return;\n setFillEdge(Number.parseFloat(getComputedStyle(element).width) || r.fillMinSize);\n if (typeof ResizeObserver === \"undefined\") return;\n const observer = new ResizeObserver(([entry]) => { const width = entry?.borderBoxSize?.[0]?.inlineSize; if (width) setFillEdge(width); });\n observer.observe(element);\n return () => observer.disconnect();\n }, [measureEdge, r.fillMinSize]);\n const edge = size === \"fill\" ? fillEdge : r.iconSize;\n const content = <span data-hjm-icon-tile=\"true\" data-frame={frame} data-shape={shape} data-size={size} data-locked={locked || undefined} style={{position: \"relative\", display: \"flex\", flexDirection: \"column\", alignItems: \"center\", gap: r.gap, minWidth: 0, width: \"100%\", overflow: \"visible\", ...(onActivate ? {} : layoutStyle)}}>\n <span ref={frameRef} style={{position: \"relative\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\", ...dimensions, boxSizing: \"border-box\", flexShrink: 0, borderRadius: `${Math.round(r.shapes[shape] * 100)}%`, background: framed ? \"var(--hjm-color-surface-alt)\" : undefined, color: \"var(--hjm-color-text)\", boxShadow: ghost || !framed ? undefined : \"0 0 0 1px var(--hjm-color-border)\", outline: ghost ? \"1px dashed var(--hjm-color-text-muted)\" : undefined, opacity: dim, fontSize: 32}}>{typeof icon === \"function\" ? icon({edge}) : icon}{overlay}</span>\n {/* The accessory sits in a box laid over the frame (same size rules, centered) so dimming the frame never dims it. */}\n {accessory ? <span aria-hidden={onActivate ? true : undefined} style={{position: \"absolute\", insetBlockStart: 0, left: \"50%\", transform: \"translateX(-50%)\", ...dimensions, boxSizing: \"border-box\", pointerEvents: \"none\"}}>\n <span data-hjm-icon-tile-accessory={accessoryPlacement} style={{position: \"absolute\", display: \"inline-flex\", insetInlineEnd: -r.accessory.offset, ...(accessoryPlacement === \"top-end\" ? {insetBlockStart: -r.accessory.offset} : {insetBlockEnd: -r.accessory.offset})}}>{accessory}</span>\n </span> : null}\n <Text variant=\"caption\" style={{opacity: locked ? r.locked.opacity : undefined, display: \"-webkit-box\", WebkitBoxOrient: \"vertical\", WebkitLineClamp: labelLines, width: \"100%\", maxWidth: labelLines === 2 ? r.multilineLabelMaxWidth : r.labelMaxWidth, minHeight: labelLines === 2 ? r.multilineLabelMinHeight : undefined, overflow: \"hidden\", textOverflow: \"ellipsis\", whiteSpace: \"normal\", overflowWrap: \"anywhere\", textAlign: \"center\", fontWeight: 500}}>{label}</Text>\n </span>;\n if (!onActivate) return content;\n return <button type=\"button\" className=\"hjm-icon-tile-action\" aria-label={locked ? `${activationLabel ?? label}, ${lockedLabel}` : activationLabel ?? label} disabled={disabled}\n style={{ \"--hjm-icon-tile-pressed-opacity\": r.activation.pressedOpacity, \"--hjm-icon-tile-disabled-opacity\": r.activation.disabledOpacity,\n minWidth: r.activation.minimumTarget, minHeight: r.activation.minimumTarget, ...layoutStyle } as React.CSSProperties}\n onClick={() => { if (!disabled) onActivate(); }}>{content}</button>;\n}\n\nexport type TypingIndicatorProps = Readonly<{\n /** Localized status read by assistive tech (\"Seoyeon is typing\"); the visible row shows only the dots. */\n label: string;\n /** Typer's photo in a group room, sized like ChatMessage avatars (`chatMessageRecipe.avatarSize`). */\n avatar?: ReactNode;\n layoutStyle?: HjmCompositionStyleProp;\n}>;\n/**\n * Incoming \"is typing\" row for a ChatScreen timeline (2026-10-18 BurnTok DM drew its own). The host shows it only while\n * presence says someone is typing and places it after the last message; HJM owns the bubble, dots and announcement.\n */\nexport function TypingIndicator({ label, avatar, layoutStyle }: TypingIndicatorProps) {\n if (!label.trim()) throw new TypeError(\"TypingIndicator requires a localized label\");\n const theme = useOptionalHjmTheme();\n const r = typingIndicatorRecipe, m = chatMessageRecipe;\n // A polite status: appearing is announced once without interrupting, and the dots stay hidden from assistive tech.\n return <div role=\"status\" className=\"hjm-typing-indicator\" data-reduced-motion={theme?.environment.reducedMotion || undefined}\n style={{ display: \"flex\", alignItems: \"flex-start\", gap: m.avatarGap, marginBlockStart: m.groupGap, paddingInlineStart: avatar ? 0 : m.tailWidth, ...layoutStyle, \"--hjm-typing-dot\": `${r.dotSize}px`, \"--hjm-typing-cycle\": `${r.cycleMs}ms`, \"--hjm-typing-rest\": r.restOpacity } as React.CSSProperties}>\n {avatar ? <span aria-hidden=\"true\" style={{ display: \"flex\", justifyContent: \"center\", flex: `0 0 ${m.avatarSize}px`, inlineSize: m.avatarSize }}>{avatar}</span> : null}\n <span aria-hidden=\"true\" className=\"hjm-typing-indicator__bubble\" style={{ display: \"inline-flex\", alignItems: \"center\", gap: r.dotGap, boxSizing: \"border-box\", minBlockSize: `calc(var(--hjm-type-body-line-height) + ${m.bubblePaddingBlock * 2}px)`, paddingBlock: m.bubblePaddingBlock, paddingInline: m.bubblePaddingInline, borderRadius: m.bubbleRadius, background: \"var(--hjm-color-surface-alt)\" }}>\n {[0, 1, 2].map(index => <span key={index} className=\"hjm-typing-indicator__dot\" style={{ animationDelay: `${index * r.staggerMs}ms` }} />)}\n </span>\n <VisuallyHidden>{label}</VisuallyHidden>\n </div>;\n}\n\nexport type ChatDateSeparatorProps = Readonly<{\n /** Product-formatted date or time (\"Today\", \"Oct 18\", \"3:04 PM\"). */\n label: string;\n /** Machine-readable value for the Web `<time>` element; Native ignores it. */\n dateTime?: string;\n layoutStyle?: HjmCompositionStyleProp;\n}>;\n/**\n * Centered date (or time) row between ChatScreen timeline groups (2026-10-18 Utilverse chat drew a caption). Grouping\n * rules stay with the product; the next message keeps its own group gap, so this row adds only the space before it.\n */\nexport function ChatDateSeparator({ label, dateTime, layoutStyle }: ChatDateSeparatorProps) {\n if (!label.trim()) throw new TypeError(\"ChatDateSeparator requires a localized label\");\n const r = chatDateSeparatorRecipe;\n return <div className=\"hjm-chat-date-separator\" style={{ display: \"flex\", justifyContent: \"center\", textAlign: \"center\", paddingBlockStart: r.paddingTop, paddingBlockEnd: r.paddingBottom, ...layoutStyle }}>\n <Text variant={r.textVariant} tone={r.tone}>{dateTime ? <time dateTime={dateTime}>{label}</time> : label}</Text>\n </div>;\n}\n"]}
1
+ {"version":3,"file":"screens.js","sourceRoot":"","sources":["../src/screens.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\";\n\nimport { cornerAccessoryPlacements, type CornerAccessoryPlacement } from \"@hjmds/design-contracts/recipes\";\nimport { iconTileRecipe, notificationRowRecipe as notificationRecipe, initialFocusDefaults, type ScreenInitialFocus, type IconTileArtwork, type IconTileFrame, type IconTileShape, type IconTileSize } from \"@hjmds/design-contracts/screen-patterns\";\nimport { BottomEntryFocusBoundary, InitialFocusScope } from \"./internal/initial-focus.js\";\nimport { iconButtonRecipe, listRowRecipe } from \"@hjmds/design-contracts/recipes\";\nimport { resolveComposerLimit, type ComposerLengthFeedback } from \"@hjmds/design-contracts/communication\";\nimport { Progress } from \"./feedback.js\";\nimport { resolveDesignProfileScreen, type DesignProfileScreenPresentation } from \"@hjmds/design-contracts/design-profile-layout\";\nimport { MessageReactions, ReactionSummaryButton, ReactionSummaryText, omitReactionSummary, type MessageMenuAction, type MessageReactionsHandle } from \"./internal/message-reactions.js\";\nimport { MediaAlbumView, useMediaAlbumIndex, type MediaAlbum } from \"./internal/media-album.js\";\nimport { validateMediaSetChoice } from \"@hjmds/design-contracts/screen-patterns\";\nexport type { MediaAlbum, MediaAlbumPageStatusProps } from \"./internal/media-album.js\";\n// Loading/failed page rendered inside `mediaAlbum.renderPage` (2026-10-18); comment rows use the same component.\nexport { MediaAlbumPageStatus } from \"./internal/media-album.js\";\nimport type { ReactionPickerProps } from \"./reaction-picker.js\";\nimport { Button, IconButton } from \"./actions.js\";\nimport { useOptionalHjmTheme } from \"./provider.js\";\nimport { TextArea } from \"./forms.js\";\nimport { useId, useLayoutEffect, useRef, useState, type Ref, type ReactNode } from \"react\";\nimport { isReplySwipe, timestampRevealOffset, shouldSubmitMessageKey, canSubmitMessage, validateMessageAttachments, type MessageAttachmentDescriptor, resolveScreenContentState, resolveCompositionStateMinHeight, type CompositionStateHeight, screenPatternRecipe, chatMessageRecipe, composerQuickInsertRecipe, resolveChatMessageGroupDisplay, resolveChatMediaColumns, resolveChatReactionSummary, type ChatReactionSummary, typingIndicatorRecipe, chatDateSeparatorRecipe, screenHeaderRecipe, validateScreenExit, type ChatMessageDescriptor, type MessageComposerDescriptor, type ScreenContentState, type ScreenContentInset } from \"@hjmds/design-contracts/screen-patterns\";\nimport { Heading } from \"./heading.js\";\nimport { Spinner } from \"./internal/spinner.js\";\nimport { topBarRecipe } from \"@hjmds/design-contracts/recipes\";\nimport { ScreenExitButton, type ScreenExit } from \"./internal/screen-exit.js\";\nimport { ScreenFooterContext } from \"./internal/screen-footer.js\";\nimport { Section, Stack, Text, VisuallyHidden } from \"./layout.js\";\nimport { ListRow, type ListRowProps } from \"./display.js\";\nimport { classNames, useDesignProfileDefaults } from \"./internal.js\";\nimport type { HjmCompositionStyleProp } from \"./composition-style.js\";\n\nexport type ScreenLayoutProps = Readonly<{\n title: string;\n /** The shared header owns badge placement; the product supplies its meaning and label. */\n titleBadge?: ReactNode;\n /**\n * Identity mark or artwork before the title (team logo, tool artwork). Decorative: the title stays the heading and\n * the accessible name. With `titleVisibility=\"hidden\"` the mark stands alone in the title slot as the heading,\n * named by `title` (2026-10-18: yajalal team detail and Utilverse tool headers rebuilt the header to get this).\n */\n titleLeading?: ReactNode;\n /** Hide duplicate route names; retain titles that identify a subject or a task. */\n titleVisibility?: \"visible\" | \"hidden\";\n /** Centered by default (2026-10-17 user rule); `start` remains available. Extra actions sit at the trailing edge. */\n headerAlignment?: \"start\" | \"center\";\n /** Preserve host navigation while the shared shell owns content and state. */\n header?: ReactNode;\n /**\n * `none`: host owns every inset. `body-edge`: only the body drops its inline padding so list rows own their inset.\n * `body-bleed`: the body drops every padding (header, notice and footer keep theirs) for an edge-to-edge map or canvas.\n */\n contentInset?: ScreenContentInset;\n /** Center a product prompt in the available body without inventing a query state. */\n contentAlignment?: \"start\" | \"center\";\n /** Keep a product wallpaper supplied by the outer host visible. */\n surface?: \"default\" | \"transparent\";\n /** Explicit layout wins over the nearest design profile. */\n presentation?: DesignProfileScreenPresentation;\n /** @deprecated Screen headers no longer show supporting copy (2026-10-18). Move required guidance into body content. Retained until the next major API cleanup. */\n description?: string;\n /**\n * Leaving this screen (back, close, settings exit): icon-only button fixed at the header's leading edge.\n * The leading edge has no free slot (2026-10-17): every product use was a hand-made back button.\n */\n exit?: ScreenExit;\n actions?: ReactNode;\n notice?: ReactNode;\n footer?: ReactNode;\n state?: ScreenContentState;\n stateAction?: ReactNode;\n /** Brand visual for `state.kind === \"loading\"`; the shared state group keeps copy, centering and announcement (as CompositionLayout). */\n loadingIndicator?: ReactNode;\n children?: ReactNode;\n /** A virtualized list must own scrolling; never nest it inside a second scroll container. */\n scroll?: \"screen\" | \"content\";\n as?: \"main\" | \"section\";\n className?: string;\n /**\n * Canonical layout-only placement on the screen root (for example `flex` or `width` in a split\n * view), matching Native ScreenLayout. Every screen built on ScreenLayout forwards it.\n */\n layoutStyle?: HjmCompositionStyleProp;\n /**\n * Focus the marked, else first enabled input once on page entry (default `first-input`). Never steals an existing\n * input's focus or focuses below an overlay. A pending entry can wait for data; after user interaction it ends.\n * Bottom sheets disable automatic focus for this screen and all nested inputs, regardless of this prop.\n */\n initialFocus?: ScreenInitialFocus;\n}>;\n\n/** Shared screen shell. Routing, data, permission checks and mutation state remain product-owned. */\nexport function ScreenLayout({ title, titleBadge, titleLeading, titleVisibility = \"visible\", headerAlignment = \"center\", header, contentInset = \"default\", contentAlignment = \"start\", surface = \"default\", presentation: suppliedPresentation, exit, actions, notice, footer, state = { kind: \"ready\" }, stateAction, loadingIndicator, children, scroll = \"screen\", as: Element = \"main\", className, layoutStyle, initialFocus = initialFocusDefaults.screen }: ScreenLayoutProps) {\n const id = useId();\n if (exit) validateScreenExit(exit, false);\n const leading = exit ? <ScreenExitButton {...exit} /> : null;\n const hasMark = titleLeading !== undefined && titleLeading !== null && titleLeading !== false;\n const showHeader = titleVisibility === \"visible\" || hasMark || !!leading || !!actions;\n // Same header band as Native (screenHeaderRecipe): a fixed 52 band (48 icon-only) so the title sits at the same\n // height with or without exit/actions buttons (2026-10-17: Web grew 58→76 when a 44 button was present).\n const compactHeader = header == null && headerAlignment === \"center\" && titleVisibility === \"hidden\" && !hasMark;\n // Screens historically work with the stylesheet alone. Optional context keeps\n // that path while inheriting profiles from an enclosing Provider when present.\n const designProfile = useDesignProfileDefaults();\n const presentation = suppliedPresentation ?? designProfile?.screens.overview;\n const profileLayout = presentation === undefined ? undefined : resolveDesignProfileScreen(presentation);\n const resolved = resolveScreenContentState(state);\n // Replacement text owns scrolling even when the ready state delegates it to\n // a virtual list. Use the rendered mode for keyboard access as well as CSS.\n const bodyScroll = resolved.replacesContent ? \"screen\" : scroll;\n const bodyRef = useRef<HTMLDivElement>(null);\n const lastBodyFocus = useRef<HTMLElement | null>(null);\n useLayoutEffect(() => {\n // Replacing a focused retry/input removes its DOM node. Keep keyboard users\n // in the same content region without stealing focus moved to another control.\n // The body is a landing target here, not a control the user moved to, so it is marked to draw no ring while it\n // holds this recovered focus (as the search results landing). The mark clears on blur: a later Tab to the region\n // shows the HJM focus ring (2026-10-23 web check: the browser's default ring outlined the whole body).\n const previous = lastBodyFocus.current;\n const body = bodyRef.current;\n if (body && previous && !previous.isConnected && document.activeElement === document.body) {\n body.setAttribute(\"data-focus-landing\", \"\");\n body.focus({ preventScroll: true });\n }\n if (previous && !previous.isConnected) lastBodyFocus.current = null;\n });\n const recipe = screenPatternRecipe;\n // The mark is decorative beside a visible title; standing alone it becomes the heading, named by `title`.\n const mark = hasMark ? <span className=\"hjm-screen__title-leading\" aria-hidden=\"true\">{titleLeading}</span> : null;\n const titleRow = (level: typeof screenHeaderRecipe.titleLevel | typeof screenHeaderRecipe.centeredTitleLevel, justify: \"center\" | \"start\") => titleVisibility === \"visible\"\n ? <Stack axis=\"inline\" gap=\"xs\" align=\"center\" justify={justify} wrap>{mark\n // A mark labels its title: one non-wrapping group whose heading shrinks and wraps beside the mark. In the wrapping\n // row the heading's max-content basis dropped a long title under a lone mark (2026-10-23, as CompositionLayout).\n ? <Stack axis=\"inline\" gap=\"xs\" align=\"center\" layoutStyle={{flexShrink: 1, minWidth: 0, maxWidth: \"100%\"}}>{mark}<Heading level={level} semanticLevel={1} id={id} layoutStyle={{minWidth: 0}}>{title}</Heading></Stack>\n : <Heading level={level} semanticLevel={1} id={id}>{title}</Heading>}{titleBadge}</Stack>\n : mark ? <div role=\"heading\" aria-level={1} aria-label={title} style={{ display: \"flex\", justifyContent: justify === \"center\" ? \"center\" : \"flex-start\" }}>{mark}</div> : null;\n return <Element aria-labelledby={header || titleVisibility === \"hidden\" ? undefined : id} aria-label={header || titleVisibility === \"hidden\" ? title : undefined} data-content-inset={contentInset} data-presentation={presentation} className={classNames(\"hjm-screen\", className)}\n style={{ backgroundColor: surface === \"transparent\" || designProfile?.material.canvas ? \"transparent\" : undefined, \"--hjm-screen-width\": `${profileLayout?.maxWidth ?? recipe.maxWidth}px`, \"--hjm-screen-padding\": `${contentInset === \"none\" ? 0 : recipe.padding}px`, \"--hjm-screen-gap\": `${profileLayout?.gap ?? recipe.sectionGap}px`, \"--hjm-screen-item-gap\": `${recipe.itemGap}px`, \"--hjm-screen-state-gap\": `${recipe.stateGap}px`, \"--hjm-screen-header-min\": `${recipe.headerMinWidth}px`, ...layoutStyle } as React.CSSProperties}><InitialFocusScope mode={initialFocus}>\n {header ?? (showHeader ? headerAlignment === \"center\" ? <header className=\"hjm-screen__header\" style={{ display: \"grid\", gridTemplateColumns: \"1fr minmax(0, auto) 1fr\", alignItems: \"center\", boxSizing: \"border-box\", minBlockSize: compactHeader ? screenHeaderRecipe.compactMinHeight : screenHeaderRecipe.minHeight, paddingBlock: compactHeader ? screenHeaderRecipe.compactPaddingVertical : screenHeaderRecipe.paddingVertical }}>\n {/* Equal side columns sized by their controls and a title-size (18) heading, matching Native's measured\n centered header (2026-10-17: the fixed 1:2:1 split with a level3 heading wrapped short titles). */}\n <div>{leading}</div><div className=\"hjm-screen__heading\" style={{ textAlign: \"center\", minWidth: 0 }}>\n {titleRow(screenHeaderRecipe.centeredTitleLevel, \"center\")}\n </div><div style={{ justifySelf: \"end\", display: \"flex\", alignItems: \"center\", gap: topBarRecipe.gap }}>{actions}</div>\n </header> : <header className=\"hjm-screen__header\" style={profileLayout ? { flexDirection: profileLayout.headerAxis, alignItems: profileLayout.centered ? \"center\" : undefined, textAlign: profileLayout.centered ? \"center\" : undefined } : undefined}>\n {leading}<div className=\"hjm-screen__heading\">{titleRow(screenHeaderRecipe.titleLevel, profileLayout?.centered ? \"center\" : \"start\")}\n </div><div style={{ display: \"flex\", alignItems: \"center\", gap: topBarRecipe.gap }}>{actions}</div>\n </header> : null)}\n {notice ? <div className=\"hjm-screen__notice\">{notice}</div> : null}\n {/* Scrollable read-only screens need a named keyboard entry point, including hidden/custom headers: tabIndex 0\n keeps a screen-scrolled body reachable by Tab (Safari does not make scrollers focusable). */}\n <div ref={bodyRef} role=\"region\" aria-label={title} tabIndex={bodyScroll === \"content\" ? -1 : 0}\n onFocusCapture={event => { lastBodyFocus.current = event.target as HTMLElement; }}\n onBlurCapture={event => {\n if (event.target === event.currentTarget) event.currentTarget.removeAttribute(\"data-focus-landing\");\n // A connected input blurred to the document intentionally relinquishes\n // focus too; only removal of the currently focused node needs recovery.\n if (event.relatedTarget ? !event.currentTarget.contains(event.relatedTarget as Node) : (event.target as HTMLElement).isConnected) {\n lastBodyFocus.current = null;\n }\n }}\n className=\"hjm-screen__body\" data-content-alignment={contentAlignment} data-scroll={bodyScroll} data-replacement={resolved.replacesContent || undefined} aria-busy={resolved.busy || undefined}>\n {state.kind === \"ready\" ? (contentAlignment === \"center\" ? <div className=\"hjm-screen__centered-content\">{children}</div> : children) : <div className=\"hjm-screen__state\">\n {/* Loading copy is an accessible name; visible copy beside the spinner\n contradicts the shared spinner-only loading contract. */}\n {/* The live role wraps only the copy: an alert around the retry action announced the button too (2026-10-17). */}\n {resolved.busy ? (loadingIndicator ? <div role=\"status\" aria-busy=\"true\" aria-label={[state.title, state.description].filter(Boolean).join(\". \")}><div aria-hidden=\"true\">{loadingIndicator}</div></div> : <Spinner label={[state.title, state.description].filter(Boolean).join(\". \")} />) : <div role={state.kind === \"error\" ? \"alert\" : \"status\"}>\n <Stack gap=\"sm\" align=\"center\"><Text variant={resolved.titleVariant}>{state.title}</Text>\n {state.description ? <Text tone=\"muted\">{state.description}</Text> : null}</Stack>\n </div>}\n {stateAction}\n </div>}\n </div>\n {/* Same rule as Native: with contentInset=\"none\" the host owns the insets, so BottomCTA keeps its own bar. */}\n {footer ? <footer className=\"hjm-screen__footer\"><ScreenFooterContext.Provider value={contentInset === \"none\" ? null : { bottomPadding: \"max(var(--hjm-screen-padding), env(safe-area-inset-bottom, 0px))\" }}><BottomEntryFocusBoundary>{footer}</BottomEntryFocusBoundary></ScreenFooterContext.Provider></footer> : null}\n </InitialFocusScope>\n </Element>;\n}\n\n/**\n * Style for a product scroller that owns the body with `scroll=\"content\"`: it reaches across the body gutter\n * (`--hjm-screen-body-inline`) and pads it back, so items stay on the gutter while the clip moves to the screen edges and\n * a bleeding CollectionRail inside scrolls edge to edge (same name and shape as Native; spint home 2026-10-17).\n * Outside a screen body the variable is unset and the room is 0; CSS resolves the distance, so no context is read.\n */\nexport function useScreenBodyScrollRoom(): Readonly<{ style: React.CSSProperties }> {\n return { style: { marginInline: \"calc(-1 * var(--hjm-screen-body-inline, 0px))\", paddingInline: \"var(--hjm-screen-body-inline, 0px)\" } };\n}\n\nexport type SettingsScreenSection = Readonly<{ id: string; title: string; description?: string; children: ReactNode }>;\nexport type SettingsScreenProps = Omit<ScreenLayoutProps, \"children\" | \"scroll\"> & Readonly<{ profile?: ReactNode; sections: readonly SettingsScreenSection[] }>;\nexport function SettingsScreen({ profile, sections, ...props }: SettingsScreenProps) {\n // Keep semantic section headings while using the smaller settings label role.\n return <ScreenLayout {...props}><Stack gap=\"md\">{profile}{sections.map(section =>\n <Section className=\"hjm-settings-section\" key={section.id} title={<Text variant=\"label\" emphasis=\"strong\" tone=\"muted\">{section.title}</Text>} description={section.description}>{section.children}</Section>)}</Stack></ScreenLayout>;\n}\n\nexport type NotificationInboxScreenProps = Omit<ScreenLayoutProps, \"children\"> & Readonly<{\n filters?: ReactNode;\n children: ReactNode;\n}>;\nexport function NotificationInboxScreen({ filters, children, notice, ...props }: NotificationInboxScreenProps) {\n return <ScreenLayout {...props} notice={<Stack gap=\"sm\">{notice}{filters}</Stack>}>{children}</ScreenLayout>;\n}\n\n/** Read/unread is announced in localized copy as well as emphasis; rendering never marks an item read. */\nexport type NotificationItemProps = Omit<ListRowProps, \"description\" | \"selected\"> & Readonly<{\n read: boolean;\n statusLabel: string;\n timestamp: string;\n description?: ReactNode;\n /**\n * Localized name of the unread dot. When given, an unread item draws the dot after the status·time line\n * (notificationRowRecipe.unreadSize, content brand — the NotificationRow mark). Spint drew a \"•\" glyph in\n * `trailing` because the item only changed weight and meta (2026-10-23).\n */\n unreadLabel?: string;\n}>;\nexport function NotificationItem({ read, statusLabel, timestamp, description, unreadLabel, title, className, ...props }: NotificationItemProps) {\n if (unreadLabel !== undefined && unreadLabel.trim().length === 0) throw new TypeError(\"NotificationItem unreadLabel must not be empty\");\n const meta = <Text variant=\"caption\" tone=\"muted\">{statusLabel} · {timestamp}</Text>;\n const dot = !read && unreadLabel !== undefined\n ? <span role=\"img\" aria-label={unreadLabel} data-hjm-unread-dot=\"true\" style={{ inlineSize: notificationRecipe.unreadSize, blockSize: notificationRecipe.unreadSize, borderRadius: \"50%\", flexShrink: 0, background: \"var(--hjm-color-content-brand)\" }} />\n : null;\n return <ListRow {...props} className={classNames(\"hjm-notification-item\", className)} data-unread={!read || undefined} title={<Text variant={listRowRecipe.title.textVariant} emphasis={read ? \"regular\" : \"strong\"}>{title}</Text>}\n description={<Stack gap=\"xxs\">{description}{dot ? <span style={{ display: \"flex\", alignItems: \"center\", gap: notificationRecipe.contentGap }}>{meta}{dot}</span> : meta}</Stack>} />;\n}\n\nexport type ChatScreenProps = Omit<ScreenLayoutProps, \"footer\" | \"titleLeading\"> & Readonly<{\n composer: ReactNode;\n /** Shown while the reader is away from the latest message; the host owns scroll position and visibility. */\n jumpToLatest?: Readonly<{ label: string; icon: ReactNode; onPress(): void }>;\n /** Peer or room photo beside the centered title; group rooms add the member count through `titleBadge`. */\n avatar?: ReactNode;\n}>;\n/** Caller supplies a virtualized timeline and keyboard-aware composer; no implicit auto-scroll or send. */\nexport function ChatScreen({ composer, jumpToLatest, avatar, scroll = \"content\", ...props }: ChatScreenProps) {\n // An empty conversation must still allow its first message; unavailable states hide input.\n const showComposer = !props.state || props.state.kind === \"ready\" || props.state.kind === \"empty\";\n // Anchor the jump control to the composer edge so it floats over the timeline without measuring the footer.\n // Conversations center the peer between back and tools and use the measured 10px timeline gutter (2026-10-16).\n return <ScreenLayout {...props} className={classNames(\"hjm-chat-screen\", props.className) ?? \"hjm-chat-screen\"} titleLeading={avatar} scroll={scroll} footer={showComposer ? <div className=\"hjm-chat-screen__footer\">\n {jumpToLatest ? <div className=\"hjm-chat-screen__jump\"><IconButton label={jumpToLatest.label} size=\"small\" shape=\"circle\" tone=\"secondary\" onClick={jumpToLatest.onPress}>{jumpToLatest.icon}</IconButton></div> : null}\n {composer}</div> : null} />;\n}\n\nexport type MessageComposerProps = Omit<MessageComposerDescriptor, \"attachmentCount\"> & Readonly<{\n maxLength?: number;\n /** Opt-in count/ring appears only near the actual maxLength; never trims drafts. */\n lengthFeedback?: ComposerLengthFeedback;\n sendDisabled?: boolean;\n additionalContent?: boolean;\n leadingAction?: ReactNode;\n inputRef?: Ref<HTMLTextAreaElement>;\n /** Release typing presence when the host input loses focus. */\n onBlur?: () => void;\n onValueChange(value: string): void;\n onSend(value: string): void;\n /** Emoji row above the input; a tap appends the emoji to the draft (measured comment sheet, 2026-10-16). */\n /** Outside the field, beside the input row (e.g. the writer's avatar); the quick-insert row stays full width. */\n leading?: ReactNode;\n quickInserts?: Readonly<{ label: string; items: readonly Readonly<{ id: string; emoji: string; label: string }>[] }>;\n context?: ReactNode;\n replyTo?: Readonly<{ author: string; excerpt: string; cancelLabel: string; onCancel(): void }>;\n /** Editing keeps the same input mounted. The host owns the saved draft and server confirmation. */\n editTarget?: Readonly<{ label: string; excerpt: string; cancelLabel: string; onCancel(): void }>;\n /** Icon mode puts the send/attachment action inside the growing field. */\n sendIcon?: ReactNode;\n /** Reference comment layout: a filled circular send action inside the field. */\n sendPresentation?: \"inline\" | \"circle\";\n attachmentAction?: Readonly<{ label: string; icon: ReactNode; onPress(): void; disabled?: boolean }>;\n attachments?: readonly (MessageAttachmentDescriptor & Readonly<{ preview: ReactNode }>)[];\n onRemoveAttachment?: (id: string) => void;\n /** Canonical layout-only placement on the composer root. Controlled visual keys are excluded. */\n layoutStyle?: HjmCompositionStyleProp;\n}>;\nexport function MessageComposer({ leading, quickInserts, value, label, sendLabel, placeholder = label, description, descriptionAlign = \"start\", error, invalid = false, submitMode = \"newline\", onBlur, disabled = false, pending = false, onValueChange, onSend, maxLength, lengthFeedback, sendDisabled = false, additionalContent = false, leadingAction, inputRef, context, replyTo, editTarget, sendIcon, sendPresentation = \"inline\", attachmentAction, attachments = [], onRemoveAttachment, layoutStyle }: MessageComposerProps) {\n if (replyTo && editTarget) throw new TypeError(\"A composer cannot reply and edit at the same time\");\n const target = editTarget ? { ...editTarget, author: editTarget.label } : replyTo;\n validateMessageAttachments(attachments);\n if (attachments.length && !onRemoveAttachment) throw new TypeError(\"Attachments require a removal callback\");\n if (lengthFeedback && maxLength === undefined) throw new TypeError(\"Composer length feedback requires maxLength\");\n const limit = !lengthFeedback ? null : resolveComposerLimit(value, maxLength!, lengthFeedback.threshold);\n const canSend = !sendDisabled && !limit?.exceeded && canSubmitMessage({ value, label, sendLabel, disabled, pending, attachmentCount: attachments.length + (additionalContent ? 1 : 0) });\n const locked = disabled || pending;\n const sendDiameter = iconButtonRecipe.sizes[sendPresentation === \"circle\" ? \"small\" : \"medium\"].diameter;\n // A bounded corner radius keeps multiline/large-text content inside the field instead of a tall pill.\n const hasContent = !!value.trim() || attachments.length > 0 || additionalContent;\n const attach = attachmentAction ? <IconButton label={attachmentAction.label} tone=\"ghost\" disabled={locked || attachmentAction.disabled} onClick={attachmentAction.onPress}>{attachmentAction.icon}</IconButton> : null;\n const send = sendIcon ? <IconButton label={sendLabel} size={sendPresentation === \"circle\" ? \"small\" : \"medium\"} shape=\"circle\" tone={sendPresentation === \"circle\" ? \"primary\" : \"ghost\"} disabled={!canSend} loading={pending} onClick={() => { if (canSend) onSend(value); }}>{sendIcon}</IconButton> : <Button disabled={!canSend} loading={pending} onClick={() => { if (canSend) onSend(value); }}>{sendLabel}</Button>;\n // Readonly pending input preserves the keyboard/focus for receipt failure recovery; disabling it would blur desktop chat.\n // Enter is opt-in and IME-safe; receipt-driven clearing and failed-send recovery belong to the host.\n const composerBody = <>{attachments.length ? <div className=\"hjm-message-composer__attachments\">{attachments.map(item => <div key={item.id} className=\"hjm-message-composer__attachment\"><div className=\"hjm-message-composer__preview\">{item.preview}</div><span className=\"hjm-message-composer__remove\"><IconButton label={item.removeLabel} tone=\"ghost\" size=\"small\" disabled={locked || item.disabled} onClick={() => { if (!locked && !item.disabled) onRemoveAttachment?.(item.id); }}><span className=\"hjm-message-composer__remove-glyph\" aria-hidden=\"true\">×</span></IconButton></span></div>)}{attach}</div> : null}\n <div className=\"hjm-message-composer__row\">{leading ? <span className=\"hjm-message-composer__leading\">{leading}</span> : null}<TextArea ref={inputRef} maxLength={maxLength} leadingAction={leadingAction} shape=\"large\" rows={screenPatternRecipe.composerMinLines} aria-label={label} placeholder={placeholder} description={description} error={error} aria-invalid={invalid || undefined} onBlur={onBlur} value={value} disabled={disabled} readOnly={pending} aria-busy={pending || undefined}\n onKeyDown={event => { if (shouldSubmitMessageKey({key:event.key, shiftKey:event.shiftKey, isComposing:event.nativeEvent.isComposing, keyCode:event.nativeEvent.keyCode}, submitMode)) { event.preventDefault(); if (canSend) onSend(value); } }}\n onChange={event => { if (!locked) onValueChange(event.currentTarget.value); }} minVisibleLines={screenPatternRecipe.composerMinLines} maxVisibleLines={screenPatternRecipe.composerMaxLines}\n {...(sendIcon ? { trailing: <span className=\"hjm-message-composer__trailing\" style={{ minInlineSize: sendDiameter, minBlockSize: sendDiameter }}>{/* Reserve the send diameter so typing never resizes the field; a hidden duplicate made two \"send\" buttons. */}<span className=\"hjm-message-composer__visible\">{hasContent || pending ? send : attach}</span></span> } : {})} />\n {sendIcon ? null : send}\n </div></>;\n const quickRow = quickInserts?.items.length ? <div className=\"hjm-message-composer__quick\" role=\"group\" aria-label={quickInserts.label} style={{ \"--hjm-quick-size\": `${composerQuickInsertRecipe.itemSize}px`, \"--hjm-quick-emoji\": `${composerQuickInsertRecipe.emojiSize}px` } as React.CSSProperties}>\n {quickInserts.items.map(item => <button key={item.id} type=\"button\" className=\"hjm-message-composer__quick-item\" aria-label={item.label} disabled={locked} onClick={() => onValueChange(value + item.emoji)}>{item.emoji}</button>)}\n </div> : null;\n // The error is announced by TextArea's shared Field error region (internal/field-error.tsx); no composer-only copy.\n return <div className=\"hjm-message-composer\" data-send-presentation={sendPresentation} data-description-align={descriptionAlign} style={{\"--hjm-message-composer-gap\": `${screenPatternRecipe.itemGap}px`, \"--hjm-attachment-size\": `${screenPatternRecipe.attachmentSize}px`, \"--hjm-attachment-remove-size\": `${screenPatternRecipe.attachmentRemoveSize}px`, ...layoutStyle} as React.CSSProperties}>{context}{quickRow}{/* Replying wraps target, attachments and input in one card (2026-10-16 reference). */}{/* One stable wrapper whether or not replying, so the textarea is never remounted (focus stays). */}<div className=\"hjm-message-composer__reply-card\" data-replying={target ? true : undefined}>{target ? <div className=\"hjm-message-composer__reply\"><div className=\"hjm-message-composer__reply-text\"><Text emphasis=\"strong\">{target.author}</Text><Text variant=\"caption\" tone=\"muted\" className=\"hjm-message-composer__reply-excerpt\">{target.excerpt}</Text></div><IconButton label={target.cancelLabel} tone=\"secondary\" size=\"small\" shape=\"circle\" disabled={locked} onClick={target.onCancel}><Text>×</Text></IconButton></div> : null}{composerBody}</div>{lengthFeedback && limit?.near ? <Progress shape=\"circular\" label={lengthFeedback.label} value={Math.min(limit.used, limit.max)} max={limit.max} valueText={lengthFeedback.formatCount(limit.used, limit.max)}><Text variant=\"caption\">{lengthFeedback.formatCount(limit.used, limit.max)}</Text></Progress> : null}</div>;\n}\n\nexport type ChatMessageProps = ChatMessageDescriptor & Readonly<{ children: ReactNode; interactiveContent?: boolean; avatar?: ReactNode; reply?: ReactNode; actions?: ReactNode; replyAction?: Readonly<{label:string; onPress():void; disabled?:boolean; icon?:ReactNode}>; replyLink?: Readonly<{label:string; onPress():void}>; /** HJM-drawn quote (\"Replying to X\" + one-line excerpt) heading the bubble; preferred over a custom `reply` node. */ replyQuote?: Readonly<{ title: string; excerpt: string }>; /** Photos sent in the message. Products own the image source, viewer and upload; HJM owns the layout. */ media?: readonly Readonly<{ id: string; label: string; preview: ReactNode; aspectRatio?: number; onPress?(): void }>[]; reactions?: ReactionPickerProps & Readonly<{ closeLabel: string; menuAction?: Readonly<{ label: string; onPress(): void; disabled?: boolean }>; menuActions?: readonly MessageMenuAction[]; reportAction?: Readonly<{ label: string; onPress(): void; disabled?: boolean; icon?: ReactNode }>; summary?: ChatMessageReactionSummary }>;\n /** Canonical layout-only placement on the message row. The swipe offset still owns `transform`. */\n layoutStyle?: HjmCompositionStyleProp }> & Readonly<{\n /**\n * Paged alternative to `media` (2026-10-18, Utilverse): HJM mounts only the shown photo, so a product that authorizes\n * each image fetches one page at a time. Exclusive with `media` (validated at render): one message has one photo set.\n */\n mediaAlbum?: MediaAlbum }>;\n/**\n * Current reactions drawn beside the time as one button that opens the same hold menu (2026-10-18 BurnTok DM, which\n * showed counts as status tags because the menu could not be opened from outside). Counts and the localized\n * accessible name (\"Reactions: heart 2. Open menu\") come from the product; `items` in display order.\n */\nexport type ChatMessageReactionSummary = ChatReactionSummary;\nexport function ChatMessage({ direction, author, timestamp, timestampPresentation = \"always\", bubbleTail = true, groupPosition = \"single\", deliveryLabel, avatar, reply, replyQuote, media = [], mediaAlbum, actions, replyAction, replyLink, reactions, children, interactiveContent=false, layoutStyle }: ChatMessageProps) {\n const theme = useOptionalHjmTheme();\n const display = resolveChatMessageGroupDisplay(groupPosition);\n // A run shows its time once, beside its last bubble; delivery state stays on every bubble.\n const visibleTime = display.showTimestamp ? timestamp : \"\";\n const quote = replyQuote ? <><Text emphasis=\"strong\">{replyQuote.title}</Text><Text tone=\"muted\" className=\"hjm-chat-message__quote-excerpt\">{replyQuote.excerpt}</Text></> : reply;\n // The quote stays inside the bubble; with replyLink a click on it jumps to the original (2026-10-16 reference).\n validateMediaSetChoice(media.length > 0, mediaAlbum !== undefined);\n const [albumIndex, setAlbumIndex] = useMediaAlbumIndex(mediaAlbum);\n const mediaBlock = mediaAlbum ? <MediaAlbumView album={mediaAlbum} index={albumIndex} onIndexChange={setAlbumIndex} width={chatMessageRecipe.mediaWidth} radius={chatMessageRecipe.bubbleRadius} />\n : media.length ? <div className=\"hjm-chat-message__media\" style={{ inlineSize: chatMessageRecipe.mediaWidth, gap: chatMessageRecipe.mediaGap, gridTemplateColumns: `repeat(${resolveChatMediaColumns(media.length)}, minmax(0, 1fr))` } as React.CSSProperties}>\n {media.map(item => { const style = { aspectRatio: media.length > 1 ? 1 : item.aspectRatio ?? 1 }; return item.onPress ? <button key={item.id} type=\"button\" className=\"hjm-chat-message__media-item\" aria-label={item.label} style={style} onClick={item.onPress}>{item.preview}</button> : <div key={item.id} role=\"img\" aria-label={item.label} className=\"hjm-chat-message__media-item\" style={style}>{item.preview}</div>; })}\n </div> : null;\n // A photo-only message drops the bubble surface so the photo itself is the message.\n const photoOnly = (media.length > 0 || mediaAlbum !== undefined) && !reply && !replyQuote && (children === null || children === undefined || children === false || children === \"\");\n const quoteBlock = quote ? (replyLink ? <button type=\"button\" className=\"hjm-chat-message__reply hjm-chat-message__quote\" aria-label={replyLink.label} onClick={replyLink.onPress}>{quote}</button> : <div className=\"hjm-chat-message__reply\">{quote}</div>) : null;\n const revealTime = timestampPresentation === \"swipe\" && !!timestamp;\n // Only the pointer that began a drag can finish it; another touch must not reply or cancel it.\n const start = useRef<{x:number;y:number;pointerId:number} | null>(null);\n const [offset, setOffset] = useState(0);\n const finish = () => { start.current = null; setOffset(0); };\n const menu = useRef<MessageReactionsHandle>(null);\n const summary = reactions?.summary;\n const reactionMenu = reactions ? omitReactionSummary(reactions) : undefined;\n const summaryItems = summary ? resolveChatReactionSummary(summary) : [];\n const summaryButton = reactions && summary && summaryItems.length ? (summary.readOnly ? <ReactionSummaryText label={summary.label} items={summaryItems} /> : <ReactionSummaryButton label={summary.label} items={summaryItems} selected={reactions.value} disabled={reactions.disabled ?? false} onPress={() => menu.current?.open()} />) : null;\n return <article tabIndex={replyAction && !replyAction.disabled ? 0 : undefined}\n aria-keyshortcuts={replyAction ? \"Alt+ArrowLeft Alt+ArrowRight\" : undefined} aria-description={replyAction?.label}\n onKeyDown={event => { if (event.target === event.currentTarget && event.altKey && (event.key === \"ArrowLeft\" || event.key === \"ArrowRight\") && replyAction && !replyAction.disabled) { event.preventDefault(); replyAction.onPress(); } }}\n onPointerDown={event => { if (start.current || (!revealTime && (!replyAction || replyAction.disabled)) || event.button !== 0 || (event.target as HTMLElement).closest(\"button,a,input,textarea\")) return; start.current = {x:event.clientX,y:event.clientY,pointerId:event.pointerId}; }}\n onPointerMove={event => { if (!start.current || start.current.pointerId !== event.pointerId) return; const dx=event.clientX-start.current.x,dy=event.clientY-start.current.y; if (Math.abs(dy)>10 && Math.abs(dy)>Math.abs(dx)) {finish();return;} if (revealTime) setOffset((direction === \"outgoing\" ? -1 : 1) * timestampRevealOffset(direction === \"outgoing\" ? -dx : dx,dy)); else if (Math.abs(dx)>Math.abs(dy)*2) setOffset(Math.max(-72,Math.min(72,dx))); }}\n onPointerUp={event => { if (start.current?.pointerId !== event.pointerId) return; if (!revealTime && start.current && replyAction && !replyAction.disabled && isReplySwipe(event.clientX-start.current.x,event.clientY-start.current.y)) replyAction.onPress(); finish(); }} onPointerCancel={event => { if (start.current?.pointerId === event.pointerId) finish(); }} onPointerLeave={event => { if (start.current?.pointerId === event.pointerId) finish(); }}\n style={{ ...layoutStyle, position: \"relative\", overflow: \"hidden\", marginBlockStart: display.spacingBefore,\n // Reserve tip room only where it protrudes (own trailing edge, or leading edge without an avatar column).\n ...(bubbleTail ? (direction === \"outgoing\" ? { paddingInlineEnd: chatMessageRecipe.tailWidth } : avatar ? {} : { paddingInlineStart: chatMessageRecipe.tailWidth }) : {}), touchAction: revealTime || replyAction ? \"pan-y\" : undefined }} aria-label={author}>\n {revealTime ? <time style={{ position: \"absolute\", ...(direction === \"outgoing\" ? { right: 0, justifyContent: \"flex-end\" } : { left: 0 }), top: 0, bottom: 0, width: 80, display: \"flex\", alignItems: \"center\", opacity: offset !== 0 ? 1 : 0, pointerEvents: \"none\" }}><Text variant=\"caption\" tone=\"muted\">{timestamp}</Text></time> : null}\n <div className=\"hjm-chat-message\" style={{ transform: `translateX(${offset}px)`, transition: start.current || theme?.environment.reducedMotion ? \"none\" : \"transform var(--hjm-motion-normal, 200ms) ease-out\", \"--hjm-message-max-width\": screenPatternRecipe.messageMaxWidth, \"--hjm-chat-avatar-size\": `${chatMessageRecipe.avatarSize}px` } as React.CSSProperties} data-direction={direction} data-tail={(bubbleTail && display.showTail) || undefined}>\n {/* Later bubbles of a run keep the avatar column so their edges line up under the first bubble. */}\n {avatar ? <div className=\"hjm-chat-message__avatar\" aria-hidden={display.showAvatar ? undefined : true}>{display.showAvatar ? avatar : null}</div> : null}\n <div className=\"hjm-chat-message__content\">{author && display.showAuthor && direction !== \"outgoing\"?<Text variant=\"caption\" tone=\"muted\">{author}</Text>:null}\n {/* Time and delivery sit beside the bubble's bottom edge, on the side facing the open space. */}\n <div className=\"hjm-chat-message__body\">\n {reactionMenu ? <MessageReactions {...reactionMenu} menuRef={menu} interactiveContent={interactiveContent || mediaAlbum !== undefined} {...(timestamp ? { menuTitle: timestamp } : {})} {...(replyAction && !replyAction.disabled ? {replyAction} : {})}>{quoteBlock}{mediaBlock}{photoOnly ? null : children}</MessageReactions> : <div className=\"hjm-chat-message__bubble\" data-photo-only={photoOnly || undefined}>{quoteBlock}{mediaBlock}{photoOnly ? null : children}</div>}\n {(!revealTime && visibleTime)||deliveryLabel||actions||summaryButton?<div className=\"hjm-chat-message__meta\">{summaryButton}{(!revealTime && visibleTime)||deliveryLabel?<Text variant=\"caption\" tone=\"muted\">{[revealTime ? \"\" : visibleTime, deliveryLabel].filter(Boolean).join(\" · \")}</Text>:null}{actions}</div>:null}\n </div>\n </div>\n </div>\n </article>;\n}\n\n/** Shared structure for embedded compositions. The parent supplies size; this never creates a second scroller. */\nexport type CompositionLayoutProps = Readonly<{\n title?: string;\n /** Compact labels inside sheets retain heading semantics without a large section title. */\n titleSize?: \"default\" | \"compact\";\n /** Document heading level; visual treatment remains the shared composition title. */\n headingLevel?: 1 | 2 | 3 | 4 | 5 | 6;\n description?: string;\n badge?: ReactNode;\n leading?: ReactNode;\n actions?: ReactNode;\n notice?: ReactNode;\n children?: ReactNode;\n footer?: ReactNode;\n /** Passive supporting artwork beside the heading and body; never a header action. */\n aside?: ReactNode;\n /** Secondary footer metadata; wraps rather than squeezing the main footer. */\n footerAside?: ReactNode;\n state?: ScreenContentState;\n stateAction?: ReactNode;\n /**\n * Room the loading/empty/error/restricted replacement keeps in place so it centers without a parent height\n * (`screenPatternRecipe.compositionState`: compact 96 · regular 160 · large 220; `fit` = its own height).\n * Ready content is not affected.\n */\n stateHeight?: CompositionStateHeight;\n /** Brand visual only; the shared state group owns copy, centering and announcement. */\n loadingIndicator?: ReactNode;\n layoutStyle?: HjmCompositionStyleProp;\n}>;\nexport function CompositionLayout({title, titleSize = \"default\", headingLevel = 3, description, badge, leading, actions, notice, children, footer, aside, footerAside, state = {kind: \"ready\"}, stateAction, stateHeight = \"fit\", loadingIndicator, layoutStyle}: CompositionLayoutProps) {\n const resolved = resolveScreenContentState(state);\n const stateMinHeight = resolveCompositionStateMinHeight(stateHeight);\n // The floor sits on a host around the state group: layoutStyle is placement-only and excludes sizes.\n const stateGroup = state.kind === \"ready\" ? null : <Stack gap=\"sm\" align=\"center\" justify=\"center\" layoutStyle={{flex: 1}}>\n {resolved.busy ? (loadingIndicator ? <div role=\"status\" aria-busy=\"true\" aria-label={[state.title, state.description].filter(Boolean).join(\". \")}><div aria-hidden=\"true\">{loadingIndicator}</div></div> : <Spinner label={[state.title, state.description].filter(Boolean).join(\". \")} />) : <div role={state.kind === \"error\" ? \"alert\" : \"status\"} style={{ textAlign: \"center\" }}>{/* Block, centered lines as Native; the live role covers the copy only, not stateAction. */}<Text as=\"p\" variant={resolved.titleVariant}>{state.title}</Text>{state.description ? <Text as=\"p\" tone=\"muted\">{state.description}</Text> : null}</div>}\n {stateAction}\n </Stack>;\n const content = <>\n {title || description || badge || leading || actions ? <Stack axis=\"inline\" gap=\"sm\" align=\"center\" layoutStyle={{flexWrap: \"wrap\"}}>\n {/* Keep the copy’s natural width as its flex basis so actions wrap before squeezing a short title (Spint cell header). */}\n {/* A leading glyph and its copy are one group: when the title is long the copy wraps beside the glyph\n instead of the whole copy dropping under a lone glyph (2026-10-23, same fault as StatisticGroup). */}\n {leading ? <Stack axis=\"inline\" gap=\"sm\" align=\"center\" layoutStyle={{flexGrow: 1, flexShrink: 0, flexBasis: \"auto\", maxWidth: \"100%\"}}>\n {leading}<Stack gap=\"xxs\" layoutStyle={{flexShrink: 1, minWidth: 0}}>\n <Stack axis=\"inline\" gap=\"xs\" align=\"center\" layoutStyle={{flexWrap: \"wrap\"}}>{title ? (titleSize === \"compact\" ? <Text variant=\"body\" role=\"heading\" aria-level={headingLevel} style={{fontWeight: 500}}>{title}</Text> : <Heading level=\"level5\" semanticLevel={headingLevel}>{title}</Heading>) : null}{badge}</Stack>\n {description ? <Text tone=\"muted\">{description}</Text> : null}\n </Stack>\n </Stack> : <Stack gap=\"xxs\" layoutStyle={{flexGrow: 1, flexShrink: 0, flexBasis: \"auto\", maxWidth: \"100%\"}}>\n <Stack axis=\"inline\" gap=\"xs\" align=\"center\" layoutStyle={{flexWrap: \"wrap\"}}>{title ? (titleSize === \"compact\" ? <Text variant=\"body\" role=\"heading\" aria-level={headingLevel} style={{fontWeight: 500}}>{title}</Text> : <Heading level=\"level5\" semanticLevel={headingLevel}>{title}</Heading>) : null}{badge}</Stack>\n {description ? <Text tone=\"muted\">{description}</Text> : null}\n </Stack>}{actions}\n </Stack> : null}\n {notice}\n {state.kind === \"ready\" ? children : stateMinHeight === null ? stateGroup : <div data-hjm-state-height={stateHeight} style={{display: \"flex\", flexDirection: \"column\", flex: 1, minHeight: stateMinHeight}}>{stateGroup}</div>}\n </>;\n // Supporting art spans the heading and body, so a long title cannot push it into a separate row.\n // Diairy postcard cards (2026-10-20) exposed the misuse of header actions for this passive content.\n return <Stack gap=\"md\" {...(layoutStyle === undefined ? {} : {layoutStyle})}>\n {aside ? <Stack axis=\"inline\" gap=\"md\" align=\"start\">\n <Stack gap=\"md\" layoutStyle={{flex: 1, minWidth: 0}}>{content}</Stack>\n <Stack layoutStyle={{flexShrink: 0, maxWidth: \"40%\"}}>{aside}</Stack>\n </Stack> : content}\n {footerAside ? <Stack axis=\"inline\" gap=\"xs\" align=\"center\" justify=\"between\" wrap>\n {footer ? <Stack layoutStyle={{flexGrow: 1, minWidth: 0}}>{footer}</Stack> : null}\n {footerAside}\n </Stack> : footer}\n </Stack>;\n}\n\nexport type NotificationRowProps = Readonly<{\n /** Text and inline emphasis only; interactive content belongs outside the row. */\n preview: ReactNode;\n metadata: string;\n avatar: ReactNode;\n avatarBadge?: ReactNode;\n thumbnail?: ReactNode;\n unread?: boolean;\n /** The section/list supplies the boundary; HJM aligns its divider with the preview column. */\n separator?: boolean;\n /** One optional command around the passive preview; the product retains routing/permission decisions. */\n action?: Readonly<{ label: string; onActivate(): void; disabled?: boolean }>;\n\n}>;\n\n/** Optional shared command host; passive previews remain compatible with existing router/gesture hosts. */\nexport function NotificationRow({ preview, metadata, avatar, avatarBadge, thumbnail, unread = false, separator = false, action }: NotificationRowProps) {\n const r = notificationRecipe;\n if (action && !action.label.trim()) throw new TypeError(\"NotificationRow action requires a localized label\");\n const content = <span aria-hidden=\"true\" data-hjm-notification-row=\"true\" style={{ position: \"relative\", display: \"flex\", alignItems: \"center\", gap: r.gap, padding: `${r.paddingBlock}px ${r.paddingInline}px`, width: \"100%\", minWidth: 0, boxSizing: \"border-box\" }}>\n {separator ? <span data-hjm-notification-separator=\"true\" style={{ position: \"absolute\", insetBlockStart: 0, insetInlineStart: r.separatorInsetStart, insetInlineEnd: 0, borderBlockStart: \"1px solid var(--hjm-color-border)\" }} /> : null}\n <span style={{ position: \"relative\", width: r.avatarSize, height: r.avatarSize, flexShrink: 0 }}>\n <span style={{ display: \"flex\", width: \"100%\", height: \"100%\", overflow: \"hidden\", borderRadius: \"50%\" }}>{avatar}</span>\n {avatarBadge ? <span style={{ position: \"absolute\", bottom: 0, right: 0, display: \"flex\", alignItems: \"center\", justifyContent: \"center\", width: r.avatarBadgeSize, height: r.avatarBadgeSize, borderRadius: \"50%\", background: \"var(--hjm-color-surface)\", border: \"2px solid var(--hjm-color-surface)\", boxSizing: \"border-box\" }}>{avatarBadge}</span> : null}\n </span>\n <span data-hjm-notification-copy=\"true\" style={{ flex: 1, minWidth: 0, display: \"flex\", flexDirection: \"column\", gap: r.contentGap }}>\n <Text style={{ display: \"-webkit-box\", WebkitBoxOrient: \"vertical\", WebkitLineClamp: r.previewLines, overflow: \"hidden\" }}>{preview}</Text>\n <span style={{ display: \"flex\", alignItems: \"center\", gap: r.contentGap }}><Text variant=\"caption\" tone=\"muted\">{metadata}</Text>{unread ? <span data-hjm-unread-dot=\"true\" style={{ width: r.unreadSize, height: r.unreadSize, borderRadius: \"50%\", flexShrink: 0, background: \"var(--hjm-color-content-brand)\" }} /> : null}</span>\n </span>\n {thumbnail ? <span style={{ width: r.thumbnailSize, height: r.thumbnailSize, flexShrink: 0, overflow: \"hidden\", borderRadius: \"var(--hjm-radius-sm)\" }}>{thumbnail}</span> : null}\n </span>;\n return action ? <button type=\"button\" className=\"hjm-notification-row-action\" aria-label={action.label}\n disabled={action.disabled} onClick={() => { if (!action.disabled) action.onActivate(); }}\n style={{ \"--hjm-notification-disabled-opacity\": r.interaction.disabledOpacity, \"--hjm-notification-pressed-opacity\": r.interaction.pressedOpacity } as React.CSSProperties}>\n {content}\n </button> : content;\n}\n\nexport type IconTileProps = Readonly<{\n /**\n * Icon artwork. A function receives the rendered edge (`IconTileArtwork`) so fixed-size artwork such as an image\n * sizes itself to a `size=\"fill\"` icon without the product re-computing the cell clamp.\n */\n icon: ReactNode | ((artwork: IconTileArtwork) => ReactNode); label: string; overlay?: ReactNode; labelLines?: 1 | 2; ghost?: boolean;\n /** `none`: the icon is complete product artwork, so no frame fill or hairline is drawn. */\n frame?: IconTileFrame;\n /** Frame (and ghost outline) corner shape from the product's icon theme. */\n shape?: IconTileShape;\n /** `fill`: the icon spans the grid cell between iconTileRecipe.fillMinSize and fillMaxSize. */\n size?: IconTileSize;\n /** Simple activation is HJM-owned; omit for product drag/long-press gesture hosts. */\n onActivate?: () => void;\n activationLabel?: string;\n disabled?: boolean;\n /** Pressable but dimmed (iconTileRecipe.locked) so `onActivate` can explain why. Requires `onActivate` and `lockedLabel`. */\n locked?: boolean;\n /** Localized lock reason appended to the accessible name (\"Weather, sign-in required\"). */\n lockedLabel?: string;\n /** Corner mark (lock, clock, count) on the icon frame, overhanging by iconTileRecipe.accessory.offset. */\n accessory?: ReactNode;\n accessoryPlacement?: CornerAccessoryPlacement;\n layoutStyle?: HjmCompositionStyleProp;\n}>;\n/** Shared launcher/profile tile; simple activation and gesture-only presentation reuse identical content. */\nexport function IconTile({icon, label, overlay, labelLines = 1, ghost = false, frame = iconTileRecipe.defaults.frame, shape = iconTileRecipe.defaults.shape, size = iconTileRecipe.defaults.size, onActivate, activationLabel, disabled = false, locked = false, lockedLabel, accessory, accessoryPlacement = iconTileRecipe.defaults.accessoryPlacement, layoutStyle}: IconTileProps) {\n const r = iconTileRecipe;\n if (onActivate && !(activationLabel ?? label).trim()) throw new TypeError(\"Interactive IconTile requires a label\");\n if (locked && (!onActivate || !lockedLabel?.trim())) throw new TypeError(\"A locked IconTile needs onActivate and a lockedLabel\");\n if (!(cornerAccessoryPlacements as readonly string[]).includes(accessoryPlacement)) throw new TypeError(`Unsupported IconTile accessoryPlacement: ${accessoryPlacement}`);\n const dim = ghost ? r.ghostOpacity : locked ? r.locked.opacity : 1;\n const framed = frame === \"surface\";\n // Percent radius follows the rendered size, so a filling icon keeps its shape at every cell width.\n const dimensions = size === \"fill\" ? {width: \"100%\", minWidth: r.fillMinSize, maxWidth: r.fillMaxSize, aspectRatio: \"1\"} : {width: r.iconSize, height: r.iconSize};\n // A render-function icon needs the filling edge as a number. It is read before paint and on every resize; the\n // computed width ignores transforms (a host's press scale) and keeps fractional cell widths.\n const frameRef = useRef<HTMLSpanElement>(null);\n const measureEdge = size === \"fill\" && typeof icon === \"function\";\n const [fillEdge, setFillEdge] = useState<number>(r.fillMinSize);\n useLayoutEffect(() => {\n const element = frameRef.current;\n if (!measureEdge || !element) return;\n setFillEdge(Number.parseFloat(getComputedStyle(element).width) || r.fillMinSize);\n if (typeof ResizeObserver === \"undefined\") return;\n const observer = new ResizeObserver(([entry]) => { const width = entry?.borderBoxSize?.[0]?.inlineSize; if (width) setFillEdge(width); });\n observer.observe(element);\n return () => observer.disconnect();\n }, [measureEdge, r.fillMinSize]);\n const edge = size === \"fill\" ? fillEdge : r.iconSize;\n const content = <span data-hjm-icon-tile=\"true\" data-frame={frame} data-shape={shape} data-size={size} data-locked={locked || undefined} style={{position: \"relative\", display: \"flex\", flexDirection: \"column\", alignItems: \"center\", gap: r.gap, minWidth: 0, width: \"100%\", overflow: \"visible\", ...(onActivate ? {} : layoutStyle)}}>\n <span ref={frameRef} style={{position: \"relative\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\", ...dimensions, boxSizing: \"border-box\", flexShrink: 0, borderRadius: `${Math.round(r.shapes[shape] * 100)}%`, background: framed ? \"var(--hjm-color-surface-alt)\" : undefined, color: \"var(--hjm-color-text)\", boxShadow: ghost || !framed ? undefined : \"0 0 0 1px var(--hjm-color-border)\", outline: ghost ? \"1px dashed var(--hjm-color-text-muted)\" : undefined, opacity: dim, fontSize: 32}}>{typeof icon === \"function\" ? icon({edge}) : icon}{overlay}</span>\n {/* The accessory sits in a box laid over the frame (same size rules, centered) so dimming the frame never dims it. */}\n {accessory ? <span aria-hidden={onActivate ? true : undefined} style={{position: \"absolute\", insetBlockStart: 0, left: \"50%\", transform: \"translateX(-50%)\", ...dimensions, boxSizing: \"border-box\", pointerEvents: \"none\"}}>\n <span data-hjm-icon-tile-accessory={accessoryPlacement} style={{position: \"absolute\", display: \"inline-flex\", insetInlineEnd: -r.accessory.offset, ...(accessoryPlacement === \"top-end\" ? {insetBlockStart: -r.accessory.offset} : {insetBlockEnd: -r.accessory.offset})}}>{accessory}</span>\n </span> : null}\n <Text variant=\"caption\" style={{opacity: locked ? r.locked.opacity : undefined, display: \"-webkit-box\", WebkitBoxOrient: \"vertical\", WebkitLineClamp: labelLines, width: \"100%\", maxWidth: labelLines === 2 ? r.multilineLabelMaxWidth : r.labelMaxWidth, minHeight: labelLines === 2 ? r.multilineLabelMinHeight : undefined, overflow: \"hidden\", textOverflow: \"ellipsis\", whiteSpace: \"normal\", overflowWrap: \"anywhere\", textAlign: \"center\", fontWeight: 500}}>{label}</Text>\n </span>;\n if (!onActivate) return content;\n return <button type=\"button\" className=\"hjm-icon-tile-action\" aria-label={locked ? `${activationLabel ?? label}, ${lockedLabel}` : activationLabel ?? label} disabled={disabled}\n style={{ \"--hjm-icon-tile-pressed-opacity\": r.activation.pressedOpacity, \"--hjm-icon-tile-disabled-opacity\": r.activation.disabledOpacity,\n minWidth: r.activation.minimumTarget, minHeight: r.activation.minimumTarget, ...layoutStyle } as React.CSSProperties}\n onClick={() => { if (!disabled) onActivate(); }}>{content}</button>;\n}\n\nexport type TypingIndicatorProps = Readonly<{\n /** Localized status read by assistive tech (\"Seoyeon is typing\"); the visible row shows only the dots. */\n label: string;\n /** Typer's photo in a group room, sized like ChatMessage avatars (`chatMessageRecipe.avatarSize`). */\n avatar?: ReactNode;\n layoutStyle?: HjmCompositionStyleProp;\n}>;\n/**\n * Incoming \"is typing\" row for a ChatScreen timeline (2026-10-18 BurnTok DM drew its own). The host shows it only while\n * presence says someone is typing and places it after the last message; HJM owns the bubble, dots and announcement.\n */\nexport function TypingIndicator({ label, avatar, layoutStyle }: TypingIndicatorProps) {\n if (!label.trim()) throw new TypeError(\"TypingIndicator requires a localized label\");\n const theme = useOptionalHjmTheme();\n const r = typingIndicatorRecipe, m = chatMessageRecipe;\n // A polite status: appearing is announced once without interrupting, and the dots stay hidden from assistive tech.\n return <div role=\"status\" className=\"hjm-typing-indicator\" data-reduced-motion={theme?.environment.reducedMotion || undefined}\n style={{ display: \"flex\", alignItems: \"flex-start\", gap: m.avatarGap, marginBlockStart: m.groupGap, paddingInlineStart: avatar ? 0 : m.tailWidth, ...layoutStyle, \"--hjm-typing-dot\": `${r.dotSize}px`, \"--hjm-typing-cycle\": `${r.cycleMs}ms`, \"--hjm-typing-rest\": r.restOpacity } as React.CSSProperties}>\n {avatar ? <span aria-hidden=\"true\" style={{ display: \"flex\", justifyContent: \"center\", flex: `0 0 ${m.avatarSize}px`, inlineSize: m.avatarSize }}>{avatar}</span> : null}\n <span aria-hidden=\"true\" className=\"hjm-typing-indicator__bubble\" style={{ display: \"inline-flex\", alignItems: \"center\", gap: r.dotGap, boxSizing: \"border-box\", minBlockSize: `calc(var(--hjm-type-body-line-height) + ${m.bubblePaddingBlock * 2}px)`, paddingBlock: m.bubblePaddingBlock, paddingInline: m.bubblePaddingInline, borderRadius: m.bubbleRadius, background: \"var(--hjm-color-surface-alt)\" }}>\n {[0, 1, 2].map(index => <span key={index} className=\"hjm-typing-indicator__dot\" style={{ animationDelay: `${index * r.staggerMs}ms` }} />)}\n </span>\n <VisuallyHidden>{label}</VisuallyHidden>\n </div>;\n}\n\nexport type ChatDateSeparatorProps = Readonly<{\n /** Product-formatted date or time (\"Today\", \"Oct 18\", \"3:04 PM\"). */\n label: string;\n /** Machine-readable value for the Web `<time>` element; Native ignores it. */\n dateTime?: string;\n layoutStyle?: HjmCompositionStyleProp;\n}>;\n/**\n * Centered date (or time) row between ChatScreen timeline groups (2026-10-18 Utilverse chat drew a caption). Grouping\n * rules stay with the product; the next message keeps its own group gap, so this row adds only the space before it.\n */\nexport function ChatDateSeparator({ label, dateTime, layoutStyle }: ChatDateSeparatorProps) {\n if (!label.trim()) throw new TypeError(\"ChatDateSeparator requires a localized label\");\n const r = chatDateSeparatorRecipe;\n return <div className=\"hjm-chat-date-separator\" style={{ display: \"flex\", justifyContent: \"center\", textAlign: \"center\", paddingBlockStart: r.paddingTop, paddingBlockEnd: r.paddingBottom, ...layoutStyle }}>\n <Text variant={r.textVariant} tone={r.tone}>{dateTime ? <time dateTime={dateTime}>{label}</time> : label}</Text>\n </div>;\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hjmds/react",
3
- "version": "1.45.0",
3
+ "version": "1.46.0",
4
4
  "description": "Accessible React 19 renderers for HJM design contracts.",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -623,7 +623,7 @@
623
623
  "THIRD_PARTY_NOTICES.md"
624
624
  ],
625
625
  "peerDependencies": {
626
- "@hjmds/design-contracts": ">=1.45.0 <1.46.0",
626
+ "@hjmds/design-contracts": ">=1.46.0 <1.47.0",
627
627
  "react": ">=19.0.0",
628
628
  "react-dom": ">=19.0.0",
629
629
  "@number-flow/react": "0.6.2",
@@ -661,7 +661,7 @@
661
661
  "@blobatar/react": "2.7.0",
662
662
  "lucide-react": "1.59.0",
663
663
  "vite": "8.3.4",
664
- "@hjmds/design-contracts": "1.45.0"
664
+ "@hjmds/design-contracts": "1.46.0"
665
665
  },
666
666
  "peerDependenciesMeta": {
667
667
  "@number-flow/react": {