@hjmds/design-contracts 1.41.2 → 1.42.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/dist/affix.d.ts +18 -0
  2. package/dist/affix.d.ts.map +1 -1
  3. package/dist/affix.js +13 -1
  4. package/dist/affix.js.map +1 -1
  5. package/dist/alert-dialog.d.ts +32 -0
  6. package/dist/alert-dialog.d.ts.map +1 -1
  7. package/dist/alert-dialog.js +52 -0
  8. package/dist/alert-dialog.js.map +1 -1
  9. package/dist/behaviors.d.ts +6 -5
  10. package/dist/behaviors.d.ts.map +1 -1
  11. package/dist/behaviors.js +1 -1
  12. package/dist/behaviors.js.map +1 -1
  13. package/dist/catalog.d.ts +165 -15
  14. package/dist/catalog.d.ts.map +1 -1
  15. package/dist/catalog.js +4 -4
  16. package/dist/catalog.js.map +1 -1
  17. package/dist/character-count.d.ts +103 -0
  18. package/dist/character-count.d.ts.map +1 -0
  19. package/dist/character-count.js +68 -0
  20. package/dist/character-count.js.map +1 -0
  21. package/dist/chart.d.ts +30 -0
  22. package/dist/chart.d.ts.map +1 -1
  23. package/dist/chart.js +18 -0
  24. package/dist/chart.js.map +1 -1
  25. package/dist/collection-rail.d.ts +13 -1
  26. package/dist/collection-rail.d.ts.map +1 -1
  27. package/dist/collection-rail.js +9 -2
  28. package/dist/collection-rail.js.map +1 -1
  29. package/dist/component-recipes.d.ts +172 -2
  30. package/dist/component-recipes.d.ts.map +1 -1
  31. package/dist/component-recipes.js +122 -8
  32. package/dist/component-recipes.js.map +1 -1
  33. package/dist/design-system-provider.d.ts +13 -2
  34. package/dist/design-system-provider.d.ts.map +1 -1
  35. package/dist/design-system-provider.js +19 -3
  36. package/dist/design-system-provider.js.map +1 -1
  37. package/dist/foundations.d.ts +15 -0
  38. package/dist/foundations.d.ts.map +1 -1
  39. package/dist/foundations.js +7 -0
  40. package/dist/foundations.js.map +1 -1
  41. package/dist/icon-button-recipe.d.ts +33 -0
  42. package/dist/icon-button-recipe.d.ts.map +1 -1
  43. package/dist/icon-button-recipe.js +36 -1
  44. package/dist/icon-button-recipe.js.map +1 -1
  45. package/dist/image.d.ts +13 -0
  46. package/dist/image.d.ts.map +1 -1
  47. package/dist/image.js +17 -0
  48. package/dist/image.js.map +1 -1
  49. package/dist/index.d.ts +2 -2
  50. package/dist/index.d.ts.map +1 -1
  51. package/dist/index.js +2 -2
  52. package/dist/index.js.map +1 -1
  53. package/dist/recipes.d.ts +1 -1
  54. package/dist/recipes.d.ts.map +1 -1
  55. package/dist/recipes.js +1 -1
  56. package/dist/recipes.js.map +1 -1
  57. package/dist/screen-patterns.d.ts +92 -0
  58. package/dist/screen-patterns.d.ts.map +1 -1
  59. package/dist/screen-patterns.js +79 -2
  60. package/dist/screen-patterns.js.map +1 -1
  61. package/dist/selection-helpers.d.ts +6 -0
  62. package/dist/selection-helpers.d.ts.map +1 -1
  63. package/dist/selection-helpers.js +12 -0
  64. package/dist/selection-helpers.js.map +1 -1
  65. package/dist/sidebar.d.ts +17 -2
  66. package/dist/sidebar.d.ts.map +1 -1
  67. package/dist/sidebar.js +8 -2
  68. package/dist/sidebar.js.map +1 -1
  69. package/dist/steps.d.ts +19 -19
  70. package/dist/steps.d.ts.map +1 -1
  71. package/dist/steps.js +21 -9
  72. package/dist/steps.js.map +1 -1
  73. package/dist/timeline.d.ts +41 -0
  74. package/dist/timeline.d.ts.map +1 -1
  75. package/dist/timeline.js +47 -1
  76. package/dist/timeline.js.map +1 -1
  77. package/dist/top.d.ts +21 -2
  78. package/dist/top.d.ts.map +1 -1
  79. package/dist/top.js +17 -1
  80. package/dist/top.js.map +1 -1
  81. package/dist/version.d.ts +1 -1
  82. package/dist/version.js +1 -1
  83. package/dist/version.js.map +1 -1
  84. package/docs/affix.md +7 -0
  85. package/docs/avatar-fallback.md +19 -0
  86. package/docs/brand-boundary.md +24 -2
  87. package/docs/chart.md +7 -0
  88. package/docs/collection-rail.md +4 -1
  89. package/docs/generated/component-maturity.md +1 -1
  90. package/docs/generated/renderer-evidence.json +10 -6
  91. package/docs/generated/renderer-evidence.md +1 -1
  92. package/docs/generated/showcase-manifest.json +12 -5
  93. package/docs/image.md +5 -0
  94. package/docs/list-row.md +8 -0
  95. package/docs/optional-adapters.md +3 -0
  96. package/docs/overlay-stack.md +27 -0
  97. package/docs/screen-patterns.md +39 -2
  98. package/docs/sidebar.md +15 -0
  99. package/docs/steps.md +23 -19
  100. package/docs/theme-palette.md +3 -3
  101. package/docs/theming.md +1 -0
  102. package/docs/timeline.md +18 -1
  103. package/docs/top.md +7 -0
  104. package/docs/usage/README.md +2 -2
  105. package/docs/usage/components/affix.md +18 -4
  106. package/docs/usage/components/alert-dialog.md +28 -0
  107. package/docs/usage/components/avatar.md +30 -9
  108. package/docs/usage/components/badge.md +20 -5
  109. package/docs/usage/components/chart.md +19 -1
  110. package/docs/usage/components/checkbox-group.md +24 -1
  111. package/docs/usage/components/choice-row.md +19 -4
  112. package/docs/usage/components/composition-layout.md +6 -2
  113. package/docs/usage/components/counter-badge.md +2 -2
  114. package/docs/usage/components/design-system-provider.md +2 -1
  115. package/docs/usage/components/divider.md +12 -1
  116. package/docs/usage/components/field.md +51 -0
  117. package/docs/usage/components/icon-button.md +48 -4
  118. package/docs/usage/components/icon-tile.md +13 -2
  119. package/docs/usage/components/image.md +25 -0
  120. package/docs/usage/components/list-row.md +8 -4
  121. package/docs/usage/components/list.md +1 -1
  122. package/docs/usage/components/notification-item.md +5 -1
  123. package/docs/usage/components/permission-screen.md +25 -4
  124. package/docs/usage/components/screen-layout.md +27 -1
  125. package/docs/usage/components/segmented-control.md +16 -3
  126. package/docs/usage/components/select.md +1 -0
  127. package/docs/usage/components/settings-screen.md +5 -4
  128. package/docs/usage/components/sheet.md +2 -1
  129. package/docs/usage/components/sidebar.md +34 -6
  130. package/docs/usage/components/steps.md +29 -8
  131. package/docs/usage/components/surface.md +2 -1
  132. package/docs/usage/components/text-area.md +2 -1
  133. package/docs/usage/components/timeline.md +25 -4
  134. package/docs/usage/components/top.md +15 -2
  135. package/docs/usage/screens/common-settings.md +3 -2
  136. package/docs/usage/screens/flow-permission.md +3 -3
  137. package/docs/usage/tokens/elevation-opacity.md +14 -2
  138. package/package.json +7 -1
package/dist/affix.d.ts CHANGED
@@ -1,8 +1,26 @@
1
+ import type { layer } from "./foundations.js";
2
+ /**
3
+ * Stacking step of the sticky box (2026-10-23). Affix set no z-index, so later positioned content in the scroll area
4
+ * painted over a pinned tab bar; the portfolio site kept its own `.tabs-bar { z-index: 2 }` instead of adopting Affix.
5
+ * `sticky` (default) is the shared `layer.sticky` step BottomCTA and FAB use; `base` keeps the box in normal order for
6
+ * an Affix that lives inside a surface which already owns its stacking (a dialog or side panel body).
7
+ */
8
+ export type AffixLayer = Extract<keyof typeof layer, "base" | "sticky">;
9
+ /**
10
+ * Fill behind the box. `canvas` (default): the screen background, so scrolled content does not show through a pinned
11
+ * bar. `none`: transparent, for children that bring their own surface (a Card, a filled toolbar).
12
+ */
13
+ export type AffixFill = "canvas" | "none";
1
14
  export declare const affixRecipe: {
2
15
  readonly edge: "top";
3
16
  readonly offset: 0;
4
17
  readonly position: "sticky";
5
18
  readonly oversize: "flow";
19
+ readonly defaults: {
20
+ readonly layer: "sticky";
21
+ readonly fill: "canvas";
22
+ };
6
23
  };
24
+ export declare function validateAffixPresentation(layerStep: unknown, fill: unknown): void;
7
25
  export declare function validateAffixOffset(offset: number): number;
8
26
  //# sourceMappingURL=affix.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"affix.d.ts","sourceRoot":"","sources":["../src/affix.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW;;;;;CAA4E,CAAC;AACrG,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAG1D"}
1
+ {"version":3,"file":"affix.d.ts","sourceRoot":"","sources":["../src/affix.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,OAAO,KAAK,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC;AACxE;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE1C,eAAO,MAAM,WAAW;;;;;;;;;CAYvB,CAAC;AAEF,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CAGjF;AACD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAG1D"}
package/dist/affix.js CHANGED
@@ -1,4 +1,16 @@
1
- export const affixRecipe = { edge: "top", offset: 0, position: "sticky", oversize: "flow" };
1
+ export const affixRecipe = {
2
+ edge: "top",
3
+ offset: 0,
4
+ position: "sticky",
5
+ oversize: "flow",
6
+ defaults: { layer: "sticky", fill: "canvas" },
7
+ };
8
+ export function validateAffixPresentation(layerStep, fill) {
9
+ if (layerStep !== "base" && layerStep !== "sticky")
10
+ throw new TypeError(`Unsupported Affix layer: ${String(layerStep)}`);
11
+ if (fill !== "canvas" && fill !== "none")
12
+ throw new TypeError(`Unsupported Affix fill: ${String(fill)}`);
13
+ }
2
14
  export function validateAffixOffset(offset) {
3
15
  if (!Number.isFinite(offset) || offset < 0)
4
16
  throw new TypeError("Affix offset must be finite and nonnegative");
package/dist/affix.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"affix.js","sourceRoot":"","sources":["../src/affix.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAW,CAAC;AACrG,MAAM,UAAU,mBAAmB,CAAC,MAAc;IAChD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,SAAS,CAAC,6CAA6C,CAAC,CAAC;IAC/G,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["export const affixRecipe = { edge: \"top\", offset: 0, position: \"sticky\", oversize: \"flow\" } as const;\nexport function validateAffixOffset(offset: number): number {\n if (!Number.isFinite(offset) || offset < 0) throw new TypeError(\"Affix offset must be finite and nonnegative\");\n return offset;\n}\n"]}
1
+ {"version":3,"file":"affix.js","sourceRoot":"","sources":["../src/affix.ts"],"names":[],"mappings":"AAeA,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,IAAI,EAAE,KAAK;IACX,MAAM,EAAE,CAAC;IACT,QAAQ,EAAE,QAAQ;IAClB,QAAQ,EAAE,MAAM;IAChB,QAAQ,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;CAO9C,CAAC;AAEF,MAAM,UAAU,yBAAyB,CAAC,SAAkB,EAAE,IAAa;IACzE,IAAI,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,QAAQ;QAAE,MAAM,IAAI,SAAS,CAAC,4BAA4B,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACzH,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,MAAM;QAAE,MAAM,IAAI,SAAS,CAAC,2BAA2B,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC3G,CAAC;AACD,MAAM,UAAU,mBAAmB,CAAC,MAAc;IAChD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,SAAS,CAAC,6CAA6C,CAAC,CAAC;IAC/G,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["import type { layer } from \"./foundations.js\";\n\n/**\n * Stacking step of the sticky box (2026-10-23). Affix set no z-index, so later positioned content in the scroll area\n * painted over a pinned tab bar; the portfolio site kept its own `.tabs-bar { z-index: 2 }` instead of adopting Affix.\n * `sticky` (default) is the shared `layer.sticky` step BottomCTA and FAB use; `base` keeps the box in normal order for\n * an Affix that lives inside a surface which already owns its stacking (a dialog or side panel body).\n */\nexport type AffixLayer = Extract<keyof typeof layer, \"base\" | \"sticky\">;\n/**\n * Fill behind the box. `canvas` (default): the screen background, so scrolled content does not show through a pinned\n * bar. `none`: transparent, for children that bring their own surface (a Card, a filled toolbar).\n */\nexport type AffixFill = \"canvas\" | \"none\";\n\nexport const affixRecipe = {\n edge: \"top\",\n offset: 0,\n position: \"sticky\",\n oversize: \"flow\",\n defaults: { layer: \"sticky\", fill: \"canvas\" },\n} as const satisfies {\n edge: \"top\";\n offset: number;\n position: \"sticky\";\n oversize: \"flow\";\n defaults: { layer: AffixLayer; fill: AffixFill };\n};\n\nexport function validateAffixPresentation(layerStep: unknown, fill: unknown): void {\n if (layerStep !== \"base\" && layerStep !== \"sticky\") throw new TypeError(`Unsupported Affix layer: ${String(layerStep)}`);\n if (fill !== \"canvas\" && fill !== \"none\") throw new TypeError(`Unsupported Affix fill: ${String(fill)}`);\n}\nexport function validateAffixOffset(offset: number): number {\n if (!Number.isFinite(offset) || offset < 0) throw new TypeError(\"Affix offset must be finite and nonnegative\");\n return offset;\n}\n"]}
@@ -98,5 +98,37 @@ export type AlertDialogSession = Readonly<{
98
98
  * and settling only after the renderer reports that exit motion completed.
99
99
  */
100
100
  export declare function createAlertDialogSession(request: AlertDialogRequest): AlertDialogSession;
101
+ /**
102
+ * A FIFO of AlertDialog requests where each `enqueue` returns the dialog's result. 2026-10-23: BurnTok web and app
103
+ * AppDialog (321 and 293 lines) each rebuilt this around AlertDialog: a result Promise, one dialog at a time in
104
+ * arrival order, route-scoped cancellation and focus return. The session above still owns confirm/busy/error per
105
+ * dialog; the queue only orders requests and settles each promise exactly once.
106
+ *
107
+ * `scope` is the owner (usually the route) the call was made from. `retainScope(current)` cancels entries from any
108
+ * other scope with `interrupted`, so a departed screen's question is never answered on the next one, and a stale
109
+ * callback that enqueues after its screen left is cancelled the same way. Renderers show only the head.
110
+ */
111
+ export type AlertDialogQueueEntry<Options> = Readonly<{
112
+ id: number;
113
+ request: AlertDialogRequest;
114
+ options: Options;
115
+ scope: string | undefined;
116
+ }>;
117
+ export type AlertDialogQueue<Options> = Readonly<{
118
+ enqueue(request: AlertDialogRequest, options: Options, scope: string | undefined): Promise<AlertDialogResult>;
119
+ /** Entries in arrival order; the first is the dialog on screen. */
120
+ getSnapshot(): readonly AlertDialogQueueEntry<Options>[];
121
+ subscribe(listener: () => void): () => void;
122
+ /** Settles the head entry with its dialog's result and shows the next. Returns false for any other id. */
123
+ settle(id: number, result: AlertDialogResult): boolean;
124
+ retainScope(scope: string | undefined): void;
125
+ /**
126
+ * Whether a renderer is mounted to show the queue (default true). `false` cancels every entry with `interrupted`
127
+ * and settles later requests `interrupted` at once, so nothing waits on a dialog no one can answer. Reversible
128
+ * because React StrictMode replays an unmount and mount on the same provider.
129
+ */
130
+ setActive(active: boolean): void;
131
+ }>;
132
+ export declare function createAlertDialogQueue<Options>(): AlertDialogQueue<Options>;
101
133
  export {};
102
134
  //# sourceMappingURL=alert-dialog.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"alert-dialog.d.ts","sourceRoot":"","sources":["../src/alert-dialog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,SAAS,CAAC;AAClD,MAAM,MAAM,uBAAuB,GAAG,QAAQ,GAAG,SAAS,CAAC;AAC3D,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAC9D,MAAM,MAAM,wBAAwB,GAAG,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAClE,MAAM,MAAM,uBAAuB,GAC/B,eAAe,GACf,QAAQ,GACR,MAAM,GACN,cAAc,GACd,aAAa,CAAC;AAClB,MAAM,MAAM,wBAAwB,GAChC,OAAO,CAAC,uBAAuB,EAAE,aAAa,CAAC,GAC/C,SAAS,CAAC;AACd,MAAM,MAAM,2BAA2B,GAAG,SAAS,GAAG,SAAS,GAAG,uBAAuB,CAAC;AAE1F,MAAM,MAAM,iBAAiB,GACzB,QAAQ,CAAC;IAAE,OAAO,EAAE,WAAW,CAAA;CAAE,CAAC,GAClC,QAAQ,CAAC;IAAE,OAAO,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,uBAAuB,CAAA;CAAE,CAAC,CAAC;AAExE,KAAK,sBAAsB,GACvB,QAAQ,CAAC;IACP,SAAS,EAAE,wBAAwB,CAAC;IACpC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC;CAClD,CAAC,GACF,QAAQ,CAAC;IACP,SAAS,CAAC,EAAE,KAAK,CAAC;IAClB,oBAAoB,CAAC,EAAE,KAAK,CAAC;IAC7B,mBAAmB,CAAC,EAAE,KAAK,CAAC;CAC7B,CAAC,CAAC;AAEP,KAAK,eAAe,GAAG,QAAQ,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAC1B,CAAC,eAAe,GACd,QAAQ,CAAC;IACP,IAAI,EAAE,OAAO,CAAC;IAGd,IAAI,CAAC,EAAE,OAAO,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;IAC1C,WAAW,CAAC,EAAE,KAAK,CAAC;IACpB,SAAS,CAAC,EAAE,KAAK,CAAC;IAClB,oBAAoB,CAAC,EAAE,KAAK,CAAC;IAC7B,mBAAmB,CAAC,EAAE,KAAK,CAAC;CAC7B,CAAC,CAAC,GACL,CAAC,eAAe,GACd,QAAQ,CAAC;IACP,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC,GACF,sBAAsB,CAAC,CAAC;AAE9B,MAAM,MAAM,oBAAoB,GAC5B,QAAQ,CAAC;IACP,IAAI,EAAE,OAAO,CAAC;IACd,WAAW,CAAC,EAAE,KAAK,CAAC;IACpB,YAAY,CACV,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,QAAQ,CAAC;QAAE,MAAM,EAAE,2BAA2B,CAAA;KAAE,CAAC,GACxD,IAAI,CAAC;CACT,CAAC,GACF,QAAQ,CAAC;IACP,IAAI,CAAC,EAAE,KAAK,CAAC;IACb,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,CACb,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,QAAQ,CAAC;QAAE,MAAM,EAAE,2BAA2B,CAAA;KAAE,CAAC,KACtD,IAAI,CAAC;CACX,CAAC,CAAC;AAEP,eAAO,MAAM,2BAA2B;;;;;;;;CAUtC,CAAC;AAQH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI,CAY5E;AAED,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,eAAe,GACpB,uBAAuB,CAEzB;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,wBAAwB,EAChC,IAAI,EAAE,OAAO,GACZ,OAAO,CAIT;AAED,MAAM,MAAM,gBAAgB,GACxB,QAAQ,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,GAC5B,QAAQ,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,GAC5B,QAAQ,CAAC;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GAC9C,QAAQ,CAAC;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,iBAAiB,CAAA;CAAE,CAAC,GAC1D,QAAQ,CAAC;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,iBAAiB,CAAA;CAAE,CAAC,CAAC;AAE9D,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC;IACxC,OAAO,EAAE,kBAAkB,CAAC;IAC5B,MAAM,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACnC,WAAW,IAAI,gBAAgB,CAAC;IAChC,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;IAC5C,+EAA+E;IAC/E,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,uBAAuB,EAAE,aAAa,CAAC,GAAG,OAAO,CAAC;IACzE,qBAAqB,IAAI,KAAK,CAAC;IAC/B,YAAY,IAAI,OAAO,CAAC;IACxB,SAAS,IAAI,OAAO,CAAC;CACtB,CAAC,CAAC;AAeH;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,kBAAkB,GAC1B,kBAAkB,CAgFpB"}
1
+ {"version":3,"file":"alert-dialog.d.ts","sourceRoot":"","sources":["../src/alert-dialog.ts"],"names":[],"mappings":"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"}
@@ -133,4 +133,56 @@ export function createAlertDialogSession(request) {
133
133
  };
134
134
  return session;
135
135
  }
136
+ const interruptedResult = { outcome: "cancelled", reason: "interrupted" };
137
+ export function createAlertDialogQueue() {
138
+ let entries = [];
139
+ let snapshot = [];
140
+ let nextId = 1;
141
+ let active = true;
142
+ const listeners = new Set();
143
+ // Resolve before notifying: the caller's `await` continuation is queued ahead of the renderer's re-render, so a
144
+ // trigger it re-enables is focusable when the closing dialog returns focus.
145
+ const commit = (next, settled) => {
146
+ for (const [entry, result] of settled)
147
+ entry.resolve(result);
148
+ entries = next;
149
+ snapshot = next.map(({ id, request, options, scope }) => ({ id, request, options, scope }));
150
+ for (const listener of listeners)
151
+ listener();
152
+ };
153
+ return {
154
+ enqueue(request, options, scope) {
155
+ validateAlertDialogRequest(request);
156
+ if (!active)
157
+ return Promise.resolve(interruptedResult);
158
+ return new Promise((resolve) => {
159
+ commit([...entries, { id: nextId++, request, options, scope, resolve }], []);
160
+ });
161
+ },
162
+ getSnapshot: () => snapshot,
163
+ subscribe(listener) {
164
+ listeners.add(listener);
165
+ return () => listeners.delete(listener);
166
+ },
167
+ settle(id, result) {
168
+ const head = entries[0];
169
+ if (head === undefined || head.id !== id)
170
+ return false;
171
+ commit(entries.slice(1), [[head, result]]);
172
+ return true;
173
+ },
174
+ retainScope(scope) {
175
+ const stale = entries.filter((entry) => entry.scope !== scope);
176
+ if (stale.length === 0)
177
+ return;
178
+ commit(entries.filter((entry) => entry.scope === scope), stale.map((entry) => [entry, interruptedResult]));
179
+ },
180
+ setActive(next) {
181
+ active = next;
182
+ if (next || entries.length === 0)
183
+ return;
184
+ commit([], entries.map((entry) => [entry, interruptedResult]));
185
+ },
186
+ };
187
+ }
136
188
  //# sourceMappingURL=alert-dialog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"alert-dialog.js","sourceRoot":"","sources":["../src/alert-dialog.ts"],"names":[],"mappings":"AAiFA,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,YAAY,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE;IACrD,cAAc,EAAE,KAAK;IACrB,mBAAmB,EAAE,WAAW;IAChC,gBAAgB,EAAE,KAAK;CAMvB,CAAC;AAEH,SAAS,UAAU,CAAC,KAAa,EAAE,KAAa;IAC9C,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,SAAS,CAAC,eAAe,KAAK,oBAAoB,CAAC,CAAC;IAChE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,OAA2B;IACpE,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACnC,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAC/C,UAAU,CAAC,OAAO,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IACjD,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC7B,IAAI,OAAO,CAAC,IAAI,KAAM,QAA4B,EAAE,CAAC;YACnD,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAC;QACvE,CAAC;QACD,OAAO;IACT,CAAC;IACD,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAC/C,IAAI,OAAO,CAAC,SAAS;QAAE,UAAU,CAAC,OAAO,CAAC,oBAAoB,EAAE,sBAAsB,CAAC,CAAC;AAC1F,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,IAAqB;IAErB,OAAO,2BAA2B,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,MAAgC,EAChC,IAAa;IAEb,IAAI,IAAI,IAAI,CAAC,2BAA2B,CAAC,gBAAgB;QAAE,OAAO,KAAK,CAAC;IACxE,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,2BAA2B,CAAC,cAAc,CAAC;IAC5E,OAAO,IAAI,CAAC;AACd,CAAC;AAsBD,SAAS,qBAAqB,CAC5B,OAAyD,EACzD,KAAc;IAEd,IAAI,CAAC,OAAO,CAAC,SAAS;QAAE,OAAO,EAAE,CAAC;IAClC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7D,OAAO,QAAQ,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC,oBAAoB,CAAC;IACtC,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CACtC,OAA2B;IAE3B,0BAA0B,CAAC,OAAO,CAAC,CAAC;IAEpC,IAAI,KAAK,GAAqB,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IACjD,IAAI,YAAkD,CAAC;IACvD,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,MAAM,SAAS,GAAG,IAAI,GAAG,EAAc,CAAC;IACxC,MAAM,MAAM,GAAG,IAAI,OAAO,CAAoB,CAAC,OAAO,EAAE,EAAE;QACxD,YAAY,GAAG,OAAO,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,GAAG,EAAE;QAClB,KAAK,MAAM,QAAQ,IAAI,SAAS;YAAE,QAAQ,EAAE,CAAC;IAC/C,CAAC,CAAC;IACF,MAAM,UAAU,GAAG,CAAC,IAAsB,EAAE,EAAE;QAC5C,KAAK,GAAG,IAAI,CAAC;QACb,MAAM,EAAE,CAAC;IACX,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,CAAC,IAAuB,EAAW,EAAE;QAClD,IAAI,OAAO;YAAE,OAAO,KAAK,CAAC;QAC1B,OAAO,GAAG,IAAI,CAAC;QACf,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,MAAM,OAAO,GAAuB;QAClC,OAAO;QACP,MAAM;QACN,WAAW,EAAE,GAAG,EAAE,CAAC,KAAK;QACxB,SAAS,CAAC,QAAQ;YAChB,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACxB,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC1C,CAAC;QACD,KAAK,CAAC,OAAO;YACX,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO;gBAAE,OAAO,KAAK,CAAC;YAEtE,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;gBACnD,UAAU,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;gBACpE,OAAO,IAAI,CAAC;YACd,CAAC;YAED,UAAU,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;YAC/B,IAAI,CAAC;gBACH,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC;gBAC1B,IAAK,KAA0B,CAAC,MAAM,KAAK,MAAM;oBAAE,OAAO,KAAK,CAAC;gBAChE,UAAU,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;gBACpE,OAAO,IAAI,CAAC;YACd,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAK,KAA0B,CAAC,MAAM,KAAK,MAAM;oBAAE,OAAO,KAAK,CAAC;gBAChE,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,qBAAqB,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;gBAChF,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QACD,MAAM,CAAC,MAAM;YACX,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC;gBAAE,OAAO,KAAK,CAAC;YAC1E,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO;gBAAE,OAAO,KAAK,CAAC;YACtE,UAAU,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;YAC5E,OAAO,IAAI,CAAC;QACd,CAAC;QACD,qBAAqB;YACnB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,YAAY;YACV,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;gBAAE,OAAO,KAAK,CAAC;YAC7C,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC;YACjC,UAAU,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;YACtD,OAAO,MAAM,CAAC,WAAW,CAAC,CAAC;QAC7B,CAAC;QACD,SAAS;YACP,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ;gBAAE,OAAO,KAAK,CAAC;YAC5C,MAAM,WAAW,GAAsB;gBACrC,OAAO,EAAE,WAAW;gBACpB,MAAM,EAAE,aAAa;aACtB,CAAC;YACF,UAAU,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;YACtD,OAAO,MAAM,CAAC,WAAW,CAAC,CAAC;QAC7B,CAAC;KACF,CAAC;IAEF,OAAO,OAAO,CAAC;AACjB,CAAC","sourcesContent":["import type { AlertDialogTone } from \"./component-recipes.js\";\n\nexport type AlertDialogMode = \"alert\" | \"confirm\";\nexport type AlertDialogInitialFocus = \"cancel\" | \"confirm\";\nexport type AlertDialogAsyncState = \"idle\" | \"busy\" | \"error\";\nexport type AlertDialogConfirmAction = () => void | Promise<void>;\nexport type AlertDialogCancelReason =\n | \"cancel-action\"\n | \"escape\"\n | \"back\"\n | \"programmatic\"\n | \"interrupted\";\nexport type AlertDialogDismissReason =\n | Exclude<AlertDialogCancelReason, \"interrupted\">\n | \"outside\";\nexport type AlertDialogOpenChangeReason = \"trigger\" | \"confirm\" | AlertDialogCancelReason;\n\nexport type AlertDialogResult =\n | Readonly<{ outcome: \"confirmed\" }>\n | Readonly<{ outcome: \"cancelled\"; reason: AlertDialogCancelReason }>;\n\ntype AlertDialogAsyncAction =\n | Readonly<{\n onConfirm: AlertDialogConfirmAction;\n fallbackErrorMessage: string;\n resolveErrorMessage?: (error: unknown) => string;\n }>\n | Readonly<{\n onConfirm?: never;\n fallbackErrorMessage?: never;\n resolveErrorMessage?: never;\n }>;\n\ntype AlertDialogCopy = Readonly<{\n title: string;\n description: string;\n confirmLabel: string;\n}>;\n\n/**\n * Renderer-neutral copy and action contract. Products own localized copy;\n * renderers own modal isolation, focus, motion, and visual translation.\n */\nexport type AlertDialogRequest =\n | (AlertDialogCopy &\n Readonly<{\n mode: \"alert\";\n // Every tone except `danger` can announce without a choice. A danger\n // dialog with no cancel would let a destructive act through on one key.\n tone?: Exclude<AlertDialogTone, \"danger\">;\n cancelLabel?: never;\n onConfirm?: never;\n fallbackErrorMessage?: never;\n resolveErrorMessage?: never;\n }>)\n | (AlertDialogCopy &\n Readonly<{\n mode: \"confirm\";\n tone?: AlertDialogTone;\n cancelLabel: string;\n }> &\n AlertDialogAsyncAction);\n\nexport type AlertDialogOpenState =\n | Readonly<{\n open: boolean;\n defaultOpen?: never;\n onOpenChange(\n open: boolean,\n detail: Readonly<{ reason: AlertDialogOpenChangeReason }>,\n ): void;\n }>\n | Readonly<{\n open?: never;\n defaultOpen?: boolean;\n onOpenChange?: (\n open: boolean,\n detail: Readonly<{ reason: AlertDialogOpenChangeReason }>,\n ) => void;\n }>;\n\nexport const alertDialogBehaviorDefaults = {\n initialFocus: { alert: \"confirm\", confirm: \"cancel\" },\n outsideDismiss: false,\n escapeOrBackOutcome: \"cancelled\",\n dismissWhileBusy: false,\n} as const satisfies Readonly<{\n initialFocus: Record<AlertDialogMode, AlertDialogInitialFocus>;\n outsideDismiss: false;\n escapeOrBackOutcome: \"cancelled\";\n dismissWhileBusy: false;\n}>;\n\nfunction assertCopy(value: string, field: string): void {\n if (value.trim().length === 0) {\n throw new TypeError(`AlertDialog ${field} must not be empty`);\n }\n}\n\nexport function validateAlertDialogRequest(request: AlertDialogRequest): void {\n assertCopy(request.title, \"title\");\n assertCopy(request.description, \"description\");\n assertCopy(request.confirmLabel, \"confirmLabel\");\n if (request.mode === \"alert\") {\n if (request.tone === (\"danger\" as AlertDialogTone)) {\n throw new TypeError(\"AlertDialog danger tone requires confirm mode\");\n }\n return;\n }\n assertCopy(request.cancelLabel, \"cancelLabel\");\n if (request.onConfirm) assertCopy(request.fallbackErrorMessage, \"fallbackErrorMessage\");\n}\n\nexport function getAlertDialogInitialFocus(\n mode: AlertDialogMode,\n): AlertDialogInitialFocus {\n return alertDialogBehaviorDefaults.initialFocus[mode];\n}\n\nexport function canDismissAlertDialog(\n reason: AlertDialogDismissReason,\n busy: boolean,\n): boolean {\n if (busy && !alertDialogBehaviorDefaults.dismissWhileBusy) return false;\n if (reason === \"outside\") return alertDialogBehaviorDefaults.outsideDismiss;\n return true;\n}\n\nexport type AlertDialogPhase =\n | Readonly<{ status: \"idle\" }>\n | Readonly<{ status: \"busy\" }>\n | Readonly<{ status: \"error\"; message: string }>\n | Readonly<{ status: \"closing\"; result: AlertDialogResult }>\n | Readonly<{ status: \"closed\"; result: AlertDialogResult }>;\n\nexport type AlertDialogSession = Readonly<{\n request: AlertDialogRequest;\n result: Promise<AlertDialogResult>;\n getSnapshot(): AlertDialogPhase;\n subscribe(listener: () => void): () => void;\n /** Returns true only for the attempt that moved the session toward closing. */\n confirm(): Promise<boolean>;\n cancel(reason: Exclude<AlertDialogCancelReason, \"interrupted\">): boolean;\n attemptOutsideDismiss(): false;\n completeExit(): boolean;\n interrupt(): boolean;\n}>;\n\nfunction resolveFailureMessage(\n request: Extract<AlertDialogRequest, { mode: \"confirm\" }>,\n error: unknown,\n): string {\n if (!request.onConfirm) return \"\";\n try {\n const resolved = request.resolveErrorMessage?.(error).trim();\n return resolved || request.fallbackErrorMessage;\n } catch {\n return request.fallbackErrorMessage;\n }\n}\n\n/**\n * Owns a complete AlertDialog lifecycle, including side-effect de-duplication\n * and settling only after the renderer reports that exit motion completed.\n */\nexport function createAlertDialogSession(\n request: AlertDialogRequest,\n): AlertDialogSession {\n validateAlertDialogRequest(request);\n\n let phase: AlertDialogPhase = { status: \"idle\" };\n let settleResult!: (result: AlertDialogResult) => void;\n let settled = false;\n const listeners = new Set<() => void>();\n const result = new Promise<AlertDialogResult>((resolve) => {\n settleResult = resolve;\n });\n\n const notify = () => {\n for (const listener of listeners) listener();\n };\n const transition = (next: AlertDialogPhase) => {\n phase = next;\n notify();\n };\n const settle = (next: AlertDialogResult): boolean => {\n if (settled) return false;\n settled = true;\n settleResult(next);\n return true;\n };\n\n const session: AlertDialogSession = {\n request,\n result,\n getSnapshot: () => phase,\n subscribe(listener) {\n listeners.add(listener);\n return () => listeners.delete(listener);\n },\n async confirm() {\n if (phase.status !== \"idle\" && phase.status !== \"error\") return false;\n\n if (request.mode === \"alert\" || !request.onConfirm) {\n transition({ status: \"closing\", result: { outcome: \"confirmed\" } });\n return true;\n }\n\n transition({ status: \"busy\" });\n try {\n await request.onConfirm();\n if ((phase as AlertDialogPhase).status !== \"busy\") return false;\n transition({ status: \"closing\", result: { outcome: \"confirmed\" } });\n return true;\n } catch (error) {\n if ((phase as AlertDialogPhase).status !== \"busy\") return false;\n transition({ status: \"error\", message: resolveFailureMessage(request, error) });\n return false;\n }\n },\n cancel(reason) {\n if (!canDismissAlertDialog(reason, phase.status === \"busy\")) return false;\n if (phase.status !== \"idle\" && phase.status !== \"error\") return false;\n transition({ status: \"closing\", result: { outcome: \"cancelled\", reason } });\n return true;\n },\n attemptOutsideDismiss() {\n return false;\n },\n completeExit() {\n if (phase.status !== \"closing\") return false;\n const finalResult = phase.result;\n transition({ status: \"closed\", result: finalResult });\n return settle(finalResult);\n },\n interrupt() {\n if (phase.status === \"closed\") return false;\n const interrupted: AlertDialogResult = {\n outcome: \"cancelled\",\n reason: \"interrupted\",\n };\n transition({ status: \"closed\", result: interrupted });\n return settle(interrupted);\n },\n };\n\n return session;\n}\n"]}
1
+ {"version":3,"file":"alert-dialog.js","sourceRoot":"","sources":["../src/alert-dialog.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AlertDialogTone } from \"./component-recipes.js\";\n\nexport type AlertDialogMode = \"alert\" | \"confirm\";\nexport type AlertDialogInitialFocus = \"cancel\" | \"confirm\";\nexport type AlertDialogAsyncState = \"idle\" | \"busy\" | \"error\";\nexport type AlertDialogConfirmAction = () => void | Promise<void>;\nexport type AlertDialogCancelReason =\n | \"cancel-action\"\n | \"escape\"\n | \"back\"\n | \"programmatic\"\n | \"interrupted\";\nexport type AlertDialogDismissReason =\n | Exclude<AlertDialogCancelReason, \"interrupted\">\n | \"outside\";\nexport type AlertDialogOpenChangeReason = \"trigger\" | \"confirm\" | AlertDialogCancelReason;\n\nexport type AlertDialogResult =\n | Readonly<{ outcome: \"confirmed\" }>\n | Readonly<{ outcome: \"cancelled\"; reason: AlertDialogCancelReason }>;\n\ntype AlertDialogAsyncAction =\n | Readonly<{\n onConfirm: AlertDialogConfirmAction;\n fallbackErrorMessage: string;\n resolveErrorMessage?: (error: unknown) => string;\n }>\n | Readonly<{\n onConfirm?: never;\n fallbackErrorMessage?: never;\n resolveErrorMessage?: never;\n }>;\n\ntype AlertDialogCopy = Readonly<{\n title: string;\n description: string;\n confirmLabel: string;\n}>;\n\n/**\n * Renderer-neutral copy and action contract. Products own localized copy;\n * renderers own modal isolation, focus, motion, and visual translation.\n */\nexport type AlertDialogRequest =\n | (AlertDialogCopy &\n Readonly<{\n mode: \"alert\";\n // Every tone except `danger` can announce without a choice. A danger\n // dialog with no cancel would let a destructive act through on one key.\n tone?: Exclude<AlertDialogTone, \"danger\">;\n cancelLabel?: never;\n onConfirm?: never;\n fallbackErrorMessage?: never;\n resolveErrorMessage?: never;\n }>)\n | (AlertDialogCopy &\n Readonly<{\n mode: \"confirm\";\n tone?: AlertDialogTone;\n cancelLabel: string;\n }> &\n AlertDialogAsyncAction);\n\nexport type AlertDialogOpenState =\n | Readonly<{\n open: boolean;\n defaultOpen?: never;\n onOpenChange(\n open: boolean,\n detail: Readonly<{ reason: AlertDialogOpenChangeReason }>,\n ): void;\n }>\n | Readonly<{\n open?: never;\n defaultOpen?: boolean;\n onOpenChange?: (\n open: boolean,\n detail: Readonly<{ reason: AlertDialogOpenChangeReason }>,\n ) => void;\n }>;\n\nexport const alertDialogBehaviorDefaults = {\n initialFocus: { alert: \"confirm\", confirm: \"cancel\" },\n outsideDismiss: false,\n escapeOrBackOutcome: \"cancelled\",\n dismissWhileBusy: false,\n} as const satisfies Readonly<{\n initialFocus: Record<AlertDialogMode, AlertDialogInitialFocus>;\n outsideDismiss: false;\n escapeOrBackOutcome: \"cancelled\";\n dismissWhileBusy: false;\n}>;\n\nfunction assertCopy(value: string, field: string): void {\n if (value.trim().length === 0) {\n throw new TypeError(`AlertDialog ${field} must not be empty`);\n }\n}\n\nexport function validateAlertDialogRequest(request: AlertDialogRequest): void {\n assertCopy(request.title, \"title\");\n assertCopy(request.description, \"description\");\n assertCopy(request.confirmLabel, \"confirmLabel\");\n if (request.mode === \"alert\") {\n if (request.tone === (\"danger\" as AlertDialogTone)) {\n throw new TypeError(\"AlertDialog danger tone requires confirm mode\");\n }\n return;\n }\n assertCopy(request.cancelLabel, \"cancelLabel\");\n if (request.onConfirm) assertCopy(request.fallbackErrorMessage, \"fallbackErrorMessage\");\n}\n\nexport function getAlertDialogInitialFocus(\n mode: AlertDialogMode,\n): AlertDialogInitialFocus {\n return alertDialogBehaviorDefaults.initialFocus[mode];\n}\n\nexport function canDismissAlertDialog(\n reason: AlertDialogDismissReason,\n busy: boolean,\n): boolean {\n if (busy && !alertDialogBehaviorDefaults.dismissWhileBusy) return false;\n if (reason === \"outside\") return alertDialogBehaviorDefaults.outsideDismiss;\n return true;\n}\n\nexport type AlertDialogPhase =\n | Readonly<{ status: \"idle\" }>\n | Readonly<{ status: \"busy\" }>\n | Readonly<{ status: \"error\"; message: string }>\n | Readonly<{ status: \"closing\"; result: AlertDialogResult }>\n | Readonly<{ status: \"closed\"; result: AlertDialogResult }>;\n\nexport type AlertDialogSession = Readonly<{\n request: AlertDialogRequest;\n result: Promise<AlertDialogResult>;\n getSnapshot(): AlertDialogPhase;\n subscribe(listener: () => void): () => void;\n /** Returns true only for the attempt that moved the session toward closing. */\n confirm(): Promise<boolean>;\n cancel(reason: Exclude<AlertDialogCancelReason, \"interrupted\">): boolean;\n attemptOutsideDismiss(): false;\n completeExit(): boolean;\n interrupt(): boolean;\n}>;\n\nfunction resolveFailureMessage(\n request: Extract<AlertDialogRequest, { mode: \"confirm\" }>,\n error: unknown,\n): string {\n if (!request.onConfirm) return \"\";\n try {\n const resolved = request.resolveErrorMessage?.(error).trim();\n return resolved || request.fallbackErrorMessage;\n } catch {\n return request.fallbackErrorMessage;\n }\n}\n\n/**\n * Owns a complete AlertDialog lifecycle, including side-effect de-duplication\n * and settling only after the renderer reports that exit motion completed.\n */\nexport function createAlertDialogSession(\n request: AlertDialogRequest,\n): AlertDialogSession {\n validateAlertDialogRequest(request);\n\n let phase: AlertDialogPhase = { status: \"idle\" };\n let settleResult!: (result: AlertDialogResult) => void;\n let settled = false;\n const listeners = new Set<() => void>();\n const result = new Promise<AlertDialogResult>((resolve) => {\n settleResult = resolve;\n });\n\n const notify = () => {\n for (const listener of listeners) listener();\n };\n const transition = (next: AlertDialogPhase) => {\n phase = next;\n notify();\n };\n const settle = (next: AlertDialogResult): boolean => {\n if (settled) return false;\n settled = true;\n settleResult(next);\n return true;\n };\n\n const session: AlertDialogSession = {\n request,\n result,\n getSnapshot: () => phase,\n subscribe(listener) {\n listeners.add(listener);\n return () => listeners.delete(listener);\n },\n async confirm() {\n if (phase.status !== \"idle\" && phase.status !== \"error\") return false;\n\n if (request.mode === \"alert\" || !request.onConfirm) {\n transition({ status: \"closing\", result: { outcome: \"confirmed\" } });\n return true;\n }\n\n transition({ status: \"busy\" });\n try {\n await request.onConfirm();\n if ((phase as AlertDialogPhase).status !== \"busy\") return false;\n transition({ status: \"closing\", result: { outcome: \"confirmed\" } });\n return true;\n } catch (error) {\n if ((phase as AlertDialogPhase).status !== \"busy\") return false;\n transition({ status: \"error\", message: resolveFailureMessage(request, error) });\n return false;\n }\n },\n cancel(reason) {\n if (!canDismissAlertDialog(reason, phase.status === \"busy\")) return false;\n if (phase.status !== \"idle\" && phase.status !== \"error\") return false;\n transition({ status: \"closing\", result: { outcome: \"cancelled\", reason } });\n return true;\n },\n attemptOutsideDismiss() {\n return false;\n },\n completeExit() {\n if (phase.status !== \"closing\") return false;\n const finalResult = phase.result;\n transition({ status: \"closed\", result: finalResult });\n return settle(finalResult);\n },\n interrupt() {\n if (phase.status === \"closed\") return false;\n const interrupted: AlertDialogResult = {\n outcome: \"cancelled\",\n reason: \"interrupted\",\n };\n transition({ status: \"closed\", result: interrupted });\n return settle(interrupted);\n },\n };\n\n return session;\n}\n\n/**\n * A FIFO of AlertDialog requests where each `enqueue` returns the dialog's result. 2026-10-23: BurnTok web and app\n * AppDialog (321 and 293 lines) each rebuilt this around AlertDialog: a result Promise, one dialog at a time in\n * arrival order, route-scoped cancellation and focus return. The session above still owns confirm/busy/error per\n * dialog; the queue only orders requests and settles each promise exactly once.\n *\n * `scope` is the owner (usually the route) the call was made from. `retainScope(current)` cancels entries from any\n * other scope with `interrupted`, so a departed screen's question is never answered on the next one, and a stale\n * callback that enqueues after its screen left is cancelled the same way. Renderers show only the head.\n */\nexport type AlertDialogQueueEntry<Options> = Readonly<{\n id: number;\n request: AlertDialogRequest;\n options: Options;\n scope: string | undefined;\n}>;\n\nexport type AlertDialogQueue<Options> = Readonly<{\n enqueue(request: AlertDialogRequest, options: Options, scope: string | undefined): Promise<AlertDialogResult>;\n /** Entries in arrival order; the first is the dialog on screen. */\n getSnapshot(): readonly AlertDialogQueueEntry<Options>[];\n subscribe(listener: () => void): () => void;\n /** Settles the head entry with its dialog's result and shows the next. Returns false for any other id. */\n settle(id: number, result: AlertDialogResult): boolean;\n retainScope(scope: string | undefined): void;\n /**\n * Whether a renderer is mounted to show the queue (default true). `false` cancels every entry with `interrupted`\n * and settles later requests `interrupted` at once, so nothing waits on a dialog no one can answer. Reversible\n * because React StrictMode replays an unmount and mount on the same provider.\n */\n setActive(active: boolean): void;\n}>;\n\nconst interruptedResult: AlertDialogResult = { outcome: \"cancelled\", reason: \"interrupted\" };\n\nexport function createAlertDialogQueue<Options>(): AlertDialogQueue<Options> {\n type Pending = AlertDialogQueueEntry<Options> & Readonly<{ resolve: (result: AlertDialogResult) => void }>;\n let entries: readonly Pending[] = [];\n let snapshot: readonly AlertDialogQueueEntry<Options>[] = [];\n let nextId = 1;\n let active = true;\n const listeners = new Set<() => void>();\n // Resolve before notifying: the caller's `await` continuation is queued ahead of the renderer's re-render, so a\n // trigger it re-enables is focusable when the closing dialog returns focus.\n const commit = (next: readonly Pending[], settled: readonly [Pending, AlertDialogResult][]) => {\n for (const [entry, result] of settled) entry.resolve(result);\n entries = next;\n snapshot = next.map(({ id, request, options, scope }) => ({ id, request, options, scope }));\n for (const listener of listeners) listener();\n };\n return {\n enqueue(request, options, scope) {\n validateAlertDialogRequest(request);\n if (!active) return Promise.resolve(interruptedResult);\n return new Promise<AlertDialogResult>((resolve) => {\n commit([...entries, { id: nextId++, request, options, scope, resolve }], []);\n });\n },\n getSnapshot: () => snapshot,\n subscribe(listener) {\n listeners.add(listener);\n return () => listeners.delete(listener);\n },\n settle(id, result) {\n const head = entries[0];\n if (head === undefined || head.id !== id) return false;\n commit(entries.slice(1), [[head, result]]);\n return true;\n },\n retainScope(scope) {\n const stale = entries.filter((entry) => entry.scope !== scope);\n if (stale.length === 0) return;\n commit(entries.filter((entry) => entry.scope === scope), stale.map((entry) => [entry, interruptedResult]));\n },\n setActive(next) {\n active = next;\n if (next || entries.length === 0) return;\n commit([], entries.map((entry) => [entry, interruptedResult]));\n },\n };\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import type { DesignSystemDirection } from "./design-system-provider.js";
2
2
  import { type CheckboxState } from "./selection-helpers.js";
3
- export { checkboxBehaviorDefaults, getCheckboxNextState, reconcileCheckboxSelection, toggleCheckboxSelection, type CheckboxState, type MixedCheckboxActivation, } from "./selection-helpers.js";
3
+ export { checkboxBehaviorDefaults, getCheckboxNextState, reconcileCheckboxSelection, resolveScrollRevealOffset, toggleCheckboxSelection, type CheckboxState, type MixedCheckboxActivation, } from "./selection-helpers.js";
4
4
  /** Platform-neutral behavior vocabulary shared by renderer acceptance tests. */
5
5
  export type InteractionState = "idle" | "hover" | "focusVisible" | "pressed" | "dragged";
6
6
  export type AvailabilityState = "enabled" | "disabled" | "readOnly" | "busy";
@@ -729,7 +729,7 @@ export declare const behaviorRegistry: {
729
729
  };
730
730
  readonly top: {
731
731
  readonly controlled: readonly [];
732
- readonly inputs: readonly ["title", "eyebrow", "description", "size", "headingLevel"];
732
+ readonly inputs: readonly ["title", "eyebrow", "description", "size", "headingLevel", "titleLineBreaks"];
733
733
  readonly stateAxes: {};
734
734
  readonly web: {
735
735
  readonly roles: readonly ["heading"];
@@ -741,7 +741,7 @@ export declare const behaviorRegistry: {
741
741
  readonly states: readonly [];
742
742
  readonly actions: readonly [];
743
743
  };
744
- readonly scenarios: readonly ["the-title-is-a-real-heading-element-at-the-declared-level-not-styled-text", "top-is-body-content-that-scrolls-away-while-topbar-is-fixed-chrome", "description-wraps-instead-of-truncating-so-large-text-never-hides-the-question", "a-trailing-action-shares-the-title-row-and-drops-below-it-when-space-runs-out", "eyebrow-never-carries-information-the-title-does-not-repeat-in-some-form"];
744
+ readonly scenarios: readonly ["the-title-is-a-real-heading-element-at-the-declared-level-not-styled-text", "top-is-body-content-that-scrolls-away-while-topbar-is-fixed-chrome", "description-wraps-instead-of-truncating-so-large-text-never-hides-the-question", "preserved-title-line-breaks-change-only-the-drawing-and-the-heading-name-stays-one-sentence", "a-trailing-action-shares-the-title-row-and-drops-below-it-when-space-runs-out", "eyebrow-never-carries-information-the-title-does-not-repeat-in-some-form"];
745
745
  };
746
746
  readonly authProviderButton: {
747
747
  readonly controlled: readonly [];
@@ -875,10 +875,11 @@ export declare const behaviorRegistry: {
875
875
  };
876
876
  readonly sidebar: {
877
877
  readonly controlled: readonly ["collapsed", "defaultCollapsed", "onCollapsedChange"];
878
- readonly inputs: readonly ["groups", "currentId", "accessibilityLabel"];
878
+ readonly inputs: readonly ["groups", "currentId", "accessibilityLabel", "size"];
879
879
  readonly events: readonly ["onNavigate"];
880
880
  readonly defaults: {
881
881
  readonly collapsed: false;
882
+ readonly size: "regular";
882
883
  };
883
884
  readonly stateAxes: {
884
885
  readonly availability: readonly ["enabled", "disabled"];
@@ -895,7 +896,7 @@ export declare const behaviorRegistry: {
895
896
  readonly states: readonly [];
896
897
  readonly actions: readonly [];
897
898
  };
898
- readonly scenarios: readonly ["the-current-item-is-announced-with-aria-current-not-only-painted", "collapsing-hides-labels-but-keeps-every-item-and-its-accessible-name", "groups-are-real-list-groupings-with-their-own-label-not-visual-dividers-only", "an-item-badge-stays-visible-while-collapsed-because-it-is-the-reason-to-look", "bottom-navigation-owns-the-three-to-five-destination-mobile-case-this-contract-never-adds-it", "layout-owns-where-the-sidebar-sits-this-contract-owns-what-is-inside-it"];
899
+ readonly scenarios: readonly ["the-current-item-is-announced-with-aria-current-not-only-painted", "collapsing-hides-labels-but-keeps-every-item-and-its-accessible-name", "groups-are-real-list-groupings-with-their-own-label-not-visual-dividers-only", "an-item-badge-stays-visible-while-collapsed-because-it-is-the-reason-to-look", "bottom-navigation-owns-the-three-to-five-destination-mobile-case-this-contract-never-adds-it", "layout-owns-where-the-sidebar-sits-this-contract-owns-what-is-inside-it", "a-router-adapter-draws-the-item-anchor-while-hjm-keeps-current-disabled-and-collapsed-names"];
899
900
  };
900
901
  readonly nativePlatform: {
901
902
  readonly controlled: readonly [];
@@ -1 +1 @@
1
- {"version":3,"file":"behaviors.d.ts","sourceRoot":"","sources":["../src/behaviors.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
1
+ {"version":3,"file":"behaviors.d.ts","sourceRoot":"","sources":["../src/behaviors.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
package/dist/behaviors.js CHANGED
@@ -50,7 +50,7 @@ import { formBehaviorSpec } from "./form.js";
50
50
  import { numberFieldBehavior } from "./number-field.js";
51
51
  import { sliderBehavior } from "./slider.js";
52
52
  import { checkboxBehaviorDefaults, } from "./selection-helpers.js";
53
- export { checkboxBehaviorDefaults, getCheckboxNextState, reconcileCheckboxSelection, toggleCheckboxSelection, } from "./selection-helpers.js";
53
+ export { checkboxBehaviorDefaults, getCheckboxNextState, reconcileCheckboxSelection, resolveScrollRevealOffset, toggleCheckboxSelection, } from "./selection-helpers.js";
54
54
  /** Resolves a renderer's required name while rejecting type-valid blank copy. */
55
55
  export function resolveControlAccessibleName(label, accessibilityLabel, controlName = "Control") {
56
56
  if (label !== undefined && (typeof label !== "string" || !label.trim())) {