@astryxdesign/core 0.5.0-canary.fb17bfe → 0.5.0-canary.fbd838e

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 (221) hide show
  1. package/dist/Badge/Badge.d.ts.map +1 -1
  2. package/dist/Badge/Badge.js +26 -2
  3. package/dist/Banner/Banner.d.ts +10 -1
  4. package/dist/Banner/Banner.d.ts.map +1 -1
  5. package/dist/Banner/Banner.js +11 -2
  6. package/dist/Calendar/Calendar.d.ts +4 -2
  7. package/dist/Calendar/Calendar.d.ts.map +1 -1
  8. package/dist/Calendar/Calendar.js +7 -8
  9. package/dist/ComplexSelector/ComplexSelector.d.ts +10 -2
  10. package/dist/ComplexSelector/ComplexSelector.d.ts.map +1 -1
  11. package/dist/ComplexSelector/ComplexSelector.js +12 -5
  12. package/dist/DateRangeInput/DateRangeInput.d.ts +4 -2
  13. package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
  14. package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
  15. package/dist/DropdownMenu/DropdownMenu.js +4 -13
  16. package/dist/Field/InputClearButton.d.ts +9 -3
  17. package/dist/Field/InputClearButton.d.ts.map +1 -1
  18. package/dist/Field/InputClearButton.js +14 -3
  19. package/dist/Heading/Heading.d.ts.map +1 -1
  20. package/dist/Heading/Heading.js +0 -1
  21. package/dist/Icon/Icon.d.ts +4 -2
  22. package/dist/Icon/Icon.d.ts.map +1 -1
  23. package/dist/Icon/defaultIcons.d.ts +3 -2
  24. package/dist/Icon/defaultIcons.d.ts.map +1 -1
  25. package/dist/Icon/defaultIcons.js +7 -0
  26. package/dist/Icon/globalIconRegistry.d.ts +13 -0
  27. package/dist/Icon/globalIconRegistry.d.ts.map +1 -1
  28. package/dist/Icon/globalIconRegistry.js +34 -6
  29. package/dist/Icon/index.d.ts +1 -1
  30. package/dist/Icon/index.d.ts.map +1 -1
  31. package/dist/Icon/useIcon.d.ts +5 -2
  32. package/dist/Icon/useIcon.d.ts.map +1 -1
  33. package/dist/Icon/useIcon.js +3 -0
  34. package/dist/Layer/gestureCounter.d.ts +8 -0
  35. package/dist/Layer/gestureCounter.d.ts.map +1 -0
  36. package/dist/Layer/gestureCounter.js +53 -0
  37. package/dist/Layer/useLayer.d.ts +23 -13
  38. package/dist/Layer/useLayer.d.ts.map +1 -1
  39. package/dist/Layer/useLayer.js +128 -8
  40. package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
  41. package/dist/MultiSelector/MultiSelector.js +10 -4
  42. package/dist/MultiSelector/hooks.d.ts +7 -1
  43. package/dist/MultiSelector/hooks.d.ts.map +1 -1
  44. package/dist/MultiSelector/hooks.js +3 -2
  45. package/dist/NumberInput/NumberInput.d.ts.map +1 -1
  46. package/dist/NumberInput/NumberInput.js +9 -6
  47. package/dist/OverflowList/OverflowList.d.ts +41 -1
  48. package/dist/OverflowList/OverflowList.d.ts.map +1 -1
  49. package/dist/OverflowList/OverflowList.js +43 -2
  50. package/dist/Popover/Popover.d.ts.map +1 -1
  51. package/dist/Popover/Popover.js +8 -14
  52. package/dist/Popover/usePopover.d.ts +15 -41
  53. package/dist/Popover/usePopover.d.ts.map +1 -1
  54. package/dist/Popover/usePopover.js +26 -7
  55. package/dist/Resizable/useResizable.d.ts +19 -1
  56. package/dist/Resizable/useResizable.d.ts.map +1 -1
  57. package/dist/Resizable/useResizable.js +101 -37
  58. package/dist/Selector/Selector.d.ts +1 -1
  59. package/dist/Selector/Selector.d.ts.map +1 -1
  60. package/dist/Selector/Selector.js +14 -5
  61. package/dist/Selector/hooks.d.ts +7 -1
  62. package/dist/Selector/hooks.d.ts.map +1 -1
  63. package/dist/Selector/hooks.js +3 -2
  64. package/dist/SideNav/SideNav.d.ts +6 -1
  65. package/dist/SideNav/SideNav.d.ts.map +1 -1
  66. package/dist/SideNav/SideNav.js +57 -27
  67. package/dist/Spinner/Spinner.d.ts +3 -1
  68. package/dist/Spinner/Spinner.d.ts.map +1 -1
  69. package/dist/Spinner/Spinner.js +199 -20
  70. package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts +26 -0
  71. package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts.map +1 -1
  72. package/dist/Table/plugins/groupedRows/useTableGroupedRows.js +34 -3
  73. package/dist/Table/plugins/selection/useTableSelection.d.ts.map +1 -1
  74. package/dist/Table/plugins/selection/useTableSelection.js +25 -1
  75. package/dist/Text/Text.d.ts.map +1 -1
  76. package/dist/Text/Text.js +0 -1
  77. package/dist/TextArea/TextArea.d.ts.map +1 -1
  78. package/dist/TextArea/TextArea.js +7 -7
  79. package/dist/Toast/Toast.d.ts.map +1 -1
  80. package/dist/Toast/Toast.js +22 -7
  81. package/dist/Toast/ToastViewport.d.ts +1 -0
  82. package/dist/Toast/ToastViewport.d.ts.map +1 -1
  83. package/dist/Toast/ToastViewport.js +47 -13
  84. package/dist/Tokenizer/Tokenizer.d.ts +12 -1
  85. package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
  86. package/dist/Tokenizer/Tokenizer.js +31 -21
  87. package/dist/Typeahead/BaseTypeahead.d.ts +33 -0
  88. package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
  89. package/dist/Typeahead/BaseTypeahead.js +51 -8
  90. package/dist/Typeahead/Typeahead.d.ts +8 -1
  91. package/dist/Typeahead/Typeahead.d.ts.map +1 -1
  92. package/dist/Typeahead/Typeahead.js +2 -0
  93. package/dist/astryx.css +37 -9
  94. package/dist/hooks/useOverflow.d.ts.map +1 -1
  95. package/dist/hooks/useOverflow.js +14 -4
  96. package/dist/theme/defineTheme.d.ts +9 -3
  97. package/dist/theme/defineTheme.d.ts.map +1 -1
  98. package/dist/theme/defineTheme.js +5 -0
  99. package/locales/af-ZA.json +6 -6
  100. package/locales/ar-SA.json +6 -6
  101. package/locales/ca-ES.json +5 -5
  102. package/locales/cs-CZ.json +6 -6
  103. package/locales/da-DK.json +6 -6
  104. package/locales/de-DE.json +6 -6
  105. package/locales/el-GR.json +6 -6
  106. package/locales/en.json +5 -1
  107. package/locales/es-ES.json +5 -5
  108. package/locales/fi-FI.json +6 -6
  109. package/locales/fr-FR.json +6 -6
  110. package/locales/he-IL.json +6 -6
  111. package/locales/hu-HU.json +6 -6
  112. package/locales/it-IT.json +6 -6
  113. package/locales/ja-JP.json +6 -6
  114. package/locales/ko-KR.json +6 -6
  115. package/locales/nl-NL.json +6 -6
  116. package/locales/no-NO.json +6 -6
  117. package/locales/pl-PL.json +6 -6
  118. package/locales/pseudo.json +3 -0
  119. package/locales/pt-BR.json +6 -6
  120. package/locales/pt-PT.json +6 -6
  121. package/locales/ro-RO.json +6 -6
  122. package/locales/ru-RU.json +6 -6
  123. package/locales/sr-SP.json +6 -6
  124. package/locales/sv-SE.json +6 -6
  125. package/locales/tr-TR.json +6 -6
  126. package/locales/uk-UA.json +6 -6
  127. package/locales/vi-VN.json +6 -6
  128. package/locales/zh-CN.json +6 -6
  129. package/locales/zh-TW.json +6 -6
  130. package/package.json +2 -2
  131. package/src/Badge/Badge.doc.mjs +3 -2
  132. package/src/Badge/Badge.test.tsx +32 -3
  133. package/src/Badge/Badge.tsx +42 -1
  134. package/src/Banner/Banner.doc.mjs +9 -0
  135. package/src/Banner/Banner.test.tsx +76 -11
  136. package/src/Banner/Banner.tsx +21 -2
  137. package/src/Calendar/Calendar.doc.mjs +3 -3
  138. package/src/Calendar/Calendar.test.tsx +40 -0
  139. package/src/Calendar/Calendar.tsx +11 -10
  140. package/src/ComplexSelector/ComplexSelector.doc.mjs +7 -0
  141. package/src/ComplexSelector/ComplexSelector.test.tsx +183 -0
  142. package/src/ComplexSelector/ComplexSelector.tsx +20 -5
  143. package/src/DateRangeInput/DateRangeInput.doc.mjs +2 -2
  144. package/src/DateRangeInput/DateRangeInput.test.tsx +22 -0
  145. package/src/DateRangeInput/DateRangeInput.tsx +4 -2
  146. package/src/DropdownMenu/DropdownMenu.test.tsx +44 -10
  147. package/src/DropdownMenu/DropdownMenu.tsx +4 -13
  148. package/src/Field/InputClearButton.test.tsx +15 -1
  149. package/src/Field/InputClearButton.tsx +28 -4
  150. package/src/Heading/Heading.tsx +0 -1
  151. package/src/Icon/Icon.test.tsx +55 -1
  152. package/src/Icon/Icon.tsx +5 -3
  153. package/src/Icon/defaultIcons.tsx +11 -2
  154. package/src/Icon/globalIconRegistry.test.tsx +16 -3
  155. package/src/Icon/globalIconRegistry.tsx +37 -6
  156. package/src/Icon/index.ts +1 -0
  157. package/src/Icon/useIcon.ts +9 -2
  158. package/src/Layer/gestureCounter.ts +57 -0
  159. package/src/Layer/useLayer.test.tsx +262 -1
  160. package/src/Layer/useLayer.tsx +164 -8
  161. package/src/Layout/__tests__/edgeCompensation.test.tsx +1 -1
  162. package/src/MultiSelector/MultiSelector.test.tsx +34 -0
  163. package/src/MultiSelector/MultiSelector.tsx +9 -4
  164. package/src/MultiSelector/hooks.ts +9 -2
  165. package/src/NumberInput/NumberInput.test.tsx +128 -1
  166. package/src/NumberInput/NumberInput.tsx +12 -10
  167. package/src/OverflowList/OverflowList.doc.mjs +102 -21
  168. package/src/OverflowList/OverflowList.test.tsx +550 -4
  169. package/src/OverflowList/OverflowList.tsx +100 -2
  170. package/src/Popover/Popover.doc.mjs +2 -2
  171. package/src/Popover/Popover.test.tsx +38 -0
  172. package/src/Popover/Popover.tsx +28 -66
  173. package/src/Popover/usePopover.tsx +44 -5
  174. package/src/Resizable/Resizable.doc.mjs +2 -2
  175. package/src/Resizable/useResizable.doc.mjs +21 -2
  176. package/src/Resizable/useResizable.test.ts +402 -0
  177. package/src/Resizable/useResizable.ts +130 -47
  178. package/src/Selector/Selector.source-build.test.mjs +65 -0
  179. package/src/Selector/Selector.test.tsx +35 -0
  180. package/src/Selector/Selector.tsx +15 -10
  181. package/src/Selector/hooks.ts +17 -2
  182. package/src/SideNav/SideNav.doc.mjs +2 -2
  183. package/src/SideNav/SideNav.test.tsx +364 -1
  184. package/src/SideNav/SideNav.tsx +109 -38
  185. package/src/Spinner/Spinner.doc.mjs +17 -5
  186. package/src/Spinner/Spinner.test.tsx +164 -0
  187. package/src/Spinner/Spinner.tsx +252 -22
  188. package/src/Table/Table.doc.mjs +2 -2
  189. package/src/Table/TableFooter.doc.mjs +1 -1
  190. package/src/Table/plugins/groupedRows/useTableGroupedRows.tsx +50 -4
  191. package/src/Table/plugins/selection/useTableSelection.test.tsx +62 -0
  192. package/src/Table/plugins/selection/useTableSelection.tsx +25 -2
  193. package/src/Table/useTableGroupedRows.doc.mjs +3 -3
  194. package/src/Table/useTableSelection.doc.mjs +1 -1
  195. package/src/Text/Text.test.tsx +44 -0
  196. package/src/Text/Text.tsx +0 -1
  197. package/src/TextArea/TextArea.doc.mjs +4 -0
  198. package/src/TextArea/TextArea.tsx +22 -16
  199. package/src/Toast/Toast.doc.mjs +20 -12
  200. package/src/Toast/Toast.tsx +28 -4
  201. package/src/Toast/ToastViewport.test.tsx +536 -8
  202. package/src/Toast/ToastViewport.tsx +72 -19
  203. package/src/Tokenizer/Tokenizer.doc.mjs +16 -3
  204. package/src/Tokenizer/Tokenizer.test.tsx +161 -0
  205. package/src/Tokenizer/Tokenizer.tsx +49 -24
  206. package/src/Typeahead/BaseTypeahead.doc.mjs +13 -0
  207. package/src/Typeahead/BaseTypeahead.tsx +96 -6
  208. package/src/Typeahead/Typeahead.doc.mjs +6 -0
  209. package/src/Typeahead/Typeahead.test.tsx +154 -0
  210. package/src/Typeahead/Typeahead.tsx +9 -0
  211. package/src/hooks/useAnnounce.doc.mjs +96 -0
  212. package/src/hooks/useDevWarning.doc.mjs +96 -0
  213. package/src/hooks/useIndicatorFocusRing.doc.mjs +104 -0
  214. package/src/hooks/useInputStatusIcon.doc.mjs +142 -0
  215. package/src/hooks/useInteractiveRole.doc.mjs +119 -0
  216. package/src/hooks/useLongPress.doc.mjs +123 -0
  217. package/src/hooks/useOverflow.doc.mjs +58 -17
  218. package/src/hooks/useOverflow.ts +16 -4
  219. package/src/hooks/useTypeahead.doc.mjs +153 -0
  220. package/src/theme/defineTheme.ts +12 -3
  221. package/src/theme/derivedVarRegistry.test.ts +60 -0
@@ -1 +1 @@
1
- {"version":3,"file":"Badge.d.ts","sourceRoot":"","sources":["../../src/Badge/Badge.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AACrC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAW5C,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,SAAS,CAAC;AAwF7C;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC;AAEjD,MAAM,WAAW,UAAW,SAAQ,SAAS,CAAC,eAAe,CAAC;IAC5D,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACjC;;;OAGG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB;;OAEG;IACH,KAAK,EAAE,SAAS,CAAC;IAEjB;;OAEG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,KAAK,CAAC,EACpB,OAAmB,EACnB,KAAK,EACL,IAAI,EACJ,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,KAAK,EACT,EAAE,UAAU,+BAeZ;yBAxBe,KAAK"}
1
+ {"version":3,"file":"Badge.d.ts","sourceRoot":"","sources":["../../src/Badge/Badge.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AACrC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAW5C,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,SAAS,CAAC;AA0G7C;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC;AAEjD,MAAM,WAAW,UAAW,SAAQ,SAAS,CAAC,eAAe,CAAC;IAC5D,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACjC;;;OAGG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB;;OAEG;IACH,KAAK,EAAE,SAAS,CAAC;IAEjB;;OAEG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,KAAK,CAAC,EACpB,OAAmB,EACnB,KAAK,EACL,IAAI,EACJ,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,KAAK,EACT,EAAE,UAAU,+BAsCZ;yBA/Ce,KAAK"}
@@ -19,7 +19,7 @@ import "../theme/tokens.stylex.js";
19
19
  import { colorVars, spacingVars, radiusVars, fontWeightVars, typeScaleVars } from "../theme/tokens.stylex.js";
20
20
  import { mergeProps } from "../utils/index.js";
21
21
  import { themeProps } from "../utils/themeProps.js";
22
- import { jsxs as _jsxs } from "react/jsx-runtime";
22
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
23
23
  /**
24
24
  * Base badge styles
25
25
  */
@@ -38,6 +38,8 @@ const styles = {
38
38
  kLWn49: "x1ltkj2j",
39
39
  k63SB2: "x1e4wzip",
40
40
  khDVqt: "xuxw1ft",
41
+ ks0D6T: "x193iq5w",
42
+ k7Eaqz: "xeuugli",
41
43
  $$css: true
42
44
  }
43
45
  };
@@ -148,13 +150,35 @@ export function Badge({
148
150
  ref,
149
151
  ...props
150
152
  }) {
153
+ // Clipping a label makes its tail unrecoverable, so the full text has to
154
+ // stay reachable somewhere. `title` is the half of that answer which costs
155
+ // nothing: no measurement, no hook, so `Badge` renders the same on the
156
+ // server and stays usable in a server component. It follows the shape
157
+ // `BaseTable` already uses for a truncated header cell (BaseTable.tsx) —
158
+ // string content only, and only when there is something to show.
159
+ //
160
+ // A rich label is left alone: it is a subtree whose text would have to be
161
+ // flattened to a string, and flattening renders a guess — an icon, a
162
+ // `<strong>`, a nested element all read differently.
163
+ //
164
+ // It is set whether or not the label actually fits, because knowing that
165
+ // requires measuring. The refinement — a tooltip only when the text is
166
+ // really cut, reachable by hover and by focus — needs that measurement and
167
+ // a client component, so it is tracked in #5585.
168
+ const labelTitle = typeof label === 'number' ? String(label) : typeof label === 'string' && label.length > 0 ? label : undefined;
151
169
  return /*#__PURE__*/_jsxs("span", {
152
170
  ref: ref,
153
171
  ...mergeProps(themeProps('badge', {
154
172
  variant
155
173
  }), stylex.props(styles.base, variants[variant], xstyle), className, style),
174
+ title: labelTitle,
156
175
  ...props,
157
- children: [icon, label]
176
+ children: [icon, /*#__PURE__*/_jsx("span", {
177
+ ...{
178
+ className: "xb3r6kr xlyipyv xeuugli"
179
+ },
180
+ children: label
181
+ })]
158
182
  });
159
183
  }
160
184
  Badge.displayName = 'Badge';
@@ -86,6 +86,15 @@ export interface BannerProps extends BaseProps<HTMLDivElement> {
86
86
  * The banner will hide itself regardless of whether this callback is provided.
87
87
  */
88
88
  onDismiss?: () => void;
89
+ /**
90
+ * Accessible name and visible tooltip for the dismiss button, replacing the default.
91
+ * Pass an already-translated string.
92
+ *
93
+ * The default is "Dismiss {title}" when `title` is a string, so stacked
94
+ * banners are told apart by a screen reader; a non-string `title` falls back
95
+ * to "Dismiss" and should set this.
96
+ */
97
+ dismissLabel?: string;
89
98
  /**
90
99
  * Action button rendered in the header area (end-aligned).
91
100
  * Typically an Button with a secondary or ghost variant.
@@ -191,7 +200,7 @@ export interface BannerProps extends BaseProps<HTMLDivElement> {
191
200
  * </Banner>
192
201
  * ```
193
202
  */
194
- export declare function Banner({ status, title, description, icon, isDismissable, onDismiss, endContent, container, elevation, collapsible, children, xstyle, className, style, ref, onFocusCapture, onPointerDownCapture, ...rest }: BannerProps): import("react").JSX.Element | null;
203
+ export declare function Banner({ status, title, description, icon, isDismissable, onDismiss, dismissLabel, endContent, container, elevation, collapsible, children, xstyle, className, style, ref, onFocusCapture, onPointerDownCapture, ...rest }: BannerProps): import("react").JSX.Element | null;
195
204
  export declare namespace Banner {
196
205
  var displayName: string;
197
206
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Banner.d.ts","sourceRoot":"","sources":["../../src/Banner/Banner.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,OAAO,EAA0B,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAE9D,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAgB5C,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,+BAA+B,CAAC;AAErE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAI9C,OAAO,KAAK,EAAC,eAAe,EAAE,kBAAkB,EAAC,MAAM,SAAS,CAAC;AAMjE;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC;AAEjD;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,kBAAkB,CAAC;AAEvD,MAAM,WAAW,WAAY,SAAQ,SAAS,CAAC,cAAc,CAAC;IAC5D,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;OAEG;IACH,MAAM,EAAE,YAAY,CAAC;IACrB;;OAEG;IACH,KAAK,EAAE,SAAS,CAAC;IACjB;;OAEG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;;OAEG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB;;;;;;;;;;;OAWG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;;;;;;;;;;;;;;;;OAkBG;IACH,WAAW,CAAC,EAAE,OAAO,GAAG,iBAAiB,CAAC;IAC1C;;;;OAIG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAmND;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,wBAAgB,MAAM,CAAC,EACrB,MAAM,EACN,KAAK,EACL,WAAW,EACX,IAAI,EACJ,aAAqB,EACrB,SAAS,EACT,UAAU,EACV,SAAkB,EAClB,SAAkB,EAClB,WAAkB,EAClB,QAAQ,EACR,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,cAAc,EACd,oBAAoB,EACpB,GAAG,IAAI,EACR,EAAE,WAAW,sCAoOb;yBAvPe,MAAM"}
1
+ {"version":3,"file":"Banner.d.ts","sourceRoot":"","sources":["../../src/Banner/Banner.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,OAAO,EAA0B,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAE9D,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAgB5C,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,+BAA+B,CAAC;AAErE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAI9C,OAAO,KAAK,EAAC,eAAe,EAAE,kBAAkB,EAAC,MAAM,SAAS,CAAC;AAMjE;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC;AAEjD;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,kBAAkB,CAAC;AAEvD,MAAM,WAAW,WAAY,SAAQ,SAAS,CAAC,cAAc,CAAC;IAC5D,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;OAEG;IACH,MAAM,EAAE,YAAY,CAAC;IACrB;;OAEG;IACH,KAAK,EAAE,SAAS,CAAC;IACjB;;OAEG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;;OAEG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;;;;;;;OAWG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;;;;;;;;;;;;;;;;OAkBG;IACH,WAAW,CAAC,EAAE,OAAO,GAAG,iBAAiB,CAAC;IAC1C;;;;OAIG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAmND;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,wBAAgB,MAAM,CAAC,EACrB,MAAM,EACN,KAAK,EACL,WAAW,EACX,IAAI,EACJ,aAAqB,EACrB,SAAS,EACT,YAAY,EACZ,UAAU,EACV,SAAkB,EAClB,SAAkB,EAClB,WAAkB,EAClB,QAAQ,EACR,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,cAAc,EACd,oBAAoB,EACpB,GAAG,IAAI,EACR,EAAE,WAAW,sCA6Ob;yBAjQe,MAAM"}
@@ -279,6 +279,7 @@ export function Banner({
279
279
  icon,
280
280
  isDismissable = false,
281
281
  onDismiss,
282
+ dismissLabel,
282
283
  endContent,
283
284
  container = 'card',
284
285
  elevation = 'none',
@@ -328,6 +329,14 @@ export function Banner({
328
329
  const role = statusRole[status] ?? FALLBACK_ROLE;
329
330
  const iconColor = statusIconColor[status];
330
331
  const hasChildren = isRenderable(children);
332
+ // Keep the default tooltip concise while the accessible name identifies
333
+ // the banner; an explicit translated override names both surfaces.
334
+ const dismiss = t('@astryx.banner.dismiss');
335
+ const dismissTooltip = dismissLabel ?? dismiss;
336
+ const dismissName = dismissLabel ?? (typeof title === 'string' ? t('@astryx.banner.dismissTitled', {
337
+ dismiss,
338
+ title
339
+ }) : dismiss);
331
340
  if (isDismissed) {
332
341
  return null;
333
342
  }
@@ -445,8 +454,8 @@ export function Banner({
445
454
  }), isDismissable && /*#__PURE__*/_jsx(Button, {
446
455
  variant: "ghost",
447
456
  size: "sm",
448
- label: t('@astryx.banner.dismiss'),
449
- tooltip: t('@astryx.banner.dismiss'),
457
+ label: dismissName,
458
+ tooltip: dismissTooltip,
450
459
  icon: /*#__PURE__*/_jsx(Icon, {
451
460
  icon: "close",
452
461
  size: "sm",
@@ -35,8 +35,10 @@ interface CalendarBaseProps extends Omit<BaseProps<HTMLDivElement>, 'onChange' |
35
35
  * Range mode only. Minimum number of days a selected range must span,
36
36
  * counting both endpoints — `minRangeSpan={2}` forbids a single-day range.
37
37
  * Once a start date is picked, days closer than this to it are disabled —
38
- * except the start itself, which stays selectable as the active anchor.
39
- * Defaults to 1 (a same-day start and end is allowed).
38
+ * except the start itself, which stays selectable. Clicking the start again
39
+ * commits a one-day range when the minimum allows it; otherwise it cancels
40
+ * the in-progress selection so the start can be moved. Defaults to 1 (a
41
+ * same-day start and end is allowed).
40
42
  */
41
43
  minRangeSpan?: number;
42
44
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"Calendar.d.ts","sourceRoot":"","sources":["../../src/Calendar/Calendar.tsx"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAgD5C,YAAY,EACV,aAAa,EACb,SAAS,EACT,aAAa,EACb,SAAS,GACV,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EACT,aAAa,EACb,SAAS,EACV,MAAM,oBAAoB,CAAC;AAK5B,+CAA+C;AAE/C,MAAM,WAAW,cAAc;IAC7B,wEAAwE;IACxE,UAAU,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;CAC3C;AAID,UAAU,iBAAkB,SAAQ,IAAI,CACtC,SAAS,CAAC,cAAc,CAAC,EACzB,UAAU,GAAG,cAAc,CAC5B;IACC,kDAAkD;IAClD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,qDAAqD;IACrD,SAAS,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACtC,+CAA+C;IAC/C,cAAc,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAEvB,4CAA4C;IAC5C,GAAG,CAAC,EAAE,aAAa,CAAC;IAEpB,4CAA4C;IAC5C,GAAG,CAAC,EAAE,aAAa,CAAC;IAEpB;;;OAGG;IACH,eAAe,CAAC,EAAE,aAAa,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC;IAEzD;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,aAAa,CAAC;IAE1B,yDAAyD;IACzD,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,aAAa,KAAK,IAAI,CAAC;IAEvD;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;;OAIG;IACH,YAAY,CAAC,EAAE,SAAS,GAAG,aAAa,CAAC;CAC1C;AAID,UAAU,mBAAoB,SAAQ,iBAAiB;IACrD,qBAAqB;IACrB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAEhB,+CAA+C;IAC/C,KAAK,CAAC,EAAE,aAAa,CAAC;IAEtB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,aAAa,CAAC;IAE7B,qCAAqC;IACrC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,IAAI,KAAK,IAAI,CAAC;CAC9D;AAED,UAAU,kBAAmB,SAAQ,iBAAiB;IACpD,qBAAqB;IACrB,IAAI,EAAE,OAAO,CAAC;IAEd,0BAA0B;IAC1B,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,SAAS,CAAC;IAEzB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;CACvC;AAED,MAAM,MAAM,aAAa,GAAG,mBAAmB,GAAG,kBAAkB,CAAC;AAMrE;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,EAAC,GAAG,EAAE,GAAG,KAAK,EAAC,EAAE,aAAa,+BAsXtD;yBAtXe,QAAQ"}
1
+ {"version":3,"file":"Calendar.d.ts","sourceRoot":"","sources":["../../src/Calendar/Calendar.tsx"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAgD5C,YAAY,EACV,aAAa,EACb,SAAS,EACT,aAAa,EACb,SAAS,GACV,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EACT,aAAa,EACb,SAAS,EACV,MAAM,oBAAoB,CAAC;AAK5B,+CAA+C;AAE/C,MAAM,WAAW,cAAc;IAC7B,wEAAwE;IACxE,UAAU,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;CAC3C;AAID,UAAU,iBAAkB,SAAQ,IAAI,CACtC,SAAS,CAAC,cAAc,CAAC,EACzB,UAAU,GAAG,cAAc,CAC5B;IACC,kDAAkD;IAClD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,qDAAqD;IACrD,SAAS,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACtC,+CAA+C;IAC/C,cAAc,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAEvB,4CAA4C;IAC5C,GAAG,CAAC,EAAE,aAAa,CAAC;IAEpB,4CAA4C;IAC5C,GAAG,CAAC,EAAE,aAAa,CAAC;IAEpB;;;OAGG;IACH,eAAe,CAAC,EAAE,aAAa,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC;IAEzD;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,aAAa,CAAC;IAE1B,yDAAyD;IACzD,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,aAAa,KAAK,IAAI,CAAC;IAEvD;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;;OAIG;IACH,YAAY,CAAC,EAAE,SAAS,GAAG,aAAa,CAAC;CAC1C;AAID,UAAU,mBAAoB,SAAQ,iBAAiB;IACrD,qBAAqB;IACrB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAEhB,+CAA+C;IAC/C,KAAK,CAAC,EAAE,aAAa,CAAC;IAEtB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,aAAa,CAAC;IAE7B,qCAAqC;IACrC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,IAAI,KAAK,IAAI,CAAC;CAC9D;AAED,UAAU,kBAAmB,SAAQ,iBAAiB;IACpD,qBAAqB;IACrB,IAAI,EAAE,OAAO,CAAC;IAEd,0BAA0B;IAC1B,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,SAAS,CAAC;IAEzB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;CACvC;AAED,MAAM,MAAM,aAAa,GAAG,mBAAmB,GAAG,kBAAkB,CAAC;AAMrE;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,EAAC,GAAG,EAAE,GAAG,KAAK,EAAC,EAAE,aAAa,+BAqXtD;yBArXe,QAAQ"}
@@ -252,13 +252,12 @@ export function Calendar({
252
252
  // Second click - complete the range
253
253
  const startPd = plainDateFromISO(rangeSelectionStart);
254
254
 
255
- // Clicking the anchor again clears the in-progress start rather than
256
- // committing a zero-length range. This is also the escape hatch when
257
- // `minRangeSpan` disables the days around the anchor: without it the
258
- // anchor would be the only clickable day left and the start could
259
- // never be moved. `minRangeSpan` leaves the anchor itself enabled
260
- // precisely so this toggle stays reachable.
261
- if (plainDateIsEqual(date, startPd)) {
255
+ // Clicking the anchor again commits a one-day range when the minimum
256
+ // span allows it. For longer minimum spans, the repeated click clears
257
+ // the in-progress start instead: the anchor is the only nearby day
258
+ // that remains enabled, so this preserves an escape hatch for moving
259
+ // the start without violating the configured minimum.
260
+ if (plainDateIsEqual(date, startPd) && (minRangeSpan ?? 1) > 1) {
262
261
  setRangeSelectionStart(null);
263
262
  announce(t('@astryx.calendar.rangeClearedAnnounce', {
264
263
  date: plainDateFormat(date, DATE_FORMAT_WITH_WEEKDAY, locale)
@@ -291,7 +290,7 @@ export function Calendar({
291
290
  }));
292
291
  }
293
292
  }
294
- }, [mode, onChange, rangeSelectionStart, announce, t, locale]);
293
+ }, [mode, onChange, rangeSelectionStart, minRangeSpan, announce, t, locale]);
295
294
  return /*#__PURE__*/_jsxs("div", {
296
295
  ref: ref,
297
296
  ...rest,
@@ -36,7 +36,8 @@ export interface ComplexSelectorRenderState {
36
36
  * they respect focus restoration, light dismiss, and Escape. Prefer these
37
37
  * callbacks over mirroring open state in the parent — the selector owns its
38
38
  * visibility, and imperative calls avoid the focus-management pitfalls of
39
- * syncing an external `isOpen` prop.
39
+ * syncing an external `isOpen` prop. Pair with `onOpenChange` to observe every
40
+ * open and close, including the ones the selector performs itself.
40
41
  */
41
42
  export interface ComplexSelectorHandle {
42
43
  /** Open the selector surface. No-op when disabled or already open. */
@@ -103,6 +104,13 @@ export interface ComplexSelectorProps<Value> extends Omit<BaseProps<HTMLDivEleme
103
104
  * state in the parent — the selector owns its visibility.
104
105
  */
105
106
  handleRef?: React.Ref<ComplexSelectorHandle>;
107
+ /**
108
+ * Called whenever the selector surface opens or closes, however it happened
109
+ * — the trigger, the keyboard, a light dismiss, Escape, content that calls
110
+ * `close()`, or the imperative handle. Pair it with `handleRef` to drive the
111
+ * surface from outside without mirroring its state.
112
+ */
113
+ onOpenChange?: (isOpen: boolean) => void;
106
114
  /** StyleX styles for the popup content container. */
107
115
  contentXstyle?: StyleXStyles;
108
116
  /** Test ID for the trigger container. */
@@ -135,7 +143,7 @@ export interface ComplexSelectorProps<Value> extends Omit<BaseProps<HTMLDivEleme
135
143
  * </ComplexSelector>
136
144
  * ```
137
145
  */
138
- export declare function ComplexSelector<Value>({ label, value, onChange, changeAction, children, triggerLabel, placeholder: placeholderFromProps, isLabelHidden, description, isOptional, isRequired, isDisabled, isLoading, status, statusVariant, labelTooltip, size, variant, startIcon, width, placement, alignment, handleRef, contentXstyle, xstyle, className, style, 'data-testid': testId, onClick: onClickProp, ...props }: ComplexSelectorProps<Value>): React.JSX.Element;
146
+ export declare function ComplexSelector<Value>({ label, value, onChange, changeAction, children, triggerLabel, placeholder: placeholderFromProps, isLabelHidden, description, isOptional, isRequired, isDisabled, isLoading, status, statusVariant, labelTooltip, size, variant, startIcon, width, placement, alignment, handleRef, onOpenChange, contentXstyle, xstyle, className, style, 'data-testid': testId, onClick: onClickProp, ...props }: ComplexSelectorProps<Value>): React.JSX.Element;
139
147
  export declare namespace ComplexSelector {
140
148
  var displayName: string;
141
149
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ComplexSelector.d.ts","sourceRoot":"","sources":["../../src/ComplexSelector/ComplexSelector.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ComplexSelector.d.ts","sourceRoot":"","sources":["../../src/ComplexSelector/ComplexSelector.tsx"],"names":[],"mappings":"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"}
@@ -150,7 +150,8 @@ const styles = {
150
150
  * they respect focus restoration, light dismiss, and Escape. Prefer these
151
151
  * callbacks over mirroring open state in the parent — the selector owns its
152
152
  * visibility, and imperative calls avoid the focus-management pitfalls of
153
- * syncing an external `isOpen` prop.
153
+ * syncing an external `isOpen` prop. Pair with `onOpenChange` to observe every
154
+ * open and close, including the ones the selector performs itself.
154
155
  */
155
156
 
156
157
  /**
@@ -204,6 +205,7 @@ export function ComplexSelector({
204
205
  placement = 'below',
205
206
  alignment = 'start',
206
207
  handleRef,
208
+ onOpenChange,
207
209
  contentXstyle,
208
210
  xstyle,
209
211
  className,
@@ -226,24 +228,29 @@ export function ComplexSelector({
226
228
  const statusMessageId = useId();
227
229
  const ariaDescribedBy = [description ? descriptionId : null, status?.message ? statusMessageId : null].filter(id => id != null).join(' ') || undefined;
228
230
  const triggerRef = useRef(null);
229
- const lastHideTimeRef = useRef(0);
230
231
  const [isPending, startTransition] = useTransition();
231
232
  const [optimisticValue, setOptimisticValue] = useOptimistic(value);
232
233
  const isBusy = isLoading || isPending;
234
+ const handlePopoverShow = useCallback(() => {
235
+ onOpenChange?.(true);
236
+ }, [onOpenChange]);
233
237
  const handlePopoverHide = useCallback(() => {
234
- lastHideTimeRef.current = Date.now();
238
+ // Focus is restored first so a consumer that moves focus elsewhere from
239
+ // the callback wins, instead of being overwritten a line later.
235
240
  triggerRef.current?.focus();
236
- }, []);
241
+ onOpenChange?.(false);
242
+ }, [onOpenChange]);
237
243
  const popover = usePopover({
238
244
  dialogLabel: label,
239
245
  hasCloseButton: false,
240
246
  hasAutoFocus: true,
241
247
  surfaceTarget: 'complex-selector-popup',
248
+ onShow: handlePopoverShow,
242
249
  onHide: handlePopoverHide
243
250
  });
244
251
  const isOpen = popover.isOpen;
245
252
  const handleTriggerClick = useCallback(() => {
246
- if (isDisabled || Date.now() - lastHideTimeRef.current < 50) {
253
+ if (isDisabled) {
247
254
  return;
248
255
  }
249
256
  if (popover.isOpen) {
@@ -111,8 +111,10 @@ export interface DateRangeInputProps extends Omit<BaseProps, 'onChange' | 'defau
111
111
  * Minimum number of days the selected range must span, counting both
112
112
  * endpoints — `minRangeSpan={2}` forbids a single-day range. Once a start
113
113
  * date is picked, days closer than this to it are disabled — except the
114
- * start itself, which stays selectable as the active anchor. Defaults to 1
115
- * (a same-day start and end is allowed).
114
+ * start itself, which stays selectable. Clicking the start again commits a
115
+ * one-day range when the minimum allows it; otherwise it cancels the
116
+ * in-progress selection so the start can be moved. Defaults to 1 (a
117
+ * same-day start and end is allowed).
116
118
  */
117
119
  minRangeSpan?: number;
118
120
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"DateRangeInput.d.ts","sourceRoot":"","sources":["../../src/DateRangeInput/DateRangeInput.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DateRangeInput.d.ts","sourceRoot":"","sources":["../../src/DateRangeInput/DateRangeInput.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownMenu.d.ts","sourceRoot":"","sources":["../../src/DropdownMenu/DropdownMenu.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,EAOZ,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAGf,OAAO,EAAS,KAAK,WAAW,EAAC,MAAM,WAAW,CAAC;AAInD,OAAO,KAAK,EAAC,qBAAqB,EAAC,MAAM,oBAAoB,CAAC;AAa9D,OAAO,KAAK,EAAC,cAAc,EAAE,cAAc,EAAC,MAAM,mBAAmB,CAAC;AAQtE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAiC5C;;;;;;;GAOG;AACH,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAChD,qBAAqB,EACnB,MAAM,GACN,SAAS,GACT,YAAY,GACZ,SAAS,GACT,aAAa,GACb,YAAY,GACZ,kBAAkB,CACrB;IACC;;;;;;OAMG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,6BAA6B;IAC7B,KAAK,EAAE,SAAS,CAAC;IACjB;;;;OAIG;IACH,KAAK,CAAC,EAAE,kBAAkB,EAAE,CAAC;CAC9B;AAED;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,SAAS,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,SAAS,CAAC;IAChB,0EAA0E;IAC1E,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,oBAAoB,EAAE,CAAC;CAC/B;AAED,MAAM,MAAM,kBAAkB,GAC5B,oBAAoB,GAAG,uBAAuB,GAAG,mBAAmB,CAAC;AAMvE,MAAM,MAAM,uBAAuB,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;AAEnE,UAAU,qBAAsB,SAAQ,SAAS;IAC/C,MAAM,CAAC,EAAE,uBAAuB,CAAC;IACjC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,SAAS,CAAC,EAAE,cAAc,CAAC;IAE3B;;;;OAIG;IACH,SAAS,CAAC,EAAE,cAAc,CAAC;IAE3B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,qBAAsB,SAAQ,qBAAqB;IAC3D,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,UAAU,yBAA0B,SAAQ,qBAAqB;IAC/D,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,MAAM,MAAM,iBAAiB,GAC3B,qBAAqB,GAAG,yBAAyB,CAAC;AA+BpD,wBAAgB,YAAY,CAAC,EAC3B,MAAM,EAAE,eAAe,EACvB,UAAU,EAAE,gBAAgB,EAC5B,YAAY,EACZ,SAAS,EACT,OAAO,EACP,UAAiB,EACjB,SAAmB,EACnB,SAAmB,EACnB,SAAS,EACT,KAAK,EACL,MAAM,EACN,aAAa,EAAE,MAAM,EACrB,GAAG,KAAK,EACT,EAAE,iBAAiB,qBA2TnB;yBAzUe,YAAY"}
1
+ {"version":3,"file":"DropdownMenu.d.ts","sourceRoot":"","sources":["../../src/DropdownMenu/DropdownMenu.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,EAOZ,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAGf,OAAO,EAAS,KAAK,WAAW,EAAC,MAAM,WAAW,CAAC;AAInD,OAAO,KAAK,EAAC,qBAAqB,EAAC,MAAM,oBAAoB,CAAC;AAa9D,OAAO,KAAK,EAAC,cAAc,EAAE,cAAc,EAAC,MAAM,mBAAmB,CAAC;AAQtE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAiC5C;;;;;;;GAOG;AACH,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAChD,qBAAqB,EACnB,MAAM,GACN,SAAS,GACT,YAAY,GACZ,SAAS,GACT,aAAa,GACb,YAAY,GACZ,kBAAkB,CACrB;IACC;;;;;;OAMG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,6BAA6B;IAC7B,KAAK,EAAE,SAAS,CAAC;IACjB;;;;OAIG;IACH,KAAK,CAAC,EAAE,kBAAkB,EAAE,CAAC;CAC9B;AAED;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,SAAS,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,SAAS,CAAC;IAChB,0EAA0E;IAC1E,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,oBAAoB,EAAE,CAAC;CAC/B;AAED,MAAM,MAAM,kBAAkB,GAC5B,oBAAoB,GAAG,uBAAuB,GAAG,mBAAmB,CAAC;AAMvE,MAAM,MAAM,uBAAuB,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;AAEnE,UAAU,qBAAsB,SAAQ,SAAS;IAC/C,MAAM,CAAC,EAAE,uBAAuB,CAAC;IACjC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,SAAS,CAAC,EAAE,cAAc,CAAC;IAE3B;;;;OAIG;IACH,SAAS,CAAC,EAAE,cAAc,CAAC;IAE3B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,qBAAsB,SAAQ,qBAAqB;IAC3D,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,UAAU,yBAA0B,SAAQ,qBAAqB;IAC/D,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,MAAM,MAAM,iBAAiB,GAC3B,qBAAqB,GAAG,yBAAyB,CAAC;AA+BpD,wBAAgB,YAAY,CAAC,EAC3B,MAAM,EAAE,eAAe,EACvB,UAAU,EAAE,gBAAgB,EAC5B,YAAY,EACZ,SAAS,EACT,OAAO,EACP,UAAiB,EACjB,SAAmB,EACnB,SAAmB,EACnB,SAAS,EACT,KAAK,EACL,MAAM,EACN,aAAa,EAAE,MAAM,EACrB,GAAG,KAAK,EACT,EAAE,iBAAiB,qBAkTnB;yBAhUe,YAAY"}
@@ -28,7 +28,7 @@
28
28
  */
29
29
  import React, { useCallback, useEffect, useId, useMemo, useRef, useState } from 'react';
30
30
  import * as stylex from '@stylexjs/stylex';
31
- import { usePopover } from "../Popover/usePopover.js";
31
+ import { usePopoverInternal } from "../Popover/usePopover.js";
32
32
  import { Button } from "../Button/index.js";
33
33
  import { Icon } from "../Icon/index.js";
34
34
  import { renderDropdownItems } from "./renderDropdownItems.js";
@@ -161,14 +161,8 @@ export function DropdownMenu({
161
161
  const isControlled = controlledIsOpen !== undefined;
162
162
  const isOpen = isControlled ? controlledIsOpen : internalIsOpen;
163
163
 
164
- // Track when the menu was last hidden so a near-simultaneous trigger
165
- // click — e.g. on iOS Safari where pointerdown fires light-dismiss
166
- // before the trigger's click event — can't immediately re-open it.
167
- const lastHideTimeRef = useRef(0);
168
-
169
164
  // Close menu + return focus to trigger
170
165
  const handleLayerHide = useCallback(() => {
171
- lastHideTimeRef.current = Date.now();
172
166
  onOpenChange?.(false);
173
167
  if (!isControlled) {
174
168
  setInternalIsOpen(false);
@@ -192,7 +186,7 @@ export function DropdownMenu({
192
186
  setInternalIsOpen(true);
193
187
  }
194
188
  }, [isControlled, onOpenChange]);
195
- const popover = usePopover({
189
+ const popover = usePopoverInternal({
196
190
  onHide: handleLayerHide,
197
191
  onShow: handleLayerShow,
198
192
  hasLightDismiss: true,
@@ -303,11 +297,8 @@ export function DropdownMenu({
303
297
  popover.show();
304
298
  }, [popover]);
305
299
  const handleButtonClick = useCallback(e => {
306
- // If the menu was just closed by light dismiss (e.g. iOS Safari fires
307
- // pointerdown → hide before the trigger's click), the click would
308
- // otherwise immediately re-open it. Short-circuit within the guard
309
- // window.
310
- if (Date.now() - lastHideTimeRef.current < 50) {
300
+ // The click that light-dismissed the menu is not a request to reopen it.
301
+ if (popover.wasJustDismissed()) {
311
302
  return;
312
303
  }
313
304
  onClick?.();
@@ -1,8 +1,7 @@
1
1
  /**
2
2
  * @file InputClearButton.tsx
3
3
  * @input Uses React, Button, Icon
4
- * @output Exports InputClearButton, the shared clear (✕) button rendered by
5
- * every clearable input in the family.
4
+ * @output Exports the public InputClearButton and an internal popup-aware variant.
6
5
  * @position Shared primitive. Every input that renders a clear affordance —
7
6
  * TextInput, NumberInput, TimeInput, DateInput, DateTimeInput,
8
7
  * DateRangeInput, Selector, MultiSelector, Typeahead, Tokenizer, FileInput —
@@ -25,8 +24,15 @@ export interface InputClearButtonProps {
25
24
  */
26
25
  iconClassName?: string;
27
26
  }
28
- export declare function InputClearButton({ label, onClick, xstyle, iconClassName, }: InputClearButtonProps): ReactNode;
27
+ interface InternalInputClearButtonProps extends InputClearButtonProps {
28
+ onPointerDown: React.PointerEventHandler<HTMLElement>;
29
+ onClickCapture: React.MouseEventHandler<HTMLElement>;
30
+ }
31
+ export declare function InputClearButton(props: InputClearButtonProps): ReactNode;
29
32
  export declare namespace InputClearButton {
30
33
  var displayName: string;
31
34
  }
35
+ /** Internal variant used while popup-aware clear behavior is rolled out. */
36
+ export declare function InternalInputClearButton(props: InternalInputClearButtonProps): ReactNode;
37
+ export {};
32
38
  //# sourceMappingURL=InputClearButton.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"InputClearButton.d.ts","sourceRoot":"","sources":["../../src/Field/InputClearButton.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AACrC,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAkD3C,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC;IAC7B;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,OAAO,EACP,MAAM,EACN,aAAa,GACd,EAAE,qBAAqB,GAAG,SAAS,CA0BnC;yBA/Be,gBAAgB"}
1
+ {"version":3,"file":"InputClearButton.d.ts","sourceRoot":"","sources":["../../src/Field/InputClearButton.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AACrC,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAkD3C,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC;IAC7B;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,6BAA8B,SAAQ,qBAAqB;IACnE,aAAa,EAAE,KAAK,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;IACtD,cAAc,EAAE,KAAK,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;CACtD;AA4CD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,SAAS,CAExE;yBAFe,gBAAgB;;;AAIhC,4EAA4E;AAC5E,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,6BAA6B,GACnC,SAAS,CAEX"}
@@ -5,8 +5,7 @@
5
5
  /**
6
6
  * @file InputClearButton.tsx
7
7
  * @input Uses React, Button, Icon
8
- * @output Exports InputClearButton, the shared clear (✕) button rendered by
9
- * every clearable input in the family.
8
+ * @output Exports the public InputClearButton and an internal popup-aware variant.
10
9
  * @position Shared primitive. Every input that renders a clear affordance —
11
10
  * TextInput, NumberInput, TimeInput, DateInput, DateTimeInput,
12
11
  * DateRangeInput, Selector, MultiSelector, Typeahead, Tokenizer, FileInput —
@@ -32,9 +31,11 @@ const styles = {
32
31
  $$css: true
33
32
  }
34
33
  };
35
- export function InputClearButton({
34
+ function renderInputClearButton({
36
35
  label,
37
36
  onClick,
37
+ onPointerDown,
38
+ onClickCapture,
38
39
  xstyle,
39
40
  iconClassName
40
41
  }) {
@@ -56,8 +57,18 @@ export function InputClearButton({
56
57
  className: iconClassName != null ? `${iconTargetClassName} ${iconClassName}` : iconTargetClassName
57
58
  }),
58
59
  onClick: onClick,
60
+ onPointerDown: onPointerDown,
61
+ onClickCapture: onClickCapture,
59
62
  isIconOnly: true,
60
63
  xstyle: [styles.button, xstyle]
61
64
  });
62
65
  }
66
+ export function InputClearButton(props) {
67
+ return renderInputClearButton(props);
68
+ }
69
+
70
+ /** Internal variant used while popup-aware clear behavior is rolled out. */
71
+ export function InternalInputClearButton(props) {
72
+ return renderInputClearButton(props);
73
+ }
63
74
  InputClearButton.displayName = 'InputClearButton';
@@ -1 +1 @@
1
- {"version":3,"file":"Heading.d.ts","sourceRoot":"","sources":["../../src/Heading/Heading.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAyB,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAE7D,OAAO,KAAK,EACV,SAAS,EACT,WAAW,EACX,WAAW,EACX,SAAS,EACT,QAAQ,EACT,MAAM,gBAAgB,CAAC;AAiBxB,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,UAAU,CAAC;AAG7C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAO5C;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEjD;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,WAAW,GAAG,WAAW,CAAC;AAElE,MAAM,WAAW,YAAa,SAAQ,IAAI,CACxC,SAAS,CAAC,kBAAkB,CAAC,EAC7B,UAAU,CACX;IACC,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACpC;;;OAGG;IACH,KAAK,EAAE,YAAY,CAAC;IAEpB;;;;;;;;;;;;;OAaG;IACH,IAAI,CAAC,EAAE,WAAW,CAAC;IAEnB;;;;;;;;;;;OAWG;IACH,kBAAkB,CAAC,EAAE,YAAY,CAAC;IAElC;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB;;;;OAIG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,OAAO,GAAG,cAAc,CAAC;IAE9C;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAEpB;;;;OAIG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;CACrB;AAWD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,OAAO,CAAC,EACtB,KAAK,EACL,IAAI,EACJ,kBAAkB,EAClB,KAAiB,EACjB,OAAiB,EACjB,QAAY,EACZ,kBAAyB,EACzB,SAAS,EACT,QAAQ,EACR,OAAiB,EACjB,UAAkB,EAClB,gBAAwB,EACxB,MAAM,EACN,SAAS,EACT,KAAK,EACL,QAAQ,EACR,GAAG,EACH,GAAG,KAAK,EACT,EAAE,YAAY,+BAsFd;yBAzGe,OAAO"}
1
+ {"version":3,"file":"Heading.d.ts","sourceRoot":"","sources":["../../src/Heading/Heading.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAyB,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAE7D,OAAO,KAAK,EACV,SAAS,EACT,WAAW,EACX,WAAW,EACX,SAAS,EACT,QAAQ,EACT,MAAM,gBAAgB,CAAC;AAiBxB,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,UAAU,CAAC;AAG7C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAO5C;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEjD;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,WAAW,GAAG,WAAW,CAAC;AAElE,MAAM,WAAW,YAAa,SAAQ,IAAI,CACxC,SAAS,CAAC,kBAAkB,CAAC,EAC7B,UAAU,CACX;IACC,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACpC;;;OAGG;IACH,KAAK,EAAE,YAAY,CAAC;IAEpB;;;;;;;;;;;;;OAaG;IACH,IAAI,CAAC,EAAE,WAAW,CAAC;IAEnB;;;;;;;;;;;OAWG;IACH,kBAAkB,CAAC,EAAE,YAAY,CAAC;IAElC;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB;;;;OAIG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,OAAO,GAAG,cAAc,CAAC;IAE9C;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAEpB;;;;OAIG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;CACrB;AAWD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,OAAO,CAAC,EACtB,KAAK,EACL,IAAI,EACJ,kBAAkB,EAClB,KAAiB,EACjB,OAAiB,EACjB,QAAY,EACZ,kBAAyB,EACzB,SAAS,EACT,QAAQ,EACR,OAAiB,EACjB,UAAkB,EAClB,gBAAwB,EACxB,MAAM,EACN,SAAS,EACT,KAAK,EACL,QAAQ,EACR,GAAG,EACH,GAAG,KAAK,EACT,EAAE,YAAY,+BAqFd;yBAxGe,OAAO"}
@@ -142,7 +142,6 @@ export function Heading({
142
142
  ...style,
143
143
  ...inlineStyle
144
144
  }),
145
- title: tooltipEnabled ? truncation.fullText : undefined,
146
145
  ...ariaProps,
147
146
  ...props,
148
147
  children: children
@@ -20,7 +20,7 @@
20
20
  import React, { type ComponentType, type SVGProps } from 'react';
21
21
  import * as stylex from '@stylexjs/stylex';
22
22
  import type { StyleXStyles } from '@stylexjs/stylex';
23
- import type { IconName } from './globalIconRegistry';
23
+ import type { IconName, NamespacedIconName } from './globalIconRegistry';
24
24
  declare const colorStyles: Readonly<{
25
25
  readonly primary: Readonly<{
26
26
  readonly color: stylex.StyleXClassNameFor<"color", "light-dark(#0A1317, #DFE2E5)">;
@@ -124,9 +124,11 @@ export interface IconProps extends Omit<SVGProps<SVGSVGElement>, 'ref' | 'color'
124
124
  /**
125
125
  * Icon to render. Can be:
126
126
  * - A semantic name string (e.g. 'close', 'chevronDown') — resolved from theme or built-in fallback
127
+ * - A namespaced extension key (e.g. 'richtext:bold') for a glyph owned by
128
+ * one component or library — resolved the same way, themeable by key
127
129
  * - An SVG icon component (e.g. from @heroicons/react) — rendered directly
128
130
  */
129
- icon: IconType | IconName;
131
+ icon: IconType | IconName | NamespacedIconName;
130
132
  /**
131
133
  * The color variant of the icon.
132
134
  * @default 'inherit'
@@ -1 +1 @@
1
- {"version":3,"file":"Icon.d.ts","sourceRoot":"","sources":["../../src/Icon/Icon.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,EAAC,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAC,MAAM,OAAO,CAAC;AAC/D,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAC3C,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAInD,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,sBAAsB,CAAC;AAqBnD,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2Df,CAAC;AAEH;;;;;;;;GAQG;AACH,QAAA,MAAM,UAAU;;;;;;;;;;;;;;;;;EAiBd,CAAC;AAyCH,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,WAAW,CAAC;AACjD,MAAM,MAAM,QAAQ,GAAG,MAAM,OAAO,UAAU,CAAC;AAE/C;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;AAE9D;;;GAGG;AACH,MAAM,WAAW,SAAU,SAAQ,IAAI,CACrC,QAAQ,CAAC,aAAa,CAAC,EACvB,KAAK,GAAG,OAAO,CAChB;IACC,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC/B;;;;OAIG;IACH,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC1B;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAyBD;;;;;;;GAOG;AACH,wBAAgB,IAAI,CAAC,EACnB,IAAI,EACJ,KAAiB,EACjB,IAAW,EACX,KAAK,EACL,GAAG,EACH,SAAS,EACT,KAAK,EACL,MAAM,EACN,GAAG,KAAK,EACT,EAAE,SAAS,qBA4CX;yBAtDe,IAAI;;;AA+HpB;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,KAAK,CAAC,SAAS,GAAG,QAAQ,EAChC,KAAK,CAAC,EAAE;IAAC,IAAI,CAAC,EAAE,QAAQ,CAAC;IAAC,KAAK,CAAC,EAAE,SAAS,CAAA;CAAC,GAC3C,KAAK,CAAC,SAAS,CAYjB"}
1
+ {"version":3,"file":"Icon.d.ts","sourceRoot":"","sources":["../../src/Icon/Icon.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,EAAC,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAC,MAAM,OAAO,CAAC;AAC/D,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAC3C,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAInD,OAAO,KAAK,EAAC,QAAQ,EAAE,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AAqBvE,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2Df,CAAC;AAEH;;;;;;;;GAQG;AACH,QAAA,MAAM,UAAU;;;;;;;;;;;;;;;;;EAiBd,CAAC;AAyCH,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,WAAW,CAAC;AACjD,MAAM,MAAM,QAAQ,GAAG,MAAM,OAAO,UAAU,CAAC;AAE/C;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;AAE9D;;;GAGG;AACH,MAAM,WAAW,SAAU,SAAQ,IAAI,CACrC,QAAQ,CAAC,aAAa,CAAC,EACvB,KAAK,GAAG,OAAO,CAChB;IACC,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC/B;;;;;;OAMG;IACH,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,kBAAkB,CAAC;IAC/C;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAyBD;;;;;;;GAOG;AACH,wBAAgB,IAAI,CAAC,EACnB,IAAI,EACJ,KAAiB,EACjB,IAAW,EACX,KAAK,EACL,GAAG,EACH,SAAS,EACT,KAAK,EACL,MAAM,EACN,GAAG,KAAK,EACT,EAAE,SAAS,qBA4CX;yBAtDe,IAAI;;;AA+HpB;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,KAAK,CAAC,SAAS,GAAG,QAAQ,EAChC,KAAK,CAAC,EAAE;IAAC,IAAI,CAAC,EAAE,QAAQ,CAAC;IAAC,KAAK,CAAC,EAAE,SAAS,CAAA;CAAC,GAC3C,KAAK,CAAC,SAAS,CAYjB"}
@@ -20,6 +20,7 @@
20
20
  * - /packages/core/src/Icon/globalIconRegistry.tsx (IconName type if names change)
21
21
  * - /packages/core/src/Icon/Icon.doc.mjs (fallback icon documentation)
22
22
  */
23
- import type { IconRegistry } from './globalIconRegistry';
24
- export declare const defaultIcons: IconRegistry;
23
+ import type { ReactNode } from 'react';
24
+ import type { IconRegistry, NamespacedIconName } from './globalIconRegistry';
25
+ export declare const defaultIcons: IconRegistry & Partial<Record<NamespacedIconName, ReactNode>>;
25
26
  //# sourceMappingURL=defaultIcons.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"defaultIcons.d.ts","sourceRoot":"","sources":["../../src/Icon/defaultIcons.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,sBAAsB,CAAC;AA8BvD,eAAO,MAAM,YAAY,EAAE,YA8N1B,CAAC"}
1
+ {"version":3,"file":"defaultIcons.d.ts","sourceRoot":"","sources":["../../src/Icon/defaultIcons.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AACrC,OAAO,KAAK,EAAC,YAAY,EAAE,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AA8B3E,eAAO,MAAM,YAAY,EAAE,YAAY,GACrC,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAqO9C,CAAC"}
@@ -66,6 +66,13 @@ export const defaultIcons = {
66
66
  d: "M6 9l6 6 6-6"
67
67
  })
68
68
  }),
69
+ /** ⌄ — compact NumberInput stepper chevron */
70
+ 'numberInput:stepperDown': /*#__PURE__*/_jsx("svg", {
71
+ ...svgProps,
72
+ children: /*#__PURE__*/_jsx("path", {
73
+ d: "M7.5 9.75l4.5 4.5 4.5-4.5"
74
+ })
75
+ }),
69
76
  /** ‹ — left chevron */
70
77
  chevronLeft: /*#__PURE__*/_jsx("svg", {
71
78
  ...svgProps,
@@ -16,6 +16,19 @@ import type { DefinedTheme } from '../theme/defineTheme';
16
16
  * visual representation. Themes provide the actual icon components.
17
17
  */
18
18
  export type IconName = 'close' | 'chevronDown' | 'chevronLeft' | 'chevronRight' | 'chevronsLeft' | 'chevronsRight' | 'check' | 'success' | 'error' | 'warning' | 'info' | 'calendar' | 'clock' | 'externalLink' | 'menu' | 'moreHorizontal' | 'search' | 'arrowUp' | 'arrowDown' | 'arrowsUpDown' | 'funnel' | 'eyeSlash' | 'viewColumns' | 'copy' | 'checkDouble' | 'wrench' | 'stop' | 'microphone';
19
+ /**
20
+ * A namespaced extension key, `'<namespace>:<name>'`.
21
+ *
22
+ * This is the tier for a glyph that belongs to one component or library rather
23
+ * than to the system: `'richtext:bold'`, `'numberInput:stepperDown'`. A theme
24
+ * overrides it by key through `registerIcons` or `defineTheme({icons})`,
25
+ * exactly as it overrides a built-in name, and the core {@link IconName} union
26
+ * stays reserved for glyphs the whole system shares.
27
+ *
28
+ * Accepted anywhere a built-in name is, including `<Icon icon>` — which is
29
+ * what lets a namespaced glyph keep `size`, `color` and `xstyle`.
30
+ */
31
+ export type NamespacedIconName = `${string}:${string}`;
19
32
  /**
20
33
  * A semantic icon name — either one of the built-in {@link IconName}s or an
21
34
  * arbitrary string key contributed by a library/app.
@@ -1 +1 @@
1
- {"version":3,"file":"globalIconRegistry.d.ts","sourceRoot":"","sources":["../../src/Icon/globalIconRegistry.tsx"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AAErC,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,sBAAsB,CAAC;AAQvD;;;;;GAKG;AAEH,MAAM,MAAM,QAAQ,GAChB,OAAO,GACP,aAAa,GACb,aAAa,GACb,cAAc,GACd,cAAc,GACd,eAAe,GACf,OAAO,GACP,SAAS,GACT,OAAO,GACP,SAAS,GACT,MAAM,GACN,UAAU,GACV,OAAO,GACP,cAAc,GACd,MAAM,GACN,gBAAgB,GAChB,QAAQ,GACR,SAAS,GACT,WAAW,GACX,cAAc,GACd,QAAQ,GACR,UAAU,GACV,aAAa,GACb,MAAM,GACN,aAAa,GACb,QAAQ,GACR,MAAM,GACN,YAAY,CAAC;AAEjB;;;;;;;;GAQG;AACH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAExD;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AAEvD,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;AAsB1E;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC,GAClD,IAAI,CAON;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,MAAM,CAAC,EAAE,kBAAkB,GAC1B,QAAQ,CAAC,YAAY,CAAC,CAkBxB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,OAAO,CACrB,IAAI,EAAE,gBAAgB,EACtB,MAAM,CAAC,EAAE,kBAAkB,GAC1B,SAAS,CAOX;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,gBAAgB,EACtB,QAAQ,CAAC,EAAE,SAAS,EACpB,MAAM,CAAC,EAAE,kBAAkB,GAC1B,SAAS,CAQX;AAED;;;GAGG;AACH,wBAAgB,UAAU,IAAI,IAAI,CAEjC"}
1
+ {"version":3,"file":"globalIconRegistry.d.ts","sourceRoot":"","sources":["../../src/Icon/globalIconRegistry.tsx"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AAErC,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,sBAAsB,CAAC;AAQvD;;;;;GAKG;AAEH,MAAM,MAAM,QAAQ,GAChB,OAAO,GACP,aAAa,GACb,aAAa,GACb,cAAc,GACd,cAAc,GACd,eAAe,GACf,OAAO,GACP,SAAS,GACT,OAAO,GACP,SAAS,GACT,MAAM,GACN,UAAU,GACV,OAAO,GACP,cAAc,GACd,MAAM,GACN,gBAAgB,GAChB,QAAQ,GACR,SAAS,GACT,WAAW,GACX,cAAc,GACd,QAAQ,GACR,UAAU,GACV,aAAa,GACb,MAAM,GACN,aAAa,GACb,QAAQ,GACR,MAAM,GACN,YAAY,CAAC;AAEjB;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,kBAAkB,GAAG,GAAG,MAAM,IAAI,MAAM,EAAE,CAAC;AAEvD;;;;;;;;GAQG;AACH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAExD;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AAEvD,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;AAgC1E;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC,GAClD,IAAI,CAON;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,MAAM,CAAC,EAAE,kBAAkB,GAC1B,QAAQ,CAAC,YAAY,CAAC,CAyBxB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,OAAO,CACrB,IAAI,EAAE,gBAAgB,EACtB,MAAM,CAAC,EAAE,kBAAkB,GAC1B,SAAS,CAOX;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,gBAAgB,EACtB,QAAQ,CAAC,EAAE,SAAS,EACpB,MAAM,CAAC,EAAE,kBAAkB,GAC1B,SAAS,CAQX;AAED;;;GAGG;AACH,wBAAgB,UAAU,IAAI,IAAI,CAEjC"}