@astryxdesign/core 0.5.0-canary.f747a49 → 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 (383) hide show
  1. package/dist/AlertDialog/AlertDialog.d.ts +1 -1
  2. package/dist/AlertDialog/AlertDialog.d.ts.map +1 -1
  3. package/dist/AlertDialog/AlertDialog.js +45 -20
  4. package/dist/AspectRatio/AspectRatio.d.ts +6 -6
  5. package/dist/Badge/Badge.d.ts.map +1 -1
  6. package/dist/Badge/Badge.js +26 -2
  7. package/dist/Banner/Banner.d.ts +10 -1
  8. package/dist/Banner/Banner.d.ts.map +1 -1
  9. package/dist/Banner/Banner.js +11 -2
  10. package/dist/Button/Button.d.ts.map +1 -1
  11. package/dist/Button/Button.js +6 -2
  12. package/dist/Calendar/Calendar.d.ts +4 -2
  13. package/dist/Calendar/Calendar.d.ts.map +1 -1
  14. package/dist/Calendar/Calendar.js +8 -9
  15. package/dist/Calendar/styles.d.ts +5 -14
  16. package/dist/Calendar/styles.d.ts.map +1 -1
  17. package/dist/Calendar/styles.js +15 -15
  18. package/dist/Card/Card.d.ts +12 -12
  19. package/dist/Card/Card.d.ts.map +1 -1
  20. package/dist/Card/Card.js +17 -9
  21. package/dist/Card/index.d.ts +35 -1
  22. package/dist/Card/index.d.ts.map +1 -1
  23. package/dist/Card/index.js +21 -1
  24. package/dist/ComplexSelector/ComplexSelector.d.ts +10 -2
  25. package/dist/ComplexSelector/ComplexSelector.d.ts.map +1 -1
  26. package/dist/ComplexSelector/ComplexSelector.js +12 -5
  27. package/dist/DateInput/NativeDateField.d.ts.map +1 -1
  28. package/dist/DateInput/NativeDateField.js +23 -6
  29. package/dist/DateInput/TouchDateField.d.ts.map +1 -1
  30. package/dist/DateInput/TouchDateField.js +44 -19
  31. package/dist/DateInput/nativeDateSegments.d.ts +22 -0
  32. package/dist/DateInput/nativeDateSegments.d.ts.map +1 -0
  33. package/dist/DateInput/nativeDateSegments.js +111 -0
  34. package/dist/DateRangeInput/DateRangeInput.d.ts +4 -2
  35. package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
  36. package/dist/Dialog/Dialog.d.ts +16 -2
  37. package/dist/Dialog/Dialog.d.ts.map +1 -1
  38. package/dist/Dialog/Dialog.js +28 -7
  39. package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
  40. package/dist/DropdownMenu/DropdownMenu.js +4 -13
  41. package/dist/Field/InputClearButton.d.ts +9 -3
  42. package/dist/Field/InputClearButton.d.ts.map +1 -1
  43. package/dist/Field/InputClearButton.js +14 -3
  44. package/dist/Heading/Heading.d.ts.map +1 -1
  45. package/dist/Heading/Heading.js +0 -1
  46. package/dist/HoverCard/HoverCard.d.ts.map +1 -1
  47. package/dist/HoverCard/HoverCard.js +55 -3
  48. package/dist/HoverCard/useHoverCard.d.ts +4 -1
  49. package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
  50. package/dist/Icon/Icon.d.ts +4 -2
  51. package/dist/Icon/Icon.d.ts.map +1 -1
  52. package/dist/Icon/defaultIcons.d.ts +3 -2
  53. package/dist/Icon/defaultIcons.d.ts.map +1 -1
  54. package/dist/Icon/defaultIcons.js +7 -0
  55. package/dist/Icon/globalIconRegistry.d.ts +13 -0
  56. package/dist/Icon/globalIconRegistry.d.ts.map +1 -1
  57. package/dist/Icon/globalIconRegistry.js +34 -6
  58. package/dist/Icon/index.d.ts +1 -1
  59. package/dist/Icon/index.d.ts.map +1 -1
  60. package/dist/Icon/useIcon.d.ts +5 -2
  61. package/dist/Icon/useIcon.d.ts.map +1 -1
  62. package/dist/Icon/useIcon.js +3 -0
  63. package/dist/Layer/gestureCounter.d.ts +8 -0
  64. package/dist/Layer/gestureCounter.d.ts.map +1 -0
  65. package/dist/Layer/gestureCounter.js +53 -0
  66. package/dist/Layer/useLayer.d.ts +23 -13
  67. package/dist/Layer/useLayer.d.ts.map +1 -1
  68. package/dist/Layer/useLayer.js +128 -8
  69. package/dist/List/List.d.ts +1 -1
  70. package/dist/List/List.d.ts.map +1 -1
  71. package/dist/List/List.js +15 -4
  72. package/dist/Markdown/Markdown.d.ts +1 -1
  73. package/dist/Markdown/Markdown.d.ts.map +1 -1
  74. package/dist/Markdown/Markdown.js +20 -7
  75. package/dist/Markdown/parser.d.ts.map +1 -1
  76. package/dist/Markdown/parser.js +5 -3
  77. package/dist/MetadataList/MetadataListItem.d.ts +1 -1
  78. package/dist/MetadataList/MetadataListItem.d.ts.map +1 -1
  79. package/dist/MetadataList/MetadataListItem.js +4 -1
  80. package/dist/MultiSelector/MultiSelector.d.ts +18 -1
  81. package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
  82. package/dist/MultiSelector/MultiSelector.js +56 -9
  83. package/dist/MultiSelector/hooks.d.ts +7 -1
  84. package/dist/MultiSelector/hooks.d.ts.map +1 -1
  85. package/dist/MultiSelector/hooks.js +3 -2
  86. package/dist/NavMenu/NavHeadingMenu.d.ts +1 -1
  87. package/dist/NavMenu/NavHeadingMenu.d.ts.map +1 -1
  88. package/dist/NavMenu/NavHeadingMenu.js +7 -4
  89. package/dist/NumberInput/NumberInput.d.ts +6 -1
  90. package/dist/NumberInput/NumberInput.d.ts.map +1 -1
  91. package/dist/NumberInput/NumberInput.js +63 -110
  92. package/dist/NumberInput/numberInputCommit.d.ts +34 -0
  93. package/dist/NumberInput/numberInputCommit.d.ts.map +1 -0
  94. package/dist/NumberInput/numberInputCommit.js +71 -0
  95. package/dist/NumberInput/numberParser.d.ts +64 -0
  96. package/dist/NumberInput/numberParser.d.ts.map +1 -0
  97. package/dist/NumberInput/numberParser.js +350 -0
  98. package/dist/OverflowList/OverflowList.d.ts +41 -1
  99. package/dist/OverflowList/OverflowList.d.ts.map +1 -1
  100. package/dist/OverflowList/OverflowList.js +43 -2
  101. package/dist/Popover/Popover.d.ts.map +1 -1
  102. package/dist/Popover/Popover.js +8 -14
  103. package/dist/Popover/usePopover.d.ts +15 -41
  104. package/dist/Popover/usePopover.d.ts.map +1 -1
  105. package/dist/Popover/usePopover.js +26 -7
  106. package/dist/PowerSearch/PowerSearchValueEditor.d.ts.map +1 -1
  107. package/dist/PowerSearch/PowerSearchValueEditor.js +91 -18
  108. package/dist/Resizable/useResizable.d.ts +19 -1
  109. package/dist/Resizable/useResizable.d.ts.map +1 -1
  110. package/dist/Resizable/useResizable.js +101 -37
  111. package/dist/SelectableCard/SelectableCard.d.ts.map +1 -1
  112. package/dist/SelectableCard/SelectableCard.js +9 -0
  113. package/dist/Selector/Selector.d.ts +18 -1
  114. package/dist/Selector/Selector.d.ts.map +1 -1
  115. package/dist/Selector/Selector.js +90 -19
  116. package/dist/Selector/hooks.d.ts +7 -1
  117. package/dist/Selector/hooks.d.ts.map +1 -1
  118. package/dist/Selector/hooks.js +3 -2
  119. package/dist/SideNav/SideNav.d.ts +6 -1
  120. package/dist/SideNav/SideNav.d.ts.map +1 -1
  121. package/dist/SideNav/SideNav.js +57 -27
  122. package/dist/Slider/Slider.d.ts.map +1 -1
  123. package/dist/Slider/Slider.js +34 -2
  124. package/dist/Spinner/Spinner.d.ts +3 -1
  125. package/dist/Spinner/Spinner.d.ts.map +1 -1
  126. package/dist/Spinner/Spinner.js +199 -20
  127. package/dist/Table/plugins/filtering/useTableFiltering.d.ts.map +1 -1
  128. package/dist/Table/plugins/filtering/useTableFiltering.js +73 -4
  129. package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts +26 -0
  130. package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts.map +1 -1
  131. package/dist/Table/plugins/groupedRows/useTableGroupedRows.js +34 -3
  132. package/dist/Table/plugins/selection/useTableSelection.d.ts.map +1 -1
  133. package/dist/Table/plugins/selection/useTableSelection.js +25 -1
  134. package/dist/Text/Text.d.ts.map +1 -1
  135. package/dist/Text/Text.js +0 -1
  136. package/dist/TextArea/TextArea.d.ts.map +1 -1
  137. package/dist/TextArea/TextArea.js +7 -7
  138. package/dist/Timestamp/Timestamp.d.ts +1 -1
  139. package/dist/Timestamp/Timestamp.d.ts.map +1 -1
  140. package/dist/Timestamp/Timestamp.js +10 -18
  141. package/dist/Toast/Toast.d.ts.map +1 -1
  142. package/dist/Toast/Toast.js +22 -7
  143. package/dist/Toast/ToastViewport.d.ts +1 -0
  144. package/dist/Toast/ToastViewport.d.ts.map +1 -1
  145. package/dist/Toast/ToastViewport.js +71 -18
  146. package/dist/Token/Token.d.ts +1 -1
  147. package/dist/Token/Token.d.ts.map +1 -1
  148. package/dist/Token/Token.js +20 -9
  149. package/dist/Token/TokenLink.d.ts +1 -1
  150. package/dist/Token/TokenLink.d.ts.map +1 -1
  151. package/dist/Token/TokenLink.js +5 -2
  152. package/dist/Tokenizer/Tokenizer.d.ts +12 -1
  153. package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
  154. package/dist/Tokenizer/Tokenizer.js +31 -21
  155. package/dist/TopNav/TopNavMegaMenu.d.ts +1 -1
  156. package/dist/TopNav/TopNavMegaMenu.d.ts.map +1 -1
  157. package/dist/TopNav/TopNavMegaMenu.js +29 -9
  158. package/dist/TopNav/TopNavMenu.d.ts +1 -1
  159. package/dist/TopNav/TopNavMenu.d.ts.map +1 -1
  160. package/dist/TopNav/TopNavMenu.js +19 -5
  161. package/dist/TreeList/TreeList.d.ts +1 -1
  162. package/dist/TreeList/TreeList.d.ts.map +1 -1
  163. package/dist/TreeList/TreeList.js +7 -2
  164. package/dist/Typeahead/BaseTypeahead.d.ts +33 -0
  165. package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
  166. package/dist/Typeahead/BaseTypeahead.js +51 -8
  167. package/dist/Typeahead/Typeahead.d.ts +8 -1
  168. package/dist/Typeahead/Typeahead.d.ts.map +1 -1
  169. package/dist/Typeahead/Typeahead.js +2 -0
  170. package/dist/Typeahead/TypeaheadItem.d.ts +1 -1
  171. package/dist/Typeahead/TypeaheadItem.d.ts.map +1 -1
  172. package/dist/Typeahead/TypeaheadItem.js +7 -2
  173. package/dist/astryx.css +47 -13
  174. package/dist/hooks/useOverflow.d.ts.map +1 -1
  175. package/dist/hooks/useOverflow.js +14 -4
  176. package/dist/theme/Theme.d.ts.map +1 -1
  177. package/dist/theme/Theme.js +46 -10
  178. package/dist/theme/defineTheme.d.ts +9 -3
  179. package/dist/theme/defineTheme.d.ts.map +1 -1
  180. package/dist/theme/defineTheme.js +5 -0
  181. package/dist/theme/generateThemeRules.d.ts +21 -0
  182. package/dist/theme/generateThemeRules.d.ts.map +1 -1
  183. package/dist/theme/generateThemeRules.js +26 -0
  184. package/locales/af-ZA.json +6 -6
  185. package/locales/ar-SA.json +6 -6
  186. package/locales/ca-ES.json +5 -5
  187. package/locales/cs-CZ.json +6 -6
  188. package/locales/da-DK.json +6 -6
  189. package/locales/de-DE.json +6 -6
  190. package/locales/el-GR.json +6 -6
  191. package/locales/en.json +132 -4
  192. package/locales/es-ES.json +5 -5
  193. package/locales/fi-FI.json +6 -6
  194. package/locales/fr-FR.json +6 -6
  195. package/locales/he-IL.json +6 -6
  196. package/locales/hu-HU.json +6 -6
  197. package/locales/it-IT.json +6 -6
  198. package/locales/ja-JP.json +6 -6
  199. package/locales/ko-KR.json +6 -6
  200. package/locales/nl-NL.json +6 -6
  201. package/locales/no-NO.json +6 -6
  202. package/locales/pl-PL.json +6 -6
  203. package/locales/pseudo.json +96 -0
  204. package/locales/pt-BR.json +6 -6
  205. package/locales/pt-PT.json +6 -6
  206. package/locales/ro-RO.json +6 -6
  207. package/locales/ru-RU.json +6 -6
  208. package/locales/sr-SP.json +6 -6
  209. package/locales/sv-SE.json +6 -6
  210. package/locales/tr-TR.json +6 -6
  211. package/locales/uk-UA.json +6 -6
  212. package/locales/vi-VN.json +6 -6
  213. package/locales/zh-CN.json +6 -6
  214. package/locales/zh-TW.json +6 -6
  215. package/package.json +2 -2
  216. package/src/AlertDialog/AlertDialog.doc.mjs +114 -30
  217. package/src/AlertDialog/AlertDialog.test.tsx +211 -2
  218. package/src/AlertDialog/AlertDialog.tsx +62 -20
  219. package/src/AspectRatio/AspectRatio.doc.mjs +3 -3
  220. package/src/AspectRatio/AspectRatio.tsx +6 -6
  221. package/src/Badge/Badge.doc.mjs +3 -2
  222. package/src/Badge/Badge.test.tsx +32 -3
  223. package/src/Badge/Badge.tsx +42 -1
  224. package/src/Banner/Banner.doc.mjs +9 -0
  225. package/src/Banner/Banner.test.tsx +76 -11
  226. package/src/Banner/Banner.tsx +21 -2
  227. package/src/Button/Button.doc.mjs +2 -1
  228. package/src/Button/Button.test.tsx +19 -4
  229. package/src/Button/Button.tsx +7 -1
  230. package/src/ButtonGroup/ButtonGroup.doc.mjs +2 -2
  231. package/src/ButtonGroup/ButtonGroup.test.tsx +13 -0
  232. package/src/Calendar/Calendar.doc.mjs +3 -3
  233. package/src/Calendar/Calendar.test.tsx +91 -0
  234. package/src/Calendar/Calendar.tsx +12 -11
  235. package/src/Calendar/styles.ts +49 -31
  236. package/src/Card/Card.doc.mjs +10 -7
  237. package/src/Card/Card.test.tsx +113 -19
  238. package/src/Card/Card.tsx +67 -89
  239. package/src/Card/index.ts +36 -1
  240. package/src/ComplexSelector/ComplexSelector.doc.mjs +7 -0
  241. package/src/ComplexSelector/ComplexSelector.test.tsx +183 -0
  242. package/src/ComplexSelector/ComplexSelector.tsx +20 -5
  243. package/src/DateInput/DateInput.doc.mjs +2 -2
  244. package/src/DateInput/DateInputTouch.test.tsx +85 -30
  245. package/src/DateInput/NativeDateField.test.tsx +100 -30
  246. package/src/DateInput/NativeDateField.tsx +24 -6
  247. package/src/DateInput/TouchDateField.tsx +70 -20
  248. package/src/DateInput/nativeDateSegments.ts +127 -0
  249. package/src/DateRangeInput/DateRangeInput.doc.mjs +2 -2
  250. package/src/DateRangeInput/DateRangeInput.test.tsx +22 -0
  251. package/src/DateRangeInput/DateRangeInput.tsx +4 -2
  252. package/src/Dialog/Dialog.test.tsx +185 -18
  253. package/src/Dialog/Dialog.tsx +35 -11
  254. package/src/DropdownMenu/DropdownMenu.test.tsx +44 -10
  255. package/src/DropdownMenu/DropdownMenu.tsx +4 -13
  256. package/src/Field/InputClearButton.test.tsx +15 -1
  257. package/src/Field/InputClearButton.tsx +28 -4
  258. package/src/Heading/Heading.tsx +0 -1
  259. package/src/HoverCard/HoverCard.test.tsx +54 -1
  260. package/src/HoverCard/HoverCard.tsx +74 -2
  261. package/src/HoverCard/useHoverCard.tsx +4 -1
  262. package/src/Icon/Icon.test.tsx +55 -1
  263. package/src/Icon/Icon.tsx +5 -3
  264. package/src/Icon/defaultIcons.tsx +11 -2
  265. package/src/Icon/globalIconRegistry.test.tsx +16 -3
  266. package/src/Icon/globalIconRegistry.tsx +37 -6
  267. package/src/Icon/index.ts +1 -0
  268. package/src/Icon/useIcon.ts +9 -2
  269. package/src/Layer/gestureCounter.ts +57 -0
  270. package/src/Layer/useLayer.test.tsx +324 -15
  271. package/src/Layer/useLayer.tsx +164 -8
  272. package/src/Layout/__tests__/edgeCompensation.test.tsx +1 -1
  273. package/src/List/List.test.tsx +38 -0
  274. package/src/List/List.tsx +8 -1
  275. package/src/Markdown/Markdown.test.tsx +37 -0
  276. package/src/Markdown/Markdown.tsx +16 -5
  277. package/src/Markdown/parser.test.ts +33 -0
  278. package/src/Markdown/parser.ts +9 -3
  279. package/src/MetadataList/MetadataList.test.tsx +75 -2
  280. package/src/MetadataList/MetadataListItem.tsx +5 -2
  281. package/src/MultiSelector/MultiSelector.doc.mjs +22 -1
  282. package/src/MultiSelector/MultiSelector.test.tsx +205 -0
  283. package/src/MultiSelector/MultiSelector.tsx +101 -9
  284. package/src/MultiSelector/hooks.ts +9 -2
  285. package/src/NavMenu/NavHeadingMenu.test.tsx +30 -0
  286. package/src/NavMenu/NavHeadingMenu.tsx +7 -4
  287. package/src/NumberInput/NumberInput.doc.mjs +26 -7
  288. package/src/NumberInput/NumberInput.test.tsx +563 -8
  289. package/src/NumberInput/NumberInput.tsx +74 -124
  290. package/src/NumberInput/numberInputCommit.test.ts +72 -0
  291. package/src/NumberInput/numberInputCommit.ts +103 -0
  292. package/src/NumberInput/numberParser.docblock.test.ts +234 -0
  293. package/src/NumberInput/numberParser.test.ts +222 -0
  294. package/src/NumberInput/numberParser.ts +403 -0
  295. package/src/OverflowList/OverflowList.doc.mjs +102 -21
  296. package/src/OverflowList/OverflowList.test.tsx +550 -4
  297. package/src/OverflowList/OverflowList.tsx +100 -2
  298. package/src/Pagination/Pagination.test.tsx +3 -2
  299. package/src/Popover/Popover.doc.mjs +2 -2
  300. package/src/Popover/Popover.test.tsx +38 -0
  301. package/src/Popover/Popover.tsx +28 -66
  302. package/src/Popover/usePopover.tsx +44 -5
  303. package/src/PowerSearch/PowerSearchEditPopover.test.tsx +87 -0
  304. package/src/PowerSearch/PowerSearchValueEditor.test.tsx +64 -0
  305. package/src/PowerSearch/PowerSearchValueEditor.tsx +109 -10
  306. package/src/Resizable/Resizable.doc.mjs +2 -2
  307. package/src/Resizable/useResizable.doc.mjs +21 -2
  308. package/src/Resizable/useResizable.test.ts +402 -0
  309. package/src/Resizable/useResizable.ts +130 -47
  310. package/src/SelectableCard/SelectableCard.doc.mjs +3 -0
  311. package/src/SelectableCard/SelectableCard.tsx +16 -0
  312. package/src/Selector/Selector.doc.mjs +14 -0
  313. package/src/Selector/Selector.source-build.test.mjs +65 -0
  314. package/src/Selector/Selector.test.tsx +301 -0
  315. package/src/Selector/Selector.tsx +143 -25
  316. package/src/Selector/hooks.ts +17 -2
  317. package/src/SideNav/SideNav.doc.mjs +2 -2
  318. package/src/SideNav/SideNav.test.tsx +364 -1
  319. package/src/SideNav/SideNav.tsx +109 -38
  320. package/src/Slider/Slider.test.tsx +106 -1
  321. package/src/Slider/Slider.tsx +52 -1
  322. package/src/Spinner/Spinner.doc.mjs +17 -5
  323. package/src/Spinner/Spinner.test.tsx +164 -0
  324. package/src/Spinner/Spinner.tsx +252 -22
  325. package/src/Stepper/Step.doc.mjs +1 -1
  326. package/src/Table/Table.doc.mjs +2 -2
  327. package/src/Table/TableBody.doc.mjs +2 -2
  328. package/src/Table/TableFooter.doc.mjs +1 -1
  329. package/src/Table/TableHeader.doc.mjs +1 -1
  330. package/src/Table/plugins/filtering/useTableFiltering.test.tsx +44 -6
  331. package/src/Table/plugins/filtering/useTableFiltering.tsx +100 -4
  332. package/src/Table/plugins/groupedRows/useTableGroupedRows.tsx +50 -4
  333. package/src/Table/plugins/selection/useTableSelection.test.tsx +62 -0
  334. package/src/Table/plugins/selection/useTableSelection.tsx +25 -2
  335. package/src/Table/useTableGroupedRows.doc.mjs +3 -3
  336. package/src/Table/useTablePagination.doc.mjs +1 -1
  337. package/src/Table/useTableSelection.doc.mjs +1 -1
  338. package/src/Text/Text.test.tsx +44 -0
  339. package/src/Text/Text.tsx +0 -1
  340. package/src/TextArea/TextArea.doc.mjs +4 -0
  341. package/src/TextArea/TextArea.tsx +22 -16
  342. package/src/Timestamp/Timestamp.test.tsx +58 -0
  343. package/src/Timestamp/Timestamp.tsx +8 -8
  344. package/src/Toast/Toast.doc.mjs +20 -12
  345. package/src/Toast/Toast.tsx +28 -4
  346. package/src/Toast/ToastViewport.test.tsx +536 -8
  347. package/src/Toast/ToastViewport.tsx +81 -12
  348. package/src/Token/Token.test.tsx +95 -0
  349. package/src/Token/Token.tsx +15 -10
  350. package/src/Token/TokenLink.tsx +12 -3
  351. package/src/Tokenizer/Tokenizer.doc.mjs +16 -3
  352. package/src/Tokenizer/Tokenizer.test.tsx +161 -0
  353. package/src/Tokenizer/Tokenizer.tsx +49 -24
  354. package/src/TopNav/TopNavMegaMenu.test.tsx +104 -0
  355. package/src/TopNav/TopNavMegaMenu.tsx +45 -4
  356. package/src/TopNav/TopNavMenu.test.tsx +133 -1
  357. package/src/TopNav/TopNavMenu.tsx +35 -5
  358. package/src/TreeList/TreeList.test.tsx +49 -0
  359. package/src/TreeList/TreeList.tsx +7 -2
  360. package/src/Typeahead/BaseTypeahead.doc.mjs +13 -0
  361. package/src/Typeahead/BaseTypeahead.tsx +96 -6
  362. package/src/Typeahead/Typeahead.doc.mjs +6 -0
  363. package/src/Typeahead/Typeahead.test.tsx +154 -0
  364. package/src/Typeahead/Typeahead.tsx +9 -0
  365. package/src/Typeahead/TypeaheadItem.test.tsx +43 -0
  366. package/src/Typeahead/TypeaheadItem.tsx +8 -1
  367. package/src/hooks/useAnnounce.doc.mjs +96 -0
  368. package/src/hooks/useDevWarning.doc.mjs +96 -0
  369. package/src/hooks/useIndicatorFocusRing.doc.mjs +104 -0
  370. package/src/hooks/useInputStatusIcon.doc.mjs +142 -0
  371. package/src/hooks/useInteractiveRole.doc.mjs +119 -0
  372. package/src/hooks/useLongPress.doc.mjs +123 -0
  373. package/src/hooks/useOverflow.doc.mjs +58 -17
  374. package/src/hooks/useOverflow.ts +16 -4
  375. package/src/hooks/useTypeahead.doc.mjs +153 -0
  376. package/src/raw-import.d.ts +14 -0
  377. package/src/theme/Theme.test.tsx +104 -2
  378. package/src/theme/Theme.tsx +49 -14
  379. package/src/theme/defineTheme.test.ts +23 -0
  380. package/src/theme/defineTheme.ts +12 -3
  381. package/src/theme/derivedVarRegistry.test.ts +64 -0
  382. package/src/theme/generateThemeRules.test.ts +62 -1
  383. package/src/theme/generateThemeRules.ts +28 -0
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @file AlertDialog.tsx
3
- * @input Uses React, Dialog, Layout, Heading, Text, Button
3
+ * @input Uses React, StyleX, Dialog, Layout, Heading, Text, Button
4
4
  * @output Exports AlertDialog component, AlertDialogProps type
5
5
  * @position Core implementation; consumed by index.ts, tested by AlertDialog.test.tsx
6
6
  *
@@ -1 +1 @@
1
- {"version":3,"file":"AlertDialog.d.ts","sourceRoot":"","sources":["../../src/AlertDialog/AlertDialog.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAA2B,MAAM,OAAO,CAAC;AAQhD,OAAO,EAAS,KAAK,aAAa,EAAC,MAAM,WAAW,CAAC;AACrD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAK5C,MAAM,WAAW,gBAAiB,SAAQ,SAAS,CAAC,iBAAiB,CAAC;IACpE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACnC;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC;IAE3C;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAE9B;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;OAGG;IACH,QAAQ,EAAE,MAAM,OAAO,CAAC;IAExB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,WAAW,CAAC,EAC1B,GAAG,EACH,MAAM,EACN,QAAQ,EACR,YAAY,EACZ,KAAK,EACL,WAAW,EACX,WAAW,EAAE,oBAAoB,EACjC,WAAW,EACX,aAA6B,EAC7B,eAAe,EACf,QAAQ,EACR,KAAW,EACX,MAAM,EACN,SAAS,EACT,KAAK,EACL,aAAa,EAAE,MAAM,EACrB,GAAG,IAAI,EACR,EAAE,gBAAgB,qBAkElB;yBApFe,WAAW"}
1
+ {"version":3,"file":"AlertDialog.d.ts","sourceRoot":"","sources":["../../src/AlertDialog/AlertDialog.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAA2B,MAAM,OAAO,CAAC;AAShD,OAAO,EAAS,KAAK,aAAa,EAAC,MAAM,WAAW,CAAC;AACrD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAkB5C,MAAM,WAAW,gBAAiB,SAAQ,SAAS,CAAC,iBAAiB,CAAC;IACpE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACnC;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC;IAE3C;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAE9B;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;OAGG;IACH,QAAQ,EAAE,MAAM,OAAO,CAAC;IAExB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,WAAW,CAAC,EAC1B,GAAG,EACH,MAAM,EACN,QAAQ,EACR,YAAY,EACZ,KAAK,EACL,WAAW,EACX,WAAW,EAAE,oBAAoB,EACjC,WAAW,EACX,aAA6B,EAC7B,eAAe,EACf,QAAQ,EACR,KAAW,EACX,MAAM,EACN,SAAS,EACT,KAAK,EACL,aAAa,EAAE,MAAM,EACrB,GAAG,IAAI,EACR,EAAE,gBAAgB,qBA8FlB;yBAhHe,WAAW"}
@@ -4,7 +4,7 @@
4
4
 
5
5
  /**
6
6
  * @file AlertDialog.tsx
7
- * @input Uses React, Dialog, Layout, Heading, Text, Button
7
+ * @input Uses React, StyleX, Dialog, Layout, Heading, Text, Button
8
8
  * @output Exports AlertDialog component, AlertDialogProps type
9
9
  * @position Core implementation; consumed by index.ts, tested by AlertDialog.test.tsx
10
10
  *
@@ -16,18 +16,32 @@
16
16
  * - /packages/cli/assets/templates/blocks/components/AlertDialog/ (showcase blocks)
17
17
  */
18
18
  import React, { useId, useCallback } from 'react';
19
+ import * as stylex from '@stylexjs/stylex';
19
20
  import { Dialog } from "../Dialog/index.js";
20
21
  import { Layout } from "../Layout/Layout.js";
21
22
  import { LayoutContent } from "../Layout/LayoutContent.js";
22
23
  import { LayoutFooter } from "../Layout/LayoutFooter.js";
23
- import { HStack } from "../Stack/index.js";
24
+ import { Stack } from "../Stack/index.js";
24
25
  import { Heading } from "../Heading/Heading.js";
25
26
  import { Text } from "../Text/Text.js";
26
27
  import { Button } from "../Button/index.js";
27
28
  import { mergeProps } from "../utils/index.js";
28
29
  import { themeProps } from "../utils/themeProps.js";
29
30
  import { useTranslator } from "../i18n/index.js";
31
+ import { useMediaQuery } from "../hooks/index.js";
30
32
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
33
+ const SMALL_SCREEN_QUERY = '(max-width: 640px)';
34
+ const styles = {
35
+ action: {
36
+ ks0D6T: "x193iq5w",
37
+ k7Eaqz: "xeuugli",
38
+ $$css: true
39
+ },
40
+ stackedAction: {
41
+ kzqmXN: "xh8yej3",
42
+ $$css: true
43
+ }
44
+ };
31
45
  /**
32
46
  * A confirmation dialog for destructive or irreversible actions.
33
47
  *
@@ -77,9 +91,33 @@ export function AlertDialog({
77
91
  const cancelLabel = cancelLabelFromProps ?? t('@astryx.alertDialog.cancel');
78
92
  const titleId = useId();
79
93
  const descriptionId = useId();
94
+ // Width stays delegated to Dialog: this query exists only so AlertDialog can
95
+ // keep narrow visual, DOM, and tab order aligned for its destructive/cancel
96
+ // semantics without coupling action order to pointer or hover capability.
97
+ const isSmallScreen = useMediaQuery(SMALL_SCREEN_QUERY);
80
98
  const handleCancel = useCallback(() => {
81
99
  onOpenChange(false);
82
100
  }, [onOpenChange]);
101
+ const buttonActionStyle = [styles.action, isSmallScreen && styles.stackedAction];
102
+ const cancelButton = /*#__PURE__*/_jsx(Button, {
103
+ variant: "ghost",
104
+ label: cancelLabel,
105
+ onClick: handleCancel,
106
+ xstyle: buttonActionStyle
107
+ // Dialog focuses [data-autofocus] itself after showModal(), because
108
+ // React's autoFocus runs during commit while the dialog is invisible.
109
+ // Cancel is least destructive, so it remains the autofocus target even
110
+ // when small-screen visual order places the destructive action above it.
111
+ ,
112
+ "data-autofocus": true
113
+ }, "cancel");
114
+ const actionButton = /*#__PURE__*/_jsx(Button, {
115
+ variant: actionVariant,
116
+ label: actionLabel,
117
+ onClick: onAction,
118
+ isLoading: isActionLoading,
119
+ xstyle: buttonActionStyle
120
+ }, "action");
83
121
  return /*#__PURE__*/_jsx(Dialog, {
84
122
  ...rest,
85
123
  ref: ref,
@@ -117,25 +155,12 @@ export function AlertDialog({
117
155
  })]
118
156
  }),
119
157
  footer: /*#__PURE__*/_jsx(LayoutFooter, {
120
- children: /*#__PURE__*/_jsxs(HStack, {
158
+ children: /*#__PURE__*/_jsx(Stack, {
159
+ direction: isSmallScreen ? 'vertical' : 'horizontal',
121
160
  gap: 2,
122
- hAlign: "end",
123
- children: [/*#__PURE__*/_jsx(Button, {
124
- variant: "ghost",
125
- label: cancelLabel,
126
- onClick: handleCancel
127
- // Dialog focuses [data-autofocus] itself after showModal(),
128
- // because React's autoFocus runs during commit while the
129
- // dialog is still invisible. Cancel is the least destructive
130
- // choice, so it is the one that should be preselected.
131
- ,
132
- "data-autofocus": true
133
- }), /*#__PURE__*/_jsx(Button, {
134
- variant: actionVariant,
135
- label: actionLabel,
136
- onClick: onAction,
137
- isLoading: isActionLoading
138
- })]
161
+ hAlign: isSmallScreen ? 'stretch' : 'end',
162
+ wrap: isSmallScreen ? 'nowrap' : 'wrap',
163
+ children: isSmallScreen ? [actionButton, cancelButton] : [cancelButton, actionButton]
139
164
  })
140
165
  })
141
166
  })
@@ -44,14 +44,14 @@ export interface AspectRatioProps extends BaseProps<HTMLDivElement> {
44
44
  * `astryx-base` cascade layer, and unlayered CSS wins over layered
45
45
  * rules regardless of specificity.
46
46
  *
47
+ * A responsive ratio is set in CSS, not on the component. For example, a 3:1
48
+ * hero can become 3:2 when its container narrows by targeting the element's
49
+ * class from a container query:
50
+ * `@container gallery (max-width: 720px) { .gallery-hero { aspect-ratio: 3 / 2; } }`.
51
+ *
47
52
  * @example
48
53
  * ```
49
- * // 3:1 hero that becomes 3:2 when its container stacks
50
- * <AspectRatio ratio={3 / 1} className="gallery-hero">…</AspectRatio>
51
- *
52
- * // CSS: @container gallery (max-width: 720px) {
53
- * // .gallery-hero { aspect-ratio: 3 / 2; }
54
- * // }
54
+ * <AspectRatio ratio={3 / 1} className="gallery-hero">...</AspectRatio>
55
55
  * ```
56
56
  */
57
57
  ratio: number;
@@ -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",
@@ -1 +1 @@
1
- {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../src/Button/Button.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../src/Button/Button.tsx"],"names":[],"mappings":"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"}
@@ -445,9 +445,13 @@ export function Button({
445
445
  // for every variant, and `destructive` re-colors just the ring to match
446
446
  // its own surface. Ordering is the mechanism — StyleX is last-wins.
447
447
  variants[variant], xstyle);
448
- const sharedMergedProps = mergeProps(themeProps('button', {
448
+ const sharedMergedProps = mergeProps(
449
+ // Inside a group the group owns the surface's elevation, so the button
450
+ // reflects the tier it actually paints rather than the prop it was handed.
451
+ themeProps('button', {
449
452
  variant,
450
- size
453
+ size,
454
+ elevation: buttonGroup ? 'none' : elevation
451
455
  }), sharedStylexProps, className, style);
452
456
  const buttonContent = /*#__PURE__*/_jsxs(_Fragment, {
453
457
  children: [isLoadingState && /*#__PURE__*/_jsx("span", {
@@ -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,16 +252,15 @@ 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
- date: plainDateFormat(date, DATE_FORMAT_WITH_WEEKDAY)
263
+ date: plainDateFormat(date, DATE_FORMAT_WITH_WEEKDAY, locale)
265
264
  }));
266
265
  return;
267
266
  }
@@ -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,
@@ -33,19 +33,9 @@ export declare const calendarStyles: Readonly<{
33
33
  }>;
34
34
  readonly monthsContainer: Readonly<{
35
35
  readonly display: stylex.StyleXClassNameFor<"display", "flex">;
36
+ readonly flexWrap: stylex.StyleXClassNameFor<"flexWrap", "wrap">;
36
37
  readonly gap: stylex.StyleXClassNameFor<"gap", "16px">;
37
38
  }>;
38
- readonly srOnly: Readonly<{
39
- readonly position: stylex.StyleXClassNameFor<"position", "absolute">;
40
- readonly width: stylex.StyleXClassNameFor<"width", "1px">;
41
- readonly height: stylex.StyleXClassNameFor<"height", "1px">;
42
- readonly padding: stylex.StyleXClassNameFor<"padding", 0>;
43
- readonly margin: stylex.StyleXClassNameFor<"margin", "-1px">;
44
- readonly overflow: stylex.StyleXClassNameFor<"overflow", "hidden">;
45
- readonly clip: stylex.StyleXClassNameFor<"clip", "rect(0, 0, 0, 0)">;
46
- readonly whiteSpace: stylex.StyleXClassNameFor<"whiteSpace", "nowrap">;
47
- readonly borderWidth: stylex.StyleXClassNameFor<"borderWidth", 0>;
48
- }>;
49
39
  readonly navIcon: Readonly<{
50
40
  readonly display: stylex.StyleXClassNameFor<"display", "inline-flex">;
51
41
  }>;
@@ -154,7 +144,7 @@ export declare const dayCellStyles: Readonly<{
154
144
  readonly display: stylex.StyleXClassNameFor<"display", "flex">;
155
145
  readonly alignItems: stylex.StyleXClassNameFor<"alignItems", "center">;
156
146
  readonly justifyContent: stylex.StyleXClassNameFor<"justifyContent", "center">;
157
- readonly borderRadius: stylex.StyleXClassNameFor<"borderRadius", "50%">;
147
+ readonly borderRadius: stylex.StyleXClassNameFor<"borderRadius", "9999px">;
158
148
  readonly borderWidth: stylex.StyleXClassNameFor<"borderWidth", 0>;
159
149
  readonly borderStyle: stylex.StyleXClassNameFor<"borderStyle", "none">;
160
150
  readonly cursor: stylex.StyleXClassNameFor<"cursor", "default" | "pointer">;
@@ -209,8 +199,9 @@ export declare const dayCellTheme: Readonly<{
209
199
  readonly boxShadow: stylex.StyleXClassNameFor<"boxShadow", `inset 0 0 0 1px ${stylex.StyleXVar<"light-dark(#0A1317, #DFE2E5)">}`>;
210
200
  }>;
211
201
  readonly daySelected: Readonly<{
212
- readonly backgroundColor: stylex.StyleXClassNameFor<"backgroundColor", "light-dark(#0064E0, #2694FE)">;
213
- readonly color: stylex.StyleXClassNameFor<"color", "light-dark(#FFFFFF, #FFFFFF)">;
202
+ readonly forcedColorAdjust: stylex.StyleXClassNameFor<"forcedColorAdjust", "none">;
203
+ readonly backgroundColor: stylex.StyleXClassNameFor<"backgroundColor", "light-dark(#0064E0, #2694FE)" | "Highlight">;
204
+ readonly color: stylex.StyleXClassNameFor<"color", "light-dark(#FFFFFF, #FFFFFF)" | "HighlightText">;
214
205
  readonly backgroundImage: stylex.StyleXClassNameFor<"backgroundImage", {
215
206
  readonly '@media (hover: hover)': `linear-gradient(${stylex.StyleXVar<"light-dark(#0536590C, #FFFFFF0C)">}, ${stylex.StyleXVar<"light-dark(#0536590C, #FFFFFF0C)">})`;
216
207
  } | null>;
@@ -1 +1 @@
1
- {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/Calendar/styles.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAgB3C,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2CzB,CAAC;AAMH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuC1B,CAAC;AAMH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+GxB,CAAC;AAMH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4DvB,CAAC"}
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/Calendar/styles.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAgB3C,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoCzB,CAAC;AAMH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuC1B,CAAC;AAiBH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+GxB,CAAC;AAMH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0EvB,CAAC"}
@@ -46,21 +46,10 @@ export const calendarStyles = {
46
46
  },
47
47
  monthsContainer: {
48
48
  k1xSpc: "x78zum5",
49
+ kwnvtZ: "x1a02dak",
49
50
  kOIVth: "x18g69wz",
50
51
  $$css: true
51
52
  },
52
- srOnly: {
53
- kVAEAm: "x10l6tqk",
54
- kzqmXN: "x1i1rx1s",
55
- kZKoxP: "xjm9jq1",
56
- kmVPX3: "x1717udv",
57
- kogj98: "xkdpibf",
58
- kVQacm: "xb3r6kr",
59
- kMcinP: "xzpqnlu",
60
- khDVqt: "xuxw1ft",
61
- kMzoRj: "xc342km",
62
- $$css: true
63
- },
64
53
  navIcon: {
65
54
  k1xSpc: "x3nfvp2",
66
55
  $$css: true
@@ -122,6 +111,16 @@ export const monthGridStyles = {
122
111
  // Day Cell Styles - Structural (layout, sizing, positioning)
123
112
  // =============================================================================
124
113
 
114
+ // Half the gap between the day button and its cell — (--size-element-md minus
115
+ // --size-element-sm) / 2 — so the band's rounded caps line up with the button
116
+ // and the button's ::before bleeds out to meet its neighbour's. Deliberately a
117
+ // literal and NOT a spacing token: this is a layout value derived from the two
118
+ // size tokens, and pinning it to --spacing-0-5 desynchronises it from them
119
+ // (matcha sets that step to 3px, which overlaps adjacent days' hit targets by
120
+ // 2px). Deriving it with calc() from the size tokens would be better still and
121
+ // would close butter's 4px dead gap; that needs its own measured change.
122
+ const BAND_INSET = '2px';
123
+ const HIT_BLEED = '-2px';
125
124
  export const dayCellStyles = {
126
125
  cell: {
127
126
  kVAEAm: "x1n2onr6",
@@ -198,7 +197,7 @@ export const dayCellStyles = {
198
197
  k1xSpc: "x78zum5",
199
198
  kGNEyG: "x6s0dn4",
200
199
  kjj79g: "xl56j7k",
201
- kaIpWk: "x16rqkct",
200
+ kaIpWk: "xjspbzw",
202
201
  kMzoRj: "xc342km",
203
202
  ksu8eU: "xng3xce",
204
203
  kkrTdU: "x1ypdohk x16khyan",
@@ -269,8 +268,9 @@ export const dayCellTheme = {
269
268
  $$css: true
270
269
  },
271
270
  daySelected: {
272
- kWkggS: "x1ewilqj",
273
- kMwMTN: "x17wrial",
271
+ kAXs8y: "x1kzknox",
272
+ kWkggS: "x1ewilqj x1jzqe4",
273
+ kMwMTN: "x17wrial x1k5gbb1",
274
274
  kKwaWg: "xmvprkv",
275
275
  $$css: true
276
276
  },
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @file Card.tsx
3
3
  * @input Uses container utility, StyleX
4
- * @output Exports Card component and CardProps
4
+ * @output Exports Card component, CardProps, CardVariant types
5
5
  * @position Core card container component
6
6
  *
7
7
  * SYNC: When modified, update these files to stay in sync:
@@ -13,8 +13,11 @@
13
13
  import type { ReactNode } from 'react';
14
14
  import type { Elevation, SizeValue, SpacingStep } from '../utils/types';
15
15
  import type { BaseProps } from '../BaseProps';
16
+ import type { CardVariantMap } from './index';
16
17
  /**
17
- * Background color variant for Card.
18
+ * Background color variant for Card, derived from CardVariantMap.
19
+ * Extensible via module augmentation of CardVariantMap.
20
+ *
18
21
  * - `default`: standard card background with visible border
19
22
  * - `transparent`: no background, no visible border — for grouping content without visual weight
20
23
  * - `muted`: subtle muted background for de-emphasised cards
@@ -26,18 +29,10 @@ import type { BaseProps } from '../BaseProps';
26
29
  * keeping content geometry faithful to the spacing scale and identical to the
27
30
  * borderless variants. Themes can override borderWidth/borderColor.
28
31
  */
29
- export type CardVariant = 'default' | 'transparent' | 'muted' | 'blue' | 'cyan' | 'gray' | 'green' | 'orange' | 'pink' | 'purple' | 'red' | 'teal' | 'yellow';
32
+ export type CardVariant = keyof CardVariantMap;
30
33
  export type { SizeValue } from '../utils/types';
31
34
  export interface CardProps extends BaseProps<HTMLDivElement> {
32
35
  ref?: React.Ref<HTMLDivElement>;
33
- /**
34
- * CSS class name(s) appended to the root element.
35
- */
36
- className?: string;
37
- /**
38
- * Inline styles to apply to the root element.
39
- */
40
- style?: React.CSSProperties;
41
36
  /**
42
37
  * Width of the card.
43
38
  * Numbers are treated as pixels, strings are used as-is.
@@ -66,7 +61,12 @@ export interface CardProps extends BaseProps<HTMLDivElement> {
66
61
  /**
67
62
  * Internal padding of the card using the spacing scale.
68
63
  * Accepts numeric spacing steps: 0, 0.5, 1, 1.5, 2, 3, 4, 5, 6, 8, 10.
69
- * @default 4 (16px)
64
+ *
65
+ * Omit it and the card takes the theme's card padding rather than a step, so
66
+ * passing a step is a decision to override the theme, not a way to restate
67
+ * the default.
68
+ *
69
+ * @default the theme's card padding (spacing step 4 with no theme)
70
70
  */
71
71
  padding?: SpacingStep;
72
72
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../src/Card/Card.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AAiBrC,OAAO,KAAK,EAAC,SAAS,EAAE,SAAS,EAAE,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAEtE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAO5C;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,WAAW,GACnB,SAAS,GACT,aAAa,GACb,OAAO,GACP,MAAM,GACN,MAAM,GACN,MAAM,GACN,OAAO,GACP,QAAQ,GACR,MAAM,GACN,QAAQ,GACR,KAAK,GACL,MAAM,GACN,QAAQ,CAAC;AA2Gb,YAAY,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAE9C,MAAM,WAAW,SAAU,SAAQ,SAAS,CAAC,cAAc,CAAC;IAC1D,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB;;;;OAIG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,IAAI,CAAC,EACnB,KAAK,EACL,MAAM,EACN,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,OAAO,EACP,OAAmB,EACnB,SAAkB,EAClB,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,KAAK,EACT,EAAE,SAAS,+BA2DX;yBAzEe,IAAI"}
1
+ {"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../src/Card/Card.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AAYrC,OAAO,KAAK,EAAC,SAAS,EAAE,SAAS,EAAE,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAEtE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAE5C,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,SAAS,CAAC;AAM5C;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC;AAgH/C,YAAY,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAE9C,MAAM,WAAW,SAAU,SAAQ,SAAS,CAAC,cAAc,CAAC;IAC1D,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB;;;;;;;;;OASG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,IAAI,CAAC,EACnB,KAAK,EACL,MAAM,EACN,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,OAAO,EACP,OAAmB,EACnB,SAAkB,EAClB,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,KAAK,EACT,EAAE,SAAS,+BAkDX;yBAhEe,IAAI"}
package/dist/Card/Card.js CHANGED
@@ -3,7 +3,7 @@
3
3
  /**
4
4
  * @file Card.tsx
5
5
  * @input Uses container utility, StyleX
6
- * @output Exports Card component and CardProps
6
+ * @output Exports Card component, CardProps, CardVariant types
7
7
  * @position Core card container component
8
8
  *
9
9
  * SYNC: When modified, update these files to stay in sync:
@@ -17,7 +17,7 @@ import * as stylex from '@stylexjs/stylex';
17
17
  import "../theme/tokens.stylex.js";
18
18
  import { borderVars, colorVars, radiusVars, shadowVars } from "../theme/tokens.stylex.js";
19
19
  import { container } from "../Layout/container.stylex.js";
20
- import { paddingStyles, containerPaddingInlineVarStyles, containerPaddingBlockStartVarStyles, containerPaddingBlockEndVarStyles, spacingStepToToken } from "../Layout/padding.stylex.js";
20
+ import { spacingStepToToken } from "../Layout/padding.stylex.js";
21
21
  import { mergeProps } from "../utils/index.js";
22
22
  import { themeProps } from "../utils/themeProps.js";
23
23
 
@@ -26,7 +26,9 @@ import { themeProps } from "../utils/themeProps.js";
26
26
  // =============================================================================
27
27
 
28
28
  /**
29
- * Background color variant for Card.
29
+ * Background color variant for Card, derived from CardVariantMap.
30
+ * Extensible via module augmentation of CardVariantMap.
31
+ *
30
32
  * - `default`: standard card background with visible border
31
33
  * - `transparent`: no background, no visible border — for grouping content without visual weight
32
34
  * - `muted`: subtle muted background for de-emphasised cards
@@ -67,7 +69,10 @@ const styles = {
67
69
  }
68
70
  };
69
71
 
70
- // Background variant styles — each maps to a design token
72
+ // Background variant styles — each maps to a design token. Typed as PARTIAL
73
+ // over CardVariant: a theme can add a variant, and the record deliberately has
74
+ // no entry for it, so the lookup is undefined, StyleX drops it, and the card
75
+ // takes base styles for the theme rule to paint over.
71
76
  const variantStyles = {
72
77
  default: {
73
78
  kWkggS: "x1de1mus",
@@ -216,20 +221,23 @@ export function Card({
216
221
 
217
222
  // When no explicit padding prop, use theme default (set via container tokens)
218
223
  const useThemeDefault = padding == null;
219
- const effectivePadding = padding ?? 4;
220
- const paddingToken = spacingStepToToken[effectivePadding];
224
+ const paddingToken = useThemeDefault ? undefined : spacingStepToToken[padding];
221
225
  return /*#__PURE__*/_jsx("div", {
222
226
  ref: ref,
223
227
  ...mergeProps(themeProps('card', {
224
- variant
225
- }), stylex.props(styles.card, variantStyles[variant], elevationStyles[elevation], hasFixedHeight && styles.scrollable, dynamicStyles.sizing(width ?? null, height ?? null, maxWidth ?? null, minHeight ?? null), ...container(useThemeDefault ? {
228
+ variant,
229
+ elevation
230
+ }), stylex.props(styles.card,
231
+ // A theme's own variant is not a key here: the lookup is undefined,
232
+ // StyleX drops it, and the theme rule paints over base styles.
233
+ variantStyles[variant], elevationStyles[elevation], hasFixedHeight && styles.scrollable, dynamicStyles.sizing(width ?? null, height ?? null, maxWidth ?? null, minHeight ?? null), ...container(paddingToken == null ? {
226
234
  useThemeDefault: 'card'
227
235
  } : {
228
236
  paddingInnerX: paddingToken,
229
237
  paddingInnerY: paddingToken,
230
238
  paddingOuterX: paddingToken,
231
239
  paddingOuterY: paddingToken
232
- }), !useThemeDefault && effectivePadding !== 4 && paddingStyles[effectivePadding], !useThemeDefault && effectivePadding !== 4 && containerPaddingInlineVarStyles[effectivePadding], !useThemeDefault && effectivePadding !== 4 && containerPaddingBlockStartVarStyles[effectivePadding], !useThemeDefault && effectivePadding !== 4 && containerPaddingBlockEndVarStyles[effectivePadding],
240
+ }),
233
241
  // Applied after the container padding so the border-inset calc wins;
234
242
  // it reads the --container-padding-* vars set above.
235
243
  variant === 'default' && styles.withBorder, xstyle), className, style),