@astryxdesign/core 0.1.8 → 0.1.9

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 (487) hide show
  1. package/CHANGELOG.md +100 -0
  2. package/dist/AppShell/AppShell.d.ts.map +1 -1
  3. package/dist/AppShell/AppShell.js +6 -2
  4. package/dist/AppShell/AppShellMobileContext.d.ts +8 -0
  5. package/dist/AppShell/AppShellMobileContext.d.ts.map +1 -1
  6. package/dist/Avatar/Avatar.d.ts +18 -2
  7. package/dist/Avatar/Avatar.d.ts.map +1 -1
  8. package/dist/Avatar/Avatar.js +63 -7
  9. package/dist/Avatar/AvatarStatusDot.d.ts +33 -5
  10. package/dist/Avatar/AvatarStatusDot.d.ts.map +1 -1
  11. package/dist/Avatar/AvatarStatusDot.js +144 -19
  12. package/dist/Banner/Banner.d.ts +9 -1
  13. package/dist/Banner/Banner.d.ts.map +1 -1
  14. package/dist/Banner/Banner.js +31 -2
  15. package/dist/Breadcrumbs/BreadcrumbItem.d.ts +31 -2
  16. package/dist/Breadcrumbs/BreadcrumbItem.d.ts.map +1 -1
  17. package/dist/Breadcrumbs/BreadcrumbItem.js +208 -6
  18. package/dist/Breadcrumbs/index.d.ts +5 -0
  19. package/dist/Breadcrumbs/index.d.ts.map +1 -1
  20. package/dist/Breadcrumbs/index.js +9 -1
  21. package/dist/Button/Button.d.ts +8 -2
  22. package/dist/Button/Button.d.ts.map +1 -1
  23. package/dist/Button/Button.js +31 -2
  24. package/dist/ButtonGroup/ButtonGroup.d.ts +9 -1
  25. package/dist/ButtonGroup/ButtonGroup.d.ts.map +1 -1
  26. package/dist/ButtonGroup/ButtonGroup.js +30 -1
  27. package/dist/Calendar/Calendar.d.ts.map +1 -1
  28. package/dist/Calendar/Calendar.js +30 -2
  29. package/dist/Calendar/dayCellUtils.js +1 -1
  30. package/dist/Card/Card.d.ts +8 -2
  31. package/dist/Card/Card.d.ts.map +1 -1
  32. package/dist/Card/Card.js +28 -2
  33. package/dist/Carousel/Carousel.d.ts +4 -1
  34. package/dist/Carousel/Carousel.d.ts.map +1 -1
  35. package/dist/Carousel/Carousel.js +24 -4
  36. package/dist/Chat/ChatComposer.d.ts +8 -0
  37. package/dist/Chat/ChatComposer.d.ts.map +1 -1
  38. package/dist/Chat/ChatComposer.js +46 -7
  39. package/dist/Chat/ChatComposerDrawer.d.ts +2 -0
  40. package/dist/Chat/ChatComposerDrawer.d.ts.map +1 -1
  41. package/dist/Chat/ChatComposerDrawer.js +11 -1
  42. package/dist/Chat/ChatComposerInput.d.ts +20 -3
  43. package/dist/Chat/ChatComposerInput.d.ts.map +1 -1
  44. package/dist/Chat/ChatComposerInput.js +35 -3
  45. package/dist/Chat/ChatContext.d.ts +33 -0
  46. package/dist/Chat/ChatContext.d.ts.map +1 -1
  47. package/dist/Chat/ChatContext.js +16 -2
  48. package/dist/Chat/ChatDictationButton.d.ts.map +1 -1
  49. package/dist/Chat/ChatDictationButton.js +1 -1
  50. package/dist/Chat/ChatLayout.d.ts.map +1 -1
  51. package/dist/Chat/ChatLayoutScrollButton.d.ts.map +1 -1
  52. package/dist/Chat/ChatLayoutScrollButton.js +4 -4
  53. package/dist/Chat/ChatMessageMetadata.d.ts.map +1 -1
  54. package/dist/Chat/ChatSendButton.d.ts.map +1 -1
  55. package/dist/Chat/ChatSendButton.js +7 -1
  56. package/dist/Chat/ChatToolCalls.d.ts +5 -1
  57. package/dist/Chat/ChatToolCalls.d.ts.map +1 -1
  58. package/dist/Chat/ChatToolCalls.js +18 -9
  59. package/dist/Chat/index.d.ts +2 -1
  60. package/dist/Chat/index.d.ts.map +1 -1
  61. package/dist/Chat/index.js +1 -1
  62. package/dist/Chat/useChatStreamScroll.d.ts +2 -1
  63. package/dist/Chat/useChatStreamScroll.d.ts.map +1 -1
  64. package/dist/Chat/useChatStreamScroll.js +22 -8
  65. package/dist/Chat/useSpeechRecognition.d.ts +0 -1
  66. package/dist/Chat/useSpeechRecognition.d.ts.map +1 -1
  67. package/dist/Chat/useSpeechRecognition.js +1 -1
  68. package/dist/Chat/useTriggerMenu.d.ts.map +1 -1
  69. package/dist/CheckboxInput/CheckboxInput.js +1 -1
  70. package/dist/CheckboxList/CheckboxListItem.d.ts +20 -1
  71. package/dist/CheckboxList/CheckboxListItem.d.ts.map +1 -1
  72. package/dist/CheckboxList/CheckboxListItem.js +11 -1
  73. package/dist/ClickableCard/ClickableCard.d.ts +9 -2
  74. package/dist/ClickableCard/ClickableCard.d.ts.map +1 -1
  75. package/dist/ClickableCard/ClickableCard.js +5 -2
  76. package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
  77. package/dist/CodeBlock/CodeBlock.js +8 -1
  78. package/dist/CommandPalette/CommandPalette.d.ts +1 -1
  79. package/dist/CommandPalette/CommandPalette.d.ts.map +1 -1
  80. package/dist/CommandPalette/CommandPalette.js +3 -1
  81. package/dist/CommandPalette/CommandPaletteGroup.d.ts.map +1 -1
  82. package/dist/CommandPalette/CommandPaletteGroup.js +9 -2
  83. package/dist/CommandPalette/CommandPaletteInput.d.ts +7 -1
  84. package/dist/CommandPalette/CommandPaletteInput.d.ts.map +1 -1
  85. package/dist/CommandPalette/CommandPaletteInput.js +6 -1
  86. package/dist/DateInput/DateInput.d.ts +47 -1
  87. package/dist/DateInput/DateInput.d.ts.map +1 -1
  88. package/dist/DateInput/DateInput.js +26 -2
  89. package/dist/DateInput/index.d.ts +1 -1
  90. package/dist/DateInput/index.d.ts.map +1 -1
  91. package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
  92. package/dist/DateTimeInput/DateTimeInput.js +10 -1
  93. package/dist/Dialog/Dialog.d.ts +3 -0
  94. package/dist/Dialog/Dialog.d.ts.map +1 -1
  95. package/dist/Dialog/Dialog.js +57 -6
  96. package/dist/Dialog/DialogContext.d.ts +7 -0
  97. package/dist/Dialog/DialogContext.d.ts.map +1 -1
  98. package/dist/Dialog/DialogContext.js +2 -2
  99. package/dist/Dialog/DialogHeader.d.ts +5 -2
  100. package/dist/Dialog/DialogHeader.d.ts.map +1 -1
  101. package/dist/Dialog/DialogHeader.js +6 -1
  102. package/dist/Divider/Divider.js +1 -1
  103. package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts +1 -2
  104. package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts.map +1 -1
  105. package/dist/DropdownMenu/DropdownMenuCheckboxItem.js +1 -2
  106. package/dist/DropdownMenu/DropdownMenuRadioGroup.d.ts +1 -2
  107. package/dist/DropdownMenu/DropdownMenuRadioGroup.d.ts.map +1 -1
  108. package/dist/DropdownMenu/DropdownMenuRadioGroup.js +1 -2
  109. package/dist/Field/Field.d.ts.map +1 -1
  110. package/dist/Field/Field.js +2 -3
  111. package/dist/Field/FieldLabel.d.ts +1 -1
  112. package/dist/Field/FieldLabel.d.ts.map +1 -1
  113. package/dist/Field/FieldLabel.js +42 -15
  114. package/dist/FieldStatus/FieldStatus.d.ts +8 -0
  115. package/dist/FieldStatus/FieldStatus.d.ts.map +1 -1
  116. package/dist/FieldStatus/FieldStatus.js +22 -4
  117. package/dist/FileInput/FileInput.d.ts.map +1 -1
  118. package/dist/FileInput/FileInput.js +10 -2
  119. package/dist/HoverCard/HoverCard.d.ts +9 -1
  120. package/dist/HoverCard/HoverCard.d.ts.map +1 -1
  121. package/dist/HoverCard/HoverCard.js +2 -0
  122. package/dist/HoverCard/useHoverCard.d.ts +8 -0
  123. package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
  124. package/dist/HoverCard/useHoverCard.js +7 -2
  125. package/dist/Icon/Icon.d.ts +7 -2
  126. package/dist/Icon/Icon.d.ts.map +1 -1
  127. package/dist/Item/Item.d.ts +6 -1
  128. package/dist/Item/Item.d.ts.map +1 -1
  129. package/dist/Item/Item.js +22 -1
  130. package/dist/Layer/useLayer.d.ts +6 -0
  131. package/dist/Layer/useLayer.d.ts.map +1 -1
  132. package/dist/Layer/useLayer.js +2 -0
  133. package/dist/MobileNav/MobileNav.d.ts.map +1 -1
  134. package/dist/MobileNav/MobileNav.js +6 -1
  135. package/dist/MobileNav/MobileNavToggle.d.ts.map +1 -1
  136. package/dist/MobileNav/MobileNavToggle.js +4 -0
  137. package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
  138. package/dist/MultiSelector/MultiSelector.js +39 -12
  139. package/dist/MultiSelector/hooks.d.ts.map +1 -1
  140. package/dist/MultiSelector/hooks.js +16 -0
  141. package/dist/NumberInput/NumberInput.d.ts.map +1 -1
  142. package/dist/Outline/Outline.d.ts +0 -1
  143. package/dist/Outline/Outline.d.ts.map +1 -1
  144. package/dist/Outline/Outline.js +0 -1
  145. package/dist/OverflowList/OverflowList.d.ts +20 -3
  146. package/dist/OverflowList/OverflowList.d.ts.map +1 -1
  147. package/dist/OverflowList/OverflowList.js +29 -4
  148. package/dist/Popover/Popover.d.ts.map +1 -1
  149. package/dist/Popover/Popover.js +3 -2
  150. package/dist/Popover/usePopover.d.ts.map +1 -1
  151. package/dist/Popover/usePopover.js +3 -9
  152. package/dist/PowerSearch/PowerSearchEditPopover.js +1 -1
  153. package/dist/PowerSearch/usePowerSearchSource.d.ts.map +1 -1
  154. package/dist/SelectableCard/SelectableCard.d.ts +9 -2
  155. package/dist/SelectableCard/SelectableCard.d.ts.map +1 -1
  156. package/dist/SelectableCard/SelectableCard.js +16 -13
  157. package/dist/Selector/Selector.d.ts.map +1 -1
  158. package/dist/Selector/Selector.js +4 -2
  159. package/dist/Selector/hooks.d.ts.map +1 -1
  160. package/dist/Selector/hooks.js +16 -0
  161. package/dist/SideNav/SideNavCollapseButton.d.ts.map +1 -1
  162. package/dist/SideNav/SideNavHeading.d.ts.map +1 -1
  163. package/dist/SideNav/SideNavHeading.js +21 -8
  164. package/dist/SideNav/SideNavItem.d.ts.map +1 -1
  165. package/dist/Slider/Slider.d.ts.map +1 -1
  166. package/dist/Slider/Slider.js +19 -2
  167. package/dist/Stack/stack.stylex.d.ts +9 -9
  168. package/dist/Table/BaseTable.d.ts.map +1 -1
  169. package/dist/Table/BaseTable.js +3 -2
  170. package/dist/Table/index.d.ts +2 -0
  171. package/dist/Table/index.d.ts.map +1 -1
  172. package/dist/Table/index.js +1 -0
  173. package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts.map +1 -1
  174. package/dist/Table/plugins/rowStatus/index.d.ts +3 -0
  175. package/dist/Table/plugins/rowStatus/index.d.ts.map +1 -0
  176. package/dist/Table/plugins/rowStatus/index.js +3 -0
  177. package/dist/Table/plugins/rowStatus/useTableRowStatus.d.ts +60 -0
  178. package/dist/Table/plugins/rowStatus/useTableRowStatus.d.ts.map +1 -0
  179. package/dist/Table/plugins/rowStatus/useTableRowStatus.js +145 -0
  180. package/dist/Table/plugins/selection/useTableSelection.d.ts +13 -0
  181. package/dist/Table/plugins/selection/useTableSelection.d.ts.map +1 -1
  182. package/dist/Table/plugins/selection/useTableSelection.js +4 -1
  183. package/dist/Table/plugins/tree/useTableTreeData.d.ts +16 -0
  184. package/dist/Table/plugins/tree/useTableTreeData.d.ts.map +1 -1
  185. package/dist/Table/plugins/tree/useTableTreeData.js +87 -0
  186. package/dist/Table/plugins/tree/useTableTreeState.d.ts +6 -0
  187. package/dist/Table/plugins/tree/useTableTreeState.d.ts.map +1 -1
  188. package/dist/Table/plugins/tree/useTableTreeState.js +22 -1
  189. package/dist/Table/useBaseTablePlugins.d.ts.map +1 -1
  190. package/dist/Table/useBaseTablePlugins.js +5 -3
  191. package/dist/Thumbnail/Thumbnail.d.ts +26 -5
  192. package/dist/Thumbnail/Thumbnail.d.ts.map +1 -1
  193. package/dist/Thumbnail/Thumbnail.js +97 -54
  194. package/dist/Thumbnail/thumbnail.markers.stylex.d.ts +9 -0
  195. package/dist/Thumbnail/thumbnail.markers.stylex.d.ts.map +1 -0
  196. package/dist/Thumbnail/thumbnail.markers.stylex.js +14 -0
  197. package/dist/TimeInput/TimeInput.d.ts.map +1 -1
  198. package/dist/TimeInput/TimeInput.js +15 -4
  199. package/dist/Timestamp/Timestamp.d.ts +3 -1
  200. package/dist/Timestamp/Timestamp.d.ts.map +1 -1
  201. package/dist/Timestamp/Timestamp.js +8 -6
  202. package/dist/Toast/useToast.d.ts.map +1 -1
  203. package/dist/Toast/useToast.js +2 -5
  204. package/dist/ToggleButton/ToggleButtonGroup.d.ts +0 -1
  205. package/dist/ToggleButton/ToggleButtonGroup.d.ts.map +1 -1
  206. package/dist/ToggleButton/ToggleButtonGroup.js +1 -1
  207. package/dist/Tokenizer/Tokenizer.d.ts +1 -1
  208. package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
  209. package/dist/Tokenizer/Tokenizer.js +16 -4
  210. package/dist/TopNav/TopNavHeading.d.ts.map +1 -1
  211. package/dist/TopNav/TopNavHeading.js +18 -8
  212. package/dist/TopNav/TopNavMegaMenu.js +10 -4
  213. package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts +9 -1
  214. package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts.map +1 -1
  215. package/dist/TopNav/TopNavMegaMenuFeaturedCard.js +8 -1
  216. package/dist/TopNav/TopNavMenu.d.ts +2 -1
  217. package/dist/TopNav/TopNavMenu.d.ts.map +1 -1
  218. package/dist/TopNav/TopNavMenu.js +68 -6
  219. package/dist/TreeList/TreeList.d.ts +12 -3
  220. package/dist/TreeList/TreeList.d.ts.map +1 -1
  221. package/dist/TreeList/TreeList.js +2 -0
  222. package/dist/TreeList/TreeListBranches.d.ts +5 -0
  223. package/dist/TreeList/TreeListBranches.d.ts.map +1 -1
  224. package/dist/TreeList/TreeListBranches.js +10 -4
  225. package/dist/TreeList/TreeListItem.d.ts +8 -2
  226. package/dist/TreeList/TreeListItem.d.ts.map +1 -1
  227. package/dist/TreeList/TreeListItem.js +27 -7
  228. package/dist/TreeList/TreeListTypes.d.ts +25 -1
  229. package/dist/TreeList/TreeListTypes.d.ts.map +1 -1
  230. package/dist/TreeList/index.d.ts +2 -2
  231. package/dist/TreeList/index.d.ts.map +1 -1
  232. package/dist/astryx.css +28 -18
  233. package/dist/astryx.umd.js +51 -51
  234. package/dist/astryx.umd.js.map +4 -4
  235. package/dist/authoring/doc.d.ts.map +1 -1
  236. package/dist/docs-types.d.ts +8 -0
  237. package/dist/docs-types.d.ts.map +1 -1
  238. package/dist/hooks/computeOverflow.d.ts +47 -0
  239. package/dist/hooks/computeOverflow.d.ts.map +1 -0
  240. package/dist/hooks/computeOverflow.js +213 -0
  241. package/dist/hooks/index.d.ts +1 -0
  242. package/dist/hooks/index.d.ts.map +1 -1
  243. package/dist/hooks/index.js +2 -1
  244. package/dist/hooks/useDevWarning.d.ts +18 -0
  245. package/dist/hooks/useDevWarning.d.ts.map +1 -0
  246. package/dist/hooks/useDevWarning.js +49 -0
  247. package/dist/hooks/useOverflow.d.ts +19 -0
  248. package/dist/hooks/useOverflow.d.ts.map +1 -1
  249. package/dist/hooks/useOverflow.js +36 -25
  250. package/dist/i18n/resolve.d.ts.map +1 -1
  251. package/dist/i18n/resolve.js +7 -18
  252. package/dist/theme/Theme.d.ts.map +1 -1
  253. package/dist/theme/Theme.js +2 -7
  254. package/dist/theme/generateThemeRules.d.ts.map +1 -1
  255. package/dist/theme/generateThemeRules.js +51 -0
  256. package/dist/theme/hct.d.ts +0 -1
  257. package/dist/theme/hct.d.ts.map +1 -1
  258. package/dist/theme/hct.js +1 -1
  259. package/dist/theme/syntax/defineSyntaxTheme.d.ts.map +1 -1
  260. package/dist/theme/syntax/defineSyntaxTheme.js +2 -1
  261. package/dist/utils/devWarning.d.ts +42 -0
  262. package/dist/utils/devWarning.d.ts.map +1 -0
  263. package/dist/utils/devWarning.js +88 -0
  264. package/dist/utils/index.d.ts +3 -1
  265. package/dist/utils/index.d.ts.map +1 -1
  266. package/dist/utils/index.js +3 -2
  267. package/dist/utils/plainDate.d.ts +30 -0
  268. package/dist/utils/plainDate.d.ts.map +1 -1
  269. package/dist/utils/plainDate.js +53 -0
  270. package/dist/utils/types.d.ts +13 -0
  271. package/dist/utils/types.d.ts.map +1 -1
  272. package/locales/en.json +24 -0
  273. package/locales/fr-FR.json +14 -0
  274. package/locales/pseudo.json +18 -0
  275. package/package.json +1 -1
  276. package/src/AppShell/AppShell.tsx +6 -0
  277. package/src/AppShell/AppShellMobileContext.tsx +8 -0
  278. package/src/AppShell/useAppShellMobile.doc.mjs +8 -0
  279. package/src/Avatar/Avatar.doc.mjs +15 -3
  280. package/src/Avatar/Avatar.test.tsx +156 -1
  281. package/src/Avatar/Avatar.tsx +96 -4
  282. package/src/Avatar/AvatarStatusDot.doc.mjs +23 -12
  283. package/src/Avatar/AvatarStatusDot.test.tsx +284 -0
  284. package/src/Avatar/AvatarStatusDot.tsx +178 -21
  285. package/src/Banner/Banner.doc.mjs +9 -0
  286. package/src/Banner/Banner.test.tsx +30 -0
  287. package/src/Banner/Banner.tsx +47 -3
  288. package/src/Breadcrumbs/BreadcrumbItem.doc.mjs +26 -0
  289. package/src/Breadcrumbs/BreadcrumbItem.tsx +333 -14
  290. package/src/Breadcrumbs/Breadcrumbs.doc.mjs +2 -0
  291. package/src/Breadcrumbs/Breadcrumbs.test.tsx +284 -2
  292. package/src/Breadcrumbs/index.ts +27 -0
  293. package/src/Button/Button.doc.mjs +9 -0
  294. package/src/Button/Button.test.tsx +49 -0
  295. package/src/Button/Button.tsx +25 -1
  296. package/src/ButtonGroup/ButtonGroup.doc.mjs +3 -0
  297. package/src/ButtonGroup/ButtonGroup.test.tsx +37 -0
  298. package/src/ButtonGroup/ButtonGroup.tsx +32 -0
  299. package/src/Calendar/Calendar.doc.mjs +12 -1
  300. package/src/Calendar/Calendar.test.tsx +193 -0
  301. package/src/Calendar/Calendar.tsx +38 -16
  302. package/src/Calendar/dayCellUtils.test.ts +5 -0
  303. package/src/Calendar/dayCellUtils.ts +1 -1
  304. package/src/Card/Card.doc.mjs +9 -0
  305. package/src/Card/Card.test.tsx +21 -3
  306. package/src/Card/Card.tsx +35 -2
  307. package/src/Carousel/Carousel.doc.mjs +1 -0
  308. package/src/Carousel/Carousel.test.tsx +53 -0
  309. package/src/Carousel/Carousel.tsx +34 -4
  310. package/src/Chat/ChatComposer.doc.mjs +12 -3
  311. package/src/Chat/ChatComposer.test.tsx +115 -0
  312. package/src/Chat/ChatComposer.tsx +73 -9
  313. package/src/Chat/ChatComposerDrawer.test.tsx +61 -0
  314. package/src/Chat/ChatComposerDrawer.tsx +11 -1
  315. package/src/Chat/ChatComposerInput.doc.mjs +7 -0
  316. package/src/Chat/ChatComposerInput.test.tsx +103 -0
  317. package/src/Chat/ChatComposerInput.tsx +49 -3
  318. package/src/Chat/ChatContext.tsx +37 -10
  319. package/src/Chat/ChatDictationButton.tsx +4 -1
  320. package/src/Chat/ChatLayout.tsx +3 -1
  321. package/src/Chat/ChatLayoutScrollButton.tsx +7 -2
  322. package/src/Chat/ChatMessageMetadata.tsx +1 -2
  323. package/src/Chat/ChatSendButton.tsx +11 -1
  324. package/src/Chat/ChatToolCalls.test.tsx +64 -0
  325. package/src/Chat/ChatToolCalls.tsx +25 -4
  326. package/src/Chat/index.ts +5 -1
  327. package/src/Chat/useChatStreamScroll.test.tsx +49 -0
  328. package/src/Chat/useChatStreamScroll.ts +27 -10
  329. package/src/Chat/useSpeechRecognition.ts +1 -1
  330. package/src/Chat/useTriggerMenu.tsx +3 -1
  331. package/src/CheckboxInput/CheckboxInput.test.tsx +32 -1
  332. package/src/CheckboxInput/CheckboxInput.tsx +1 -1
  333. package/src/CheckboxList/CheckboxList.test.tsx +81 -3
  334. package/src/CheckboxList/CheckboxListItem.doc.mjs +33 -5
  335. package/src/CheckboxList/CheckboxListItem.tsx +41 -5
  336. package/src/ClickableCard/ClickableCard.doc.mjs +2 -0
  337. package/src/ClickableCard/ClickableCard.test.tsx +34 -0
  338. package/src/ClickableCard/ClickableCard.tsx +13 -3
  339. package/src/CodeBlock/CodeBlock.test.tsx +56 -0
  340. package/src/CodeBlock/CodeBlock.tsx +9 -1
  341. package/src/CommandPalette/CommandPalette.doc.mjs +1 -0
  342. package/src/CommandPalette/CommandPalette.tsx +3 -1
  343. package/src/CommandPalette/CommandPaletteGroup.test.tsx +71 -0
  344. package/src/CommandPalette/CommandPaletteGroup.tsx +12 -1
  345. package/src/CommandPalette/CommandPaletteInput.doc.mjs +26 -9
  346. package/src/CommandPalette/CommandPaletteInput.test.tsx +34 -0
  347. package/src/CommandPalette/CommandPaletteInput.tsx +11 -0
  348. package/src/ContextMenu/ContextMenu.test.tsx +193 -0
  349. package/src/DateInput/DateInput.doc.mjs +16 -0
  350. package/src/DateInput/DateInput.test.tsx +108 -0
  351. package/src/DateInput/DateInput.tsx +68 -3
  352. package/src/DateInput/index.ts +1 -0
  353. package/src/DateTimeInput/DateTimeInput.test.tsx +35 -0
  354. package/src/DateTimeInput/DateTimeInput.tsx +14 -2
  355. package/src/Dialog/Dialog.doc.mjs +2 -2
  356. package/src/Dialog/Dialog.test.tsx +77 -4
  357. package/src/Dialog/Dialog.tsx +89 -5
  358. package/src/Dialog/DialogContext.ts +9 -2
  359. package/src/Dialog/DialogHeader.doc.mjs +2 -2
  360. package/src/Dialog/DialogHeader.tsx +9 -2
  361. package/src/Divider/Divider.tsx +2 -2
  362. package/src/DropdownMenu/DropdownMenu.test.tsx +169 -0
  363. package/src/DropdownMenu/DropdownMenuCheckboxItem.tsx +1 -2
  364. package/src/DropdownMenu/DropdownMenuRadioGroup.tsx +1 -2
  365. package/src/Field/Field.test.tsx +57 -12
  366. package/src/Field/Field.tsx +6 -5
  367. package/src/Field/FieldLabel.tsx +8 -0
  368. package/src/FieldStatus/FieldStatus.doc.mjs +17 -5
  369. package/src/FieldStatus/FieldStatus.test.tsx +78 -40
  370. package/src/FieldStatus/FieldStatus.tsx +22 -4
  371. package/src/FileInput/FileInput.test.tsx +52 -3
  372. package/src/FileInput/FileInput.tsx +13 -2
  373. package/src/HoverCard/HoverCard.doc.mjs +13 -0
  374. package/src/HoverCard/HoverCard.test.tsx +21 -2
  375. package/src/HoverCard/HoverCard.tsx +11 -0
  376. package/src/HoverCard/useHoverCard.doc.mjs +2 -0
  377. package/src/HoverCard/useHoverCard.tsx +24 -2
  378. package/src/Icon/Icon.doc.mjs +3 -2
  379. package/src/Icon/Icon.tsx +7 -2
  380. package/src/IconButton/IconButton.doc.mjs +8 -0
  381. package/src/IconButton/IconButton.test.tsx +15 -18
  382. package/src/Item/Item.test.tsx +40 -18
  383. package/src/Item/Item.tsx +38 -2
  384. package/src/Layer/useLayer.tsx +8 -0
  385. package/src/List/List.test.tsx +9 -8
  386. package/src/MobileNav/MobileNav.tsx +12 -1
  387. package/src/MobileNav/MobileNavToggle.test.tsx +116 -0
  388. package/src/MobileNav/MobileNavToggle.tsx +9 -1
  389. package/src/MultiSelector/MultiSelector.doc.mjs +4 -2
  390. package/src/MultiSelector/MultiSelector.test.tsx +172 -3
  391. package/src/MultiSelector/MultiSelector.tsx +55 -12
  392. package/src/MultiSelector/hooks.ts +17 -0
  393. package/src/NumberInput/NumberInput.test.tsx +11 -7
  394. package/src/NumberInput/NumberInput.tsx +1 -2
  395. package/src/Outline/Outline.tsx +0 -1
  396. package/src/OverflowList/OverflowList.doc.mjs +39 -6
  397. package/src/OverflowList/OverflowList.test.tsx +111 -0
  398. package/src/OverflowList/OverflowList.tsx +48 -8
  399. package/src/Popover/Popover.tsx +7 -4
  400. package/src/Popover/usePopover.tsx +9 -13
  401. package/src/PowerSearch/PowerSearch.doc.mjs +14 -0
  402. package/src/PowerSearch/PowerSearch.test.tsx +20 -0
  403. package/src/PowerSearch/PowerSearchEditPopover.test.tsx +67 -0
  404. package/src/PowerSearch/PowerSearchEditPopover.tsx +1 -1
  405. package/src/PowerSearch/usePowerSearchSource.ts +1 -2
  406. package/src/SelectableCard/SelectableCard.doc.mjs +2 -0
  407. package/src/SelectableCard/SelectableCard.test.tsx +46 -4
  408. package/src/SelectableCard/SelectableCard.tsx +29 -16
  409. package/src/Selector/Selector.test.tsx +69 -0
  410. package/src/Selector/Selector.tsx +5 -1
  411. package/src/Selector/hooks.ts +17 -0
  412. package/src/SideNav/SideNav.test.tsx +119 -3
  413. package/src/SideNav/SideNavCollapseButton.tsx +6 -1
  414. package/src/SideNav/SideNavHeading.tsx +24 -8
  415. package/src/SideNav/SideNavItem.tsx +5 -1
  416. package/src/Slider/Slider.test.tsx +75 -2
  417. package/src/Slider/Slider.tsx +21 -5
  418. package/src/Switch/Switch.test.tsx +32 -1
  419. package/src/Table/BaseTable.tsx +3 -5
  420. package/src/Table/index.ts +5 -0
  421. package/src/Table/plugins/groupedRows/useTableGroupedRows.tsx +6 -2
  422. package/src/Table/plugins/rowStatus/index.ts +7 -0
  423. package/src/Table/plugins/rowStatus/useTableRowStatus.test.tsx +138 -0
  424. package/src/Table/plugins/rowStatus/useTableRowStatus.tsx +189 -0
  425. package/src/Table/plugins/selection/useTableSelection.test.tsx +16 -0
  426. package/src/Table/plugins/selection/useTableSelection.tsx +19 -1
  427. package/src/Table/plugins/tree/useTableTreeData.test.tsx +135 -3
  428. package/src/Table/plugins/tree/useTableTreeData.tsx +128 -1
  429. package/src/Table/plugins/tree/useTableTreeState.test.tsx +104 -0
  430. package/src/Table/plugins/tree/useTableTreeState.tsx +46 -2
  431. package/src/Table/useBaseTablePlugins.ts +10 -6
  432. package/src/Table/useTableRowStatus.doc.mjs +30 -0
  433. package/src/Table/useTableSelection.doc.mjs +65 -14
  434. package/src/Table/useTableTreeData.doc.mjs +29 -0
  435. package/src/Table/useTableTreeState.doc.mjs +2 -2
  436. package/src/TextArea/TextArea.test.tsx +9 -1
  437. package/src/Thumbnail/Thumbnail.doc.mjs +19 -10
  438. package/src/Thumbnail/Thumbnail.test.tsx +98 -7
  439. package/src/Thumbnail/Thumbnail.tsx +141 -41
  440. package/src/Thumbnail/thumbnail.markers.stylex.ts +12 -0
  441. package/src/TimeInput/TimeInput.test.tsx +76 -1
  442. package/src/TimeInput/TimeInput.tsx +19 -6
  443. package/src/Timestamp/Timestamp.doc.mjs +4 -4
  444. package/src/Timestamp/Timestamp.test.tsx +32 -0
  445. package/src/Timestamp/Timestamp.tsx +28 -8
  446. package/src/Toast/useToast.tsx +7 -8
  447. package/src/ToggleButton/ToggleButtonGroup.tsx +1 -1
  448. package/src/Tokenizer/Tokenizer.doc.mjs +15 -1
  449. package/src/Tokenizer/Tokenizer.test.tsx +183 -2
  450. package/src/Tokenizer/Tokenizer.tsx +16 -4
  451. package/src/TopNav/TopNav.test.tsx +125 -1
  452. package/src/TopNav/TopNavHeading.tsx +24 -8
  453. package/src/TopNav/TopNavMegaMenu.test.tsx +149 -1
  454. package/src/TopNav/TopNavMegaMenu.tsx +10 -4
  455. package/src/TopNav/TopNavMegaMenuFeaturedCard.doc.mjs +3 -3
  456. package/src/TopNav/TopNavMegaMenuFeaturedCard.tsx +19 -2
  457. package/src/TopNav/TopNavMenu.test.tsx +118 -4
  458. package/src/TopNav/TopNavMenu.tsx +83 -5
  459. package/src/TreeList/TreeList.doc.mjs +22 -0
  460. package/src/TreeList/TreeList.test.tsx +232 -0
  461. package/src/TreeList/TreeList.tsx +18 -2
  462. package/src/TreeList/TreeListBranches.tsx +16 -2
  463. package/src/TreeList/TreeListItem.tsx +51 -11
  464. package/src/TreeList/TreeListTypes.ts +27 -1
  465. package/src/TreeList/index.ts +2 -2
  466. package/src/authoring/doc.ts +1 -3
  467. package/src/docs-types.ts +5 -0
  468. package/src/hooks/computeOverflow.test.ts +422 -0
  469. package/src/hooks/computeOverflow.ts +290 -0
  470. package/src/hooks/index.ts +2 -0
  471. package/src/hooks/useDevWarning.test.tsx +45 -0
  472. package/src/hooks/useDevWarning.ts +54 -0
  473. package/src/hooks/useOverflow.test.ts +96 -4
  474. package/src/hooks/useOverflow.ts +74 -33
  475. package/src/i18n/InternationalizationProvider.doc.mjs +99 -2
  476. package/src/i18n/resolve.ts +9 -21
  477. package/src/theme/Theme.tsx +11 -14
  478. package/src/theme/generateThemeRules.test.ts +65 -0
  479. package/src/theme/generateThemeRules.ts +56 -0
  480. package/src/theme/hct.ts +1 -1
  481. package/src/theme/syntax/defineSyntaxTheme.ts +5 -6
  482. package/src/utils/devWarning.test.ts +56 -0
  483. package/src/utils/devWarning.ts +102 -0
  484. package/src/utils/index.ts +6 -0
  485. package/src/utils/plainDate.test.ts +22 -0
  486. package/src/utils/plainDate.ts +61 -0
  487. package/src/utils/types.ts +14 -0
@@ -1 +1 @@
1
- {"version":3,"file":"doc.d.ts","sourceRoot":"","sources":["../../src/authoring/doc.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,kBAAkB;IACjC,6EAA6E;IAC7E,IAAI,EAAE,MAAM,CAAC;IACb,uDAAuD;IACvD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yBAAyB;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gFAAgF;IAChF,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,2EAA2E;IAC3E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,+EAA+E;IAC/E,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,wEAAwE;IACxE,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,0DAA0D;IAC1D,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,yEAAyE;AACzE,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,0DAA0D;AAC1D,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,kEAAkE;AAClE,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,uBAAwB,SAAQ,kBAAkB;IACjE,0CAA0C;IAC1C,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,yCAAyC;IACzC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,oDAAoD;IACpD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;CACtB;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAuB,SAAQ,kBAAkB;IAChE,yDAAyD;IACzD,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,+EAA+E;IAC/E,OAAO,EAAE,iBAAiB,EAAE,CAAC;CAC9B;AAED;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAAG,kBAAkB,CAAC;AAEvD;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAC1B,uBAAuB,GACvB,sBAAsB,GACtB,qBAAqB,CAAC;AAE1B;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,uBAAuB,EAClE,GAAG,EAAE,CAAC,GACL,CAAC,GAAG;IAAC,IAAI,EAAE,WAAW,CAAA;CAAC,CAEzB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,sBAAsB,EAChE,GAAG,EAAE,CAAC,GACL,CAAC,GAAG;IAAC,IAAI,EAAE,UAAU,CAAA;CAAC,CAExB;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,qBAAqB,EACvD,GAAG,EAAE,CAAC,GACL,CAAC,GAAG;IAAC,IAAI,EAAE,SAAS,CAAA;CAAC,CAEvB"}
1
+ {"version":3,"file":"doc.d.ts","sourceRoot":"","sources":["../../src/authoring/doc.ts"],"names":[],"mappings":"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"}
@@ -630,6 +630,7 @@ export interface TranslationDoc {
630
630
  * @example
631
631
  * ```
632
632
  * { type: 'prose', text: 'Spacing tokens control gap and padding...' }
633
+ * { type: 'heading', level: 3, text: 'Examples' }
633
634
  * { type: 'code', lang: 'tsx', code: 'padding: spacingVars[...]' }
634
635
  * { type: 'table', headers: ['Token', 'Value'], rows: [['--spacing-4', '16px']] }
635
636
  * { type: 'list', style: 'do', items: ['Use semantic tokens'] }
@@ -639,6 +640,10 @@ export interface TranslationDoc {
639
640
  export type ContentBlock = {
640
641
  type: 'prose';
641
642
  text: string;
643
+ } | {
644
+ type: 'heading';
645
+ level: 3 | 4 | 5 | 6;
646
+ text: string;
642
647
  } | {
643
648
  type: 'code';
644
649
  lang: string;
@@ -686,6 +691,9 @@ export type TokenPreviewType = 'swatch' | 'shadow-box' | 'radius-box' | 'spacing
686
691
  export interface ReferenceSection {
687
692
  /** Section title, e.g. "Spacing Tokens", "Light/Dark Mode" */
688
693
  title: string;
694
+ /** Navigation category ('guide' | 'foundations'). Mirrors the parent doc's
695
+ * category so sections can be grouped independently in the docsite nav. */
696
+ category?: string;
689
697
  /** Ordered content blocks. Mix prose, code, tables, and lists freely. */
690
698
  content: ContentBlock[];
691
699
  /** Preview type for token tables in this section. When set, the docsite
@@ -1 +1 @@
1
- {"version":3,"file":"docs-types.d.ts","sourceRoot":"","sources":["../src/docs-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"docs-types.d.ts","sourceRoot":"","sources":["../src/docs-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * @file computeOverflow.ts
3
+ * @input Plain measurements (item widths, gap, available width, indicator width, limits)
4
+ * @output Pure overflow computation: how many items are visible and their row layout
5
+ * @position Pure helper consumed by useOverflow; contains no DOM or React code so the
6
+ * fit/clamp math and the multi-row packing can be unit-tested in isolation.
7
+ *
8
+ * There is a single source of truth for `visibleCount`:
9
+ * visibleCount = clamp(fitCount, minVisibleItems, maxVisibleItems ?? itemCount)
10
+ *
11
+ * SYNC: When modified, update:
12
+ * - /packages/core/src/hooks/useOverflow.ts (the only caller)
13
+ */
14
+ export interface ComputeOverflowInput {
15
+ /** Measured widths of each item, in original DOM order. */
16
+ widths: number[];
17
+ /** Gap between items, in pixels. */
18
+ gap: number;
19
+ /** Width available to lay items out, in pixels. */
20
+ availableWidth: number;
21
+ /** Measured width of the overflow indicator (0 if none). */
22
+ indicatorWidth: number;
23
+ /** Floor — always show at least this many items. */
24
+ minVisibleItems: number;
25
+ /** Ceiling — never show more than this many items. `undefined` = no cap. */
26
+ maxVisibleItems?: number;
27
+ /**
28
+ * Bounded multi-row: wrap items across up to this many rows, then collapse
29
+ * the rest into the overflow indicator. `undefined` (or `1`) = single line.
30
+ */
31
+ maxRows?: number;
32
+ /** Which end items collapse from. */
33
+ collapseFrom: 'start' | 'end';
34
+ }
35
+ export interface ComputeOverflowResult {
36
+ /** Number of items that should be rendered in the visible container. */
37
+ visibleCount: number;
38
+ /** Number of rows the visible items occupy (always 1 for the single-line path). */
39
+ rows: number;
40
+ }
41
+ /**
42
+ * Pure overflow computation. Given plain measurements and the configured
43
+ * limits, return how many items should be visible and how many rows they
44
+ * occupy. No DOM, no React — safe to unit-test directly.
45
+ */
46
+ export declare function computeOverflow(input: ComputeOverflowInput): ComputeOverflowResult;
47
+ //# sourceMappingURL=computeOverflow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"computeOverflow.d.ts","sourceRoot":"","sources":["../../src/hooks/computeOverflow.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,oBAAoB;IACnC,2DAA2D;IAC3D,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,oCAAoC;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,mDAAmD;IACnD,cAAc,EAAE,MAAM,CAAC;IACvB,4DAA4D;IAC5D,cAAc,EAAE,MAAM,CAAC;IACvB,oDAAoD;IACpD,eAAe,EAAE,MAAM,CAAC;IACxB,4EAA4E;IAC5E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qCAAqC;IACrC,YAAY,EAAE,OAAO,GAAG,KAAK,CAAC;CAC/B;AAED,MAAM,WAAW,qBAAqB;IACpC,wEAAwE;IACxE,YAAY,EAAE,MAAM,CAAC;IACrB,mFAAmF;IACnF,IAAI,EAAE,MAAM,CAAC;CACd;AA0LD;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,oBAAoB,GAC1B,qBAAqB,CAqDvB"}
@@ -0,0 +1,213 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ /**
4
+ * @file computeOverflow.ts
5
+ * @input Plain measurements (item widths, gap, available width, indicator width, limits)
6
+ * @output Pure overflow computation: how many items are visible and their row layout
7
+ * @position Pure helper consumed by useOverflow; contains no DOM or React code so the
8
+ * fit/clamp math and the multi-row packing can be unit-tested in isolation.
9
+ *
10
+ * There is a single source of truth for `visibleCount`:
11
+ * visibleCount = clamp(fitCount, minVisibleItems, maxVisibleItems ?? itemCount)
12
+ *
13
+ * SYNC: When modified, update:
14
+ * - /packages/core/src/hooks/useOverflow.ts (the only caller)
15
+ */
16
+
17
+ function clamp(value, min, max) {
18
+ return Math.max(Math.min(value, max), min);
19
+ }
20
+
21
+ /**
22
+ * Resolve the ceiling and floor into a single [floor, ceiling] pair.
23
+ *
24
+ * `maxVisibleItems` is clamped to `itemCount` (a cap larger than the list is a
25
+ * no-op). When `maxVisibleItems < minVisibleItems`, the floor wins (D1) via the
26
+ * final clamp — the hook is responsible for the dev-only warning.
27
+ */
28
+ function resolveBounds(itemCount, minVisibleItems, maxVisibleItems) {
29
+ const floor = Math.max(0, Math.min(minVisibleItems, itemCount));
30
+ const rawCeiling = maxVisibleItems == null ? itemCount : maxVisibleItems;
31
+ const ceiling = Math.max(0, Math.min(rawCeiling, itemCount));
32
+ return {
33
+ floor,
34
+ ceiling
35
+ };
36
+ }
37
+
38
+ /**
39
+ * Single-line greedy fit: how many items fit in one row of `availableWidth`,
40
+ * reserving indicator space for every non-final admitted item. Mirrors the
41
+ * original in-hook loop so single-line behavior is unchanged.
42
+ */
43
+ function computeSingleLineFit(orderedWidths, gap, availableWidth, indicatorWidth, floor, ceiling) {
44
+ let totalWidth = 0;
45
+ let count = 0;
46
+ for (let i = 0; i < orderedWidths.length; i++) {
47
+ if (count >= ceiling) {
48
+ break;
49
+ }
50
+ const itemWidth = orderedWidths[i];
51
+ const gapWidth = i > 0 ? gap : 0;
52
+ const candidateWidth = totalWidth + itemWidth + gapWidth;
53
+ const isLastItem = i === orderedWidths.length - 1;
54
+ const reservedWidth = isLastItem ? 0 : indicatorWidth + (count > 0 || indicatorWidth > 0 ? gap : 0);
55
+ if (candidateWidth + reservedWidth > availableWidth && count >= floor) {
56
+ break;
57
+ }
58
+ totalWidth = candidateWidth;
59
+ count++;
60
+ }
61
+ return count;
62
+ }
63
+
64
+ /**
65
+ * Pack items into rows, wrapping when the next item would exceed
66
+ * `availableWidth`. On the last allowed row, keep `indicatorReserve` px free so
67
+ * the overflow indicator fits. Stops admitting once no further item can be
68
+ * placed within `maxRows`.
69
+ */
70
+ function packRows(orderedWidths, gap, availableWidth, indicatorReserve, maxRows) {
71
+ let placed = 0;
72
+ let row = 1;
73
+ let rowWidth = 0;
74
+ for (let i = 0; i < orderedWidths.length; i++) {
75
+ const w = orderedWidths[i];
76
+ const isFirstInRow = rowWidth === 0;
77
+ const candidate = isFirstInRow ? w : rowWidth + gap + w;
78
+ const onLastRow = row === maxRows;
79
+ const reserve = onLastRow && indicatorReserve > 0 ? indicatorReserve + gap : 0;
80
+ if (candidate + reserve <= availableWidth) {
81
+ rowWidth = candidate;
82
+ placed++;
83
+ continue;
84
+ }
85
+ if (isFirstInRow) {
86
+ // A single item wider than the row occupies this row alone (it will be
87
+ // clipped visually). But if it can't coexist with the reserved indicator
88
+ // on the last row, stop here.
89
+ if (onLastRow && reserve > 0) {
90
+ break;
91
+ }
92
+ rowWidth = candidate;
93
+ placed++;
94
+ continue;
95
+ }
96
+ if (row >= maxRows) {
97
+ break;
98
+ }
99
+ row++;
100
+ rowWidth = 0;
101
+ i--; // re-attempt this item as the first on the new row
102
+ }
103
+ return {
104
+ placed,
105
+ rows: row
106
+ };
107
+ }
108
+
109
+ /** Count how many rows a set of items occupies when wrapped at availableWidth. */
110
+ function countRows(orderedWidths, gap, availableWidth) {
111
+ if (orderedWidths.length === 0) {
112
+ return 0;
113
+ }
114
+ let rows = 1;
115
+ let rowWidth = 0;
116
+ for (let i = 0; i < orderedWidths.length; i++) {
117
+ const w = orderedWidths[i];
118
+ const isFirstInRow = rowWidth === 0;
119
+ const candidate = isFirstInRow ? w : rowWidth + gap + w;
120
+ if (candidate <= availableWidth || isFirstInRow) {
121
+ rowWidth = candidate;
122
+ } else {
123
+ rows++;
124
+ rowWidth = w;
125
+ }
126
+ }
127
+ return rows;
128
+ }
129
+
130
+ /**
131
+ * Multi-row packing (Strategy A): simulate wrapping items into rows of
132
+ * `availableWidth`, admitting items until a new item would require a row beyond
133
+ * `maxRows`, reserving indicator space on the final row when items overflow.
134
+ * Returns the admitted count and how many rows those items occupy. Assumes
135
+ * uniform row height.
136
+ */
137
+ function computeMultiRowFit(orderedWidths, gap, availableWidth, indicatorWidth, maxRows) {
138
+ const n = orderedWidths.length;
139
+ if (n === 0) {
140
+ return {
141
+ count: 0,
142
+ rows: 0
143
+ };
144
+ }
145
+
146
+ // If everything fits within maxRows without reserving indicator space, there
147
+ // is no overflow and no indicator is needed.
148
+ const packAll = packRows(orderedWidths, gap, availableWidth, 0, maxRows);
149
+ if (packAll.placed === n) {
150
+ return {
151
+ count: n,
152
+ rows: packAll.rows
153
+ };
154
+ }
155
+
156
+ // Overflow → reserve indicator space on the final row and re-pack.
157
+ const packWithIndicator = packRows(orderedWidths, gap, availableWidth, indicatorWidth, maxRows);
158
+ const count = packWithIndicator.placed;
159
+ const rows = countRows(orderedWidths.slice(0, count), gap, availableWidth);
160
+ return {
161
+ count,
162
+ rows: Math.max(count > 0 ? 1 : 0, rows)
163
+ };
164
+ }
165
+
166
+ /**
167
+ * Pure overflow computation. Given plain measurements and the configured
168
+ * limits, return how many items should be visible and how many rows they
169
+ * occupy. No DOM, no React — safe to unit-test directly.
170
+ */
171
+ export function computeOverflow(input) {
172
+ const {
173
+ widths,
174
+ gap,
175
+ availableWidth,
176
+ indicatorWidth,
177
+ minVisibleItems,
178
+ maxVisibleItems,
179
+ maxRows,
180
+ collapseFrom
181
+ } = input;
182
+ const itemCount = widths.length;
183
+ if (itemCount === 0) {
184
+ return {
185
+ visibleCount: 0,
186
+ rows: 0
187
+ };
188
+ }
189
+ const {
190
+ floor,
191
+ ceiling
192
+ } = resolveBounds(itemCount, minVisibleItems, maxVisibleItems);
193
+ const orderedWidths = collapseFrom === 'end' ? widths : [...widths].reverse();
194
+ const multiRow = maxRows != null && maxRows > 1;
195
+ if (!multiRow) {
196
+ const fitCount = computeSingleLineFit(orderedWidths, gap, availableWidth, indicatorWidth, floor, ceiling);
197
+ const visibleCount = clamp(fitCount, floor, ceiling);
198
+ return {
199
+ visibleCount,
200
+ rows: visibleCount > 0 ? 1 : 0
201
+ };
202
+ }
203
+ const {
204
+ count,
205
+ rows
206
+ } = computeMultiRowFit(orderedWidths, gap, availableWidth, indicatorWidth, maxRows);
207
+ const visibleCount = clamp(count, floor, ceiling);
208
+ const resolvedRows = visibleCount === count ? rows : countRows(orderedWidths.slice(0, visibleCount), gap, availableWidth);
209
+ return {
210
+ visibleCount,
211
+ rows: visibleCount > 0 ? Math.max(1, resolvedRows) : 0
212
+ };
213
+ }
@@ -42,4 +42,5 @@ export { useInteractiveRole } from './useInteractiveRole';
42
42
  export type { InteractiveRole, UseInteractiveRoleOptions, } from './useInteractiveRole';
43
43
  export { useLongPress } from './useLongPress';
44
44
  export type { UseLongPressOptions, UseLongPressHandlers } from './useLongPress';
45
+ export { useDevWarning } from './useDevWarning';
45
46
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AAEH,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5C,YAAY,EAAC,mBAAmB,EAAE,kBAAkB,EAAC,MAAM,gBAAgB,CAAC;AAE5E,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAC1C,YAAY,EAAC,UAAU,EAAE,kBAAkB,EAAC,MAAM,eAAe,CAAC;AAElE,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5C,YAAY,EAAC,mBAAmB,EAAE,kBAAkB,EAAC,MAAM,gBAAgB,CAAC;AAE5E,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5C,YAAY,EACV,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5C,YAAY,EAAC,mBAAmB,EAAE,kBAAkB,EAAC,MAAM,gBAAgB,CAAC;AAE5E,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AACxC,YAAY,EAAC,MAAM,EAAC,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAE5C,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAClD,YAAY,EACV,sBAAsB,EACtB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAC,mBAAmB,EAAE,kBAAkB,EAAC,MAAM,gBAAgB,CAAC;AAE5E,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAC1C,YAAY,EAAC,kBAAkB,EAAE,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAEzE,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AACtD,YAAY,EAAC,mBAAmB,EAAC,MAAM,qBAAqB,CAAC;AAE7D,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AACtD,YAAY,EAAC,oBAAoB,EAAC,MAAM,qBAAqB,CAAC;AAE9D,OAAO,EAAC,gBAAgB,EAAC,MAAM,oBAAoB,CAAC;AACpD,YAAY,EACV,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5C,YAAY,EAAC,iBAAiB,EAAE,mBAAmB,EAAC,MAAM,gBAAgB,CAAC;AAE3E,OAAO,EACL,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,4BAA4B,EAC5B,wBAAwB,GACzB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AACtD,YAAY,EAAC,wBAAwB,EAAC,MAAM,qBAAqB,CAAC;AAElE,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AACxD,YAAY,EACV,eAAe,EACf,yBAAyB,GAC1B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5C,YAAY,EAAC,mBAAmB,EAAE,oBAAoB,EAAC,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AAEH,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5C,YAAY,EAAC,mBAAmB,EAAE,kBAAkB,EAAC,MAAM,gBAAgB,CAAC;AAE5E,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAC1C,YAAY,EAAC,UAAU,EAAE,kBAAkB,EAAC,MAAM,eAAe,CAAC;AAElE,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5C,YAAY,EAAC,mBAAmB,EAAE,kBAAkB,EAAC,MAAM,gBAAgB,CAAC;AAE5E,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5C,YAAY,EACV,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5C,YAAY,EAAC,mBAAmB,EAAE,kBAAkB,EAAC,MAAM,gBAAgB,CAAC;AAE5E,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AACxC,YAAY,EAAC,MAAM,EAAC,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAE5C,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAClD,YAAY,EACV,sBAAsB,EACtB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAC,mBAAmB,EAAE,kBAAkB,EAAC,MAAM,gBAAgB,CAAC;AAE5E,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAC1C,YAAY,EAAC,kBAAkB,EAAE,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAEzE,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AACtD,YAAY,EAAC,mBAAmB,EAAC,MAAM,qBAAqB,CAAC;AAE7D,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AACtD,YAAY,EAAC,oBAAoB,EAAC,MAAM,qBAAqB,CAAC;AAE9D,OAAO,EAAC,gBAAgB,EAAC,MAAM,oBAAoB,CAAC;AACpD,YAAY,EACV,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5C,YAAY,EAAC,iBAAiB,EAAE,mBAAmB,EAAC,MAAM,gBAAgB,CAAC;AAE3E,OAAO,EACL,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,4BAA4B,EAC5B,wBAAwB,GACzB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AACtD,YAAY,EAAC,wBAAwB,EAAC,MAAM,qBAAqB,CAAC;AAElE,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AACxD,YAAY,EACV,eAAe,EACf,yBAAyB,GAC1B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5C,YAAY,EAAC,mBAAmB,EAAE,oBAAoB,EAAC,MAAM,gBAAgB,CAAC;AAE9E,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC"}
@@ -28,4 +28,5 @@ export { useImageMode } from "./useImageMode.js";
28
28
  export { useClickableContainer, INTERACTIVE_SELECTORS } from "./useClickableContainer.js";
29
29
  export { useInputContainer } from "./useInputContainer.js";
30
30
  export { useInteractiveRole } from "./useInteractiveRole.js";
31
- export { useLongPress } from "./useLongPress.js";
31
+ export { useLongPress } from "./useLongPress.js";
32
+ export { useDevWarning } from "./useDevWarning.js";
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Fire a dev-only warning once per mount while `condition` is true.
3
+ *
4
+ * @param component - Component or hook name (message prefix)
5
+ * @param message - What went wrong and how to fix it
6
+ * @param condition - Whether to warn; defaults to `true`
7
+ *
8
+ * @example
9
+ * ```
10
+ * useDevWarning(
11
+ * 'Field',
12
+ * 'isOptional and isRequired are mutually exclusive. isOptional takes precedence.',
13
+ * isOptional && isRequired,
14
+ * );
15
+ * ```
16
+ */
17
+ export declare function useDevWarning(component: string, message: string, condition?: boolean): void;
18
+ //# sourceMappingURL=useDevWarning.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDevWarning.d.ts","sourceRoot":"","sources":["../../src/hooks/useDevWarning.ts"],"names":[],"mappings":"AAyBA;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,SAAS,GAAE,OAAc,GACxB,IAAI,CAQN"}
@@ -0,0 +1,49 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ 'use client';
4
+
5
+ /**
6
+ * @file useDevWarning.ts
7
+ * @input A component name, a message, and a boolean condition
8
+ * @output Fires a dev-only `Component: message` warning once per mount
9
+ * @position Core hook; the render-safe way to warn the builder from a component
10
+ *
11
+ * The right way to surface a dev guardrail from inside a component. A naive
12
+ * `if (condition) console.warn(...)` in the render body repeats on every
13
+ * render, and reaching for `useState` to gate it adds needless state and
14
+ * re-renders. This hook uses a ref + effect: the warning fires once per mount
15
+ * when the condition holds, never during render, and never triggers a
16
+ * re-render. Messages use the standardized `Component: message` format.
17
+ *
18
+ * SYNC: When modified, update:
19
+ * - /packages/core/src/hooks/index.ts
20
+ * - /packages/core/src/utils/devWarning.ts (the imperative counterpart)
21
+ */
22
+ import { useEffect, useRef } from 'react';
23
+ import { devWarn } from "../utils/devWarning.js";
24
+
25
+ /**
26
+ * Fire a dev-only warning once per mount while `condition` is true.
27
+ *
28
+ * @param component - Component or hook name (message prefix)
29
+ * @param message - What went wrong and how to fix it
30
+ * @param condition - Whether to warn; defaults to `true`
31
+ *
32
+ * @example
33
+ * ```
34
+ * useDevWarning(
35
+ * 'Field',
36
+ * 'isOptional and isRequired are mutually exclusive. isOptional takes precedence.',
37
+ * isOptional && isRequired,
38
+ * );
39
+ * ```
40
+ */
41
+ export function useDevWarning(component, message, condition = true) {
42
+ const hasWarnedRef = useRef(false);
43
+ useEffect(() => {
44
+ if (condition && !hasWarnedRef.current) {
45
+ hasWarnedRef.current = true;
46
+ devWarn(component, message);
47
+ }
48
+ }, [component, message, condition]);
49
+ }
@@ -9,6 +9,21 @@ export interface UseOverflowOptions {
9
9
  * @default 0
10
10
  */
11
11
  minVisibleItems?: number;
12
+ /**
13
+ * Maximum number of items to ever show, even if they all fit. The ceiling
14
+ * partner to `minVisibleItems`. `undefined` means no cap. When it is less
15
+ * than `minVisibleItems`, the floor wins and a dev-only warning is emitted.
16
+ * @default undefined
17
+ */
18
+ maxVisibleItems?: number;
19
+ /**
20
+ * Wrap items across up to this many rows before collapsing the rest into the
21
+ * overflow indicator. `undefined` (or `1`) keeps the single-line behavior.
22
+ * A number, not a boolean: unbounded wrapping is a plain flex-wrap layout,
23
+ * not overflow collapse. Assumes uniform row height.
24
+ * @default undefined
25
+ */
26
+ maxRows?: number;
12
27
  /**
13
28
  * Which end to collapse items from.
14
29
  * @default 'end'
@@ -35,6 +50,10 @@ export interface UseOverflowReturn {
35
50
  visibleCount: number;
36
51
  /** Whether any items are overflowing */
37
52
  hasOverflow: boolean;
53
+ /** Number of rows the visible items occupy (1 for the single-line path) */
54
+ rows: number;
55
+ /** Measured max item height in pixels; used to size the multi-row container */
56
+ rowHeight: number;
38
57
  }
39
58
  /**
40
59
  * Hook for managing horizontal overflow of a list of items.
@@ -1 +1 @@
1
- {"version":3,"file":"useOverflow.d.ts","sourceRoot":"","sources":["../../src/hooks/useOverflow.ts"],"names":[],"mappings":"AAsBA,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IAE/B;;;;;;;;;OASG;IACH,QAAQ,CAAC,EAAE,eAAe,GAAG,aAAa,CAAC;CAC5C;AAED,MAAM,WAAW,iBAAiB;IAChC,qDAAqD;IACrD,YAAY,EAAE,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IAC7C,wDAAwD;IACxD,UAAU,EAAE,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IAC3C,wDAAwD;IACxD,YAAY,EAAE,MAAM,CAAC;IACrB,wCAAwC;IACxC,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,WAAW,CACzB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,kBAAuB,GAC/B,iBAAiB,CAsInB"}
1
+ {"version":3,"file":"useOverflow.d.ts","sourceRoot":"","sources":["../../src/hooks/useOverflow.ts"],"names":[],"mappings":"AA2BA,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;;;;OAKG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IAE/B;;;;;;;;;OASG;IACH,QAAQ,CAAC,EAAE,eAAe,GAAG,aAAa,CAAC;CAC5C;AAED,MAAM,WAAW,iBAAiB;IAChC,qDAAqD;IACrD,YAAY,EAAE,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IAC7C,wDAAwD;IACxD,UAAU,EAAE,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IAC3C,wDAAwD;IACxD,YAAY,EAAE,MAAM,CAAC;IACrB,wCAAwC;IACxC,WAAW,EAAE,OAAO,CAAC;IACrB,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC;IACb,+EAA+E;IAC/E,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,WAAW,CACzB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,kBAAuB,GAC/B,iBAAiB,CAqJnB"}
@@ -10,14 +10,19 @@
10
10
  *
11
11
  * Measures children rendered in a hidden container to determine how many fit
12
12
  * in the available width, without flickering. Uses ResizeObserver to react
13
- * to container size changes.
13
+ * to container size changes. Supports an optional item cap (`maxVisibleItems`)
14
+ * and bounded multi-row wrapping (`maxRows`); the fit/clamp/row-packing math
15
+ * lives in the pure `computeOverflow` helper.
14
16
  *
15
17
  * SYNC: When modified, update:
16
18
  * - /packages/core/src/hooks/index.ts
19
+ * - /packages/core/src/hooks/computeOverflow.ts (the pure computation)
17
20
  */
18
21
  import { useState, useCallback, useRef } from 'react';
19
22
  import { useIsomorphicLayoutEffect } from "./useIsomorphicLayoutEffect.js";
20
23
  import { observeResize, unobserveResize } from "../utils/sharedResizeObserver.js";
24
+ import { computeOverflow } from "./computeOverflow.js";
25
+ import { useDevWarning } from "./useDevWarning.js";
21
26
  /**
22
27
  * Hook for managing horizontal overflow of a list of items.
23
28
  *
@@ -40,11 +45,16 @@ export function useOverflow(itemCount, options = {}) {
40
45
  const {
41
46
  gap = 0,
42
47
  minVisibleItems = 0,
48
+ maxVisibleItems,
49
+ maxRows,
43
50
  collapseFrom = 'end',
44
51
  behavior = 'observeSelf'
45
52
  } = options;
53
+ useDevWarning('useOverflow', `maxVisibleItems (${maxVisibleItems}) is less than ` + `minVisibleItems (${minVisibleItems}); the floor wins and ` + `minVisibleItems items will be shown.`, maxVisibleItems != null && maxVisibleItems < minVisibleItems);
46
54
  const observeParent = behavior === 'observeParent';
47
55
  const [visibleCount, setVisibleCount] = useState(itemCount);
56
+ const [rows, setRows] = useState(1);
57
+ const [rowHeight, setRowHeight] = useState(0);
48
58
  const containerElRef = useRef(null);
49
59
  const measureElRef = useRef(null);
50
60
  const observedElRef = useRef(null);
@@ -72,34 +82,33 @@ export function useOverflow(itemCount, options = {}) {
72
82
  if (children.length === 0) {
73
83
  // eslint-disable-next-line @eslint-react/set-state-in-effect -- overflow count is derived from measured DOM widths
74
84
  setVisibleCount(0);
85
+ // eslint-disable-next-line @eslint-react/set-state-in-effect -- derived from measured DOM
86
+ setRows(0);
75
87
  return;
76
88
  }
77
-
78
- // Collect widths of all children
79
89
  const widths = children.map(child => child.offsetWidth);
80
-
81
- // Determine how many items fit
82
- let totalWidth = 0;
83
- let count = 0;
84
- const orderedWidths = collapseFrom === 'end' ? widths : [...widths].reverse();
85
- for (let i = 0; i < orderedWidths.length; i++) {
86
- const itemWidth = orderedWidths[i];
87
- const gapWidth = i > 0 ? gap : 0;
88
- const candidateWidth = totalWidth + itemWidth + gapWidth;
89
-
90
- // If this isn't the last item, we need to reserve space for the indicator
91
- const isLastItem = i === orderedWidths.length - 1;
92
- const reservedWidth = isLastItem ? 0 : indicatorWidth + (count > 0 || indicatorWidth > 0 ? gap : 0);
93
- if (candidateWidth + reservedWidth > availableWidth && count >= minVisibleItems) {
94
- break;
95
- }
96
- totalWidth = candidateWidth;
97
- count++;
98
- }
90
+ const measuredRowHeight = children.reduce((max, child) => Math.max(max, child.offsetHeight || 0), 0);
91
+ const {
92
+ visibleCount: nextVisible,
93
+ rows: nextRows
94
+ } = computeOverflow({
95
+ widths,
96
+ gap,
97
+ availableWidth,
98
+ indicatorWidth,
99
+ minVisibleItems,
100
+ maxVisibleItems,
101
+ maxRows,
102
+ collapseFrom
103
+ });
99
104
 
100
105
  // eslint-disable-next-line @eslint-react/set-state-in-effect -- overflow count is derived from measured DOM widths
101
- setVisibleCount(Math.max(Math.min(count, itemCount), minVisibleItems));
102
- }, [itemCount, gap, minVisibleItems, collapseFrom, observeParent]);
106
+ setVisibleCount(nextVisible);
107
+ // eslint-disable-next-line @eslint-react/set-state-in-effect -- derived from measured DOM
108
+ setRows(prev => prev === nextRows ? prev : nextRows);
109
+ // eslint-disable-next-line @eslint-react/set-state-in-effect -- derived from measured DOM
110
+ setRowHeight(prev => prev === measuredRowHeight ? prev : measuredRowHeight);
111
+ }, [itemCount, gap, minVisibleItems, maxVisibleItems, maxRows, collapseFrom, observeParent]);
103
112
  const containerRef = useCallback(el => {
104
113
  containerElRef.current = el;
105
114
 
@@ -132,6 +141,8 @@ export function useOverflow(itemCount, options = {}) {
132
141
  containerRef,
133
142
  measureRef,
134
143
  visibleCount,
135
- hasOverflow
144
+ hasOverflow,
145
+ rows,
146
+ rowHeight
136
147
  };
137
148
  }
@@ -1 +1 @@
1
- {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/i18n/resolve.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAU,MAAM,EAAE,gBAAgB,EAAE,SAAS,EAAC,MAAM,SAAS,CAAC;AAuB1E;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAc3D;AAuDD,wBAAgB,OAAO,CACrB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAC3C,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,gBAAgB,EAC1B,SAAS,EAAE,SAAS,GAAG,SAAS,GAC/B,MAAM,CAsBR;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAGtC"}
1
+ {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/i18n/resolve.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAU,MAAM,EAAE,gBAAgB,EAAE,SAAS,EAAC,MAAM,SAAS,CAAC;AAwB1E;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAc3D;AAsCD,wBAAgB,OAAO,CACrB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAC3C,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,gBAAgB,EAC1B,SAAS,EAAE,SAAS,GAAG,SAAS,GAC/B,MAAM,CA0BR;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAGtC"}
@@ -21,6 +21,7 @@
21
21
 
22
22
  import IntlMessageFormat from 'intl-messageformat';
23
23
  import enSource from '../../locales/en.json' with { type: 'json' };
24
+ import { warnOnce, __resetDevWarnings } from "../utils/devWarning.js";
24
25
  const EN_CATALOG = enSource;
25
26
 
26
27
  /**
@@ -68,22 +69,6 @@ export function resolveLocaleChain(locale) {
68
69
  }
69
70
  return chain;
70
71
  }
71
-
72
- /**
73
- * Missing-key warn-once tracking. Fires ONLY when a key is missing from
74
- * every source including the shipped `en` catalog — that's a real bug
75
- * (typo, stale catalog, deleted key). Fallback to `en` from a non-en
76
- * locale is expected and silent, matching the FormatJS / i18next default
77
- * of not spamming the console when a translation simply hasn't been
78
- * written yet.
79
- */
80
- const warnedMissing = new Set();
81
- function warnOnce(bucket, key, message) {
82
- if (!bucket.has(key)) {
83
- bucket.add(key);
84
- console.warn(message);
85
- }
86
- }
87
72
  function lookup(key, locale, messages, overrides) {
88
73
  const chain = resolveLocaleChain(locale);
89
74
 
@@ -117,7 +102,11 @@ function lookup(key, locale, messages, overrides) {
117
102
  export function resolve(key, values, locale, messages, overrides) {
118
103
  const result = lookup(key, locale, messages, overrides);
119
104
  if (result === null) {
120
- warnOnce(warnedMissing, `${locale}::${key}`, `[astryx-i18n] missing key: ${key} (locale: ${locale})`);
105
+ // Fires ONLY when a key is missing from every source including the
106
+ // shipped `en` catalog — a real bug (typo, stale catalog, deleted key).
107
+ // Fallback to `en` from a non-en locale is expected and stays silent,
108
+ // matching the FormatJS / i18next default.
109
+ warnOnce(`astryx-i18n:${locale}::${key}`, 'astryx-i18n', `missing key: ${key} (locale: ${locale})`);
121
110
  return key;
122
111
  }
123
112
  if (values === undefined) {
@@ -137,5 +126,5 @@ export function resolve(key, values, locale, messages, overrides) {
137
126
  */
138
127
  export function __resetForTests() {
139
128
  formatterCache.clear();
140
- warnedMissing.clear();
129
+ __resetDevWarnings();
141
130
  }