@hjmds/design-contracts 1.30.0 → 1.32.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 (102) hide show
  1. package/dist/behaviors.d.ts +3 -0
  2. package/dist/behaviors.d.ts.map +1 -1
  3. package/dist/bottom-navigation.d.ts +43 -0
  4. package/dist/bottom-navigation.d.ts.map +1 -1
  5. package/dist/bottom-navigation.js +55 -0
  6. package/dist/bottom-navigation.js.map +1 -1
  7. package/dist/carousel.d.ts +30 -0
  8. package/dist/carousel.d.ts.map +1 -1
  9. package/dist/carousel.js +32 -0
  10. package/dist/carousel.js.map +1 -1
  11. package/dist/catalog.d.ts +178 -1
  12. package/dist/catalog.d.ts.map +1 -1
  13. package/dist/catalog.js +16 -6
  14. package/dist/catalog.js.map +1 -1
  15. package/dist/component-recipes.d.ts +126 -0
  16. package/dist/component-recipes.d.ts.map +1 -1
  17. package/dist/component-recipes.js +71 -2
  18. package/dist/component-recipes.js.map +1 -1
  19. package/dist/icon.d.ts +58 -1
  20. package/dist/icon.d.ts.map +1 -1
  21. package/dist/icon.js +69 -0
  22. package/dist/icon.js.map +1 -1
  23. package/dist/image-choice.d.ts +47 -0
  24. package/dist/image-choice.d.ts.map +1 -1
  25. package/dist/image-choice.js +56 -0
  26. package/dist/image-choice.js.map +1 -1
  27. package/dist/index.d.ts +3 -3
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +2 -2
  30. package/dist/index.js.map +1 -1
  31. package/dist/pagination.d.ts +53 -0
  32. package/dist/pagination.d.ts.map +1 -1
  33. package/dist/pagination.js +48 -0
  34. package/dist/pagination.js.map +1 -1
  35. package/dist/recipes.d.ts +1 -1
  36. package/dist/recipes.d.ts.map +1 -1
  37. package/dist/recipes.js.map +1 -1
  38. package/dist/screen-patterns.d.ts +152 -2
  39. package/dist/screen-patterns.d.ts.map +1 -1
  40. package/dist/screen-patterns.js +132 -4
  41. package/dist/screen-patterns.js.map +1 -1
  42. package/dist/showcase.d.ts.map +1 -1
  43. package/dist/showcase.js +3 -0
  44. package/dist/showcase.js.map +1 -1
  45. package/dist/steps.d.ts +16 -7
  46. package/dist/steps.d.ts.map +1 -1
  47. package/dist/steps.js +6 -1
  48. package/dist/steps.js.map +1 -1
  49. package/dist/version.d.ts +1 -1
  50. package/dist/version.js +1 -1
  51. package/dist/version.js.map +1 -1
  52. package/docs/authoring-tools.md +1 -0
  53. package/docs/bottom-navigation.md +28 -0
  54. package/docs/carousel.md +8 -0
  55. package/docs/data-workflows.md +1 -0
  56. package/docs/dialog.md +23 -0
  57. package/docs/generated/component-maturity.md +7 -4
  58. package/docs/generated/renderer-evidence.json +317 -19
  59. package/docs/generated/renderer-evidence.md +9 -3
  60. package/docs/generated/showcase-manifest.json +164 -6
  61. package/docs/icon.md +9 -0
  62. package/docs/pagination.md +17 -0
  63. package/docs/screen-patterns.md +55 -1
  64. package/docs/steps.md +4 -3
  65. package/docs/toast.md +10 -0
  66. package/docs/usage/README.md +5 -2
  67. package/docs/usage/SELECTION.md +1 -1
  68. package/docs/usage/components/auth-screen-layout.md +15 -5
  69. package/docs/usage/components/bottom-cta.md +11 -0
  70. package/docs/usage/components/bottom-navigation.md +99 -2
  71. package/docs/usage/components/card.md +36 -5
  72. package/docs/usage/components/carousel.md +1 -0
  73. package/docs/usage/components/chat-date-separator.md +86 -0
  74. package/docs/usage/components/chat-message.md +13 -1
  75. package/docs/usage/components/chat-screen.md +3 -2
  76. package/docs/usage/components/comment-thread-row.md +11 -3
  77. package/docs/usage/components/comment-thread-screen.md +1 -1
  78. package/docs/usage/components/dialog.md +69 -0
  79. package/docs/usage/components/editor-screen.md +6 -2
  80. package/docs/usage/components/field.md +13 -0
  81. package/docs/usage/components/icon-tile.md +19 -3
  82. package/docs/usage/components/icon.md +45 -6
  83. package/docs/usage/components/image-choice-group.md +35 -4
  84. package/docs/usage/components/media-selection-screen.md +20 -1
  85. package/docs/usage/components/message-composer.md +4 -1
  86. package/docs/usage/components/moderation-screen.md +107 -2
  87. package/docs/usage/components/page-indicator.md +102 -0
  88. package/docs/usage/components/pagination.md +28 -4
  89. package/docs/usage/components/profile-screen.md +9 -3
  90. package/docs/usage/components/profile-summary.md +3 -3
  91. package/docs/usage/components/screen-layout.md +15 -3
  92. package/docs/usage/components/search-screen.md +5 -3
  93. package/docs/usage/components/steps.md +14 -7
  94. package/docs/usage/components/tabs.md +21 -1
  95. package/docs/usage/components/text.md +30 -1
  96. package/docs/usage/components/toast.md +5 -0
  97. package/docs/usage/components/typing-indicator.md +89 -0
  98. package/docs/usage/screens/common-login.md +3 -1
  99. package/docs/usage/screens/common-profile.md +3 -3
  100. package/docs/usage/screens/flow-editor.md +13 -2
  101. package/docs/usage/screens/flow-moderation.md +31 -3
  102. package/package.json +1 -1
package/dist/icon.d.ts CHANGED
@@ -6,8 +6,65 @@ import type { DesignSystemDirection } from "./design-system-provider.js";
6
6
  * or native glyph component instead of leaking a third-party icon name into a
7
7
  * product screen.
8
8
  */
9
- export declare const semanticIconNames: readonly ["add", "ai", "alert", "back", "calendar", "check", "chevronDown", "chevronEnd", "chevronStart", "chevronUp", "close", "compare", "copy", "delete", "download", "edit", "error", "favorite", "filter", "forward", "help", "home", "info", "lock", "menu", "more", "notifications", "pause", "play", "refresh", "search", "settings", "share", "success", "trendDown", "trendFlat", "trendUp", "upload", "user", "users", "visibility", "visibilityOff", "warning"];
9
+ export declare const semanticIconNames: readonly ["add", "ai", "alert", "arrowDown", "arrowUp", "back", "calendar", "check", "chevronDown", "chevronEnd", "chevronStart", "chevronUp", "close", "compare", "copy", "delete", "download", "edit", "error", "favorite", "filter", "forward", "help", "home", "info", "lock", "menu", "more", "notifications", "pause", "play", "refresh", "rotate", "search", "settings", "share", "success", "trendDown", "trendFlat", "trendUp", "unblock", "upload", "user", "users", "visibility", "visibilityOff", "warning"];
10
10
  export type SemanticIconName = (typeof semanticIconNames)[number];
11
+ /**
12
+ * Geometry of every semantic mark on one 24-unit stroke grid (round caps/joins, no fill). It lived privately in the
13
+ * Web renderer, so Native products redrew the same marks in their own adapters (utilverse UiGlyph arrowUp/arrowDown/
14
+ * rotate, 2026-10-18). As shared appearance data it belongs here: Web draws it, Native draws it through the optional
15
+ * `@hjmds/react-native/icon-svg` adapter, and products without react-native-svg can still read the same path.
16
+ */
17
+ export declare const semanticIconPaths: {
18
+ readonly add: "M12 5v14M5 12h14";
19
+ readonly ai: "M12 2l1.2 4.1L17 8l-3.8 1.9L12 14l-1.2-4.1L7 8l3.8-1.9L12 2ZM19 14l.7 2.3L22 17.5l-2.3 1.2L19 21l-.7-2.3-2.3-1.2 2.3-1.2L19 14Z";
20
+ readonly alert: "M12 3 2.7 20h18.6L12 3Zm0 6v4m0 3h.01";
21
+ readonly arrowDown: "M12 5v14m-6-6 6 6 6-6";
22
+ readonly arrowUp: "M12 19V5m-6 6 6-6 6 6";
23
+ readonly back: "M15 18 9 12l6-6M9 12h10";
24
+ readonly calendar: "M5 4h14a2 2 0 0 1 2 2v13a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2Zm2-2v4m10-4v4M3 9h18";
25
+ readonly check: "m5 12 4 4L19 6";
26
+ readonly chevronDown: "m6 9 6 6 6-6";
27
+ readonly chevronEnd: "m9 6 6 6-6 6";
28
+ readonly chevronStart: "m15 6-6 6 6 6";
29
+ readonly chevronUp: "m6 15 6-6 6 6";
30
+ readonly close: "M6 6l12 12M18 6 6 18";
31
+ readonly compare: "M8 7h11m0 0-3-3m3 3-3 3M16 17H5m0 0 3-3m-3 3 3 3";
32
+ readonly copy: "M8 8h11a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H10a2 2 0 0 1-2-2V8Zm8 0V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h3";
33
+ readonly delete: "M4 7h16M9 7V4h6v3m3 0-1 14H7L6 7m4 4v6m4-6v6";
34
+ readonly download: "M12 3v12m0 0 5-5m-5 5-5-5M4 19v2h16v-2";
35
+ readonly edit: "m4 16-1 5 5-1L19 9l-4-4L4 16Zm9-9 4 4";
36
+ readonly error: "M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20Zm0-14v5m0 3h.01";
37
+ readonly favorite: "M20.8 4.6a5.5 5.5 0 0 0-7.8 0L12 5.7l-1.1-1.1a5.5 5.5 0 0 0-7.8 7.8L12 21l8.8-8.6a5.5 5.5 0 0 0 0-7.8Z";
38
+ readonly filter: "M3 5h18l-7 8v6l-4 2v-8L3 5Z";
39
+ readonly forward: "m9 6 6 6-6 6m6-6H5";
40
+ readonly help: "M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20Zm-3-13a3 3 0 1 1 4.7 2.5c-1 .7-1.7 1.2-1.7 2.5m0 3h.01";
41
+ readonly home: "m3 11 9-8 9 8v10h-6v-6H9v6H3V11Z";
42
+ readonly info: "M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20Zm0-11v6m0-10h.01";
43
+ readonly lock: "M6 10h12v11H6V10Zm3 0V7a3 3 0 0 1 6 0v3";
44
+ readonly menu: "M4 6h16M4 12h16M4 18h16";
45
+ readonly more: "M5 12h.01M12 12h.01M19 12h.01";
46
+ readonly notifications: "M18 8a6 6 0 0 0-12 0c0 7-3 7-3 9h18c0-2-3-2-3-9Zm-8 12h4";
47
+ readonly pause: "M8 5v14m8-14v14";
48
+ readonly play: "m8 5 11 7-11 7V5Z";
49
+ readonly refresh: "M20 7v5h-5M4 17v-5h5m10.5-3A8 8 0 0 0 6 6l-2 2m.5 7A8 8 0 0 0 18 18l2-2";
50
+ readonly rotate: "M20 12a8 8 0 1 1-2.3-5.6L20 9m0-5v5h-5";
51
+ readonly search: "m21 21-4.4-4.4M19 11a8 8 0 1 1-16 0 8 8 0 0 1 16 0Z";
52
+ readonly settings: "M12 15.5a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7Zm7.4-3.5 2-1.5-2-3.5-2.4 1a8 8 0 0 0-2-1.2L14.7 4h-4l-.4 2.8A8 8 0 0 0 8 8L5.6 7l-2 3.5 2 1.5a8 8 0 0 0 0 2l-2 1.5 2 3.5L8 18a8 8 0 0 0 2.3 1.2l.4 2.8h4l.3-2.8A8 8 0 0 0 17 18l2.4 1 2-3.5-2-1.5a8 8 0 0 0 0-2Z";
53
+ readonly share: "M18 8a3 3 0 1 0 0-6 3 3 0 0 0 0 6ZM6 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6Zm12 9a3 3 0 1 0 0-6 3 3 0 0 0 0 6ZM8.6 16.5l6.8 4M15.4 6.5l-6.8 4";
54
+ readonly success: "M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20Zm-5-10 3 3 7-7";
55
+ readonly trendDown: "M3 7l7 7 4-4 7 7m0 0v-6m0 6h-6";
56
+ readonly trendFlat: "M4 12h16m0 0-4-4m4 4-4 4";
57
+ readonly trendUp: "M3 17l7-7 4 4 7-7m0 0v6m0-6h-6";
58
+ readonly unblock: "M6 10h12v11H6V10Zm3 0V7a3 3 0 0 1 5.8-1.1";
59
+ readonly upload: "M12 21V9m0 0-5 5m5-5 5 5M4 5V3h16v2";
60
+ readonly user: "M12 12a4 4 0 1 0 0-8 4 4 0 0 0 0 8Zm-8 9a8 8 0 0 1 16 0";
61
+ readonly users: "M9 11a4 4 0 1 0 0-8 4 4 0 0 0 0 8Zm-7 10a7 7 0 0 1 14 0m1-16a4 4 0 0 1 0 7m0 3a6 6 0 0 1 5 6";
62
+ readonly visibility: "M2 12s4-7 10-7 10 7 10 7-4 7-10 7S2 12 2 12Zm10 3a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z";
63
+ readonly visibilityOff: "m3 3 18 18M10.6 5.2A9 9 0 0 1 12 5c6 0 10 7 10 7a17 17 0 0 1-2.1 3M6.6 6.6C3.8 8.5 2 12 2 12s4 7 10 7a9 9 0 0 0 3.4-.7M9.9 9.9a3 3 0 0 0 4.2 4.2";
64
+ readonly warning: "M12 3 2.7 20h18.6L12 3Zm0 6v4m0 3h.01";
65
+ };
66
+ /** Narrows a product glyph name to the shared set, so adapters can draw HJM marks and fall back to their own. */
67
+ export declare function isSemanticIconName(name: string): name is SemanticIconName;
11
68
  export type IconDirection = DesignSystemDirection;
12
69
  export type IconDirectionality = "fixed" | "mirror-in-rtl";
13
70
  export type IconTransform = "none" | "mirror-inline";
@@ -1 +1 @@
1
- {"version":3,"file":"icon.d.ts","sourceRoot":"","sources":["../src/icon.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEzE;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,6cA4CpB,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAClE,MAAM,MAAM,aAAa,GAAG,qBAAqB,CAAC;AAClD,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,eAAe,CAAC;AAC3D,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,eAAe,CAAC;AASrD,KAAK,cAAc,GAAG,QAAQ,CAAC;IAC7B,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,cAAc,CAAC,EAAE,kBAAkB,CAAC;CACrC,CAAC,CAAC;AAEH,MAAM,MAAM,wBAAwB,CAAC,IAAI,SAAS,MAAM,GAAG,gBAAgB,IACzE,cAAc,GACZ,QAAQ,CAAC;IACP,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,UAAU,CAAC,EAAE,IAAI,CAAC;IAClB,kBAAkB,CAAC,EAAE,KAAK,CAAC;CAC5B,CAAC,CAAC;AAEP,MAAM,MAAM,yBAAyB,CAAC,IAAI,SAAS,MAAM,GAAG,gBAAgB,IAC1E,cAAc,GACZ,QAAQ,CAAC;IACP,IAAI,EAAE,IAAI,CAAC;IACX,oFAAoF;IACpF,IAAI,CAAC,EAAE,OAAO,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACvC,UAAU,EAAE,KAAK,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;CAC5B,CAAC,CAAC;AAEP,MAAM,MAAM,cAAc,CAAC,IAAI,SAAS,MAAM,GAAG,gBAAgB,IAC7D,wBAAwB,CAAC,IAAI,CAAC,GAC9B,yBAAyB,CAAC,IAAI,CAAC,CAAC;AAEpC,MAAM,MAAM,sBAAsB,CAAC,IAAI,SAAS,MAAM,GAAG,gBAAgB,IACrE,CAAC,QAAQ,CAAC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,oBAAoB,CAAC,CAAC,GACnE,QAAQ,CAAC;IAAE,kBAAkB,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC,CAAC,GAC3C,QAAQ,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC;AAE9C,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAEtE;AAED,wBAAgB,gBAAgB,CAC9B,cAAc,EAAE,kBAAkB,EAClC,SAAS,EAAE,aAAa,GACvB,aAAa,CAUf;AAgBD,wBAAgB,sBAAsB,CAAC,IAAI,SAAS,MAAM,EACxD,UAAU,EAAE,cAAc,CAAC,IAAI,CAAC,GAC/B,IAAI,CAkDN;AAED,wBAAgB,qBAAqB,CAAC,IAAI,SAAS,MAAM,EACvD,UAAU,EAAE,cAAc,CAAC,IAAI,CAAC,GAC/B,sBAAsB,CAAC,IAAI,CAAC,CAqB9B"}
1
+ {"version":3,"file":"icon.d.ts","sourceRoot":"","sources":["../src/icon.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEzE;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,0fAgDpB,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAElE;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqDuB,CAAC;AAItD,iHAAiH;AACjH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,gBAAgB,CAEzE;AACD,MAAM,MAAM,aAAa,GAAG,qBAAqB,CAAC;AAClD,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,eAAe,CAAC;AAC3D,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,eAAe,CAAC;AASrD,KAAK,cAAc,GAAG,QAAQ,CAAC;IAC7B,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,cAAc,CAAC,EAAE,kBAAkB,CAAC;CACrC,CAAC,CAAC;AAEH,MAAM,MAAM,wBAAwB,CAAC,IAAI,SAAS,MAAM,GAAG,gBAAgB,IACzE,cAAc,GACZ,QAAQ,CAAC;IACP,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,UAAU,CAAC,EAAE,IAAI,CAAC;IAClB,kBAAkB,CAAC,EAAE,KAAK,CAAC;CAC5B,CAAC,CAAC;AAEP,MAAM,MAAM,yBAAyB,CAAC,IAAI,SAAS,MAAM,GAAG,gBAAgB,IAC1E,cAAc,GACZ,QAAQ,CAAC;IACP,IAAI,EAAE,IAAI,CAAC;IACX,oFAAoF;IACpF,IAAI,CAAC,EAAE,OAAO,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACvC,UAAU,EAAE,KAAK,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;CAC5B,CAAC,CAAC;AAEP,MAAM,MAAM,cAAc,CAAC,IAAI,SAAS,MAAM,GAAG,gBAAgB,IAC7D,wBAAwB,CAAC,IAAI,CAAC,GAC9B,yBAAyB,CAAC,IAAI,CAAC,CAAC;AAEpC,MAAM,MAAM,sBAAsB,CAAC,IAAI,SAAS,MAAM,GAAG,gBAAgB,IACrE,CAAC,QAAQ,CAAC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,oBAAoB,CAAC,CAAC,GACnE,QAAQ,CAAC;IAAE,kBAAkB,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC,CAAC,GAC3C,QAAQ,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC;AAE9C,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAEtE;AAED,wBAAgB,gBAAgB,CAC9B,cAAc,EAAE,kBAAkB,EAClC,SAAS,EAAE,aAAa,GACvB,aAAa,CAUf;AAgBD,wBAAgB,sBAAsB,CAAC,IAAI,SAAS,MAAM,EACxD,UAAU,EAAE,cAAc,CAAC,IAAI,CAAC,GAC/B,IAAI,CAkDN;AAED,wBAAgB,qBAAqB,CAAC,IAAI,SAAS,MAAM,EACvD,UAAU,EAAE,cAAc,CAAC,IAAI,CAAC,GAC/B,sBAAsB,CAAC,IAAI,CAAC,CAqB9B"}
package/dist/icon.js CHANGED
@@ -7,6 +7,8 @@ export const semanticIconNames = [
7
7
  "add",
8
8
  "ai",
9
9
  "alert",
10
+ "arrowDown",
11
+ "arrowUp",
10
12
  "back",
11
13
  "calendar",
12
14
  "check",
@@ -34,6 +36,7 @@ export const semanticIconNames = [
34
36
  "pause",
35
37
  "play",
36
38
  "refresh",
39
+ "rotate",
37
40
  "search",
38
41
  "settings",
39
42
  "share",
@@ -41,6 +44,7 @@ export const semanticIconNames = [
41
44
  "trendDown",
42
45
  "trendFlat",
43
46
  "trendUp",
47
+ "unblock",
44
48
  "upload",
45
49
  "user",
46
50
  "users",
@@ -48,6 +52,71 @@ export const semanticIconNames = [
48
52
  "visibilityOff",
49
53
  "warning",
50
54
  ];
55
+ /**
56
+ * Geometry of every semantic mark on one 24-unit stroke grid (round caps/joins, no fill). It lived privately in the
57
+ * Web renderer, so Native products redrew the same marks in their own adapters (utilverse UiGlyph arrowUp/arrowDown/
58
+ * rotate, 2026-10-18). As shared appearance data it belongs here: Web draws it, Native draws it through the optional
59
+ * `@hjmds/react-native/icon-svg` adapter, and products without react-native-svg can still read the same path.
60
+ */
61
+ export const semanticIconPaths = {
62
+ add: "M12 5v14M5 12h14",
63
+ ai: "M12 2l1.2 4.1L17 8l-3.8 1.9L12 14l-1.2-4.1L7 8l3.8-1.9L12 2ZM19 14l.7 2.3L22 17.5l-2.3 1.2L19 21l-.7-2.3-2.3-1.2 2.3-1.2L19 14Z",
64
+ alert: "M12 3 2.7 20h18.6L12 3Zm0 6v4m0 3h.01",
65
+ // Reorder pair: a shaft with the head on the travel end. Fixed in RTL because up/down is physical.
66
+ arrowDown: "M12 5v14m-6-6 6 6 6-6",
67
+ arrowUp: "M12 19V5m-6 6 6-6 6 6",
68
+ back: "M15 18 9 12l6-6M9 12h10",
69
+ calendar: "M5 4h14a2 2 0 0 1 2 2v13a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2Zm2-2v4m10-4v4M3 9h18",
70
+ check: "m5 12 4 4L19 6",
71
+ chevronDown: "m6 9 6 6 6-6",
72
+ chevronEnd: "m9 6 6 6-6 6",
73
+ chevronStart: "m15 6-6 6 6 6",
74
+ chevronUp: "m6 15 6-6 6 6",
75
+ close: "M6 6l12 12M18 6 6 18",
76
+ compare: "M8 7h11m0 0-3-3m3 3-3 3M16 17H5m0 0 3-3m-3 3 3 3",
77
+ copy: "M8 8h11a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H10a2 2 0 0 1-2-2V8Zm8 0V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h3",
78
+ delete: "M4 7h16M9 7V4h6v3m3 0-1 14H7L6 7m4 4v6m4-6v6",
79
+ download: "M12 3v12m0 0 5-5m-5 5-5-5M4 19v2h16v-2",
80
+ edit: "m4 16-1 5 5-1L19 9l-4-4L4 16Zm9-9 4 4",
81
+ error: "M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20Zm0-14v5m0 3h.01",
82
+ favorite: "M20.8 4.6a5.5 5.5 0 0 0-7.8 0L12 5.7l-1.1-1.1a5.5 5.5 0 0 0-7.8 7.8L12 21l8.8-8.6a5.5 5.5 0 0 0 0-7.8Z",
83
+ filter: "M3 5h18l-7 8v6l-4 2v-8L3 5Z",
84
+ forward: "m9 6 6 6-6 6m6-6H5",
85
+ help: "M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20Zm-3-13a3 3 0 1 1 4.7 2.5c-1 .7-1.7 1.2-1.7 2.5m0 3h.01",
86
+ home: "m3 11 9-8 9 8v10h-6v-6H9v6H3V11Z",
87
+ info: "M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20Zm0-11v6m0-10h.01",
88
+ lock: "M6 10h12v11H6V10Zm3 0V7a3 3 0 0 1 6 0v3",
89
+ menu: "M4 6h16M4 12h16M4 18h16",
90
+ more: "M5 12h.01M12 12h.01M19 12h.01",
91
+ notifications: "M18 8a6 6 0 0 0-12 0c0 7-3 7-3 9h18c0-2-3-2-3-9Zm-8 12h4",
92
+ pause: "M8 5v14m8-14v14",
93
+ play: "m8 5 11 7-11 7V5Z",
94
+ refresh: "M20 7v5h-5M4 17v-5h5m10.5-3A8 8 0 0 0 6 6l-2 2m.5 7A8 8 0 0 0 18 18l2-2",
95
+ // Clockwise quarter-turn (the arc runs clockwise into the corner at the upper end), matching the +90deg step image
96
+ // and page tools apply. Fixed in RTL: rotation direction is physical, not reading order.
97
+ rotate: "M20 12a8 8 0 1 1-2.3-5.6L20 9m0-5v5h-5",
98
+ search: "m21 21-4.4-4.4M19 11a8 8 0 1 1-16 0 8 8 0 0 1 16 0Z",
99
+ settings: "M12 15.5a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7Zm7.4-3.5 2-1.5-2-3.5-2.4 1a8 8 0 0 0-2-1.2L14.7 4h-4l-.4 2.8A8 8 0 0 0 8 8L5.6 7l-2 3.5 2 1.5a8 8 0 0 0 0 2l-2 1.5 2 3.5L8 18a8 8 0 0 0 2.3 1.2l.4 2.8h4l.3-2.8A8 8 0 0 0 17 18l2.4 1 2-3.5-2-1.5a8 8 0 0 0 0-2Z",
100
+ share: "M18 8a3 3 0 1 0 0-6 3 3 0 0 0 0 6ZM6 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6Zm12 9a3 3 0 1 0 0-6 3 3 0 0 0 0 6ZM8.6 16.5l6.8 4M15.4 6.5l-6.8 4",
101
+ success: "M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20Zm-5-10 3 3 7-7",
102
+ trendDown: "M3 7l7 7 4-4 7 7m0 0v-6m0 6h-6",
103
+ trendFlat: "M4 12h16m0 0-4-4m4 4-4 4",
104
+ trendUp: "M3 17l7-7 4 4 7-7m0 0v6m0-6h-6",
105
+ // Release a block (blocked account, locked item): the `lock` body with its shackle swung open, so it reads as the
106
+ // undo of `lock` in the same family instead of a new pictogram.
107
+ unblock: "M6 10h12v11H6V10Zm3 0V7a3 3 0 0 1 5.8-1.1",
108
+ upload: "M12 21V9m0 0-5 5m5-5 5 5M4 5V3h16v2",
109
+ user: "M12 12a4 4 0 1 0 0-8 4 4 0 0 0 0 8Zm-8 9a8 8 0 0 1 16 0",
110
+ users: "M9 11a4 4 0 1 0 0-8 4 4 0 0 0 0 8Zm-7 10a7 7 0 0 1 14 0m1-16a4 4 0 0 1 0 7m0 3a6 6 0 0 1 5 6",
111
+ visibility: "M2 12s4-7 10-7 10 7 10 7-4 7-10 7S2 12 2 12Zm10 3a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z",
112
+ visibilityOff: "m3 3 18 18M10.6 5.2A9 9 0 0 1 12 5c6 0 10 7 10 7a17 17 0 0 1-2.1 3M6.6 6.6C3.8 8.5 2 12 2 12s4 7 10 7a9 9 0 0 0 3.4-.7M9.9 9.9a3 3 0 0 0 4.2 4.2",
113
+ warning: "M12 3 2.7 20h18.6L12 3Zm0 6v4m0 3h.01",
114
+ };
115
+ const semanticIconNameSet = new Set(semanticIconNames);
116
+ /** Narrows a product glyph name to the shared set, so adapters can draw HJM marks and fall back to their own. */
117
+ export function isSemanticIconName(name) {
118
+ return semanticIconNameSet.has(name);
119
+ }
51
120
  const logicalIconNames = new Set([
52
121
  "back",
53
122
  "chevronEnd",
package/dist/icon.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"icon.js","sourceRoot":"","sources":["../src/icon.ts"],"names":[],"mappings":"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","sourcesContent":["import type { GlyphSize } from \"./foundations.js\";\nimport type { IconTone, IconWeight } from \"./component-recipes.js\";\nimport type { DesignSystemDirection } from \"./design-system-provider.js\";\n\n/**\n * Shared semantic names. Renderers map these roles to their tree-shakeable SVG\n * or native glyph component instead of leaking a third-party icon name into a\n * product screen.\n */\nexport const semanticIconNames = [\n \"add\",\n \"ai\",\n \"alert\",\n \"back\",\n \"calendar\",\n \"check\",\n \"chevronDown\",\n \"chevronEnd\",\n \"chevronStart\",\n \"chevronUp\",\n \"close\",\n \"compare\",\n \"copy\",\n \"delete\",\n \"download\",\n \"edit\",\n \"error\",\n \"favorite\",\n \"filter\",\n \"forward\",\n \"help\",\n \"home\",\n \"info\",\n \"lock\",\n \"menu\",\n \"more\",\n \"notifications\",\n \"pause\",\n \"play\",\n \"refresh\",\n \"search\",\n \"settings\",\n \"share\",\n \"success\",\n \"trendDown\",\n \"trendFlat\",\n \"trendUp\",\n \"upload\",\n \"user\",\n \"users\",\n \"visibility\",\n \"visibilityOff\",\n \"warning\",\n] as const;\n\nexport type SemanticIconName = (typeof semanticIconNames)[number];\nexport type IconDirection = DesignSystemDirection;\nexport type IconDirectionality = \"fixed\" | \"mirror-in-rtl\";\nexport type IconTransform = \"none\" | \"mirror-inline\";\n\nconst logicalIconNames = new Set<string>([\n \"back\",\n \"chevronEnd\",\n \"chevronStart\",\n \"forward\",\n]);\n\ntype IconAppearance = Readonly<{\n size?: GlyphSize;\n weight?: IconWeight;\n directionality?: IconDirectionality;\n}>;\n\nexport type DecorativeIconDescriptor<Name extends string = SemanticIconName> =\n IconAppearance &\n Readonly<{\n name: Name;\n tone?: IconTone;\n decorative?: true;\n accessibilityLabel?: never;\n }>;\n\nexport type InformativeIconDescriptor<Name extends string = SemanticIconName> =\n IconAppearance &\n Readonly<{\n name: Name;\n /** Decorative is intentionally excluded because informative marks need contrast. */\n tone?: Exclude<IconTone, \"decorative\">;\n decorative: false;\n accessibilityLabel: string;\n }>;\n\nexport type IconDescriptor<Name extends string = SemanticIconName> =\n | DecorativeIconDescriptor<Name>\n | InformativeIconDescriptor<Name>;\n\nexport type ResolvedIconDescriptor<Name extends string = SemanticIconName> =\n | (Required<Omit<DecorativeIconDescriptor<Name>, \"accessibilityLabel\">> &\n Readonly<{ accessibilityLabel?: never }>)\n | Required<InformativeIconDescriptor<Name>>;\n\nexport function getIconDirectionality(name: string): IconDirectionality {\n return logicalIconNames.has(name) ? \"mirror-in-rtl\" : \"fixed\";\n}\n\nexport function getIconTransform(\n directionality: IconDirectionality,\n direction: IconDirection,\n): IconTransform {\n if (directionality !== \"fixed\" && directionality !== \"mirror-in-rtl\") {\n throw new TypeError(`Unsupported Icon directionality: ${String(directionality)}`);\n }\n if (direction !== \"ltr\" && direction !== \"rtl\") {\n throw new TypeError(`Unsupported Icon direction: ${String(direction)}`);\n }\n return directionality === \"mirror-in-rtl\" && direction === \"rtl\"\n ? \"mirror-inline\"\n : \"none\";\n}\n\nconst sizes = new Set<GlyphSize>([\"xs\", \"sm\", \"md\", \"lg\", \"xl\", \"xxl\", \"xxxl\"]);\nconst tones = new Set<IconTone>([\n \"primary\",\n \"secondary\",\n \"decorative\",\n \"brand\",\n \"info\",\n \"success\",\n \"warning\",\n \"danger\",\n \"inverse\",\n]);\nconst weights = new Set<IconWeight>([\"regular\", \"strong\"]);\n\nexport function validateIconDescriptor<Name extends string>(\n descriptor: IconDescriptor<Name>,\n): void {\n const runtimeName = (descriptor as Readonly<{ name?: unknown }>).name;\n const runtimeTone = (descriptor as Readonly<{ tone?: unknown }>).tone;\n const runtimeDecorative = (\n descriptor as Readonly<{ decorative?: unknown }>\n ).decorative;\n const runtimeLabel = (\n descriptor as Readonly<{ accessibilityLabel?: unknown }>\n ).accessibilityLabel;\n if (typeof runtimeName !== \"string\" || runtimeName.trim().length === 0) {\n throw new TypeError(\"Icon name must not be empty\");\n }\n if (runtimeName !== runtimeName.trim()) {\n throw new TypeError(\"Icon name must not start or end with whitespace\");\n }\n if (descriptor.size !== undefined && !sizes.has(descriptor.size)) {\n throw new TypeError(`Unsupported Icon size: ${String(descriptor.size)}`);\n }\n if (runtimeTone !== undefined && !tones.has(runtimeTone as IconTone)) {\n throw new TypeError(`Unsupported Icon tone: ${String(runtimeTone)}`);\n }\n if (descriptor.weight !== undefined && !weights.has(descriptor.weight)) {\n throw new TypeError(`Unsupported Icon weight: ${String(descriptor.weight)}`);\n }\n if (\n descriptor.directionality !== undefined &&\n descriptor.directionality !== \"fixed\" &&\n descriptor.directionality !== \"mirror-in-rtl\"\n ) {\n throw new TypeError(\n `Unsupported Icon directionality: ${String(descriptor.directionality)}`,\n );\n }\n if (\n runtimeDecorative !== undefined &&\n runtimeDecorative !== true &&\n runtimeDecorative !== false\n ) {\n throw new TypeError(\"Icon decorative must be a boolean when provided\");\n }\n if (runtimeDecorative === false) {\n if (typeof runtimeLabel !== \"string\" || runtimeLabel.trim().length === 0) {\n throw new TypeError(\"Informative Icon accessibilityLabel must not be empty\");\n }\n if (runtimeTone === \"decorative\") {\n throw new TypeError(\"Informative Icon cannot use the decorative tone\");\n }\n } else if (runtimeLabel !== undefined) {\n throw new TypeError(\"Decorative Icon must not provide accessibilityLabel\");\n }\n}\n\nexport function resolveIconDescriptor<Name extends string>(\n descriptor: IconDescriptor<Name>,\n): ResolvedIconDescriptor<Name> {\n validateIconDescriptor(descriptor);\n const common = {\n name: descriptor.name,\n size: descriptor.size ?? \"md\",\n tone: descriptor.tone ?? \"secondary\",\n weight: descriptor.weight ?? \"regular\",\n directionality:\n descriptor.directionality ?? getIconDirectionality(descriptor.name),\n } as const;\n if (descriptor.decorative === false) {\n return {\n ...common,\n decorative: false,\n accessibilityLabel: descriptor.accessibilityLabel,\n } as ResolvedIconDescriptor<Name>;\n }\n return {\n ...common,\n decorative: true,\n } as ResolvedIconDescriptor<Name>;\n}\n"]}
1
+ {"version":3,"file":"icon.js","sourceRoot":"","sources":["../src/icon.ts"],"names":[],"mappings":"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","sourcesContent":["import type { GlyphSize } from \"./foundations.js\";\nimport type { IconTone, IconWeight } from \"./component-recipes.js\";\nimport type { DesignSystemDirection } from \"./design-system-provider.js\";\n\n/**\n * Shared semantic names. Renderers map these roles to their tree-shakeable SVG\n * or native glyph component instead of leaking a third-party icon name into a\n * product screen.\n */\nexport const semanticIconNames = [\n \"add\",\n \"ai\",\n \"alert\",\n \"arrowDown\",\n \"arrowUp\",\n \"back\",\n \"calendar\",\n \"check\",\n \"chevronDown\",\n \"chevronEnd\",\n \"chevronStart\",\n \"chevronUp\",\n \"close\",\n \"compare\",\n \"copy\",\n \"delete\",\n \"download\",\n \"edit\",\n \"error\",\n \"favorite\",\n \"filter\",\n \"forward\",\n \"help\",\n \"home\",\n \"info\",\n \"lock\",\n \"menu\",\n \"more\",\n \"notifications\",\n \"pause\",\n \"play\",\n \"refresh\",\n \"rotate\",\n \"search\",\n \"settings\",\n \"share\",\n \"success\",\n \"trendDown\",\n \"trendFlat\",\n \"trendUp\",\n \"unblock\",\n \"upload\",\n \"user\",\n \"users\",\n \"visibility\",\n \"visibilityOff\",\n \"warning\",\n] as const;\n\nexport type SemanticIconName = (typeof semanticIconNames)[number];\n\n/**\n * Geometry of every semantic mark on one 24-unit stroke grid (round caps/joins, no fill). It lived privately in the\n * Web renderer, so Native products redrew the same marks in their own adapters (utilverse UiGlyph arrowUp/arrowDown/\n * rotate, 2026-10-18). As shared appearance data it belongs here: Web draws it, Native draws it through the optional\n * `@hjmds/react-native/icon-svg` adapter, and products without react-native-svg can still read the same path.\n */\nexport const semanticIconPaths = {\n add: \"M12 5v14M5 12h14\",\n ai: \"M12 2l1.2 4.1L17 8l-3.8 1.9L12 14l-1.2-4.1L7 8l3.8-1.9L12 2ZM19 14l.7 2.3L22 17.5l-2.3 1.2L19 21l-.7-2.3-2.3-1.2 2.3-1.2L19 14Z\",\n alert: \"M12 3 2.7 20h18.6L12 3Zm0 6v4m0 3h.01\",\n // Reorder pair: a shaft with the head on the travel end. Fixed in RTL because up/down is physical.\n arrowDown: \"M12 5v14m-6-6 6 6 6-6\",\n arrowUp: \"M12 19V5m-6 6 6-6 6 6\",\n back: \"M15 18 9 12l6-6M9 12h10\",\n calendar: \"M5 4h14a2 2 0 0 1 2 2v13a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2Zm2-2v4m10-4v4M3 9h18\",\n check: \"m5 12 4 4L19 6\",\n chevronDown: \"m6 9 6 6 6-6\",\n chevronEnd: \"m9 6 6 6-6 6\",\n chevronStart: \"m15 6-6 6 6 6\",\n chevronUp: \"m6 15 6-6 6 6\",\n close: \"M6 6l12 12M18 6 6 18\",\n compare: \"M8 7h11m0 0-3-3m3 3-3 3M16 17H5m0 0 3-3m-3 3 3 3\",\n copy: \"M8 8h11a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H10a2 2 0 0 1-2-2V8Zm8 0V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h3\",\n delete: \"M4 7h16M9 7V4h6v3m3 0-1 14H7L6 7m4 4v6m4-6v6\",\n download: \"M12 3v12m0 0 5-5m-5 5-5-5M4 19v2h16v-2\",\n edit: \"m4 16-1 5 5-1L19 9l-4-4L4 16Zm9-9 4 4\",\n error: \"M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20Zm0-14v5m0 3h.01\",\n favorite: \"M20.8 4.6a5.5 5.5 0 0 0-7.8 0L12 5.7l-1.1-1.1a5.5 5.5 0 0 0-7.8 7.8L12 21l8.8-8.6a5.5 5.5 0 0 0 0-7.8Z\",\n filter: \"M3 5h18l-7 8v6l-4 2v-8L3 5Z\",\n forward: \"m9 6 6 6-6 6m6-6H5\",\n help: \"M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20Zm-3-13a3 3 0 1 1 4.7 2.5c-1 .7-1.7 1.2-1.7 2.5m0 3h.01\",\n home: \"m3 11 9-8 9 8v10h-6v-6H9v6H3V11Z\",\n info: \"M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20Zm0-11v6m0-10h.01\",\n lock: \"M6 10h12v11H6V10Zm3 0V7a3 3 0 0 1 6 0v3\",\n menu: \"M4 6h16M4 12h16M4 18h16\",\n more: \"M5 12h.01M12 12h.01M19 12h.01\",\n notifications: \"M18 8a6 6 0 0 0-12 0c0 7-3 7-3 9h18c0-2-3-2-3-9Zm-8 12h4\",\n pause: \"M8 5v14m8-14v14\",\n play: \"m8 5 11 7-11 7V5Z\",\n refresh: \"M20 7v5h-5M4 17v-5h5m10.5-3A8 8 0 0 0 6 6l-2 2m.5 7A8 8 0 0 0 18 18l2-2\",\n // Clockwise quarter-turn (the arc runs clockwise into the corner at the upper end), matching the +90deg step image\n // and page tools apply. Fixed in RTL: rotation direction is physical, not reading order.\n rotate: \"M20 12a8 8 0 1 1-2.3-5.6L20 9m0-5v5h-5\",\n search: \"m21 21-4.4-4.4M19 11a8 8 0 1 1-16 0 8 8 0 0 1 16 0Z\",\n settings: \"M12 15.5a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7Zm7.4-3.5 2-1.5-2-3.5-2.4 1a8 8 0 0 0-2-1.2L14.7 4h-4l-.4 2.8A8 8 0 0 0 8 8L5.6 7l-2 3.5 2 1.5a8 8 0 0 0 0 2l-2 1.5 2 3.5L8 18a8 8 0 0 0 2.3 1.2l.4 2.8h4l.3-2.8A8 8 0 0 0 17 18l2.4 1 2-3.5-2-1.5a8 8 0 0 0 0-2Z\",\n share: \"M18 8a3 3 0 1 0 0-6 3 3 0 0 0 0 6ZM6 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6Zm12 9a3 3 0 1 0 0-6 3 3 0 0 0 0 6ZM8.6 16.5l6.8 4M15.4 6.5l-6.8 4\",\n success: \"M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20Zm-5-10 3 3 7-7\",\n trendDown: \"M3 7l7 7 4-4 7 7m0 0v-6m0 6h-6\",\n trendFlat: \"M4 12h16m0 0-4-4m4 4-4 4\",\n trendUp: \"M3 17l7-7 4 4 7-7m0 0v6m0-6h-6\",\n // Release a block (blocked account, locked item): the `lock` body with its shackle swung open, so it reads as the\n // undo of `lock` in the same family instead of a new pictogram.\n unblock: \"M6 10h12v11H6V10Zm3 0V7a3 3 0 0 1 5.8-1.1\",\n upload: \"M12 21V9m0 0-5 5m5-5 5 5M4 5V3h16v2\",\n user: \"M12 12a4 4 0 1 0 0-8 4 4 0 0 0 0 8Zm-8 9a8 8 0 0 1 16 0\",\n users: \"M9 11a4 4 0 1 0 0-8 4 4 0 0 0 0 8Zm-7 10a7 7 0 0 1 14 0m1-16a4 4 0 0 1 0 7m0 3a6 6 0 0 1 5 6\",\n visibility: \"M2 12s4-7 10-7 10 7 10 7-4 7-10 7S2 12 2 12Zm10 3a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z\",\n visibilityOff: \"m3 3 18 18M10.6 5.2A9 9 0 0 1 12 5c6 0 10 7 10 7a17 17 0 0 1-2.1 3M6.6 6.6C3.8 8.5 2 12 2 12s4 7 10 7a9 9 0 0 0 3.4-.7M9.9 9.9a3 3 0 0 0 4.2 4.2\",\n warning: \"M12 3 2.7 20h18.6L12 3Zm0 6v4m0 3h.01\",\n} as const satisfies Record<SemanticIconName, string>;\n\nconst semanticIconNameSet = new Set<string>(semanticIconNames);\n\n/** Narrows a product glyph name to the shared set, so adapters can draw HJM marks and fall back to their own. */\nexport function isSemanticIconName(name: string): name is SemanticIconName {\n return semanticIconNameSet.has(name);\n}\nexport type IconDirection = DesignSystemDirection;\nexport type IconDirectionality = \"fixed\" | \"mirror-in-rtl\";\nexport type IconTransform = \"none\" | \"mirror-inline\";\n\nconst logicalIconNames = new Set<string>([\n \"back\",\n \"chevronEnd\",\n \"chevronStart\",\n \"forward\",\n]);\n\ntype IconAppearance = Readonly<{\n size?: GlyphSize;\n weight?: IconWeight;\n directionality?: IconDirectionality;\n}>;\n\nexport type DecorativeIconDescriptor<Name extends string = SemanticIconName> =\n IconAppearance &\n Readonly<{\n name: Name;\n tone?: IconTone;\n decorative?: true;\n accessibilityLabel?: never;\n }>;\n\nexport type InformativeIconDescriptor<Name extends string = SemanticIconName> =\n IconAppearance &\n Readonly<{\n name: Name;\n /** Decorative is intentionally excluded because informative marks need contrast. */\n tone?: Exclude<IconTone, \"decorative\">;\n decorative: false;\n accessibilityLabel: string;\n }>;\n\nexport type IconDescriptor<Name extends string = SemanticIconName> =\n | DecorativeIconDescriptor<Name>\n | InformativeIconDescriptor<Name>;\n\nexport type ResolvedIconDescriptor<Name extends string = SemanticIconName> =\n | (Required<Omit<DecorativeIconDescriptor<Name>, \"accessibilityLabel\">> &\n Readonly<{ accessibilityLabel?: never }>)\n | Required<InformativeIconDescriptor<Name>>;\n\nexport function getIconDirectionality(name: string): IconDirectionality {\n return logicalIconNames.has(name) ? \"mirror-in-rtl\" : \"fixed\";\n}\n\nexport function getIconTransform(\n directionality: IconDirectionality,\n direction: IconDirection,\n): IconTransform {\n if (directionality !== \"fixed\" && directionality !== \"mirror-in-rtl\") {\n throw new TypeError(`Unsupported Icon directionality: ${String(directionality)}`);\n }\n if (direction !== \"ltr\" && direction !== \"rtl\") {\n throw new TypeError(`Unsupported Icon direction: ${String(direction)}`);\n }\n return directionality === \"mirror-in-rtl\" && direction === \"rtl\"\n ? \"mirror-inline\"\n : \"none\";\n}\n\nconst sizes = new Set<GlyphSize>([\"xs\", \"sm\", \"md\", \"lg\", \"xl\", \"xxl\", \"xxxl\"]);\nconst tones = new Set<IconTone>([\n \"primary\",\n \"secondary\",\n \"decorative\",\n \"brand\",\n \"info\",\n \"success\",\n \"warning\",\n \"danger\",\n \"inverse\",\n]);\nconst weights = new Set<IconWeight>([\"regular\", \"strong\"]);\n\nexport function validateIconDescriptor<Name extends string>(\n descriptor: IconDescriptor<Name>,\n): void {\n const runtimeName = (descriptor as Readonly<{ name?: unknown }>).name;\n const runtimeTone = (descriptor as Readonly<{ tone?: unknown }>).tone;\n const runtimeDecorative = (\n descriptor as Readonly<{ decorative?: unknown }>\n ).decorative;\n const runtimeLabel = (\n descriptor as Readonly<{ accessibilityLabel?: unknown }>\n ).accessibilityLabel;\n if (typeof runtimeName !== \"string\" || runtimeName.trim().length === 0) {\n throw new TypeError(\"Icon name must not be empty\");\n }\n if (runtimeName !== runtimeName.trim()) {\n throw new TypeError(\"Icon name must not start or end with whitespace\");\n }\n if (descriptor.size !== undefined && !sizes.has(descriptor.size)) {\n throw new TypeError(`Unsupported Icon size: ${String(descriptor.size)}`);\n }\n if (runtimeTone !== undefined && !tones.has(runtimeTone as IconTone)) {\n throw new TypeError(`Unsupported Icon tone: ${String(runtimeTone)}`);\n }\n if (descriptor.weight !== undefined && !weights.has(descriptor.weight)) {\n throw new TypeError(`Unsupported Icon weight: ${String(descriptor.weight)}`);\n }\n if (\n descriptor.directionality !== undefined &&\n descriptor.directionality !== \"fixed\" &&\n descriptor.directionality !== \"mirror-in-rtl\"\n ) {\n throw new TypeError(\n `Unsupported Icon directionality: ${String(descriptor.directionality)}`,\n );\n }\n if (\n runtimeDecorative !== undefined &&\n runtimeDecorative !== true &&\n runtimeDecorative !== false\n ) {\n throw new TypeError(\"Icon decorative must be a boolean when provided\");\n }\n if (runtimeDecorative === false) {\n if (typeof runtimeLabel !== \"string\" || runtimeLabel.trim().length === 0) {\n throw new TypeError(\"Informative Icon accessibilityLabel must not be empty\");\n }\n if (runtimeTone === \"decorative\") {\n throw new TypeError(\"Informative Icon cannot use the decorative tone\");\n }\n } else if (runtimeLabel !== undefined) {\n throw new TypeError(\"Decorative Icon must not provide accessibilityLabel\");\n }\n}\n\nexport function resolveIconDescriptor<Name extends string>(\n descriptor: IconDescriptor<Name>,\n): ResolvedIconDescriptor<Name> {\n validateIconDescriptor(descriptor);\n const common = {\n name: descriptor.name,\n size: descriptor.size ?? \"md\",\n tone: descriptor.tone ?? \"secondary\",\n weight: descriptor.weight ?? \"regular\",\n directionality:\n descriptor.directionality ?? getIconDirectionality(descriptor.name),\n } as const;\n if (descriptor.decorative === false) {\n return {\n ...common,\n decorative: false,\n accessibilityLabel: descriptor.accessibilityLabel,\n } as ResolvedIconDescriptor<Name>;\n }\n return {\n ...common,\n decorative: true,\n } as ResolvedIconDescriptor<Name>;\n}\n"]}
@@ -6,8 +6,15 @@ export type ImageChoiceSelectionMode = "single" | "multiple";
6
6
  export type ImageChoiceItemDescriptor = Readonly<{
7
7
  id: string;
8
8
  label: string;
9
+ /**
10
+ * Localized secondary line under the tile (a status such as "sent", a one-line summary). Always visible when given
11
+ * and read as the tile's description, so it must not repeat `label`.
12
+ */
13
+ description?: string;
9
14
  disabled?: boolean;
10
15
  }>;
16
+ /** Lines the visible item label may wrap to before it is ellipsized (`showItemLabels`). */
17
+ export type ImageChoiceItemLabelLines = 1 | 2;
11
18
  export declare const imageChoiceRecipe: {
12
19
  readonly tileSize: 72;
13
20
  readonly gap: 8;
@@ -15,7 +22,47 @@ export declare const imageChoiceRecipe: {
15
22
  readonly ringWidth: 2;
16
23
  readonly ringOffset: 2;
17
24
  readonly checkSize: 20;
25
+ /**
26
+ * Visible per-tile caption (`showItemLabels`, 2026-10-18 BurnTok share recipients): people are recognised by name,
27
+ * not only by face. One line, ellipsized, as wide as the tile so the wrap grid stays even.
28
+ */
29
+ readonly itemLabelGap: 4;
30
+ readonly itemLabelVariant: "caption";
31
+ readonly itemLabelLines: 1;
32
+ /**
33
+ * 2026-10-18 BurnTok creation starters: multi-word titles were cut at one 80-wide line. Two lines keep a short
34
+ * title whole (word-keeping wrap) while the grid stays even; longer copy belongs in a list row, not a tile.
35
+ */
36
+ readonly itemLabelMaxLines: 2;
37
+ /**
38
+ * One muted caption line under the label for a per-item status (2026-10-18 BurnTok share: "sent" was appended to
39
+ * the name and hidden by the ellipsis on long nicknames).
40
+ */
41
+ readonly itemDescriptionVariant: "caption";
42
+ readonly itemDescriptionTone: "muted";
43
+ readonly itemDescriptionLines: 1;
44
+ /**
45
+ * Web `virtualized` viewport inset: the tile focus outline (2) plus its offset (2) would otherwise be clipped by the
46
+ * scrolling viewport at the first row and the edges.
47
+ */
48
+ readonly virtualViewportInset: 4;
18
49
  };
50
+ export declare function validateImageChoiceItemLabelLines(lines: number): asserts lines is ImageChoiceItemLabelLines;
51
+ /** Square ring frame around the picture, which is also the tile width. */
52
+ export declare function resolveImageChoiceOuterSize(): number;
53
+ /**
54
+ * Caption lines every tile of a group reserves: label lines when labels show, plus the description line when any
55
+ * item has one. Reserving the same block in every tile keeps wrapped rows even and gives virtualized rows one height.
56
+ */
57
+ export declare function resolveImageChoiceCaptionLines(options: Readonly<{
58
+ showItemLabels: boolean;
59
+ itemLabelLines: ImageChoiceItemLabelLines;
60
+ hasDescription: boolean;
61
+ }>): number;
62
+ /** Tile height for a caption block of `captionLines` lines at the rendered caption line height (token × text scale). */
63
+ export declare function resolveImageChoiceTileHeight(captionLines: number, captionLineHeight: number): number;
64
+ /** Tiles per row in a slot `width` wide: as many fixed-size tiles as fit with the recipe gap, at least one. */
65
+ export declare function resolveImageChoiceColumns(width: number): number;
19
66
  export declare function validateImageChoiceItems(items: readonly ImageChoiceItemDescriptor[]): void;
20
67
  /** Single mode keeps exactly the pressed id (radio semantics); multiple toggles membership in order. */
21
68
  export declare function resolveImageChoiceToggle(mode: "single", value: string | null, id: string): string;
@@ -1 +1 @@
1
- {"version":3,"file":"image-choice.d.ts","sourceRoot":"","sources":["../src/image-choice.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,MAAM,wBAAwB,GAAG,QAAQ,GAAG,UAAU,CAAC;AAC7D,MAAM,MAAM,yBAAyB,GAAG,QAAQ,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC;AAEpG,eAAO,MAAM,iBAAiB;;;;;;;CAOpB,CAAC;AAEX,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,SAAS,yBAAyB,EAAE,GAAG,IAAI,CAO1F;AAED,wGAAwG;AACxG,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;AACnG,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC"}
1
+ {"version":3,"file":"image-choice.d.ts","sourceRoot":"","sources":["../src/image-choice.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,MAAM,wBAAwB,GAAG,QAAQ,GAAG,UAAU,CAAC;AAC7D,MAAM,MAAM,yBAAyB,GAAG,QAAQ,CAAC;IAC/C,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC,CAAC;AACH,2FAA2F;AAC3F,MAAM,MAAM,yBAAyB,GAAG,CAAC,GAAG,CAAC,CAAC;AAE9C,eAAO,MAAM,iBAAiB;;;;;;;IAO5B;;;OAGG;;;;IAIH;;;OAGG;;IAEH;;;OAGG;;;;IAIH;;;OAGG;;CAEK,CAAC;AAEX,wBAAgB,iCAAiC,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,IAAI,yBAAyB,CAE3G;AAED,0EAA0E;AAC1E,wBAAgB,2BAA2B,IAAI,MAAM,CAEpD;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,QAAQ,CAAC;IAAE,cAAc,EAAE,OAAO,CAAC;IAAC,cAAc,EAAE,yBAAyB,CAAC;IAAC,cAAc,EAAE,OAAO,CAAA;CAAE,CAAC,GAAG,MAAM,CAEzK;AAED,wHAAwH;AACxH,wBAAgB,4BAA4B,CAAC,YAAY,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAG,MAAM,CAIpG;AAED,+GAA+G;AAC/G,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAI/D;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,SAAS,yBAAyB,EAAE,GAAG,IAAI,CAS1F;AAED,wGAAwG;AACxG,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;AACnG,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC"}
@@ -6,7 +6,60 @@ export const imageChoiceRecipe = {
6
6
  ringWidth: 2,
7
7
  ringOffset: 2,
8
8
  checkSize: 20,
9
+ /**
10
+ * Visible per-tile caption (`showItemLabels`, 2026-10-18 BurnTok share recipients): people are recognised by name,
11
+ * not only by face. One line, ellipsized, as wide as the tile so the wrap grid stays even.
12
+ */
13
+ itemLabelGap: spacing.xxs,
14
+ itemLabelVariant: "caption",
15
+ itemLabelLines: 1,
16
+ /**
17
+ * 2026-10-18 BurnTok creation starters: multi-word titles were cut at one 80-wide line. Two lines keep a short
18
+ * title whole (word-keeping wrap) while the grid stays even; longer copy belongs in a list row, not a tile.
19
+ */
20
+ itemLabelMaxLines: 2,
21
+ /**
22
+ * One muted caption line under the label for a per-item status (2026-10-18 BurnTok share: "sent" was appended to
23
+ * the name and hidden by the ellipsis on long nicknames).
24
+ */
25
+ itemDescriptionVariant: "caption",
26
+ itemDescriptionTone: "muted",
27
+ itemDescriptionLines: 1,
28
+ /**
29
+ * Web `virtualized` viewport inset: the tile focus outline (2) plus its offset (2) would otherwise be clipped by the
30
+ * scrolling viewport at the first row and the edges.
31
+ */
32
+ virtualViewportInset: 4,
9
33
  };
34
+ export function validateImageChoiceItemLabelLines(lines) {
35
+ if (!Number.isInteger(lines) || lines < 1 || lines > imageChoiceRecipe.itemLabelMaxLines)
36
+ throw new RangeError("ImageChoiceGroup itemLabelLines must be 1 or 2");
37
+ }
38
+ /** Square ring frame around the picture, which is also the tile width. */
39
+ export function resolveImageChoiceOuterSize() {
40
+ return imageChoiceRecipe.tileSize + (imageChoiceRecipe.ringWidth + imageChoiceRecipe.ringOffset) * 2;
41
+ }
42
+ /**
43
+ * Caption lines every tile of a group reserves: label lines when labels show, plus the description line when any
44
+ * item has one. Reserving the same block in every tile keeps wrapped rows even and gives virtualized rows one height.
45
+ */
46
+ export function resolveImageChoiceCaptionLines(options) {
47
+ return (options.showItemLabels ? options.itemLabelLines : 0) + (options.hasDescription ? imageChoiceRecipe.itemDescriptionLines : 0);
48
+ }
49
+ /** Tile height for a caption block of `captionLines` lines at the rendered caption line height (token × text scale). */
50
+ export function resolveImageChoiceTileHeight(captionLines, captionLineHeight) {
51
+ if (!Number.isInteger(captionLines) || captionLines < 0 || !Number.isFinite(captionLineHeight) || captionLineHeight <= 0)
52
+ throw new TypeError("Invalid ImageChoiceGroup caption metrics");
53
+ const outer = resolveImageChoiceOuterSize();
54
+ return captionLines === 0 ? outer : outer + imageChoiceRecipe.itemLabelGap + captionLines * captionLineHeight;
55
+ }
56
+ /** Tiles per row in a slot `width` wide: as many fixed-size tiles as fit with the recipe gap, at least one. */
57
+ export function resolveImageChoiceColumns(width) {
58
+ if (!Number.isFinite(width) || width < 0)
59
+ throw new TypeError("Invalid ImageChoiceGroup width");
60
+ const outer = resolveImageChoiceOuterSize();
61
+ return Math.max(1, Math.floor((width + imageChoiceRecipe.gap) / (outer + imageChoiceRecipe.gap)));
62
+ }
10
63
  export function validateImageChoiceItems(items) {
11
64
  if (!items.length)
12
65
  throw new TypeError("ImageChoiceGroup needs at least one item");
@@ -14,6 +67,9 @@ export function validateImageChoiceItems(items) {
14
67
  for (const item of items) {
15
68
  if (!item.id.trim() || ids.has(item.id) || !item.label.trim())
16
69
  throw new TypeError("ImageChoiceGroup items need unique ids and localized labels");
70
+ // Omit the key for no description; a blank string would reserve and announce an empty line.
71
+ if (item.description !== undefined && !item.description.trim())
72
+ throw new TypeError("ImageChoiceGroup item description must not be blank");
17
73
  ids.add(item.id);
18
74
  }
19
75
  }
@@ -1 +1 @@
1
- {"version":3,"file":"image-choice.js","sourceRoot":"","sources":["../src/image-choice.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AASnD,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,QAAQ,EAAE,EAAE;IACZ,GAAG,EAAE,OAAO,CAAC,EAAE;IACf,MAAM,EAAE,MAAM,CAAC,EAAE;IACjB,SAAS,EAAE,CAAC;IACZ,UAAU,EAAE,CAAC;IACb,SAAS,EAAE,EAAE;CACL,CAAC;AAEX,MAAM,UAAU,wBAAwB,CAAC,KAA2C;IAClF,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,MAAM,IAAI,SAAS,CAAC,0CAA0C,CAAC,CAAC;IACnF,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;YAAE,MAAM,IAAI,SAAS,CAAC,6DAA6D,CAAC,CAAC;QAClJ,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnB,CAAC;AACH,CAAC;AAKD,MAAM,UAAU,wBAAwB,CAAC,IAA8B,EAAE,KAAwC,EAAE,EAAU;IAC3H,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IACjC,MAAM,IAAI,GAAG,CAAC,KAAK,IAAI,EAAE,CAAsB,CAAC;IAChD,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,CAAC;AAChF,CAAC","sourcesContent":["import { radius, spacing } from \"./foundations.js\";\n\n/**\n * Picking by picture (avatar faces, photos). 2026-10-16 composition review: products imitated this with\n * rows of selected ghost Buttons because HJM had no image-choice control.\n */\nexport type ImageChoiceSelectionMode = \"single\" | \"multiple\";\nexport type ImageChoiceItemDescriptor = Readonly<{ id: string; label: string; disabled?: boolean }>;\n\nexport const imageChoiceRecipe = {\n tileSize: 72,\n gap: spacing.xs,\n radius: radius.md,\n ringWidth: 2,\n ringOffset: 2,\n checkSize: 20,\n} as const;\n\nexport function validateImageChoiceItems(items: readonly ImageChoiceItemDescriptor[]): void {\n if (!items.length) throw new TypeError(\"ImageChoiceGroup needs at least one item\");\n const ids = new Set<string>();\n for (const item of items) {\n if (!item.id.trim() || ids.has(item.id) || !item.label.trim()) throw new TypeError(\"ImageChoiceGroup items need unique ids and localized labels\");\n ids.add(item.id);\n }\n}\n\n/** Single mode keeps exactly the pressed id (radio semantics); multiple toggles membership in order. */\nexport function resolveImageChoiceToggle(mode: \"single\", value: string | null, id: string): string;\nexport function resolveImageChoiceToggle(mode: \"multiple\", value: readonly string[], id: string): string[];\nexport function resolveImageChoiceToggle(mode: ImageChoiceSelectionMode, value: string | null | readonly string[], id: string): string | string[] {\n if (mode === \"single\") return id;\n const list = (value ?? []) as readonly string[];\n return list.includes(id) ? list.filter(entry => entry !== id) : [...list, id];\n}\n"]}
1
+ {"version":3,"file":"image-choice.js","sourceRoot":"","sources":["../src/image-choice.ts"],"names":[],"mappings":"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","sourcesContent":["import { radius, spacing } from \"./foundations.js\";\n\n/**\n * Picking by picture (avatar faces, photos). 2026-10-16 composition review: products imitated this with\n * rows of selected ghost Buttons because HJM had no image-choice control.\n */\nexport type ImageChoiceSelectionMode = \"single\" | \"multiple\";\nexport type ImageChoiceItemDescriptor = Readonly<{\n id: string;\n label: string;\n /**\n * Localized secondary line under the tile (a status such as \"sent\", a one-line summary). Always visible when given\n * and read as the tile's description, so it must not repeat `label`.\n */\n description?: string;\n disabled?: boolean;\n}>;\n/** Lines the visible item label may wrap to before it is ellipsized (`showItemLabels`). */\nexport type ImageChoiceItemLabelLines = 1 | 2;\n\nexport const imageChoiceRecipe = {\n tileSize: 72,\n gap: spacing.xs,\n radius: radius.md,\n ringWidth: 2,\n ringOffset: 2,\n checkSize: 20,\n /**\n * Visible per-tile caption (`showItemLabels`, 2026-10-18 BurnTok share recipients): people are recognised by name,\n * not only by face. One line, ellipsized, as wide as the tile so the wrap grid stays even.\n */\n itemLabelGap: spacing.xxs,\n itemLabelVariant: \"caption\",\n itemLabelLines: 1,\n /**\n * 2026-10-18 BurnTok creation starters: multi-word titles were cut at one 80-wide line. Two lines keep a short\n * title whole (word-keeping wrap) while the grid stays even; longer copy belongs in a list row, not a tile.\n */\n itemLabelMaxLines: 2,\n /**\n * One muted caption line under the label for a per-item status (2026-10-18 BurnTok share: \"sent\" was appended to\n * the name and hidden by the ellipsis on long nicknames).\n */\n itemDescriptionVariant: \"caption\",\n itemDescriptionTone: \"muted\",\n itemDescriptionLines: 1,\n /**\n * Web `virtualized` viewport inset: the tile focus outline (2) plus its offset (2) would otherwise be clipped by the\n * scrolling viewport at the first row and the edges.\n */\n virtualViewportInset: 4,\n} as const;\n\nexport function validateImageChoiceItemLabelLines(lines: number): asserts lines is ImageChoiceItemLabelLines {\n if (!Number.isInteger(lines) || lines < 1 || lines > imageChoiceRecipe.itemLabelMaxLines) throw new RangeError(\"ImageChoiceGroup itemLabelLines must be 1 or 2\");\n}\n\n/** Square ring frame around the picture, which is also the tile width. */\nexport function resolveImageChoiceOuterSize(): number {\n return imageChoiceRecipe.tileSize + (imageChoiceRecipe.ringWidth + imageChoiceRecipe.ringOffset) * 2;\n}\n\n/**\n * Caption lines every tile of a group reserves: label lines when labels show, plus the description line when any\n * item has one. Reserving the same block in every tile keeps wrapped rows even and gives virtualized rows one height.\n */\nexport function resolveImageChoiceCaptionLines(options: Readonly<{ showItemLabels: boolean; itemLabelLines: ImageChoiceItemLabelLines; hasDescription: boolean }>): number {\n return (options.showItemLabels ? options.itemLabelLines : 0) + (options.hasDescription ? imageChoiceRecipe.itemDescriptionLines : 0);\n}\n\n/** Tile height for a caption block of `captionLines` lines at the rendered caption line height (token × text scale). */\nexport function resolveImageChoiceTileHeight(captionLines: number, captionLineHeight: number): number {\n if (!Number.isInteger(captionLines) || captionLines < 0 || !Number.isFinite(captionLineHeight) || captionLineHeight <= 0) throw new TypeError(\"Invalid ImageChoiceGroup caption metrics\");\n const outer = resolveImageChoiceOuterSize();\n return captionLines === 0 ? outer : outer + imageChoiceRecipe.itemLabelGap + captionLines * captionLineHeight;\n}\n\n/** Tiles per row in a slot `width` wide: as many fixed-size tiles as fit with the recipe gap, at least one. */\nexport function resolveImageChoiceColumns(width: number): number {\n if (!Number.isFinite(width) || width < 0) throw new TypeError(\"Invalid ImageChoiceGroup width\");\n const outer = resolveImageChoiceOuterSize();\n return Math.max(1, Math.floor((width + imageChoiceRecipe.gap) / (outer + imageChoiceRecipe.gap)));\n}\n\nexport function validateImageChoiceItems(items: readonly ImageChoiceItemDescriptor[]): void {\n if (!items.length) throw new TypeError(\"ImageChoiceGroup needs at least one item\");\n const ids = new Set<string>();\n for (const item of items) {\n if (!item.id.trim() || ids.has(item.id) || !item.label.trim()) throw new TypeError(\"ImageChoiceGroup items need unique ids and localized labels\");\n // Omit the key for no description; a blank string would reserve and announce an empty line.\n if (item.description !== undefined && !item.description.trim()) throw new TypeError(\"ImageChoiceGroup item description must not be blank\");\n ids.add(item.id);\n }\n}\n\n/** Single mode keeps exactly the pressed id (radio semantics); multiple toggles membership in order. */\nexport function resolveImageChoiceToggle(mode: \"single\", value: string | null, id: string): string;\nexport function resolveImageChoiceToggle(mode: \"multiple\", value: readonly string[], id: string): string[];\nexport function resolveImageChoiceToggle(mode: ImageChoiceSelectionMode, value: string | null | readonly string[], id: string): string | string[] {\n if (mode === \"single\") return id;\n const list = (value ?? []) as readonly string[];\n return list.includes(id) ? list.filter(entry => entry !== id) : [...list, id];\n}\n"]}
package/dist/index.d.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  export { aspectRatioDefaults, aspectRatioRecipe, resolveAspectRatioDescriptor, validateAspectRatioValue, type AspectRatioDescriptor, type AspectRatioPreset, type AspectRatioValue, type ResolvedAspectRatioDescriptor, } from "./aspect-ratio.js";
2
2
  export { containerDefaults, containerRecipe, resolveContainerDescriptor, validateContainerDescriptor, type ContainerDescriptor, type ContainerGutter, type ContainerSize, type ResolvedContainerDescriptor, } from "./container.js";
3
3
  export { visuallyHiddenRecipe, type VisuallyHiddenContract, } from "./visually-hidden.js";
4
- export { getIconDirectionality, getIconTransform, resolveIconDescriptor, semanticIconNames, validateIconDescriptor, type DecorativeIconDescriptor, type IconDescriptor, type IconDirection, type IconDirectionality, type IconTransform, type InformativeIconDescriptor, type ResolvedIconDescriptor, type SemanticIconName, } from "./icon.js";
4
+ export { getIconDirectionality, getIconTransform, isSemanticIconName, resolveIconDescriptor, semanticIconNames, semanticIconPaths, validateIconDescriptor, type DecorativeIconDescriptor, type IconDescriptor, type IconDirection, type IconDirectionality, type IconTransform, type InformativeIconDescriptor, type ResolvedIconDescriptor, type SemanticIconName, } from "./icon.js";
5
5
  export { resolveLinkDescriptor, validateLinkDescriptor, validateLinkDestination, type ExternalLinkDestination, type InternalLinkDestination, type LinkDescriptor, type LinkDestination, type LinkIconDescriptor, type ResolvedLinkDescriptor, type ResolvedLinkIconDescriptor, } from "./link.js";
6
- export { bottomNavigationBehaviorDefaults, resolveBottomNavigationActivation, resolveBottomNavigationConfiguration, resolveBottomNavigationDescriptor, resolveBottomNavigationItem, validateBottomNavigationConfiguration, validateBottomNavigationDescriptor, type BottomNavigationActivation, type BottomNavigationConfiguration, type BottomNavigationCounterBadge, type BottomNavigationDescriptor, type BottomNavigationDirection, type BottomNavigationIconDescriptor, type BottomNavigationItemDescriptor, type BottomNavigationKeyboardBehavior, type BottomNavigationLabels, type BottomNavigationSurface, type ResolvedBottomNavigationCounterBadge, type ResolvedBottomNavigationConfiguration, type ResolvedBottomNavigationDescriptor, type ResolvedBottomNavigationIconDescriptor, type ResolvedBottomNavigationItemDescriptor, } from "./bottom-navigation.js";
6
+ export { bottomNavigationBehaviorDefaults, resolveBottomNavigationActivation, resolveBottomNavigationConfiguration, resolveBottomNavigationDescriptor, resolveBottomNavigationItem, validateBottomNavigationConfiguration, validateBottomNavigationDescriptor, validateBottomNavigationProminence, type BottomNavigationActivation, type BottomNavigationConfiguration, type BottomNavigationCounterBadge, type BottomNavigationDescriptor, type BottomNavigationDirection, type BottomNavigationIconDescriptor, type BottomNavigationItemDescriptor, type BottomNavigationKeyboardBehavior, type BottomNavigationLabels, type BottomNavigationSurface, type BottomNavigationIconSize, type ResolvedBottomNavigationCounterBadge, type ResolvedBottomNavigationConfiguration, type ResolvedBottomNavigationDescriptor, type ResolvedBottomNavigationIconDescriptor, type ResolvedBottomNavigationItemDescriptor, } from "./bottom-navigation.js";
7
7
  export { resolveTooltipDescriptor, tooltipBehaviorDefaults, tooltipDescriptorDefaults, validateTooltipDescriptor, validateTooltipOpenState, type ControlledTooltipOpenState, type ResolvedTooltipDescriptor, type TooltipAlign, type TooltipDescriptor, type TooltipOpenChangeDetails, type TooltipOpenChangeReason, type TooltipOpenState, type TooltipPlacement, type UncontrolledTooltipOpenState, } from "./tooltip.js";
8
8
  export { alertDialogBehaviorDefaults, canDismissAlertDialog, createAlertDialogSession, getAlertDialogInitialFocus, validateAlertDialogRequest, type AlertDialogAsyncState, type AlertDialogCancelReason, type AlertDialogConfirmAction, type AlertDialogDismissReason, type AlertDialogInitialFocus, type AlertDialogMode, type AlertDialogOpenChangeReason, type AlertDialogOpenState, type AlertDialogPhase, type AlertDialogRequest, type AlertDialogResult, type AlertDialogSession, } from "./alert-dialog.js";
9
9
  export { canDismissSheet, createSheetLifecycle, sheetBehaviorDefaults, type SheetDismissPolicy, type SheetDismissReason, type SheetLifecycle, type SheetOpenChangeDetails, type SheetOpenState, } from "./sheet.js";
@@ -15,7 +15,7 @@ export { ACCENTS, THEMES, accentFill, accentTint, brandGradient, isThemePreferen
15
15
  export { backdrop, breakpoint, control, easing, fontFamily, fontWeight, glyph, heading, layer, layout, letterSpacing, motion, motionPreset, numeric, opacity, overlay, radius, scrim, shadow, spacing, spring, stateLayer, stroke, typography, type BackdropReference, type FontFamily, type FontWeight, type FontWeightValue, type GlyphSize, type HeadingLevel, type LetterSpacing, type NumericVariant, type ReducedMotionBehavior, type TextVariant, } from "./foundations.js";
16
16
  export { resolveResponsiveValue, resolveWindowClass, validateResponsiveValue, windowClassOrder, type ResponsiveValue, type WindowClass, } from "./responsive.js";
17
17
  export { gridDefaults, gridGaps, gridRecipe, resolveGridLayout, validateGridDescriptor, type GridDescriptor, type GridGap, type GridGapToken, type ResolveGridLayoutOptions, type ResolvedGridLayout, } from "./grid.js";
18
- export { accordionRecipe, alertDialogRecipe, avatarRecipe, badgeRecipe, bottomNavigationRecipe, bottomCtaRecipe, buttonRecipe, cardRecipe, chipRecipe, comboboxRecipe, counterBadgeRecipe, dialogRecipe, dividerRecipe, emptyStateRecipe, fieldRecipe, formatCounterBadgeCount, iconButtonRecipe, iconRecipe, linkRecipe, listRecipe, listRowRecipe, loadMoreRecipe, menuRecipe, noticeRecipe, progressRecipe, searchFieldRecipe, selectRecipe, selectionGroupRecipe, sectionRecipe, segmentedControlRecipe, selectionControlRecipe, sheetRecipe, skeletonRecipe, spinnerRecipe, surfaceDefaults, surfaceGeometry, stackRecipe, statisticRecipe, surfaceRecipe, switchRecipe, tabsRecipe, textRecipe, resolveTextDefaultWeight, toastRecipe, tooltipRecipe, topBarRecipe, type AccordionDensity, type AlertDialogTone, type AvatarShape, type AvatarSize, type BadgeSize, type BadgeTone, type BadgeVariant, type BottomNavigationDensity, type BottomNavigationDistribution, type BottomNavigationPresentation, type ButtonSize, type ButtonTone, type CardHeadingLevel, type ChipSize, type SelectDensity, type SelectSize, type CounterBadgeSize, type CounterBadgeTone, type CounterBadgeVariant, type DialogSize, type FieldShape, type FieldVariant, type IconButtonShape, type IconButtonSize, type IconTone, type IconWeight, type LinkTone, type LinkVariant, type LoadMoreDensity, type ListRowDensity, type MenuDensity, type MenuItemTone, type NoticeTone, type ProgressSize, type ProgressTone, type SearchFieldSize, type SegmentedControlSize, type SelectionControlKind, type SelectionControlPresentation, type SelectionControlSize, type SelectionGroupOrientation, type SelectionGroupPresentation, type SpinnerSize, type SpinnerTone, type StackAlign, type StackAxis, type StackGap, type StackJustify, type StatisticDensity, type StatisticPresentation, type SurfaceTone, type SurfacePadding, type SurfaceRadius, type SwitchSize, type TabSize, type TabsLayout, type TabsOverflow, type TextEmphasis, type TextTone, type ToastPlacement, type ToastTone, type ToastToneMark, } from "./recipes.js";
18
+ export { accordionRecipe, alertDialogRecipe, avatarRecipe, badgeRecipe, bottomNavigationRecipe, bottomCtaRecipe, buttonRecipe, cardRecipe, chipRecipe, comboboxRecipe, counterBadgeRecipe, dialogRecipe, dividerRecipe, emptyStateRecipe, fieldRecipe, formatCounterBadgeCount, iconButtonRecipe, iconRecipe, linkRecipe, listRecipe, listRowRecipe, loadMoreRecipe, menuRecipe, noticeRecipe, progressRecipe, searchFieldRecipe, selectRecipe, selectionGroupRecipe, sectionRecipe, segmentedControlRecipe, selectionControlRecipe, sheetRecipe, skeletonRecipe, spinnerRecipe, surfaceDefaults, surfaceGeometry, stackRecipe, statisticRecipe, surfaceRecipe, switchRecipe, tabsRecipe, textRecipe, resolveTextDefaultWeight, toastRecipe, tooltipRecipe, topBarRecipe, type AccordionDensity, type AlertDialogTone, type AvatarShape, type AvatarSize, type BadgeSize, type BadgeTone, type BadgeVariant, type BottomNavigationDensity, type BottomNavigationDistribution, type BottomNavigationPresentation, type ButtonSize, type ButtonTone, type CardHeadingLevel, type ChipSize, type SelectDensity, type SelectSize, type CounterBadgeSize, type CounterBadgeTone, type CounterBadgeVariant, type DialogSize, type FieldShape, type FieldVariant, type IconButtonShape, type IconButtonSize, type IconTone, type IconWeight, type LinkTone, type LinkVariant, type LoadMoreDensity, type ListRowDensity, type MenuDensity, type MenuItemTone, type NoticeTone, type ProgressSize, type ProgressTone, type SearchFieldSize, type SegmentedControlSize, type SelectionControlKind, type SelectionControlPresentation, type SelectionControlSize, type SelectionGroupOrientation, type SelectionGroupPresentation, type SpinnerSize, type SpinnerTone, type StackAlign, type StackAxis, type StackGap, type StackJustify, type StatisticDensity, type StatisticPresentation, type SurfaceTone, type SurfacePadding, type SurfaceRadius, type SwitchSize, type TabSize, type TabsLayout, type TabsOverflow, type TabsIndicator, type TextEmphasis, type TextTone, type ToastPlacement, type ToastTone, type ToastToneMark, } from "./recipes.js";
19
19
  export { accentColor, resolveColorReference, solidAccentColor, themeColor, type AccentColorReference, type AccentFillReference, type ColorReference, type ColorReferencePalette, type ThemeColorReference, } from "./color-references.js";
20
20
  export { componentCatalog, componentIdOf, getComponentSurfaceStatus, recipeRegistry, summarizeComponentRoadmap, type ComponentCatalogEntry, type ComponentCategory, type ComponentName, type ComponentPlatform, type ComponentRoadmap, type ComponentRoadmapState, type ComponentSurface, type ComponentSurfaceMaturity, type ComponentSurfaceStatus, type ComponentStatus, type RecipeName, } from "./catalog.js";
21
21
  export { designSystemVersion } from "./version.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,9 +1,9 @@
1
1
  export { aspectRatioDefaults, aspectRatioRecipe, resolveAspectRatioDescriptor, validateAspectRatioValue, } from "./aspect-ratio.js";
2
2
  export { containerDefaults, containerRecipe, resolveContainerDescriptor, validateContainerDescriptor, } from "./container.js";
3
3
  export { visuallyHiddenRecipe, } from "./visually-hidden.js";
4
- export { getIconDirectionality, getIconTransform, resolveIconDescriptor, semanticIconNames, validateIconDescriptor, } from "./icon.js";
4
+ export { getIconDirectionality, getIconTransform, isSemanticIconName, resolveIconDescriptor, semanticIconNames, semanticIconPaths, validateIconDescriptor, } from "./icon.js";
5
5
  export { resolveLinkDescriptor, validateLinkDescriptor, validateLinkDestination, } from "./link.js";
6
- export { bottomNavigationBehaviorDefaults, resolveBottomNavigationActivation, resolveBottomNavigationConfiguration, resolveBottomNavigationDescriptor, resolveBottomNavigationItem, validateBottomNavigationConfiguration, validateBottomNavigationDescriptor, } from "./bottom-navigation.js";
6
+ export { bottomNavigationBehaviorDefaults, resolveBottomNavigationActivation, resolveBottomNavigationConfiguration, resolveBottomNavigationDescriptor, resolveBottomNavigationItem, validateBottomNavigationConfiguration, validateBottomNavigationDescriptor, validateBottomNavigationProminence, } from "./bottom-navigation.js";
7
7
  export { resolveTooltipDescriptor, tooltipBehaviorDefaults, tooltipDescriptorDefaults, validateTooltipDescriptor, validateTooltipOpenState, } from "./tooltip.js";
8
8
  export { alertDialogBehaviorDefaults, canDismissAlertDialog, createAlertDialogSession, getAlertDialogInitialFocus, validateAlertDialogRequest, } from "./alert-dialog.js";
9
9
  export { canDismissSheet, createSheetLifecycle, sheetBehaviorDefaults, } from "./sheet.js";