haze-ui 1.30.0 → 1.32.0

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 (330) hide show
  1. package/README.md +67 -1
  2. package/dist/components/ActivityRail/ActivityRail.js +76 -0
  3. package/dist/components/ActivityRail/index.js +3 -0
  4. package/dist/components/BottomSheet/BottomSheet.js +12 -26
  5. package/dist/components/Button/Button.js +33 -15
  6. package/dist/components/Button/ButtonLink.js +12 -21
  7. package/dist/components/Button/styles.js +2 -2
  8. package/dist/components/Cascader/Cascader.js +11 -11
  9. package/dist/components/ColorPicker/ColorPicker.js +4 -4
  10. package/dist/components/Combobox/Combobox.js +128 -119
  11. package/dist/components/Command/Command.js +9 -9
  12. package/dist/components/ConfigProvider/ConfigContext.js +16 -0
  13. package/dist/components/ConfirmDialog/confirm.js +41 -0
  14. package/dist/components/ConfirmDialog/index.js +2 -1
  15. package/dist/components/ConversationList/ConversationList.js +16 -7
  16. package/dist/components/DataTable/DataTable.js +24 -24
  17. package/dist/components/DateTimePicker/DateTimePicker.js +25 -0
  18. package/dist/components/DateTimePicker/index.js +3 -0
  19. package/dist/components/Datepicker/Datepicker.js +8 -7
  20. package/dist/components/Datepicker/DatepickerCore.js +60 -59
  21. package/dist/components/Drawer/Drawer.js +45 -40
  22. package/dist/components/Fieldset/Fieldset.js +25 -0
  23. package/dist/components/Fieldset/index.js +2 -0
  24. package/dist/components/Highlight/Highlight.js +19 -0
  25. package/dist/components/Highlight/index.js +2 -0
  26. package/dist/components/Indicator/Indicator.js +37 -0
  27. package/dist/components/Indicator/index.js +2 -0
  28. package/dist/components/InlineCompletion/InlineCompletion.js +4 -4
  29. package/dist/components/Input/Input.js +9 -7
  30. package/dist/components/Input/InputCore.js +32 -13
  31. package/dist/components/List/List.js +14 -10
  32. package/dist/components/LoadingOverlay/LoadingOverlay.js +30 -0
  33. package/dist/components/LoadingOverlay/index.js +3 -0
  34. package/dist/components/LocaleProvider/ar-sa.js +11 -0
  35. package/dist/components/LocaleProvider/de-de.js +11 -0
  36. package/dist/components/LocaleProvider/es-es.js +11 -0
  37. package/dist/components/LocaleProvider/fr-fr.js +11 -0
  38. package/dist/components/LocaleProvider/it-it.js +11 -0
  39. package/dist/components/LocaleProvider/ja-jp.js +11 -0
  40. package/dist/components/LocaleProvider/ko-kr.js +11 -0
  41. package/dist/components/LocaleProvider/locale.js +11 -0
  42. package/dist/components/LocaleProvider/pt-br.js +11 -0
  43. package/dist/components/LocaleProvider/ru-ru.js +11 -0
  44. package/dist/components/LocaleProvider/zh-cn.js +11 -0
  45. package/dist/components/LogViewer/LogViewer.js +45 -38
  46. package/dist/components/Mark/Mark.js +20 -0
  47. package/dist/components/Mark/index.js +2 -0
  48. package/dist/components/Mentions/MentionsCore.js +3 -3
  49. package/dist/components/Menu/MenuItem.js +6 -4
  50. package/dist/components/NumberFormatter/NumberFormatter.js +16 -0
  51. package/dist/components/NumberFormatter/index.js +2 -0
  52. package/dist/components/OTPInput/OTPInputCore.js +7 -6
  53. package/dist/components/PasswordInput/PasswordInputCore.js +27 -26
  54. package/dist/components/Rating/RatingCore.js +18 -18
  55. package/dist/components/Resizable/Resizable.js +266 -36
  56. package/dist/components/Select/Select.js +28 -23
  57. package/dist/components/Select/SelectCore.js +26 -23
  58. package/dist/components/Select/SelectFloating.js +157 -153
  59. package/dist/components/Sparkline/Sparkline.js +45 -0
  60. package/dist/components/Sparkline/index.js +3 -0
  61. package/dist/components/Sparkline/sparkline-styles.js +18 -0
  62. package/dist/components/Spoiler/Spoiler.js +36 -0
  63. package/dist/components/Spoiler/index.js +3 -0
  64. package/dist/components/StatusBar/StatusBar.js +47 -0
  65. package/dist/components/StatusBar/index.js +3 -0
  66. package/dist/components/TabBar/TabBar.js +60 -0
  67. package/dist/components/TabBar/index.js +3 -0
  68. package/dist/components/Tabs/SortableTabList.js +116 -0
  69. package/dist/components/Tabs/Tab.js +83 -16
  70. package/dist/components/Tabs/TabList.js +94 -38
  71. package/dist/components/Tabs/edge-scroll.js +6 -0
  72. package/dist/components/Tabs/index.js +4 -3
  73. package/dist/components/Tabs/tab-metas.js +24 -0
  74. package/dist/components/TagGroup/SortableTagGroup.js +32 -20
  75. package/dist/components/TagGroup/TagGroup.js +23 -9
  76. package/dist/components/TagGroup/TagGroupItem.js +21 -15
  77. package/dist/components/TagInput/SortableTagInputCore.js +11 -11
  78. package/dist/components/TagInput/TagInputCore.js +10 -10
  79. package/dist/components/TimePicker/TimePickerPanel.js +3 -3
  80. package/dist/components/Toast/ToastContainer.js +5 -5
  81. package/dist/components/Toast/index.js +1 -1
  82. package/dist/components/Toast/{toast2.js → toast-channel.js} +1 -1
  83. package/dist/components/Toast/useToast.js +1 -1
  84. package/dist/components/Tree/SortableTree.js +39 -39
  85. package/dist/components/TreeSelect/TreeSelect.js +6 -6
  86. package/dist/components/VirtualList/VirtualList.js +133 -121
  87. package/dist/components/VisuallyHidden/VisuallyHidden.js +15 -0
  88. package/dist/components/VisuallyHidden/index.js +2 -0
  89. package/dist/components/Workbench/Workbench.js +144 -0
  90. package/dist/components/Workbench/index.js +3 -0
  91. package/dist/css/accordion.css +2 -0
  92. package/dist/css/activity-rail.css +4 -0
  93. package/dist/css/affix.css +2 -0
  94. package/dist/css/alert.css +2 -0
  95. package/dist/css/anchor.css +2 -0
  96. package/dist/css/app-shell.css +3 -1
  97. package/dist/css/approval-card.css +2 -0
  98. package/dist/css/aspect-ratio.css +2 -0
  99. package/dist/css/async-section.css +2 -0
  100. package/dist/css/avatar-group.css +2 -0
  101. package/dist/css/avatar.css +2 -0
  102. package/dist/css/back-to-top.css +2 -0
  103. package/dist/css/badge.css +2 -0
  104. package/dist/css/banner.css +2 -0
  105. package/dist/css/bottom-sheet.css +2 -0
  106. package/dist/css/breadcrumb.css +3 -1
  107. package/dist/css/button.css +3 -2
  108. package/dist/css/calendar.css +2 -0
  109. package/dist/css/card.css +2 -0
  110. package/dist/css/carousel.css +2 -0
  111. package/dist/css/cascader.css +2 -0
  112. package/dist/css/chart.css +2 -0
  113. package/dist/css/chat-container.css +2 -0
  114. package/dist/css/chat-input.css +2 -0
  115. package/dist/css/chat-message.css +2 -0
  116. package/dist/css/checkbox.css +3 -1
  117. package/dist/css/chip.css +2 -0
  118. package/dist/css/code-block.css +2 -0
  119. package/dist/css/collapsible.css +2 -0
  120. package/dist/css/color-picker.css +2 -0
  121. package/dist/css/combobox.css +2 -0
  122. package/dist/css/command.css +3 -1
  123. package/dist/css/confirm-dialog.css +2 -0
  124. package/dist/css/container.css +2 -0
  125. package/dist/css/context-menu.css +3 -1
  126. package/dist/css/conversation-list.css +2 -0
  127. package/dist/css/count-up.css +2 -0
  128. package/dist/css/data-table.css +2 -0
  129. package/dist/css/date-range-picker.css +3 -1
  130. package/dist/css/datepicker.css +2 -0
  131. package/dist/css/descriptions.css +2 -0
  132. package/dist/css/dialog.css +2 -0
  133. package/dist/css/diff-viewer.css +2 -0
  134. package/dist/css/disclosure.css +2 -0
  135. package/dist/css/divider.css +2 -0
  136. package/dist/css/drawer.css +3 -1
  137. package/dist/css/dropdown-menu.css +4 -2
  138. package/dist/css/ellipsis.css +2 -0
  139. package/dist/css/empty.css +2 -0
  140. package/dist/css/fieldset.css +4 -0
  141. package/dist/css/file-input.css +2 -0
  142. package/dist/css/file-preview.css +2 -0
  143. package/dist/css/flex.css +2 -0
  144. package/dist/css/float-button.css +2 -0
  145. package/dist/css/form.css +2 -0
  146. package/dist/css/grid.css +2 -0
  147. package/dist/css/hover-card.css +3 -1
  148. package/dist/css/icon.css +2 -0
  149. package/dist/css/image.css +2 -0
  150. package/dist/css/indicator.css +4 -0
  151. package/dist/css/inline-completion.css +2 -0
  152. package/dist/css/inline-edit.css +2 -0
  153. package/dist/css/input.css +3 -1
  154. package/dist/css/json-view.css +2 -0
  155. package/dist/css/kbd.css +2 -0
  156. package/dist/css/list.css +3 -1
  157. package/dist/css/loading-overlay.css +4 -0
  158. package/dist/css/log-viewer.css +2 -0
  159. package/dist/css/mark.css +4 -0
  160. package/dist/css/markdown-renderer.css +2 -0
  161. package/dist/css/masonry.css +2 -0
  162. package/dist/css/mentions.css +2 -0
  163. package/dist/css/menu.css +5 -3
  164. package/dist/css/model-picker.css +2 -0
  165. package/dist/css/navigation-bar.css +2 -0
  166. package/dist/css/number-input.css +2 -0
  167. package/dist/css/otp-input.css +2 -0
  168. package/dist/css/pagination.css +2 -0
  169. package/dist/css/password-input.css +3 -1
  170. package/dist/css/popover.css +3 -1
  171. package/dist/css/progress.css +2 -0
  172. package/dist/css/prompt-input.css +2 -0
  173. package/dist/css/qr-code.css +2 -0
  174. package/dist/css/radio.css +3 -1
  175. package/dist/css/rating.css +2 -0
  176. package/dist/css/resizable.css +3 -1
  177. package/dist/css/result.css +2 -0
  178. package/dist/css/scroll-area.css +2 -0
  179. package/dist/css/segmented.css +3 -1
  180. package/dist/css/select.css +2 -0
  181. package/dist/css/sidebar.css +3 -1
  182. package/dist/css/signature.css +2 -0
  183. package/dist/css/skeleton.css +2 -0
  184. package/dist/css/slider.css +3 -1
  185. package/dist/css/sources.css +2 -0
  186. package/dist/css/sparkline.css +4 -0
  187. package/dist/css/spinner.css +2 -0
  188. package/dist/css/spoiler.css +4 -0
  189. package/dist/css/stat.css +2 -0
  190. package/dist/css/status-bar.css +4 -0
  191. package/dist/css/step-timeline.css +2 -0
  192. package/dist/css/stepper.css +2 -0
  193. package/dist/css/streaming-text.css +2 -0
  194. package/dist/css/swipe-action.css +2 -0
  195. package/dist/css/switch.css +3 -1
  196. package/dist/css/tab-bar.css +4 -0
  197. package/dist/css/table.css +2 -0
  198. package/dist/css/tabs.css +5 -2
  199. package/dist/css/tag-group.css +2 -0
  200. package/dist/css/tag-input.css +2 -0
  201. package/dist/css/tag.css +3 -1
  202. package/dist/css/textarea.css +2 -0
  203. package/dist/css/thinking-indicator.css +2 -0
  204. package/dist/css/time-picker.css +2 -0
  205. package/dist/css/timeline.css +2 -0
  206. package/dist/css/toast.css +2 -0
  207. package/dist/css/toggle.css +2 -0
  208. package/dist/css/token-counter.css +2 -0
  209. package/dist/css/tokens.css +2 -0
  210. package/dist/css/tool-call-card.css +2 -0
  211. package/dist/css/toolbar.css +2 -0
  212. package/dist/css/tooltip.css +2 -0
  213. package/dist/css/tour.css +2 -0
  214. package/dist/css/transfer.css +2 -0
  215. package/dist/css/tree-select.css +2 -0
  216. package/dist/css/tree.css +3 -1
  217. package/dist/css/typography.css +2 -0
  218. package/dist/css/upload.css +2 -0
  219. package/dist/css/virtual-list.css +2 -0
  220. package/dist/css/visually-hidden.css +4 -0
  221. package/dist/css/watermark.css +2 -0
  222. package/dist/css/workbench.css +4 -0
  223. package/dist/css-manifest.json +202 -1
  224. package/dist/dates/adapter.js +9 -1
  225. package/dist/dates/buddhist.js +43 -0
  226. package/dist/dates/ethiopic.js +67 -0
  227. package/dist/dates/hebrew.js +95 -0
  228. package/dist/dates/japanese.js +41 -0
  229. package/dist/dates/persian.js +121 -0
  230. package/dist/dates/registry.js +14 -4
  231. package/dist/haze-ui.css +435 -29
  232. package/dist/headless/index.js +18 -17
  233. package/dist/hooks/useBusyPressable.js +10 -0
  234. package/dist/index.js +263 -241
  235. package/dist/mcp-docs.json +1073 -33
  236. package/dist/registry.json +256 -14
  237. package/dist/types/components/ActivityRail/ActivityRail.d.ts +30 -0
  238. package/dist/types/components/ActivityRail/index.d.ts +4 -0
  239. package/dist/types/components/Button/Button.d.ts +50 -5
  240. package/dist/types/components/Button/ButtonLink.d.ts +27 -15
  241. package/dist/types/components/Button/styles.d.ts +34 -0
  242. package/dist/types/components/Combobox/Combobox.d.ts +20 -2
  243. package/dist/types/components/Combobox/index.d.ts +1 -1
  244. package/dist/types/components/ConfigProvider/ConfigContext.d.ts +20 -0
  245. package/dist/types/components/ConfirmDialog/ConfirmDialog.d.ts +1 -1
  246. package/dist/types/components/ConfirmDialog/confirm.d.ts +33 -0
  247. package/dist/types/components/ConfirmDialog/index.d.ts +2 -0
  248. package/dist/types/components/ConversationList/ConversationList.d.ts +10 -1
  249. package/dist/types/components/DateTimePicker/DateTimePicker.d.ts +36 -0
  250. package/dist/types/components/DateTimePicker/index.d.ts +2 -0
  251. package/dist/types/components/Datepicker/Datepicker.d.ts +3 -3
  252. package/dist/types/components/Datepicker/DatepickerCore.d.ts +3 -3
  253. package/dist/types/components/Drawer/Drawer.d.ts +15 -2
  254. package/dist/types/components/Drawer/index.d.ts +1 -1
  255. package/dist/types/components/Fieldset/Fieldset.d.ts +16 -0
  256. package/dist/types/components/Fieldset/index.d.ts +2 -0
  257. package/dist/types/components/Highlight/Highlight.d.ts +27 -0
  258. package/dist/types/components/Highlight/index.d.ts +2 -0
  259. package/dist/types/components/Indicator/Indicator.d.ts +24 -0
  260. package/dist/types/components/Indicator/index.d.ts +2 -0
  261. package/dist/types/components/Input/Input.d.ts +8 -2
  262. package/dist/types/components/Input/InputCore.d.ts +11 -2
  263. package/dist/types/components/List/List.d.ts +10 -1
  264. package/dist/types/components/LoadingOverlay/LoadingOverlay.d.ts +25 -0
  265. package/dist/types/components/LoadingOverlay/index.d.ts +2 -0
  266. package/dist/types/components/LocaleProvider/locale.d.ts +11 -0
  267. package/dist/types/components/LogViewer/LogViewer.d.ts +10 -1
  268. package/dist/types/components/Mark/Mark.d.ts +12 -0
  269. package/dist/types/components/Mark/index.d.ts +2 -0
  270. package/dist/types/components/Menu/MenuItem.d.ts +15 -4
  271. package/dist/types/components/NumberFormatter/NumberFormatter.d.ts +23 -0
  272. package/dist/types/components/NumberFormatter/index.d.ts +2 -0
  273. package/dist/types/components/Resizable/Resizable.d.ts +24 -7
  274. package/dist/types/components/Resizable/index.d.ts +1 -1
  275. package/dist/types/components/Select/Select.d.ts +23 -2
  276. package/dist/types/components/Select/SelectCore.d.ts +4 -1
  277. package/dist/types/components/Select/SelectFloating.d.ts +6 -1
  278. package/dist/types/components/Select/index.d.ts +1 -1
  279. package/dist/types/components/Sparkline/Sparkline.d.ts +31 -0
  280. package/dist/types/components/Sparkline/index.d.ts +3 -0
  281. package/dist/types/components/Sparkline/sparkline-styles.d.ts +26 -0
  282. package/dist/types/components/Spoiler/Spoiler.d.ts +20 -0
  283. package/dist/types/components/Spoiler/index.d.ts +2 -0
  284. package/dist/types/components/StatusBar/StatusBar.d.ts +18 -0
  285. package/dist/types/components/StatusBar/index.d.ts +3 -0
  286. package/dist/types/components/TabBar/TabBar.d.ts +23 -0
  287. package/dist/types/components/TabBar/index.d.ts +4 -0
  288. package/dist/types/components/Tabs/SortableTabList.d.ts +46 -0
  289. package/dist/types/components/Tabs/Tab.d.ts +54 -3
  290. package/dist/types/components/Tabs/TabList.d.ts +26 -2
  291. package/dist/types/components/Tabs/edge-scroll.d.ts +17 -0
  292. package/dist/types/components/Tabs/index.d.ts +3 -1
  293. package/dist/types/components/Tabs/tab-metas.d.ts +20 -0
  294. package/dist/types/components/TagGroup/SortableTagGroup.d.ts +5 -1
  295. package/dist/types/components/TagGroup/TagGroup.d.ts +24 -2
  296. package/dist/types/components/TagGroup/index.d.ts +1 -1
  297. package/dist/types/components/Toast/index.d.ts +2 -2
  298. package/dist/types/components/Toast/useToast.d.ts +1 -1
  299. package/dist/types/components/VirtualList/VirtualList.d.ts +20 -1
  300. package/dist/types/components/VisuallyHidden/VisuallyHidden.d.ts +4 -0
  301. package/dist/types/components/VisuallyHidden/index.d.ts +2 -0
  302. package/dist/types/components/Workbench/Workbench.d.ts +50 -0
  303. package/dist/types/components/Workbench/index.d.ts +2 -0
  304. package/dist/types/dates/adapter.d.ts +33 -6
  305. package/dist/types/dates/buddhist.d.ts +14 -0
  306. package/dist/types/dates/ethiopic.d.ts +15 -0
  307. package/dist/types/dates/hebrew.d.ts +19 -0
  308. package/dist/types/dates/index.d.ts +5 -0
  309. package/dist/types/dates/japanese.d.ts +16 -0
  310. package/dist/types/dates/persian.d.ts +18 -0
  311. package/dist/types/dates/registry.d.ts +1 -1
  312. package/dist/types/headless/index.d.ts +9 -0
  313. package/dist/types/hooks/index.d.ts +13 -0
  314. package/dist/types/hooks/useBusyPressable.d.ts +33 -0
  315. package/dist/types/hooks/useElementSize.d.ts +38 -0
  316. package/dist/types/hooks/useIdle.d.ts +45 -0
  317. package/dist/types/hooks/useMutationObserver.d.ts +35 -0
  318. package/dist/types/hooks/useNetwork.d.ts +31 -0
  319. package/dist/types/hooks/useOrientation.d.ts +23 -0
  320. package/dist/types/hooks/useResizeObserver.d.ts +48 -0
  321. package/dist/types/index.d.ts +37 -9
  322. package/dist/types/utils/sortable.d.ts +8 -1
  323. package/dist/types/utils/use-end-reached.d.ts +56 -0
  324. package/dist/types/utils/viewport.d.ts +12 -0
  325. package/dist/utils/sortable-shared.js +3 -3
  326. package/dist/utils/sortable.js +15 -14
  327. package/dist/utils/use-end-reached.js +46 -0
  328. package/dist/utils/viewport.js +20 -0
  329. package/package.json +13 -5
  330. /package/dist/types/components/Toast/{toast.d.ts → toast-channel.d.ts} +0 -0
@@ -1,5 +1,5 @@
1
1
  {
2
- "generatedAt": "2026-09-14T15:54:16.071Z",
2
+ "generatedAt": "2026-10-11T16:55:31.959Z",
3
3
  "components": {
4
4
  "Accordion": {
5
5
  "cssFamily": "accordion",
@@ -50,6 +50,86 @@
50
50
  ]
51
51
  }
52
52
  },
53
+ "ActivityRail": {
54
+ "cssFamily": "activity-rail",
55
+ "importStatement": "import { ActivityRail, ActivityRailItem } from 'haze-ui';\nimport 'haze-ui/css/tokens.css';\nimport 'haze-ui/css/activity-rail.css';",
56
+ "peerDeps": [],
57
+ "description": "VSCode-style vertical icon rail (`nav`): 44px items with icon/label/badge/active indicator, tooltip labels and `slot=\"end\"` bottom pinning.",
58
+ "props": {
59
+ "ActivityRailItemProps": [
60
+ {
61
+ "name": "icon",
62
+ "type": "ReactNode",
63
+ "required": true,
64
+ "description": "Item icon (rendered centered in the 44px target)"
65
+ },
66
+ {
67
+ "name": "label",
68
+ "type": "string",
69
+ "required": true,
70
+ "description": "Item name — drives the tooltip and the accessible name"
71
+ },
72
+ {
73
+ "name": "badge",
74
+ "type": "ReactNode",
75
+ "required": false,
76
+ "description": "Overlay badge (usually <Badge/>) — counters like pending reviews"
77
+ },
78
+ {
79
+ "name": "active",
80
+ "type": "boolean",
81
+ "required": false,
82
+ "default": "false",
83
+ "description": "Marks the current view: aria-current + the 2px rail-side indicator"
84
+ },
85
+ {
86
+ "name": "onSelect",
87
+ "type": "() => void",
88
+ "required": false,
89
+ "description": "Selection callback"
90
+ },
91
+ {
92
+ "name": "slot",
93
+ "type": "'start' | 'end'",
94
+ "required": false,
95
+ "default": "'start'",
96
+ "description": "end slots pin to the rail bottom (settings/account entries)"
97
+ },
98
+ {
99
+ "name": "...rest",
100
+ "type": "button attributes",
101
+ "required": false,
102
+ "description": "Native button props (type=button is built in)"
103
+ }
104
+ ],
105
+ "ActivityRailProps": [
106
+ {
107
+ "name": "children",
108
+ "type": "ReactNode",
109
+ "required": true,
110
+ "description": "ActivityRailItem elements"
111
+ },
112
+ {
113
+ "name": "orientation",
114
+ "type": "'vertical' | 'horizontal'",
115
+ "required": false,
116
+ "description": ""
117
+ },
118
+ {
119
+ "name": "className",
120
+ "type": "string",
121
+ "required": false,
122
+ "description": "Additional CSS class"
123
+ },
124
+ {
125
+ "name": "...rest",
126
+ "type": "nav attributes",
127
+ "required": false,
128
+ "description": "Renders a nav landmark — pass aria-label via rest"
129
+ }
130
+ ]
131
+ }
132
+ },
53
133
  "Affix": {
54
134
  "cssFamily": "affix",
55
135
  "importStatement": "import { Affix } from 'haze-ui';\nimport 'haze-ui/css/tokens.css';\nimport 'haze-ui/css/affix.css';",
@@ -700,6 +780,38 @@
700
780
  "type": "boolean",
701
781
  "required": false,
702
782
  "description": ""
783
+ },
784
+ {
785
+ "name": "loading",
786
+ "type": "boolean | { icon?: ReactNode; text?: ReactNode; }",
787
+ "required": false,
788
+ "description": ""
789
+ }
790
+ ],
791
+ "ButtonOwnProps": [
792
+ {
793
+ "name": "variant",
794
+ "type": "'solid' | 'outline' | 'ghost'",
795
+ "required": false,
796
+ "description": ""
797
+ },
798
+ {
799
+ "name": "size",
800
+ "type": "'sm' | 'md' | 'lg'",
801
+ "required": false,
802
+ "description": ""
803
+ },
804
+ {
805
+ "name": "square",
806
+ "type": "boolean",
807
+ "required": false,
808
+ "description": ""
809
+ },
810
+ {
811
+ "name": "loading",
812
+ "type": "boolean | { icon?: ReactNode; text?: ReactNode; }",
813
+ "required": false,
814
+ "description": ""
703
815
  }
704
816
  ],
705
817
  "ButtonProps": [
@@ -724,6 +836,18 @@
724
836
  "default": "false",
725
837
  "description": "Equal padding on all sides, ideal for icon-only buttons"
726
838
  },
839
+ {
840
+ "name": "loading",
841
+ "type": "boolean | { icon?: ReactNode; text?: ReactNode; }",
842
+ "required": false,
843
+ "description": ""
844
+ },
845
+ {
846
+ "name": "as",
847
+ "type": "T",
848
+ "required": false,
849
+ "description": ""
850
+ },
727
851
  {
728
852
  "name": "disabled",
729
853
  "type": "boolean",
@@ -1057,7 +1181,7 @@
1057
1181
  },
1058
1182
  {
1059
1183
  "name": "layout",
1060
- "type": "'horizontal' | 'vertical'",
1184
+ "type": "'vertical' | 'horizontal'",
1061
1185
  "required": false,
1062
1186
  "description": ""
1063
1187
  },
@@ -1640,7 +1764,7 @@
1640
1764
  },
1641
1765
  {
1642
1766
  "name": "ref",
1643
- "type": "Ref<HTMLDivElement | HTMLButtonElement>",
1767
+ "type": "Ref<HTMLButtonElement | HTMLDivElement>",
1644
1768
  "required": false,
1645
1769
  "description": ""
1646
1770
  }
@@ -1832,6 +1956,12 @@
1832
1956
  "required": false,
1833
1957
  "description": "Additional CSS class"
1834
1958
  },
1959
+ {
1960
+ "name": "classNames",
1961
+ "type": "ComboboxClassNames",
1962
+ "required": false,
1963
+ "description": ""
1964
+ },
1835
1965
  {
1836
1966
  "name": "ref",
1837
1967
  "type": "Ref<HTMLInputElement>",
@@ -2067,7 +2197,7 @@
2067
2197
  },
2068
2198
  "ConfirmDialog": {
2069
2199
  "cssFamily": "confirm-dialog",
2070
- "importStatement": "import { ConfirmDialog } from 'haze-ui';\nimport 'haze-ui/css/tokens.css';\nimport 'haze-ui/css/confirm-dialog.css';",
2200
+ "importStatement": "import { ConfirmDialog, confirm } from 'haze-ui';\nimport 'haze-ui/css/tokens.css';\nimport 'haze-ui/css/confirm-dialog.css';",
2071
2201
  "peerDeps": [],
2072
2202
  "description": "Ready-made confirm dialog with confirm/cancel actions and a danger variant.",
2073
2203
  "props": {
@@ -2105,7 +2235,7 @@
2105
2235
  {
2106
2236
  "name": "children",
2107
2237
  "type": "ReactNode",
2108
- "required": true,
2238
+ "required": false,
2109
2239
  "description": "Dialog body content"
2110
2240
  },
2111
2241
  {
@@ -2316,6 +2446,12 @@
2316
2446
  "required": true,
2317
2447
  "description": "ConversationItem elements"
2318
2448
  },
2449
+ {
2450
+ "name": "onLoadMore",
2451
+ "type": "() => void",
2452
+ "required": false,
2453
+ "description": ""
2454
+ },
2319
2455
  {
2320
2456
  "name": "className",
2321
2457
  "type": "string",
@@ -2762,6 +2898,94 @@
2762
2898
  ]
2763
2899
  }
2764
2900
  },
2901
+ "DateTimePicker": {
2902
+ "cssFamily": "date-time-picker",
2903
+ "importStatement": "import { DateTimePicker } from 'haze-ui';\nimport 'haze-ui/css/tokens.css';\nimport 'haze-ui/css/date-time-picker.css';",
2904
+ "peerDeps": [],
2905
+ "description": "",
2906
+ "props": {
2907
+ "DateTimePickerProps": [
2908
+ {
2909
+ "name": "value",
2910
+ "type": "ControlOrValue<string>",
2911
+ "required": false,
2912
+ "description": ""
2913
+ },
2914
+ {
2915
+ "name": "open",
2916
+ "type": "ControlOrValue<boolean>",
2917
+ "required": false,
2918
+ "description": ""
2919
+ },
2920
+ {
2921
+ "name": "min",
2922
+ "type": "string",
2923
+ "required": false,
2924
+ "description": ""
2925
+ },
2926
+ {
2927
+ "name": "max",
2928
+ "type": "string",
2929
+ "required": false,
2930
+ "description": ""
2931
+ },
2932
+ {
2933
+ "name": "disabledDate",
2934
+ "type": "(date: Date) => boolean",
2935
+ "required": false,
2936
+ "description": ""
2937
+ },
2938
+ {
2939
+ "name": "presets",
2940
+ "type": "DatepickerPreset[]",
2941
+ "required": false,
2942
+ "description": ""
2943
+ },
2944
+ {
2945
+ "name": "showSeconds",
2946
+ "type": "boolean",
2947
+ "required": false,
2948
+ "description": ""
2949
+ },
2950
+ {
2951
+ "name": "locale",
2952
+ "type": "string",
2953
+ "required": false,
2954
+ "description": ""
2955
+ },
2956
+ {
2957
+ "name": "weekStartsOn",
2958
+ "type": "0 | 1",
2959
+ "required": false,
2960
+ "description": ""
2961
+ },
2962
+ {
2963
+ "name": "cellRender",
2964
+ "type": "CalendarCellRender",
2965
+ "required": false,
2966
+ "description": ""
2967
+ },
2968
+ {
2969
+ "name": "placeholder",
2970
+ "type": "string",
2971
+ "required": false,
2972
+ "description": ""
2973
+ },
2974
+ {
2975
+ "name": "className",
2976
+ "type": "string",
2977
+ "required": false,
2978
+ "description": ""
2979
+ },
2980
+ {
2981
+ "name": "ref",
2982
+ "type": "Ref<HTMLInputElement>",
2983
+ "required": false,
2984
+ "description": ""
2985
+ }
2986
+ ]
2987
+ }
2988
+ },
2765
2989
  "Datepicker": {
2766
2990
  "cssFamily": "datepicker",
2767
2991
  "importStatement": "import { Datepicker, DatepickerCore } from 'haze-ui';\nimport 'haze-ui/css/tokens.css';\nimport 'haze-ui/css/datepicker.css';",
@@ -3151,7 +3375,7 @@
3151
3375
  "DividerProps": [
3152
3376
  {
3153
3377
  "name": "orientation",
3154
- "type": "'horizontal' | 'vertical'",
3378
+ "type": "'vertical' | 'horizontal'",
3155
3379
  "required": false,
3156
3380
  "default": "'horizontal'",
3157
3381
  "description": "Direction of the divider"
@@ -3204,6 +3428,12 @@
3204
3428
  "required": false,
3205
3429
  "description": "Additional CSS class"
3206
3430
  },
3431
+ {
3432
+ "name": "classNames",
3433
+ "type": "DrawerClassNames",
3434
+ "required": false,
3435
+ "description": ""
3436
+ },
3207
3437
  {
3208
3438
  "name": "children",
3209
3439
  "type": "ReactNode",
@@ -3652,6 +3882,28 @@
3652
3882
  ]
3653
3883
  }
3654
3884
  },
3885
+ "Fieldset": {
3886
+ "cssFamily": "fieldset",
3887
+ "importStatement": "import { Fieldset } from 'haze-ui';\nimport 'haze-ui/css/tokens.css';\nimport 'haze-ui/css/fieldset.css';",
3888
+ "peerDeps": [],
3889
+ "description": "Semantic form grouping: native `fieldset`+`legend` (group named by the legend), `disabled` disables every control inside.",
3890
+ "props": {
3891
+ "FieldsetProps": [
3892
+ {
3893
+ "name": "legend",
3894
+ "type": "ReactNode",
3895
+ "required": false,
3896
+ "description": ""
3897
+ },
3898
+ {
3899
+ "name": "disabled",
3900
+ "type": "boolean",
3901
+ "required": false,
3902
+ "description": ""
3903
+ }
3904
+ ]
3905
+ }
3906
+ },
3655
3907
  "FileInput": {
3656
3908
  "cssFamily": "file-input",
3657
3909
  "importStatement": "import { FileInput } from 'haze-ui';\nimport 'haze-ui/css/tokens.css';\nimport 'haze-ui/css/file-input.css';",
@@ -4032,6 +4284,40 @@
4032
4284
  ]
4033
4285
  }
4034
4286
  },
4287
+ "Highlight": {
4288
+ "cssFamily": "highlight",
4289
+ "importStatement": "import { Highlight } from 'haze-ui';\nimport 'haze-ui/css/tokens.css';\nimport 'haze-ui/css/highlight.css';",
4290
+ "peerDeps": [],
4291
+ "description": "",
4292
+ "props": {
4293
+ "HighlightProps": [
4294
+ {
4295
+ "name": "children",
4296
+ "type": "string",
4297
+ "required": true,
4298
+ "description": ""
4299
+ },
4300
+ {
4301
+ "name": "highlight",
4302
+ "type": "string | string[]",
4303
+ "required": true,
4304
+ "description": ""
4305
+ },
4306
+ {
4307
+ "name": "caseSensitive",
4308
+ "type": "boolean",
4309
+ "required": false,
4310
+ "description": ""
4311
+ },
4312
+ {
4313
+ "name": "color",
4314
+ "type": "'success' | 'warning' | 'danger' | 'primary'",
4315
+ "required": false,
4316
+ "description": ""
4317
+ }
4318
+ ]
4319
+ }
4320
+ },
4035
4321
  "HoverCard": {
4036
4322
  "cssFamily": "hover-card",
4037
4323
  "importStatement": "import { HoverCard } from 'haze-ui';\nimport 'haze-ui/css/tokens.css';\nimport 'haze-ui/css/hover-card.css';",
@@ -4210,27 +4496,67 @@
4210
4496
  ]
4211
4497
  }
4212
4498
  },
4213
- "InlineCompletion": {
4214
- "cssFamily": "inline-completion",
4215
- "importStatement": "import { InlineCompletion } from 'haze-ui';\nimport 'haze-ui/css/tokens.css';\nimport 'haze-ui/css/inline-completion.css';",
4499
+ "Indicator": {
4500
+ "cssFamily": "indicator",
4501
+ "importStatement": "import { Indicator } from 'haze-ui';\nimport 'haze-ui/css/tokens.css';\nimport 'haze-ui/css/indicator.css';",
4216
4502
  "peerDeps": [],
4217
- "description": "Ghost-text completion overlay for input/textarea: Tab accepts the suggestion, Escape dismisses it.",
4503
+ "description": "Corner badge attached to a host element (avatar, icon button): dot or count label, tone + corner position, zero-badge hides unless `showZero`.",
4218
4504
  "props": {
4219
- "InlineCompletionProps": [
4505
+ "IndicatorProps": [
4220
4506
  {
4221
- "name": "suggestion",
4222
- "type": "string",
4507
+ "name": "label",
4508
+ "type": "ReactNode",
4223
4509
  "required": false,
4224
4510
  "description": ""
4225
4511
  },
4226
4512
  {
4227
- "name": "value",
4228
- "type": "ControlOrValue<string>",
4513
+ "name": "showZero",
4514
+ "type": "boolean",
4229
4515
  "required": false,
4230
4516
  "description": ""
4231
4517
  },
4232
4518
  {
4233
- "name": "onAccept",
4519
+ "name": "color",
4520
+ "type": "'success' | 'warning' | 'danger' | 'primary'",
4521
+ "required": false,
4522
+ "description": ""
4523
+ },
4524
+ {
4525
+ "name": "position",
4526
+ "type": "'bottom-end' | 'top-start' | 'top-end' | 'bottom-start'",
4527
+ "required": false,
4528
+ "description": ""
4529
+ },
4530
+ {
4531
+ "name": "children",
4532
+ "type": "ReactNode",
4533
+ "required": true,
4534
+ "description": ""
4535
+ }
4536
+ ]
4537
+ }
4538
+ },
4539
+ "InlineCompletion": {
4540
+ "cssFamily": "inline-completion",
4541
+ "importStatement": "import { InlineCompletion } from 'haze-ui';\nimport 'haze-ui/css/tokens.css';\nimport 'haze-ui/css/inline-completion.css';",
4542
+ "peerDeps": [],
4543
+ "description": "Ghost-text completion overlay for input/textarea: Tab accepts the suggestion, Escape dismisses it.",
4544
+ "props": {
4545
+ "InlineCompletionProps": [
4546
+ {
4547
+ "name": "suggestion",
4548
+ "type": "string",
4549
+ "required": false,
4550
+ "description": ""
4551
+ },
4552
+ {
4553
+ "name": "value",
4554
+ "type": "ControlOrValue<string>",
4555
+ "required": false,
4556
+ "description": ""
4557
+ },
4558
+ {
4559
+ "name": "onAccept",
4234
4560
  "type": "() => void",
4235
4561
  "required": false,
4236
4562
  "description": ""
@@ -4371,6 +4697,18 @@
4371
4697
  "required": false,
4372
4698
  "description": ""
4373
4699
  },
4700
+ {
4701
+ "name": "leftSection",
4702
+ "type": "ReactNode",
4703
+ "required": false,
4704
+ "description": ""
4705
+ },
4706
+ {
4707
+ "name": "rightSection",
4708
+ "type": "ReactNode",
4709
+ "required": false,
4710
+ "description": ""
4711
+ },
4374
4712
  {
4375
4713
  "name": "ref",
4376
4714
  "type": "Ref<HTMLInputElement>",
@@ -4392,6 +4730,18 @@
4392
4730
  "default": "'md'",
4393
4731
  "description": "Size of the input"
4394
4732
  },
4733
+ {
4734
+ "name": "leftSection",
4735
+ "type": "ReactNode",
4736
+ "required": false,
4737
+ "description": ""
4738
+ },
4739
+ {
4740
+ "name": "rightSection",
4741
+ "type": "ReactNode",
4742
+ "required": false,
4743
+ "description": ""
4744
+ },
4395
4745
  {
4396
4746
  "name": "ref",
4397
4747
  "type": "Ref<HTMLInputElement>",
@@ -4515,6 +4865,52 @@
4515
4865
  "type": "ReactNode",
4516
4866
  "required": true,
4517
4867
  "description": "ListItem elements"
4868
+ },
4869
+ {
4870
+ "name": "loadMore",
4871
+ "type": "ReactNode",
4872
+ "required": false,
4873
+ "description": ""
4874
+ }
4875
+ ]
4876
+ }
4877
+ },
4878
+ "LoadingOverlay": {
4879
+ "cssFamily": "loading-overlay",
4880
+ "importStatement": "import { LoadingOverlay } from 'haze-ui';\nimport 'haze-ui/css/tokens.css';\nimport 'haze-ui/css/loading-overlay.css';",
4881
+ "peerDeps": [],
4882
+ "description": "Container-level loading state: dims content and centers a spinner (or custom loader) above it, `aria-busy` mirrors the phase.",
4883
+ "props": {
4884
+ "LoadingOverlayProps": [
4885
+ {
4886
+ "name": "visible",
4887
+ "type": "boolean",
4888
+ "required": false,
4889
+ "description": ""
4890
+ },
4891
+ {
4892
+ "name": "label",
4893
+ "type": "ReactNode",
4894
+ "required": false,
4895
+ "description": ""
4896
+ },
4897
+ {
4898
+ "name": "loader",
4899
+ "type": "ReactNode",
4900
+ "required": false,
4901
+ "description": ""
4902
+ },
4903
+ {
4904
+ "name": "spinnerSize",
4905
+ "type": "'sm' | 'md' | 'lg'",
4906
+ "required": false,
4907
+ "description": ""
4908
+ },
4909
+ {
4910
+ "name": "children",
4911
+ "type": "ReactNode",
4912
+ "required": true,
4913
+ "description": ""
4518
4914
  }
4519
4915
  ]
4520
4916
  }
@@ -4572,6 +4968,12 @@
4572
4968
  "required": false,
4573
4969
  "description": "Active level filter (controllable)"
4574
4970
  },
4971
+ {
4972
+ "name": "onLoadMore",
4973
+ "type": "() => void",
4974
+ "required": false,
4975
+ "description": ""
4976
+ },
4575
4977
  {
4576
4978
  "name": "className",
4577
4979
  "type": "string",
@@ -4601,6 +5003,22 @@
4601
5003
  ]
4602
5004
  }
4603
5005
  },
5006
+ "Mark": {
5007
+ "cssFamily": "mark",
5008
+ "importStatement": "import { Mark } from 'haze-ui';\nimport 'haze-ui/css/tokens.css';\nimport 'haze-ui/css/mark.css';",
5009
+ "peerDeps": [],
5010
+ "description": "Text-level highlight — semantic `<mark>` skinned with the status tokens (`warning`/`primary`/`success`/`danger`).",
5011
+ "props": {
5012
+ "MarkProps": [
5013
+ {
5014
+ "name": "color",
5015
+ "type": "'success' | 'warning' | 'danger' | 'primary'",
5016
+ "required": false,
5017
+ "description": ""
5018
+ }
5019
+ ]
5020
+ }
5021
+ },
4604
5022
  "MarkdownRenderer": {
4605
5023
  "cssFamily": "markdown-renderer",
4606
5024
  "importStatement": "import { MarkdownRenderer } from 'haze-ui';\nimport 'haze-ui/css/tokens.css';\nimport 'haze-ui/css/markdown-renderer.css';",
@@ -4823,6 +5241,50 @@
4823
5241
  "description": ""
4824
5242
  }
4825
5243
  ],
5244
+ "MenuItemOwnProps": [
5245
+ {
5246
+ "name": "onSelect",
5247
+ "type": "() => void",
5248
+ "required": false,
5249
+ "description": ""
5250
+ },
5251
+ {
5252
+ "name": "disabled",
5253
+ "type": "boolean",
5254
+ "required": false,
5255
+ "description": ""
5256
+ },
5257
+ {
5258
+ "name": "danger",
5259
+ "type": "boolean",
5260
+ "required": false,
5261
+ "description": ""
5262
+ },
5263
+ {
5264
+ "name": "icon",
5265
+ "type": "ReactNode",
5266
+ "required": false,
5267
+ "description": ""
5268
+ },
5269
+ {
5270
+ "name": "kbdLabel",
5271
+ "type": "ReactNode",
5272
+ "required": false,
5273
+ "description": ""
5274
+ },
5275
+ {
5276
+ "name": "className",
5277
+ "type": "string",
5278
+ "required": false,
5279
+ "description": ""
5280
+ },
5281
+ {
5282
+ "name": "children",
5283
+ "type": "ReactNode",
5284
+ "required": true,
5285
+ "description": ""
5286
+ }
5287
+ ],
4826
5288
  "MenuItemProps": [
4827
5289
  {
4828
5290
  "name": "onSelect",
@@ -4866,6 +5328,12 @@
4866
5328
  "type": "ReactNode",
4867
5329
  "required": true,
4868
5330
  "description": "Item content"
5331
+ },
5332
+ {
5333
+ "name": "as",
5334
+ "type": "T",
5335
+ "required": false,
5336
+ "description": ""
4869
5337
  }
4870
5338
  ],
4871
5339
  "MenuProps": [
@@ -5148,6 +5616,46 @@
5148
5616
  ]
5149
5617
  }
5150
5618
  },
5619
+ "NumberFormatter": {
5620
+ "cssFamily": "number-formatter",
5621
+ "importStatement": "import { NumberFormatter } from 'haze-ui';\nimport 'haze-ui/css/tokens.css';\nimport 'haze-ui/css/number-formatter.css';",
5622
+ "peerDeps": [],
5623
+ "description": "",
5624
+ "props": {
5625
+ "NumberFormatterProps": [
5626
+ {
5627
+ "name": "value",
5628
+ "type": "number",
5629
+ "required": true,
5630
+ "description": ""
5631
+ },
5632
+ {
5633
+ "name": "formatOptions",
5634
+ "type": "NumberFormatOptions",
5635
+ "required": false,
5636
+ "description": ""
5637
+ },
5638
+ {
5639
+ "name": "locale",
5640
+ "type": "string",
5641
+ "required": false,
5642
+ "description": ""
5643
+ },
5644
+ {
5645
+ "name": "prefix",
5646
+ "type": "string",
5647
+ "required": false,
5648
+ "description": ""
5649
+ },
5650
+ {
5651
+ "name": "suffix",
5652
+ "type": "string",
5653
+ "required": false,
5654
+ "description": ""
5655
+ }
5656
+ ]
5657
+ }
5658
+ },
5151
5659
  "NumberInput": {
5152
5660
  "cssFamily": "number-input",
5153
5661
  "importStatement": "import { NumberInput, NumberInputCore } from 'haze-ui';\nimport 'haze-ui/css/tokens.css';\nimport 'haze-ui/css/number-input.css';",
@@ -5936,7 +6444,7 @@
5936
6444
  "ResizableGroupProps": [
5937
6445
  {
5938
6446
  "name": "direction",
5939
- "type": "'horizontal' | 'vertical'",
6447
+ "type": "'vertical' | 'horizontal'",
5940
6448
  "required": false,
5941
6449
  "default": "'horizontal'",
5942
6450
  "description": "Layout direction"
@@ -5953,6 +6461,18 @@
5953
6461
  "required": false,
5954
6462
  "description": "Additional CSS class"
5955
6463
  },
6464
+ {
6465
+ "name": "style",
6466
+ "type": "CSSProperties",
6467
+ "required": false,
6468
+ "description": ""
6469
+ },
6470
+ {
6471
+ "name": "onResizeCommit",
6472
+ "type": "(sizes: Record<string, number>) => void",
6473
+ "required": false,
6474
+ "description": "Fires once when a drag or keyboard resize settles, mapping fixed-panel ids to their committed px sizes — the persistence hook (write it back into a store or Control)"
6475
+ },
5956
6476
  {
5957
6477
  "name": "SplitterGroup · SplitterPanel · SplitterHandle",
5958
6478
  "type": "aliases",
@@ -5965,16 +6485,60 @@
5965
6485
  "name": "className",
5966
6486
  "type": "string",
5967
6487
  "required": false,
5968
- "description": ""
6488
+ "description": "Additional CSS class"
6489
+ },
6490
+ {
6491
+ "name": "...rest",
6492
+ "type": "div attributes",
6493
+ "required": false,
6494
+ "description": "role=separator with aria-orientation/valuenow is built in; arrow keys resize in 16px steps, Enter or double-click resets the adjacent panel to its defaultSize, and the hit area widens to 44px on coarse pointers"
5969
6495
  }
5970
6496
  ],
5971
6497
  "ResizablePanelProps": [
6498
+ {
6499
+ "name": "id",
6500
+ "type": "string",
6501
+ "required": true,
6502
+ "description": "Stable panel identity — keys the sizes map reported by onResizeCommit; keep it stable across renders for persistence"
6503
+ },
5972
6504
  {
5973
6505
  "name": "defaultSize",
5974
6506
  "type": "number",
5975
6507
  "required": false,
5976
- "default": "50",
5977
- "description": "Default size as percentage"
6508
+ "description": "Initial size in px. Omit to make the panel flexible (it absorbs the remaining space); changing this prop after a resize re-pins the panel outside gestures"
6509
+ },
6510
+ {
6511
+ "name": "minSize",
6512
+ "type": "number",
6513
+ "required": false,
6514
+ "default": "—",
6515
+ "description": "Clamp in px enforced by both pointer drags and keyboard steps"
6516
+ },
6517
+ {
6518
+ "name": "maxSize",
6519
+ "type": "number",
6520
+ "required": false,
6521
+ "default": "—",
6522
+ "description": "Clamp in px enforced by both pointer drags and keyboard steps"
6523
+ },
6524
+ {
6525
+ "name": "collapsible",
6526
+ "type": "boolean",
6527
+ "required": false,
6528
+ "default": "false",
6529
+ "description": "Enables collapse semantics: the panel collapses to zero width/height and its handle becomes a keyboard-reachable expander"
6530
+ },
6531
+ {
6532
+ "name": "collapsed",
6533
+ "type": "ControlOrValue<boolean>",
6534
+ "required": false,
6535
+ "description": "Controlled/uncontrolled collapsed state — survives breakpoint flips (desktop dock ⇄ mobile overlay) as one source of truth"
6536
+ },
6537
+ {
6538
+ "name": "onCollapsedChange",
6539
+ "type": "(collapsed: boolean) => void",
6540
+ "required": false,
6541
+ "description": "Notifies on collapse toggles (handle expander, resets crossing the threshold)"
5978
6542
  },
5979
6543
  {
5980
6544
  "name": "children",
@@ -6263,6 +6827,12 @@
6263
6827
  "required": false,
6264
6828
  "description": ""
6265
6829
  },
6830
+ {
6831
+ "name": "classNames",
6832
+ "type": "SelectClassNames",
6833
+ "required": false,
6834
+ "description": ""
6835
+ },
6266
6836
  {
6267
6837
  "name": "ref",
6268
6838
  "type": "Ref<HTMLButtonElement | HTMLSelectElement>",
@@ -6307,6 +6877,12 @@
6307
6877
  "required": false,
6308
6878
  "description": ""
6309
6879
  },
6880
+ {
6881
+ "name": "classNames",
6882
+ "type": "SelectClassNames",
6883
+ "required": false,
6884
+ "description": ""
6885
+ },
6310
6886
  {
6311
6887
  "name": "searchable",
6312
6888
  "type": "boolean",
@@ -6424,6 +7000,12 @@
6424
7000
  "default": "'md'",
6425
7001
  "description": "Size of the select"
6426
7002
  },
7003
+ {
7004
+ "name": "classNames",
7005
+ "type": "SelectClassNames",
7006
+ "required": false,
7007
+ "description": ""
7008
+ },
6427
7009
  {
6428
7010
  "name": "ref",
6429
7011
  "type": "Ref<HTMLButtonElement | HTMLSelectElement>",
@@ -6897,6 +7479,52 @@
6897
7479
  ]
6898
7480
  }
6899
7481
  },
7482
+ "Sparkline": {
7483
+ "cssFamily": "sparkline",
7484
+ "importStatement": "import { Sparkline, sparklineToneStrokes, sparklineToneFills } from 'haze-ui';\nimport 'haze-ui/css/tokens.css';\nimport 'haze-ui/css/sparkline.css';",
7485
+ "peerDeps": [],
7486
+ "description": "Inline-SVG mini trend chart (line/area variants, tone colors); stateless, recharts-free and RSC-safe.",
7487
+ "props": {
7488
+ "SparklineProps": [
7489
+ {
7490
+ "name": "data",
7491
+ "type": "readonly number[]",
7492
+ "required": true,
7493
+ "description": ""
7494
+ },
7495
+ {
7496
+ "name": "width",
7497
+ "type": "number",
7498
+ "required": false,
7499
+ "description": ""
7500
+ },
7501
+ {
7502
+ "name": "height",
7503
+ "type": "number",
7504
+ "required": false,
7505
+ "description": ""
7506
+ },
7507
+ {
7508
+ "name": "variant",
7509
+ "type": "'area' | 'line'",
7510
+ "required": false,
7511
+ "description": ""
7512
+ },
7513
+ {
7514
+ "name": "tone",
7515
+ "type": "'info' | 'success' | 'warning' | 'danger' | 'primary'",
7516
+ "required": false,
7517
+ "description": ""
7518
+ },
7519
+ {
7520
+ "name": "className",
7521
+ "type": "string",
7522
+ "required": false,
7523
+ "description": ""
7524
+ }
7525
+ ]
7526
+ }
7527
+ },
6900
7528
  "Spinner": {
6901
7529
  "cssFamily": "spinner",
6902
7530
  "importStatement": "import { Spinner } from 'haze-ui';\nimport 'haze-ui/css/tokens.css';\nimport 'haze-ui/css/spinner.css';",
@@ -6920,6 +7548,52 @@
6920
7548
  ]
6921
7549
  }
6922
7550
  },
7551
+ "Spoiler": {
7552
+ "cssFamily": "spoiler",
7553
+ "importStatement": "import { Spoiler } from 'haze-ui';\nimport 'haze-ui/css/tokens.css';\nimport 'haze-ui/css/spoiler.css';",
7554
+ "peerDeps": [],
7555
+ "description": "Collapsed long-content gate (\"show more/less\"): height-capped preview with a fade edge and a toggle button; `expanded` is controllable.",
7556
+ "props": {
7557
+ "SpoilerProps": [
7558
+ {
7559
+ "name": "expanded",
7560
+ "type": "ControlOrValue<boolean>",
7561
+ "required": false,
7562
+ "description": ""
7563
+ },
7564
+ {
7565
+ "name": "maxHeight",
7566
+ "type": "number",
7567
+ "required": false,
7568
+ "description": ""
7569
+ },
7570
+ {
7571
+ "name": "showLabel",
7572
+ "type": "string",
7573
+ "required": false,
7574
+ "description": ""
7575
+ },
7576
+ {
7577
+ "name": "hideLabel",
7578
+ "type": "string",
7579
+ "required": false,
7580
+ "description": ""
7581
+ },
7582
+ {
7583
+ "name": "children",
7584
+ "type": "ReactNode",
7585
+ "required": true,
7586
+ "description": ""
7587
+ },
7588
+ {
7589
+ "name": "className",
7590
+ "type": "string",
7591
+ "required": false,
7592
+ "description": ""
7593
+ }
7594
+ ]
7595
+ }
7596
+ },
6923
7597
  "Stat": {
6924
7598
  "cssFamily": "stat",
6925
7599
  "importStatement": "import { Stat, StatGroup } from 'haze-ui';\nimport 'haze-ui/css/tokens.css';\nimport 'haze-ui/css/stat.css';",
@@ -6963,31 +7637,92 @@
6963
7637
  "name": "trend",
6964
7638
  "type": "'up' | 'down' | 'neutral'",
6965
7639
  "required": false,
6966
- "description": "Trend direction"
7640
+ "description": "Trend direction"
7641
+ },
7642
+ {
7643
+ "name": "trendValue",
7644
+ "type": "string",
7645
+ "required": false,
7646
+ "description": "Trend percentage text"
7647
+ },
7648
+ {
7649
+ "name": "prefix",
7650
+ "type": "ReactNode",
7651
+ "required": false,
7652
+ "description": "Content before value"
7653
+ },
7654
+ {
7655
+ "name": "suffix",
7656
+ "type": "ReactNode",
7657
+ "required": false,
7658
+ "description": "Content after value"
7659
+ },
7660
+ {
7661
+ "name": "className",
7662
+ "type": "string",
7663
+ "required": false,
7664
+ "description": "Additional CSS class"
7665
+ }
7666
+ ]
7667
+ }
7668
+ },
7669
+ "StatusBar": {
7670
+ "cssFamily": "status-bar",
7671
+ "importStatement": "import { StatusBar, StatusItem } from 'haze-ui';\nimport 'haze-ui/css/tokens.css';\nimport 'haze-ui/css/status-bar.css';",
7672
+ "peerDeps": [],
7673
+ "description": "VSCode-style status strip (`footer`): `left`/`right` groups, selectable `StatusItem`s, `priority` items survive the mobile breakpoint.",
7674
+ "props": {
7675
+ "StatusBarProps": [
7676
+ {
7677
+ "name": "left",
7678
+ "type": "ReactNode",
7679
+ "required": false,
7680
+ "description": "Left-aligned items (branch, problems, cursor position…)"
7681
+ },
7682
+ {
7683
+ "name": "right",
7684
+ "type": "ReactNode",
7685
+ "required": false,
7686
+ "description": "Right-aligned items (language, encoding, sync state…)"
6967
7687
  },
6968
7688
  {
6969
- "name": "trendValue",
7689
+ "name": "className",
6970
7690
  "type": "string",
6971
7691
  "required": false,
6972
- "description": "Trend percentage text"
7692
+ "description": "Additional CSS class"
6973
7693
  },
6974
7694
  {
6975
- "name": "prefix",
7695
+ "name": "...rest",
7696
+ "type": "footer attributes",
7697
+ "required": false,
7698
+ "description": "Renders a footer landmark — pass aria-label via rest"
7699
+ }
7700
+ ],
7701
+ "StatusItemProps": [
7702
+ {
7703
+ "name": "children",
6976
7704
  "type": "ReactNode",
7705
+ "required": true,
7706
+ "description": "Item content"
7707
+ },
7708
+ {
7709
+ "name": "priority",
7710
+ "type": "boolean",
6977
7711
  "required": false,
6978
- "description": "Content before value"
7712
+ "default": "false",
7713
+ "description": "Priority items survive the ≤768px breakpoint (non-priority items are hidden there)"
6979
7714
  },
6980
7715
  {
6981
- "name": "suffix",
6982
- "type": "ReactNode",
7716
+ "name": "onSelect",
7717
+ "type": "() => void",
6983
7718
  "required": false,
6984
- "description": "Content after value"
7719
+ "description": "Presence switches the item to a button; omit for plain text"
6985
7720
  },
6986
7721
  {
6987
- "name": "className",
6988
- "type": "string",
7722
+ "name": "...rest",
7723
+ "type": "span | button attributes",
6989
7724
  "required": false,
6990
- "description": "Additional CSS class"
7725
+ "description": "Native props forwarded to the rendered element"
6991
7726
  }
6992
7727
  ]
6993
7728
  }
@@ -7277,6 +8012,79 @@
7277
8012
  ]
7278
8013
  }
7279
8014
  },
8015
+ "TabBar": {
8016
+ "cssFamily": "tab-bar",
8017
+ "importStatement": "import { TabBar, TabBarItem } from 'haze-ui';\nimport 'haze-ui/css/tokens.css';\nimport 'haze-ui/css/tab-bar.css';",
8018
+ "peerDeps": [],
8019
+ "description": "Mobile bottom navigation (the ActivityRail viewport peer): 56px safe-area strip, icon+label items, badge, `onSelect`/`onReselect` semantics.",
8020
+ "props": {
8021
+ "TabBarItemProps": [
8022
+ {
8023
+ "name": "icon",
8024
+ "type": "ReactNode",
8025
+ "required": true,
8026
+ "description": "Item icon (above the label)"
8027
+ },
8028
+ {
8029
+ "name": "label",
8030
+ "type": "string",
8031
+ "required": true,
8032
+ "description": "Item name — rendered under the icon and used as the accessible name"
8033
+ },
8034
+ {
8035
+ "name": "badge",
8036
+ "type": "ReactNode",
8037
+ "required": false,
8038
+ "description": "Overlay badge (usually <Badge/>)"
8039
+ },
8040
+ {
8041
+ "name": "active",
8042
+ "type": "boolean",
8043
+ "required": false,
8044
+ "default": "false",
8045
+ "description": "Marks the current view: aria-current + the 2px top indicator"
8046
+ },
8047
+ {
8048
+ "name": "onSelect",
8049
+ "type": "() => void",
8050
+ "required": false,
8051
+ "description": "Fires when a non-active item is tapped"
8052
+ },
8053
+ {
8054
+ "name": "onReselect",
8055
+ "type": "() => void",
8056
+ "required": false,
8057
+ "description": "Fires when the already-active item is tapped again — the 'tap-again-to-dismiss/back-to-root' affordance"
8058
+ },
8059
+ {
8060
+ "name": "...rest",
8061
+ "type": "button attributes",
8062
+ "required": false,
8063
+ "description": "Native button props (type=button is built in)"
8064
+ }
8065
+ ],
8066
+ "TabBarProps": [
8067
+ {
8068
+ "name": "children",
8069
+ "type": "ReactNode",
8070
+ "required": true,
8071
+ "description": "TabBarItem elements (horizontally distributed; safe-area aware)"
8072
+ },
8073
+ {
8074
+ "name": "className",
8075
+ "type": "string",
8076
+ "required": false,
8077
+ "description": "Additional CSS class"
8078
+ },
8079
+ {
8080
+ "name": "...rest",
8081
+ "type": "nav attributes",
8082
+ "required": false,
8083
+ "description": "Renders a nav landmark — pass aria-label via rest. Positioning (fixed) is left to the Workbench or the consumer"
8084
+ }
8085
+ ]
8086
+ }
8087
+ },
7280
8088
  "Table": {
7281
8089
  "cssFamily": "table",
7282
8090
  "importStatement": "import { Table, TableHead, TableBody, TableRow, TableCell } from 'haze-ui';\nimport 'haze-ui/css/tokens.css';\nimport 'haze-ui/css/table.css';",
@@ -7377,21 +8185,59 @@
7377
8185
  },
7378
8186
  "Tabs": {
7379
8187
  "cssFamily": "tabs",
7380
- "importStatement": "import { Tabs, TabList, Tab, TabPanel } from 'haze-ui';\nimport 'haze-ui/css/tokens.css';\nimport 'haze-ui/css/tabs.css';",
8188
+ "importStatement": "import { Tabs, TabList, Tab, TabPanel, SortableTabList } from 'haze-ui';\nimport 'haze-ui/css/tokens.css';\nimport 'haze-ui/css/tabs.css';",
7381
8189
  "peerDeps": [],
7382
8190
  "description": "Tab panel switcher with controllable active tab (`TabList`, `Tab`, `TabPanel`).",
7383
8191
  "props": {
8192
+ "SortableTabListProps": [
8193
+ {
8194
+ "name": "children",
8195
+ "type": "ReactNode",
8196
+ "required": true,
8197
+ "description": "Tab elements (drag reordering via dnd-kit; keyboard lift via Space, drop via Enter, cancel via Escape). Note: the ⋯ overflow menu is not rendered in the sortable variant — keep the strip scrollable instead"
8198
+ },
8199
+ {
8200
+ "name": "className",
8201
+ "type": "string",
8202
+ "required": false,
8203
+ "description": "Additional CSS class"
8204
+ },
8205
+ {
8206
+ "name": "onReorder",
8207
+ "type": "(nextOrder: number[]) => void",
8208
+ "required": false,
8209
+ "description": "Reports the new index order when a drag or keyboard sort settles — re-rendering the tabs is the owner's job"
8210
+ }
8211
+ ],
7384
8212
  "TabListProps": [
7385
8213
  {
7386
8214
  "name": "className",
7387
8215
  "type": "string",
7388
8216
  "required": false,
8217
+ "description": "Additional CSS class"
8218
+ },
8219
+ {
8220
+ "name": "listRef",
8221
+ "type": "RefObject<HTMLDivElement | null>",
8222
+ "required": false,
7389
8223
  "description": ""
7390
8224
  },
8225
+ {
8226
+ "name": "overflowLabel",
8227
+ "type": "string",
8228
+ "required": false,
8229
+ "description": "Overrides the ⋯ overflow button's accessible label (default from the tabs locale pack: More tabs)"
8230
+ },
7391
8231
  {
7392
8232
  "name": "children",
7393
8233
  "type": "ReactNode",
7394
8234
  "required": true,
8235
+ "description": "Tab elements; overflowing tabs stay reachable through the ⋯ menu, and the strip scrolls horizontally as the fallback"
8236
+ },
8237
+ {
8238
+ "name": "tabMetas",
8239
+ "type": "TabMeta[]",
8240
+ "required": false,
7395
8241
  "description": ""
7396
8242
  }
7397
8243
  ],
@@ -7422,6 +8268,43 @@
7422
8268
  "required": true,
7423
8269
  "description": "Unique value identifying this tab"
7424
8270
  },
8271
+ {
8272
+ "name": "icon",
8273
+ "type": "ReactNode",
8274
+ "required": false,
8275
+ "description": "Leading icon slot (aria-hidden — decorative)"
8276
+ },
8277
+ {
8278
+ "name": "status",
8279
+ "type": "TabStatus",
8280
+ "required": false,
8281
+ "description": "Status dot: dirty=neutral, error=danger, syncing=primary; the SR status word comes from the tabs locale pack unless statusLabel overrides it"
8282
+ },
8283
+ {
8284
+ "name": "statusLabel",
8285
+ "type": "ReactNode",
8286
+ "required": false,
8287
+ "description": "Overrides the status word appended to the accessible name (the i18n hook for SR users)"
8288
+ },
8289
+ {
8290
+ "name": "closable",
8291
+ "type": "boolean",
8292
+ "required": false,
8293
+ "default": "false",
8294
+ "description": "Renders a close × (aria-label from the tabs locale pack, overridable via closeLabel); clicking or pressing Delete closes — unmounting the tab is the owner's job via onClose"
8295
+ },
8296
+ {
8297
+ "name": "closeLabel",
8298
+ "type": "string",
8299
+ "required": false,
8300
+ "description": "Overrides the close button's accessible label"
8301
+ },
8302
+ {
8303
+ "name": "onClose",
8304
+ "type": "(event: MouseEvent<HTMLSpanElement, MouseEvent> | KeyboardEvent<HTMLDivElement>) => void",
8305
+ "required": false,
8306
+ "description": "Close notification — pure notification, the controlled tabs array is the owner's to mutate"
8307
+ },
7425
8308
  {
7426
8309
  "name": "className",
7427
8310
  "type": "string",
@@ -7531,6 +8414,12 @@
7531
8414
  "required": false,
7532
8415
  "description": ""
7533
8416
  },
8417
+ {
8418
+ "name": "classNames",
8419
+ "type": "TagGroupClassNames",
8420
+ "required": false,
8421
+ "description": ""
8422
+ },
7534
8423
  {
7535
8424
  "name": "onReorder",
7536
8425
  "type": "(nextOrder: number[]) => void",
@@ -7570,6 +8459,12 @@
7570
8459
  "type": "string",
7571
8460
  "required": false,
7572
8461
  "description": "Additional CSS class"
8462
+ },
8463
+ {
8464
+ "name": "classNames",
8465
+ "type": "TagGroupClassNames",
8466
+ "required": false,
8467
+ "description": ""
7573
8468
  }
7574
8469
  ]
7575
8470
  }
@@ -8407,7 +9302,7 @@
8407
9302
  "ToolbarProps": [
8408
9303
  {
8409
9304
  "name": "orientation",
8410
- "type": "'horizontal' | 'vertical'",
9305
+ "type": "'vertical' | 'horizontal'",
8411
9306
  "required": false,
8412
9307
  "description": ""
8413
9308
  },
@@ -9671,6 +10566,18 @@
9671
10566
  "default": "5",
9672
10567
  "description": "Extra items to render outside viewport"
9673
10568
  },
10569
+ {
10570
+ "name": "onEndReached",
10571
+ "type": "() => void",
10572
+ "required": false,
10573
+ "description": ""
10574
+ },
10575
+ {
10576
+ "name": "endReachedThreshold",
10577
+ "type": "number",
10578
+ "required": false,
10579
+ "description": ""
10580
+ },
9674
10581
  {
9675
10582
  "name": "reverse",
9676
10583
  "type": "boolean",
@@ -9692,6 +10599,15 @@
9692
10599
  ]
9693
10600
  }
9694
10601
  },
10602
+ "VisuallyHidden": {
10603
+ "cssFamily": "visually-hidden",
10604
+ "importStatement": "import { VisuallyHidden } from 'haze-ui';\nimport 'haze-ui/css/tokens.css';\nimport 'haze-ui/css/visually-hidden.css';",
10605
+ "peerDeps": [],
10606
+ "description": "Screen-reader-only content primitive: clipped off every visual axis while staying in the a11y tree (the icon-only-button label soup).",
10607
+ "props": {
10608
+ "VisuallyHiddenProps": []
10609
+ }
10610
+ },
9695
10611
  "Watermark": {
9696
10612
  "cssFamily": "watermark",
9697
10613
  "importStatement": "import { Watermark } from 'haze-ui';\nimport 'haze-ui/css/tokens.css';\nimport 'haze-ui/css/watermark.css';",
@@ -9761,6 +10677,130 @@
9761
10677
  }
9762
10678
  ]
9763
10679
  }
10680
+ },
10681
+ "Workbench": {
10682
+ "cssFamily": "workbench",
10683
+ "importStatement": "import { Workbench } from 'haze-ui';\nimport 'haze-ui/css/tokens.css';\nimport 'haze-ui/css/workbench.css';",
10684
+ "peerDeps": [],
10685
+ "description": "IDE-style application frame (`100dvh`): activityBar/sidebar/auxiliaryBar/panel/statusBar/tabBar slots with px-resizable collapsible regions and a maximizable bottom panel; below 768px sides become overlays and the tabBar takes over.",
10686
+ "props": {
10687
+ "WorkbenchProps": [
10688
+ {
10689
+ "name": "activityBar",
10690
+ "type": "ReactNode",
10691
+ "required": false,
10692
+ "description": "Left icon rail slot (usually <ActivityRail/>) — hidden below 768px where the tabBar takes over"
10693
+ },
10694
+ {
10695
+ "name": "activityBarPosition",
10696
+ "type": "ControlOrValue<'top' | 'bottom' | 'side'>",
10697
+ "required": false,
10698
+ "description": ""
10699
+ },
10700
+ {
10701
+ "name": "sidebar",
10702
+ "type": "ReactNode",
10703
+ "required": false,
10704
+ "description": "Primary side region (explorer, search…); docked+resizable on desktop, a scrimmed overlay on mobile"
10705
+ },
10706
+ {
10707
+ "name": "auxiliaryBar",
10708
+ "type": "ReactNode",
10709
+ "required": false,
10710
+ "description": "Secondary side region (inspector) docked right; also overlay below 768px"
10711
+ },
10712
+ {
10713
+ "name": "panel",
10714
+ "type": "ReactNode",
10715
+ "required": false,
10716
+ "description": "Bottom panel region (terminal/output/problems); docked+resizable on desktop, hidden on mobile — surface it as a view there"
10717
+ },
10718
+ {
10719
+ "name": "statusBar",
10720
+ "type": "ReactNode",
10721
+ "required": false,
10722
+ "description": "Status strip slot (usually <StatusBar/>)"
10723
+ },
10724
+ {
10725
+ "name": "tabBar",
10726
+ "type": "ReactNode",
10727
+ "required": false,
10728
+ "description": "Mobile bottom navigation slot (usually <TabBar/>); hidden on desktop"
10729
+ },
10730
+ {
10731
+ "name": "sidebarWidth",
10732
+ "type": "ControlOrValue<number>",
10733
+ "required": false,
10734
+ "description": ""
10735
+ },
10736
+ {
10737
+ "name": "sidebarCollapsed",
10738
+ "type": "ControlOrValue<boolean>",
10739
+ "required": false,
10740
+ "description": ""
10741
+ },
10742
+ {
10743
+ "name": "mobileSidebarOpen",
10744
+ "type": "ControlOrValue<boolean>",
10745
+ "required": false,
10746
+ "description": ""
10747
+ },
10748
+ {
10749
+ "name": "auxiliaryBarWidth",
10750
+ "type": "ControlOrValue<number>",
10751
+ "required": false,
10752
+ "description": ""
10753
+ },
10754
+ {
10755
+ "name": "auxiliaryBarCollapsed",
10756
+ "type": "ControlOrValue<boolean>",
10757
+ "required": false,
10758
+ "description": ""
10759
+ },
10760
+ {
10761
+ "name": "panelHeight",
10762
+ "type": "ControlOrValue<number>",
10763
+ "required": false,
10764
+ "description": ""
10765
+ },
10766
+ {
10767
+ "name": "panelCollapsed",
10768
+ "type": "ControlOrValue<boolean>",
10769
+ "required": false,
10770
+ "description": ""
10771
+ },
10772
+ {
10773
+ "name": "panelMaximized",
10774
+ "type": "ControlOrValue<boolean>",
10775
+ "required": false,
10776
+ "description": "Maximizes the bottom panel over the main area (VSCode ctrl+J style); reversible through the same Control"
10777
+ },
10778
+ {
10779
+ "name": "children",
10780
+ "type": "ReactNode",
10781
+ "required": true,
10782
+ "description": "Main editor area — compose freely (Tabs + TabPanel, anything)"
10783
+ },
10784
+ {
10785
+ "name": "sidebarWidth / auxiliaryBarWidth / panelHeight",
10786
+ "type": "Control<number> | number",
10787
+ "required": false,
10788
+ "description": "Region sizes in px — plain props double as defaults after a resize (commit via the internal group's onResizeCommit semantics)"
10789
+ },
10790
+ {
10791
+ "name": "sidebarCollapsed / auxiliaryBarCollapsed / panelCollapsed",
10792
+ "type": "Control<boolean> | boolean",
10793
+ "required": false,
10794
+ "description": "Region visibility — one source of truth across breakpoints: docked collapse on desktop reads as the overlay being closed on mobile"
10795
+ },
10796
+ {
10797
+ "name": "className",
10798
+ "type": "string",
10799
+ "required": false,
10800
+ "description": "Additional CSS class"
10801
+ }
10802
+ ]
10803
+ }
9764
10804
  }
9765
10805
  },
9766
10806
  "tokens": [