haze-ui 1.30.0 → 1.31.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.
- package/README.md +35 -1
- package/dist/components/ActivityRail/ActivityRail.js +76 -0
- package/dist/components/ActivityRail/index.js +3 -0
- package/dist/components/BottomSheet/BottomSheet.js +12 -26
- package/dist/components/ConversationList/ConversationList.js +16 -7
- package/dist/components/List/List.js +14 -10
- package/dist/components/LocaleProvider/ar-sa.js +7 -0
- package/dist/components/LocaleProvider/de-de.js +7 -0
- package/dist/components/LocaleProvider/es-es.js +7 -0
- package/dist/components/LocaleProvider/fr-fr.js +7 -0
- package/dist/components/LocaleProvider/it-it.js +7 -0
- package/dist/components/LocaleProvider/ja-jp.js +7 -0
- package/dist/components/LocaleProvider/ko-kr.js +7 -0
- package/dist/components/LocaleProvider/locale.js +7 -0
- package/dist/components/LocaleProvider/pt-br.js +7 -0
- package/dist/components/LocaleProvider/ru-ru.js +7 -0
- package/dist/components/LocaleProvider/zh-cn.js +7 -0
- package/dist/components/LogViewer/LogViewer.js +45 -38
- package/dist/components/OTPInput/OTPInputCore.js +1 -0
- package/dist/components/Resizable/Resizable.js +266 -36
- package/dist/components/Sparkline/Sparkline.js +45 -0
- package/dist/components/Sparkline/index.js +3 -0
- package/dist/components/Sparkline/sparkline-styles.js +18 -0
- package/dist/components/StatusBar/StatusBar.js +47 -0
- package/dist/components/StatusBar/index.js +3 -0
- package/dist/components/TabBar/TabBar.js +60 -0
- package/dist/components/TabBar/index.js +3 -0
- package/dist/components/Tabs/SortableTabList.js +116 -0
- package/dist/components/Tabs/Tab.js +83 -16
- package/dist/components/Tabs/TabList.js +94 -38
- package/dist/components/Tabs/edge-scroll.js +6 -0
- package/dist/components/Tabs/index.js +4 -3
- package/dist/components/Tabs/tab-metas.js +24 -0
- package/dist/components/TagInput/SortableTagInputCore.js +11 -11
- package/dist/components/Toast/ToastContainer.js +1 -1
- package/dist/components/Toast/index.js +1 -1
- package/dist/components/Toast/{toast2.js → toast-channel.js} +1 -1
- package/dist/components/Toast/useToast.js +1 -1
- package/dist/components/Tree/SortableTree.js +39 -39
- package/dist/components/VirtualList/VirtualList.js +133 -121
- package/dist/components/Workbench/Workbench.js +144 -0
- package/dist/components/Workbench/index.js +3 -0
- package/dist/css/activity-rail.css +2 -0
- package/dist/css/app-shell.css +1 -1
- package/dist/css/breadcrumb.css +1 -1
- package/dist/css/checkbox.css +1 -1
- package/dist/css/command.css +1 -1
- package/dist/css/context-menu.css +1 -1
- package/dist/css/date-range-picker.css +1 -1
- package/dist/css/drawer.css +1 -1
- package/dist/css/dropdown-menu.css +2 -2
- package/dist/css/hover-card.css +1 -1
- package/dist/css/list.css +1 -1
- package/dist/css/menu.css +2 -2
- package/dist/css/popover.css +1 -1
- package/dist/css/radio.css +1 -1
- package/dist/css/resizable.css +1 -1
- package/dist/css/segmented.css +1 -1
- package/dist/css/sidebar.css +1 -1
- package/dist/css/slider.css +1 -1
- package/dist/css/sparkline.css +2 -0
- package/dist/css/status-bar.css +2 -0
- package/dist/css/switch.css +1 -1
- package/dist/css/tab-bar.css +2 -0
- package/dist/css/tabs.css +3 -2
- package/dist/css/tag.css +1 -1
- package/dist/css/tree.css +1 -1
- package/dist/css/workbench.css +2 -0
- package/dist/css-manifest.json +16 -0
- package/dist/dates/adapter.js +9 -1
- package/dist/dates/buddhist.js +43 -0
- package/dist/dates/ethiopic.js +67 -0
- package/dist/dates/hebrew.js +95 -0
- package/dist/dates/japanese.js +41 -0
- package/dist/dates/persian.js +121 -0
- package/dist/dates/registry.js +14 -4
- package/dist/haze-ui.css +30 -24
- package/dist/index.js +253 -241
- package/dist/mcp-docs.json +555 -10
- package/dist/registry.json +115 -5
- package/dist/types/components/ActivityRail/ActivityRail.d.ts +30 -0
- package/dist/types/components/ActivityRail/index.d.ts +4 -0
- package/dist/types/components/ConversationList/ConversationList.d.ts +10 -1
- package/dist/types/components/List/List.d.ts +10 -1
- package/dist/types/components/LocaleProvider/locale.d.ts +7 -0
- package/dist/types/components/LogViewer/LogViewer.d.ts +10 -1
- package/dist/types/components/Resizable/Resizable.d.ts +24 -7
- package/dist/types/components/Resizable/index.d.ts +1 -1
- package/dist/types/components/Sparkline/Sparkline.d.ts +31 -0
- package/dist/types/components/Sparkline/index.d.ts +3 -0
- package/dist/types/components/Sparkline/sparkline-styles.d.ts +26 -0
- package/dist/types/components/StatusBar/StatusBar.d.ts +18 -0
- package/dist/types/components/StatusBar/index.d.ts +3 -0
- package/dist/types/components/TabBar/TabBar.d.ts +23 -0
- package/dist/types/components/TabBar/index.d.ts +4 -0
- package/dist/types/components/Tabs/SortableTabList.d.ts +46 -0
- package/dist/types/components/Tabs/Tab.d.ts +54 -3
- package/dist/types/components/Tabs/TabList.d.ts +26 -2
- package/dist/types/components/Tabs/edge-scroll.d.ts +17 -0
- package/dist/types/components/Tabs/index.d.ts +3 -1
- package/dist/types/components/Tabs/tab-metas.d.ts +20 -0
- package/dist/types/components/Toast/index.d.ts +2 -2
- package/dist/types/components/Toast/useToast.d.ts +1 -1
- package/dist/types/components/VirtualList/VirtualList.d.ts +20 -1
- package/dist/types/components/Workbench/Workbench.d.ts +50 -0
- package/dist/types/components/Workbench/index.d.ts +2 -0
- package/dist/types/dates/adapter.d.ts +33 -6
- package/dist/types/dates/buddhist.d.ts +14 -0
- package/dist/types/dates/ethiopic.d.ts +15 -0
- package/dist/types/dates/hebrew.d.ts +19 -0
- package/dist/types/dates/index.d.ts +5 -0
- package/dist/types/dates/japanese.d.ts +16 -0
- package/dist/types/dates/persian.d.ts +18 -0
- package/dist/types/dates/registry.d.ts +1 -1
- package/dist/types/index.d.ts +13 -3
- package/dist/types/utils/sortable.d.ts +8 -1
- package/dist/types/utils/use-end-reached.d.ts +56 -0
- package/dist/types/utils/viewport.d.ts +12 -0
- package/dist/utils/sortable-shared.js +3 -3
- package/dist/utils/sortable.js +15 -14
- package/dist/utils/use-end-reached.js +46 -0
- package/dist/utils/viewport.js +20 -0
- package/package.json +12 -4
- /package/dist/types/components/Toast/{toast.d.ts → toast-channel.d.ts} +0 -0
package/dist/mcp-docs.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"generatedAt": "2026-
|
|
2
|
+
"generatedAt": "2026-10-04T04:21:23.583Z",
|
|
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';",
|
|
@@ -1057,7 +1137,7 @@
|
|
|
1057
1137
|
},
|
|
1058
1138
|
{
|
|
1059
1139
|
"name": "layout",
|
|
1060
|
-
"type": "'
|
|
1140
|
+
"type": "'vertical' | 'horizontal'",
|
|
1061
1141
|
"required": false,
|
|
1062
1142
|
"description": ""
|
|
1063
1143
|
},
|
|
@@ -1640,7 +1720,7 @@
|
|
|
1640
1720
|
},
|
|
1641
1721
|
{
|
|
1642
1722
|
"name": "ref",
|
|
1643
|
-
"type": "Ref<
|
|
1723
|
+
"type": "Ref<HTMLButtonElement | HTMLDivElement>",
|
|
1644
1724
|
"required": false,
|
|
1645
1725
|
"description": ""
|
|
1646
1726
|
}
|
|
@@ -2316,6 +2396,12 @@
|
|
|
2316
2396
|
"required": true,
|
|
2317
2397
|
"description": "ConversationItem elements"
|
|
2318
2398
|
},
|
|
2399
|
+
{
|
|
2400
|
+
"name": "onLoadMore",
|
|
2401
|
+
"type": "() => void",
|
|
2402
|
+
"required": false,
|
|
2403
|
+
"description": ""
|
|
2404
|
+
},
|
|
2319
2405
|
{
|
|
2320
2406
|
"name": "className",
|
|
2321
2407
|
"type": "string",
|
|
@@ -3151,7 +3237,7 @@
|
|
|
3151
3237
|
"DividerProps": [
|
|
3152
3238
|
{
|
|
3153
3239
|
"name": "orientation",
|
|
3154
|
-
"type": "'
|
|
3240
|
+
"type": "'vertical' | 'horizontal'",
|
|
3155
3241
|
"required": false,
|
|
3156
3242
|
"default": "'horizontal'",
|
|
3157
3243
|
"description": "Direction of the divider"
|
|
@@ -4515,6 +4601,12 @@
|
|
|
4515
4601
|
"type": "ReactNode",
|
|
4516
4602
|
"required": true,
|
|
4517
4603
|
"description": "ListItem elements"
|
|
4604
|
+
},
|
|
4605
|
+
{
|
|
4606
|
+
"name": "loadMore",
|
|
4607
|
+
"type": "ReactNode",
|
|
4608
|
+
"required": false,
|
|
4609
|
+
"description": ""
|
|
4518
4610
|
}
|
|
4519
4611
|
]
|
|
4520
4612
|
}
|
|
@@ -4572,6 +4664,12 @@
|
|
|
4572
4664
|
"required": false,
|
|
4573
4665
|
"description": "Active level filter (controllable)"
|
|
4574
4666
|
},
|
|
4667
|
+
{
|
|
4668
|
+
"name": "onLoadMore",
|
|
4669
|
+
"type": "() => void",
|
|
4670
|
+
"required": false,
|
|
4671
|
+
"description": ""
|
|
4672
|
+
},
|
|
4575
4673
|
{
|
|
4576
4674
|
"name": "className",
|
|
4577
4675
|
"type": "string",
|
|
@@ -5936,7 +6034,7 @@
|
|
|
5936
6034
|
"ResizableGroupProps": [
|
|
5937
6035
|
{
|
|
5938
6036
|
"name": "direction",
|
|
5939
|
-
"type": "'
|
|
6037
|
+
"type": "'vertical' | 'horizontal'",
|
|
5940
6038
|
"required": false,
|
|
5941
6039
|
"default": "'horizontal'",
|
|
5942
6040
|
"description": "Layout direction"
|
|
@@ -5953,6 +6051,18 @@
|
|
|
5953
6051
|
"required": false,
|
|
5954
6052
|
"description": "Additional CSS class"
|
|
5955
6053
|
},
|
|
6054
|
+
{
|
|
6055
|
+
"name": "style",
|
|
6056
|
+
"type": "CSSProperties",
|
|
6057
|
+
"required": false,
|
|
6058
|
+
"description": ""
|
|
6059
|
+
},
|
|
6060
|
+
{
|
|
6061
|
+
"name": "onResizeCommit",
|
|
6062
|
+
"type": "(sizes: Record<string, number>) => void",
|
|
6063
|
+
"required": false,
|
|
6064
|
+
"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)"
|
|
6065
|
+
},
|
|
5956
6066
|
{
|
|
5957
6067
|
"name": "SplitterGroup · SplitterPanel · SplitterHandle",
|
|
5958
6068
|
"type": "aliases",
|
|
@@ -5965,16 +6075,60 @@
|
|
|
5965
6075
|
"name": "className",
|
|
5966
6076
|
"type": "string",
|
|
5967
6077
|
"required": false,
|
|
5968
|
-
"description": ""
|
|
6078
|
+
"description": "Additional CSS class"
|
|
6079
|
+
},
|
|
6080
|
+
{
|
|
6081
|
+
"name": "...rest",
|
|
6082
|
+
"type": "div attributes",
|
|
6083
|
+
"required": false,
|
|
6084
|
+
"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
6085
|
}
|
|
5970
6086
|
],
|
|
5971
6087
|
"ResizablePanelProps": [
|
|
6088
|
+
{
|
|
6089
|
+
"name": "id",
|
|
6090
|
+
"type": "string",
|
|
6091
|
+
"required": true,
|
|
6092
|
+
"description": "Stable panel identity — keys the sizes map reported by onResizeCommit; keep it stable across renders for persistence"
|
|
6093
|
+
},
|
|
5972
6094
|
{
|
|
5973
6095
|
"name": "defaultSize",
|
|
5974
6096
|
"type": "number",
|
|
5975
6097
|
"required": false,
|
|
5976
|
-
"
|
|
5977
|
-
|
|
6098
|
+
"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"
|
|
6099
|
+
},
|
|
6100
|
+
{
|
|
6101
|
+
"name": "minSize",
|
|
6102
|
+
"type": "number",
|
|
6103
|
+
"required": false,
|
|
6104
|
+
"default": "—",
|
|
6105
|
+
"description": "Clamp in px enforced by both pointer drags and keyboard steps"
|
|
6106
|
+
},
|
|
6107
|
+
{
|
|
6108
|
+
"name": "maxSize",
|
|
6109
|
+
"type": "number",
|
|
6110
|
+
"required": false,
|
|
6111
|
+
"default": "—",
|
|
6112
|
+
"description": "Clamp in px enforced by both pointer drags and keyboard steps"
|
|
6113
|
+
},
|
|
6114
|
+
{
|
|
6115
|
+
"name": "collapsible",
|
|
6116
|
+
"type": "boolean",
|
|
6117
|
+
"required": false,
|
|
6118
|
+
"default": "false",
|
|
6119
|
+
"description": "Enables collapse semantics: the panel collapses to zero width/height and its handle becomes a keyboard-reachable expander"
|
|
6120
|
+
},
|
|
6121
|
+
{
|
|
6122
|
+
"name": "collapsed",
|
|
6123
|
+
"type": "ControlOrValue<boolean>",
|
|
6124
|
+
"required": false,
|
|
6125
|
+
"description": "Controlled/uncontrolled collapsed state — survives breakpoint flips (desktop dock ⇄ mobile overlay) as one source of truth"
|
|
6126
|
+
},
|
|
6127
|
+
{
|
|
6128
|
+
"name": "onCollapsedChange",
|
|
6129
|
+
"type": "(collapsed: boolean) => void",
|
|
6130
|
+
"required": false,
|
|
6131
|
+
"description": "Notifies on collapse toggles (handle expander, resets crossing the threshold)"
|
|
5978
6132
|
},
|
|
5979
6133
|
{
|
|
5980
6134
|
"name": "children",
|
|
@@ -6897,6 +7051,52 @@
|
|
|
6897
7051
|
]
|
|
6898
7052
|
}
|
|
6899
7053
|
},
|
|
7054
|
+
"Sparkline": {
|
|
7055
|
+
"cssFamily": "sparkline",
|
|
7056
|
+
"importStatement": "import { Sparkline, sparklineToneStrokes, sparklineToneFills } from 'haze-ui';\nimport 'haze-ui/css/tokens.css';\nimport 'haze-ui/css/sparkline.css';",
|
|
7057
|
+
"peerDeps": [],
|
|
7058
|
+
"description": "Inline-SVG mini trend chart (line/area variants, tone colors); stateless, recharts-free and RSC-safe.",
|
|
7059
|
+
"props": {
|
|
7060
|
+
"SparklineProps": [
|
|
7061
|
+
{
|
|
7062
|
+
"name": "data",
|
|
7063
|
+
"type": "readonly number[]",
|
|
7064
|
+
"required": true,
|
|
7065
|
+
"description": ""
|
|
7066
|
+
},
|
|
7067
|
+
{
|
|
7068
|
+
"name": "width",
|
|
7069
|
+
"type": "number",
|
|
7070
|
+
"required": false,
|
|
7071
|
+
"description": ""
|
|
7072
|
+
},
|
|
7073
|
+
{
|
|
7074
|
+
"name": "height",
|
|
7075
|
+
"type": "number",
|
|
7076
|
+
"required": false,
|
|
7077
|
+
"description": ""
|
|
7078
|
+
},
|
|
7079
|
+
{
|
|
7080
|
+
"name": "variant",
|
|
7081
|
+
"type": "'area' | 'line'",
|
|
7082
|
+
"required": false,
|
|
7083
|
+
"description": ""
|
|
7084
|
+
},
|
|
7085
|
+
{
|
|
7086
|
+
"name": "tone",
|
|
7087
|
+
"type": "'info' | 'success' | 'warning' | 'danger' | 'primary'",
|
|
7088
|
+
"required": false,
|
|
7089
|
+
"description": ""
|
|
7090
|
+
},
|
|
7091
|
+
{
|
|
7092
|
+
"name": "className",
|
|
7093
|
+
"type": "string",
|
|
7094
|
+
"required": false,
|
|
7095
|
+
"description": ""
|
|
7096
|
+
}
|
|
7097
|
+
]
|
|
7098
|
+
}
|
|
7099
|
+
},
|
|
6900
7100
|
"Spinner": {
|
|
6901
7101
|
"cssFamily": "spinner",
|
|
6902
7102
|
"importStatement": "import { Spinner } from 'haze-ui';\nimport 'haze-ui/css/tokens.css';\nimport 'haze-ui/css/spinner.css';",
|
|
@@ -6992,6 +7192,67 @@
|
|
|
6992
7192
|
]
|
|
6993
7193
|
}
|
|
6994
7194
|
},
|
|
7195
|
+
"StatusBar": {
|
|
7196
|
+
"cssFamily": "status-bar",
|
|
7197
|
+
"importStatement": "import { StatusBar, StatusItem } from 'haze-ui';\nimport 'haze-ui/css/tokens.css';\nimport 'haze-ui/css/status-bar.css';",
|
|
7198
|
+
"peerDeps": [],
|
|
7199
|
+
"description": "VSCode-style status strip (`footer`): `left`/`right` groups, selectable `StatusItem`s, `priority` items survive the mobile breakpoint.",
|
|
7200
|
+
"props": {
|
|
7201
|
+
"StatusBarProps": [
|
|
7202
|
+
{
|
|
7203
|
+
"name": "left",
|
|
7204
|
+
"type": "ReactNode",
|
|
7205
|
+
"required": false,
|
|
7206
|
+
"description": "Left-aligned items (branch, problems, cursor position…)"
|
|
7207
|
+
},
|
|
7208
|
+
{
|
|
7209
|
+
"name": "right",
|
|
7210
|
+
"type": "ReactNode",
|
|
7211
|
+
"required": false,
|
|
7212
|
+
"description": "Right-aligned items (language, encoding, sync state…)"
|
|
7213
|
+
},
|
|
7214
|
+
{
|
|
7215
|
+
"name": "className",
|
|
7216
|
+
"type": "string",
|
|
7217
|
+
"required": false,
|
|
7218
|
+
"description": "Additional CSS class"
|
|
7219
|
+
},
|
|
7220
|
+
{
|
|
7221
|
+
"name": "...rest",
|
|
7222
|
+
"type": "footer attributes",
|
|
7223
|
+
"required": false,
|
|
7224
|
+
"description": "Renders a footer landmark — pass aria-label via rest"
|
|
7225
|
+
}
|
|
7226
|
+
],
|
|
7227
|
+
"StatusItemProps": [
|
|
7228
|
+
{
|
|
7229
|
+
"name": "children",
|
|
7230
|
+
"type": "ReactNode",
|
|
7231
|
+
"required": true,
|
|
7232
|
+
"description": "Item content"
|
|
7233
|
+
},
|
|
7234
|
+
{
|
|
7235
|
+
"name": "priority",
|
|
7236
|
+
"type": "boolean",
|
|
7237
|
+
"required": false,
|
|
7238
|
+
"default": "false",
|
|
7239
|
+
"description": "Priority items survive the ≤768px breakpoint (non-priority items are hidden there)"
|
|
7240
|
+
},
|
|
7241
|
+
{
|
|
7242
|
+
"name": "onSelect",
|
|
7243
|
+
"type": "() => void",
|
|
7244
|
+
"required": false,
|
|
7245
|
+
"description": "Presence switches the item to a button; omit for plain text"
|
|
7246
|
+
},
|
|
7247
|
+
{
|
|
7248
|
+
"name": "...rest",
|
|
7249
|
+
"type": "span | button attributes",
|
|
7250
|
+
"required": false,
|
|
7251
|
+
"description": "Native props forwarded to the rendered element"
|
|
7252
|
+
}
|
|
7253
|
+
]
|
|
7254
|
+
}
|
|
7255
|
+
},
|
|
6995
7256
|
"StepTimeline": {
|
|
6996
7257
|
"cssFamily": "step-timeline",
|
|
6997
7258
|
"importStatement": "import { StepTimeline, StepTimelineItem } from 'haze-ui';\nimport 'haze-ui/css/tokens.css';\nimport 'haze-ui/css/step-timeline.css';",
|
|
@@ -7277,6 +7538,79 @@
|
|
|
7277
7538
|
]
|
|
7278
7539
|
}
|
|
7279
7540
|
},
|
|
7541
|
+
"TabBar": {
|
|
7542
|
+
"cssFamily": "tab-bar",
|
|
7543
|
+
"importStatement": "import { TabBar, TabBarItem } from 'haze-ui';\nimport 'haze-ui/css/tokens.css';\nimport 'haze-ui/css/tab-bar.css';",
|
|
7544
|
+
"peerDeps": [],
|
|
7545
|
+
"description": "Mobile bottom navigation (the ActivityRail viewport peer): 56px safe-area strip, icon+label items, badge, `onSelect`/`onReselect` semantics.",
|
|
7546
|
+
"props": {
|
|
7547
|
+
"TabBarItemProps": [
|
|
7548
|
+
{
|
|
7549
|
+
"name": "icon",
|
|
7550
|
+
"type": "ReactNode",
|
|
7551
|
+
"required": true,
|
|
7552
|
+
"description": "Item icon (above the label)"
|
|
7553
|
+
},
|
|
7554
|
+
{
|
|
7555
|
+
"name": "label",
|
|
7556
|
+
"type": "string",
|
|
7557
|
+
"required": true,
|
|
7558
|
+
"description": "Item name — rendered under the icon and used as the accessible name"
|
|
7559
|
+
},
|
|
7560
|
+
{
|
|
7561
|
+
"name": "badge",
|
|
7562
|
+
"type": "ReactNode",
|
|
7563
|
+
"required": false,
|
|
7564
|
+
"description": "Overlay badge (usually <Badge/>)"
|
|
7565
|
+
},
|
|
7566
|
+
{
|
|
7567
|
+
"name": "active",
|
|
7568
|
+
"type": "boolean",
|
|
7569
|
+
"required": false,
|
|
7570
|
+
"default": "false",
|
|
7571
|
+
"description": "Marks the current view: aria-current + the 2px top indicator"
|
|
7572
|
+
},
|
|
7573
|
+
{
|
|
7574
|
+
"name": "onSelect",
|
|
7575
|
+
"type": "() => void",
|
|
7576
|
+
"required": false,
|
|
7577
|
+
"description": "Fires when a non-active item is tapped"
|
|
7578
|
+
},
|
|
7579
|
+
{
|
|
7580
|
+
"name": "onReselect",
|
|
7581
|
+
"type": "() => void",
|
|
7582
|
+
"required": false,
|
|
7583
|
+
"description": "Fires when the already-active item is tapped again — the 'tap-again-to-dismiss/back-to-root' affordance"
|
|
7584
|
+
},
|
|
7585
|
+
{
|
|
7586
|
+
"name": "...rest",
|
|
7587
|
+
"type": "button attributes",
|
|
7588
|
+
"required": false,
|
|
7589
|
+
"description": "Native button props (type=button is built in)"
|
|
7590
|
+
}
|
|
7591
|
+
],
|
|
7592
|
+
"TabBarProps": [
|
|
7593
|
+
{
|
|
7594
|
+
"name": "children",
|
|
7595
|
+
"type": "ReactNode",
|
|
7596
|
+
"required": true,
|
|
7597
|
+
"description": "TabBarItem elements (horizontally distributed; safe-area aware)"
|
|
7598
|
+
},
|
|
7599
|
+
{
|
|
7600
|
+
"name": "className",
|
|
7601
|
+
"type": "string",
|
|
7602
|
+
"required": false,
|
|
7603
|
+
"description": "Additional CSS class"
|
|
7604
|
+
},
|
|
7605
|
+
{
|
|
7606
|
+
"name": "...rest",
|
|
7607
|
+
"type": "nav attributes",
|
|
7608
|
+
"required": false,
|
|
7609
|
+
"description": "Renders a nav landmark — pass aria-label via rest. Positioning (fixed) is left to the Workbench or the consumer"
|
|
7610
|
+
}
|
|
7611
|
+
]
|
|
7612
|
+
}
|
|
7613
|
+
},
|
|
7280
7614
|
"Table": {
|
|
7281
7615
|
"cssFamily": "table",
|
|
7282
7616
|
"importStatement": "import { Table, TableHead, TableBody, TableRow, TableCell } from 'haze-ui';\nimport 'haze-ui/css/tokens.css';\nimport 'haze-ui/css/table.css';",
|
|
@@ -7377,21 +7711,59 @@
|
|
|
7377
7711
|
},
|
|
7378
7712
|
"Tabs": {
|
|
7379
7713
|
"cssFamily": "tabs",
|
|
7380
|
-
"importStatement": "import { Tabs, TabList, Tab, TabPanel } from 'haze-ui';\nimport 'haze-ui/css/tokens.css';\nimport 'haze-ui/css/tabs.css';",
|
|
7714
|
+
"importStatement": "import { Tabs, TabList, Tab, TabPanel, SortableTabList } from 'haze-ui';\nimport 'haze-ui/css/tokens.css';\nimport 'haze-ui/css/tabs.css';",
|
|
7381
7715
|
"peerDeps": [],
|
|
7382
7716
|
"description": "Tab panel switcher with controllable active tab (`TabList`, `Tab`, `TabPanel`).",
|
|
7383
7717
|
"props": {
|
|
7718
|
+
"SortableTabListProps": [
|
|
7719
|
+
{
|
|
7720
|
+
"name": "children",
|
|
7721
|
+
"type": "ReactNode",
|
|
7722
|
+
"required": true,
|
|
7723
|
+
"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"
|
|
7724
|
+
},
|
|
7725
|
+
{
|
|
7726
|
+
"name": "className",
|
|
7727
|
+
"type": "string",
|
|
7728
|
+
"required": false,
|
|
7729
|
+
"description": "Additional CSS class"
|
|
7730
|
+
},
|
|
7731
|
+
{
|
|
7732
|
+
"name": "onReorder",
|
|
7733
|
+
"type": "(nextOrder: number[]) => void",
|
|
7734
|
+
"required": false,
|
|
7735
|
+
"description": "Reports the new index order when a drag or keyboard sort settles — re-rendering the tabs is the owner's job"
|
|
7736
|
+
}
|
|
7737
|
+
],
|
|
7384
7738
|
"TabListProps": [
|
|
7385
7739
|
{
|
|
7386
7740
|
"name": "className",
|
|
7387
7741
|
"type": "string",
|
|
7388
7742
|
"required": false,
|
|
7743
|
+
"description": "Additional CSS class"
|
|
7744
|
+
},
|
|
7745
|
+
{
|
|
7746
|
+
"name": "listRef",
|
|
7747
|
+
"type": "RefObject<HTMLDivElement | null>",
|
|
7748
|
+
"required": false,
|
|
7389
7749
|
"description": ""
|
|
7390
7750
|
},
|
|
7751
|
+
{
|
|
7752
|
+
"name": "overflowLabel",
|
|
7753
|
+
"type": "string",
|
|
7754
|
+
"required": false,
|
|
7755
|
+
"description": "Overrides the ⋯ overflow button's accessible label (default from the tabs locale pack: More tabs)"
|
|
7756
|
+
},
|
|
7391
7757
|
{
|
|
7392
7758
|
"name": "children",
|
|
7393
7759
|
"type": "ReactNode",
|
|
7394
7760
|
"required": true,
|
|
7761
|
+
"description": "Tab elements; overflowing tabs stay reachable through the ⋯ menu, and the strip scrolls horizontally as the fallback"
|
|
7762
|
+
},
|
|
7763
|
+
{
|
|
7764
|
+
"name": "tabMetas",
|
|
7765
|
+
"type": "TabMeta[]",
|
|
7766
|
+
"required": false,
|
|
7395
7767
|
"description": ""
|
|
7396
7768
|
}
|
|
7397
7769
|
],
|
|
@@ -7422,6 +7794,43 @@
|
|
|
7422
7794
|
"required": true,
|
|
7423
7795
|
"description": "Unique value identifying this tab"
|
|
7424
7796
|
},
|
|
7797
|
+
{
|
|
7798
|
+
"name": "icon",
|
|
7799
|
+
"type": "ReactNode",
|
|
7800
|
+
"required": false,
|
|
7801
|
+
"description": "Leading icon slot (aria-hidden — decorative)"
|
|
7802
|
+
},
|
|
7803
|
+
{
|
|
7804
|
+
"name": "status",
|
|
7805
|
+
"type": "TabStatus",
|
|
7806
|
+
"required": false,
|
|
7807
|
+
"description": "Status dot: dirty=neutral, error=danger, syncing=primary; the SR status word comes from the tabs locale pack unless statusLabel overrides it"
|
|
7808
|
+
},
|
|
7809
|
+
{
|
|
7810
|
+
"name": "statusLabel",
|
|
7811
|
+
"type": "ReactNode",
|
|
7812
|
+
"required": false,
|
|
7813
|
+
"description": "Overrides the status word appended to the accessible name (the i18n hook for SR users)"
|
|
7814
|
+
},
|
|
7815
|
+
{
|
|
7816
|
+
"name": "closable",
|
|
7817
|
+
"type": "boolean",
|
|
7818
|
+
"required": false,
|
|
7819
|
+
"default": "false",
|
|
7820
|
+
"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"
|
|
7821
|
+
},
|
|
7822
|
+
{
|
|
7823
|
+
"name": "closeLabel",
|
|
7824
|
+
"type": "string",
|
|
7825
|
+
"required": false,
|
|
7826
|
+
"description": "Overrides the close button's accessible label"
|
|
7827
|
+
},
|
|
7828
|
+
{
|
|
7829
|
+
"name": "onClose",
|
|
7830
|
+
"type": "(event: MouseEvent<HTMLSpanElement, MouseEvent> | KeyboardEvent<HTMLDivElement>) => void",
|
|
7831
|
+
"required": false,
|
|
7832
|
+
"description": "Close notification — pure notification, the controlled tabs array is the owner's to mutate"
|
|
7833
|
+
},
|
|
7425
7834
|
{
|
|
7426
7835
|
"name": "className",
|
|
7427
7836
|
"type": "string",
|
|
@@ -8407,7 +8816,7 @@
|
|
|
8407
8816
|
"ToolbarProps": [
|
|
8408
8817
|
{
|
|
8409
8818
|
"name": "orientation",
|
|
8410
|
-
"type": "'
|
|
8819
|
+
"type": "'vertical' | 'horizontal'",
|
|
8411
8820
|
"required": false,
|
|
8412
8821
|
"description": ""
|
|
8413
8822
|
},
|
|
@@ -9671,6 +10080,18 @@
|
|
|
9671
10080
|
"default": "5",
|
|
9672
10081
|
"description": "Extra items to render outside viewport"
|
|
9673
10082
|
},
|
|
10083
|
+
{
|
|
10084
|
+
"name": "onEndReached",
|
|
10085
|
+
"type": "() => void",
|
|
10086
|
+
"required": false,
|
|
10087
|
+
"description": ""
|
|
10088
|
+
},
|
|
10089
|
+
{
|
|
10090
|
+
"name": "endReachedThreshold",
|
|
10091
|
+
"type": "number",
|
|
10092
|
+
"required": false,
|
|
10093
|
+
"description": ""
|
|
10094
|
+
},
|
|
9674
10095
|
{
|
|
9675
10096
|
"name": "reverse",
|
|
9676
10097
|
"type": "boolean",
|
|
@@ -9761,6 +10182,130 @@
|
|
|
9761
10182
|
}
|
|
9762
10183
|
]
|
|
9763
10184
|
}
|
|
10185
|
+
},
|
|
10186
|
+
"Workbench": {
|
|
10187
|
+
"cssFamily": "workbench",
|
|
10188
|
+
"importStatement": "import { Workbench } from 'haze-ui';\nimport 'haze-ui/css/tokens.css';\nimport 'haze-ui/css/workbench.css';",
|
|
10189
|
+
"peerDeps": [],
|
|
10190
|
+
"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.",
|
|
10191
|
+
"props": {
|
|
10192
|
+
"WorkbenchProps": [
|
|
10193
|
+
{
|
|
10194
|
+
"name": "activityBar",
|
|
10195
|
+
"type": "ReactNode",
|
|
10196
|
+
"required": false,
|
|
10197
|
+
"description": "Left icon rail slot (usually <ActivityRail/>) — hidden below 768px where the tabBar takes over"
|
|
10198
|
+
},
|
|
10199
|
+
{
|
|
10200
|
+
"name": "activityBarPosition",
|
|
10201
|
+
"type": "ControlOrValue<'top' | 'bottom' | 'side'>",
|
|
10202
|
+
"required": false,
|
|
10203
|
+
"description": ""
|
|
10204
|
+
},
|
|
10205
|
+
{
|
|
10206
|
+
"name": "sidebar",
|
|
10207
|
+
"type": "ReactNode",
|
|
10208
|
+
"required": false,
|
|
10209
|
+
"description": "Primary side region (explorer, search…); docked+resizable on desktop, a scrimmed overlay on mobile"
|
|
10210
|
+
},
|
|
10211
|
+
{
|
|
10212
|
+
"name": "auxiliaryBar",
|
|
10213
|
+
"type": "ReactNode",
|
|
10214
|
+
"required": false,
|
|
10215
|
+
"description": "Secondary side region (inspector) docked right; also overlay below 768px"
|
|
10216
|
+
},
|
|
10217
|
+
{
|
|
10218
|
+
"name": "panel",
|
|
10219
|
+
"type": "ReactNode",
|
|
10220
|
+
"required": false,
|
|
10221
|
+
"description": "Bottom panel region (terminal/output/problems); docked+resizable on desktop, hidden on mobile — surface it as a view there"
|
|
10222
|
+
},
|
|
10223
|
+
{
|
|
10224
|
+
"name": "statusBar",
|
|
10225
|
+
"type": "ReactNode",
|
|
10226
|
+
"required": false,
|
|
10227
|
+
"description": "Status strip slot (usually <StatusBar/>)"
|
|
10228
|
+
},
|
|
10229
|
+
{
|
|
10230
|
+
"name": "tabBar",
|
|
10231
|
+
"type": "ReactNode",
|
|
10232
|
+
"required": false,
|
|
10233
|
+
"description": "Mobile bottom navigation slot (usually <TabBar/>); hidden on desktop"
|
|
10234
|
+
},
|
|
10235
|
+
{
|
|
10236
|
+
"name": "sidebarWidth",
|
|
10237
|
+
"type": "ControlOrValue<number>",
|
|
10238
|
+
"required": false,
|
|
10239
|
+
"description": ""
|
|
10240
|
+
},
|
|
10241
|
+
{
|
|
10242
|
+
"name": "sidebarCollapsed",
|
|
10243
|
+
"type": "ControlOrValue<boolean>",
|
|
10244
|
+
"required": false,
|
|
10245
|
+
"description": ""
|
|
10246
|
+
},
|
|
10247
|
+
{
|
|
10248
|
+
"name": "mobileSidebarOpen",
|
|
10249
|
+
"type": "ControlOrValue<boolean>",
|
|
10250
|
+
"required": false,
|
|
10251
|
+
"description": ""
|
|
10252
|
+
},
|
|
10253
|
+
{
|
|
10254
|
+
"name": "auxiliaryBarWidth",
|
|
10255
|
+
"type": "ControlOrValue<number>",
|
|
10256
|
+
"required": false,
|
|
10257
|
+
"description": ""
|
|
10258
|
+
},
|
|
10259
|
+
{
|
|
10260
|
+
"name": "auxiliaryBarCollapsed",
|
|
10261
|
+
"type": "ControlOrValue<boolean>",
|
|
10262
|
+
"required": false,
|
|
10263
|
+
"description": ""
|
|
10264
|
+
},
|
|
10265
|
+
{
|
|
10266
|
+
"name": "panelHeight",
|
|
10267
|
+
"type": "ControlOrValue<number>",
|
|
10268
|
+
"required": false,
|
|
10269
|
+
"description": ""
|
|
10270
|
+
},
|
|
10271
|
+
{
|
|
10272
|
+
"name": "panelCollapsed",
|
|
10273
|
+
"type": "ControlOrValue<boolean>",
|
|
10274
|
+
"required": false,
|
|
10275
|
+
"description": ""
|
|
10276
|
+
},
|
|
10277
|
+
{
|
|
10278
|
+
"name": "panelMaximized",
|
|
10279
|
+
"type": "ControlOrValue<boolean>",
|
|
10280
|
+
"required": false,
|
|
10281
|
+
"description": "Maximizes the bottom panel over the main area (VSCode ctrl+J style); reversible through the same Control"
|
|
10282
|
+
},
|
|
10283
|
+
{
|
|
10284
|
+
"name": "children",
|
|
10285
|
+
"type": "ReactNode",
|
|
10286
|
+
"required": true,
|
|
10287
|
+
"description": "Main editor area — compose freely (Tabs + TabPanel, anything)"
|
|
10288
|
+
},
|
|
10289
|
+
{
|
|
10290
|
+
"name": "sidebarWidth / auxiliaryBarWidth / panelHeight",
|
|
10291
|
+
"type": "Control<number> | number",
|
|
10292
|
+
"required": false,
|
|
10293
|
+
"description": "Region sizes in px — plain props double as defaults after a resize (commit via the internal group's onResizeCommit semantics)"
|
|
10294
|
+
},
|
|
10295
|
+
{
|
|
10296
|
+
"name": "sidebarCollapsed / auxiliaryBarCollapsed / panelCollapsed",
|
|
10297
|
+
"type": "Control<boolean> | boolean",
|
|
10298
|
+
"required": false,
|
|
10299
|
+
"description": "Region visibility — one source of truth across breakpoints: docked collapse on desktop reads as the overlay being closed on mobile"
|
|
10300
|
+
},
|
|
10301
|
+
{
|
|
10302
|
+
"name": "className",
|
|
10303
|
+
"type": "string",
|
|
10304
|
+
"required": false,
|
|
10305
|
+
"description": "Additional CSS class"
|
|
10306
|
+
}
|
|
10307
|
+
]
|
|
10308
|
+
}
|
|
9764
10309
|
}
|
|
9765
10310
|
},
|
|
9766
10311
|
"tokens": [
|