@tangible/ui 0.0.1
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 +100 -0
- package/components/Accordion/Accordion.d.ts +22 -0
- package/components/Accordion/Accordion.js +192 -0
- package/components/Accordion/AccordionContext.d.ts +5 -0
- package/components/Accordion/AccordionContext.js +23 -0
- package/components/Accordion/index.d.ts +2 -0
- package/components/Accordion/index.js +1 -0
- package/components/Accordion/types.d.ts +61 -0
- package/components/Accordion/types.js +1 -0
- package/components/Avatar/Avatar.d.ts +11 -0
- package/components/Avatar/Avatar.js +67 -0
- package/components/Avatar/AvatarGroup.d.ts +11 -0
- package/components/Avatar/AvatarGroup.js +45 -0
- package/components/Avatar/index.d.ts +9 -0
- package/components/Avatar/index.js +7 -0
- package/components/Avatar/types.d.ts +44 -0
- package/components/Avatar/types.js +12 -0
- package/components/Button/Button.d.ts +4 -0
- package/components/Button/Button.js +33 -0
- package/components/Button/index.d.ts +2 -0
- package/components/Button/index.js +1 -0
- package/components/Button/types.d.ts +127 -0
- package/components/Button/types.js +1 -0
- package/components/Card/Card.d.ts +29 -0
- package/components/Card/Card.js +47 -0
- package/components/Card/index.d.ts +2 -0
- package/components/Card/index.js +1 -0
- package/components/Chip/Chip.d.ts +24 -0
- package/components/Chip/Chip.js +37 -0
- package/components/Chip/index.d.ts +2 -0
- package/components/Chip/index.js +1 -0
- package/components/Chips/Chips.d.ts +31 -0
- package/components/Chips/Chips.js +21 -0
- package/components/Chips/index.d.ts +2 -0
- package/components/Chips/index.js +1 -0
- package/components/ContentIndicator/ContentIndicator.d.ts +2 -0
- package/components/ContentIndicator/ContentIndicator.js +21 -0
- package/components/ContentIndicator/index.d.ts +2 -0
- package/components/ContentIndicator/index.js +1 -0
- package/components/ContentIndicator/types.d.ts +57 -0
- package/components/ContentIndicator/types.js +1 -0
- package/components/Dropdown/Dropdown.d.ts +31 -0
- package/components/Dropdown/Dropdown.js +219 -0
- package/components/Dropdown/DropdownContext.d.ts +3 -0
- package/components/Dropdown/DropdownContext.js +9 -0
- package/components/Dropdown/index.d.ts +2 -0
- package/components/Dropdown/index.js +1 -0
- package/components/Dropdown/types.d.ts +102 -0
- package/components/Dropdown/types.js +8 -0
- package/components/Icon/Icon.d.ts +22 -0
- package/components/Icon/Icon.js +24 -0
- package/components/Icon/index.d.ts +2 -0
- package/components/Icon/index.js +1 -0
- package/components/IconButton/IconButton.d.ts +2 -0
- package/components/IconButton/IconButton.js +50 -0
- package/components/IconButton/index.d.ts +2 -0
- package/components/IconButton/index.js +1 -0
- package/components/IconButton/types.d.ts +79 -0
- package/components/IconButton/types.js +1 -0
- package/components/Modal/Modal.d.ts +52 -0
- package/components/Modal/Modal.js +133 -0
- package/components/Modal/context.d.ts +6 -0
- package/components/Modal/context.js +9 -0
- package/components/Modal/index.d.ts +2 -0
- package/components/Modal/index.js +1 -0
- package/components/Notice/Notice.d.ts +93 -0
- package/components/Notice/Notice.js +144 -0
- package/components/Notice/index.d.ts +2 -0
- package/components/Notice/index.js +1 -0
- package/components/OverlapStack/OverlapStack.d.ts +44 -0
- package/components/OverlapStack/OverlapStack.js +41 -0
- package/components/OverlapStack/index.d.ts +2 -0
- package/components/OverlapStack/index.js +1 -0
- package/components/Pager/Pager.d.ts +26 -0
- package/components/Pager/Pager.js +151 -0
- package/components/Pager/index.d.ts +2 -0
- package/components/Pager/index.js +1 -0
- package/components/Progress/Progress.d.ts +2 -0
- package/components/Progress/Progress.js +100 -0
- package/components/Progress/index.d.ts +4 -0
- package/components/Progress/index.js +2 -0
- package/components/Progress/types.d.ts +251 -0
- package/components/Progress/types.js +1 -0
- package/components/Progress/useProgressSegments.d.ts +40 -0
- package/components/Progress/useProgressSegments.js +42 -0
- package/components/Rating/Rating.d.ts +32 -0
- package/components/Rating/Rating.js +74 -0
- package/components/Rating/index.d.ts +2 -0
- package/components/Rating/index.js +1 -0
- package/components/SegmentedControl/SegmentedControl.d.ts +10 -0
- package/components/SegmentedControl/SegmentedControl.js +183 -0
- package/components/SegmentedControl/SegmentedControlContext.d.ts +3 -0
- package/components/SegmentedControl/SegmentedControlContext.js +9 -0
- package/components/SegmentedControl/index.d.ts +2 -0
- package/components/SegmentedControl/index.js +1 -0
- package/components/SegmentedControl/types.d.ts +63 -0
- package/components/SegmentedControl/types.js +1 -0
- package/components/Sidebar/Sidebar.d.ts +17 -0
- package/components/Sidebar/Sidebar.js +107 -0
- package/components/Sidebar/index.d.ts +2 -0
- package/components/Sidebar/index.js +1 -0
- package/components/Sidebar/types.d.ts +65 -0
- package/components/Sidebar/types.js +4 -0
- package/components/StepIndicator/StepIndicator.d.ts +2 -0
- package/components/StepIndicator/StepIndicator.js +64 -0
- package/components/StepIndicator/index.d.ts +2 -0
- package/components/StepIndicator/index.js +1 -0
- package/components/StepIndicator/types.d.ts +68 -0
- package/components/StepIndicator/types.js +1 -0
- package/components/StepList/StepList.d.ts +12 -0
- package/components/StepList/StepList.js +59 -0
- package/components/StepList/StepListContext.d.ts +3 -0
- package/components/StepList/StepListContext.js +9 -0
- package/components/StepList/index.d.ts +2 -0
- package/components/StepList/index.js +1 -0
- package/components/StepList/types.d.ts +91 -0
- package/components/StepList/types.js +4 -0
- package/components/Table/BulkActionsBar.d.ts +12 -0
- package/components/Table/BulkActionsBar.js +9 -0
- package/components/Table/DataTable.d.ts +35 -0
- package/components/Table/DataTable.js +184 -0
- package/components/Table/Pagination.d.ts +13 -0
- package/components/Table/Pagination.js +13 -0
- package/components/Table/index.d.ts +2 -0
- package/components/Table/index.js +1 -0
- package/components/Tabs/Tabs.d.ts +23 -0
- package/components/Tabs/Tabs.js +309 -0
- package/components/Tabs/TabsContext.d.ts +3 -0
- package/components/Tabs/TabsContext.js +12 -0
- package/components/Tabs/index.d.ts +2 -0
- package/components/Tabs/index.js +1 -0
- package/components/Tabs/types.d.ts +75 -0
- package/components/Tabs/types.js +1 -0
- package/components/Toolbar/Toolbar.d.ts +18 -0
- package/components/Toolbar/Toolbar.js +241 -0
- package/components/Toolbar/index.d.ts +2 -0
- package/components/Toolbar/index.js +1 -0
- package/components/Toolbar/types.d.ts +28 -0
- package/components/Toolbar/types.js +1 -0
- package/components/Tooltip/Tooltip.d.ts +15 -0
- package/components/Tooltip/Tooltip.js +166 -0
- package/components/Tooltip/TooltipContext.d.ts +15 -0
- package/components/Tooltip/TooltipContext.js +25 -0
- package/components/Tooltip/index.d.ts +2 -0
- package/components/Tooltip/index.js +1 -0
- package/components/Tooltip/types.d.ts +85 -0
- package/components/Tooltip/types.js +8 -0
- package/components/index.d.ts +52 -0
- package/components/index.js +26 -0
- package/constants.d.ts +16 -0
- package/constants.js +16 -0
- package/icons/cred/index.d.ts +31 -0
- package/icons/cred/index.js +136 -0
- package/icons/icons.svg +155 -0
- package/icons/lms/index.d.ts +21 -0
- package/icons/lms/index.js +81 -0
- package/icons/manifest.json +1226 -0
- package/icons/player/index.d.ts +55 -0
- package/icons/player/index.js +268 -0
- package/icons/reaction/index.d.ts +79 -0
- package/icons/reaction/index.js +400 -0
- package/icons/registry.d.ts +316 -0
- package/icons/registry.js +163 -0
- package/icons/system/index.d.ts +155 -0
- package/icons/system/index.js +818 -0
- package/package.json +121 -0
- package/styles/all.css +1 -0
- package/styles/all.expanded.css +4137 -0
- package/styles/all.expanded.unlayered.css +4137 -0
- package/styles/all.unlayered.css +1 -0
- package/styles/components/_bundle.scss +51 -0
- package/styles/components/index.scss +1 -0
- package/styles/components/input/index.scss +248 -0
- package/styles/index.scss +71 -0
- package/styles/system/_constants.scss +12 -0
- package/styles/system/_motion.scss +47 -0
- package/styles/system/_palette-fns.scss +10 -0
- package/styles/system/_palettes.scss +80 -0
- package/styles/system/_tokens.scss +249 -0
- package/styles/system/index.scss +4 -0
- package/styles/utilities/_index.scss +373 -0
- package/tui-manifest.json +1858 -0
- package/types/index.d.ts +2 -0
- package/types/index.js +1 -0
- package/types/index.ts +2 -0
- package/types/sizes.d.ts +17 -0
- package/types/sizes.js +10 -0
- package/types/sizes.ts +21 -0
- package/types/svg.d.ts +5 -0
- package/types/themes.d.ts +14 -0
- package/types/themes.js +9 -0
- package/types/themes.ts +17 -0
- package/utils/color/contrast.d.ts +33 -0
- package/utils/color/contrast.js +88 -0
- package/utils/color-scheme.d.ts +25 -0
- package/utils/color-scheme.js +55 -0
- package/utils/compose-refs.d.ts +17 -0
- package/utils/compose-refs.js +38 -0
- package/utils/cx.d.ts +12 -0
- package/utils/cx.js +14 -0
- package/utils/focus-trap.d.ts +40 -0
- package/utils/focus-trap.js +93 -0
- package/utils/index.d.ts +10 -0
- package/utils/index.js +16 -0
- package/utils/math.d.ts +4 -0
- package/utils/math.js +19 -0
- package/utils/merge-props.d.ts +25 -0
- package/utils/merge-props.js +60 -0
- package/utils/polymorphic.d.ts +28 -0
- package/utils/polymorphic.js +44 -0
- package/utils/portal.d.ts +11 -0
- package/utils/portal.js +105 -0
|
@@ -0,0 +1,1858 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.0.1",
|
|
3
|
+
"generated": "2026-01-31T03:28:47.490Z",
|
|
4
|
+
"components": {
|
|
5
|
+
"Accordion": {
|
|
6
|
+
"props": {
|
|
7
|
+
"className": {
|
|
8
|
+
"type": "string",
|
|
9
|
+
"required": false
|
|
10
|
+
},
|
|
11
|
+
"value": {
|
|
12
|
+
"type": "string | string[]",
|
|
13
|
+
"required": false,
|
|
14
|
+
"description": "Controlled: currently open item value\nControlled: currently open item values"
|
|
15
|
+
},
|
|
16
|
+
"onValueChange": {
|
|
17
|
+
"type": "((value: string) => void) | ((value: string[]) => void)",
|
|
18
|
+
"required": false,
|
|
19
|
+
"description": "Callback when open item changes (undefined when all closed in collapsible mode)\nCallback when open items change"
|
|
20
|
+
},
|
|
21
|
+
"collapsible": {
|
|
22
|
+
"type": "boolean",
|
|
23
|
+
"required": false,
|
|
24
|
+
"description": "Allow closing all items (otherwise one stays open)"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"cssTokens": [
|
|
28
|
+
"--tui-accordion-bg",
|
|
29
|
+
"--tui-accordion-bg-open",
|
|
30
|
+
"--tui-accordion-border",
|
|
31
|
+
"--tui-accordion-radius",
|
|
32
|
+
"--tui-accordion-padding",
|
|
33
|
+
"--tui-accordion-gap",
|
|
34
|
+
"--tui-accordion-indicator",
|
|
35
|
+
"--tui-accordion-trigger-hover"
|
|
36
|
+
],
|
|
37
|
+
"story": {
|
|
38
|
+
"title": "Components/Accordion",
|
|
39
|
+
"tags": [
|
|
40
|
+
"autodocs",
|
|
41
|
+
"stable"
|
|
42
|
+
]
|
|
43
|
+
},
|
|
44
|
+
"subcomponents": [
|
|
45
|
+
"Item",
|
|
46
|
+
"Trigger",
|
|
47
|
+
"Panel"
|
|
48
|
+
],
|
|
49
|
+
"description": "Expandable content sections with single or multiple selection modes",
|
|
50
|
+
"gotchas": [
|
|
51
|
+
{
|
|
52
|
+
"note": "type='single' allows one panel open at a time; type='multiple' allows many"
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"note": "collapsible prop (single mode only) allows closing the open panel"
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"note": "headingLevel prop wraps trigger in semantic heading element"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"note": "Uses grid-template-rows animation for smooth expand/collapse"
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"note": "Keyboard: Arrow keys navigate triggers, Enter/Space toggle"
|
|
65
|
+
}
|
|
66
|
+
],
|
|
67
|
+
"examples": [
|
|
68
|
+
{
|
|
69
|
+
"name": "Single mode",
|
|
70
|
+
"code": "<Accordion type=\"single\" collapsible defaultValue=\"item1\">\n <Accordion.Item value=\"item1\">\n <Accordion.Trigger>First item</Accordion.Trigger>\n <Accordion.Panel>First content</Accordion.Panel>\n </Accordion.Item>\n <Accordion.Item value=\"item2\">\n <Accordion.Trigger>Second item</Accordion.Trigger>\n <Accordion.Panel>Second content</Accordion.Panel>\n </Accordion.Item>\n</Accordion>"
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"name": "Multiple mode",
|
|
74
|
+
"code": "<Accordion type=\"multiple\" defaultValue={['a', 'b']}>\n <Accordion.Item value=\"a\">\n <Accordion.Trigger>Section A</Accordion.Trigger>\n <Accordion.Panel>Content A</Accordion.Panel>\n </Accordion.Item>\n <Accordion.Item value=\"b\">\n <Accordion.Trigger>Section B</Accordion.Trigger>\n <Accordion.Panel>Content B</Accordion.Panel>\n </Accordion.Item>\n</Accordion>"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"name": "With heading",
|
|
78
|
+
"code": "<Accordion.Item value=\"faq\" headingLevel={3}>\n <Accordion.Trigger>Frequently Asked</Accordion.Trigger>\n <Accordion.Panel>Answer here</Accordion.Panel>\n</Accordion.Item>"
|
|
79
|
+
}
|
|
80
|
+
],
|
|
81
|
+
"related": [
|
|
82
|
+
"Tabs"
|
|
83
|
+
]
|
|
84
|
+
},
|
|
85
|
+
"Avatar": {
|
|
86
|
+
"props": {
|
|
87
|
+
"src": {
|
|
88
|
+
"type": "string",
|
|
89
|
+
"required": false,
|
|
90
|
+
"description": "Image source URL"
|
|
91
|
+
},
|
|
92
|
+
"name": {
|
|
93
|
+
"type": "string",
|
|
94
|
+
"required": false,
|
|
95
|
+
"description": "User's name - used for alt text and generating initials fallback"
|
|
96
|
+
},
|
|
97
|
+
"size": {
|
|
98
|
+
"type": "\"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"xxl\"",
|
|
99
|
+
"required": false,
|
|
100
|
+
"defaultValue": "md",
|
|
101
|
+
"description": "Size of the avatar"
|
|
102
|
+
},
|
|
103
|
+
"shape": {
|
|
104
|
+
"type": "\"circle\" | \"square\"",
|
|
105
|
+
"required": false,
|
|
106
|
+
"defaultValue": "circle",
|
|
107
|
+
"description": "Shape of the avatar"
|
|
108
|
+
},
|
|
109
|
+
"indicator": {
|
|
110
|
+
"type": "ReactNode",
|
|
111
|
+
"required": false,
|
|
112
|
+
"description": "Status indicator element (icon, badge, etc.)"
|
|
113
|
+
},
|
|
114
|
+
"indicatorLabel": {
|
|
115
|
+
"type": "string",
|
|
116
|
+
"required": false,
|
|
117
|
+
"description": "Accessible label for the indicator (e.g., \"Online\", \"Verified\", \"3 notifications\")"
|
|
118
|
+
},
|
|
119
|
+
"indicatorPosition": {
|
|
120
|
+
"type": "\"top-left\" | \"top-right\" | \"bottom-left\" | \"bottom-right\"",
|
|
121
|
+
"required": false,
|
|
122
|
+
"defaultValue": "bottom-right",
|
|
123
|
+
"description": "Position of the indicator"
|
|
124
|
+
},
|
|
125
|
+
"className": {
|
|
126
|
+
"type": "string",
|
|
127
|
+
"required": false,
|
|
128
|
+
"description": "Additional CSS class"
|
|
129
|
+
}
|
|
130
|
+
},
|
|
131
|
+
"cssTokens": [],
|
|
132
|
+
"story": {
|
|
133
|
+
"title": "Primitives/Avatar",
|
|
134
|
+
"tags": [
|
|
135
|
+
"autodocs",
|
|
136
|
+
"stable"
|
|
137
|
+
]
|
|
138
|
+
},
|
|
139
|
+
"subcomponents": null,
|
|
140
|
+
"description": null,
|
|
141
|
+
"gotchas": null,
|
|
142
|
+
"examples": null,
|
|
143
|
+
"related": null
|
|
144
|
+
},
|
|
145
|
+
"Button": {
|
|
146
|
+
"props": {
|
|
147
|
+
"label": {
|
|
148
|
+
"type": "ReactNode",
|
|
149
|
+
"required": false,
|
|
150
|
+
"description": "Button label text. If provided, renders as the button content.\nUse this for simple text buttons."
|
|
151
|
+
},
|
|
152
|
+
"children": {
|
|
153
|
+
"type": "ReactNode",
|
|
154
|
+
"required": false,
|
|
155
|
+
"description": "Rich content for the button. Used when label is not provided.\nUse this for buttons with custom markup."
|
|
156
|
+
},
|
|
157
|
+
"size": {
|
|
158
|
+
"type": "\"xs\" | \"sm\" | \"md\" | \"lg\"",
|
|
159
|
+
"required": false,
|
|
160
|
+
"defaultValue": "md",
|
|
161
|
+
"description": "Size of the button."
|
|
162
|
+
},
|
|
163
|
+
"theme": {
|
|
164
|
+
"type": "\"primary\" | \"secondary\" | \"danger\" | \"destructive\"",
|
|
165
|
+
"required": false,
|
|
166
|
+
"defaultValue": "primary",
|
|
167
|
+
"description": "Semantic color theme.\nNote: Defaults to 'primary' (unlike IconButton which defaults to 'secondary')\nbecause Buttons are typically primary CTAs."
|
|
168
|
+
},
|
|
169
|
+
"variant": {
|
|
170
|
+
"type": "\"solid\" | \"outline\" | \"ghost\" | \"link\"",
|
|
171
|
+
"required": false,
|
|
172
|
+
"defaultValue": "solid",
|
|
173
|
+
"description": "Visual style variant."
|
|
174
|
+
},
|
|
175
|
+
"fullWidth": {
|
|
176
|
+
"type": "boolean",
|
|
177
|
+
"required": false,
|
|
178
|
+
"defaultValue": "false",
|
|
179
|
+
"description": "Make button full width of container."
|
|
180
|
+
},
|
|
181
|
+
"disabled": {
|
|
182
|
+
"type": "boolean",
|
|
183
|
+
"required": false,
|
|
184
|
+
"defaultValue": "false",
|
|
185
|
+
"description": "Disabled state. Prevents interaction."
|
|
186
|
+
},
|
|
187
|
+
"loading": {
|
|
188
|
+
"type": "boolean",
|
|
189
|
+
"required": false,
|
|
190
|
+
"defaultValue": "false",
|
|
191
|
+
"description": "Loading state. Shows spinner and prevents interaction."
|
|
192
|
+
},
|
|
193
|
+
"target": {
|
|
194
|
+
"type": "HTMLAttributeAnchorTarget",
|
|
195
|
+
"required": false,
|
|
196
|
+
"description": "Link target (for anchor variant)."
|
|
197
|
+
},
|
|
198
|
+
"rel": {
|
|
199
|
+
"type": "string",
|
|
200
|
+
"required": false,
|
|
201
|
+
"description": "Link rel attribute (for anchor variant)."
|
|
202
|
+
},
|
|
203
|
+
"onClick": {
|
|
204
|
+
"type": "(MouseEventHandler<HTMLButtonElement | HTMLAnchorElement> & MouseEventHandler<HTMLButtonElement>) | (MouseEventHandler<...> & MouseEventHandler<...>)",
|
|
205
|
+
"required": false,
|
|
206
|
+
"description": "Click handler. Works for both button and anchor variants."
|
|
207
|
+
},
|
|
208
|
+
"leftIconName": {
|
|
209
|
+
"type": "IconName",
|
|
210
|
+
"required": false,
|
|
211
|
+
"description": "Icon to display before the label.\nUse icon registry paths like \"system/check\".\n@example leftIconName=\"system/check\""
|
|
212
|
+
},
|
|
213
|
+
"rightIconName": {
|
|
214
|
+
"type": "IconName",
|
|
215
|
+
"required": false,
|
|
216
|
+
"description": "Icon to display after the label.\nUse icon registry paths like \"system/chevron-right\".\n@example rightIconName=\"system/chevron-right\""
|
|
217
|
+
},
|
|
218
|
+
"leftIcon": {
|
|
219
|
+
"type": "ReactNode",
|
|
220
|
+
"required": false,
|
|
221
|
+
"description": "Custom left icon element. Overrides leftIconName."
|
|
222
|
+
},
|
|
223
|
+
"rightIcon": {
|
|
224
|
+
"type": "ReactNode",
|
|
225
|
+
"required": false,
|
|
226
|
+
"description": "Custom right icon element. Overrides rightIconName."
|
|
227
|
+
},
|
|
228
|
+
"iconSize": {
|
|
229
|
+
"type": "\"xs\" | \"sm\" | \"md\" | \"lg\"",
|
|
230
|
+
"required": false,
|
|
231
|
+
"defaultValue": "sm",
|
|
232
|
+
"description": "Size of icons."
|
|
233
|
+
},
|
|
234
|
+
"className": {
|
|
235
|
+
"type": "string",
|
|
236
|
+
"required": false,
|
|
237
|
+
"description": "Additional CSS class names.\nNote: Use sparingly. Prefer component API tokens for customization."
|
|
238
|
+
},
|
|
239
|
+
"style": {
|
|
240
|
+
"type": "CSSProperties",
|
|
241
|
+
"required": false,
|
|
242
|
+
"description": "Inline styles."
|
|
243
|
+
},
|
|
244
|
+
"id": {
|
|
245
|
+
"type": "string",
|
|
246
|
+
"required": false
|
|
247
|
+
},
|
|
248
|
+
"title": {
|
|
249
|
+
"type": "string",
|
|
250
|
+
"required": false
|
|
251
|
+
},
|
|
252
|
+
"role": {
|
|
253
|
+
"type": "AriaRole",
|
|
254
|
+
"required": false
|
|
255
|
+
},
|
|
256
|
+
"onChange": {
|
|
257
|
+
"type": "FormEventHandler<HTMLButtonElement> | FormEventHandler<HTMLAnchorElement>",
|
|
258
|
+
"required": false
|
|
259
|
+
},
|
|
260
|
+
"href": {
|
|
261
|
+
"type": "string",
|
|
262
|
+
"required": false,
|
|
263
|
+
"description": "URL for the link. When provided, Button renders as <a>."
|
|
264
|
+
}
|
|
265
|
+
},
|
|
266
|
+
"cssTokens": [
|
|
267
|
+
"--tui-button-bg",
|
|
268
|
+
"--tui-button-fg",
|
|
269
|
+
"--tui-button-border",
|
|
270
|
+
"--tui-button-radius",
|
|
271
|
+
"--tui-button-bg-interact",
|
|
272
|
+
"--tui-button-fg-interact",
|
|
273
|
+
"--tui-button-border-interact"
|
|
274
|
+
],
|
|
275
|
+
"story": {
|
|
276
|
+
"title": "Primitives/Button",
|
|
277
|
+
"tags": [
|
|
278
|
+
"autodocs",
|
|
279
|
+
"stable"
|
|
280
|
+
]
|
|
281
|
+
},
|
|
282
|
+
"subcomponents": null,
|
|
283
|
+
"description": "Primary action button with polymorphic rendering (button or anchor)",
|
|
284
|
+
"gotchas": [
|
|
285
|
+
{
|
|
286
|
+
"note": "Renders as <a> when href is provided - TypeScript discriminates the union"
|
|
287
|
+
},
|
|
288
|
+
{
|
|
289
|
+
"note": "Uses !important for bg/color/border to defeat WordPress button styles"
|
|
290
|
+
},
|
|
291
|
+
{
|
|
292
|
+
"note": "Don't use raw <a> for navigation links in button contexts",
|
|
293
|
+
"instead": "Button variant='link' href={...}"
|
|
294
|
+
},
|
|
295
|
+
{
|
|
296
|
+
"note": "loading state replaces left icon with spinner and disables interaction"
|
|
297
|
+
}
|
|
298
|
+
],
|
|
299
|
+
"examples": [
|
|
300
|
+
{
|
|
301
|
+
"name": "Primary CTA",
|
|
302
|
+
"code": "<Button label=\"Save Changes\" />"
|
|
303
|
+
},
|
|
304
|
+
{
|
|
305
|
+
"name": "With icon",
|
|
306
|
+
"code": "<Button label=\"Add Item\" leftIconName=\"system/plus\" />"
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
"name": "As link",
|
|
310
|
+
"code": "<Button label=\"Learn more\" href=\"/docs\" variant=\"link\" />"
|
|
311
|
+
},
|
|
312
|
+
{
|
|
313
|
+
"name": "Danger action",
|
|
314
|
+
"code": "<Button label=\"Delete\" theme=\"danger\" leftIconName=\"system/trash\" />"
|
|
315
|
+
},
|
|
316
|
+
{
|
|
317
|
+
"name": "Secondary outline",
|
|
318
|
+
"code": "<Button label=\"Cancel\" variant=\"outline\" theme=\"secondary\" />"
|
|
319
|
+
}
|
|
320
|
+
],
|
|
321
|
+
"related": [
|
|
322
|
+
"IconButton"
|
|
323
|
+
]
|
|
324
|
+
},
|
|
325
|
+
"Card": {
|
|
326
|
+
"props": {
|
|
327
|
+
"inline": {
|
|
328
|
+
"type": "boolean",
|
|
329
|
+
"required": false
|
|
330
|
+
},
|
|
331
|
+
"elevated": {
|
|
332
|
+
"type": "boolean",
|
|
333
|
+
"required": false
|
|
334
|
+
},
|
|
335
|
+
"interactive": {
|
|
336
|
+
"type": "boolean",
|
|
337
|
+
"required": false
|
|
338
|
+
},
|
|
339
|
+
"disabled": {
|
|
340
|
+
"type": "boolean",
|
|
341
|
+
"required": false
|
|
342
|
+
},
|
|
343
|
+
"className": {
|
|
344
|
+
"type": "string",
|
|
345
|
+
"required": false
|
|
346
|
+
},
|
|
347
|
+
"style": {
|
|
348
|
+
"type": "CSSProperties",
|
|
349
|
+
"required": false
|
|
350
|
+
},
|
|
351
|
+
"as": {
|
|
352
|
+
"type": "\"article\" | \"div\" | \"section\"",
|
|
353
|
+
"required": false
|
|
354
|
+
},
|
|
355
|
+
"onClick": {
|
|
356
|
+
"type": "MouseEventHandler<HTMLElement>",
|
|
357
|
+
"required": false
|
|
358
|
+
},
|
|
359
|
+
"title": {
|
|
360
|
+
"type": "string",
|
|
361
|
+
"required": false
|
|
362
|
+
},
|
|
363
|
+
"id": {
|
|
364
|
+
"type": "string",
|
|
365
|
+
"required": false
|
|
366
|
+
},
|
|
367
|
+
"role": {
|
|
368
|
+
"type": "AriaRole",
|
|
369
|
+
"required": false
|
|
370
|
+
},
|
|
371
|
+
"rel": {
|
|
372
|
+
"type": "string",
|
|
373
|
+
"required": false
|
|
374
|
+
},
|
|
375
|
+
"onChange": {
|
|
376
|
+
"type": "FormEventHandler<HTMLElement> | FormEventHandler<HTMLDivElement>",
|
|
377
|
+
"required": false
|
|
378
|
+
}
|
|
379
|
+
},
|
|
380
|
+
"cssTokens": [
|
|
381
|
+
"--tui-card-bg",
|
|
382
|
+
"--tui-card-border",
|
|
383
|
+
"--tui-card-border-interact",
|
|
384
|
+
"--tui-card-radius",
|
|
385
|
+
"--tui-card-shadow",
|
|
386
|
+
"--tui-card-shadow-interact",
|
|
387
|
+
"--tui-card-padding",
|
|
388
|
+
"--tui-card-foot-basis"
|
|
389
|
+
],
|
|
390
|
+
"story": {
|
|
391
|
+
"title": "Components/Card",
|
|
392
|
+
"tags": [
|
|
393
|
+
"autodocs",
|
|
394
|
+
"stable"
|
|
395
|
+
]
|
|
396
|
+
},
|
|
397
|
+
"subcomponents": [
|
|
398
|
+
"Head",
|
|
399
|
+
"Body",
|
|
400
|
+
"Foot",
|
|
401
|
+
"Link"
|
|
402
|
+
],
|
|
403
|
+
"description": "Content container with semantic structure and optional inline layout",
|
|
404
|
+
"gotchas": [
|
|
405
|
+
{
|
|
406
|
+
"note": "Uses container queries for responsive inline layout, not viewport media queries"
|
|
407
|
+
},
|
|
408
|
+
{
|
|
409
|
+
"note": "Card.Link creates a stretched link covering the entire card - use for clickable cards"
|
|
410
|
+
},
|
|
411
|
+
{
|
|
412
|
+
"note": "interactive prop enables hover states; combine with onClick for full button semantics"
|
|
413
|
+
}
|
|
414
|
+
],
|
|
415
|
+
"examples": [
|
|
416
|
+
{
|
|
417
|
+
"name": "Basic",
|
|
418
|
+
"code": "<Card><Card.Head>Title</Card.Head><Card.Body>Content here</Card.Body></Card>"
|
|
419
|
+
},
|
|
420
|
+
{
|
|
421
|
+
"name": "With footer",
|
|
422
|
+
"code": "<Card><Card.Body>Content</Card.Body><Card.Foot><Button label=\"Action\" /></Card.Foot></Card>"
|
|
423
|
+
},
|
|
424
|
+
{
|
|
425
|
+
"name": "Clickable card",
|
|
426
|
+
"code": "<Card interactive><Card.Body>Click me<Card.Link href=\"/details\" /></Card.Body></Card>"
|
|
427
|
+
},
|
|
428
|
+
{
|
|
429
|
+
"name": "Elevated",
|
|
430
|
+
"code": "<Card elevated><Card.Body>Shadowed card</Card.Body></Card>"
|
|
431
|
+
}
|
|
432
|
+
],
|
|
433
|
+
"related": [
|
|
434
|
+
"Notice"
|
|
435
|
+
]
|
|
436
|
+
},
|
|
437
|
+
"Chip": {
|
|
438
|
+
"props": {
|
|
439
|
+
"as": {
|
|
440
|
+
"type": "\"span\" | \"div\" | \"a\"",
|
|
441
|
+
"required": false,
|
|
442
|
+
"defaultValue": "span"
|
|
443
|
+
},
|
|
444
|
+
"href": {
|
|
445
|
+
"type": "string",
|
|
446
|
+
"required": false
|
|
447
|
+
},
|
|
448
|
+
"target": {
|
|
449
|
+
"type": "HTMLAttributeAnchorTarget",
|
|
450
|
+
"required": false
|
|
451
|
+
},
|
|
452
|
+
"rel": {
|
|
453
|
+
"type": "string",
|
|
454
|
+
"required": false
|
|
455
|
+
},
|
|
456
|
+
"size": {
|
|
457
|
+
"type": "\"xs\" | \"sm\" | \"md\"",
|
|
458
|
+
"required": false,
|
|
459
|
+
"defaultValue": "md"
|
|
460
|
+
},
|
|
461
|
+
"theme": {
|
|
462
|
+
"type": "\"primary\" | \"secondary\" | \"success\" | \"warning\" | \"danger\"",
|
|
463
|
+
"required": false,
|
|
464
|
+
"defaultValue": "secondary"
|
|
465
|
+
},
|
|
466
|
+
"variant": {
|
|
467
|
+
"type": "\"default\" | \"outline\" | \"ghost\" | \"solid\" | \"flush\"",
|
|
468
|
+
"required": false,
|
|
469
|
+
"defaultValue": "default"
|
|
470
|
+
},
|
|
471
|
+
"selected": {
|
|
472
|
+
"type": "boolean",
|
|
473
|
+
"required": false
|
|
474
|
+
},
|
|
475
|
+
"disabled": {
|
|
476
|
+
"type": "boolean",
|
|
477
|
+
"required": false
|
|
478
|
+
},
|
|
479
|
+
"interactive": {
|
|
480
|
+
"type": "boolean",
|
|
481
|
+
"required": false
|
|
482
|
+
},
|
|
483
|
+
"className": {
|
|
484
|
+
"type": "string",
|
|
485
|
+
"required": false
|
|
486
|
+
},
|
|
487
|
+
"leftIcon": {
|
|
488
|
+
"type": "ReactNode",
|
|
489
|
+
"required": false
|
|
490
|
+
},
|
|
491
|
+
"rightIcon": {
|
|
492
|
+
"type": "ReactNode",
|
|
493
|
+
"required": false
|
|
494
|
+
},
|
|
495
|
+
"onClick": {
|
|
496
|
+
"type": "MouseEventHandler<HTMLElement>",
|
|
497
|
+
"required": false
|
|
498
|
+
},
|
|
499
|
+
"id": {
|
|
500
|
+
"type": "string",
|
|
501
|
+
"required": false
|
|
502
|
+
},
|
|
503
|
+
"style": {
|
|
504
|
+
"type": "CSSProperties",
|
|
505
|
+
"required": false
|
|
506
|
+
},
|
|
507
|
+
"title": {
|
|
508
|
+
"type": "string",
|
|
509
|
+
"required": false
|
|
510
|
+
},
|
|
511
|
+
"role": {
|
|
512
|
+
"type": "AriaRole",
|
|
513
|
+
"required": false
|
|
514
|
+
},
|
|
515
|
+
"onChange": {
|
|
516
|
+
"type": "FormEventHandler<HTMLSpanElement>",
|
|
517
|
+
"required": false
|
|
518
|
+
}
|
|
519
|
+
},
|
|
520
|
+
"cssTokens": [],
|
|
521
|
+
"story": {
|
|
522
|
+
"title": "Primitives/Chip",
|
|
523
|
+
"tags": [
|
|
524
|
+
"autodocs",
|
|
525
|
+
"stable"
|
|
526
|
+
]
|
|
527
|
+
},
|
|
528
|
+
"subcomponents": null,
|
|
529
|
+
"description": null,
|
|
530
|
+
"gotchas": null,
|
|
531
|
+
"examples": null,
|
|
532
|
+
"related": null
|
|
533
|
+
},
|
|
534
|
+
"Chips": {
|
|
535
|
+
"props": {
|
|
536
|
+
"density": {
|
|
537
|
+
"type": "\"xs\" | \"sm\" | \"md\"",
|
|
538
|
+
"required": false,
|
|
539
|
+
"defaultValue": "sm",
|
|
540
|
+
"description": "Gap between chips"
|
|
541
|
+
},
|
|
542
|
+
"className": {
|
|
543
|
+
"type": "string",
|
|
544
|
+
"required": false
|
|
545
|
+
},
|
|
546
|
+
"role": {
|
|
547
|
+
"type": "AriaRole",
|
|
548
|
+
"required": false,
|
|
549
|
+
"defaultValue": "group"
|
|
550
|
+
}
|
|
551
|
+
},
|
|
552
|
+
"cssTokens": [],
|
|
553
|
+
"story": {
|
|
554
|
+
"title": "Composites/Chips",
|
|
555
|
+
"tags": [
|
|
556
|
+
"autodocs",
|
|
557
|
+
"stable"
|
|
558
|
+
]
|
|
559
|
+
},
|
|
560
|
+
"subcomponents": null,
|
|
561
|
+
"description": null,
|
|
562
|
+
"gotchas": null,
|
|
563
|
+
"examples": null,
|
|
564
|
+
"related": null
|
|
565
|
+
},
|
|
566
|
+
"ContentIndicator": {
|
|
567
|
+
"props": {
|
|
568
|
+
"icon": {
|
|
569
|
+
"type": "IconName",
|
|
570
|
+
"required": true,
|
|
571
|
+
"description": "Icon to display in the center.\nUses the icon registry path format: \"category/name\"\n@example \"lms/question-mark\""
|
|
572
|
+
},
|
|
573
|
+
"size": {
|
|
574
|
+
"type": "\"xs\" | \"sm\" | \"md\" | \"lg\"",
|
|
575
|
+
"required": false,
|
|
576
|
+
"defaultValue": "'sm'",
|
|
577
|
+
"description": "Size of the indicator.\n- `'xs'`: 16px circle\n- `'sm'`: 24px circle (default)\n- `'md'`: 32px circle\n- `'lg'`: 40px circle"
|
|
578
|
+
},
|
|
579
|
+
"theme": {
|
|
580
|
+
"type": "\"default\" | \"info\" | \"success\" | \"warning\" | \"danger\"",
|
|
581
|
+
"required": false,
|
|
582
|
+
"defaultValue": "'default'",
|
|
583
|
+
"description": "Color theme for the indicator."
|
|
584
|
+
},
|
|
585
|
+
"variant": {
|
|
586
|
+
"type": "\"ring\" | \"solid\"",
|
|
587
|
+
"required": false,
|
|
588
|
+
"defaultValue": "'ring'",
|
|
589
|
+
"description": "Visual variant.\n- `'ring'`: Hollow circle with border (default)\n- `'solid'`: Filled circle with icon in contrasting color"
|
|
590
|
+
},
|
|
591
|
+
"label": {
|
|
592
|
+
"type": "string",
|
|
593
|
+
"required": false,
|
|
594
|
+
"description": "Accessible label for the indicator.\nRequired for meaningful icons. Omit only if the icon is purely decorative\nand context is provided by surrounding content."
|
|
595
|
+
},
|
|
596
|
+
"className": {
|
|
597
|
+
"type": "string",
|
|
598
|
+
"required": false,
|
|
599
|
+
"description": "Additional CSS class names."
|
|
600
|
+
}
|
|
601
|
+
},
|
|
602
|
+
"cssTokens": [],
|
|
603
|
+
"story": {
|
|
604
|
+
"title": "Primitives/ContentIndicator",
|
|
605
|
+
"tags": [
|
|
606
|
+
"autodocs",
|
|
607
|
+
"stable",
|
|
608
|
+
"lms"
|
|
609
|
+
]
|
|
610
|
+
},
|
|
611
|
+
"subcomponents": null,
|
|
612
|
+
"description": null,
|
|
613
|
+
"gotchas": null,
|
|
614
|
+
"examples": null,
|
|
615
|
+
"related": null
|
|
616
|
+
},
|
|
617
|
+
"Dropdown": {
|
|
618
|
+
"props": {
|
|
619
|
+
"open": {
|
|
620
|
+
"type": "boolean",
|
|
621
|
+
"required": false,
|
|
622
|
+
"description": "Controlled open state."
|
|
623
|
+
},
|
|
624
|
+
"defaultOpen": {
|
|
625
|
+
"type": "boolean",
|
|
626
|
+
"required": false,
|
|
627
|
+
"defaultValue": "false",
|
|
628
|
+
"description": "Default open state for uncontrolled usage."
|
|
629
|
+
}
|
|
630
|
+
},
|
|
631
|
+
"cssTokens": [],
|
|
632
|
+
"story": {
|
|
633
|
+
"title": "Primitives/Dropdown",
|
|
634
|
+
"tags": [
|
|
635
|
+
"autodocs",
|
|
636
|
+
"stable"
|
|
637
|
+
]
|
|
638
|
+
},
|
|
639
|
+
"subcomponents": null,
|
|
640
|
+
"description": null,
|
|
641
|
+
"gotchas": null,
|
|
642
|
+
"examples": null,
|
|
643
|
+
"related": null
|
|
644
|
+
},
|
|
645
|
+
"Icon": {
|
|
646
|
+
"props": {
|
|
647
|
+
"name": {
|
|
648
|
+
"type": "IconName",
|
|
649
|
+
"required": false,
|
|
650
|
+
"description": "Icon name from registry (e.g., \"system/check\")"
|
|
651
|
+
},
|
|
652
|
+
"emoji": {
|
|
653
|
+
"type": "string",
|
|
654
|
+
"required": false,
|
|
655
|
+
"description": "Emoji or unicode character (alternative to name)"
|
|
656
|
+
},
|
|
657
|
+
"label": {
|
|
658
|
+
"type": "string",
|
|
659
|
+
"required": false,
|
|
660
|
+
"description": "Accessible label for informative icons. Required if icon conveys meaning."
|
|
661
|
+
},
|
|
662
|
+
"size": {
|
|
663
|
+
"type": "\"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"xxl\"",
|
|
664
|
+
"required": false,
|
|
665
|
+
"description": "Icon size. Defaults to inherit from parent font-size."
|
|
666
|
+
},
|
|
667
|
+
"className": {
|
|
668
|
+
"type": "string",
|
|
669
|
+
"required": false
|
|
670
|
+
}
|
|
671
|
+
},
|
|
672
|
+
"cssTokens": [],
|
|
673
|
+
"story": {
|
|
674
|
+
"title": "Primitives/Icon",
|
|
675
|
+
"tags": [
|
|
676
|
+
"autodocs",
|
|
677
|
+
"stable"
|
|
678
|
+
]
|
|
679
|
+
},
|
|
680
|
+
"subcomponents": null,
|
|
681
|
+
"description": null,
|
|
682
|
+
"gotchas": null,
|
|
683
|
+
"examples": null,
|
|
684
|
+
"related": null
|
|
685
|
+
},
|
|
686
|
+
"IconButton": {
|
|
687
|
+
"props": {
|
|
688
|
+
"icon": {
|
|
689
|
+
"type": "IconName",
|
|
690
|
+
"required": true,
|
|
691
|
+
"description": "Icon to display. Required — this is the button's visual content.\n@example icon=\"system/close\""
|
|
692
|
+
},
|
|
693
|
+
"label": {
|
|
694
|
+
"type": "string",
|
|
695
|
+
"required": true,
|
|
696
|
+
"description": "Accessible label. Required — icon-only buttons must have a label\nfor screen readers since there's no visible text.\n@example label=\"Close modal\""
|
|
697
|
+
},
|
|
698
|
+
"size": {
|
|
699
|
+
"type": "\"xs\" | \"sm\" | \"md\" | \"lg\"",
|
|
700
|
+
"required": false,
|
|
701
|
+
"defaultValue": "'sm'",
|
|
702
|
+
"description": "Size of the button.\n- `'xs'`: 24px\n- `'sm'`: 32px (default)\n- `'md'`: 40px\n- `'lg'`: 48px"
|
|
703
|
+
},
|
|
704
|
+
"theme": {
|
|
705
|
+
"type": "\"primary\" | \"secondary\" | \"danger\"",
|
|
706
|
+
"required": false,
|
|
707
|
+
"defaultValue": "'secondary'",
|
|
708
|
+
"description": "Semantic color theme.\nNote: Defaults to 'secondary' (unlike Button which defaults to 'primary')\nbecause IconButtons are typically used for toolbar/utility actions."
|
|
709
|
+
},
|
|
710
|
+
"variant": {
|
|
711
|
+
"type": "\"solid\" | \"outline\" | \"ghost\"",
|
|
712
|
+
"required": false,
|
|
713
|
+
"defaultValue": "'ghost'",
|
|
714
|
+
"description": "Visual style variant.\n- `'solid'`: Filled background\n- `'outline'`: Border only, transparent background\n- `'ghost'`: No border or background, icon only"
|
|
715
|
+
},
|
|
716
|
+
"disabled": {
|
|
717
|
+
"type": "boolean",
|
|
718
|
+
"required": false,
|
|
719
|
+
"description": "Disabled state."
|
|
720
|
+
},
|
|
721
|
+
"loading": {
|
|
722
|
+
"type": "boolean",
|
|
723
|
+
"required": false,
|
|
724
|
+
"description": "Loading state — shows spinner, disables interaction."
|
|
725
|
+
},
|
|
726
|
+
"pressed": {
|
|
727
|
+
"type": "boolean",
|
|
728
|
+
"required": false,
|
|
729
|
+
"description": "Pressed state for toggle buttons.\nWhen true, applies aria-pressed=\"true\" and active styling.\n@example pressed={isMuted}"
|
|
730
|
+
},
|
|
731
|
+
"showTooltip": {
|
|
732
|
+
"type": "boolean",
|
|
733
|
+
"required": false,
|
|
734
|
+
"defaultValue": "false",
|
|
735
|
+
"description": "Show the label as a tooltip on hover.\nSince icon-only buttons have no visible text, this helps sighted\nusers discover what the button does."
|
|
736
|
+
},
|
|
737
|
+
"tooltipSide": {
|
|
738
|
+
"type": "\"top\" | \"right\" | \"bottom\" | \"left\"",
|
|
739
|
+
"required": false,
|
|
740
|
+
"defaultValue": "'top'",
|
|
741
|
+
"description": "Tooltip placement side."
|
|
742
|
+
},
|
|
743
|
+
"className": {
|
|
744
|
+
"type": "string",
|
|
745
|
+
"required": false,
|
|
746
|
+
"description": "Additional CSS class names."
|
|
747
|
+
},
|
|
748
|
+
"id": {
|
|
749
|
+
"type": "string",
|
|
750
|
+
"required": false
|
|
751
|
+
},
|
|
752
|
+
"style": {
|
|
753
|
+
"type": "CSSProperties",
|
|
754
|
+
"required": false
|
|
755
|
+
},
|
|
756
|
+
"title": {
|
|
757
|
+
"type": "string",
|
|
758
|
+
"required": false
|
|
759
|
+
},
|
|
760
|
+
"role": {
|
|
761
|
+
"type": "AriaRole",
|
|
762
|
+
"required": false
|
|
763
|
+
},
|
|
764
|
+
"rel": {
|
|
765
|
+
"type": "string",
|
|
766
|
+
"required": false
|
|
767
|
+
},
|
|
768
|
+
"onChange": {
|
|
769
|
+
"type": "FormEventHandler<HTMLButtonElement> | FormEventHandler<HTMLAnchorElement>",
|
|
770
|
+
"required": false
|
|
771
|
+
},
|
|
772
|
+
"onClick": {
|
|
773
|
+
"type": "MouseEventHandler<HTMLButtonElement> | MouseEventHandler<HTMLAnchorElement>",
|
|
774
|
+
"required": false
|
|
775
|
+
},
|
|
776
|
+
"href": {
|
|
777
|
+
"type": "string",
|
|
778
|
+
"required": false
|
|
779
|
+
},
|
|
780
|
+
"target": {
|
|
781
|
+
"type": "HTMLAttributeAnchorTarget",
|
|
782
|
+
"required": false
|
|
783
|
+
}
|
|
784
|
+
},
|
|
785
|
+
"cssTokens": [],
|
|
786
|
+
"story": {
|
|
787
|
+
"title": "Primitives/IconButton",
|
|
788
|
+
"tags": [
|
|
789
|
+
"autodocs",
|
|
790
|
+
"stable"
|
|
791
|
+
]
|
|
792
|
+
},
|
|
793
|
+
"subcomponents": null,
|
|
794
|
+
"description": null,
|
|
795
|
+
"gotchas": null,
|
|
796
|
+
"examples": null,
|
|
797
|
+
"related": null
|
|
798
|
+
},
|
|
799
|
+
"Modal": {
|
|
800
|
+
"props": {
|
|
801
|
+
"onClose": {
|
|
802
|
+
"type": "() => void",
|
|
803
|
+
"required": true
|
|
804
|
+
},
|
|
805
|
+
"size": {
|
|
806
|
+
"type": "\"sm\" | \"md\" | \"lg\"",
|
|
807
|
+
"required": false
|
|
808
|
+
}
|
|
809
|
+
},
|
|
810
|
+
"cssTokens": [
|
|
811
|
+
"--tui-modal-z",
|
|
812
|
+
"--tui-modal-max",
|
|
813
|
+
"--tui-modal-backdrop",
|
|
814
|
+
"--tui-modal-bg",
|
|
815
|
+
"--tui-modal-border",
|
|
816
|
+
"--tui-modal-radius",
|
|
817
|
+
"--tui-modal-padding",
|
|
818
|
+
"--tui-modal-shadow"
|
|
819
|
+
],
|
|
820
|
+
"story": {
|
|
821
|
+
"title": "Components/Modal",
|
|
822
|
+
"tags": [
|
|
823
|
+
"autodocs",
|
|
824
|
+
"stable"
|
|
825
|
+
]
|
|
826
|
+
},
|
|
827
|
+
"subcomponents": [
|
|
828
|
+
"Head",
|
|
829
|
+
"Body",
|
|
830
|
+
"Foot",
|
|
831
|
+
"Close"
|
|
832
|
+
],
|
|
833
|
+
"description": "Accessible dialog with focus trap, backdrop, and portal rendering",
|
|
834
|
+
"gotchas": [
|
|
835
|
+
{
|
|
836
|
+
"note": "Always provide labelledBy pointing to a heading id for accessibility"
|
|
837
|
+
},
|
|
838
|
+
{
|
|
839
|
+
"note": "Body uses two-layer wrapper for scroll + :has() composition"
|
|
840
|
+
},
|
|
841
|
+
{
|
|
842
|
+
"note": "Portals to nearest .tui-interface ancestor or creates one"
|
|
843
|
+
},
|
|
844
|
+
{
|
|
845
|
+
"note": "showCloseButton adds built-in dismiss; use Modal.Close for custom placement"
|
|
846
|
+
},
|
|
847
|
+
{
|
|
848
|
+
"note": "stickyHead/stickyFoot keep header/footer visible when body scrolls"
|
|
849
|
+
}
|
|
850
|
+
],
|
|
851
|
+
"examples": [
|
|
852
|
+
{
|
|
853
|
+
"name": "Basic",
|
|
854
|
+
"code": "<Modal isOpen={open} onClose={close} labelledBy=\"modal-title\">\n <Modal.Head><h2 id=\"modal-title\">Title</h2></Modal.Head>\n <Modal.Body>Content</Modal.Body>\n <Modal.Foot><Button label=\"Close\" onClick={close} /></Modal.Foot>\n</Modal>"
|
|
855
|
+
},
|
|
856
|
+
{
|
|
857
|
+
"name": "With close button",
|
|
858
|
+
"code": "<Modal isOpen={open} onClose={close} showCloseButton labelledBy=\"title\">\n <Modal.Head><h2 id=\"title\">Confirm</h2></Modal.Head>\n <Modal.Body>Are you sure?</Modal.Body>\n</Modal>"
|
|
859
|
+
}
|
|
860
|
+
],
|
|
861
|
+
"related": [
|
|
862
|
+
"Notice"
|
|
863
|
+
]
|
|
864
|
+
},
|
|
865
|
+
"Notice": {
|
|
866
|
+
"props": {
|
|
867
|
+
"inline": {
|
|
868
|
+
"type": "boolean",
|
|
869
|
+
"required": false,
|
|
870
|
+
"description": "Inline layout: icon/title on left, content center, actions right"
|
|
871
|
+
},
|
|
872
|
+
"elevated": {
|
|
873
|
+
"type": "boolean",
|
|
874
|
+
"required": false,
|
|
875
|
+
"description": "Add box shadow"
|
|
876
|
+
},
|
|
877
|
+
"interactive": {
|
|
878
|
+
"type": "boolean",
|
|
879
|
+
"required": false,
|
|
880
|
+
"description": "Enable hover/focus visual states. If combined with onClick,\nadds role=\"button\" and keyboard handling (Enter/Space)."
|
|
881
|
+
},
|
|
882
|
+
"disabled": {
|
|
883
|
+
"type": "boolean",
|
|
884
|
+
"required": false,
|
|
885
|
+
"description": "Disable interactions"
|
|
886
|
+
},
|
|
887
|
+
"stripe": {
|
|
888
|
+
"type": "boolean",
|
|
889
|
+
"required": false,
|
|
890
|
+
"description": "Show left accent stripe in theme color"
|
|
891
|
+
},
|
|
892
|
+
"className": {
|
|
893
|
+
"type": "string",
|
|
894
|
+
"required": false
|
|
895
|
+
},
|
|
896
|
+
"style": {
|
|
897
|
+
"type": "CSSProperties",
|
|
898
|
+
"required": false
|
|
899
|
+
},
|
|
900
|
+
"as": {
|
|
901
|
+
"type": "\"section\" | \"div\"",
|
|
902
|
+
"required": false
|
|
903
|
+
},
|
|
904
|
+
"theme": {
|
|
905
|
+
"type": "\"info\" | \"success\" | \"warning\" | \"danger\"",
|
|
906
|
+
"required": false,
|
|
907
|
+
"description": "Visual intent"
|
|
908
|
+
},
|
|
909
|
+
"announce": {
|
|
910
|
+
"type": "\"off\" | \"assertive\" | \"polite\"",
|
|
911
|
+
"required": false,
|
|
912
|
+
"description": "Controls screen-reader announcement behavior.\n- off: no live region\n- polite: role=status\n- assertive: role=alert"
|
|
913
|
+
},
|
|
914
|
+
"ariaLabel": {
|
|
915
|
+
"type": "string",
|
|
916
|
+
"required": false,
|
|
917
|
+
"description": "Accessible name when there is no visible title in Notice.Head.\nOnly use when Notice.Head has no title prop - if both exist, the visible title takes precedence."
|
|
918
|
+
},
|
|
919
|
+
"dismissible": {
|
|
920
|
+
"type": "boolean",
|
|
921
|
+
"required": false,
|
|
922
|
+
"description": "Renders a dismiss button"
|
|
923
|
+
},
|
|
924
|
+
"onDismiss": {
|
|
925
|
+
"type": "() => void",
|
|
926
|
+
"required": false
|
|
927
|
+
},
|
|
928
|
+
"exitAnimation": {
|
|
929
|
+
"type": "\"none\" | \"collapse\" | \"fade\"",
|
|
930
|
+
"required": false,
|
|
931
|
+
"description": "Exit animation to play when dismissed.\n- none: onDismiss called immediately (default)\n- collapse: fade + height collapse (for inline/block notices)\n- fade: fade out with slight scale (for overlays/toasts)"
|
|
932
|
+
},
|
|
933
|
+
"focusable": {
|
|
934
|
+
"type": "boolean",
|
|
935
|
+
"required": false,
|
|
936
|
+
"description": "If true, the notice container will be focusable (tabIndex=-1).\nUseful for programmatic focus management in toast/notification systems.\nNot for keyboard navigation - use interactive + onClick for clickable notices."
|
|
937
|
+
},
|
|
938
|
+
"onClick": {
|
|
939
|
+
"type": "MouseEventHandler<HTMLElement>",
|
|
940
|
+
"required": false
|
|
941
|
+
},
|
|
942
|
+
"title": {
|
|
943
|
+
"type": "string",
|
|
944
|
+
"required": false
|
|
945
|
+
},
|
|
946
|
+
"id": {
|
|
947
|
+
"type": "string",
|
|
948
|
+
"required": false
|
|
949
|
+
},
|
|
950
|
+
"role": {
|
|
951
|
+
"type": "AriaRole",
|
|
952
|
+
"required": false
|
|
953
|
+
},
|
|
954
|
+
"rel": {
|
|
955
|
+
"type": "string",
|
|
956
|
+
"required": false
|
|
957
|
+
},
|
|
958
|
+
"onChange": {
|
|
959
|
+
"type": "FormEventHandler<HTMLElement> | FormEventHandler<HTMLDivElement>",
|
|
960
|
+
"required": false
|
|
961
|
+
}
|
|
962
|
+
},
|
|
963
|
+
"cssTokens": [
|
|
964
|
+
"--tui-notice-bg",
|
|
965
|
+
"--tui-notice-border",
|
|
966
|
+
"--tui-notice-stripe",
|
|
967
|
+
"--tui-notice-fg",
|
|
968
|
+
"--tui-notice-radius",
|
|
969
|
+
"--tui-notice-padding",
|
|
970
|
+
"--tui-notice-foot-basis"
|
|
971
|
+
],
|
|
972
|
+
"story": {
|
|
973
|
+
"title": "Components/Notice",
|
|
974
|
+
"tags": [
|
|
975
|
+
"autodocs",
|
|
976
|
+
"stable"
|
|
977
|
+
]
|
|
978
|
+
},
|
|
979
|
+
"subcomponents": [
|
|
980
|
+
"Head",
|
|
981
|
+
"Body",
|
|
982
|
+
"Foot"
|
|
983
|
+
],
|
|
984
|
+
"description": "Contextual message component with semantic themes and optional dismissal",
|
|
985
|
+
"gotchas": [
|
|
986
|
+
{
|
|
987
|
+
"note": "Use announce='polite' for status messages, 'assertive' for alerts"
|
|
988
|
+
},
|
|
989
|
+
{
|
|
990
|
+
"note": "stripe prop adds left accent bar in theme color"
|
|
991
|
+
},
|
|
992
|
+
{
|
|
993
|
+
"note": "Exit animations via ref: noticeRef.current.exit('collapse')"
|
|
994
|
+
},
|
|
995
|
+
{
|
|
996
|
+
"note": "Has default export (unlike other components) - should be removed"
|
|
997
|
+
},
|
|
998
|
+
{
|
|
999
|
+
"note": "Uses container queries for responsive inline layout"
|
|
1000
|
+
}
|
|
1001
|
+
],
|
|
1002
|
+
"examples": [
|
|
1003
|
+
{
|
|
1004
|
+
"name": "Info",
|
|
1005
|
+
"code": "<Notice theme=\"info\" stripe>\n <Notice.Head icon={<Icon name=\"system/help\" />} title=\"Did you know?\" />\n <Notice.Body>Here's some helpful information.</Notice.Body>\n</Notice>"
|
|
1006
|
+
},
|
|
1007
|
+
{
|
|
1008
|
+
"name": "Dismissible warning",
|
|
1009
|
+
"code": "<Notice theme=\"warning\" dismissible onDismiss={() => setShow(false)}>\n <Notice.Body>This action cannot be undone.</Notice.Body>\n</Notice>"
|
|
1010
|
+
},
|
|
1011
|
+
{
|
|
1012
|
+
"name": "Alert",
|
|
1013
|
+
"code": "<Notice theme=\"danger\" announce=\"assertive\">\n <Notice.Head title=\"Error\" />\n <Notice.Body>Something went wrong.</Notice.Body>\n</Notice>"
|
|
1014
|
+
}
|
|
1015
|
+
],
|
|
1016
|
+
"related": [
|
|
1017
|
+
"Card",
|
|
1018
|
+
"Modal"
|
|
1019
|
+
]
|
|
1020
|
+
},
|
|
1021
|
+
"OverlapStack": {
|
|
1022
|
+
"props": {
|
|
1023
|
+
"overlap": {
|
|
1024
|
+
"type": "string | number",
|
|
1025
|
+
"required": false,
|
|
1026
|
+
"description": "Overlap amount in pixels (negative) or CSS length string."
|
|
1027
|
+
},
|
|
1028
|
+
"max": {
|
|
1029
|
+
"type": "number",
|
|
1030
|
+
"required": false,
|
|
1031
|
+
"description": "Maximum visible items. Overflow becomes +N badge."
|
|
1032
|
+
},
|
|
1033
|
+
"frame": {
|
|
1034
|
+
"type": "boolean",
|
|
1035
|
+
"required": false,
|
|
1036
|
+
"description": "Enable clipping frame on item wrappers.\nAdds border-radius and overflow:hidden. Customise via tokens:\n- `--tui-overlap-stack-item-radius` (default: full)\n- `--tui-overlap-stack-border-width` (default: 0)\n- `--tui-overlap-stack-border-color` (default: bg-surface)"
|
|
1037
|
+
},
|
|
1038
|
+
"renderOverflow": {
|
|
1039
|
+
"type": "(count: number) => ReactNode",
|
|
1040
|
+
"required": false,
|
|
1041
|
+
"description": "Custom renderer for overflow badge. Receives count of hidden items."
|
|
1042
|
+
},
|
|
1043
|
+
"overflowLabel": {
|
|
1044
|
+
"type": "(count: number) => string",
|
|
1045
|
+
"required": false,
|
|
1046
|
+
"defaultValue": "(count: number) => `${count} more`",
|
|
1047
|
+
"description": "Accessible label for the overflow badge. For i18n support.\nFunction receives count and returns label string."
|
|
1048
|
+
},
|
|
1049
|
+
"children": {
|
|
1050
|
+
"type": "ReactNode",
|
|
1051
|
+
"required": true,
|
|
1052
|
+
"description": "Children to stack"
|
|
1053
|
+
},
|
|
1054
|
+
"className": {
|
|
1055
|
+
"type": "string",
|
|
1056
|
+
"required": false,
|
|
1057
|
+
"description": "Additional class name"
|
|
1058
|
+
},
|
|
1059
|
+
"style": {
|
|
1060
|
+
"type": "CSSProperties",
|
|
1061
|
+
"required": false,
|
|
1062
|
+
"description": "Inline styles"
|
|
1063
|
+
}
|
|
1064
|
+
},
|
|
1065
|
+
"cssTokens": [],
|
|
1066
|
+
"story": {
|
|
1067
|
+
"title": "Components/OverlapStack",
|
|
1068
|
+
"tags": [
|
|
1069
|
+
"autodocs",
|
|
1070
|
+
"stable"
|
|
1071
|
+
]
|
|
1072
|
+
},
|
|
1073
|
+
"subcomponents": null,
|
|
1074
|
+
"description": null,
|
|
1075
|
+
"gotchas": null,
|
|
1076
|
+
"examples": null,
|
|
1077
|
+
"related": null
|
|
1078
|
+
},
|
|
1079
|
+
"Pager": {
|
|
1080
|
+
"props": {
|
|
1081
|
+
"currentPage": {
|
|
1082
|
+
"type": "number",
|
|
1083
|
+
"required": true,
|
|
1084
|
+
"description": "Current page (1-indexed)"
|
|
1085
|
+
},
|
|
1086
|
+
"totalPages": {
|
|
1087
|
+
"type": "number",
|
|
1088
|
+
"required": true,
|
|
1089
|
+
"description": "Total number of pages"
|
|
1090
|
+
},
|
|
1091
|
+
"pageSize": {
|
|
1092
|
+
"type": "number",
|
|
1093
|
+
"required": false,
|
|
1094
|
+
"description": "Current page size (for page size selector)"
|
|
1095
|
+
},
|
|
1096
|
+
"pageSizeOptions": {
|
|
1097
|
+
"type": "number[]",
|
|
1098
|
+
"required": false,
|
|
1099
|
+
"description": "Available page size options"
|
|
1100
|
+
},
|
|
1101
|
+
"mode": {
|
|
1102
|
+
"type": "\"simple\" | \"ends\" | \"full\" | \"smart\"",
|
|
1103
|
+
"required": false,
|
|
1104
|
+
"defaultValue": "smart",
|
|
1105
|
+
"description": "Pagination mode: 'simple' (prev/next only), 'ends', 'full', 'smart'"
|
|
1106
|
+
},
|
|
1107
|
+
"maxNumbers": {
|
|
1108
|
+
"type": "number",
|
|
1109
|
+
"required": false,
|
|
1110
|
+
"defaultValue": "7",
|
|
1111
|
+
"description": "Max page number buttons in smart mode"
|
|
1112
|
+
},
|
|
1113
|
+
"navStyle": {
|
|
1114
|
+
"type": "\"text\" | \"icon\"",
|
|
1115
|
+
"required": false,
|
|
1116
|
+
"defaultValue": "text",
|
|
1117
|
+
"description": "Style for prev/next: 'text' shows labels, 'icon' shows chevrons"
|
|
1118
|
+
},
|
|
1119
|
+
"className": {
|
|
1120
|
+
"type": "string",
|
|
1121
|
+
"required": false,
|
|
1122
|
+
"description": "Additional class name"
|
|
1123
|
+
}
|
|
1124
|
+
},
|
|
1125
|
+
"cssTokens": [],
|
|
1126
|
+
"story": {
|
|
1127
|
+
"title": "Primitives/Pager",
|
|
1128
|
+
"tags": [
|
|
1129
|
+
"autodocs",
|
|
1130
|
+
"stable"
|
|
1131
|
+
]
|
|
1132
|
+
},
|
|
1133
|
+
"subcomponents": null,
|
|
1134
|
+
"description": null,
|
|
1135
|
+
"gotchas": null,
|
|
1136
|
+
"examples": null,
|
|
1137
|
+
"related": null
|
|
1138
|
+
},
|
|
1139
|
+
"Progress": {
|
|
1140
|
+
"props": {
|
|
1141
|
+
"children": {
|
|
1142
|
+
"type": "ReactNode",
|
|
1143
|
+
"required": false,
|
|
1144
|
+
"description": "Custom content to render inside the progress indicator.\n- Line mode with `inside`: Replaces default content inside the bar\n- Circle mode with `inside`: Replaces centered content\n- Segmented mode: Replaces the segment labels area below the bar"
|
|
1145
|
+
},
|
|
1146
|
+
"size": {
|
|
1147
|
+
"type": "\"xs\" | \"sm\" | \"md\" | \"lg\"",
|
|
1148
|
+
"required": false,
|
|
1149
|
+
"defaultValue": "'md'",
|
|
1150
|
+
"description": "Size of the progress bar, affecting height and font size.\n- `'xs'`: 12px font, thinnest bar (for dense step indicators)\n- `'sm'`: 14px font, thinner bar\n- `'md'`: 16px font, standard bar (default)\n- `'lg'`: 20px font, thicker bar"
|
|
1151
|
+
},
|
|
1152
|
+
"max": {
|
|
1153
|
+
"type": "number",
|
|
1154
|
+
"required": false,
|
|
1155
|
+
"defaultValue": "100",
|
|
1156
|
+
"description": "Maximum value for the progress calculation.\nProgress percentage = (value / max) × 100"
|
|
1157
|
+
},
|
|
1158
|
+
"showLabels": {
|
|
1159
|
+
"type": "boolean",
|
|
1160
|
+
"required": false,
|
|
1161
|
+
"defaultValue": "true",
|
|
1162
|
+
"description": "Whether to display labels.\nWhen false, hides all label content regardless of other props."
|
|
1163
|
+
},
|
|
1164
|
+
"labelledBy": {
|
|
1165
|
+
"type": "string",
|
|
1166
|
+
"required": false,
|
|
1167
|
+
"description": "ARIA: ID of an element that labels this progress bar.\nTakes precedence over `ariaLabel` and `defaultLabel`."
|
|
1168
|
+
},
|
|
1169
|
+
"ariaLabel": {
|
|
1170
|
+
"type": "string",
|
|
1171
|
+
"required": false,
|
|
1172
|
+
"description": "ARIA: Accessible name for the progress bar.\nUse when no visible label exists. Takes precedence over `defaultLabel`."
|
|
1173
|
+
},
|
|
1174
|
+
"defaultLabel": {
|
|
1175
|
+
"type": "string",
|
|
1176
|
+
"required": false,
|
|
1177
|
+
"description": "Fallback accessible name, rendered as visually-hidden text.\nOnly used if neither `labelledBy` nor `ariaLabel` is provided."
|
|
1178
|
+
},
|
|
1179
|
+
"className": {
|
|
1180
|
+
"type": "string",
|
|
1181
|
+
"required": false,
|
|
1182
|
+
"description": "Additional CSS class names to apply to the root element."
|
|
1183
|
+
},
|
|
1184
|
+
"mode": {
|
|
1185
|
+
"type": "\"line\" | \"circle\"",
|
|
1186
|
+
"required": false,
|
|
1187
|
+
"defaultValue": "'line'\n'line'",
|
|
1188
|
+
"description": "Display mode. Segmented progress only supports line mode.\nDisplay mode of the progress indicator.\n- `'line'`: Horizontal bar (default)\n- `'circle'`: Circular/ring indicator"
|
|
1189
|
+
},
|
|
1190
|
+
"segments": {
|
|
1191
|
+
"type": "ProgressSegment[]",
|
|
1192
|
+
"required": false,
|
|
1193
|
+
"description": "Segments to display, ordered front-to-back (z1, z2, z3...).\nMaximum 5 segments have default colors; beyond that, override via CSS.\nNot available in standard mode. Use segmented mode instead."
|
|
1194
|
+
},
|
|
1195
|
+
"value": {
|
|
1196
|
+
"type": "number",
|
|
1197
|
+
"required": false,
|
|
1198
|
+
"defaultValue": "0",
|
|
1199
|
+
"description": "Not available in segmented mode.\nCurrent progress value (0–100, or use with `max` prop)."
|
|
1200
|
+
},
|
|
1201
|
+
"indeterminate": {
|
|
1202
|
+
"type": "boolean",
|
|
1203
|
+
"required": false,
|
|
1204
|
+
"defaultValue": "false",
|
|
1205
|
+
"description": "Not supported in segmented mode.\nWhen true, shows an animated indeterminate state.\nUse for operations where progress percentage is unknown.\nIgnores `value` when enabled."
|
|
1206
|
+
},
|
|
1207
|
+
"labelPosition": {
|
|
1208
|
+
"type": "\"above\" | \"inline\" | \"below\" | \"inside\"",
|
|
1209
|
+
"required": false,
|
|
1210
|
+
"defaultValue": "'inline'",
|
|
1211
|
+
"description": "Not available in segmented mode. Labels appear below the bar.\nWhere to display the labels relative to the progress bar.\n- `'above'`: Labels in a row above the bar\n- `'inline'`: Labels beside the bar horizontally (default)\n- `'below'`: Labels in a row below the bar\n- `'inside'`: Label content inside/overlapping the bar (or centered in circle)\n\nWhen both `labelStart` and `labelEnd` are provided with `above`, `inline`,\nor `below`, they appear on opposite sides (space-between)."
|
|
1212
|
+
},
|
|
1213
|
+
"labelStart": {
|
|
1214
|
+
"type": "ReactNode",
|
|
1215
|
+
"required": false,
|
|
1216
|
+
"description": "Not available in segmented mode.\nLabel content for the start (left) position.\nUse with `labelPosition` to control placement.\n@example labelStart=\"33% Complete\""
|
|
1217
|
+
},
|
|
1218
|
+
"labelEnd": {
|
|
1219
|
+
"type": "ReactNode",
|
|
1220
|
+
"required": false,
|
|
1221
|
+
"description": "Not available in segmented mode.\nLabel content for the end (right) position.\nUse with `labelPosition` to control placement.\n@example labelEnd=\"3/9 Steps\""
|
|
1222
|
+
},
|
|
1223
|
+
"variant": {
|
|
1224
|
+
"type": "\"ring\" | \"solid\"",
|
|
1225
|
+
"required": false,
|
|
1226
|
+
"defaultValue": "'ring'",
|
|
1227
|
+
"description": "Visual variant for circle mode.\n- `'ring'`: Hollow centre (default) — shows progress as a ring/donut\n- `'solid'`: Filled centre — shows as a solid filled circle\n\nOnly applies when `mode=\"circle\"`. Ignored in line mode."
|
|
1228
|
+
}
|
|
1229
|
+
},
|
|
1230
|
+
"cssTokens": [],
|
|
1231
|
+
"story": {
|
|
1232
|
+
"title": "Primitives/Progress",
|
|
1233
|
+
"tags": [
|
|
1234
|
+
"autodocs",
|
|
1235
|
+
"stable"
|
|
1236
|
+
]
|
|
1237
|
+
},
|
|
1238
|
+
"subcomponents": null,
|
|
1239
|
+
"description": null,
|
|
1240
|
+
"gotchas": null,
|
|
1241
|
+
"examples": null,
|
|
1242
|
+
"related": null
|
|
1243
|
+
},
|
|
1244
|
+
"Rating": {
|
|
1245
|
+
"props": {
|
|
1246
|
+
"value": {
|
|
1247
|
+
"type": "number",
|
|
1248
|
+
"required": false,
|
|
1249
|
+
"description": "Controlled value (1..max). Use with onChange"
|
|
1250
|
+
},
|
|
1251
|
+
"max": {
|
|
1252
|
+
"type": "number",
|
|
1253
|
+
"required": false,
|
|
1254
|
+
"defaultValue": "5",
|
|
1255
|
+
"description": "Maximum icons shown"
|
|
1256
|
+
},
|
|
1257
|
+
"disabled": {
|
|
1258
|
+
"type": "boolean",
|
|
1259
|
+
"required": false,
|
|
1260
|
+
"description": "Disable interaction (keeps semantics)"
|
|
1261
|
+
},
|
|
1262
|
+
"readOnly": {
|
|
1263
|
+
"type": "boolean",
|
|
1264
|
+
"required": false,
|
|
1265
|
+
"description": "Presentational readOnly (no form semantics)"
|
|
1266
|
+
},
|
|
1267
|
+
"name": {
|
|
1268
|
+
"type": "string",
|
|
1269
|
+
"required": false,
|
|
1270
|
+
"description": "Name for the radio group (if you care about form posts)"
|
|
1271
|
+
},
|
|
1272
|
+
"size": {
|
|
1273
|
+
"type": "\"sm\" | \"md\" | \"lg\"",
|
|
1274
|
+
"required": false,
|
|
1275
|
+
"defaultValue": "lg",
|
|
1276
|
+
"description": "Size maps to icon + spacing"
|
|
1277
|
+
},
|
|
1278
|
+
"theme": {
|
|
1279
|
+
"type": "\"primary\" | \"secondary\" | \"success\" | \"warning\" | \"danger\"",
|
|
1280
|
+
"required": false,
|
|
1281
|
+
"defaultValue": "secondary",
|
|
1282
|
+
"description": "Theme feeds foreground color tokens"
|
|
1283
|
+
},
|
|
1284
|
+
"onChange": {
|
|
1285
|
+
"type": "(value: number) => void",
|
|
1286
|
+
"required": false,
|
|
1287
|
+
"description": "Called on change (controlled or uncontrolled)"
|
|
1288
|
+
},
|
|
1289
|
+
"allowClear": {
|
|
1290
|
+
"type": "boolean",
|
|
1291
|
+
"required": false,
|
|
1292
|
+
"description": "Allow clicking the current selection to clear back to 0"
|
|
1293
|
+
},
|
|
1294
|
+
"className": {
|
|
1295
|
+
"type": "string",
|
|
1296
|
+
"required": false
|
|
1297
|
+
},
|
|
1298
|
+
"gap": {
|
|
1299
|
+
"type": "string",
|
|
1300
|
+
"required": false,
|
|
1301
|
+
"description": "Gap override (e.g. '0.25rem') – otherwise uses density utilities"
|
|
1302
|
+
},
|
|
1303
|
+
"ariaLabel": {
|
|
1304
|
+
"type": "string",
|
|
1305
|
+
"required": false,
|
|
1306
|
+
"description": "Accessible label for the rating group. Defaults to \"Rating: X of Y\""
|
|
1307
|
+
}
|
|
1308
|
+
},
|
|
1309
|
+
"cssTokens": [],
|
|
1310
|
+
"story": {
|
|
1311
|
+
"title": "Primitives/Rating",
|
|
1312
|
+
"tags": [
|
|
1313
|
+
"autodocs",
|
|
1314
|
+
"stable"
|
|
1315
|
+
]
|
|
1316
|
+
},
|
|
1317
|
+
"subcomponents": null,
|
|
1318
|
+
"description": null,
|
|
1319
|
+
"gotchas": null,
|
|
1320
|
+
"examples": null,
|
|
1321
|
+
"related": null
|
|
1322
|
+
},
|
|
1323
|
+
"SegmentedControl": {
|
|
1324
|
+
"props": {
|
|
1325
|
+
"value": {
|
|
1326
|
+
"type": "SegmentedControlValue",
|
|
1327
|
+
"required": false,
|
|
1328
|
+
"description": "Controlled selected value"
|
|
1329
|
+
},
|
|
1330
|
+
"onValueChange": {
|
|
1331
|
+
"type": "(value: SegmentedControlValue) => void",
|
|
1332
|
+
"required": false,
|
|
1333
|
+
"description": "Callback when selection changes"
|
|
1334
|
+
},
|
|
1335
|
+
"variant": {
|
|
1336
|
+
"type": "\"pill\" | \"outline\" | \"underline\"",
|
|
1337
|
+
"required": false,
|
|
1338
|
+
"description": "Visual style"
|
|
1339
|
+
},
|
|
1340
|
+
"size": {
|
|
1341
|
+
"type": "\"sm\" | \"md\"",
|
|
1342
|
+
"required": false,
|
|
1343
|
+
"description": "Size scale"
|
|
1344
|
+
},
|
|
1345
|
+
"orientation": {
|
|
1346
|
+
"type": "\"horizontal\" | \"vertical\"",
|
|
1347
|
+
"required": false,
|
|
1348
|
+
"description": "Layout direction"
|
|
1349
|
+
},
|
|
1350
|
+
"loop": {
|
|
1351
|
+
"type": "boolean",
|
|
1352
|
+
"required": false,
|
|
1353
|
+
"description": "Whether arrow keys wrap around"
|
|
1354
|
+
},
|
|
1355
|
+
"disabled": {
|
|
1356
|
+
"type": "boolean",
|
|
1357
|
+
"required": false,
|
|
1358
|
+
"description": "Disable all items"
|
|
1359
|
+
},
|
|
1360
|
+
"className": {
|
|
1361
|
+
"type": "string",
|
|
1362
|
+
"required": false,
|
|
1363
|
+
"description": "Additional classes"
|
|
1364
|
+
}
|
|
1365
|
+
},
|
|
1366
|
+
"cssTokens": [],
|
|
1367
|
+
"story": {
|
|
1368
|
+
"title": "Components/SegmentedControl",
|
|
1369
|
+
"tags": [
|
|
1370
|
+
"autodocs",
|
|
1371
|
+
"stable"
|
|
1372
|
+
]
|
|
1373
|
+
},
|
|
1374
|
+
"subcomponents": null,
|
|
1375
|
+
"description": null,
|
|
1376
|
+
"gotchas": null,
|
|
1377
|
+
"examples": null,
|
|
1378
|
+
"related": null
|
|
1379
|
+
},
|
|
1380
|
+
"Sidebar": {
|
|
1381
|
+
"props": {
|
|
1382
|
+
"position": {
|
|
1383
|
+
"type": "\"left\" | \"right\"",
|
|
1384
|
+
"required": false,
|
|
1385
|
+
"defaultValue": "'left'",
|
|
1386
|
+
"description": "Sidebar position. Affects border placement and drawer slide direction."
|
|
1387
|
+
},
|
|
1388
|
+
"drawer": {
|
|
1389
|
+
"type": "boolean",
|
|
1390
|
+
"required": false,
|
|
1391
|
+
"defaultValue": "false",
|
|
1392
|
+
"description": "Enable drawer mode (mobile overlay).\nWhen true, sidebar renders via portal with backdrop and focus trap."
|
|
1393
|
+
},
|
|
1394
|
+
"isOpen": {
|
|
1395
|
+
"type": "boolean",
|
|
1396
|
+
"required": false,
|
|
1397
|
+
"description": "Drawer open state. Required when `drawer={true}`."
|
|
1398
|
+
},
|
|
1399
|
+
"onClose": {
|
|
1400
|
+
"type": "() => void",
|
|
1401
|
+
"required": false,
|
|
1402
|
+
"description": "Callback to close the drawer.\nCalled when ESC is pressed or backdrop is clicked."
|
|
1403
|
+
},
|
|
1404
|
+
"ariaLabel": {
|
|
1405
|
+
"type": "string",
|
|
1406
|
+
"required": false,
|
|
1407
|
+
"description": "Accessible label for the aside landmark.\nTypically omit this if using `ariaLabel` on `Sidebar.Nav` instead."
|
|
1408
|
+
},
|
|
1409
|
+
"children": {
|
|
1410
|
+
"type": "ReactNode",
|
|
1411
|
+
"required": true,
|
|
1412
|
+
"description": "Sidebar content (Header, Nav, etc.)."
|
|
1413
|
+
},
|
|
1414
|
+
"className": {
|
|
1415
|
+
"type": "string",
|
|
1416
|
+
"required": false,
|
|
1417
|
+
"description": "Additional CSS class names."
|
|
1418
|
+
}
|
|
1419
|
+
},
|
|
1420
|
+
"cssTokens": [],
|
|
1421
|
+
"story": {
|
|
1422
|
+
"title": "Components/Sidebar",
|
|
1423
|
+
"tags": [
|
|
1424
|
+
"autodocs",
|
|
1425
|
+
"stable",
|
|
1426
|
+
"lms"
|
|
1427
|
+
]
|
|
1428
|
+
},
|
|
1429
|
+
"subcomponents": null,
|
|
1430
|
+
"description": null,
|
|
1431
|
+
"gotchas": null,
|
|
1432
|
+
"examples": null,
|
|
1433
|
+
"related": null
|
|
1434
|
+
},
|
|
1435
|
+
"StepIndicator": {
|
|
1436
|
+
"props": {
|
|
1437
|
+
"value": {
|
|
1438
|
+
"type": "number",
|
|
1439
|
+
"required": false,
|
|
1440
|
+
"defaultValue": "0",
|
|
1441
|
+
"description": "Progress value (0-100).\n\nStatus is inferred from value by default:\n- `value = 0` → not-started\n- `0 < value < 100` → in-progress\n- `value >= 100` → complete\n\nUse the `status` prop to override inference (e.g., for locked steps)."
|
|
1442
|
+
},
|
|
1443
|
+
"status": {
|
|
1444
|
+
"type": "\"not-started\" | \"in-progress\" | \"complete\" | \"locked\"",
|
|
1445
|
+
"required": false,
|
|
1446
|
+
"description": "Override the inferred status.\n\nBy default, status is derived from `value`. Set this explicitly for:\n- `'locked'` — Shows lock icon regardless of value\n- Force a specific state when value doesn't reflect actual status"
|
|
1447
|
+
},
|
|
1448
|
+
"icon": {
|
|
1449
|
+
"type": "IconName",
|
|
1450
|
+
"required": false,
|
|
1451
|
+
"description": "Custom icon to display instead of the default status icons.\n\n- Shows for `not-started` and `in-progress` states\n- `complete` always shows checkmark (completion is universal)\n- `locked` always shows lock (access restriction is universal)\n\nUse for content-type indicators like quizzes, readings, videos.\n@example icon=\"lms/question-mark\""
|
|
1452
|
+
},
|
|
1453
|
+
"size": {
|
|
1454
|
+
"type": "\"xs\" | \"sm\" | \"md\" | \"lg\"",
|
|
1455
|
+
"required": false,
|
|
1456
|
+
"defaultValue": "'sm'",
|
|
1457
|
+
"description": "Size of the indicator.\n- `'xs'`: 16px circle\n- `'sm'`: 24px circle (default)\n- `'md'`: 32px circle\n- `'lg'`: 40px circle"
|
|
1458
|
+
},
|
|
1459
|
+
"showValue": {
|
|
1460
|
+
"type": "boolean",
|
|
1461
|
+
"required": false,
|
|
1462
|
+
"defaultValue": "false",
|
|
1463
|
+
"description": "Show percentage text in center (only visible for in-progress status)."
|
|
1464
|
+
},
|
|
1465
|
+
"label": {
|
|
1466
|
+
"type": "string",
|
|
1467
|
+
"required": false,
|
|
1468
|
+
"description": "Accessible label for the indicator.\nUsed as aria-label when the indicator conveys unique information.\nIf omitted, defaults to \"Step status: {status}\"."
|
|
1469
|
+
},
|
|
1470
|
+
"className": {
|
|
1471
|
+
"type": "string",
|
|
1472
|
+
"required": false,
|
|
1473
|
+
"description": "Additional CSS class names."
|
|
1474
|
+
}
|
|
1475
|
+
},
|
|
1476
|
+
"cssTokens": [],
|
|
1477
|
+
"story": {
|
|
1478
|
+
"title": "Primitives/StepIndicator",
|
|
1479
|
+
"tags": [
|
|
1480
|
+
"autodocs",
|
|
1481
|
+
"stable",
|
|
1482
|
+
"lms"
|
|
1483
|
+
]
|
|
1484
|
+
},
|
|
1485
|
+
"subcomponents": null,
|
|
1486
|
+
"description": null,
|
|
1487
|
+
"gotchas": null,
|
|
1488
|
+
"examples": null,
|
|
1489
|
+
"related": null
|
|
1490
|
+
},
|
|
1491
|
+
"StepList": {
|
|
1492
|
+
"props": {
|
|
1493
|
+
"ariaLabel": {
|
|
1494
|
+
"type": "string",
|
|
1495
|
+
"required": false,
|
|
1496
|
+
"description": "Accessible label for the navigation landmark.\nUse either `ariaLabel` or `ariaLabelledBy`, not both."
|
|
1497
|
+
},
|
|
1498
|
+
"ariaLabelledBy": {
|
|
1499
|
+
"type": "string",
|
|
1500
|
+
"required": false,
|
|
1501
|
+
"description": "ID of a visible heading that labels the navigation.\nUse either `ariaLabel` or `ariaLabelledBy`, not both."
|
|
1502
|
+
},
|
|
1503
|
+
"ariaCurrent": {
|
|
1504
|
+
"type": "\"step\" | \"page\"",
|
|
1505
|
+
"required": false,
|
|
1506
|
+
"defaultValue": "'step'",
|
|
1507
|
+
"description": "What `aria-current` value to use for the current item.\n- `'step'`: For step-by-step progressions (default)\n- `'page'`: For page navigation"
|
|
1508
|
+
},
|
|
1509
|
+
"current": {
|
|
1510
|
+
"type": "string",
|
|
1511
|
+
"required": false,
|
|
1512
|
+
"description": "Value of the currently active step.\nThe matching StepList.Item will receive `aria-current` and current styling."
|
|
1513
|
+
},
|
|
1514
|
+
"children": {
|
|
1515
|
+
"type": "ReactNode",
|
|
1516
|
+
"required": true,
|
|
1517
|
+
"description": "StepList.Item children."
|
|
1518
|
+
},
|
|
1519
|
+
"className": {
|
|
1520
|
+
"type": "string",
|
|
1521
|
+
"required": false,
|
|
1522
|
+
"description": "Additional CSS class names."
|
|
1523
|
+
}
|
|
1524
|
+
},
|
|
1525
|
+
"cssTokens": [],
|
|
1526
|
+
"story": {
|
|
1527
|
+
"title": "Components/StepList",
|
|
1528
|
+
"tags": [
|
|
1529
|
+
"autodocs",
|
|
1530
|
+
"stable",
|
|
1531
|
+
"lms"
|
|
1532
|
+
]
|
|
1533
|
+
},
|
|
1534
|
+
"subcomponents": null,
|
|
1535
|
+
"description": null,
|
|
1536
|
+
"gotchas": null,
|
|
1537
|
+
"examples": null,
|
|
1538
|
+
"related": null
|
|
1539
|
+
},
|
|
1540
|
+
"Tabs": {
|
|
1541
|
+
"props": {
|
|
1542
|
+
"variant": {
|
|
1543
|
+
"type": "\"pill\" | \"underline\" | \"outline\"",
|
|
1544
|
+
"required": false,
|
|
1545
|
+
"description": "Visual style"
|
|
1546
|
+
},
|
|
1547
|
+
"activationMode": {
|
|
1548
|
+
"type": "\"auto\" | \"manual\"",
|
|
1549
|
+
"required": false,
|
|
1550
|
+
"description": "Auto: select on focus. Manual: arrow keys move focus only, Enter/Space selects."
|
|
1551
|
+
},
|
|
1552
|
+
"value": {
|
|
1553
|
+
"type": "string",
|
|
1554
|
+
"required": false,
|
|
1555
|
+
"description": "Controlled active tab"
|
|
1556
|
+
},
|
|
1557
|
+
"onValueChange": {
|
|
1558
|
+
"type": "(value: string) => void",
|
|
1559
|
+
"required": false,
|
|
1560
|
+
"description": "Callback when active tab changes"
|
|
1561
|
+
},
|
|
1562
|
+
"orientation": {
|
|
1563
|
+
"type": "\"horizontal\" | \"vertical\"",
|
|
1564
|
+
"required": false,
|
|
1565
|
+
"description": "Affects arrow key mapping and aria-orientation"
|
|
1566
|
+
},
|
|
1567
|
+
"className": {
|
|
1568
|
+
"type": "string",
|
|
1569
|
+
"required": false,
|
|
1570
|
+
"description": "Additional classes"
|
|
1571
|
+
}
|
|
1572
|
+
},
|
|
1573
|
+
"cssTokens": [
|
|
1574
|
+
"--tui-tabs-gap",
|
|
1575
|
+
"--tui-tabs-list-bg",
|
|
1576
|
+
"--tui-tabs-list-padding",
|
|
1577
|
+
"--tui-tabs-list-radius",
|
|
1578
|
+
"--tui-tabs-tab-padding",
|
|
1579
|
+
"--tui-tabs-tab-radius",
|
|
1580
|
+
"--tui-tabs-tab-bg",
|
|
1581
|
+
"--tui-tabs-tab-fg",
|
|
1582
|
+
"--tui-tabs-tab-bg-active",
|
|
1583
|
+
"--tui-tabs-tab-fg-active",
|
|
1584
|
+
"--tui-tabs-tab-bg-hover",
|
|
1585
|
+
"--tui-tabs-tab-border",
|
|
1586
|
+
"--tui-tabs-indicator",
|
|
1587
|
+
"--tui-tabs-indicator-size"
|
|
1588
|
+
],
|
|
1589
|
+
"story": {
|
|
1590
|
+
"title": "Components/Tabs",
|
|
1591
|
+
"tags": [
|
|
1592
|
+
"autodocs",
|
|
1593
|
+
"stable"
|
|
1594
|
+
]
|
|
1595
|
+
},
|
|
1596
|
+
"subcomponents": [
|
|
1597
|
+
"List",
|
|
1598
|
+
"Tab",
|
|
1599
|
+
"Panel"
|
|
1600
|
+
],
|
|
1601
|
+
"description": "Accessible tabbed interface with keyboard navigation and multiple visual variants",
|
|
1602
|
+
"gotchas": [
|
|
1603
|
+
{
|
|
1604
|
+
"note": "Tabs.List requires aria-label or aria-labelledby for accessibility"
|
|
1605
|
+
},
|
|
1606
|
+
{
|
|
1607
|
+
"note": "Tab value must match corresponding Panel value"
|
|
1608
|
+
},
|
|
1609
|
+
{
|
|
1610
|
+
"note": "Use activationMode='manual' for tabs that trigger expensive operations"
|
|
1611
|
+
},
|
|
1612
|
+
{
|
|
1613
|
+
"note": "Supports controlled (value prop) and uncontrolled (defaultValue) modes"
|
|
1614
|
+
},
|
|
1615
|
+
{
|
|
1616
|
+
"note": "Keyboard: Arrow keys move focus, Enter/Space select in manual mode"
|
|
1617
|
+
}
|
|
1618
|
+
],
|
|
1619
|
+
"examples": [
|
|
1620
|
+
{
|
|
1621
|
+
"name": "Basic",
|
|
1622
|
+
"code": "<Tabs defaultValue=\"tab1\">\n <Tabs.List aria-label=\"Example tabs\">\n <Tabs.Tab value=\"tab1\">First</Tabs.Tab>\n <Tabs.Tab value=\"tab2\">Second</Tabs.Tab>\n </Tabs.List>\n <Tabs.Panel value=\"tab1\">First content</Tabs.Panel>\n <Tabs.Panel value=\"tab2\">Second content</Tabs.Panel>\n</Tabs>"
|
|
1623
|
+
},
|
|
1624
|
+
{
|
|
1625
|
+
"name": "Pill variant",
|
|
1626
|
+
"code": "<Tabs variant=\"pill\" defaultValue=\"a\">\n <Tabs.List aria-label=\"Options\">\n <Tabs.Tab value=\"a\">Option A</Tabs.Tab>\n <Tabs.Tab value=\"b\">Option B</Tabs.Tab>\n </Tabs.List>\n <Tabs.Panel value=\"a\">Content A</Tabs.Panel>\n <Tabs.Panel value=\"b\">Content B</Tabs.Panel>\n</Tabs>"
|
|
1627
|
+
},
|
|
1628
|
+
{
|
|
1629
|
+
"name": "With icons",
|
|
1630
|
+
"code": "<Tabs.Tab value=\"settings\" icon=\"system/settings\">Settings</Tabs.Tab>"
|
|
1631
|
+
}
|
|
1632
|
+
],
|
|
1633
|
+
"related": [
|
|
1634
|
+
"SegmentedControl"
|
|
1635
|
+
]
|
|
1636
|
+
},
|
|
1637
|
+
"Toolbar": {
|
|
1638
|
+
"props": {
|
|
1639
|
+
"orientation": {
|
|
1640
|
+
"type": "\"horizontal\" | \"vertical\"",
|
|
1641
|
+
"required": false,
|
|
1642
|
+
"description": "Toolbar orientation - affects arrow key direction"
|
|
1643
|
+
},
|
|
1644
|
+
"loop": {
|
|
1645
|
+
"type": "boolean",
|
|
1646
|
+
"required": false,
|
|
1647
|
+
"description": "Whether arrow keys wrap from end to start (does not affect Home/End)"
|
|
1648
|
+
},
|
|
1649
|
+
"className": {
|
|
1650
|
+
"type": "string",
|
|
1651
|
+
"required": false
|
|
1652
|
+
},
|
|
1653
|
+
"style": {
|
|
1654
|
+
"type": "CSSProperties",
|
|
1655
|
+
"required": false,
|
|
1656
|
+
"description": "Inline styles for layout integration"
|
|
1657
|
+
}
|
|
1658
|
+
},
|
|
1659
|
+
"cssTokens": [],
|
|
1660
|
+
"story": {
|
|
1661
|
+
"title": "Components/Toolbar",
|
|
1662
|
+
"tags": [
|
|
1663
|
+
"autodocs",
|
|
1664
|
+
"a11y"
|
|
1665
|
+
]
|
|
1666
|
+
},
|
|
1667
|
+
"subcomponents": null,
|
|
1668
|
+
"description": null,
|
|
1669
|
+
"gotchas": null,
|
|
1670
|
+
"examples": null,
|
|
1671
|
+
"related": null
|
|
1672
|
+
},
|
|
1673
|
+
"Tooltip": {
|
|
1674
|
+
"props": {
|
|
1675
|
+
"open": {
|
|
1676
|
+
"type": "boolean",
|
|
1677
|
+
"required": false,
|
|
1678
|
+
"description": "Controlled open state."
|
|
1679
|
+
},
|
|
1680
|
+
"defaultOpen": {
|
|
1681
|
+
"type": "boolean",
|
|
1682
|
+
"required": false,
|
|
1683
|
+
"defaultValue": "false",
|
|
1684
|
+
"description": "Default open state for uncontrolled usage."
|
|
1685
|
+
},
|
|
1686
|
+
"delayDuration": {
|
|
1687
|
+
"type": "number",
|
|
1688
|
+
"required": false,
|
|
1689
|
+
"description": "Override provider's delay for this tooltip."
|
|
1690
|
+
}
|
|
1691
|
+
},
|
|
1692
|
+
"cssTokens": [],
|
|
1693
|
+
"story": {
|
|
1694
|
+
"title": "Primitives/Tooltip",
|
|
1695
|
+
"tags": [
|
|
1696
|
+
"autodocs",
|
|
1697
|
+
"stable"
|
|
1698
|
+
]
|
|
1699
|
+
},
|
|
1700
|
+
"subcomponents": null,
|
|
1701
|
+
"description": null,
|
|
1702
|
+
"gotchas": null,
|
|
1703
|
+
"examples": null,
|
|
1704
|
+
"related": null
|
|
1705
|
+
}
|
|
1706
|
+
},
|
|
1707
|
+
"utilities": {
|
|
1708
|
+
"layout": [
|
|
1709
|
+
"tui-grid",
|
|
1710
|
+
"tui-grid--auto",
|
|
1711
|
+
"tui-grid--cols-{1-12}",
|
|
1712
|
+
"tui-flex",
|
|
1713
|
+
"tui-inline-flex",
|
|
1714
|
+
"tui-stack",
|
|
1715
|
+
"tui-col-span-{1-12}",
|
|
1716
|
+
"tui-col-span-full",
|
|
1717
|
+
"tui-row-span-{1-12}",
|
|
1718
|
+
"tui-row-span-full",
|
|
1719
|
+
"tui-container",
|
|
1720
|
+
"tui-container--size"
|
|
1721
|
+
],
|
|
1722
|
+
"flexModifiers": [
|
|
1723
|
+
"is-wrap",
|
|
1724
|
+
"is-nowrap"
|
|
1725
|
+
],
|
|
1726
|
+
"alignment": [
|
|
1727
|
+
"is-align-stretch",
|
|
1728
|
+
"is-align-start",
|
|
1729
|
+
"is-align-center",
|
|
1730
|
+
"is-align-end",
|
|
1731
|
+
"is-justify-start",
|
|
1732
|
+
"is-justify-center",
|
|
1733
|
+
"is-justify-end",
|
|
1734
|
+
"is-justify-between",
|
|
1735
|
+
"is-justify-around",
|
|
1736
|
+
"is-justify-evenly",
|
|
1737
|
+
"is-align-self-start",
|
|
1738
|
+
"is-align-self-center",
|
|
1739
|
+
"is-align-self-end",
|
|
1740
|
+
"is-align-self-stretch",
|
|
1741
|
+
"is-place-start",
|
|
1742
|
+
"is-place-center",
|
|
1743
|
+
"is-place-end"
|
|
1744
|
+
],
|
|
1745
|
+
"density": [
|
|
1746
|
+
"is-density-none",
|
|
1747
|
+
"is-density-{xxs|xs|sm|md|lg|xl|xxl}",
|
|
1748
|
+
"is-density-inline-none",
|
|
1749
|
+
"is-density-inline-{xxs|xs|sm|md|lg|xl|xxl}",
|
|
1750
|
+
"is-density-block-none",
|
|
1751
|
+
"is-density-block-{xxs|xs|sm|md|lg|xl|xxl}"
|
|
1752
|
+
],
|
|
1753
|
+
"spacing": [
|
|
1754
|
+
"tui-margin-none",
|
|
1755
|
+
"tui-margin-auto",
|
|
1756
|
+
"tui-margin-{xxs|xs|sm|md|lg|xl|xxl}",
|
|
1757
|
+
"tui-margin-block-none",
|
|
1758
|
+
"tui-margin-block-auto",
|
|
1759
|
+
"tui-margin-block-{xxs|xs|sm|md|lg|xl|xxl}",
|
|
1760
|
+
"tui-margin-block-start-none",
|
|
1761
|
+
"tui-margin-block-start-auto",
|
|
1762
|
+
"tui-margin-block-start-{xxs|xs|sm|md|lg|xl|xxl}",
|
|
1763
|
+
"tui-margin-block-end-none",
|
|
1764
|
+
"tui-margin-block-end-auto",
|
|
1765
|
+
"tui-margin-block-end-{xxs|xs|sm|md|lg|xl|xxl}",
|
|
1766
|
+
"tui-margin-inline-none",
|
|
1767
|
+
"tui-margin-inline-auto",
|
|
1768
|
+
"tui-margin-inline-{xxs|xs|sm|md|lg|xl|xxl}",
|
|
1769
|
+
"tui-margin-inline-start-none",
|
|
1770
|
+
"tui-margin-inline-start-auto",
|
|
1771
|
+
"tui-margin-inline-start-{xxs|xs|sm|md|lg|xl|xxl}",
|
|
1772
|
+
"tui-margin-inline-end-none",
|
|
1773
|
+
"tui-margin-inline-end-auto",
|
|
1774
|
+
"tui-margin-inline-end-{xxs|xs|sm|md|lg|xl|xxl}",
|
|
1775
|
+
"tui-padding-none",
|
|
1776
|
+
"tui-padding-{xxs|xs|sm|md|lg|xl|xxl}",
|
|
1777
|
+
"tui-padding-block-none",
|
|
1778
|
+
"tui-padding-block-{xxs|xs|sm|md|lg|xl|xxl}",
|
|
1779
|
+
"tui-padding-block-start-none",
|
|
1780
|
+
"tui-padding-block-start-{xxs|xs|sm|md|lg|xl|xxl}",
|
|
1781
|
+
"tui-padding-block-end-none",
|
|
1782
|
+
"tui-padding-block-end-{xxs|xs|sm|md|lg|xl|xxl}",
|
|
1783
|
+
"tui-padding-inline-none",
|
|
1784
|
+
"tui-padding-inline-{xxs|xs|sm|md|lg|xl|xxl}",
|
|
1785
|
+
"tui-padding-inline-start-none",
|
|
1786
|
+
"tui-padding-inline-start-{xxs|xs|sm|md|lg|xl|xxl}",
|
|
1787
|
+
"tui-padding-inline-end-none",
|
|
1788
|
+
"tui-padding-inline-end-{xxs|xs|sm|md|lg|xl|xxl}"
|
|
1789
|
+
],
|
|
1790
|
+
"typography": [
|
|
1791
|
+
"tui-text-{xxs|xs|sm|md|lg|xl|xxl}",
|
|
1792
|
+
"tui-text-bold",
|
|
1793
|
+
"tui-text-normal",
|
|
1794
|
+
"tui-text-primary",
|
|
1795
|
+
"tui-text-secondary",
|
|
1796
|
+
"tui-text-info",
|
|
1797
|
+
"tui-text-warning",
|
|
1798
|
+
"tui-text-danger",
|
|
1799
|
+
"tui-text-success",
|
|
1800
|
+
"tui-text-white",
|
|
1801
|
+
"tui-text-contrast-high",
|
|
1802
|
+
"tui-text-contrast-low"
|
|
1803
|
+
],
|
|
1804
|
+
"borders": [
|
|
1805
|
+
"tui-border",
|
|
1806
|
+
"tui-border-0",
|
|
1807
|
+
"tui-border-t",
|
|
1808
|
+
"tui-border-b",
|
|
1809
|
+
"tui-border-l",
|
|
1810
|
+
"tui-border-r",
|
|
1811
|
+
"tui-border-primary",
|
|
1812
|
+
"tui-border-secondary",
|
|
1813
|
+
"tui-border-info",
|
|
1814
|
+
"tui-border-warning",
|
|
1815
|
+
"tui-border-danger",
|
|
1816
|
+
"tui-border-success",
|
|
1817
|
+
"tui-border-contrast-high",
|
|
1818
|
+
"tui-border-contrast-low",
|
|
1819
|
+
"tui-rounded-none",
|
|
1820
|
+
"tui-rounded-xs",
|
|
1821
|
+
"tui-rounded-sm",
|
|
1822
|
+
"tui-rounded-md",
|
|
1823
|
+
"tui-rounded-lg",
|
|
1824
|
+
"tui-rounded-xl",
|
|
1825
|
+
"tui-rounded-full"
|
|
1826
|
+
],
|
|
1827
|
+
"visibility": [
|
|
1828
|
+
"tui-visually-hidden",
|
|
1829
|
+
"tui-visually-hidden--focusable",
|
|
1830
|
+
"tui-hidden"
|
|
1831
|
+
],
|
|
1832
|
+
"position": [
|
|
1833
|
+
"tui-position-static",
|
|
1834
|
+
"tui-position-relative",
|
|
1835
|
+
"tui-position-absolute",
|
|
1836
|
+
"tui-stretched-link-container",
|
|
1837
|
+
"tui-stretched-link"
|
|
1838
|
+
],
|
|
1839
|
+
"elevation": [
|
|
1840
|
+
"is-layer-surface",
|
|
1841
|
+
"is-layer-elevated",
|
|
1842
|
+
"is-layer-overlay",
|
|
1843
|
+
"is-layer-modal",
|
|
1844
|
+
"is-layer-top"
|
|
1845
|
+
]
|
|
1846
|
+
},
|
|
1847
|
+
"icons": {
|
|
1848
|
+
"sets": {
|
|
1849
|
+
"cred": 12,
|
|
1850
|
+
"lms": 7,
|
|
1851
|
+
"player": 24,
|
|
1852
|
+
"reaction": 36,
|
|
1853
|
+
"system": 74
|
|
1854
|
+
},
|
|
1855
|
+
"total": 153,
|
|
1856
|
+
"manifest": "./icons/manifest.json"
|
|
1857
|
+
}
|
|
1858
|
+
}
|