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,169 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "breadcrumb",
|
|
3
|
+
"name": "Breadcrumb",
|
|
4
|
+
"status": "stable",
|
|
5
|
+
"summary": "Breadcrumb navigation for showing the user's current location and path hierarchy.",
|
|
6
|
+
"keywords": [
|
|
7
|
+
"breadcrumb",
|
|
8
|
+
"current page",
|
|
9
|
+
"hierarchy",
|
|
10
|
+
"location",
|
|
11
|
+
"navigation",
|
|
12
|
+
"path",
|
|
13
|
+
"trail"
|
|
14
|
+
],
|
|
15
|
+
"sourcePaths": [
|
|
16
|
+
"app/design-system/breadcrumb/page.js",
|
|
17
|
+
"assets/styles/breadcrumb.css",
|
|
18
|
+
"assets/styles/button.css",
|
|
19
|
+
"assets/styles/chat.css",
|
|
20
|
+
"assets/styles/checkmark.css",
|
|
21
|
+
"assets/styles/command.css",
|
|
22
|
+
"assets/styles/form-text-select.css",
|
|
23
|
+
"assets/styles/menu.css",
|
|
24
|
+
"assets/styles/navbar.css",
|
|
25
|
+
"assets/styles/pagination.css",
|
|
26
|
+
"assets/styles/progress.css",
|
|
27
|
+
"assets/styles/steps.css",
|
|
28
|
+
"assets/styles/tab.css",
|
|
29
|
+
"assets/styles/table.css",
|
|
30
|
+
"assets/styles/timeline.css",
|
|
31
|
+
"assets/styles/toast.css"
|
|
32
|
+
],
|
|
33
|
+
"apiModel": "html-class",
|
|
34
|
+
"baseClass": "breadcrumb",
|
|
35
|
+
"variants": [],
|
|
36
|
+
"sizes": [],
|
|
37
|
+
"states": [
|
|
38
|
+
{
|
|
39
|
+
"name": "is-active",
|
|
40
|
+
"className": "is-active",
|
|
41
|
+
"description": "Visual highlight for an intermediate active item."
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"name": "is-current",
|
|
45
|
+
"className": "is-current",
|
|
46
|
+
"description": "Current page item. Keep this as the only aria-current target."
|
|
47
|
+
}
|
|
48
|
+
],
|
|
49
|
+
"structure": {
|
|
50
|
+
"rootElement": "a",
|
|
51
|
+
"requiredClasses": [
|
|
52
|
+
"breadcrumb"
|
|
53
|
+
],
|
|
54
|
+
"optionalClasses": [
|
|
55
|
+
"is-active",
|
|
56
|
+
"is-current"
|
|
57
|
+
],
|
|
58
|
+
"requiredChildren": [],
|
|
59
|
+
"optionalChildren": []
|
|
60
|
+
},
|
|
61
|
+
"attributes": {
|
|
62
|
+
"allowed": [
|
|
63
|
+
"class"
|
|
64
|
+
],
|
|
65
|
+
"required": [],
|
|
66
|
+
"dataAttributes": [],
|
|
67
|
+
"roles": [],
|
|
68
|
+
"aria": [
|
|
69
|
+
"aria-current",
|
|
70
|
+
"aria-hidden",
|
|
71
|
+
"aria-label"
|
|
72
|
+
]
|
|
73
|
+
},
|
|
74
|
+
"a11y": {
|
|
75
|
+
"interactive": false,
|
|
76
|
+
"requiredRoles": [],
|
|
77
|
+
"requiredAria": [
|
|
78
|
+
"aria-current",
|
|
79
|
+
"aria-hidden",
|
|
80
|
+
"aria-label"
|
|
81
|
+
],
|
|
82
|
+
"keyboardSupport": [],
|
|
83
|
+
"focusBehavior": "No keyboard interaction is required unless nested interactive children are introduced."
|
|
84
|
+
},
|
|
85
|
+
"dos": [
|
|
86
|
+
"Apply the base class 'breadcrumb' on the root element.",
|
|
87
|
+
"Use documented modifiers for visual variants instead of ad-hoc custom classes.",
|
|
88
|
+
"Keep semantic color usage aligned with token classes for light/dark support."
|
|
89
|
+
],
|
|
90
|
+
"donts": [
|
|
91
|
+
"Do not combine conflicting state classes on the same element.",
|
|
92
|
+
"Do not rely on undocumented internal classes in production templates.",
|
|
93
|
+
"Do not remove required accessibility attributes when component is interactive."
|
|
94
|
+
],
|
|
95
|
+
"tokenUsage": [
|
|
96
|
+
"background-brand",
|
|
97
|
+
"background-brand-active",
|
|
98
|
+
"background-error",
|
|
99
|
+
"background-error-active",
|
|
100
|
+
"background-info",
|
|
101
|
+
"background-info-active",
|
|
102
|
+
"background-inverted",
|
|
103
|
+
"background-page",
|
|
104
|
+
"background-success",
|
|
105
|
+
"background-success-active",
|
|
106
|
+
"background-surface",
|
|
107
|
+
"background-surface-elevated",
|
|
108
|
+
"background-surface-sunken",
|
|
109
|
+
"background-warning",
|
|
110
|
+
"background-warning-active",
|
|
111
|
+
"brand-default",
|
|
112
|
+
"brand-moderate",
|
|
113
|
+
"brand-strong",
|
|
114
|
+
"core-black",
|
|
115
|
+
"core-ui-100",
|
|
116
|
+
"core-ui-300",
|
|
117
|
+
"core-ui-400",
|
|
118
|
+
"core-ui-50",
|
|
119
|
+
"core-ui-600",
|
|
120
|
+
"core-ui-700",
|
|
121
|
+
"core-ui-800",
|
|
122
|
+
"core-ui-900",
|
|
123
|
+
"core-white",
|
|
124
|
+
"line-brand",
|
|
125
|
+
"line-brand-active",
|
|
126
|
+
"line-default",
|
|
127
|
+
"line-error",
|
|
128
|
+
"line-focus",
|
|
129
|
+
"line-highlight",
|
|
130
|
+
"line-info",
|
|
131
|
+
"line-strong",
|
|
132
|
+
"line-success",
|
|
133
|
+
"line-warning",
|
|
134
|
+
"text-attention",
|
|
135
|
+
"text-brand",
|
|
136
|
+
"text-brand-active",
|
|
137
|
+
"text-brand-hover",
|
|
138
|
+
"text-default",
|
|
139
|
+
"text-disabled",
|
|
140
|
+
"text-error",
|
|
141
|
+
"text-info",
|
|
142
|
+
"text-inverted",
|
|
143
|
+
"text-link",
|
|
144
|
+
"text-link-active",
|
|
145
|
+
"text-link-hover",
|
|
146
|
+
"text-secondary",
|
|
147
|
+
"text-success",
|
|
148
|
+
"text-tertiary",
|
|
149
|
+
"text-warning"
|
|
150
|
+
],
|
|
151
|
+
"examples": [
|
|
152
|
+
{
|
|
153
|
+
"id": "canonical",
|
|
154
|
+
"file": "examples/breadcrumb.html",
|
|
155
|
+
"description": "Minimal canonical Breadcrumb usage."
|
|
156
|
+
}
|
|
157
|
+
],
|
|
158
|
+
"composition": {
|
|
159
|
+
"patterns": [
|
|
160
|
+
"navigation-hierarchy"
|
|
161
|
+
],
|
|
162
|
+
"relatedComponents": [],
|
|
163
|
+
"notes": []
|
|
164
|
+
},
|
|
165
|
+
"breakingChangePolicy": {
|
|
166
|
+
"classContract": "Base class, documented modifiers, and state class names are semver-protected for consumer markup.",
|
|
167
|
+
"a11yContract": "Documented role and aria requirements are semver-protected for generated markup."
|
|
168
|
+
}
|
|
169
|
+
}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "button-container",
|
|
3
|
+
"name": "Button container",
|
|
4
|
+
"status": "stable",
|
|
5
|
+
"summary": "Button container styles for claim effects and highlighted button surfaces.",
|
|
6
|
+
"keywords": [
|
|
7
|
+
"button",
|
|
8
|
+
"button container",
|
|
9
|
+
"button-container",
|
|
10
|
+
"claim",
|
|
11
|
+
"container",
|
|
12
|
+
"effect",
|
|
13
|
+
"glow",
|
|
14
|
+
"highlight",
|
|
15
|
+
"ring",
|
|
16
|
+
"surface",
|
|
17
|
+
"wrapper"
|
|
18
|
+
],
|
|
19
|
+
"sourcePaths": [
|
|
20
|
+
"app/design-system/button-container/page.js",
|
|
21
|
+
"assets/styles/button.css",
|
|
22
|
+
"assets/styles/surface.css"
|
|
23
|
+
],
|
|
24
|
+
"apiModel": "html-class",
|
|
25
|
+
"baseClass": "button-container",
|
|
26
|
+
"variants": [
|
|
27
|
+
{
|
|
28
|
+
"name": "surface-claim",
|
|
29
|
+
"className": "surface-claim",
|
|
30
|
+
"description": "Claim surface wrapper with animated ring effect"
|
|
31
|
+
}
|
|
32
|
+
],
|
|
33
|
+
"sizes": [],
|
|
34
|
+
"states": [],
|
|
35
|
+
"structure": {
|
|
36
|
+
"rootElement": "button",
|
|
37
|
+
"requiredClasses": [
|
|
38
|
+
"button-container"
|
|
39
|
+
],
|
|
40
|
+
"optionalClasses": [
|
|
41
|
+
"surface-claim"
|
|
42
|
+
],
|
|
43
|
+
"requiredChildren": [],
|
|
44
|
+
"optionalChildren": []
|
|
45
|
+
},
|
|
46
|
+
"attributes": {
|
|
47
|
+
"allowed": [
|
|
48
|
+
"class",
|
|
49
|
+
"id",
|
|
50
|
+
"tabindex"
|
|
51
|
+
],
|
|
52
|
+
"required": [],
|
|
53
|
+
"dataAttributes": [],
|
|
54
|
+
"roles": [],
|
|
55
|
+
"aria": [
|
|
56
|
+
"aria-label"
|
|
57
|
+
]
|
|
58
|
+
},
|
|
59
|
+
"a11y": {
|
|
60
|
+
"interactive": true,
|
|
61
|
+
"requiredRoles": [],
|
|
62
|
+
"requiredAria": [
|
|
63
|
+
"aria-label"
|
|
64
|
+
],
|
|
65
|
+
"keyboardSupport": [
|
|
66
|
+
"Tab",
|
|
67
|
+
"Shift+Tab",
|
|
68
|
+
"Enter",
|
|
69
|
+
"Space"
|
|
70
|
+
],
|
|
71
|
+
"focusBehavior": "Visible focus state is required when the component is focusable or clickable."
|
|
72
|
+
},
|
|
73
|
+
"dos": [
|
|
74
|
+
"Apply the base class 'button-container' on the root element.",
|
|
75
|
+
"Use documented modifiers for visual variants instead of ad-hoc custom classes.",
|
|
76
|
+
"Keep semantic color usage aligned with token classes for light/dark support."
|
|
77
|
+
],
|
|
78
|
+
"donts": [
|
|
79
|
+
"Do not combine conflicting state classes on the same element.",
|
|
80
|
+
"Do not rely on undocumented internal classes in production templates.",
|
|
81
|
+
"Do not remove required accessibility attributes when component is interactive."
|
|
82
|
+
],
|
|
83
|
+
"tokenUsage": [
|
|
84
|
+
"background-attention",
|
|
85
|
+
"background-attention-active",
|
|
86
|
+
"background-brand",
|
|
87
|
+
"background-brand-active",
|
|
88
|
+
"background-error",
|
|
89
|
+
"background-error-active",
|
|
90
|
+
"background-info",
|
|
91
|
+
"background-info-active",
|
|
92
|
+
"background-inverted",
|
|
93
|
+
"background-page",
|
|
94
|
+
"background-success",
|
|
95
|
+
"background-success-active",
|
|
96
|
+
"background-surface",
|
|
97
|
+
"background-surface-elevated",
|
|
98
|
+
"background-surface-sunken",
|
|
99
|
+
"background-warning",
|
|
100
|
+
"background-warning-active",
|
|
101
|
+
"brand-default",
|
|
102
|
+
"brand-moderate",
|
|
103
|
+
"brand-soft",
|
|
104
|
+
"brand-strong",
|
|
105
|
+
"core-black",
|
|
106
|
+
"core-ui-100",
|
|
107
|
+
"core-ui-200",
|
|
108
|
+
"core-ui-600",
|
|
109
|
+
"core-ui-800",
|
|
110
|
+
"core-white",
|
|
111
|
+
"line-attention",
|
|
112
|
+
"line-default",
|
|
113
|
+
"line-error",
|
|
114
|
+
"line-focus",
|
|
115
|
+
"line-highlight",
|
|
116
|
+
"line-hover",
|
|
117
|
+
"line-info",
|
|
118
|
+
"line-strong",
|
|
119
|
+
"line-success",
|
|
120
|
+
"line-warning",
|
|
121
|
+
"text-attention",
|
|
122
|
+
"text-brand",
|
|
123
|
+
"text-brand-active",
|
|
124
|
+
"text-brand-hover",
|
|
125
|
+
"text-default",
|
|
126
|
+
"text-error",
|
|
127
|
+
"text-info",
|
|
128
|
+
"text-inverted",
|
|
129
|
+
"text-secondary",
|
|
130
|
+
"text-success",
|
|
131
|
+
"text-tertiary",
|
|
132
|
+
"text-warning"
|
|
133
|
+
],
|
|
134
|
+
"examples": [
|
|
135
|
+
{
|
|
136
|
+
"id": "canonical",
|
|
137
|
+
"file": "examples/button-container.html",
|
|
138
|
+
"description": "Minimal canonical Button container usage."
|
|
139
|
+
}
|
|
140
|
+
],
|
|
141
|
+
"composition": {
|
|
142
|
+
"patterns": [],
|
|
143
|
+
"relatedComponents": [],
|
|
144
|
+
"notes": []
|
|
145
|
+
},
|
|
146
|
+
"breakingChangePolicy": {
|
|
147
|
+
"classContract": "Base class, documented modifiers, and state class names are semver-protected for consumer markup.",
|
|
148
|
+
"a11yContract": "Documented role and aria requirements are semver-protected for generated markup."
|
|
149
|
+
}
|
|
150
|
+
}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "button-feedback",
|
|
3
|
+
"name": "Button feedback",
|
|
4
|
+
"status": "stable",
|
|
5
|
+
"summary": "Button feedback patterns for inline messages and status tooltips.",
|
|
6
|
+
"keywords": [
|
|
7
|
+
"attention",
|
|
8
|
+
"button",
|
|
9
|
+
"button feedback",
|
|
10
|
+
"button-feedback",
|
|
11
|
+
"error",
|
|
12
|
+
"feedback",
|
|
13
|
+
"message",
|
|
14
|
+
"status",
|
|
15
|
+
"success",
|
|
16
|
+
"tooltip"
|
|
17
|
+
],
|
|
18
|
+
"sourcePaths": [
|
|
19
|
+
"app/design-system/button-feedback/page.js"
|
|
20
|
+
],
|
|
21
|
+
"apiModel": "html-class",
|
|
22
|
+
"baseClass": "button",
|
|
23
|
+
"variants": [
|
|
24
|
+
{
|
|
25
|
+
"name": "Primary",
|
|
26
|
+
"className": "button-primary",
|
|
27
|
+
"description": "Primary feedback trigger style."
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"name": "Secondary",
|
|
31
|
+
"className": "button-secondary",
|
|
32
|
+
"description": "Secondary feedback trigger style."
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"name": "Plain",
|
|
36
|
+
"className": "button-plain",
|
|
37
|
+
"description": "Plain feedback trigger style."
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"name": "Destructive",
|
|
41
|
+
"className": "button-destructive",
|
|
42
|
+
"description": "Destructive feedback trigger style."
|
|
43
|
+
}
|
|
44
|
+
],
|
|
45
|
+
"sizes": [
|
|
46
|
+
{
|
|
47
|
+
"name": "Extra small",
|
|
48
|
+
"className": "button-xs",
|
|
49
|
+
"description": "Compact control for dense toolbars."
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"name": "Small",
|
|
53
|
+
"className": "button-sm",
|
|
54
|
+
"description": "Small control for inline actions."
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"name": "Large",
|
|
58
|
+
"className": "button-lg",
|
|
59
|
+
"description": "Large control for emphasis and touch targets."
|
|
60
|
+
}
|
|
61
|
+
],
|
|
62
|
+
"states": [
|
|
63
|
+
{
|
|
64
|
+
"name": "Loading",
|
|
65
|
+
"className": "is-loading",
|
|
66
|
+
"description": "Temporarily hides label and shows loading indicator."
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"name": "Charging",
|
|
70
|
+
"className": "is-charging",
|
|
71
|
+
"description": "Triggers charging animation for long-running operations."
|
|
72
|
+
}
|
|
73
|
+
],
|
|
74
|
+
"structure": {
|
|
75
|
+
"rootElement": "button",
|
|
76
|
+
"requiredClasses": [
|
|
77
|
+
"button-feedback"
|
|
78
|
+
],
|
|
79
|
+
"optionalClasses": [],
|
|
80
|
+
"requiredChildren": [],
|
|
81
|
+
"optionalChildren": []
|
|
82
|
+
},
|
|
83
|
+
"attributes": {
|
|
84
|
+
"allowed": [
|
|
85
|
+
"class",
|
|
86
|
+
"type",
|
|
87
|
+
"disabled",
|
|
88
|
+
"data-feedback",
|
|
89
|
+
"data-feedback-icon",
|
|
90
|
+
"aria-label"
|
|
91
|
+
],
|
|
92
|
+
"required": [
|
|
93
|
+
"type",
|
|
94
|
+
"data-feedback"
|
|
95
|
+
],
|
|
96
|
+
"dataAttributes": [
|
|
97
|
+
"data-feedback",
|
|
98
|
+
"data-feedback-icon"
|
|
99
|
+
],
|
|
100
|
+
"roles": [],
|
|
101
|
+
"aria": [
|
|
102
|
+
"aria-label"
|
|
103
|
+
]
|
|
104
|
+
},
|
|
105
|
+
"a11y": {
|
|
106
|
+
"interactive": true,
|
|
107
|
+
"requiredRoles": [],
|
|
108
|
+
"requiredAria": [
|
|
109
|
+
"aria-label (required when icon-only)",
|
|
110
|
+
"status text must be announced in context"
|
|
111
|
+
],
|
|
112
|
+
"keyboardSupport": [
|
|
113
|
+
"Tab",
|
|
114
|
+
"Shift+Tab",
|
|
115
|
+
"Enter",
|
|
116
|
+
"Space"
|
|
117
|
+
],
|
|
118
|
+
"focusBehavior": "Feedback trigger remains keyboard focusable and keeps visible focus ring before and after message animation."
|
|
119
|
+
},
|
|
120
|
+
"dos": [
|
|
121
|
+
"Use `data-feedback` for short confirmation/error text after button activation.",
|
|
122
|
+
"Provide `data-feedback-icon` only for semantic states (`success`, `error`, `attention`).",
|
|
123
|
+
"Keep feedback messages under one sentence."
|
|
124
|
+
],
|
|
125
|
+
"donts": [
|
|
126
|
+
"Do not replace persistent error handling with transient feedback only.",
|
|
127
|
+
"Do not use feedback animation as the only success indicator in critical flows.",
|
|
128
|
+
"Do not fire repeated feedback messages on disabled controls."
|
|
129
|
+
],
|
|
130
|
+
"tokenUsage": [],
|
|
131
|
+
"examples": [
|
|
132
|
+
{
|
|
133
|
+
"id": "canonical",
|
|
134
|
+
"file": "examples/button-feedback.html",
|
|
135
|
+
"description": "Minimal canonical Button feedback usage."
|
|
136
|
+
}
|
|
137
|
+
],
|
|
138
|
+
"composition": {
|
|
139
|
+
"patterns": [
|
|
140
|
+
"feedback-and-status"
|
|
141
|
+
],
|
|
142
|
+
"relatedComponents": [
|
|
143
|
+
"button",
|
|
144
|
+
"toast",
|
|
145
|
+
"state"
|
|
146
|
+
],
|
|
147
|
+
"notes": [
|
|
148
|
+
"Use toast or state components when feedback needs longer visibility than the inline animation window."
|
|
149
|
+
]
|
|
150
|
+
},
|
|
151
|
+
"breakingChangePolicy": {
|
|
152
|
+
"classContract": "Base class, documented modifiers, and state class names are semver-protected for consumer markup.",
|
|
153
|
+
"a11yContract": "Documented role and aria requirements are semver-protected for generated markup."
|
|
154
|
+
}
|
|
155
|
+
}
|