@astryxdesign/core 0.1.2 → 0.1.3-canary.1e94ba0

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 (581) hide show
  1. package/CHANGELOG.md +165 -0
  2. package/README.md +12 -12
  3. package/dist/Avatar/Avatar.d.ts.map +1 -1
  4. package/dist/Avatar/Avatar.js +11 -5
  5. package/dist/Breadcrumbs/BreadcrumbItem.d.ts +1 -1
  6. package/dist/Breadcrumbs/BreadcrumbItem.d.ts.map +1 -1
  7. package/dist/Breadcrumbs/BreadcrumbItem.js +24 -5
  8. package/dist/Button/Button.d.ts.map +1 -1
  9. package/dist/Button/Button.js +31 -12
  10. package/dist/ButtonGroup/ButtonGroup.d.ts.map +1 -1
  11. package/dist/ButtonGroup/ButtonGroup.js +0 -1
  12. package/dist/Calendar/Calendar.d.ts +5 -4
  13. package/dist/Calendar/Calendar.d.ts.map +1 -1
  14. package/dist/Calendar/Calendar.js +82 -43
  15. package/dist/Calendar/hooks/index.d.ts +0 -2
  16. package/dist/Calendar/hooks/index.d.ts.map +1 -1
  17. package/dist/Calendar/hooks/index.js +1 -2
  18. package/dist/Calendar/index.d.ts +3 -3
  19. package/dist/Calendar/index.d.ts.map +1 -1
  20. package/dist/Calendar/index.js +1 -1
  21. package/dist/Calendar/styles.d.ts +3 -9
  22. package/dist/Calendar/styles.d.ts.map +1 -1
  23. package/dist/Calendar/styles.js +3 -11
  24. package/dist/Carousel/Carousel.d.ts.map +1 -1
  25. package/dist/Carousel/Carousel.js +17 -3
  26. package/dist/Center/Center.d.ts +11 -1
  27. package/dist/Center/Center.d.ts.map +1 -1
  28. package/dist/Center/Center.js +9 -3
  29. package/dist/Chat/ChatComposerInput.d.ts.map +1 -1
  30. package/dist/Chat/ChatComposerInput.js +0 -1
  31. package/dist/Chat/ChatMessageList.d.ts +14 -1
  32. package/dist/Chat/ChatMessageList.d.ts.map +1 -1
  33. package/dist/Chat/ChatMessageList.js +2 -0
  34. package/dist/Chat/useTriggerMenu.d.ts +8 -1
  35. package/dist/Chat/useTriggerMenu.d.ts.map +1 -1
  36. package/dist/Chat/useTriggerMenu.js +15 -3
  37. package/dist/CheckboxInput/CheckboxInput.d.ts +23 -2
  38. package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
  39. package/dist/CheckboxInput/CheckboxInput.js +51 -9
  40. package/dist/CheckboxList/CheckboxList.d.ts +13 -1
  41. package/dist/CheckboxList/CheckboxList.d.ts.map +1 -1
  42. package/dist/CheckboxList/CheckboxList.js +39 -9
  43. package/dist/CheckboxList/CheckboxListContext.d.ts +7 -0
  44. package/dist/CheckboxList/CheckboxListContext.d.ts.map +1 -1
  45. package/dist/CheckboxList/CheckboxListItem.d.ts.map +1 -1
  46. package/dist/CheckboxList/CheckboxListItem.js +0 -1
  47. package/dist/Citation/Citation.d.ts.map +1 -1
  48. package/dist/Citation/Citation.js +9 -5
  49. package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
  50. package/dist/CodeBlock/CodeBlock.js +51 -37
  51. package/dist/CommandPalette/CommandPalette.d.ts.map +1 -1
  52. package/dist/CommandPalette/CommandPalette.js +5 -5
  53. package/dist/ContextMenu/ContextMenu.d.ts +12 -5
  54. package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
  55. package/dist/ContextMenu/ContextMenu.js +96 -11
  56. package/dist/DateInput/DateInput.d.ts +23 -1
  57. package/dist/DateInput/DateInput.d.ts.map +1 -1
  58. package/dist/DateInput/DateInput.js +167 -99
  59. package/dist/DateRangeInput/DateRangeInput.d.ts +23 -1
  60. package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
  61. package/dist/DateRangeInput/DateRangeInput.js +42 -9
  62. package/dist/DateTimeInput/DateTimeInput.d.ts +35 -2
  63. package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
  64. package/dist/DateTimeInput/DateTimeInput.js +78 -15
  65. package/dist/Dialog/Dialog.d.ts.map +1 -1
  66. package/dist/Dialog/Dialog.js +12 -0
  67. package/dist/DropdownMenu/DropdownMenu.d.ts +1 -8
  68. package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
  69. package/dist/DropdownMenu/DropdownMenu.js +42 -14
  70. package/dist/Field/Field.d.ts +19 -2
  71. package/dist/Field/Field.d.ts.map +1 -1
  72. package/dist/Field/Field.js +4 -0
  73. package/dist/Field/FieldLabel.d.ts +21 -2
  74. package/dist/Field/FieldLabel.d.ts.map +1 -1
  75. package/dist/Field/FieldLabel.js +41 -26
  76. package/dist/FileInput/FileInput.d.ts +22 -1
  77. package/dist/FileInput/FileInput.d.ts.map +1 -1
  78. package/dist/FileInput/FileInput.js +56 -10
  79. package/dist/Grid/Grid.d.ts +11 -1
  80. package/dist/Grid/Grid.d.ts.map +1 -1
  81. package/dist/Grid/Grid.js +32 -6
  82. package/dist/InputGroup/InputGroup.d.ts +4 -3
  83. package/dist/InputGroup/InputGroup.d.ts.map +1 -1
  84. package/dist/InputGroup/InputGroup.js +16 -6
  85. package/dist/InputGroup/InputGroupContext.d.ts +4 -0
  86. package/dist/InputGroup/InputGroupContext.d.ts.map +1 -1
  87. package/dist/InputGroup/InputGroupContext.js +2 -2
  88. package/dist/InputGroup/groupStyles.d.ts +1 -1
  89. package/dist/InputGroup/groupStyles.d.ts.map +1 -1
  90. package/dist/InputGroup/groupStyles.js +3 -3
  91. package/dist/InputGroup/index.d.ts +1 -0
  92. package/dist/InputGroup/index.d.ts.map +1 -1
  93. package/dist/Kbd/Kbd.d.ts.map +1 -1
  94. package/dist/Kbd/Kbd.js +33 -1
  95. package/dist/Layer/layerAnimations.stylex.d.ts +4 -0
  96. package/dist/Layer/layerAnimations.stylex.d.ts.map +1 -1
  97. package/dist/Layer/layerAnimations.stylex.js +8 -4
  98. package/dist/Layer/useLayer.d.ts +10 -0
  99. package/dist/Layer/useLayer.d.ts.map +1 -1
  100. package/dist/Layer/useLayer.js +64 -9
  101. package/dist/Layout/Layout.d.ts +4 -11
  102. package/dist/Layout/Layout.d.ts.map +1 -1
  103. package/dist/Layout/Layout.js +10 -11
  104. package/dist/Layout/LayoutFooter.d.ts +2 -2
  105. package/dist/Layout/LayoutFooter.d.ts.map +1 -1
  106. package/dist/Layout/LayoutHeader.d.ts +2 -2
  107. package/dist/Layout/LayoutHeader.d.ts.map +1 -1
  108. package/dist/Layout/LayoutPanel.d.ts +2 -2
  109. package/dist/Layout/LayoutPanel.d.ts.map +1 -1
  110. package/dist/Layout/padding.stylex.d.ts +51 -0
  111. package/dist/Layout/padding.stylex.d.ts.map +1 -1
  112. package/dist/Layout/padding.stylex.js +63 -0
  113. package/dist/Lightbox/Lightbox.d.ts.map +1 -1
  114. package/dist/Lightbox/Lightbox.js +4 -2
  115. package/dist/Link/Link.d.ts +16 -1
  116. package/dist/Link/Link.d.ts.map +1 -1
  117. package/dist/Link/Link.js +18 -7
  118. package/dist/Markdown/Markdown.d.ts.map +1 -1
  119. package/dist/Markdown/Markdown.js +7 -0
  120. package/dist/MoreMenu/MoreMenu.d.ts +1 -7
  121. package/dist/MoreMenu/MoreMenu.d.ts.map +1 -1
  122. package/dist/MoreMenu/MoreMenu.js +0 -2
  123. package/dist/MultiSelector/MultiSelector.d.ts +27 -2
  124. package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
  125. package/dist/MultiSelector/MultiSelector.js +141 -42
  126. package/dist/MultiSelector/hooks.d.ts +12 -1
  127. package/dist/MultiSelector/hooks.d.ts.map +1 -1
  128. package/dist/MultiSelector/hooks.js +14 -1
  129. package/dist/NavMenu/NavHeadingMenu.d.ts.map +1 -1
  130. package/dist/NavMenu/NavHeadingMenu.js +34 -3
  131. package/dist/NumberInput/NumberInput.d.ts +23 -2
  132. package/dist/NumberInput/NumberInput.d.ts.map +1 -1
  133. package/dist/NumberInput/NumberInput.js +62 -12
  134. package/dist/Pagination/Pagination.d.ts +1 -1
  135. package/dist/Pagination/Pagination.d.ts.map +1 -1
  136. package/dist/Pagination/Pagination.js +15 -1
  137. package/dist/Popover/Popover.d.ts +18 -2
  138. package/dist/Popover/Popover.d.ts.map +1 -1
  139. package/dist/Popover/Popover.js +5 -2
  140. package/dist/Popover/usePopover.d.ts +38 -3
  141. package/dist/Popover/usePopover.d.ts.map +1 -1
  142. package/dist/Popover/usePopover.js +24 -9
  143. package/dist/PowerSearch/PowerSearch.d.ts +11 -1
  144. package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
  145. package/dist/PowerSearch/PowerSearch.js +6 -1
  146. package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
  147. package/dist/ProgressBar/ProgressBar.js +3 -5
  148. package/dist/RadioList/RadioList.d.ts +20 -2
  149. package/dist/RadioList/RadioList.d.ts.map +1 -1
  150. package/dist/RadioList/RadioList.js +105 -9
  151. package/dist/RadioList/RadioListItem.d.ts.map +1 -1
  152. package/dist/RadioList/RadioListItem.js +13 -2
  153. package/dist/SegmentedControl/SegmentedControl.d.ts +13 -2
  154. package/dist/SegmentedControl/SegmentedControl.d.ts.map +1 -1
  155. package/dist/SegmentedControl/SegmentedControl.js +78 -44
  156. package/dist/SegmentedControl/SegmentedControlContext.d.ts +7 -0
  157. package/dist/SegmentedControl/SegmentedControlContext.d.ts.map +1 -1
  158. package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
  159. package/dist/SegmentedControl/SegmentedControlItem.js +13 -2
  160. package/dist/Selector/Selector.d.ts +24 -1
  161. package/dist/Selector/Selector.d.ts.map +1 -1
  162. package/dist/Selector/Selector.js +122 -43
  163. package/dist/Selector/hooks.d.ts +8 -1
  164. package/dist/Selector/hooks.d.ts.map +1 -1
  165. package/dist/Selector/hooks.js +14 -1
  166. package/dist/SideNav/SideNavHeading.d.ts.map +1 -1
  167. package/dist/SideNav/SideNavHeading.js +2 -0
  168. package/dist/SideNav/SideNavItem.d.ts.map +1 -1
  169. package/dist/SideNav/SideNavItem.js +1 -1
  170. package/dist/Skeleton/Skeleton.d.ts.map +1 -1
  171. package/dist/Skeleton/Skeleton.js +8 -2
  172. package/dist/Slider/Slider.d.ts +21 -0
  173. package/dist/Slider/Slider.d.ts.map +1 -1
  174. package/dist/Slider/Slider.js +36 -9
  175. package/dist/Spinner/Spinner.d.ts.map +1 -1
  176. package/dist/Spinner/Spinner.js +1 -1
  177. package/dist/Stack/Stack.d.ts +38 -23
  178. package/dist/Stack/Stack.d.ts.map +1 -1
  179. package/dist/Stack/Stack.js +25 -1
  180. package/dist/Stack/StackItem.d.ts +12 -23
  181. package/dist/Stack/StackItem.d.ts.map +1 -1
  182. package/dist/Stack/StackItem.js +8 -1
  183. package/dist/Switch/Switch.d.ts +23 -2
  184. package/dist/Switch/Switch.d.ts.map +1 -1
  185. package/dist/Switch/Switch.js +41 -11
  186. package/dist/TabList/Tab.d.ts.map +1 -1
  187. package/dist/TabList/Tab.js +6 -0
  188. package/dist/TabList/TabList.d.ts +16 -4
  189. package/dist/TabList/TabList.d.ts.map +1 -1
  190. package/dist/TabList/TabList.js +87 -10
  191. package/dist/TabList/TabListContext.d.ts +5 -0
  192. package/dist/TabList/TabListContext.d.ts.map +1 -1
  193. package/dist/TabList/TabListContext.js +5 -0
  194. package/dist/TabList/TabMenu.d.ts.map +1 -1
  195. package/dist/TabList/TabMenu.js +6 -1
  196. package/dist/Table/BaseTable.d.ts.map +1 -1
  197. package/dist/Table/BaseTable.js +13 -9
  198. package/dist/Table/Table.d.ts.map +1 -1
  199. package/dist/Table/Table.js +10 -1
  200. package/dist/Table/TableCell.d.ts +8 -1
  201. package/dist/Table/TableCell.d.ts.map +1 -1
  202. package/dist/Table/TableCell.js +79 -10
  203. package/dist/Table/TableHeaderCell.d.ts +8 -1
  204. package/dist/Table/TableHeaderCell.d.ts.map +1 -1
  205. package/dist/Table/TableHeaderCell.js +16 -16
  206. package/dist/Table/index.d.ts +4 -1
  207. package/dist/Table/index.d.ts.map +1 -1
  208. package/dist/Table/index.js +3 -2
  209. package/dist/Table/plugins/pagination/paginateData.d.ts +2 -1
  210. package/dist/Table/plugins/pagination/paginateData.d.ts.map +1 -1
  211. package/dist/Table/plugins/pagination/paginateData.js +8 -3
  212. package/dist/Table/plugins/pagination/useTablePagination.d.ts.map +1 -1
  213. package/dist/Table/plugins/pagination/useTablePagination.js +6 -1
  214. package/dist/Table/plugins/rowExpansion/index.d.ts +3 -0
  215. package/dist/Table/plugins/rowExpansion/index.d.ts.map +1 -0
  216. package/dist/Table/plugins/rowExpansion/index.js +3 -0
  217. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts +90 -0
  218. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -0
  219. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +398 -0
  220. package/dist/Table/plugins/sortable/useTableSortable.d.ts.map +1 -1
  221. package/dist/Table/plugins/sortable/useTableSortable.js +59 -3
  222. package/dist/Table/tableContextMenu.d.ts +37 -0
  223. package/dist/Table/tableContextMenu.d.ts.map +1 -0
  224. package/dist/Table/tableContextMenu.js +140 -0
  225. package/dist/Table/types.d.ts +66 -0
  226. package/dist/Table/types.d.ts.map +1 -1
  227. package/dist/TextArea/TextArea.d.ts +22 -1
  228. package/dist/TextArea/TextArea.d.ts.map +1 -1
  229. package/dist/TextArea/TextArea.js +41 -9
  230. package/dist/TextInput/TextInput.d.ts +23 -2
  231. package/dist/TextInput/TextInput.d.ts.map +1 -1
  232. package/dist/TextInput/TextInput.js +55 -10
  233. package/dist/TimeInput/TimeInput.d.ts +23 -1
  234. package/dist/TimeInput/TimeInput.d.ts.map +1 -1
  235. package/dist/TimeInput/TimeInput.js +147 -76
  236. package/dist/Toast/Toast.d.ts.map +1 -1
  237. package/dist/Toast/Toast.js +14 -0
  238. package/dist/Toast/ToastViewport.d.ts.map +1 -1
  239. package/dist/Toast/ToastViewport.js +131 -3
  240. package/dist/Tokenizer/Tokenizer.d.ts +12 -1
  241. package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
  242. package/dist/Tokenizer/Tokenizer.js +26 -4
  243. package/dist/Toolbar/Toolbar.d.ts +3 -3
  244. package/dist/Toolbar/Toolbar.d.ts.map +1 -1
  245. package/dist/Toolbar/Toolbar.js +51 -7
  246. package/dist/Tooltip/useTooltip.d.ts.map +1 -1
  247. package/dist/Tooltip/useTooltip.js +56 -9
  248. package/dist/TopNav/TopNavHeading.d.ts +7 -1
  249. package/dist/TopNav/TopNavHeading.d.ts.map +1 -1
  250. package/dist/TopNav/TopNavHeading.js +8 -0
  251. package/dist/TreeList/TreeList.d.ts +1 -1
  252. package/dist/TreeList/TreeList.d.ts.map +1 -1
  253. package/dist/TreeList/TreeList.js +72 -2
  254. package/dist/TreeList/TreeListItem.d.ts +11 -1
  255. package/dist/TreeList/TreeListItem.d.ts.map +1 -1
  256. package/dist/TreeList/TreeListItem.js +51 -12
  257. package/dist/TreeList/treeListItem.markers.stylex.d.ts +16 -0
  258. package/dist/TreeList/treeListItem.markers.stylex.d.ts.map +1 -0
  259. package/dist/TreeList/treeListItem.markers.stylex.js +22 -0
  260. package/dist/Typeahead/BaseTypeahead.d.ts +13 -0
  261. package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
  262. package/dist/Typeahead/BaseTypeahead.js +69 -6
  263. package/dist/Typeahead/Typeahead.d.ts +26 -3
  264. package/dist/Typeahead/Typeahead.d.ts.map +1 -1
  265. package/dist/Typeahead/Typeahead.js +65 -29
  266. package/dist/VisuallyHidden/VisuallyHidden.d.ts +61 -0
  267. package/dist/VisuallyHidden/VisuallyHidden.d.ts.map +1 -0
  268. package/dist/VisuallyHidden/VisuallyHidden.js +65 -0
  269. package/dist/VisuallyHidden/index.d.ts +11 -0
  270. package/dist/VisuallyHidden/index.d.ts.map +1 -0
  271. package/dist/VisuallyHidden/index.js +13 -0
  272. package/dist/astryx.css +22 -0
  273. package/dist/astryx.umd.js +54 -54
  274. package/dist/astryx.umd.js.map +4 -4
  275. package/dist/hooks/focusableSelector.d.ts +22 -0
  276. package/dist/hooks/focusableSelector.d.ts.map +1 -0
  277. package/dist/hooks/focusableSelector.js +24 -0
  278. package/dist/hooks/index.d.ts +12 -2
  279. package/dist/hooks/index.d.ts.map +1 -1
  280. package/dist/hooks/index.js +7 -2
  281. package/dist/hooks/useAnnounce.d.ts +40 -0
  282. package/dist/hooks/useAnnounce.d.ts.map +1 -0
  283. package/dist/hooks/useAnnounce.js +142 -0
  284. package/dist/hooks/useClickableContainer.d.ts +16 -1
  285. package/dist/hooks/useClickableContainer.d.ts.map +1 -1
  286. package/dist/hooks/useClickableContainer.js +16 -4
  287. package/dist/hooks/useEntryAnimation.d.ts.map +1 -1
  288. package/dist/hooks/useEntryAnimation.js +4 -4
  289. package/dist/hooks/useFocusTrap.d.ts +18 -0
  290. package/dist/hooks/useFocusTrap.d.ts.map +1 -1
  291. package/dist/hooks/useFocusTrap.js +87 -3
  292. package/dist/hooks/useGridFocus.d.ts +88 -1
  293. package/dist/hooks/useGridFocus.d.ts.map +1 -1
  294. package/dist/hooks/useGridFocus.js +261 -62
  295. package/dist/hooks/useKeyboardHint.d.ts +82 -0
  296. package/dist/hooks/useKeyboardHint.d.ts.map +1 -0
  297. package/dist/hooks/useKeyboardHint.js +220 -0
  298. package/dist/hooks/useListFocus.d.ts +78 -7
  299. package/dist/hooks/useListFocus.d.ts.map +1 -1
  300. package/dist/hooks/useListFocus.js +305 -52
  301. package/dist/hooks/useLongPress.d.ts +21 -0
  302. package/dist/hooks/useLongPress.d.ts.map +1 -0
  303. package/dist/hooks/useLongPress.js +89 -0
  304. package/dist/hooks/useTreeFocus.d.ts +157 -0
  305. package/dist/hooks/useTreeFocus.d.ts.map +1 -0
  306. package/dist/hooks/useTreeFocus.js +337 -0
  307. package/dist/hooks/useTypeahead.d.ts +63 -0
  308. package/dist/hooks/useTypeahead.d.ts.map +1 -0
  309. package/dist/hooks/useTypeahead.js +117 -0
  310. package/dist/index.d.ts +1 -0
  311. package/dist/index.d.ts.map +1 -1
  312. package/dist/index.js +1 -0
  313. package/dist/utils/dateTypes.d.ts +12 -0
  314. package/dist/utils/dateTypes.d.ts.map +1 -1
  315. package/dist/utils/dateTypes.js +41 -1
  316. package/dist/utils/index.d.ts +4 -0
  317. package/dist/utils/index.d.ts.map +1 -1
  318. package/dist/utils/index.js +3 -1
  319. package/dist/utils/inputAria.d.ts +29 -0
  320. package/dist/utils/inputAria.d.ts.map +1 -0
  321. package/dist/utils/inputAria.js +30 -0
  322. package/dist/utils/timeParser.d.ts.map +1 -1
  323. package/dist/utils/timeParser.js +5 -2
  324. package/docs.mjs +2 -2
  325. package/package.json +12 -8
  326. package/src/Avatar/Avatar.doc.mjs +2 -2
  327. package/src/Avatar/Avatar.test.tsx +37 -0
  328. package/src/Avatar/Avatar.tsx +10 -5
  329. package/src/Breadcrumbs/BreadcrumbItem.tsx +25 -7
  330. package/src/Breadcrumbs/Breadcrumbs.test.tsx +31 -10
  331. package/src/Button/Button.tsx +42 -22
  332. package/src/ButtonGroup/ButtonGroup.test.tsx +9 -9
  333. package/src/ButtonGroup/ButtonGroup.tsx +0 -1
  334. package/src/Calendar/Calendar.doc.mjs +4 -4
  335. package/src/Calendar/Calendar.test.tsx +168 -30
  336. package/src/Calendar/Calendar.tsx +121 -66
  337. package/src/Calendar/hooks/index.ts +0 -6
  338. package/src/Calendar/index.ts +1 -3
  339. package/src/Calendar/styles.ts +4 -9
  340. package/src/Carousel/Carousel.doc.mjs +7 -1
  341. package/src/Carousel/Carousel.test.tsx +20 -0
  342. package/src/Carousel/Carousel.tsx +16 -1
  343. package/src/Center/Center.doc.mjs +12 -2
  344. package/src/Center/Center.tsx +28 -3
  345. package/src/Chat/ChatComposerInput.test.tsx +26 -7
  346. package/src/Chat/ChatComposerInput.tsx +0 -1
  347. package/src/Chat/ChatDictationButton.doc.mjs +1 -1
  348. package/src/Chat/ChatMessageList.doc.mjs +8 -0
  349. package/src/Chat/ChatMessageList.test.tsx +18 -0
  350. package/src/Chat/ChatMessageList.tsx +16 -0
  351. package/src/Chat/useTriggerMenu.tsx +22 -4
  352. package/src/CheckboxInput/CheckboxInput.doc.mjs +10 -0
  353. package/src/CheckboxInput/CheckboxInput.test.tsx +172 -27
  354. package/src/CheckboxInput/CheckboxInput.tsx +78 -6
  355. package/src/CheckboxList/CheckboxList.doc.mjs +9 -0
  356. package/src/CheckboxList/CheckboxList.test.tsx +192 -26
  357. package/src/CheckboxList/CheckboxList.tsx +56 -3
  358. package/src/CheckboxList/CheckboxListContext.tsx +7 -0
  359. package/src/CheckboxList/CheckboxListItem.tsx +0 -3
  360. package/src/Citation/Citation.doc.mjs +10 -0
  361. package/src/Citation/Citation.test.tsx +121 -0
  362. package/src/Citation/Citation.tsx +15 -3
  363. package/src/CodeBlock/CodeBlock.test.tsx +115 -0
  364. package/src/CodeBlock/CodeBlock.tsx +63 -33
  365. package/src/CommandPalette/CommandPalette.test.tsx +47 -1
  366. package/src/CommandPalette/CommandPalette.tsx +9 -21
  367. package/src/ContextMenu/ContextMenu.doc.mjs +4 -4
  368. package/src/ContextMenu/ContextMenu.test.tsx +155 -1
  369. package/src/ContextMenu/ContextMenu.tsx +129 -16
  370. package/src/DateInput/DateInput.doc.mjs +286 -56
  371. package/src/DateInput/DateInput.test.tsx +248 -2
  372. package/src/DateInput/DateInput.tsx +196 -100
  373. package/src/DateRangeInput/DateRangeInput.doc.mjs +251 -46
  374. package/src/DateRangeInput/DateRangeInput.test.tsx +182 -20
  375. package/src/DateRangeInput/DateRangeInput.tsx +63 -5
  376. package/src/DateTimeInput/DateTimeInput.doc.mjs +368 -67
  377. package/src/DateTimeInput/DateTimeInput.test.tsx +279 -11
  378. package/src/DateTimeInput/DateTimeInput.tsx +125 -17
  379. package/src/Dialog/Dialog.doc.mjs +2 -2
  380. package/src/Dialog/Dialog.tsx +12 -0
  381. package/src/DropdownMenu/DropdownMenu.doc.mjs +1 -8
  382. package/src/DropdownMenu/DropdownMenu.test.tsx +56 -42
  383. package/src/DropdownMenu/DropdownMenu.tsx +52 -18
  384. package/src/Field/Field.doc.mjs +59 -18
  385. package/src/Field/Field.test.tsx +32 -0
  386. package/src/Field/Field.tsx +23 -5
  387. package/src/Field/FieldLabel.tsx +55 -17
  388. package/src/FileInput/FileInput.doc.mjs +17 -0
  389. package/src/FileInput/FileInput.test.tsx +283 -49
  390. package/src/FileInput/FileInput.tsx +76 -4
  391. package/src/Grid/Grid.doc.mjs +17 -4
  392. package/src/Grid/Grid.test.tsx +43 -30
  393. package/src/Grid/Grid.tsx +38 -3
  394. package/src/Icon/Icon.doc.mjs +3 -3
  395. package/src/InputGroup/InputGroup.doc.mjs +111 -23
  396. package/src/InputGroup/InputGroup.test.tsx +257 -60
  397. package/src/InputGroup/InputGroup.tsx +23 -5
  398. package/src/InputGroup/InputGroupContext.ts +9 -4
  399. package/src/InputGroup/groupStyles.ts +7 -1
  400. package/src/InputGroup/index.ts +1 -0
  401. package/src/Kbd/Kbd.test.tsx +22 -4
  402. package/src/Kbd/Kbd.tsx +35 -3
  403. package/src/Layer/layerAnimations.stylex.ts +20 -4
  404. package/src/Layer/useLayer.doc.mjs +5 -0
  405. package/src/Layer/useLayer.test.tsx +111 -0
  406. package/src/Layer/useLayer.tsx +90 -9
  407. package/src/Layout/Layout.tsx +8 -16
  408. package/src/Layout/LayoutFooter.doc.mjs +4 -4
  409. package/src/Layout/LayoutFooter.tsx +3 -3
  410. package/src/Layout/LayoutHeader.doc.mjs +4 -4
  411. package/src/Layout/LayoutHeader.tsx +3 -3
  412. package/src/Layout/LayoutPanel.tsx +3 -3
  413. package/src/Layout/__tests__/edgeCompensation.test.tsx +72 -0
  414. package/src/Layout/padding.stylex.ts +52 -0
  415. package/src/Lightbox/Lightbox.doc.mjs +9 -0
  416. package/src/Lightbox/Lightbox.test.tsx +53 -5
  417. package/src/Lightbox/Lightbox.tsx +9 -4
  418. package/src/Link/Link.doc.mjs +14 -0
  419. package/src/Link/Link.test.tsx +50 -0
  420. package/src/Link/Link.tsx +39 -4
  421. package/src/Markdown/Markdown.test.tsx +11 -0
  422. package/src/Markdown/Markdown.tsx +7 -0
  423. package/src/MetadataList/MetadataListItem.doc.mjs +4 -0
  424. package/src/MoreMenu/MoreMenu.doc.mjs +2 -17
  425. package/src/MoreMenu/MoreMenu.tsx +0 -9
  426. package/src/MultiSelector/MultiSelector.doc.mjs +30 -0
  427. package/src/MultiSelector/MultiSelector.test.tsx +375 -8
  428. package/src/MultiSelector/MultiSelector.tsx +194 -48
  429. package/src/MultiSelector/hooks.ts +27 -0
  430. package/src/NavMenu/NavHeadingMenu.test.tsx +77 -1
  431. package/src/NavMenu/NavHeadingMenu.tsx +50 -3
  432. package/src/NumberInput/NumberInput.doc.mjs +17 -0
  433. package/src/NumberInput/NumberInput.test.tsx +242 -40
  434. package/src/NumberInput/NumberInput.tsx +89 -11
  435. package/src/Pagination/Pagination.doc.mjs +3 -3
  436. package/src/Pagination/Pagination.test.tsx +117 -5
  437. package/src/Pagination/Pagination.tsx +21 -1
  438. package/src/Popover/Popover.doc.mjs +26 -0
  439. package/src/Popover/Popover.test.tsx +121 -0
  440. package/src/Popover/Popover.tsx +23 -2
  441. package/src/Popover/usePopover.doc.mjs +9 -3
  442. package/src/Popover/usePopover.tsx +70 -12
  443. package/src/PowerSearch/PowerSearch.doc.mjs +15 -0
  444. package/src/PowerSearch/PowerSearch.test.tsx +97 -1
  445. package/src/PowerSearch/PowerSearch.tsx +16 -3
  446. package/src/ProgressBar/ProgressBar.test.tsx +34 -26
  447. package/src/ProgressBar/ProgressBar.tsx +3 -4
  448. package/src/RadioList/RadioList.doc.mjs +9 -0
  449. package/src/RadioList/RadioList.test.tsx +252 -16
  450. package/src/RadioList/RadioList.tsx +166 -10
  451. package/src/RadioList/RadioListItem.tsx +14 -2
  452. package/src/SegmentedControl/SegmentedControl.doc.mjs +9 -0
  453. package/src/SegmentedControl/SegmentedControl.test.tsx +214 -42
  454. package/src/SegmentedControl/SegmentedControl.tsx +102 -54
  455. package/src/SegmentedControl/SegmentedControlContext.ts +7 -0
  456. package/src/SegmentedControl/SegmentedControlItem.tsx +14 -1
  457. package/src/SelectableCard/SelectableCard.doc.mjs +1 -1
  458. package/src/Selector/Selector.doc.mjs +26 -0
  459. package/src/Selector/Selector.test.tsx +387 -15
  460. package/src/Selector/Selector.tsx +175 -67
  461. package/src/Selector/hooks.ts +23 -0
  462. package/src/SideNav/SideNav.test.tsx +48 -0
  463. package/src/SideNav/SideNavHeading.tsx +8 -2
  464. package/src/SideNav/SideNavItem.tsx +2 -4
  465. package/src/Skeleton/Skeleton.test.tsx +25 -0
  466. package/src/Skeleton/Skeleton.tsx +11 -1
  467. package/src/Slider/Slider.doc.mjs +15 -0
  468. package/src/Slider/Slider.test.tsx +155 -2
  469. package/src/Slider/Slider.tsx +53 -5
  470. package/src/Spinner/Spinner.tsx +7 -1
  471. package/src/Stack/Stack.doc.mjs +77 -0
  472. package/src/Stack/Stack.test.tsx +55 -5
  473. package/src/Stack/Stack.tsx +73 -24
  474. package/src/Stack/StackItem.test.tsx +23 -0
  475. package/src/Stack/StackItem.tsx +20 -23
  476. package/src/Switch/Switch.doc.mjs +15 -0
  477. package/src/Switch/Switch.test.tsx +162 -27
  478. package/src/Switch/Switch.tsx +61 -21
  479. package/src/TabList/Tab.tsx +6 -0
  480. package/src/TabList/TabList.doc.mjs +6 -0
  481. package/src/TabList/TabList.test.tsx +251 -0
  482. package/src/TabList/TabList.tsx +103 -12
  483. package/src/TabList/TabListContext.ts +7 -3
  484. package/src/TabList/TabMenu.tsx +6 -3
  485. package/src/Table/BaseTable.tsx +24 -18
  486. package/src/Table/Table.doc.mjs +2 -0
  487. package/src/Table/Table.test.tsx +10 -0
  488. package/src/Table/Table.tsx +8 -0
  489. package/src/Table/TableCell.tsx +105 -24
  490. package/src/Table/TableHeaderCell.tsx +28 -29
  491. package/src/Table/index.ts +8 -2
  492. package/src/Table/plugins/pagination/paginateData.ts +10 -3
  493. package/src/Table/plugins/pagination/useTablePagination.test.tsx +16 -0
  494. package/src/Table/plugins/pagination/useTablePagination.tsx +8 -1
  495. package/src/Table/plugins/rowExpansion/index.ts +7 -0
  496. package/src/Table/plugins/rowExpansion/useTableRowExpansion.test.tsx +155 -0
  497. package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +590 -0
  498. package/src/Table/plugins/sortable/useTableSortable.test.tsx +91 -2
  499. package/src/Table/plugins/sortable/useTableSortable.tsx +53 -1
  500. package/src/Table/tableContextMenu.test.tsx +181 -0
  501. package/src/Table/tableContextMenu.tsx +160 -0
  502. package/src/Table/types.ts +74 -0
  503. package/src/Table/useTableColumnResize.doc.mjs +3 -3
  504. package/src/Table/useTablePagination.doc.mjs +4 -1
  505. package/src/Table/useTableRowExpansion.doc.mjs +63 -0
  506. package/src/Table/useTableSortable.doc.mjs +4 -1
  507. package/src/Table/useTableStickyColumns.doc.mjs +2 -2
  508. package/src/Text/Text.doc.mjs +18 -18
  509. package/src/TextArea/TextArea.doc.mjs +17 -0
  510. package/src/TextArea/TextArea.test.tsx +167 -35
  511. package/src/TextArea/TextArea.tsx +62 -15
  512. package/src/TextInput/TextInput.doc.mjs +17 -0
  513. package/src/TextInput/TextInput.test.tsx +168 -34
  514. package/src/TextInput/TextInput.tsx +77 -9
  515. package/src/Thumbnail/Thumbnail.doc.mjs +4 -4
  516. package/src/TimeInput/TimeInput.doc.mjs +345 -60
  517. package/src/TimeInput/TimeInput.test.tsx +255 -7
  518. package/src/TimeInput/TimeInput.tsx +176 -70
  519. package/src/Timestamp/Timestamp.doc.mjs +19 -19
  520. package/src/Toast/Toast.tsx +14 -0
  521. package/src/Toast/ToastViewport.test.tsx +214 -0
  522. package/src/Toast/ToastViewport.tsx +167 -21
  523. package/src/Tokenizer/Tokenizer.doc.mjs +29 -14
  524. package/src/Tokenizer/Tokenizer.test.tsx +105 -1
  525. package/src/Tokenizer/Tokenizer.tsx +37 -1
  526. package/src/Toolbar/Toolbar.test.tsx +109 -6
  527. package/src/Toolbar/Toolbar.tsx +59 -5
  528. package/src/Tooltip/Tooltip.test.tsx +68 -0
  529. package/src/Tooltip/useTooltip.tsx +55 -8
  530. package/src/TopNav/TopNav.test.tsx +50 -0
  531. package/src/TopNav/TopNavHeading.tsx +17 -1
  532. package/src/TreeList/TreeList.test.tsx +295 -6
  533. package/src/TreeList/TreeList.tsx +73 -1
  534. package/src/TreeList/TreeListItem.tsx +51 -5
  535. package/src/TreeList/treeListItem.markers.stylex.ts +20 -0
  536. package/src/Typeahead/BaseTypeahead.tsx +93 -9
  537. package/src/Typeahead/Typeahead.doc.mjs +141 -30
  538. package/src/Typeahead/Typeahead.test.tsx +331 -1
  539. package/src/Typeahead/Typeahead.tsx +105 -33
  540. package/src/VisuallyHidden/VisuallyHidden.doc.mjs +80 -0
  541. package/src/VisuallyHidden/VisuallyHidden.test.tsx +76 -0
  542. package/src/VisuallyHidden/VisuallyHidden.tsx +113 -0
  543. package/src/VisuallyHidden/index.ts +15 -0
  544. package/src/docs-script.test.mjs +50 -0
  545. package/src/hooks/focusableSelector.ts +25 -0
  546. package/src/hooks/index.ts +28 -2
  547. package/src/hooks/useAnnounce.test.tsx +101 -0
  548. package/src/hooks/useAnnounce.ts +168 -0
  549. package/src/hooks/useClickableContainer.ts +16 -4
  550. package/src/hooks/useEntryAnimation.ts +16 -4
  551. package/src/hooks/useFocusTrap.test.tsx +132 -0
  552. package/src/hooks/useFocusTrap.ts +98 -4
  553. package/src/hooks/useGridFocus.doc.mjs +40 -2
  554. package/src/hooks/useGridFocus.test.tsx +132 -0
  555. package/src/hooks/useGridFocus.ts +343 -67
  556. package/src/hooks/useKeyboardHint.doc.mjs +101 -0
  557. package/src/hooks/useKeyboardHint.test.tsx +70 -0
  558. package/src/hooks/useKeyboardHint.tsx +332 -0
  559. package/src/hooks/useListFocus.doc.mjs +50 -10
  560. package/src/hooks/useListFocus.test.tsx +375 -0
  561. package/src/hooks/useListFocus.ts +395 -57
  562. package/src/hooks/useLongPress.test.tsx +134 -0
  563. package/src/hooks/useLongPress.ts +119 -0
  564. package/src/hooks/useTreeFocus.doc.mjs +140 -0
  565. package/src/hooks/useTreeFocus.test.tsx +214 -0
  566. package/src/hooks/useTreeFocus.ts +559 -0
  567. package/src/hooks/useTypeahead.test.tsx +109 -0
  568. package/src/hooks/useTypeahead.ts +183 -0
  569. package/src/index.ts +1 -0
  570. package/src/theme/derivedVarRegistry.test.ts +10 -5
  571. package/src/utils/dateTypes.test.ts +40 -0
  572. package/src/utils/dateTypes.ts +40 -0
  573. package/src/utils/index.ts +9 -0
  574. package/src/utils/inputAria.test.ts +39 -0
  575. package/src/utils/inputAria.ts +58 -0
  576. package/src/utils/timeParser.test.ts +10 -0
  577. package/src/utils/timeParser.ts +5 -2
  578. package/dist/Calendar/hooks/useCalendarRovingTabindex.d.ts +0 -57
  579. package/dist/Calendar/hooks/useCalendarRovingTabindex.d.ts.map +0 -1
  580. package/dist/Calendar/hooks/useCalendarRovingTabindex.js +0 -96
  581. package/src/Calendar/hooks/useCalendarRovingTabindex.ts +0 -118
@@ -4,9 +4,9 @@
4
4
 
5
5
  /**
6
6
  * @file Typeahead.tsx
7
- * @input Uses React, BaseTypeahead, Field, Token
7
+ * @input Uses React, BaseTypeahead, Field, Token, InputGroupContext
8
8
  * @output Exports Typeahead styled typeahead component
9
- * @position Styled wrapper; composes BaseTypeahead with Field
9
+ * @position Styled wrapper; composes BaseTypeahead with Field or InputGroup
10
10
  *
11
11
  * Owns the input wrapper (border, padding, status styles), selected value
12
12
  * token with spacing compensation, and edit mode behavior. Delegates
@@ -23,12 +23,16 @@ import { BaseTypeahead } from "./BaseTypeahead.js";
23
23
  import { useSize } from "../SizeContext/SizeContext.js";
24
24
  import { Field, InputClearButton, inputWrapperStyles, inputStatusBorderStyles, inputStatusHoverShadowStyles, inputStatusFocusWithinStyles } from "../Field/index.js";
25
25
  import { Token } from "../Token/index.js";
26
+ import { useTooltip } from "../Tooltip/index.js";
26
27
  import { renderIconSlot } from "../Icon/index.js";
28
+ import { VisuallyHidden } from "../VisuallyHidden/index.js";
27
29
  import "../theme/tokens.stylex.js";
28
30
  import { spacingVars, sizeVars } from "../theme/tokens.stylex.js";
29
- import { mergeProps } from "../utils/index.js";
31
+ import { groupStyles } from "../InputGroup/groupStyles.js";
32
+ import { useInputGroup } from "../InputGroup/InputGroupContext.js";
33
+ import { getInputARIA, mergeProps, mergeRefs } from "../utils/index.js";
30
34
  import { themeProps } from "../utils/themeProps.js";
31
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
35
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
32
36
  // =============================================================================
33
37
  // Styles
34
38
  // =============================================================================
@@ -127,6 +131,7 @@ export function Typeahead({
127
131
  maxMenuItems,
128
132
  emptySearchResultsText,
129
133
  isDisabled = false,
134
+ disabledMessage,
130
135
  hasClear = true,
131
136
  hasAutoFocus,
132
137
  size: sizeProp,
@@ -141,12 +146,29 @@ export function Typeahead({
141
146
  }) {
142
147
  const size = useSize(sizeProp, 'md');
143
148
  const inputId = useId();
149
+ const inputLabelId = useId();
144
150
  const descriptionId = useId();
145
151
  const statusMessageId = useId();
152
+ const inputGroup = useInputGroup();
146
153
  const wrapperRef = useRef(null);
147
154
  const inputRef = useRef(null);
148
155
  const tokenRef = useRef(null);
149
156
 
157
+ // Disabled-reason tooltip. Disabled controls swallow pointer events, so the
158
+ // tooltip listeners attach to the input wrapper (which already exists) and
159
+ // the input stays perceivable via aria-disabled + readOnly instead of the
160
+ // disabled attribute. Editing and selection stay blocked by the isDisabled
161
+ // guards (handleWrapperClick, handleEnterEditMode, and BaseTypeahead's own
162
+ // focus/change guards).
163
+ const showsDisabledMessage = isDisabled && !!disabledMessage;
164
+ const disabledMessageTooltip = useTooltip({
165
+ placement: 'above',
166
+ // The wrapper div is not naturally focusable; focusin bubbles up from the
167
+ // input, so always attach focus listeners.
168
+ focusTrigger: 'always',
169
+ isEnabled: showsDisabledMessage
170
+ });
171
+
150
172
  // Edit mode: when the user clicks the token to edit the selected value
151
173
  const [isEditing, setIsEditing] = useState(false);
152
174
  const [editingValue, setEditingValue] = useState(null);
@@ -240,40 +262,27 @@ export function Typeahead({
240
262
  inputRef.current?.focus();
241
263
  }
242
264
  }, [isDisabled, showToken, handleEnterEditMode]);
243
- const ariaDescribedBy = [description ? descriptionId : null, status?.message ? statusMessageId : null].filter(Boolean).join(' ') || undefined;
265
+ const {
266
+ ariaLabelledBy,
267
+ ariaDescribedBy
268
+ } = getInputARIA(inputLabelId, [description ? descriptionId : null, status?.message ? statusMessageId : null, showsDisabledMessage ? disabledMessageTooltip.describedBy : null], inputGroup);
244
269
  const sizeStyle = wrapperSizeStyles[size];
245
- return /*#__PURE__*/_jsx(Field, {
246
- ref: ref,
247
- label: label,
248
- isLabelHidden: isLabelHidden,
249
- description: description,
250
- inputID: inputId,
251
- descriptionID: description ? descriptionId : undefined,
252
- isOptional: isOptional,
253
- isRequired: isRequired,
254
- isDisabled: isDisabled,
255
- status: status ? {
256
- type: status.type,
257
- message: status.message,
258
- messageID: status.message ? statusMessageId : undefined
259
- } : undefined,
260
- labelTooltip: labelTooltip,
261
- width: width,
262
- xstyle: xstyle,
263
- className: className,
264
- style: style,
265
- children: /*#__PURE__*/_jsxs("div", {
266
- ref: wrapperRef,
270
+ const typeaheadContent = /*#__PURE__*/_jsxs(_Fragment, {
271
+ children: [/*#__PURE__*/_jsxs("div", {
272
+ ref: mergeRefs(wrapperRef, disabledMessageTooltip.ref, inputGroup ? ref : undefined),
267
273
  "data-testid": testId,
268
274
  onClick: handleWrapperClick,
269
275
  onBlur: handleBlur,
270
276
  ...mergeProps(themeProps('typeahead', {
271
277
  size,
272
278
  status: status?.type
273
- }), stylex.props(inputWrapperStyles.base, styles.wrapper, sizeStyle, status && inputStatusBorderStyles[status.type], status && inputStatusHoverShadowStyles[status.type], status && inputStatusFocusWithinStyles[status.type], isDisabled && inputWrapperStyles.disabled)),
279
+ }), stylex.props(inputWrapperStyles.base, styles.wrapper, sizeStyle, status && inputStatusBorderStyles[status.type], status && inputStatusHoverShadowStyles[status.type], status && inputStatusFocusWithinStyles[status.type], isDisabled && inputWrapperStyles.disabled, inputGroup && groupStyles.inGroup, inputGroup && xstyle), inputGroup ? className : undefined, inputGroup ? style : undefined),
274
280
  children: [startIcon && renderIconSlot(startIcon, {
275
281
  size: 'sm',
276
282
  color: 'secondary'
283
+ }), inputGroup && /*#__PURE__*/_jsx(VisuallyHidden, {
284
+ id: inputLabelId,
285
+ children: label
277
286
  }), showToken && /*#__PURE__*/_jsx(Token, {
278
287
  ref: tokenRef,
279
288
  label: value.label,
@@ -293,8 +302,10 @@ export function Typeahead({
293
302
  emptySearchResultsText: emptySearchResultsText,
294
303
  isDisabled: isDisabled,
295
304
  hasAutoFocus: hasAutoFocus,
305
+ isFocusableDisabled: showsDisabledMessage,
296
306
  inputId: inputId,
297
307
  ariaDescribedBy: ariaDescribedBy,
308
+ ariaLabelledBy: ariaLabelledBy,
298
309
  onChangeQuery: onChangeQuery,
299
310
  onOpenChange: onOpenChange,
300
311
  debounceMs: debounceMs,
@@ -310,7 +321,32 @@ export function Typeahead({
310
321
  },
311
322
  xstyle: [styles.clearButton, size === 'sm' && styles.clearButtonSm]
312
323
  })]
313
- })
324
+ }), showsDisabledMessage && disabledMessageTooltip.renderTooltip(disabledMessage)]
325
+ });
326
+ if (inputGroup) {
327
+ return typeaheadContent;
328
+ }
329
+ return /*#__PURE__*/_jsx(Field, {
330
+ ref: ref,
331
+ label: label,
332
+ isLabelHidden: isLabelHidden,
333
+ description: description,
334
+ inputID: inputId,
335
+ descriptionID: description ? descriptionId : undefined,
336
+ isOptional: isOptional,
337
+ isRequired: isRequired,
338
+ isDisabled: isDisabled,
339
+ status: status ? {
340
+ type: status.type,
341
+ message: status.message,
342
+ messageID: status.message ? statusMessageId : undefined
343
+ } : undefined,
344
+ labelTooltip: labelTooltip,
345
+ width: width,
346
+ xstyle: xstyle,
347
+ className: className,
348
+ style: style,
349
+ children: typeaheadContent
314
350
  });
315
351
  }
316
352
  Typeahead.displayName = 'Typeahead';
@@ -0,0 +1,61 @@
1
+ /**
2
+ * @file VisuallyHidden.tsx
3
+ * @input Uses React createElement/ElementType, stylex
4
+ * @output Exports VisuallyHidden component and VisuallyHiddenProps
5
+ * @position Accessibility primitive; renders content in the a11y tree while
6
+ * hiding it visually (icon-only labels, aria-live regions, SR-only context)
7
+ *
8
+ * SYNC: When modified, update these files to stay in sync:
9
+ * - /packages/core/src/VisuallyHidden/VisuallyHidden.doc.mjs
10
+ * - /packages/core/src/VisuallyHidden/VisuallyHidden.test.tsx
11
+ * - /apps/storybook/stories/VisuallyHidden.stories.tsx
12
+ */
13
+ import { type ElementType, type ReactNode } from 'react';
14
+ import type { BaseProps } from '../BaseProps';
15
+ /**
16
+ * VisuallyHidden is deliberately styling-free: it exists to *not* be seen, so it
17
+ * intentionally omits `xstyle`/`className`/`style`. The clip block is fixed and
18
+ * non-overridable — styling a visually-hidden node is always a mistake. The
19
+ * accessibility pass-throughs from `BaseProps` (`aria-*`, `role`, `id`,
20
+ * `data-*`, event handlers) remain, since the live-region use case needs them.
21
+ */
22
+ export interface VisuallyHiddenProps extends Omit<BaseProps<HTMLElement>, 'className' | 'style'> {
23
+ /** Ref forwarded to the rendered element. */
24
+ ref?: React.Ref<HTMLElement>;
25
+ /** Content to expose to assistive technology while hidden from sight. */
26
+ children: ReactNode;
27
+ /**
28
+ * HTML tag to render as. Defaults to `'span'` (inline) for the common
29
+ * icon-label case; pass a block element such as `'div'` when wrapping block
30
+ * content or hosting an `aria-live` region. This is a structural choice, not
31
+ * a visual one.
32
+ *
33
+ * @default 'span'
34
+ */
35
+ as?: ElementType;
36
+ }
37
+ /**
38
+ * Renders its children in the accessibility tree while hiding them visually.
39
+ *
40
+ * Use for content that assistive technology must perceive but sighted users
41
+ * should not see: accessible names for icon-only controls, `aria-live`
42
+ * announcement regions, and supplementary screen-reader context.
43
+ *
44
+ * @example
45
+ * ```
46
+ * // Accessible name for an icon-only button
47
+ * <IconButton icon="trash" label="">
48
+ * <VisuallyHidden>Delete incident</VisuallyHidden>
49
+ * </IconButton>
50
+ *
51
+ * // Live region for announcements
52
+ * <VisuallyHidden as="div" aria-live="polite">
53
+ * {`Moved ${task} to ${column}`}
54
+ * </VisuallyHidden>
55
+ * ```
56
+ */
57
+ export declare function VisuallyHidden({ children, as: element, ref, ...props }: VisuallyHiddenProps): import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
58
+ export declare namespace VisuallyHidden {
59
+ var displayName: string;
60
+ }
61
+ //# sourceMappingURL=VisuallyHidden.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VisuallyHidden.d.ts","sourceRoot":"","sources":["../../src/VisuallyHidden/VisuallyHidden.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAgB,KAAK,WAAW,EAAE,KAAK,SAAS,EAAW,MAAM,OAAO,CAAC;AAChF,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAG5C;;;;;;GAMG;AACH,MAAM,WAAW,mBAAoB,SAAQ,IAAI,CAC/C,SAAS,CAAC,WAAW,CAAC,EACtB,WAAW,GAAG,OAAO,CACtB;IACC,6CAA6C;IAC7C,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAE7B,yEAAyE;IACzE,QAAQ,EAAE,SAAS,CAAC;IAEpB;;;;;;;OAOG;IACH,EAAE,CAAC,EAAE,WAAW,CAAC;CAClB;AAyBD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,EAAE,EAAE,OAAgB,EACpB,GAAG,EACH,GAAG,KAAK,EACT,EAAE,mBAAmB,0FAarB;yBAlBe,cAAc"}
@@ -0,0 +1,65 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ 'use client';
4
+
5
+ /**
6
+ * @file VisuallyHidden.tsx
7
+ * @input Uses React createElement/ElementType, stylex
8
+ * @output Exports VisuallyHidden component and VisuallyHiddenProps
9
+ * @position Accessibility primitive; renders content in the a11y tree while
10
+ * hiding it visually (icon-only labels, aria-live regions, SR-only context)
11
+ *
12
+ * SYNC: When modified, update these files to stay in sync:
13
+ * - /packages/core/src/VisuallyHidden/VisuallyHidden.doc.mjs
14
+ * - /packages/core/src/VisuallyHidden/VisuallyHidden.test.tsx
15
+ * - /apps/storybook/stories/VisuallyHidden.stories.tsx
16
+ */
17
+ import { createElement } from 'react';
18
+ import * as stylex from '@stylexjs/stylex';
19
+
20
+ /**
21
+ * VisuallyHidden is deliberately styling-free: it exists to *not* be seen, so it
22
+ * intentionally omits `xstyle`/`className`/`style`. The clip block is fixed and
23
+ * non-overridable — styling a visually-hidden node is always a mistake. The
24
+ * accessibility pass-throughs from `BaseProps` (`aria-*`, `role`, `id`,
25
+ * `data-*`, event handlers) remain, since the live-region use case needs them.
26
+ */
27
+
28
+ /**
29
+ * Renders its children in the accessibility tree while hiding them visually.
30
+ *
31
+ * Use for content that assistive technology must perceive but sighted users
32
+ * should not see: accessible names for icon-only controls, `aria-live`
33
+ * announcement regions, and supplementary screen-reader context.
34
+ *
35
+ * @example
36
+ * ```
37
+ * // Accessible name for an icon-only button
38
+ * <IconButton icon="trash" label="">
39
+ * <VisuallyHidden>Delete incident</VisuallyHidden>
40
+ * </IconButton>
41
+ *
42
+ * // Live region for announcements
43
+ * <VisuallyHidden as="div" aria-live="polite">
44
+ * {`Moved ${task} to ${column}`}
45
+ * </VisuallyHidden>
46
+ * ```
47
+ */
48
+ export function VisuallyHidden({
49
+ children,
50
+ as: element = 'span',
51
+ ref,
52
+ ...props
53
+ }) {
54
+ return /*#__PURE__*/createElement(element, {
55
+ ref: ref,
56
+ // Spread consumer props (aria-*, role, id, data-*, handlers) first, then
57
+ // the fixed clip styles, so the visually-hidden class can never be
58
+ // displaced. There is no consumer className/style to merge — by design.
59
+ ...props,
60
+ ...{
61
+ className: "x10l6tqk x1i1rx1s xjm9jq1 xkdpibf x1717udv xb3r6kr xzpqnlu xuxw1ft xng3xce x13vifvy x1o0tod x47corl x87ps6o"
62
+ }
63
+ }, children);
64
+ }
65
+ VisuallyHidden.displayName = 'VisuallyHidden';
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @file index.ts
3
+ * @input Imports from VisuallyHidden.tsx
4
+ * @output Exports VisuallyHidden component and props type
5
+ * @position Package entry point for VisuallyHidden
6
+ *
7
+ * SYNC: When modified, update /packages/core/src/VisuallyHidden/VisuallyHidden.doc.mjs
8
+ */
9
+ export { VisuallyHidden } from './VisuallyHidden';
10
+ export type { VisuallyHiddenProps } from './VisuallyHidden';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/VisuallyHidden/index.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AAEH,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAChD,YAAY,EAAC,mBAAmB,EAAC,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,13 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ 'use client';
4
+
5
+ /**
6
+ * @file index.ts
7
+ * @input Imports from VisuallyHidden.tsx
8
+ * @output Exports VisuallyHidden component and props type
9
+ * @position Package entry point for VisuallyHidden
10
+ *
11
+ * SYNC: When modified, update /packages/core/src/VisuallyHidden/VisuallyHidden.doc.mjs
12
+ */
13
+ export { VisuallyHidden } from "./VisuallyHidden.js";
package/dist/astryx.css CHANGED
@@ -14,6 +14,8 @@
14
14
  @property --x-counterReset { syntax: "*"; inherits: false;}
15
15
  @property --x-fontSize { syntax: "*"; inherits: false;}
16
16
  @property --x-gap { syntax: "*"; inherits: false;}
17
+ @property --x-gridAutoRows { syntax: "*"; inherits: false;}
18
+ @property --x-gridTemplateColumns { syntax: "*"; inherits: false;}
17
19
  @property --x-height { syntax: "*"; inherits: false;}
18
20
  @property --x-left { syntax: "*"; inherits: false;}
19
21
  @property --x-marginInline { syntax: "*"; inherits: false;}
@@ -21,6 +23,7 @@
21
23
  @property --x-maxWidth { syntax: "*"; inherits: false;}
22
24
  @property --x-minHeight { syntax: "*"; inherits: false;}
23
25
  @property --x-minWidth { syntax: "*"; inherits: false;}
26
+ @property --x-paddingInlineStart { syntax: "*"; inherits: false;}
24
27
  @property --x-right { syntax: "*"; inherits: false;}
25
28
  @property --x-top { syntax: "*"; inherits: false;}
26
29
  @property --x-transform { syntax: "*"; inherits: false;}
@@ -253,6 +256,7 @@
253
256
  @media (hover: hover){.x1pkcbo2.x1pkcbo2:hover{--table-row-overlay:var(--color-overlay-hover)}}
254
257
  .xln7xf2:not(#\#){font:inherit}
255
258
  .x10a8y8t:not(#\#){inset:0}
259
+ .x1anvkwx:not(#\#){inset:auto}
256
260
  .xh3736h:not(#\#){inset:unset}
257
261
  .xkdpibf:not(#\#){margin:-1px}
258
262
  .x1ghz6dp:not(#\#){margin:0}
@@ -410,6 +414,7 @@
410
414
  .xq2gx43:not(#\#):not(#\#){transition:none}
411
415
  .x1ey1afo:not(#\#):not(#\#){transition:opacity var(--duration-fast)}
412
416
  .x1ob6yzd:not(#\#):not(#\#){transition:transform var(--duration-fast) var(--ease-standard)}
417
+ .xr21g96.xr21g96:where(.x1g2q90y:focus-visible *):not(#\#):not(#\#){outline:2px solid var(--color-accent)}
413
418
  .x6q1khz:focus-within:not(#\#):not(#\#){border-color:var(--color-accent)}
414
419
  .xk2sxw7:focus-within:not(#\#):not(#\#){border-color:var(--color-error)}
415
420
  .xyq33ac:focus-within:not(#\#):not(#\#){border-color:var(--color-success)}
@@ -442,6 +447,7 @@
442
447
  .x1bv1mxo:not(#\#):not(#\#):not(#\#){-webkit-mask-image:linear-gradient(to bottom,transparent,black 36px)}
443
448
  .xo9xo30:not(#\#):not(#\#):not(#\#){-webkit-mask-image:linear-gradient(to bottom,transparent,black 48px)}
444
449
  .x5lxg6s:not(#\#):not(#\#):not(#\#){-webkit-overflow-scrolling:touch}
450
+ .xpdipgo:not(#\#):not(#\#):not(#\#){-webkit-touch-callout:none}
445
451
  .x1pha0wt:not(#\#):not(#\#):not(#\#){align-items:baseline}
446
452
  .x6s0dn4:not(#\#):not(#\#):not(#\#){align-items:center}
447
453
  .xpqajaz:not(#\#):not(#\#):not(#\#){align-items:end}
@@ -737,6 +743,7 @@
737
743
  .xv8on6e:not(#\#):not(#\#):not(#\#){font-weight:var(--text-supporting-weight)}
738
744
  .xu6a5m6:not(#\#):not(#\#):not(#\#){grid-auto-columns:1fr}
739
745
  .x1mt1orb:not(#\#):not(#\#):not(#\#){grid-auto-flow:column}
746
+ .xhij9v2:not(#\#):not(#\#):not(#\#){grid-auto-rows:var(--x-gridAutoRows)}
740
747
  .xcrlgei:not(#\#):not(#\#):not(#\#){grid-column-start:1}
741
748
  .x1agbcgv:not(#\#):not(#\#):not(#\#){grid-row-start:1}
742
749
  .x134kloy:not(#\#):not(#\#):not(#\#){grid-template-columns:1fr auto 1fr}
@@ -745,6 +752,7 @@
745
752
  .x1wthsqz:not(#\#):not(#\#):not(#\#){grid-template-columns:auto repeat(7,1fr)}
746
753
  .x1mzazjb:not(#\#):not(#\#):not(#\#){grid-template-columns:repeat(7,1fr)}
747
754
  .x189bvgu:not(#\#):not(#\#):not(#\#){grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}
755
+ .xqketvx:not(#\#):not(#\#):not(#\#){grid-template-columns:var(--x-gridTemplateColumns)}
748
756
  .xihq33y:not(#\#):not(#\#):not(#\#){grid-template-rows:0fr}
749
757
  .x1tu4anv:not(#\#):not(#\#):not(#\#){grid-template-rows:1fr}
750
758
  .xtijo5x:not(#\#):not(#\#):not(#\#){inset-inline-end:0}
@@ -862,6 +870,7 @@
862
870
  .x31w388:not(#\#):not(#\#):not(#\#){padding-inline-start:var(--spacing-6)}
863
871
  .xchaq28:not(#\#):not(#\#):not(#\#){padding-inline-start:var(--spacing-7)}
864
872
  .x1j3hnjz:not(#\#):not(#\#):not(#\#){padding-inline-start:var(--spacing-8)}
873
+ .xnvo3vl:not(#\#):not(#\#):not(#\#){padding-inline-start:var(--x-paddingInlineStart)}
865
874
  .x67bb7w:not(#\#):not(#\#):not(#\#){pointer-events:auto}
866
875
  .x47corl:not(#\#):not(#\#):not(#\#){pointer-events:none}
867
876
  .x1tsffl5:not(#\#):not(#\#):not(#\#){position-anchor:--outline-active}
@@ -941,6 +950,7 @@
941
950
  .x1ahifba:not(#\#):not(#\#):not(#\#){transition-delay:0s}
942
951
  .x10b1n17:not(#\#):not(#\#):not(#\#){transition-delay:var(--duration-fast)}
943
952
  .x11bq7d0:not(#\#):not(#\#):not(#\#){transition-duration:.06s}
953
+ .xx6bhzk:not(#\#):not(#\#):not(#\#){transition-duration:.15s}
944
954
  .x13dflua:not(#\#):not(#\#):not(#\#){transition-duration:.2s}
945
955
  .xjd9b36:not(#\#):not(#\#):not(#\#){transition-duration:1ms}
946
956
  .x2rcmwa:not(#\#):not(#\#):not(#\#){transition-duration:var(--duration-fast-max)}
@@ -969,6 +979,7 @@
969
979
  .x1wbls7o:not(#\#):not(#\#):not(#\#){transition-property:opacity,background-color,transform}
970
980
  .xnpjden:not(#\#):not(#\#):not(#\#){transition-property:opacity,background-color}
971
981
  .x1kx2cm7:not(#\#):not(#\#):not(#\#){transition-property:opacity,box-shadow}
982
+ .xsm4mo9:not(#\#):not(#\#):not(#\#){transition-property:opacity,display,overlay}
972
983
  .x1apppo2:not(#\#):not(#\#):not(#\#){transition-property:opacity,transform,max-width}
973
984
  .x4bbghf:not(#\#):not(#\#):not(#\#){transition-property:opacity,transform,overlay,display}
974
985
  .x6o7n8i:not(#\#):not(#\#):not(#\#){transition-property:opacity,transform}
@@ -976,6 +987,7 @@
976
987
  .x19991ni:not(#\#):not(#\#):not(#\#){transition-property:opacity}
977
988
  .x1xuz8iz:not(#\#):not(#\#):not(#\#){transition-property:top,height}
978
989
  .x18dpk69:not(#\#):not(#\#):not(#\#){transition-property:transform,background-color}
990
+ .xefglzl:not(#\#):not(#\#):not(#\#){transition-property:transform,color,background-color}
979
991
  .xh3q6i0:not(#\#):not(#\#):not(#\#){transition-property:transform,width,height}
980
992
  .x11xpdln:not(#\#):not(#\#):not(#\#){transition-property:transform}
981
993
  .xxrbq2n:not(#\#):not(#\#):not(#\#){transition-property:width}
@@ -1003,6 +1015,7 @@
1003
1015
  .x6cuj84:not(#\#):not(#\#):not(#\#){z-index:500}
1004
1016
  .x1q2oy4v:not(#\#):not(#\#):not(#\#){z-index:9999}
1005
1017
  .x1v2claj.x1v2claj:where(.x84s7jz:focus-within *):not(#\#):not(#\#):not(#\#){opacity:1}
1018
+ .xs4y3kv.xs4y3kv:where(.x1g2q90y:focus-visible *):not(#\#):not(#\#):not(#\#){outline-offset:2px}
1006
1019
  .x3730vf.x3730vf:where(.x84s7jz:focus-within *):not(#\#):not(#\#):not(#\#){pointer-events:auto}
1007
1020
  .xuqivmr.xuqivmr:where(.x84s7jz:focus-within *):not(#\#):not(#\#):not(#\#){transform:translateY(0)}
1008
1021
  .x7v6acp.x7v6acp:where(.x84s7jz:focus-within *):not(#\#):not(#\#):not(#\#){visibility:visible}
@@ -1024,6 +1037,10 @@
1024
1037
  .xttggg:is([dir="rtl"] *):not(#\#):not(#\#):not(#\#){transform:translateX(100%)}
1025
1038
  .x9cjr8z:popover-open:not(#\#):not(#\#):not(#\#){transform:translateY(0)}
1026
1039
  .x1rm9qnc:focus-within:not(#\#):not(#\#):not(#\#){z-index:1}
1040
+ .x1vej5at:has(+ [popover] + [popover]:last-child):not(#\#):not(#\#):not(#\#){border-end-end-radius:var(--radius-element)}
1041
+ .xxd14kb:has(+ [popover]:last-child):not(#\#):not(#\#):not(#\#){border-end-end-radius:var(--radius-element)}
1042
+ .x1ir7nn6:has(+ [popover] + [popover]:last-child):not(#\#):not(#\#):not(#\#){border-start-end-radius:var(--radius-element)}
1043
+ .xpufgd0:has(+ [popover]:last-child):not(#\#):not(#\#):not(#\#){border-start-end-radius:var(--radius-element)}
1027
1044
  .x92e2el:has(> [data-astryx-edge-comp]:last-child):not(#\#):not(#\#):not(#\#){margin-inline-end:var(--x-4drmnv)}
1028
1045
  .x1kftj4p:has(> [data-astryx-edge-comp]:first-child):not(#\#):not(#\#):not(#\#){margin-inline-start:var(--x-126w13d)}
1029
1046
  .xdjuwb3:has(:focus-visible):not(#\#):not(#\#):not(#\#){outline-offset:2px}
@@ -1045,6 +1062,7 @@
1045
1062
  .x1wzlfcn:last-child:not(#\#):not(#\#):not(#\#){padding-inline-end:max(var(--container-padding-inline-end,var(--spacing-4)),var(--spacing-2))}
1046
1063
  .x1dnou9g:nth-child(even):not(#\#):not(#\#):not(#\#){background-color:var(--color-background-muted)}
1047
1064
  .x1uwx2nv:hover:not(#\#):not(#\#):not(#\#){background-color:var(--color-overlay-hover)}
1065
+ .x1cqbx0l:hover:not(#\#):not(#\#):not(#\#){color:var(--color-icon-primary)}
1048
1066
  .x1c52tdz:focus:not(#\#):not(#\#):not(#\#){background-color:var(--color-overlay-hover)}
1049
1067
  .x1rsz1da:focus:not(#\#):not(#\#):not(#\#){clip-path:none}
1050
1068
  .xodanix:focus:not(#\#):not(#\#):not(#\#){inset-inline-start:var(--spacing-2)}
@@ -1101,6 +1119,9 @@
1101
1119
  @media (hover: hover){.x8o3jvd.x8o3jvd:hover:not(#\#):not(#\#):not(#\#){background-image:none}}
1102
1120
  @media (hover: hover){.xw6ruzt.xw6ruzt:hover:not(#\#):not(#\#):not(#\#){box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--color-accent) 20%,transparent)}}
1103
1121
  @media (hover: hover){.xhouywz.xhouywz:hover:not(#\#):not(#\#):not(#\#){box-shadow:var(--shadow-med)}}
1122
+ @media (hover: hover){.x17qfo7y.x17qfo7y:hover:not(#\#):not(#\#):not(#\#){color:color-mix(in srgb,var(--color-text-accent),var(--color-tint-hover) 15%)}}
1123
+ @media (hover: hover){.x4z56r7.x4z56r7:hover:not(#\#):not(#\#):not(#\#){color:color-mix(in srgb,var(--color-text-primary),var(--color-tint-hover) 15%)}}
1124
+ @media (hover: hover){.x7ruf5d.x7ruf5d:hover:not(#\#):not(#\#):not(#\#){color:color-mix(in srgb,var(--color-text-secondary),var(--color-tint-hover) 15%)}}
1104
1125
  @media (hover: hover){.x140uwzg.x140uwzg:hover:not(#\#):not(#\#):not(#\#){color:var(--color-text-primary)}}
1105
1126
  @media (hover: hover){.xzomjkg.xzomjkg:hover:not(#\#):not(#\#):not(#\#){opacity:.85}}
1106
1127
  .xib2hle:not(#\#):not(#\#):not(#\#):not(#\#){border-bottom-color:var(--color-border-emphasized)}
@@ -1183,6 +1204,7 @@
1183
1204
  .x102lyln:not(#\#):not(#\#):not(#\#):not(#\#){height:calc(var(--size-element-lg) - 8px)}
1184
1205
  .x184gfjb:not(#\#):not(#\#):not(#\#):not(#\#){height:calc(var(--size-element-md) - 4px)}
1185
1206
  .xrmxcn7:not(#\#):not(#\#):not(#\#):not(#\#){height:calc(var(--size-element-md) - 8px)}
1207
+ .x1u5rhrp:not(#\#):not(#\#):not(#\#):not(#\#){height:calc(var(--size-element-md) + var(--spacing-1))}
1186
1208
  .xzj98nu:not(#\#):not(#\#):not(#\#):not(#\#){height:calc(var(--size-element-sm) - 4px)}
1187
1209
  .xzydfjl:not(#\#):not(#\#):not(#\#):not(#\#){height:calc(var(--size-element-sm) - 8px)}
1188
1210
  .xg7h5cd:not(#\#):not(#\#):not(#\#):not(#\#){height:fit-content}