@astryxdesign/core 0.3.0 → 0.4.0-canary.41f53a0

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 (579) hide show
  1. package/CHANGELOG.md +156 -0
  2. package/dist/AlertDialog/AlertDialog.d.ts +10 -2
  3. package/dist/AlertDialog/AlertDialog.d.ts.map +1 -1
  4. package/dist/AlertDialog/AlertDialog.js +22 -3
  5. package/dist/AppShell/AppShell.d.ts +2 -2
  6. package/dist/AppShell/AppShell.d.ts.map +1 -1
  7. package/dist/AppShell/AppShell.js +40 -9
  8. package/dist/AspectRatio/AspectRatio.d.ts +13 -0
  9. package/dist/AspectRatio/AspectRatio.d.ts.map +1 -1
  10. package/dist/AspectRatio/AspectRatio.js +9 -0
  11. package/dist/Avatar/Avatar.d.ts.map +1 -1
  12. package/dist/Avatar/Avatar.js +33 -20
  13. package/dist/AvatarGroup/AvatarGroupOverflow.d.ts.map +1 -1
  14. package/dist/AvatarGroup/AvatarGroupOverflow.js +2 -3
  15. package/dist/Banner/Banner.d.ts.map +1 -1
  16. package/dist/Banner/Banner.js +15 -14
  17. package/dist/Breadcrumbs/BreadcrumbItem.d.ts.map +1 -1
  18. package/dist/Breadcrumbs/BreadcrumbItem.js +21 -8
  19. package/dist/Breadcrumbs/index.d.ts +2 -1
  20. package/dist/Breadcrumbs/index.d.ts.map +1 -1
  21. package/dist/Breadcrumbs/index.js +1 -0
  22. package/dist/Button/Button.d.ts.map +1 -1
  23. package/dist/Button/Button.js +12 -16
  24. package/dist/Calendar/Calendar.d.ts.map +1 -1
  25. package/dist/Calendar/Calendar.js +2 -1
  26. package/dist/Calendar/styles.d.ts +0 -2
  27. package/dist/Calendar/styles.d.ts.map +1 -1
  28. package/dist/Calendar/styles.js +0 -2
  29. package/dist/Carousel/Carousel.d.ts.map +1 -1
  30. package/dist/Carousel/Carousel.js +8 -12
  31. package/dist/Chat/ChatDictationButton.d.ts.map +1 -1
  32. package/dist/Chat/ChatDictationButton.js +2 -1
  33. package/dist/Chat/ChatLayoutScrollButton.d.ts.map +1 -1
  34. package/dist/Chat/ChatLayoutScrollButton.js +3 -1
  35. package/dist/Chat/ChatSendButton.d.ts.map +1 -1
  36. package/dist/Chat/ChatSendButton.js +4 -3
  37. package/dist/Chat/ChatToolCalls.d.ts.map +1 -1
  38. package/dist/Chat/ChatToolCalls.js +17 -17
  39. package/dist/Chat/useTriggerMenu.d.ts.map +1 -1
  40. package/dist/Chat/useTriggerMenu.js +2 -6
  41. package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
  42. package/dist/CheckboxInput/CheckboxInput.js +36 -125
  43. package/dist/ClickableCard/ClickableCard.d.ts.map +1 -1
  44. package/dist/ClickableCard/ClickableCard.js +3 -11
  45. package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
  46. package/dist/CodeBlock/CodeBlock.js +84 -67
  47. package/dist/Collapsible/Collapsible.d.ts.map +1 -1
  48. package/dist/Collapsible/Collapsible.js +35 -15
  49. package/dist/CommandPalette/CommandPaletteItem.d.ts +1 -1
  50. package/dist/CommandPalette/CommandPaletteItem.d.ts.map +1 -1
  51. package/dist/CommandPalette/CommandPaletteItem.js +6 -3
  52. package/dist/CommandPalette/CommandPaletteList.js +1 -1
  53. package/dist/ComplexSelector/ComplexSelector.d.ts +1 -1
  54. package/dist/ComplexSelector/ComplexSelector.d.ts.map +1 -1
  55. package/dist/ComplexSelector/ComplexSelector.js +32 -31
  56. package/dist/ContextMenu/ContextMenu.d.ts +2 -2
  57. package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
  58. package/dist/ContextMenu/ContextMenu.js +1 -1
  59. package/dist/ContextMenu/index.d.ts +2 -1
  60. package/dist/ContextMenu/index.d.ts.map +1 -1
  61. package/dist/ContextMenu/index.js +1 -0
  62. package/dist/DateInput/DateInput.d.ts +9 -2
  63. package/dist/DateInput/DateInput.d.ts.map +1 -1
  64. package/dist/DateInput/DateInput.js +47 -33
  65. package/dist/DateRangeInput/DateRangeInput.d.ts +9 -2
  66. package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
  67. package/dist/DateRangeInput/DateRangeInput.js +55 -32
  68. package/dist/DateTimeInput/DateTimeInput.d.ts +9 -1
  69. package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
  70. package/dist/DateTimeInput/DateTimeInput.js +54 -30
  71. package/dist/Dialog/Dialog.d.ts.map +1 -1
  72. package/dist/Dialog/Dialog.js +4 -4
  73. package/dist/DropdownMenu/DropdownMenu.d.ts +33 -8
  74. package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
  75. package/dist/DropdownMenu/DropdownMenu.js +62 -20
  76. package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts +8 -11
  77. package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts.map +1 -1
  78. package/dist/DropdownMenu/DropdownMenuCheckboxItem.js +32 -31
  79. package/dist/DropdownMenu/DropdownMenuDivider.d.ts +25 -0
  80. package/dist/DropdownMenu/DropdownMenuDivider.d.ts.map +1 -0
  81. package/dist/DropdownMenu/DropdownMenuDivider.js +66 -0
  82. package/dist/DropdownMenu/DropdownMenuItem.d.ts +15 -2
  83. package/dist/DropdownMenu/DropdownMenuItem.d.ts.map +1 -1
  84. package/dist/DropdownMenu/DropdownMenuItem.js +20 -8
  85. package/dist/DropdownMenu/DropdownMenuRadioItem.d.ts +5 -5
  86. package/dist/DropdownMenu/DropdownMenuRadioItem.d.ts.map +1 -1
  87. package/dist/DropdownMenu/DropdownMenuRadioItem.js +24 -67
  88. package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts.map +1 -1
  89. package/dist/DropdownMenu/DropdownMenuSubMenu.js +2 -8
  90. package/dist/DropdownMenu/index.d.ts +2 -1
  91. package/dist/DropdownMenu/index.d.ts.map +1 -1
  92. package/dist/DropdownMenu/index.js +4 -0
  93. package/dist/DropdownMenu/renderDropdownItems.d.ts.map +1 -1
  94. package/dist/DropdownMenu/renderDropdownItems.js +35 -27
  95. package/dist/EmptyState/EmptyState.d.ts.map +1 -1
  96. package/dist/EmptyState/EmptyState.js +9 -5
  97. package/dist/Field/InputClearButton.d.ts +16 -3
  98. package/dist/Field/InputClearButton.d.ts.map +1 -1
  99. package/dist/Field/InputClearButton.js +15 -4
  100. package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
  101. package/dist/HoverCard/useHoverCard.js +3 -19
  102. package/dist/Indicator/CheckIndicator.d.ts +25 -0
  103. package/dist/Indicator/CheckIndicator.d.ts.map +1 -0
  104. package/dist/Indicator/CheckIndicator.js +155 -0
  105. package/dist/Indicator/CheckboxIndicator.d.ts +22 -0
  106. package/dist/Indicator/CheckboxIndicator.d.ts.map +1 -0
  107. package/dist/Indicator/CheckboxIndicator.js +173 -0
  108. package/dist/Indicator/RadioIndicator.d.ts +23 -0
  109. package/dist/Indicator/RadioIndicator.d.ts.map +1 -0
  110. package/dist/Indicator/RadioIndicator.js +137 -0
  111. package/dist/Indicator/index.d.ts +24 -0
  112. package/dist/Indicator/index.d.ts.map +1 -0
  113. package/dist/Indicator/index.js +26 -0
  114. package/dist/Indicator/indicator.markers.stylex.d.ts +16 -0
  115. package/dist/Indicator/indicator.markers.stylex.d.ts.map +1 -0
  116. package/dist/Indicator/indicator.markers.stylex.js +21 -0
  117. package/dist/Indicator/indicatorRegistry.d.ts +71 -0
  118. package/dist/Indicator/indicatorRegistry.d.ts.map +1 -0
  119. package/dist/Indicator/indicatorRegistry.js +93 -0
  120. package/dist/Indicator/types.d.ts +177 -0
  121. package/dist/Indicator/types.d.ts.map +1 -0
  122. package/dist/Indicator/types.js +1 -0
  123. package/dist/Indicator/useIndicator.d.ts +18 -0
  124. package/dist/Indicator/useIndicator.d.ts.map +1 -0
  125. package/dist/Indicator/useIndicator.js +30 -0
  126. package/dist/Item/Item.d.ts.map +1 -1
  127. package/dist/Item/Item.js +4 -8
  128. package/dist/Layer/useLayer.d.ts +14 -0
  129. package/dist/Layer/useLayer.d.ts.map +1 -1
  130. package/dist/Layer/useLayer.js +25 -2
  131. package/dist/Lightbox/Lightbox.d.ts.map +1 -1
  132. package/dist/Lightbox/Lightbox.js +80 -103
  133. package/dist/Link/Link.d.ts.map +1 -1
  134. package/dist/Link/Link.js +4 -5
  135. package/dist/MobileNav/MobileNav.js +8 -8
  136. package/dist/MoreMenu/MoreMenu.d.ts +14 -1
  137. package/dist/MoreMenu/MoreMenu.d.ts.map +1 -1
  138. package/dist/MoreMenu/MoreMenu.js +4 -0
  139. package/dist/MultiSelector/MultiSelector.d.ts +8 -1
  140. package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
  141. package/dist/MultiSelector/MultiSelector.js +119 -95
  142. package/dist/NumberInput/NumberInput.d.ts +27 -1
  143. package/dist/NumberInput/NumberInput.d.ts.map +1 -1
  144. package/dist/NumberInput/NumberInput.js +230 -42
  145. package/dist/Outline/Outline.d.ts.map +1 -1
  146. package/dist/Outline/Outline.js +2 -3
  147. package/dist/Pagination/Pagination.d.ts.map +1 -1
  148. package/dist/Pagination/Pagination.js +61 -63
  149. package/dist/Popover/Popover.d.ts.map +1 -1
  150. package/dist/Popover/Popover.js +6 -8
  151. package/dist/Popover/usePopover.d.ts +15 -0
  152. package/dist/Popover/usePopover.d.ts.map +1 -1
  153. package/dist/Popover/usePopover.js +14 -2
  154. package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
  155. package/dist/PowerSearch/PowerSearch.js +1 -1
  156. package/dist/PowerSearch/PowerSearchEditPopover.d.ts.map +1 -1
  157. package/dist/PowerSearch/PowerSearchEditPopover.js +7 -0
  158. package/dist/ProgressBar/ProgressBar.d.ts +11 -4
  159. package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
  160. package/dist/ProgressBar/ProgressBar.js +95 -6
  161. package/dist/RadioList/RadioListItem.d.ts.map +1 -1
  162. package/dist/RadioList/RadioListItem.js +29 -84
  163. package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
  164. package/dist/Resizable/ResizeHandle.js +2 -3
  165. package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
  166. package/dist/SegmentedControl/SegmentedControlItem.js +2 -3
  167. package/dist/SelectableCard/SelectableCard.d.ts.map +1 -1
  168. package/dist/SelectableCard/SelectableCard.js +3 -11
  169. package/dist/Selector/Selector.d.ts +12 -1
  170. package/dist/Selector/Selector.d.ts.map +1 -1
  171. package/dist/Selector/Selector.js +222 -111
  172. package/dist/Selector/hooks.d.ts +18 -6
  173. package/dist/Selector/hooks.d.ts.map +1 -1
  174. package/dist/Selector/hooks.js +57 -40
  175. package/dist/SideNav/SideNav.d.ts.map +1 -1
  176. package/dist/SideNav/SideNav.js +1 -1
  177. package/dist/SideNav/SideNavCollapseButton.d.ts +1 -1
  178. package/dist/SideNav/SideNavCollapseButton.d.ts.map +1 -1
  179. package/dist/SideNav/SideNavCollapseButton.js +29 -14
  180. package/dist/SideNav/SideNavHeading.d.ts.map +1 -1
  181. package/dist/SideNav/SideNavHeading.js +56 -20
  182. package/dist/SideNav/SideNavItem.d.ts.map +1 -1
  183. package/dist/SideNav/SideNavItem.js +28 -22
  184. package/dist/Slider/Slider.d.ts.map +1 -1
  185. package/dist/Slider/Slider.js +2 -6
  186. package/dist/Stack/stack.stylex.d.ts +3 -3
  187. package/dist/Switch/Switch.d.ts.map +1 -1
  188. package/dist/Switch/Switch.js +14 -13
  189. package/dist/TabList/Tab.d.ts.map +1 -1
  190. package/dist/TabList/Tab.js +2 -3
  191. package/dist/TabList/TabMenu.d.ts.map +1 -1
  192. package/dist/TabList/TabMenu.js +41 -19
  193. package/dist/Table/BaseTable.d.ts.map +1 -1
  194. package/dist/Table/BaseTable.js +8 -0
  195. package/dist/Table/index.d.ts +1 -1
  196. package/dist/Table/index.d.ts.map +1 -1
  197. package/dist/Table/index.js +1 -1
  198. package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts +1 -1
  199. package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts.map +1 -1
  200. package/dist/Table/plugins/groupedRows/useTableGroupedRows.js +22 -18
  201. package/dist/Table/plugins/rowExpansion/index.d.ts +1 -1
  202. package/dist/Table/plugins/rowExpansion/index.d.ts.map +1 -1
  203. package/dist/Table/plugins/rowExpansion/index.js +1 -1
  204. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts +41 -76
  205. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -1
  206. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +94 -345
  207. package/dist/Table/plugins/sortable/useTableSortable.d.ts.map +1 -1
  208. package/dist/Table/plugins/sortable/useTableSortable.js +23 -4
  209. package/dist/Table/plugins/tree/useTableTreeData.d.ts.map +1 -1
  210. package/dist/Table/plugins/tree/useTableTreeData.js +29 -33
  211. package/dist/Table/tableContextMenu.d.ts.map +1 -1
  212. package/dist/Table/tableContextMenu.js +2 -1
  213. package/dist/Table/types.d.ts +11 -0
  214. package/dist/Table/types.d.ts.map +1 -1
  215. package/dist/TextArea/TextArea.d.ts +10 -1
  216. package/dist/TextArea/TextArea.d.ts.map +1 -1
  217. package/dist/TextArea/TextArea.js +16 -6
  218. package/dist/TextInput/TextInput.d.ts +10 -1
  219. package/dist/TextInput/TextInput.d.ts.map +1 -1
  220. package/dist/TextInput/TextInput.js +13 -19
  221. package/dist/Thumbnail/Thumbnail.d.ts.map +1 -1
  222. package/dist/Thumbnail/Thumbnail.js +32 -26
  223. package/dist/TimeInput/TimeInput.d.ts.map +1 -1
  224. package/dist/TimeInput/TimeInput.js +14 -17
  225. package/dist/Timestamp/Timestamp.d.ts.map +1 -1
  226. package/dist/Timestamp/Timestamp.js +14 -3
  227. package/dist/Timestamp/TimestampHoverCard.d.ts.map +1 -1
  228. package/dist/Timestamp/TimestampHoverCard.js +16 -34
  229. package/dist/Timestamp/formatInstant.d.ts +11 -1
  230. package/dist/Timestamp/formatInstant.d.ts.map +1 -1
  231. package/dist/Timestamp/formatInstant.js +3 -1
  232. package/dist/Token/Token.d.ts.map +1 -1
  233. package/dist/Token/Token.js +20 -11
  234. package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
  235. package/dist/Tokenizer/Tokenizer.js +4 -2
  236. package/dist/Tooltip/useTooltip.d.ts.map +1 -1
  237. package/dist/Tooltip/useTooltip.js +3 -19
  238. package/dist/TopNav/TopNav.d.ts.map +1 -1
  239. package/dist/TopNav/TopNav.js +6 -5
  240. package/dist/TopNav/TopNavHeading.d.ts.map +1 -1
  241. package/dist/TopNav/TopNavHeading.js +54 -16
  242. package/dist/TopNav/TopNavItem.d.ts.map +1 -1
  243. package/dist/TopNav/TopNavItem.js +3 -9
  244. package/dist/TopNav/TopNavMegaMenu.d.ts +7 -0
  245. package/dist/TopNav/TopNavMegaMenu.d.ts.map +1 -1
  246. package/dist/TopNav/TopNavMegaMenu.js +146 -60
  247. package/dist/TopNav/TopNavMegaMenuItem.d.ts.map +1 -1
  248. package/dist/TopNav/TopNavMegaMenuItem.js +22 -3
  249. package/dist/TopNav/TopNavMenu.d.ts.map +1 -1
  250. package/dist/TopNav/TopNavMenu.js +83 -38
  251. package/dist/TreeList/TreeList.d.ts.map +1 -1
  252. package/dist/TreeList/TreeList.js +13 -0
  253. package/dist/TreeList/TreeListBranches.d.ts +1 -1
  254. package/dist/TreeList/TreeListBranches.d.ts.map +1 -1
  255. package/dist/TreeList/TreeListBranches.js +14 -4
  256. package/dist/TreeList/TreeListItem.d.ts +11 -1
  257. package/dist/TreeList/TreeListItem.d.ts.map +1 -1
  258. package/dist/TreeList/TreeListItem.js +57 -30
  259. package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
  260. package/dist/Typeahead/BaseTypeahead.js +16 -8
  261. package/dist/astryx.css +84 -96
  262. package/dist/astryx.umd.js +56 -56
  263. package/dist/astryx.umd.js.map +4 -4
  264. package/dist/hooks/containerReveal.stylex.d.ts +61 -0
  265. package/dist/hooks/containerReveal.stylex.d.ts.map +1 -0
  266. package/dist/hooks/containerReveal.stylex.js +63 -0
  267. package/dist/hooks/index.d.ts +3 -0
  268. package/dist/hooks/index.d.ts.map +1 -1
  269. package/dist/hooks/index.js +2 -0
  270. package/dist/hooks/useClipboard.d.ts +59 -0
  271. package/dist/hooks/useClipboard.d.ts.map +1 -0
  272. package/dist/hooks/useClipboard.js +106 -0
  273. package/dist/hooks/useContainerReveal.d.ts +14 -8
  274. package/dist/hooks/useContainerReveal.d.ts.map +1 -1
  275. package/dist/hooks/useContainerReveal.js +28 -69
  276. package/dist/hooks/useIndicatorFocusRing.d.ts +28 -0
  277. package/dist/hooks/useIndicatorFocusRing.d.ts.map +1 -0
  278. package/dist/hooks/useIndicatorFocusRing.js +96 -0
  279. package/dist/hooks/useInputStatusIcon.d.ts.map +1 -1
  280. package/dist/hooks/useInputStatusIcon.js +17 -4
  281. package/dist/hooks/useLongPress.d.ts.map +1 -1
  282. package/dist/hooks/useLongPress.js +12 -2
  283. package/dist/hooks/useScrollLock.d.ts.map +1 -1
  284. package/dist/hooks/useScrollLock.js +33 -18
  285. package/dist/hooks/useStreamingText.d.ts +18 -3
  286. package/dist/hooks/useStreamingText.d.ts.map +1 -1
  287. package/dist/hooks/useStreamingText.js +47 -7
  288. package/dist/hooks/useTreeFocus.d.ts.map +1 -1
  289. package/dist/hooks/useTreeFocus.js +9 -3
  290. package/dist/hooks/useTypeahead.d.ts +3 -2
  291. package/dist/hooks/useTypeahead.d.ts.map +1 -1
  292. package/dist/hooks/useTypeahead.js +19 -7
  293. package/dist/index.d.ts +1 -0
  294. package/dist/index.d.ts.map +1 -1
  295. package/dist/index.js +1 -0
  296. package/dist/theme/defineTheme.d.ts +18 -2
  297. package/dist/theme/defineTheme.d.ts.map +1 -1
  298. package/dist/theme/defineTheme.js +10 -1
  299. package/dist/theme/derivedVarRegistry.d.ts +8 -0
  300. package/dist/theme/derivedVarRegistry.d.ts.map +1 -1
  301. package/dist/theme/derivedVarRegistry.js +14 -13
  302. package/dist/theme/expandColorScale.d.ts +3 -1
  303. package/dist/theme/expandColorScale.d.ts.map +1 -1
  304. package/dist/theme/expandColorScale.js +17 -7
  305. package/dist/theme/expandTypeScale.d.ts.map +1 -1
  306. package/dist/theme/expandTypeScale.js +17 -0
  307. package/dist/theme/generateThemeRules.d.ts.map +1 -1
  308. package/dist/theme/generateThemeRules.js +11 -0
  309. package/dist/theme/index.d.ts +2 -1
  310. package/dist/theme/index.d.ts.map +1 -1
  311. package/dist/theme/index.js +1 -1
  312. package/dist/theme/tokens.stylex.d.ts +12 -0
  313. package/dist/theme/tokens.stylex.d.ts.map +1 -1
  314. package/dist/theme/tokens.stylex.js +23 -0
  315. package/dist/utils/focusOutline.stylex.d.ts +122 -0
  316. package/dist/utils/focusOutline.stylex.d.ts.map +1 -0
  317. package/dist/utils/focusOutline.stylex.js +143 -0
  318. package/dist/utils/focusReturn.d.ts +24 -0
  319. package/dist/utils/focusReturn.d.ts.map +1 -0
  320. package/dist/utils/focusReturn.js +29 -0
  321. package/dist/utils/index.d.ts +2 -0
  322. package/dist/utils/index.d.ts.map +1 -1
  323. package/dist/utils/index.js +6 -1
  324. package/dist/utils/mergeRefs.d.ts.map +1 -1
  325. package/dist/utils/mergeRefs.js +7 -5
  326. package/dist/utils/rtlStyles.d.ts +2 -2
  327. package/dist/utils/rtlStyles.js +2 -2
  328. package/dist/utils/themeProps.d.ts +20 -1
  329. package/dist/utils/themeProps.d.ts.map +1 -1
  330. package/dist/utils/themeProps.js +8 -2
  331. package/locales/en.json +20 -0
  332. package/locales/pseudo.json +15 -0
  333. package/package.json +8 -3
  334. package/src/AlertDialog/AlertDialog.doc.mjs +16 -3
  335. package/src/AlertDialog/AlertDialog.test.tsx +208 -1
  336. package/src/AlertDialog/AlertDialog.tsx +21 -3
  337. package/src/AppShell/AppShell.doc.mjs +11 -0
  338. package/src/AppShell/AppShell.test.tsx +139 -0
  339. package/src/AppShell/AppShell.tsx +32 -22
  340. package/src/AspectRatio/AspectRatio.doc.mjs +27 -3
  341. package/src/AspectRatio/AspectRatio.test.tsx +30 -0
  342. package/src/AspectRatio/AspectRatio.tsx +13 -0
  343. package/src/Avatar/Avatar.doc.mjs +2 -13
  344. package/src/Avatar/Avatar.test.tsx +33 -8
  345. package/src/Avatar/Avatar.tsx +52 -50
  346. package/src/AvatarGroup/AvatarGroupOverflow.tsx +2 -9
  347. package/src/Banner/Banner.tsx +9 -6
  348. package/src/Breadcrumbs/BreadcrumbItem.tsx +16 -6
  349. package/src/Breadcrumbs/index.ts +5 -1
  350. package/src/Button/Button.doc.mjs +2 -2
  351. package/src/Button/Button.tsx +22 -41
  352. package/src/Calendar/Calendar.tsx +2 -1
  353. package/src/Calendar/styles.ts +0 -8
  354. package/src/Carousel/Carousel.doc.mjs +3 -0
  355. package/src/Carousel/Carousel.tsx +10 -6
  356. package/src/Chat/Chat.doc.mjs +2 -0
  357. package/src/Chat/ChatDictationButton.tsx +7 -1
  358. package/src/Chat/ChatLayoutScrollButton.test.tsx +22 -0
  359. package/src/Chat/ChatLayoutScrollButton.tsx +8 -1
  360. package/src/Chat/ChatSendButton.tsx +2 -3
  361. package/src/Chat/ChatToolCalls.test.tsx +35 -0
  362. package/src/Chat/ChatToolCalls.tsx +36 -16
  363. package/src/Chat/useTriggerMenu.tsx +2 -5
  364. package/src/CheckboxInput/CheckboxInput.doc.mjs +4 -2
  365. package/src/CheckboxInput/CheckboxInput.test.tsx +120 -0
  366. package/src/CheckboxInput/CheckboxInput.tsx +45 -202
  367. package/src/ClickableCard/ClickableCard.tsx +6 -11
  368. package/src/CodeBlock/CodeBlock.doc.mjs +3 -0
  369. package/src/CodeBlock/CodeBlock.test.tsx +91 -0
  370. package/src/CodeBlock/CodeBlock.tsx +57 -80
  371. package/src/Collapsible/Collapsible.tsx +22 -18
  372. package/src/CommandPalette/CommandPalette.test.tsx +29 -0
  373. package/src/CommandPalette/CommandPaletteItem.tsx +7 -4
  374. package/src/CommandPalette/CommandPaletteList.tsx +2 -2
  375. package/src/ComplexSelector/ComplexSelector.doc.mjs +42 -0
  376. package/src/ComplexSelector/ComplexSelector.test.tsx +73 -0
  377. package/src/ComplexSelector/ComplexSelector.tsx +41 -28
  378. package/src/ContextMenu/ContextMenu.doc.mjs +1 -1
  379. package/src/ContextMenu/ContextMenu.test.tsx +41 -0
  380. package/src/ContextMenu/ContextMenu.tsx +3 -3
  381. package/src/ContextMenu/index.ts +5 -1
  382. package/src/DateInput/DateInput.doc.mjs +18 -3
  383. package/src/DateInput/DateInput.test.tsx +112 -11
  384. package/src/DateInput/DateInput.tsx +44 -25
  385. package/src/DateRangeInput/DateRangeInput.doc.mjs +10 -2
  386. package/src/DateRangeInput/DateRangeInput.test.tsx +110 -14
  387. package/src/DateRangeInput/DateRangeInput.tsx +27 -21
  388. package/src/DateTimeInput/DateTimeInput.doc.mjs +16 -2
  389. package/src/DateTimeInput/DateTimeInput.test.tsx +154 -1
  390. package/src/DateTimeInput/DateTimeInput.tsx +58 -17
  391. package/src/Dialog/Dialog.tsx +2 -9
  392. package/src/DropdownMenu/DropdownMenu.doc.mjs +5 -9
  393. package/src/DropdownMenu/DropdownMenu.test.tsx +534 -4
  394. package/src/DropdownMenu/DropdownMenu.tsx +113 -52
  395. package/src/DropdownMenu/DropdownMenuCheckboxItem.tsx +27 -30
  396. package/src/DropdownMenu/DropdownMenuDivider.doc.mjs +34 -0
  397. package/src/DropdownMenu/DropdownMenuDivider.tsx +81 -0
  398. package/src/DropdownMenu/DropdownMenuItem.doc.mjs +39 -4
  399. package/src/DropdownMenu/DropdownMenuItem.tsx +48 -10
  400. package/src/DropdownMenu/DropdownMenuRadioItem.tsx +30 -76
  401. package/src/DropdownMenu/DropdownMenuSelectable.test.tsx +25 -19
  402. package/src/DropdownMenu/DropdownMenuSubMenu.test.tsx +44 -14
  403. package/src/DropdownMenu/DropdownMenuSubMenu.tsx +1 -5
  404. package/src/DropdownMenu/index.ts +8 -1
  405. package/src/DropdownMenu/renderDropdownItems.tsx +33 -34
  406. package/src/EmptyState/EmptyState.doc.mjs +4 -0
  407. package/src/EmptyState/EmptyState.test.tsx +62 -0
  408. package/src/EmptyState/EmptyState.tsx +16 -6
  409. package/src/Field/Field.doc.mjs +1 -0
  410. package/src/Field/InputClearButton.test.tsx +117 -0
  411. package/src/Field/InputClearButton.tsx +30 -3
  412. package/src/HoverCard/useHoverCard.tsx +2 -23
  413. package/src/Icon/Icon.doc.mjs +2 -1
  414. package/src/Indicator/CheckIndicator.tsx +174 -0
  415. package/src/Indicator/CheckboxIndicator.tsx +257 -0
  416. package/src/Indicator/Indicator.doc.mjs +344 -0
  417. package/src/Indicator/Indicator.test.tsx +393 -0
  418. package/src/Indicator/RadioIndicator.tsx +206 -0
  419. package/src/Indicator/index.ts +46 -0
  420. package/src/Indicator/indicator.markers.stylex.ts +19 -0
  421. package/src/Indicator/indicatorRegistry.test.tsx +106 -0
  422. package/src/Indicator/indicatorRegistry.ts +120 -0
  423. package/src/Indicator/types.ts +197 -0
  424. package/src/Indicator/useIndicator.ts +39 -0
  425. package/src/Item/Item.doc.mjs +1 -1
  426. package/src/Item/Item.tsx +7 -14
  427. package/src/Layer/useLayer.doc.mjs +2 -2
  428. package/src/Layer/useLayer.test.tsx +85 -0
  429. package/src/Layer/useLayer.tsx +39 -1
  430. package/src/Lightbox/Lightbox.doc.mjs +1 -1
  431. package/src/Lightbox/Lightbox.tsx +45 -49
  432. package/src/Link/Link.tsx +4 -11
  433. package/src/MobileNav/MobileNav.tsx +3 -3
  434. package/src/MoreMenu/MoreMenu.doc.mjs +31 -0
  435. package/src/MoreMenu/MoreMenu.test.tsx +68 -1
  436. package/src/MoreMenu/MoreMenu.tsx +19 -0
  437. package/src/MultiSelector/MultiSelector.doc.mjs +16 -1
  438. package/src/MultiSelector/MultiSelector.test.tsx +259 -16
  439. package/src/MultiSelector/MultiSelector.tsx +144 -121
  440. package/src/NumberInput/NumberInput.doc.mjs +265 -50
  441. package/src/NumberInput/NumberInput.test.tsx +726 -21
  442. package/src/NumberInput/NumberInput.tsx +353 -59
  443. package/src/Outline/Outline.tsx +2 -5
  444. package/src/Pagination/Pagination.doc.mjs +1 -1
  445. package/src/Pagination/Pagination.test.tsx +22 -7
  446. package/src/Pagination/Pagination.tsx +38 -35
  447. package/src/Popover/Popover.doc.mjs +2 -0
  448. package/src/Popover/Popover.tsx +6 -7
  449. package/src/Popover/usePopover.tsx +37 -4
  450. package/src/PowerSearch/PowerSearch.tsx +1 -1
  451. package/src/PowerSearch/PowerSearchEditPopover.test.tsx +42 -0
  452. package/src/PowerSearch/PowerSearchEditPopover.tsx +7 -0
  453. package/src/ProgressBar/ProgressBar.doc.mjs +27 -5
  454. package/src/ProgressBar/ProgressBar.test.tsx +224 -1
  455. package/src/ProgressBar/ProgressBar.tsx +126 -30
  456. package/src/RadioList/RadioList.doc.mjs +4 -2
  457. package/src/RadioList/RadioListItem.tsx +31 -130
  458. package/src/Resizable/ResizeHandle.tsx +2 -9
  459. package/src/SegmentedControl/SegmentedControlItem.tsx +2 -9
  460. package/src/SelectableCard/SelectableCard.tsx +4 -9
  461. package/src/Selector/Selector.doc.mjs +15 -4
  462. package/src/Selector/Selector.test.tsx +1234 -98
  463. package/src/Selector/Selector.tsx +254 -126
  464. package/src/Selector/hooks.ts +77 -50
  465. package/src/SideNav/SideNav.test.tsx +46 -0
  466. package/src/SideNav/SideNav.tsx +1 -0
  467. package/src/SideNav/SideNavCollapseButton.tsx +15 -10
  468. package/src/SideNav/SideNavHeading.tsx +48 -10
  469. package/src/SideNav/SideNavItem.tsx +20 -12
  470. package/src/Slider/Slider.tsx +2 -11
  471. package/src/Stack/Stack.doc.mjs +110 -0
  472. package/src/StatusDot/StatusDot.doc.mjs +12 -3
  473. package/src/Switch/Switch.test.tsx +32 -0
  474. package/src/Switch/Switch.tsx +18 -10
  475. package/src/TabList/Tab.tsx +2 -9
  476. package/src/TabList/TabMenu.tsx +14 -21
  477. package/src/Table/BaseTable.tsx +11 -0
  478. package/src/Table/index.ts +1 -4
  479. package/src/Table/plugins/groupedRows/useTableGroupedRows.tsx +30 -14
  480. package/src/Table/plugins/rowExpansion/index.ts +1 -4
  481. package/src/Table/plugins/rowExpansion/useTableRowExpansion.test.tsx +125 -175
  482. package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +115 -458
  483. package/src/Table/plugins/sortable/useTableSortable.tsx +2 -6
  484. package/src/Table/plugins/tree/useTableTreeData.tsx +43 -24
  485. package/src/Table/tableContextMenu.test.tsx +27 -0
  486. package/src/Table/tableContextMenu.tsx +1 -0
  487. package/src/Table/types.ts +11 -0
  488. package/src/Table/useTableGroupedRows.doc.mjs +1 -1
  489. package/src/Table/useTableRowExpansion.doc.mjs +43 -66
  490. package/src/TextArea/TextArea.doc.mjs +42 -2
  491. package/src/TextArea/TextArea.test.tsx +219 -0
  492. package/src/TextArea/TextArea.tsx +34 -7
  493. package/src/TextInput/TextInput.doc.mjs +18 -2
  494. package/src/TextInput/TextInput.test.tsx +189 -0
  495. package/src/TextInput/TextInput.tsx +25 -31
  496. package/src/Thumbnail/Thumbnail.tsx +2 -9
  497. package/src/TimeInput/TimeInput.doc.mjs +2 -2
  498. package/src/TimeInput/TimeInput.test.tsx +84 -3
  499. package/src/TimeInput/TimeInput.tsx +26 -28
  500. package/src/Timestamp/Timestamp.doc.mjs +4 -3
  501. package/src/Timestamp/Timestamp.test.tsx +91 -14
  502. package/src/Timestamp/Timestamp.tsx +14 -2
  503. package/src/Timestamp/TimestampHoverCard.tsx +13 -35
  504. package/src/Timestamp/formatInstant.ts +16 -1
  505. package/src/Token/Token.tsx +5 -28
  506. package/src/Tokenizer/Tokenizer.doc.mjs +2 -2
  507. package/src/Tokenizer/Tokenizer.test.tsx +45 -3
  508. package/src/Tokenizer/Tokenizer.tsx +10 -2
  509. package/src/Tooltip/useTooltip.tsx +2 -23
  510. package/src/TopNav/TopNav.tsx +1 -3
  511. package/src/TopNav/TopNavHeading.tsx +42 -13
  512. package/src/TopNav/TopNavItem.tsx +3 -21
  513. package/src/TopNav/TopNavMegaMenu.test.tsx +433 -33
  514. package/src/TopNav/TopNavMegaMenu.tsx +118 -53
  515. package/src/TopNav/TopNavMegaMenuItem.tsx +2 -9
  516. package/src/TopNav/TopNavMenu.tsx +34 -37
  517. package/src/TreeList/TreeList.doc.mjs +5 -0
  518. package/src/TreeList/TreeList.test.tsx +208 -8
  519. package/src/TreeList/TreeList.tsx +22 -0
  520. package/src/TreeList/TreeListBranches.tsx +25 -2
  521. package/src/TreeList/TreeListItem.tsx +89 -52
  522. package/src/Typeahead/BaseTypeahead.tsx +19 -6
  523. package/src/Typeahead/Typeahead.doc.mjs +1 -0
  524. package/src/Typeahead/Typeahead.test.tsx +76 -3
  525. package/src/hooks/containerReveal.stylex.ts +102 -0
  526. package/src/hooks/index.ts +4 -0
  527. package/src/hooks/useClipboard.doc.mjs +87 -0
  528. package/src/hooks/useClipboard.test.tsx +151 -0
  529. package/src/hooks/useClipboard.ts +135 -0
  530. package/src/hooks/useContainerReveal.doc.mjs +7 -7
  531. package/src/hooks/useContainerReveal.test.tsx +42 -62
  532. package/src/hooks/useContainerReveal.ts +36 -91
  533. package/src/hooks/useImageMode.test.ts +1 -1
  534. package/src/hooks/useIndicatorFocusRing.tsx +120 -0
  535. package/src/hooks/useInputStatusIcon.tsx +8 -8
  536. package/src/hooks/useLongPress.test.tsx +18 -0
  537. package/src/hooks/useLongPress.ts +12 -2
  538. package/src/hooks/useScrollLock.test.ts +72 -0
  539. package/src/hooks/useScrollLock.ts +51 -19
  540. package/src/hooks/useStreamingText.test.ts +46 -1
  541. package/src/hooks/useStreamingText.ts +49 -7
  542. package/src/hooks/useTreeFocus.test.tsx +50 -0
  543. package/src/hooks/useTreeFocus.ts +14 -3
  544. package/src/hooks/useTypeahead.test.tsx +150 -0
  545. package/src/hooks/useTypeahead.ts +24 -9
  546. package/src/i18n/InternationalizationProvider.doc.mjs +7 -2
  547. package/src/index.ts +1 -0
  548. package/src/theme/defineTheme.ts +27 -0
  549. package/src/theme/derivedVarRegistry.test.ts +21 -1
  550. package/src/theme/derivedVarRegistry.ts +19 -6
  551. package/src/theme/expandColorScale.test.ts +14 -0
  552. package/src/theme/expandColorScale.ts +24 -9
  553. package/src/theme/expandTypeScale.test.ts +43 -0
  554. package/src/theme/expandTypeScale.ts +17 -0
  555. package/src/theme/generateThemeRules.test.ts +78 -20
  556. package/src/theme/generateThemeRules.ts +11 -0
  557. package/src/theme/index.ts +15 -0
  558. package/src/theme/tokens.stylex.ts +18 -0
  559. package/src/theme/tokens.test.ts +37 -0
  560. package/src/utils/focusOutline.stylex.ts +177 -0
  561. package/src/utils/focusReturn.test.ts +42 -0
  562. package/src/utils/focusReturn.ts +31 -0
  563. package/src/utils/index.ts +5 -0
  564. package/src/utils/mergeRefs.test.ts +48 -0
  565. package/src/utils/mergeRefs.ts +12 -6
  566. package/src/utils/rtlStyles.ts +2 -2
  567. package/src/utils/themeProps.ts +26 -4
  568. package/dist/CheckboxInput/checkbox.markers.stylex.d.ts +0 -9
  569. package/dist/CheckboxInput/checkbox.markers.stylex.d.ts.map +0 -1
  570. package/dist/CheckboxInput/checkbox.markers.stylex.js +0 -14
  571. package/dist/RadioList/radio.markers.stylex.d.ts +0 -7
  572. package/dist/RadioList/radio.markers.stylex.d.ts.map +0 -1
  573. package/dist/RadioList/radio.markers.stylex.js +0 -12
  574. package/dist/hooks/containerReveal.pool.stylex.d.ts +0 -303
  575. package/dist/hooks/containerReveal.pool.stylex.d.ts.map +0 -1
  576. package/dist/hooks/containerReveal.pool.stylex.js +0 -292
  577. package/src/CheckboxInput/checkbox.markers.stylex.ts +0 -12
  578. package/src/RadioList/radio.markers.stylex.ts +0 -10
  579. package/src/hooks/containerReveal.pool.stylex.ts +0 -571
@@ -0,0 +1,137 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ /**
4
+ * @file RadioIndicator.tsx
5
+ * @input Indicator state props
6
+ * @output Exports RadioIndicator — the default radio selection visual
7
+ * @position Decorative radio visual shared by RadioList, decorative menu
8
+ * markers, and any selection slot themed to use a radio
9
+ */
10
+
11
+ import * as stylex from '@stylexjs/stylex';
12
+ import "../theme/tokens.stylex.js";
13
+ import { borderVars, colorVars, durationVars, easeVars, radiusVars } from "../theme/tokens.stylex.js";
14
+ import { isRenderable, mergeProps, themeProps } from "../utils/index.js";
15
+ import "./indicator.markers.stylex.js";
16
+ import { indicatorScope } from "./indicator.markers.stylex.js";
17
+ import { jsx as _jsx } from "react/jsx-runtime";
18
+ const styles = {
19
+ circle: {
20
+ kB7OPa: "x9f619",
21
+ k1xSpc: "x78zum5",
22
+ kGNEyG: "x6s0dn4",
23
+ kjj79g: "xl56j7k",
24
+ kmuXW: "x2lah0s",
25
+ kMzoRj: "x1litavf",
26
+ ksu8eU: "x1y0btm7",
27
+ kaIpWk: "xjspbzw",
28
+ k1ekBW: "xts7igz",
29
+ kIyJzY: "xuedmi6 x12w9bfk",
30
+ kAMwcw: "xlr8y92",
31
+ $$css: true
32
+ },
33
+ unchecked: {
34
+ kVAM5u: "xvy26l8 xilc7fp",
35
+ kWkggS: "x10xzikg xeultfy",
36
+ $$css: true
37
+ },
38
+ checked: {
39
+ kVAM5u: "xad5do x1ozl1p1",
40
+ kWkggS: "x1ewilqj x17srpfb",
41
+ $$css: true
42
+ },
43
+ disabled: {
44
+ kSiTet: "xbyyjgo",
45
+ kVAM5u: "x14i3s5s x61roa7",
46
+ $$css: true
47
+ },
48
+ disabledUnchecked: {
49
+ kWkggS: "xwmxj5m xqxnq6d",
50
+ $$css: true
51
+ },
52
+ dot: {
53
+ kaIpWk: "xjspbzw",
54
+ kWkggS: "x1azo05 xwvh9j7",
55
+ $$css: true
56
+ }
57
+ };
58
+ const circleSizeStyles = {
59
+ sm: {
60
+ kzqmXN: "xw4jnvo",
61
+ kZKoxP: "x1qx5ct2",
62
+ $$css: true
63
+ },
64
+ md: {
65
+ kzqmXN: "xvy4d1p",
66
+ kZKoxP: "xxk0z11",
67
+ $$css: true
68
+ }
69
+ };
70
+ const dotSizeStyles = {
71
+ sm: {
72
+ kzqmXN: "x1xc55vz",
73
+ kZKoxP: "xdk7pt",
74
+ $$css: true
75
+ },
76
+ md: {
77
+ kzqmXN: "x1fsd2vl",
78
+ kZKoxP: "x170jfvy",
79
+ $$css: true
80
+ }
81
+ };
82
+
83
+ /**
84
+ * The default radio visual: a circle with a filled inner dot when selected.
85
+ *
86
+ * Decorative and non-interactive — it renders `aria-hidden` and owns no input,
87
+ * role, or focus behavior. Themes replace it wholesale through
88
+ * `defineTheme({indicators: {radio: MyRadio}})`, or restyle it through the
89
+ * `radio` / `radio-dot` theme targets like any other component.
90
+ *
91
+ * Unlike an icon, a radio draws in *both* states — an empty circle when
92
+ * unchecked. That is what makes it usable as a selection indicator in
93
+ * components whose default is "a checkmark when selected, nothing otherwise".
94
+ *
95
+ * @example
96
+ * ```
97
+ * <RadioIndicator state="checked" size="md" />
98
+ * ```
99
+ */
100
+ export function RadioIndicator({
101
+ state,
102
+ size = 'md',
103
+ isDisabled = false,
104
+ children,
105
+ ref,
106
+ className,
107
+ style,
108
+ xstyle,
109
+ ...rest
110
+ }) {
111
+ // A radio has no partial state; anything other than unchecked reads as
112
+ // selected.
113
+ const isChecked = state !== 'unchecked';
114
+ return /*#__PURE__*/_jsx("span", {
115
+ ...rest,
116
+ ref: ref,
117
+ "aria-hidden": "true",
118
+ ...mergeProps(themeProps('radio-indicator', {
119
+ size,
120
+ checked: isChecked ? 'checked' : null,
121
+ disabled: isDisabled ? 'disabled' : null
122
+ },
123
+ // `radio` was the target before indicators existed; themes styling
124
+ // it keep working until the next major.
125
+ {
126
+ legacyNames: ['radio']
127
+ }), stylex.props(styles.circle, circleSizeStyles[size], isChecked ? styles.checked : styles.unchecked, isDisabled && styles.disabled, isDisabled && !isChecked && styles.disabledUnchecked, xstyle), className, style),
128
+ children: isRenderable(children) ? children : isChecked && /*#__PURE__*/_jsx("span", {
129
+ ...mergeProps(themeProps('radio-indicator-dot', {
130
+ size
131
+ }, {
132
+ legacyNames: ['radio-dot']
133
+ }), stylex.props(styles.dot, dotSizeStyles[size]))
134
+ })
135
+ });
136
+ }
137
+ RadioIndicator.displayName = 'RadioIndicator';
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @file index.ts
3
+ * @input None (re-export barrel)
4
+ * @output Public indicator surface: components, registry, hook, types
5
+ * @position Entry point for the stateful control-visual layer
6
+ *
7
+ * Indicators are the componentized form of stateful control visuals — the
8
+ * checkbox box, the radio circle, the mark on a chosen option. They are
9
+ * decorative: the owning component keeps the role, state, and focus behavior,
10
+ * while the indicator turns state into a picture.
11
+ *
12
+ * That makes them themeable through CSS targets like any other component, and
13
+ * replaceable wholesale by name through `defineTheme({indicators})` — replace
14
+ * `check` and every single-selection mark in the app follows.
15
+ */
16
+ export { CheckboxIndicator } from './CheckboxIndicator';
17
+ export { CheckIndicator } from './CheckIndicator';
18
+ export { RadioIndicator } from './RadioIndicator';
19
+ export { defaultIndicators, getIndicator } from './indicatorRegistry';
20
+ export type { CoreIndicatorName, IndicatorRegistrySource, } from './indicatorRegistry';
21
+ export { useIndicator } from './useIndicator';
22
+ export { indicatorScope } from './indicator.markers.stylex';
23
+ export type { IndicatorComponent, IndicatorFamily, IndicatorFamilyMap, IndicatorMap, IndicatorName, IndicatorNameOfFamily, IndicatorPosition, IndicatorProps, IndicatorRegistry, IndicatorSize, IndicatorState, } from './types';
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Indicator/index.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAGhD,OAAO,EAAC,iBAAiB,EAAE,YAAY,EAAC,MAAM,qBAAqB,CAAC;AACpE,YAAY,EACV,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAE5C,OAAO,EAAC,cAAc,EAAC,MAAM,4BAA4B,CAAC;AAE1D,YAAY,EACV,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,qBAAqB,EACrB,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,cAAc,GACf,MAAM,SAAS,CAAC"}
@@ -0,0 +1,26 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ /**
4
+ * @file index.ts
5
+ * @input None (re-export barrel)
6
+ * @output Public indicator surface: components, registry, hook, types
7
+ * @position Entry point for the stateful control-visual layer
8
+ *
9
+ * Indicators are the componentized form of stateful control visuals — the
10
+ * checkbox box, the radio circle, the mark on a chosen option. They are
11
+ * decorative: the owning component keeps the role, state, and focus behavior,
12
+ * while the indicator turns state into a picture.
13
+ *
14
+ * That makes them themeable through CSS targets like any other component, and
15
+ * replaceable wholesale by name through `defineTheme({indicators})` — replace
16
+ * `check` and every single-selection mark in the app follows.
17
+ */
18
+
19
+ export { CheckboxIndicator } from "./CheckboxIndicator.js";
20
+ export { CheckIndicator } from "./CheckIndicator.js";
21
+ export { RadioIndicator } from "./RadioIndicator.js";
22
+
23
+ // Registry (RSC-compatible, no 'use client')
24
+ export { defaultIndicators, getIndicator } from "./indicatorRegistry.js";
25
+ export { useIndicator } from "./useIndicator.js";
26
+ export { indicatorScope } from "./indicator.markers.stylex.js";
@@ -0,0 +1,16 @@
1
+ import * as stylex from '@stylexjs/stylex';
2
+ /**
3
+ * Scoped marker for indicator ancestor selectors.
4
+ *
5
+ * An owner (CheckboxInput's row, RadioListItem's row) applies this marker to
6
+ * the element whose hover and focus should drive the indicator's appearance.
7
+ * The indicator reads it through `stylex.when.ancestor()`, so interaction
8
+ * state stays in CSS instead of being threaded through React props — and
9
+ * owners that should *not* tint their indicator on hover (decorative menu
10
+ * markers, listbox options) simply don't apply the marker.
11
+ *
12
+ * Owners apply it only while enabled, so disabled controls get no hover
13
+ * feedback.
14
+ */
15
+ export declare const indicatorScope: ReturnType<typeof stylex.defineMarker>;
16
+ //# sourceMappingURL=indicator.markers.stylex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indicator.markers.stylex.d.ts","sourceRoot":"","sources":["../../src/Indicator/indicator.markers.stylex.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAE3C;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,cAAc,EAAE,UAAU,CAAC,OAAO,MAAM,CAAC,YAAY,CAC3C,CAAC"}
@@ -0,0 +1,21 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ import * as stylex from '@stylexjs/stylex';
4
+
5
+ /**
6
+ * Scoped marker for indicator ancestor selectors.
7
+ *
8
+ * An owner (CheckboxInput's row, RadioListItem's row) applies this marker to
9
+ * the element whose hover and focus should drive the indicator's appearance.
10
+ * The indicator reads it through `stylex.when.ancestor()`, so interaction
11
+ * state stays in CSS instead of being threaded through React props — and
12
+ * owners that should *not* tint their indicator on hover (decorative menu
13
+ * markers, listbox options) simply don't apply the marker.
14
+ *
15
+ * Owners apply it only while enabled, so disabled controls get no hover
16
+ * feedback.
17
+ */
18
+ export const indicatorScope = {
19
+ x1odsvnm: "x1odsvnm",
20
+ $$css: true
21
+ };
@@ -0,0 +1,71 @@
1
+ /**
2
+ * @file indicatorRegistry.ts
3
+ * @input Theme source and indicator name
4
+ * @output Exports the default indicator map and getIndicator resolution
5
+ * @position Server-safe indicator resolver; no 'use client' so it is
6
+ * importable from RSC
7
+ *
8
+ * Two name spaces meet here, and keeping them apart is the whole design:
9
+ *
10
+ * - {@link CoreIndicatorName} — the indicators Astryx itself ships. Closed,
11
+ * and every one of them has a default, so resolving one always yields a
12
+ * component.
13
+ * - {@link IndicatorName} — every indicator name that exists, including the
14
+ * ones other packages add by augmenting `IndicatorMap`. Open, and core has
15
+ * no default for a name it has never heard of.
16
+ *
17
+ * `getIndicator` is overloaded along that seam: a core name resolves to a
18
+ * component, an augmented name resolves to a component *or* `undefined`, and
19
+ * the caller has to say what to do about it. Typing the map as total over the
20
+ * open union instead — which is what shipped in #4712 — made the compiler
21
+ * promise a component for `getIndicator('brand-star')` and hand back
22
+ * `undefined` at runtime.
23
+ */
24
+ import type { DefinedTheme } from '../theme/defineTheme';
25
+ import type { IndicatorComponent, IndicatorMap, IndicatorName } from './types';
26
+ /**
27
+ * The indicator names Astryx ships a default for.
28
+ *
29
+ * Written out rather than derived from {@link IndicatorMap}, because that
30
+ * interface is open to augmentation and this set is not: it is exactly what is
31
+ * in {@link defaultIndicators} below. `indicatorRegistry.test.tsx` pins the two
32
+ * together in both directions.
33
+ */
34
+ export type CoreIndicatorName = 'check' | 'checkbox' | 'radio';
35
+ /**
36
+ * The indicators Astryx ships. A theme's `indicators` entries override these
37
+ * by name.
38
+ *
39
+ * Typed per family (rather than as one widened component type) so a default
40
+ * declared here has to accept the states its family passes — the same rule
41
+ * {@link IndicatorRegistry} holds replacements to.
42
+ */
43
+ export declare const defaultIndicators: {
44
+ [N in CoreIndicatorName]: IndicatorComponent<IndicatorMap[N]>;
45
+ };
46
+ export type IndicatorRegistrySource = DefinedTheme | string | null | undefined;
47
+ /**
48
+ * Resolve an indicator component by name, preferring the theme's override and
49
+ * falling back to the built-in indicator.
50
+ *
51
+ * Works in both server and client environments. Client components should use
52
+ * the {@link useIndicator} hook, which resolves against the nearest `<Theme>`.
53
+ *
54
+ * @example
55
+ * ```
56
+ * const Radio = getIndicator('radio', themeName);
57
+ * <Radio state="checked" />
58
+ * ```
59
+ *
60
+ * For a name contributed by augmentation there is no built-in to fall back to,
61
+ * so the result is `undefined` unless a theme supplies one — the package that
62
+ * added the name owns its default:
63
+ *
64
+ * @example
65
+ * ```
66
+ * const Star = getIndicator('brand-star', themeName) ?? BrandStar;
67
+ * ```
68
+ */
69
+ export declare function getIndicator<N extends CoreIndicatorName>(name: N, source?: IndicatorRegistrySource): IndicatorComponent<IndicatorMap[N]>;
70
+ export declare function getIndicator<N extends IndicatorName>(name: N, source?: IndicatorRegistrySource): IndicatorComponent<IndicatorMap[N]> | undefined;
71
+ //# sourceMappingURL=indicatorRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indicatorRegistry.d.ts","sourceRoot":"","sources":["../../src/Indicator/indicatorRegistry.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,sBAAsB,CAAC;AAKvD,OAAO,KAAK,EACV,kBAAkB,EAClB,YAAY,EACZ,aAAa,EAEd,MAAM,SAAS,CAAC;AAEjB;;;;;;;GAOG;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,CAAC;AAE/D;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,EAAE;KAC7B,CAAC,IAAI,iBAAiB,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;CAK9D,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,YAAY,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;AAe/E;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,iBAAiB,EACtD,IAAI,EAAE,CAAC,EACP,MAAM,CAAC,EAAE,uBAAuB,GAC/B,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,wBAAgB,YAAY,CAAC,CAAC,SAAS,aAAa,EAClD,IAAI,EAAE,CAAC,EACP,MAAM,CAAC,EAAE,uBAAuB,GAC/B,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC"}
@@ -0,0 +1,93 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ /**
4
+ * @file indicatorRegistry.ts
5
+ * @input Theme source and indicator name
6
+ * @output Exports the default indicator map and getIndicator resolution
7
+ * @position Server-safe indicator resolver; no 'use client' so it is
8
+ * importable from RSC
9
+ *
10
+ * Two name spaces meet here, and keeping them apart is the whole design:
11
+ *
12
+ * - {@link CoreIndicatorName} — the indicators Astryx itself ships. Closed,
13
+ * and every one of them has a default, so resolving one always yields a
14
+ * component.
15
+ * - {@link IndicatorName} — every indicator name that exists, including the
16
+ * ones other packages add by augmenting `IndicatorMap`. Open, and core has
17
+ * no default for a name it has never heard of.
18
+ *
19
+ * `getIndicator` is overloaded along that seam: a core name resolves to a
20
+ * component, an augmented name resolves to a component *or* `undefined`, and
21
+ * the caller has to say what to do about it. Typing the map as total over the
22
+ * open union instead — which is what shipped in #4712 — made the compiler
23
+ * promise a component for `getIndicator('brand-star')` and hand back
24
+ * `undefined` at runtime.
25
+ */
26
+
27
+ import { getRegisteredTheme } from "../theme/themeRegistry.js";
28
+ import { CheckboxIndicator } from "./CheckboxIndicator.js";
29
+ import { CheckIndicator } from "./CheckIndicator.js";
30
+ import { RadioIndicator } from "./RadioIndicator.js";
31
+
32
+ /**
33
+ * The indicator names Astryx ships a default for.
34
+ *
35
+ * Written out rather than derived from {@link IndicatorMap}, because that
36
+ * interface is open to augmentation and this set is not: it is exactly what is
37
+ * in {@link defaultIndicators} below. `indicatorRegistry.test.tsx` pins the two
38
+ * together in both directions.
39
+ */
40
+
41
+ /**
42
+ * The indicators Astryx ships. A theme's `indicators` entries override these
43
+ * by name.
44
+ *
45
+ * Typed per family (rather than as one widened component type) so a default
46
+ * declared here has to accept the states its family passes — the same rule
47
+ * {@link IndicatorRegistry} holds replacements to.
48
+ */
49
+ export const defaultIndicators = {
50
+ check: CheckIndicator,
51
+ checkbox: CheckboxIndicator,
52
+ radio: RadioIndicator
53
+ };
54
+ function getTheme(source) {
55
+ if (source == null) {
56
+ return null;
57
+ }
58
+ return typeof source === 'string' ? getRegisteredTheme(source) : source;
59
+ }
60
+ function getThemeIndicators(source) {
61
+ return getTheme(source)?.indicators ?? null;
62
+ }
63
+
64
+ /**
65
+ * Resolve an indicator component by name, preferring the theme's override and
66
+ * falling back to the built-in indicator.
67
+ *
68
+ * Works in both server and client environments. Client components should use
69
+ * the {@link useIndicator} hook, which resolves against the nearest `<Theme>`.
70
+ *
71
+ * @example
72
+ * ```
73
+ * const Radio = getIndicator('radio', themeName);
74
+ * <Radio state="checked" />
75
+ * ```
76
+ *
77
+ * For a name contributed by augmentation there is no built-in to fall back to,
78
+ * so the result is `undefined` unless a theme supplies one — the package that
79
+ * added the name owns its default:
80
+ *
81
+ * @example
82
+ * ```
83
+ * const Star = getIndicator('brand-star', themeName) ?? BrandStar;
84
+ * ```
85
+ */
86
+
87
+ export function getIndicator(name, source) {
88
+ const override = getThemeIndicators(source)?.[name];
89
+ return override ??
90
+ // `name` may be an augmented one, which this map has no entry for — hence
91
+ // the `| undefined` the overloads expose to those callers.
92
+ defaultIndicators[name];
93
+ }
@@ -0,0 +1,177 @@
1
+ /**
2
+ * @file types.ts
3
+ * @input None (pure type definitions)
4
+ * @output The indicator contract: families, states, props, names, registry
5
+ * @position Type foundation for stateful control visuals
6
+ *
7
+ * An **indicator** is a decorative visual that expresses a piece of component
8
+ * state: the box a checkbox draws, the circle a radio draws, the mark on a
9
+ * chosen list option. The owning component keeps the input, role, accessible
10
+ * name, focus, and keyboard behavior; the indicator turns state into a picture.
11
+ *
12
+ * Componentizing them buys three things a theme could not otherwise have:
13
+ *
14
+ * 1. **Theme it** — an indicator renders stable `astryx-*` class targets, so
15
+ * `defineTheme({components})` restyles it like any other component, in one
16
+ * place rather than per host component.
17
+ * 2. **Swizzle it** — `astryx swizzle <Name>` copies the source to own.
18
+ * 3. **Replace it** — `defineTheme({indicators})` swaps in another component
19
+ * by name, and every component that renders that indicator follows. A
20
+ * product that wants radio visuals for single selection replaces `check`.
21
+ *
22
+ * Indicators come in **families**, and a family fixes the state space. That is
23
+ * what lets one mechanism serve semantics as different as "is this option
24
+ * chosen" and "are several of these chosen" without either pretending to be
25
+ * the other, and without a shared enum that would typecheck `indeterminate` on
26
+ * a radio.
27
+ *
28
+ * Each family's vocabulary is the one the accessibility layer already uses, so
29
+ * a component passing state down says the same word its ARIA attribute says.
30
+ * Sharing one enum across families was measured and rejected (#4831): it
31
+ * produced call sites reading `aria-expanded={isOpen}` beside
32
+ * `state={isOpen ? 'on' : 'off'}`.
33
+ */
34
+ import type { ComponentType, ReactNode, Ref } from 'react';
35
+ import type { BaseProps } from '../BaseProps';
36
+ /**
37
+ * The indicator families, each mapped to the states it can express.
38
+ *
39
+ * Single and multi selection are separate families because their state spaces
40
+ * genuinely differ: `aria-checked` is `true|false` for a radio and
41
+ * `true|false|mixed` for a checkbox. Keeping them apart is what makes a
42
+ * replacement type-checkable — a checkbox visual cannot stand in where only
43
+ * two states are ever passed, and a radio cannot be asked to draw a partial
44
+ * state it has no picture for.
45
+ *
46
+ * Adding a family is additive: declare it here, then declare indicators of
47
+ * that family in {@link IndicatorMap}. Packages outside core can contribute
48
+ * families through module augmentation.
49
+ */
50
+ export interface IndicatorFamilyMap {
51
+ /** Is this one thing chosen? Radios, and the mark on a selected option. */
52
+ singleSelection: 'unchecked' | 'checked';
53
+ /** Which of these are chosen? Checkboxes, including the partial state. */
54
+ multiSelection: 'unchecked' | 'checked' | 'indeterminate';
55
+ }
56
+ export type IndicatorFamily = keyof IndicatorFamilyMap & string;
57
+ /** The states an indicator of family `F` can be asked to draw. */
58
+ export type IndicatorState<F extends IndicatorFamily = IndicatorFamily> = IndicatorFamilyMap[F];
59
+ /** Indicator size scale — matches the control sizes of the owning inputs. */
60
+ export type IndicatorSize = 'sm' | 'md';
61
+ /**
62
+ * Which edge of its row an indicator sits on.
63
+ *
64
+ * Logical, not physical: `start` is the left edge in LTR and the right edge in
65
+ * RTL. Owned by the host component, not by the indicator — an indicator draws a
66
+ * picture and has no say in where the row puts it — which is why this is a prop
67
+ * on the components that lay out rows rather than part of
68
+ * {@link IndicatorProps}.
69
+ */
70
+ export type IndicatorPosition = 'start' | 'end';
71
+ /**
72
+ * Props every indicator accepts.
73
+ *
74
+ * Indicators are **decorative**: they render `aria-hidden` visuals and own no
75
+ * role, focus, keyboard handling, or state. The component that renders one
76
+ * (CheckboxInput, RadioListItem, a listbox option) keeps all of that. An
77
+ * indicator's only job is to turn `state` into a picture.
78
+ *
79
+ * The a11y props are omitted from this interface rather than left to
80
+ * convention: un-hiding an indicator has it announced next to the control that
81
+ * owns the accessible name — the same thing said twice (#4918). A replacement
82
+ * that genuinely needs announcing is not an indicator; name the owning control.
83
+ *
84
+ * `tabIndex` is omitted for the same reason, one step on: the element is
85
+ * unconditionally `aria-hidden`, so a tab stop on it is a focusable node inside
86
+ * a hidden subtree. Measured with axe in real Chromium: 0 `aria-hidden-focus`
87
+ * violations becomes 1 the moment it is forwarded.
88
+ *
89
+ * The omission is only half enforceable, and it is worth knowing which half.
90
+ * TypeScript exempts JSX attribute names that are not valid JS identifiers from
91
+ * excess-property checking, so a LITERAL `role=` is a compile error while
92
+ * `aria-hidden` and `aria-label` are not — and a spread (`{...props}`, the
93
+ * ordinary host idiom) bypasses the check for every member, `role` included.
94
+ * Measured, not assumed. So the components also emit their own `aria-hidden`
95
+ * AFTER `{...rest}` and drop a forwarded `tabIndex`: that ordering, not the
96
+ * type, is what enforces the contract. Nothing else is stripped — a forwarded
97
+ * `aria-label` still reaches the DOM, inert inside an `aria-hidden` subtree.
98
+ *
99
+ * Interaction state is deliberately *not* a prop. Hover and focus reach an
100
+ * indicator through the CSS ancestor marker ({@link indicatorScope}) applied
101
+ * by its owner, so a row hover tints the control without anyone threading a
102
+ * boolean through React — and an owner that should not tint its indicator
103
+ * simply does not apply the marker.
104
+ */
105
+ export interface IndicatorProps<F extends IndicatorFamily = IndicatorFamily> extends Omit<BaseProps<HTMLSpanElement>, 'aria-hidden' | 'role' | 'aria-label' | 'aria-labelledby' | 'tabIndex'> {
106
+ /** Ref forwarded to the indicator's root element. */
107
+ ref?: Ref<HTMLSpanElement>;
108
+ /** Which state to draw. The state space is fixed by the family. */
109
+ state: IndicatorState<F>;
110
+ /**
111
+ * Control size.
112
+ * @default 'md'
113
+ */
114
+ size?: IndicatorSize;
115
+ /**
116
+ * Whether the owning control is disabled. Purely visual — the owner still
117
+ * owns the actual disabled semantics.
118
+ * @default false
119
+ */
120
+ isDisabled?: boolean;
121
+ /**
122
+ * Content rendered inside the indicator chrome *instead of* the state mark.
123
+ * CheckboxInput uses this to show a loading Spinner inside the box while a
124
+ * change action is pending.
125
+ */
126
+ children?: ReactNode;
127
+ }
128
+ /** An indicator is any component accepting {@link IndicatorProps} of its family. */
129
+ export type IndicatorComponent<F extends IndicatorFamily = IndicatorFamily> = ComponentType<IndicatorProps<F>>;
130
+ /**
131
+ * The named indicators a theme can replace, each mapped to its family.
132
+ *
133
+ * The name is what a theme addresses, and what every component renders
134
+ * through — so replacing `check` reaches every single-selection mark at once,
135
+ * which is the point.
136
+ *
137
+ * Packages outside core can contribute their own through module augmentation.
138
+ * Core ships no default for a name it does not know, so the package that adds
139
+ * the name owns its default — `getIndicator`/`useIndicator` return
140
+ * `| undefined` for it, and the call site supplies the fallback:
141
+ *
142
+ * ```ts
143
+ * declare module '@astryxdesign/core/Indicator' {
144
+ * interface IndicatorMap {
145
+ * 'brand-star': 'singleSelection';
146
+ * }
147
+ * }
148
+ *
149
+ * const Star = useIndicator('brand-star') ?? BrandStar;
150
+ * ```
151
+ */
152
+ export interface IndicatorMap {
153
+ /** The mark on a chosen option — a checkmark by default. */
154
+ check: 'singleSelection';
155
+ /** The filled circle of a radio control. */
156
+ radio: 'singleSelection';
157
+ /** The box of a checkbox control, including its partial state. */
158
+ checkbox: 'multiSelection';
159
+ }
160
+ export type IndicatorName = keyof IndicatorMap & string;
161
+ /** The indicator names belonging to family `F`. */
162
+ export type IndicatorNameOfFamily<F extends IndicatorFamily> = {
163
+ [N in IndicatorName]: IndicatorMap[N] extends F ? N : never;
164
+ }[IndicatorName];
165
+ /**
166
+ * Theme-provided indicator overrides, keyed by indicator name.
167
+ *
168
+ * Family-checked: each entry must accept the state space of that indicator's
169
+ * family, so a replacement cannot be written against the wrong states. A
170
+ * `check` replacement that only handles `collapsed`/`expanded`, or a `radio`
171
+ * replacement expecting `indeterminate`, is a type error rather than a
172
+ * runtime surprise.
173
+ */
174
+ export type IndicatorRegistry = {
175
+ [N in IndicatorName]?: IndicatorComponent<IndicatorMap[N]>;
176
+ };
177
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/Indicator/types.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,KAAK,EAAC,aAAa,EAAE,SAAS,EAAE,GAAG,EAAC,MAAM,OAAO,CAAC;AACzD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAE5C;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,kBAAkB;IACjC,2EAA2E;IAC3E,eAAe,EAAE,WAAW,GAAG,SAAS,CAAC;IACzC,0EAA0E;IAC1E,cAAc,EAAE,WAAW,GAAG,SAAS,GAAG,eAAe,CAAC;CAC3D;AAED,MAAM,MAAM,eAAe,GAAG,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAEhE,kEAAkE;AAClE,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,eAAe,GAAG,eAAe,IACpE,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAExB,6EAA6E;AAC7E,MAAM,MAAM,aAAa,GAAG,IAAI,GAAG,IAAI,CAAC;AAExC;;;;;;;;GAQG;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,KAAK,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,WAAW,cAAc,CAC7B,CAAC,SAAS,eAAe,GAAG,eAAe,CAC3C,SAAQ,IAAI,CACZ,SAAS,CAAC,eAAe,CAAC,EAC1B,aAAa,GAAG,MAAM,GAAG,YAAY,GAAG,iBAAiB,GAAG,UAAU,CACvE;IACC,qDAAqD;IACrD,GAAG,CAAC,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC;IAC3B,mEAAmE;IACnE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;IACzB;;;OAGG;IACH,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,oFAAoF;AACpF,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,eAAe,GAAG,eAAe,IACxE,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AAEnC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,WAAW,YAAY;IAC3B,4DAA4D;IAC5D,KAAK,EAAE,iBAAiB,CAAC;IACzB,4CAA4C;IAC5C,KAAK,EAAE,iBAAiB,CAAC;IACzB,kEAAkE;IAClE,QAAQ,EAAE,gBAAgB,CAAC;CAC5B;AAED,MAAM,MAAM,aAAa,GAAG,MAAM,YAAY,GAAG,MAAM,CAAC;AAExD,mDAAmD;AACnD,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,eAAe,IAAI;KAC5D,CAAC,IAAI,aAAa,GAAG,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK;CAC5D,CAAC,aAAa,CAAC,CAAC;AAEjB;;;;;;;;GAQG;AACH,MAAM,MAAM,iBAAiB,GAAG;KAC7B,CAAC,IAAI,aAAa,CAAC,CAAC,EAAE,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;CAC3D,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,18 @@
1
+ import { type CoreIndicatorName } from './indicatorRegistry';
2
+ import type { IndicatorComponent, IndicatorMap, IndicatorName } from './types';
3
+ /**
4
+ * Resolve an indicator component from the nearest `<Theme>`.
5
+ *
6
+ * A core indicator always resolves. A name contributed by augmentation
7
+ * resolves only if a theme supplies it, so that overload returns
8
+ * `| undefined` — see {@link getIndicator}.
9
+ *
10
+ * @example
11
+ * ```
12
+ * const Checkbox = useIndicator('checkbox');
13
+ * return <Checkbox state={isChecked ? 'checked' : 'unchecked'} size={size} />;
14
+ * ```
15
+ */
16
+ export declare function useIndicator<N extends CoreIndicatorName>(name: N): IndicatorComponent<IndicatorMap[N]>;
17
+ export declare function useIndicator<N extends IndicatorName>(name: N): IndicatorComponent<IndicatorMap[N]> | undefined;
18
+ //# sourceMappingURL=useIndicator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useIndicator.d.ts","sourceRoot":"","sources":["../../src/Indicator/useIndicator.ts"],"names":[],"mappings":"AAYA,OAAO,EAAe,KAAK,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AACzE,OAAO,KAAK,EAAC,kBAAkB,EAAE,YAAY,EAAE,aAAa,EAAC,MAAM,SAAS,CAAC;AAE7E;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,iBAAiB,EACtD,IAAI,EAAE,CAAC,GACN,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,wBAAgB,YAAY,CAAC,CAAC,SAAS,aAAa,EAClD,IAAI,EAAE,CAAC,GACN,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC"}
@@ -0,0 +1,30 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ 'use client';
4
+
5
+ /**
6
+ * @file useIndicator.ts
7
+ * @input Indicator name
8
+ * @output Exports useIndicator hook for theme-aware indicator components
9
+ * @position Client hook used by controls that render a selection visual
10
+ */
11
+ import { useThemeName } from "../theme/useTheme.js";
12
+ import { getIndicator } from "./indicatorRegistry.js";
13
+
14
+ /**
15
+ * Resolve an indicator component from the nearest `<Theme>`.
16
+ *
17
+ * A core indicator always resolves. A name contributed by augmentation
18
+ * resolves only if a theme supplies it, so that overload returns
19
+ * `| undefined` — see {@link getIndicator}.
20
+ *
21
+ * @example
22
+ * ```
23
+ * const Checkbox = useIndicator('checkbox');
24
+ * return <Checkbox state={isChecked ? 'checked' : 'unchecked'} size={size} />;
25
+ * ```
26
+ */
27
+
28
+ export function useIndicator(name) {
29
+ return getIndicator(name, useThemeName());
30
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"Item.d.ts","sourceRoot":"","sources":["../../src/Item/Item.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAS,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAU7C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAY5C,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;AAC3C,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;AAE9D,MAAM,WAAW,SAAU,SAAQ,SAAS,CAAC,WAAW,CAAC;IACvD,yCAAyC;IACzC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAE7B;;;OAGG;IACH,EAAE,CAAC,EAAE,KAAK,GAAG,IAAI,GAAG,MAAM,CAAC;IAE3B;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB;;;OAGG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC;IAEzB;;;OAGG;IACH,KAAK,EAAE,SAAS,CAAC;IAEjB;;OAEG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IAExB;;;OAGG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IAEvB;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB;;;;OAIG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IAE5C;;;;;;;;;;;OAWG;IACH,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAErD;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAE5B;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AA0KD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,IAAI,CAAC,EACnB,EAAE,EAAE,SAAiB,EACrB,MAAM,EACN,YAAY,EACZ,KAAK,EACL,WAAW,EACX,UAAU,EACV,KAAgB,EAChB,OAAoB,EACpB,UAAU,EACV,gBAAgB,EAChB,OAAO,EACP,cAAc,EACd,IAAI,EACJ,MAAM,EAAE,eAAe,EACvB,GAAG,EAAE,YAAY,EACjB,aAAqB,EACrB,UAAkB,EAClB,UAAkB,EAClB,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,IAAI,EACJ,GAAG,SAAS,EACb,EAAE,SAAS,+BA4MX;yBArOe,IAAI"}
1
+ {"version":3,"file":"Item.d.ts","sourceRoot":"","sources":["../../src/Item/Item.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAS,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAU7C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAa5C,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;AAC3C,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;AAE9D,MAAM,WAAW,SAAU,SAAQ,SAAS,CAAC,WAAW,CAAC;IACvD,yCAAyC;IACzC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAE7B;;;OAGG;IACH,EAAE,CAAC,EAAE,KAAK,GAAG,IAAI,GAAG,MAAM,CAAC;IAE3B;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB;;;OAGG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC;IAEzB;;;OAGG;IACH,KAAK,EAAE,SAAS,CAAC;IAEjB;;OAEG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IAExB;;;OAGG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IAEvB;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB;;;;OAIG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IAE5C;;;;;;;;;;;OAWG;IACH,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAErD;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAE5B;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAmKD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,IAAI,CAAC,EACnB,EAAE,EAAE,SAAiB,EACrB,MAAM,EACN,YAAY,EACZ,KAAK,EACL,WAAW,EACX,UAAU,EACV,KAAgB,EAChB,OAAoB,EACpB,UAAU,EACV,gBAAgB,EAChB,OAAO,EACP,cAAc,EACd,IAAI,EACJ,MAAM,EAAE,eAAe,EACvB,GAAG,EAAE,YAAY,EACjB,aAAqB,EACrB,UAAkB,EAClB,UAAkB,EAClB,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,IAAI,EACJ,GAAG,SAAS,EACb,EAAE,SAAS,+BA2MX;yBApOe,IAAI"}