twntyx-css 1.0.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 +105 -0
- package/llm/CHANGELOG.md +7 -0
- package/llm/components/ai-background.json +90 -0
- package/llm/components/ai-orb.json +91 -0
- package/llm/components/ai-perl.json +91 -0
- package/llm/components/all-components.json +104 -0
- package/llm/components/animation-references.json +84 -0
- package/llm/components/avatar.json +149 -0
- package/llm/components/badge.json +263 -0
- package/llm/components/banner-marketplace.json +81 -0
- package/llm/components/banner.json +120 -0
- package/llm/components/breadcrumb.json +169 -0
- package/llm/components/button-container.json +150 -0
- package/llm/components/button-feedback.json +155 -0
- package/llm/components/button.json +290 -0
- package/llm/components/card-assessment.json +93 -0
- package/llm/components/card-test.json +83 -0
- package/llm/components/card.json +94 -0
- package/llm/components/chat.json +155 -0
- package/llm/components/checkbox.json +186 -0
- package/llm/components/checkmark.json +175 -0
- package/llm/components/collapsible.json +100 -0
- package/llm/components/color-palette.json +79 -0
- package/llm/components/color-usage.json +83 -0
- package/llm/components/combobox.json +143 -0
- package/llm/components/command-palette.json +159 -0
- package/llm/components/countdown.json +113 -0
- package/llm/components/datepicker.json +151 -0
- package/llm/components/divider.json +104 -0
- package/llm/components/empty-state.json +80 -0
- package/llm/components/field.json +123 -0
- package/llm/components/fieldset.json +78 -0
- package/llm/components/file-upload.json +163 -0
- package/llm/components/form-example.json +82 -0
- package/llm/components/getting-started.json +70 -0
- package/llm/components/icons-reference.json +78 -0
- package/llm/components/illustrations-library.json +78 -0
- package/llm/components/input-group.json +94 -0
- package/llm/components/introduction.json +71 -0
- package/llm/components/join.json +105 -0
- package/llm/components/kbd.json +139 -0
- package/llm/components/key-value.json +86 -0
- package/llm/components/link.json +120 -0
- package/llm/components/loader.json +117 -0
- package/llm/components/logotype.json +75 -0
- package/llm/components/menu.json +192 -0
- package/llm/components/modal.json +167 -0
- package/llm/components/navbar.json +158 -0
- package/llm/components/pagination.json +122 -0
- package/llm/components/pie-chart.json +94 -0
- package/llm/components/popover.json +174 -0
- package/llm/components/progress-bullet.json +203 -0
- package/llm/components/progress-linear.json +129 -0
- package/llm/components/progress-radial.json +125 -0
- package/llm/components/radio.json +162 -0
- package/llm/components/range-slider.json +125 -0
- package/llm/components/scrollbar.json +96 -0
- package/llm/components/select-input.json +224 -0
- package/llm/components/shadows.json +107 -0
- package/llm/components/skeleton.json +84 -0
- package/llm/components/stacked-chart.json +100 -0
- package/llm/components/state.json +138 -0
- package/llm/components/stepper.json +95 -0
- package/llm/components/steps.json +177 -0
- package/llm/components/surface.json +181 -0
- package/llm/components/table.json +223 -0
- package/llm/components/tabs.json +147 -0
- package/llm/components/template-ai.json +80 -0
- package/llm/components/template-login.json +88 -0
- package/llm/components/template-stats.json +76 -0
- package/llm/components/text-input.json +275 -0
- package/llm/components/textarea.json +183 -0
- package/llm/components/timeline.json +142 -0
- package/llm/components/toast.json +164 -0
- package/llm/components/toggle.json +158 -0
- package/llm/components/tool-svg-to-base64.json +78 -0
- package/llm/components/tool-svg-to-icon-data.json +81 -0
- package/llm/components/tooltip.json +90 -0
- package/llm/examples/ai-background.html +1 -0
- package/llm/examples/ai-orb.html +1 -0
- package/llm/examples/ai-perl.html +1 -0
- package/llm/examples/all-components.html +1 -0
- package/llm/examples/animation-references.html +1 -0
- package/llm/examples/avatar.html +1 -0
- package/llm/examples/badge.html +1 -0
- package/llm/examples/banner-marketplace.html +1 -0
- package/llm/examples/banner.html +1 -0
- package/llm/examples/breadcrumb.html +1 -0
- package/llm/examples/button-container.html +1 -0
- package/llm/examples/button-feedback.html +1 -0
- package/llm/examples/button.html +3 -0
- package/llm/examples/card-assessment.html +1 -0
- package/llm/examples/card-test.html +1 -0
- package/llm/examples/card.html +1 -0
- package/llm/examples/chat.html +1 -0
- package/llm/examples/checkbox.html +1 -0
- package/llm/examples/checkmark.html +1 -0
- package/llm/examples/collapsible.html +1 -0
- package/llm/examples/color-palette.html +1 -0
- package/llm/examples/color-usage.html +1 -0
- package/llm/examples/combobox.html +1 -0
- package/llm/examples/command-palette.html +1 -0
- package/llm/examples/countdown.html +1 -0
- package/llm/examples/datepicker.html +1 -0
- package/llm/examples/divider.html +1 -0
- package/llm/examples/empty-state.html +1 -0
- package/llm/examples/field.html +1 -0
- package/llm/examples/fieldset.html +1 -0
- package/llm/examples/file-upload.html +1 -0
- package/llm/examples/form-example.html +1 -0
- package/llm/examples/getting-started.html +1 -0
- package/llm/examples/icons-reference.html +1 -0
- package/llm/examples/illustrations-library.html +1 -0
- package/llm/examples/input-group.html +1 -0
- package/llm/examples/introduction.html +1 -0
- package/llm/examples/join.html +1 -0
- package/llm/examples/kbd.html +1 -0
- package/llm/examples/key-value.html +1 -0
- package/llm/examples/link.html +1 -0
- package/llm/examples/loader.html +1 -0
- package/llm/examples/logotype.html +1 -0
- package/llm/examples/menu.html +1 -0
- package/llm/examples/modal.html +16 -0
- package/llm/examples/navbar.html +1 -0
- package/llm/examples/pagination.html +1 -0
- package/llm/examples/pie-chart.html +1 -0
- package/llm/examples/popover.html +1 -0
- package/llm/examples/progress-bullet.html +1 -0
- package/llm/examples/progress-linear.html +1 -0
- package/llm/examples/progress-radial.html +1 -0
- package/llm/examples/radio.html +1 -0
- package/llm/examples/range-slider.html +1 -0
- package/llm/examples/scrollbar.html +1 -0
- package/llm/examples/select-input.html +1 -0
- package/llm/examples/shadows.html +1 -0
- package/llm/examples/skeleton.html +1 -0
- package/llm/examples/stacked-chart.html +1 -0
- package/llm/examples/state.html +1 -0
- package/llm/examples/stepper.html +1 -0
- package/llm/examples/steps.html +1 -0
- package/llm/examples/surface.html +1 -0
- package/llm/examples/table.html +16 -0
- package/llm/examples/tabs.html +1 -0
- package/llm/examples/template-ai.html +1 -0
- package/llm/examples/template-login.html +1 -0
- package/llm/examples/template-stats.html +1 -0
- package/llm/examples/text-input.html +10 -0
- package/llm/examples/textarea.html +1 -0
- package/llm/examples/timeline.html +1 -0
- package/llm/examples/toast.html +5 -0
- package/llm/examples/toggle.html +1 -0
- package/llm/examples/tool-svg-to-base64.html +1 -0
- package/llm/examples/tool-svg-to-icon-data.html +1 -0
- package/llm/examples/tooltip.html +1 -0
- package/llm/index.json +1615 -0
- package/llm/llms.txt +18 -0
- package/llm/patterns.json +111 -0
- package/llm/rules.json +47 -0
- package/llm/schema.json +804 -0
- package/llm/tokens.json +3629 -0
- package/package.json +30 -0
- package/styles/ai.css +114 -0
- package/styles/animation.css +2493 -0
- package/styles/avatar.css +101 -0
- package/styles/background-ai.css +118 -0
- package/styles/badge.css +274 -0
- package/styles/banner.css +98 -0
- package/styles/breadcrumb.css +72 -0
- package/styles/button.css +621 -0
- package/styles/card.css +27 -0
- package/styles/chart-pie.css +39 -0
- package/styles/chart-stacked.css +91 -0
- package/styles/chat.css +506 -0
- package/styles/checkmark.css +105 -0
- package/styles/code.css +264 -0
- package/styles/collapsible.css +93 -0
- package/styles/colors.css +536 -0
- package/styles/combobox.css +66 -0
- package/styles/command.css +81 -0
- package/styles/contest.css +227 -0
- package/styles/countdown.css +65 -0
- package/styles/datepicker.css +124 -0
- package/styles/divider.css +72 -0
- package/styles/drawer.css +142 -0
- package/styles/dropdown.css +22 -0
- package/styles/empty-state.css +48 -0
- package/styles/field.css +47 -0
- package/styles/fieldset.css +24 -0
- package/styles/form-checkbox-radio-toggle.css +233 -0
- package/styles/form-fileupload.css +146 -0
- package/styles/form-rangeslider.css +106 -0
- package/styles/form-shared.css +41 -0
- package/styles/form-text-select.css +411 -0
- package/styles/form.css +86 -0
- package/styles/globals.css +66 -0
- package/styles/input-group.css +63 -0
- package/styles/join.css +141 -0
- package/styles/kbd.css +55 -0
- package/styles/key-value.css +44 -0
- package/styles/link.css +48 -0
- package/styles/loader.css +183 -0
- package/styles/logotype.css +13 -0
- package/styles/menu.css +317 -0
- package/styles/modal.css +172 -0
- package/styles/navbar.css +48 -0
- package/styles/package-quill.css +1001 -0
- package/styles/pagination.css +147 -0
- package/styles/panel.css +113 -0
- package/styles/popover.css +303 -0
- package/styles/prism.css +60 -0
- package/styles/progress.css +209 -0
- package/styles/scrollbar.css +17 -0
- package/styles/shadow.css +25 -0
- package/styles/shared.css +226 -0
- package/styles/skeleton.css +34 -0
- package/styles/state.css +150 -0
- package/styles/stepper.css +72 -0
- package/styles/steps.css +98 -0
- package/styles/surface.css +252 -0
- package/styles/tab.css +286 -0
- package/styles/table.css +243 -0
- package/styles/theme.css +126 -0
- package/styles/timeline.css +193 -0
- package/styles/toast.css +150 -0
- package/styles/tooltip.css +8 -0
- package/styles/typography.css +160 -0
- package/styles/utility.css +20 -0
- package/tailwind.config.cjs +9 -0
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "text-input",
|
|
3
|
+
"name": "Text input",
|
|
4
|
+
"status": "stable",
|
|
5
|
+
"summary": "Text input component for single line text input.",
|
|
6
|
+
"keywords": [
|
|
7
|
+
"box",
|
|
8
|
+
"edit",
|
|
9
|
+
"entry",
|
|
10
|
+
"field",
|
|
11
|
+
"form",
|
|
12
|
+
"input",
|
|
13
|
+
"line",
|
|
14
|
+
"single",
|
|
15
|
+
"text",
|
|
16
|
+
"text field",
|
|
17
|
+
"text input",
|
|
18
|
+
"text-input",
|
|
19
|
+
"textbox",
|
|
20
|
+
"type",
|
|
21
|
+
"write"
|
|
22
|
+
],
|
|
23
|
+
"sourcePaths": [
|
|
24
|
+
"app/design-system/text-input/page.js",
|
|
25
|
+
"assets/styles/breadcrumb.css",
|
|
26
|
+
"assets/styles/button.css",
|
|
27
|
+
"assets/styles/chat.css",
|
|
28
|
+
"assets/styles/checkmark.css",
|
|
29
|
+
"assets/styles/command.css",
|
|
30
|
+
"assets/styles/field.css",
|
|
31
|
+
"assets/styles/form-checkbox-radio-toggle.css",
|
|
32
|
+
"assets/styles/form-shared.css",
|
|
33
|
+
"assets/styles/form-text-select.css",
|
|
34
|
+
"assets/styles/input-group.css",
|
|
35
|
+
"assets/styles/menu.css",
|
|
36
|
+
"assets/styles/navbar.css",
|
|
37
|
+
"assets/styles/pagination.css",
|
|
38
|
+
"assets/styles/progress.css",
|
|
39
|
+
"assets/styles/steps.css",
|
|
40
|
+
"assets/styles/tab.css",
|
|
41
|
+
"assets/styles/table.css",
|
|
42
|
+
"assets/styles/toast.css"
|
|
43
|
+
],
|
|
44
|
+
"apiModel": "html-class",
|
|
45
|
+
"baseClass": "input-text",
|
|
46
|
+
"variants": [
|
|
47
|
+
{
|
|
48
|
+
"name": "input-divide",
|
|
49
|
+
"className": "input-divide",
|
|
50
|
+
"description": "Adds divider between input and addons"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"name": "input-chevron",
|
|
54
|
+
"className": "input-chevron",
|
|
55
|
+
"description": "Adds animated chevron to input"
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"name": "input-required",
|
|
59
|
+
"className": "input-required",
|
|
60
|
+
"description": "Adds required indicator to label"
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"name": "input-ghost",
|
|
64
|
+
"className": "input-ghost",
|
|
65
|
+
"description": "Removes borders and background"
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"name": "input-rounded-none",
|
|
69
|
+
"className": "input-rounded-none",
|
|
70
|
+
"description": "Removes border radius"
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"name": "input-rounded-full",
|
|
74
|
+
"className": "input-rounded-full",
|
|
75
|
+
"description": "Fully rounded corners (default)"
|
|
76
|
+
}
|
|
77
|
+
],
|
|
78
|
+
"sizes": [
|
|
79
|
+
{
|
|
80
|
+
"name": "input-xs",
|
|
81
|
+
"className": "input-xs",
|
|
82
|
+
"description": "Extra small size variant"
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"name": "input-sm",
|
|
86
|
+
"className": "input-sm",
|
|
87
|
+
"description": "Small size variant"
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"name": "input-lg",
|
|
91
|
+
"className": "input-lg",
|
|
92
|
+
"description": "Large size variant"
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"name": "input-rounded-sm",
|
|
96
|
+
"className": "input-rounded-sm",
|
|
97
|
+
"description": "Small border radius (2px)"
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"name": "input-rounded-md",
|
|
101
|
+
"className": "input-rounded-md",
|
|
102
|
+
"description": "Medium border radius (6px)"
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"name": "input-rounded-lg",
|
|
106
|
+
"className": "input-rounded-lg",
|
|
107
|
+
"description": "Large border radius (8px)"
|
|
108
|
+
}
|
|
109
|
+
],
|
|
110
|
+
"states": [
|
|
111
|
+
{
|
|
112
|
+
"name": "is-loading",
|
|
113
|
+
"className": "is-loading",
|
|
114
|
+
"description": "Shows loading spinner"
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"name": "is-active",
|
|
118
|
+
"className": "is-active",
|
|
119
|
+
"description": "Active/focused state"
|
|
120
|
+
}
|
|
121
|
+
],
|
|
122
|
+
"structure": {
|
|
123
|
+
"rootElement": "input",
|
|
124
|
+
"requiredClasses": [
|
|
125
|
+
"input-text"
|
|
126
|
+
],
|
|
127
|
+
"optionalClasses": [
|
|
128
|
+
"input-divide",
|
|
129
|
+
"input-chevron",
|
|
130
|
+
"input-required",
|
|
131
|
+
"input-ghost",
|
|
132
|
+
"input-rounded-none",
|
|
133
|
+
"input-rounded-full",
|
|
134
|
+
"input-xs",
|
|
135
|
+
"input-sm",
|
|
136
|
+
"input-lg",
|
|
137
|
+
"input-rounded-sm",
|
|
138
|
+
"input-rounded-md",
|
|
139
|
+
"input-rounded-lg",
|
|
140
|
+
"is-loading",
|
|
141
|
+
"is-active"
|
|
142
|
+
],
|
|
143
|
+
"requiredChildren": [],
|
|
144
|
+
"optionalChildren": []
|
|
145
|
+
},
|
|
146
|
+
"attributes": {
|
|
147
|
+
"allowed": [
|
|
148
|
+
"class",
|
|
149
|
+
"type",
|
|
150
|
+
"id",
|
|
151
|
+
"name",
|
|
152
|
+
"value",
|
|
153
|
+
"placeholder",
|
|
154
|
+
"disabled",
|
|
155
|
+
"required",
|
|
156
|
+
"aria-invalid",
|
|
157
|
+
"aria-describedby",
|
|
158
|
+
"aria-label"
|
|
159
|
+
],
|
|
160
|
+
"required": [
|
|
161
|
+
"type"
|
|
162
|
+
],
|
|
163
|
+
"dataAttributes": [],
|
|
164
|
+
"roles": [],
|
|
165
|
+
"aria": [
|
|
166
|
+
"aria-invalid",
|
|
167
|
+
"aria-describedby",
|
|
168
|
+
"aria-label"
|
|
169
|
+
]
|
|
170
|
+
},
|
|
171
|
+
"a11y": {
|
|
172
|
+
"interactive": true,
|
|
173
|
+
"requiredRoles": [],
|
|
174
|
+
"requiredAria": [
|
|
175
|
+
"aria-label (when no visible label)",
|
|
176
|
+
"aria-describedby (when helper/error text exists)"
|
|
177
|
+
],
|
|
178
|
+
"keyboardSupport": [
|
|
179
|
+
"Tab",
|
|
180
|
+
"Shift+Tab",
|
|
181
|
+
"Enter"
|
|
182
|
+
],
|
|
183
|
+
"focusBehavior": "Inputs must keep a visible focus state and expose validation state through text and aria-invalid."
|
|
184
|
+
},
|
|
185
|
+
"dos": [
|
|
186
|
+
"Pair text inputs with `.field` and `.input-label` for consistent label and helper placement.",
|
|
187
|
+
"Use semantic status colors and helper copy together for validation feedback.",
|
|
188
|
+
"Keep placeholder copy as an example, not as the primary label."
|
|
189
|
+
],
|
|
190
|
+
"donts": [
|
|
191
|
+
"Do not use placeholder text as the only form label.",
|
|
192
|
+
"Do not hide error text when `aria-invalid` is set.",
|
|
193
|
+
"Do not apply destructive styles to neutral data entry states."
|
|
194
|
+
],
|
|
195
|
+
"tokenUsage": [
|
|
196
|
+
"background-brand",
|
|
197
|
+
"background-brand-active",
|
|
198
|
+
"background-error",
|
|
199
|
+
"background-error-active",
|
|
200
|
+
"background-info",
|
|
201
|
+
"background-info-active",
|
|
202
|
+
"background-inverted",
|
|
203
|
+
"background-page",
|
|
204
|
+
"background-success",
|
|
205
|
+
"background-success-active",
|
|
206
|
+
"background-surface",
|
|
207
|
+
"background-surface-elevated",
|
|
208
|
+
"background-surface-sunken",
|
|
209
|
+
"background-warning",
|
|
210
|
+
"background-warning-active",
|
|
211
|
+
"brand-default",
|
|
212
|
+
"brand-moderate",
|
|
213
|
+
"brand-strong",
|
|
214
|
+
"core-black",
|
|
215
|
+
"core-ui-100",
|
|
216
|
+
"core-ui-300",
|
|
217
|
+
"core-ui-400",
|
|
218
|
+
"core-ui-50",
|
|
219
|
+
"core-ui-500",
|
|
220
|
+
"core-ui-600",
|
|
221
|
+
"core-ui-700",
|
|
222
|
+
"core-ui-800",
|
|
223
|
+
"core-ui-900",
|
|
224
|
+
"core-white",
|
|
225
|
+
"line-brand",
|
|
226
|
+
"line-default",
|
|
227
|
+
"line-error",
|
|
228
|
+
"line-focus",
|
|
229
|
+
"line-highlight",
|
|
230
|
+
"line-info",
|
|
231
|
+
"line-strong",
|
|
232
|
+
"line-success",
|
|
233
|
+
"line-warning",
|
|
234
|
+
"text-attention",
|
|
235
|
+
"text-brand",
|
|
236
|
+
"text-brand-active",
|
|
237
|
+
"text-brand-hover",
|
|
238
|
+
"text-default",
|
|
239
|
+
"text-disabled",
|
|
240
|
+
"text-error",
|
|
241
|
+
"text-info",
|
|
242
|
+
"text-inverted",
|
|
243
|
+
"text-link",
|
|
244
|
+
"text-link-active",
|
|
245
|
+
"text-link-hover",
|
|
246
|
+
"text-secondary",
|
|
247
|
+
"text-success",
|
|
248
|
+
"text-tertiary",
|
|
249
|
+
"text-warning"
|
|
250
|
+
],
|
|
251
|
+
"examples": [
|
|
252
|
+
{
|
|
253
|
+
"id": "canonical",
|
|
254
|
+
"file": "examples/text-input.html",
|
|
255
|
+
"description": "Minimal canonical Text input usage."
|
|
256
|
+
}
|
|
257
|
+
],
|
|
258
|
+
"composition": {
|
|
259
|
+
"patterns": [
|
|
260
|
+
"form-field-composition"
|
|
261
|
+
],
|
|
262
|
+
"relatedComponents": [
|
|
263
|
+
"field",
|
|
264
|
+
"textarea",
|
|
265
|
+
"select-input"
|
|
266
|
+
],
|
|
267
|
+
"notes": [
|
|
268
|
+
"Use shared field layout wrappers to keep spacing and validation rhythm consistent across forms."
|
|
269
|
+
]
|
|
270
|
+
},
|
|
271
|
+
"breakingChangePolicy": {
|
|
272
|
+
"classContract": "Base class, documented modifiers, and state class names are semver-protected for consumer markup.",
|
|
273
|
+
"a11yContract": "Documented role and aria requirements are semver-protected for generated markup."
|
|
274
|
+
}
|
|
275
|
+
}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "textarea",
|
|
3
|
+
"name": "Textarea",
|
|
4
|
+
"status": "stable",
|
|
5
|
+
"summary": "Textarea component for multiline text input.",
|
|
6
|
+
"keywords": [
|
|
7
|
+
"box",
|
|
8
|
+
"content",
|
|
9
|
+
"edit",
|
|
10
|
+
"entry",
|
|
11
|
+
"field",
|
|
12
|
+
"form",
|
|
13
|
+
"input",
|
|
14
|
+
"multiline",
|
|
15
|
+
"paragraph",
|
|
16
|
+
"text area",
|
|
17
|
+
"textarea",
|
|
18
|
+
"type",
|
|
19
|
+
"write"
|
|
20
|
+
],
|
|
21
|
+
"sourcePaths": [
|
|
22
|
+
"app/design-system/textarea/page.js",
|
|
23
|
+
"assets/styles/chat.css",
|
|
24
|
+
"assets/styles/field.css",
|
|
25
|
+
"assets/styles/form-checkbox-radio-toggle.css",
|
|
26
|
+
"assets/styles/form-text-select.css",
|
|
27
|
+
"assets/styles/input-group.css"
|
|
28
|
+
],
|
|
29
|
+
"apiModel": "html-class",
|
|
30
|
+
"baseClass": "input-textarea",
|
|
31
|
+
"variants": [
|
|
32
|
+
{
|
|
33
|
+
"name": "input-resize-none",
|
|
34
|
+
"className": "input-resize-none",
|
|
35
|
+
"description": "Disables textarea resizing"
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"name": "input-resize-y",
|
|
39
|
+
"className": "input-resize-y",
|
|
40
|
+
"description": "Allows vertical resizing only"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"name": "input-resize-x",
|
|
44
|
+
"className": "input-resize-x",
|
|
45
|
+
"description": "Allows horizontal resizing only"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"name": "input-autosize",
|
|
49
|
+
"className": "input-autosize",
|
|
50
|
+
"description": "Automatically adjusts height to content"
|
|
51
|
+
}
|
|
52
|
+
],
|
|
53
|
+
"sizes": [
|
|
54
|
+
{
|
|
55
|
+
"name": "input-xs",
|
|
56
|
+
"className": "input-xs",
|
|
57
|
+
"description": "Extra small size variant"
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"name": "input-sm",
|
|
61
|
+
"className": "input-sm",
|
|
62
|
+
"description": "Small size variant"
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"name": "input-lg",
|
|
66
|
+
"className": "input-lg",
|
|
67
|
+
"description": "Large size variant"
|
|
68
|
+
}
|
|
69
|
+
],
|
|
70
|
+
"states": [],
|
|
71
|
+
"structure": {
|
|
72
|
+
"rootElement": "input",
|
|
73
|
+
"requiredClasses": [
|
|
74
|
+
"input-textarea"
|
|
75
|
+
],
|
|
76
|
+
"optionalClasses": [
|
|
77
|
+
"input-resize-none",
|
|
78
|
+
"input-resize-y",
|
|
79
|
+
"input-resize-x",
|
|
80
|
+
"input-autosize",
|
|
81
|
+
"input-xs",
|
|
82
|
+
"input-sm",
|
|
83
|
+
"input-lg"
|
|
84
|
+
],
|
|
85
|
+
"requiredChildren": [],
|
|
86
|
+
"optionalChildren": []
|
|
87
|
+
},
|
|
88
|
+
"attributes": {
|
|
89
|
+
"allowed": [
|
|
90
|
+
"class",
|
|
91
|
+
"id",
|
|
92
|
+
"tabindex"
|
|
93
|
+
],
|
|
94
|
+
"required": [],
|
|
95
|
+
"dataAttributes": [],
|
|
96
|
+
"roles": [],
|
|
97
|
+
"aria": []
|
|
98
|
+
},
|
|
99
|
+
"a11y": {
|
|
100
|
+
"interactive": true,
|
|
101
|
+
"requiredRoles": [],
|
|
102
|
+
"requiredAria": [
|
|
103
|
+
"aria-label (when no visible label)"
|
|
104
|
+
],
|
|
105
|
+
"keyboardSupport": [
|
|
106
|
+
"Tab",
|
|
107
|
+
"Shift+Tab",
|
|
108
|
+
"Enter",
|
|
109
|
+
"Space"
|
|
110
|
+
],
|
|
111
|
+
"focusBehavior": "Visible focus state is required when the component is focusable or clickable."
|
|
112
|
+
},
|
|
113
|
+
"dos": [
|
|
114
|
+
"Apply the base class 'input-textarea' on the root element.",
|
|
115
|
+
"Use documented modifiers for visual variants instead of ad-hoc custom classes.",
|
|
116
|
+
"Keep semantic color usage aligned with token classes for light/dark support."
|
|
117
|
+
],
|
|
118
|
+
"donts": [
|
|
119
|
+
"Do not combine conflicting state classes on the same element.",
|
|
120
|
+
"Do not rely on undocumented internal classes in production templates.",
|
|
121
|
+
"Do not remove required accessibility attributes when component is interactive."
|
|
122
|
+
],
|
|
123
|
+
"tokenUsage": [
|
|
124
|
+
"background-brand",
|
|
125
|
+
"background-error",
|
|
126
|
+
"background-info",
|
|
127
|
+
"background-page",
|
|
128
|
+
"background-success",
|
|
129
|
+
"background-surface",
|
|
130
|
+
"background-surface-elevated",
|
|
131
|
+
"background-surface-sunken",
|
|
132
|
+
"background-warning",
|
|
133
|
+
"brand-default",
|
|
134
|
+
"brand-moderate",
|
|
135
|
+
"brand-strong",
|
|
136
|
+
"core-black",
|
|
137
|
+
"core-ui-100",
|
|
138
|
+
"core-ui-300",
|
|
139
|
+
"core-ui-400",
|
|
140
|
+
"core-ui-50",
|
|
141
|
+
"core-ui-500",
|
|
142
|
+
"core-ui-700",
|
|
143
|
+
"core-ui-800",
|
|
144
|
+
"core-ui-900",
|
|
145
|
+
"core-white",
|
|
146
|
+
"line-default",
|
|
147
|
+
"line-error",
|
|
148
|
+
"line-focus",
|
|
149
|
+
"line-highlight",
|
|
150
|
+
"line-info",
|
|
151
|
+
"line-strong",
|
|
152
|
+
"line-success",
|
|
153
|
+
"line-warning",
|
|
154
|
+
"text-default",
|
|
155
|
+
"text-disabled",
|
|
156
|
+
"text-error",
|
|
157
|
+
"text-info",
|
|
158
|
+
"text-link",
|
|
159
|
+
"text-link-hover",
|
|
160
|
+
"text-secondary",
|
|
161
|
+
"text-success",
|
|
162
|
+
"text-tertiary",
|
|
163
|
+
"text-warning"
|
|
164
|
+
],
|
|
165
|
+
"examples": [
|
|
166
|
+
{
|
|
167
|
+
"id": "canonical",
|
|
168
|
+
"file": "examples/textarea.html",
|
|
169
|
+
"description": "Minimal canonical Textarea usage."
|
|
170
|
+
}
|
|
171
|
+
],
|
|
172
|
+
"composition": {
|
|
173
|
+
"patterns": [
|
|
174
|
+
"form-field-composition"
|
|
175
|
+
],
|
|
176
|
+
"relatedComponents": [],
|
|
177
|
+
"notes": []
|
|
178
|
+
},
|
|
179
|
+
"breakingChangePolicy": {
|
|
180
|
+
"classContract": "Base class, documented modifiers, and state class names are semver-protected for consumer markup.",
|
|
181
|
+
"a11yContract": "Documented role and aria requirements are semver-protected for generated markup."
|
|
182
|
+
}
|
|
183
|
+
}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "timeline",
|
|
3
|
+
"name": "Timeline",
|
|
4
|
+
"status": "stable",
|
|
5
|
+
"summary": "Timeline pattern for visualizing ordered events, milestones, and process history.",
|
|
6
|
+
"keywords": [
|
|
7
|
+
"activity",
|
|
8
|
+
"events",
|
|
9
|
+
"history",
|
|
10
|
+
"progress",
|
|
11
|
+
"sequence",
|
|
12
|
+
"timeline"
|
|
13
|
+
],
|
|
14
|
+
"sourcePaths": [
|
|
15
|
+
"app/design-system/timeline/page.js",
|
|
16
|
+
"assets/styles/breadcrumb.css",
|
|
17
|
+
"assets/styles/timeline.css"
|
|
18
|
+
],
|
|
19
|
+
"apiModel": "html-class",
|
|
20
|
+
"baseClass": "timeline",
|
|
21
|
+
"variants": [
|
|
22
|
+
{
|
|
23
|
+
"name": "timeline-default",
|
|
24
|
+
"className": "timeline-default",
|
|
25
|
+
"description": "Default vertical timeline with compact dot markers."
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"name": "timeline-vertical",
|
|
29
|
+
"className": "timeline-vertical",
|
|
30
|
+
"description": "Vertical timeline with larger icon markers and chips."
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"name": "timeline-stepper",
|
|
34
|
+
"className": "timeline-stepper",
|
|
35
|
+
"description": "Responsive stepper timeline (stacked on mobile, row on sm+)."
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"name": "timeline-activity",
|
|
39
|
+
"className": "timeline-activity",
|
|
40
|
+
"description": "Activity log timeline with avatar markers and card entries."
|
|
41
|
+
}
|
|
42
|
+
],
|
|
43
|
+
"sizes": [],
|
|
44
|
+
"states": [
|
|
45
|
+
{
|
|
46
|
+
"name": "is-current",
|
|
47
|
+
"className": "is-current",
|
|
48
|
+
"description": "Marks an item as current with brand marker and connector."
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"name": "is-complete",
|
|
52
|
+
"className": "is-complete",
|
|
53
|
+
"description": "Marks an item as complete with success marker and connector."
|
|
54
|
+
}
|
|
55
|
+
],
|
|
56
|
+
"structure": {
|
|
57
|
+
"rootElement": "div",
|
|
58
|
+
"requiredClasses": [
|
|
59
|
+
"timeline"
|
|
60
|
+
],
|
|
61
|
+
"optionalClasses": [
|
|
62
|
+
"timeline-default",
|
|
63
|
+
"timeline-vertical",
|
|
64
|
+
"timeline-stepper",
|
|
65
|
+
"timeline-activity",
|
|
66
|
+
"is-current",
|
|
67
|
+
"is-complete"
|
|
68
|
+
],
|
|
69
|
+
"requiredChildren": [],
|
|
70
|
+
"optionalChildren": []
|
|
71
|
+
},
|
|
72
|
+
"attributes": {
|
|
73
|
+
"allowed": [
|
|
74
|
+
"class"
|
|
75
|
+
],
|
|
76
|
+
"required": [],
|
|
77
|
+
"dataAttributes": [],
|
|
78
|
+
"roles": [
|
|
79
|
+
"status"
|
|
80
|
+
],
|
|
81
|
+
"aria": [
|
|
82
|
+
"aria-hidden"
|
|
83
|
+
]
|
|
84
|
+
},
|
|
85
|
+
"a11y": {
|
|
86
|
+
"interactive": false,
|
|
87
|
+
"requiredRoles": [
|
|
88
|
+
"status"
|
|
89
|
+
],
|
|
90
|
+
"requiredAria": [
|
|
91
|
+
"aria-hidden"
|
|
92
|
+
],
|
|
93
|
+
"keyboardSupport": [],
|
|
94
|
+
"focusBehavior": "No keyboard interaction is required unless nested interactive children are introduced."
|
|
95
|
+
},
|
|
96
|
+
"dos": [
|
|
97
|
+
"Apply the base class 'timeline' on the root element.",
|
|
98
|
+
"Use documented modifiers for visual variants instead of ad-hoc custom classes.",
|
|
99
|
+
"Keep semantic color usage aligned with token classes for light/dark support."
|
|
100
|
+
],
|
|
101
|
+
"donts": [
|
|
102
|
+
"Do not combine conflicting state classes on the same element.",
|
|
103
|
+
"Do not rely on undocumented internal classes in production templates.",
|
|
104
|
+
"Do not remove required accessibility attributes when component is interactive."
|
|
105
|
+
],
|
|
106
|
+
"tokenUsage": [
|
|
107
|
+
"background-brand",
|
|
108
|
+
"background-brand-active",
|
|
109
|
+
"background-page",
|
|
110
|
+
"background-success",
|
|
111
|
+
"background-surface-elevated",
|
|
112
|
+
"line-brand",
|
|
113
|
+
"line-brand-active",
|
|
114
|
+
"line-default",
|
|
115
|
+
"line-highlight",
|
|
116
|
+
"line-success",
|
|
117
|
+
"text-brand",
|
|
118
|
+
"text-default",
|
|
119
|
+
"text-inverted",
|
|
120
|
+
"text-link",
|
|
121
|
+
"text-link-active",
|
|
122
|
+
"text-link-hover",
|
|
123
|
+
"text-success",
|
|
124
|
+
"text-tertiary"
|
|
125
|
+
],
|
|
126
|
+
"examples": [
|
|
127
|
+
{
|
|
128
|
+
"id": "canonical",
|
|
129
|
+
"file": "examples/timeline.html",
|
|
130
|
+
"description": "Minimal canonical Timeline usage."
|
|
131
|
+
}
|
|
132
|
+
],
|
|
133
|
+
"composition": {
|
|
134
|
+
"patterns": [],
|
|
135
|
+
"relatedComponents": [],
|
|
136
|
+
"notes": []
|
|
137
|
+
},
|
|
138
|
+
"breakingChangePolicy": {
|
|
139
|
+
"classContract": "Base class, documented modifiers, and state class names are semver-protected for consumer markup.",
|
|
140
|
+
"a11yContract": "Documented role and aria requirements are semver-protected for generated markup."
|
|
141
|
+
}
|
|
142
|
+
}
|