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.
Files changed (228) hide show
  1. package/README.md +105 -0
  2. package/llm/CHANGELOG.md +7 -0
  3. package/llm/components/ai-background.json +90 -0
  4. package/llm/components/ai-orb.json +91 -0
  5. package/llm/components/ai-perl.json +91 -0
  6. package/llm/components/all-components.json +104 -0
  7. package/llm/components/animation-references.json +84 -0
  8. package/llm/components/avatar.json +149 -0
  9. package/llm/components/badge.json +263 -0
  10. package/llm/components/banner-marketplace.json +81 -0
  11. package/llm/components/banner.json +120 -0
  12. package/llm/components/breadcrumb.json +169 -0
  13. package/llm/components/button-container.json +150 -0
  14. package/llm/components/button-feedback.json +155 -0
  15. package/llm/components/button.json +290 -0
  16. package/llm/components/card-assessment.json +93 -0
  17. package/llm/components/card-test.json +83 -0
  18. package/llm/components/card.json +94 -0
  19. package/llm/components/chat.json +155 -0
  20. package/llm/components/checkbox.json +186 -0
  21. package/llm/components/checkmark.json +175 -0
  22. package/llm/components/collapsible.json +100 -0
  23. package/llm/components/color-palette.json +79 -0
  24. package/llm/components/color-usage.json +83 -0
  25. package/llm/components/combobox.json +143 -0
  26. package/llm/components/command-palette.json +159 -0
  27. package/llm/components/countdown.json +113 -0
  28. package/llm/components/datepicker.json +151 -0
  29. package/llm/components/divider.json +104 -0
  30. package/llm/components/empty-state.json +80 -0
  31. package/llm/components/field.json +123 -0
  32. package/llm/components/fieldset.json +78 -0
  33. package/llm/components/file-upload.json +163 -0
  34. package/llm/components/form-example.json +82 -0
  35. package/llm/components/getting-started.json +70 -0
  36. package/llm/components/icons-reference.json +78 -0
  37. package/llm/components/illustrations-library.json +78 -0
  38. package/llm/components/input-group.json +94 -0
  39. package/llm/components/introduction.json +71 -0
  40. package/llm/components/join.json +105 -0
  41. package/llm/components/kbd.json +139 -0
  42. package/llm/components/key-value.json +86 -0
  43. package/llm/components/link.json +120 -0
  44. package/llm/components/loader.json +117 -0
  45. package/llm/components/logotype.json +75 -0
  46. package/llm/components/menu.json +192 -0
  47. package/llm/components/modal.json +167 -0
  48. package/llm/components/navbar.json +158 -0
  49. package/llm/components/pagination.json +122 -0
  50. package/llm/components/pie-chart.json +94 -0
  51. package/llm/components/popover.json +174 -0
  52. package/llm/components/progress-bullet.json +203 -0
  53. package/llm/components/progress-linear.json +129 -0
  54. package/llm/components/progress-radial.json +125 -0
  55. package/llm/components/radio.json +162 -0
  56. package/llm/components/range-slider.json +125 -0
  57. package/llm/components/scrollbar.json +96 -0
  58. package/llm/components/select-input.json +224 -0
  59. package/llm/components/shadows.json +107 -0
  60. package/llm/components/skeleton.json +84 -0
  61. package/llm/components/stacked-chart.json +100 -0
  62. package/llm/components/state.json +138 -0
  63. package/llm/components/stepper.json +95 -0
  64. package/llm/components/steps.json +177 -0
  65. package/llm/components/surface.json +181 -0
  66. package/llm/components/table.json +223 -0
  67. package/llm/components/tabs.json +147 -0
  68. package/llm/components/template-ai.json +80 -0
  69. package/llm/components/template-login.json +88 -0
  70. package/llm/components/template-stats.json +76 -0
  71. package/llm/components/text-input.json +275 -0
  72. package/llm/components/textarea.json +183 -0
  73. package/llm/components/timeline.json +142 -0
  74. package/llm/components/toast.json +164 -0
  75. package/llm/components/toggle.json +158 -0
  76. package/llm/components/tool-svg-to-base64.json +78 -0
  77. package/llm/components/tool-svg-to-icon-data.json +81 -0
  78. package/llm/components/tooltip.json +90 -0
  79. package/llm/examples/ai-background.html +1 -0
  80. package/llm/examples/ai-orb.html +1 -0
  81. package/llm/examples/ai-perl.html +1 -0
  82. package/llm/examples/all-components.html +1 -0
  83. package/llm/examples/animation-references.html +1 -0
  84. package/llm/examples/avatar.html +1 -0
  85. package/llm/examples/badge.html +1 -0
  86. package/llm/examples/banner-marketplace.html +1 -0
  87. package/llm/examples/banner.html +1 -0
  88. package/llm/examples/breadcrumb.html +1 -0
  89. package/llm/examples/button-container.html +1 -0
  90. package/llm/examples/button-feedback.html +1 -0
  91. package/llm/examples/button.html +3 -0
  92. package/llm/examples/card-assessment.html +1 -0
  93. package/llm/examples/card-test.html +1 -0
  94. package/llm/examples/card.html +1 -0
  95. package/llm/examples/chat.html +1 -0
  96. package/llm/examples/checkbox.html +1 -0
  97. package/llm/examples/checkmark.html +1 -0
  98. package/llm/examples/collapsible.html +1 -0
  99. package/llm/examples/color-palette.html +1 -0
  100. package/llm/examples/color-usage.html +1 -0
  101. package/llm/examples/combobox.html +1 -0
  102. package/llm/examples/command-palette.html +1 -0
  103. package/llm/examples/countdown.html +1 -0
  104. package/llm/examples/datepicker.html +1 -0
  105. package/llm/examples/divider.html +1 -0
  106. package/llm/examples/empty-state.html +1 -0
  107. package/llm/examples/field.html +1 -0
  108. package/llm/examples/fieldset.html +1 -0
  109. package/llm/examples/file-upload.html +1 -0
  110. package/llm/examples/form-example.html +1 -0
  111. package/llm/examples/getting-started.html +1 -0
  112. package/llm/examples/icons-reference.html +1 -0
  113. package/llm/examples/illustrations-library.html +1 -0
  114. package/llm/examples/input-group.html +1 -0
  115. package/llm/examples/introduction.html +1 -0
  116. package/llm/examples/join.html +1 -0
  117. package/llm/examples/kbd.html +1 -0
  118. package/llm/examples/key-value.html +1 -0
  119. package/llm/examples/link.html +1 -0
  120. package/llm/examples/loader.html +1 -0
  121. package/llm/examples/logotype.html +1 -0
  122. package/llm/examples/menu.html +1 -0
  123. package/llm/examples/modal.html +16 -0
  124. package/llm/examples/navbar.html +1 -0
  125. package/llm/examples/pagination.html +1 -0
  126. package/llm/examples/pie-chart.html +1 -0
  127. package/llm/examples/popover.html +1 -0
  128. package/llm/examples/progress-bullet.html +1 -0
  129. package/llm/examples/progress-linear.html +1 -0
  130. package/llm/examples/progress-radial.html +1 -0
  131. package/llm/examples/radio.html +1 -0
  132. package/llm/examples/range-slider.html +1 -0
  133. package/llm/examples/scrollbar.html +1 -0
  134. package/llm/examples/select-input.html +1 -0
  135. package/llm/examples/shadows.html +1 -0
  136. package/llm/examples/skeleton.html +1 -0
  137. package/llm/examples/stacked-chart.html +1 -0
  138. package/llm/examples/state.html +1 -0
  139. package/llm/examples/stepper.html +1 -0
  140. package/llm/examples/steps.html +1 -0
  141. package/llm/examples/surface.html +1 -0
  142. package/llm/examples/table.html +16 -0
  143. package/llm/examples/tabs.html +1 -0
  144. package/llm/examples/template-ai.html +1 -0
  145. package/llm/examples/template-login.html +1 -0
  146. package/llm/examples/template-stats.html +1 -0
  147. package/llm/examples/text-input.html +10 -0
  148. package/llm/examples/textarea.html +1 -0
  149. package/llm/examples/timeline.html +1 -0
  150. package/llm/examples/toast.html +5 -0
  151. package/llm/examples/toggle.html +1 -0
  152. package/llm/examples/tool-svg-to-base64.html +1 -0
  153. package/llm/examples/tool-svg-to-icon-data.html +1 -0
  154. package/llm/examples/tooltip.html +1 -0
  155. package/llm/index.json +1615 -0
  156. package/llm/llms.txt +18 -0
  157. package/llm/patterns.json +111 -0
  158. package/llm/rules.json +47 -0
  159. package/llm/schema.json +804 -0
  160. package/llm/tokens.json +3629 -0
  161. package/package.json +30 -0
  162. package/styles/ai.css +114 -0
  163. package/styles/animation.css +2493 -0
  164. package/styles/avatar.css +101 -0
  165. package/styles/background-ai.css +118 -0
  166. package/styles/badge.css +274 -0
  167. package/styles/banner.css +98 -0
  168. package/styles/breadcrumb.css +72 -0
  169. package/styles/button.css +621 -0
  170. package/styles/card.css +27 -0
  171. package/styles/chart-pie.css +39 -0
  172. package/styles/chart-stacked.css +91 -0
  173. package/styles/chat.css +506 -0
  174. package/styles/checkmark.css +105 -0
  175. package/styles/code.css +264 -0
  176. package/styles/collapsible.css +93 -0
  177. package/styles/colors.css +536 -0
  178. package/styles/combobox.css +66 -0
  179. package/styles/command.css +81 -0
  180. package/styles/contest.css +227 -0
  181. package/styles/countdown.css +65 -0
  182. package/styles/datepicker.css +124 -0
  183. package/styles/divider.css +72 -0
  184. package/styles/drawer.css +142 -0
  185. package/styles/dropdown.css +22 -0
  186. package/styles/empty-state.css +48 -0
  187. package/styles/field.css +47 -0
  188. package/styles/fieldset.css +24 -0
  189. package/styles/form-checkbox-radio-toggle.css +233 -0
  190. package/styles/form-fileupload.css +146 -0
  191. package/styles/form-rangeslider.css +106 -0
  192. package/styles/form-shared.css +41 -0
  193. package/styles/form-text-select.css +411 -0
  194. package/styles/form.css +86 -0
  195. package/styles/globals.css +66 -0
  196. package/styles/input-group.css +63 -0
  197. package/styles/join.css +141 -0
  198. package/styles/kbd.css +55 -0
  199. package/styles/key-value.css +44 -0
  200. package/styles/link.css +48 -0
  201. package/styles/loader.css +183 -0
  202. package/styles/logotype.css +13 -0
  203. package/styles/menu.css +317 -0
  204. package/styles/modal.css +172 -0
  205. package/styles/navbar.css +48 -0
  206. package/styles/package-quill.css +1001 -0
  207. package/styles/pagination.css +147 -0
  208. package/styles/panel.css +113 -0
  209. package/styles/popover.css +303 -0
  210. package/styles/prism.css +60 -0
  211. package/styles/progress.css +209 -0
  212. package/styles/scrollbar.css +17 -0
  213. package/styles/shadow.css +25 -0
  214. package/styles/shared.css +226 -0
  215. package/styles/skeleton.css +34 -0
  216. package/styles/state.css +150 -0
  217. package/styles/stepper.css +72 -0
  218. package/styles/steps.css +98 -0
  219. package/styles/surface.css +252 -0
  220. package/styles/tab.css +286 -0
  221. package/styles/table.css +243 -0
  222. package/styles/theme.css +126 -0
  223. package/styles/timeline.css +193 -0
  224. package/styles/toast.css +150 -0
  225. package/styles/tooltip.css +8 -0
  226. package/styles/typography.css +160 -0
  227. package/styles/utility.css +20 -0
  228. package/tailwind.config.cjs +9 -0
@@ -0,0 +1,223 @@
1
+ {
2
+ "id": "table",
3
+ "name": "Table",
4
+ "status": "stable",
5
+ "summary": "Table component for displaying data in a grid layout with various styling options and features.",
6
+ "keywords": [
7
+ "cell",
8
+ "column",
9
+ "content",
10
+ "data",
11
+ "display",
12
+ "filter",
13
+ "grid",
14
+ "header",
15
+ "list",
16
+ "pagination",
17
+ "row",
18
+ "sort",
19
+ "spreadsheet",
20
+ "table"
21
+ ],
22
+ "sourcePaths": [
23
+ "app/design-system/table/page.js",
24
+ "assets/styles/combobox.css",
25
+ "assets/styles/datepicker.css",
26
+ "assets/styles/form-text-select.css",
27
+ "assets/styles/menu.css",
28
+ "assets/styles/table.css"
29
+ ],
30
+ "apiModel": "html-class",
31
+ "baseClass": "table",
32
+ "variants": [
33
+ {
34
+ "name": "table-overflow",
35
+ "className": "table-overflow",
36
+ "description": "Enables horizontal scrolling"
37
+ },
38
+ {
39
+ "name": "table-sticky-first",
40
+ "className": "table-sticky-first",
41
+ "description": "Makes first column sticky while scrolling"
42
+ },
43
+ {
44
+ "name": "table-striped-rows",
45
+ "className": "table-striped-rows",
46
+ "description": "Adds alternating row backgrounds"
47
+ },
48
+ {
49
+ "name": "table-striped-columns",
50
+ "className": "table-striped-columns",
51
+ "description": "Adds alternating column backgrounds"
52
+ },
53
+ {
54
+ "name": "table-hover",
55
+ "className": "table-hover",
56
+ "description": "Adds hover effect to rows"
57
+ },
58
+ {
59
+ "name": "table-compact",
60
+ "className": "table-compact",
61
+ "description": "Reduces cell padding"
62
+ },
63
+ {
64
+ "name": "table-sticky-last",
65
+ "className": "table-sticky-last",
66
+ "description": "Makes last column sticky while scrolling"
67
+ }
68
+ ],
69
+ "sizes": [
70
+ {
71
+ "name": "table-sm",
72
+ "className": "table-sm",
73
+ "description": "Small size variant with reduced padding"
74
+ },
75
+ {
76
+ "name": "table-lg",
77
+ "className": "table-lg",
78
+ "description": "Large size variant with increased padding"
79
+ }
80
+ ],
81
+ "states": [
82
+ {
83
+ "name": "is-selected",
84
+ "className": "is-selected",
85
+ "description": "Highlights selected rows"
86
+ }
87
+ ],
88
+ "structure": {
89
+ "rootElement": "button",
90
+ "requiredClasses": [
91
+ "table"
92
+ ],
93
+ "optionalClasses": [
94
+ "table-overflow",
95
+ "table-sticky-first",
96
+ "table-striped-rows",
97
+ "table-striped-columns",
98
+ "table-hover",
99
+ "table-compact",
100
+ "table-sticky-last",
101
+ "table-sm",
102
+ "table-lg",
103
+ "is-selected"
104
+ ],
105
+ "requiredChildren": [],
106
+ "optionalChildren": []
107
+ },
108
+ "attributes": {
109
+ "allowed": [
110
+ "class",
111
+ "role",
112
+ "aria-label",
113
+ "aria-sort",
114
+ "scope"
115
+ ],
116
+ "required": [],
117
+ "dataAttributes": [],
118
+ "roles": [
119
+ "table",
120
+ "row",
121
+ "columnheader",
122
+ "cell"
123
+ ],
124
+ "aria": [
125
+ "aria-sort",
126
+ "aria-label"
127
+ ]
128
+ },
129
+ "a11y": {
130
+ "interactive": true,
131
+ "requiredRoles": [],
132
+ "requiredAria": [
133
+ "aria-sort (when sortable)",
134
+ "aria-label (when table purpose is unclear from context)"
135
+ ],
136
+ "keyboardSupport": [
137
+ "Tab",
138
+ "Shift+Tab",
139
+ "Enter",
140
+ "Space",
141
+ "Arrow keys"
142
+ ],
143
+ "focusBehavior": "Keep focusable controls inside cells and preserve visible focus on row actions and sort controls."
144
+ },
145
+ "dos": [
146
+ "Use semantic table markup (`thead`, `tbody`, `th`, `td`) before applying utility classes.",
147
+ "Expose sorting state with both visual affordance and `aria-sort`.",
148
+ "Pair large datasets with pagination or filtering controls."
149
+ ],
150
+ "donts": [
151
+ "Do not use tables for non-tabular layout.",
152
+ "Do not hide critical row actions behind hover-only behavior.",
153
+ "Do not collapse column headers on desktop data-heavy views."
154
+ ],
155
+ "tokenUsage": [
156
+ "background-brand",
157
+ "background-brand-hover",
158
+ "background-error",
159
+ "background-info",
160
+ "background-success",
161
+ "background-surface",
162
+ "background-surface-elevated",
163
+ "background-surface-sunken",
164
+ "background-warning",
165
+ "brand-moderate",
166
+ "brand-strong",
167
+ "core-black",
168
+ "core-ui-100",
169
+ "core-ui-200",
170
+ "core-ui-300",
171
+ "core-ui-400",
172
+ "core-ui-50",
173
+ "core-ui-500",
174
+ "core-ui-600",
175
+ "core-ui-700",
176
+ "core-ui-800",
177
+ "core-ui-900",
178
+ "core-white",
179
+ "line-brand",
180
+ "line-default",
181
+ "line-error",
182
+ "line-focus",
183
+ "line-highlight",
184
+ "line-info",
185
+ "line-strong",
186
+ "line-success",
187
+ "line-warning",
188
+ "text-brand",
189
+ "text-default",
190
+ "text-disabled",
191
+ "text-error",
192
+ "text-info",
193
+ "text-inverted",
194
+ "text-secondary",
195
+ "text-success",
196
+ "text-tertiary",
197
+ "text-warning"
198
+ ],
199
+ "examples": [
200
+ {
201
+ "id": "canonical",
202
+ "file": "examples/table.html",
203
+ "description": "Minimal canonical Table usage."
204
+ }
205
+ ],
206
+ "composition": {
207
+ "patterns": [
208
+ "table-data-disclosure"
209
+ ],
210
+ "relatedComponents": [
211
+ "pagination",
212
+ "checkbox",
213
+ "button"
214
+ ],
215
+ "notes": [
216
+ "Use sticky column variants only when key identifiers must remain visible during horizontal scroll."
217
+ ]
218
+ },
219
+ "breakingChangePolicy": {
220
+ "classContract": "Base class, documented modifiers, and state class names are semver-protected for consumer markup.",
221
+ "a11yContract": "Documented role and aria requirements are semver-protected for generated markup."
222
+ }
223
+ }
@@ -0,0 +1,147 @@
1
+ {
2
+ "id": "tabs",
3
+ "name": "Tabs",
4
+ "status": "stable",
5
+ "summary": "Tab component for switching between different views.",
6
+ "keywords": [
7
+ "content",
8
+ "interface",
9
+ "menu",
10
+ "navigation",
11
+ "panels",
12
+ "panes",
13
+ "sections",
14
+ "switch",
15
+ "tabpanel",
16
+ "tabs",
17
+ "toggle",
18
+ "views"
19
+ ],
20
+ "sourcePaths": [
21
+ "app/design-system/tabs/page.js",
22
+ "assets/styles/shared.css",
23
+ "assets/styles/tab.css"
24
+ ],
25
+ "apiModel": "html-class",
26
+ "baseClass": "tab-list",
27
+ "variants": [
28
+ {
29
+ "name": "tab-boxed",
30
+ "className": "tab-boxed",
31
+ "description": "Boxed variant with background"
32
+ },
33
+ {
34
+ "name": "tab-toggle",
35
+ "className": "tab-toggle",
36
+ "description": "Toggle variant"
37
+ },
38
+ {
39
+ "name": "tab-list-full",
40
+ "className": "tab-list-full",
41
+ "description": "Makes tabs take full width"
42
+ }
43
+ ],
44
+ "sizes": [
45
+ {
46
+ "name": "tab-xs",
47
+ "className": "tab-xs",
48
+ "description": "Extra small size variant"
49
+ },
50
+ {
51
+ "name": "tab-sm",
52
+ "className": "tab-sm",
53
+ "description": "Small size variant"
54
+ },
55
+ {
56
+ "name": "tab-lg",
57
+ "className": "tab-lg",
58
+ "description": "Large size variant"
59
+ }
60
+ ],
61
+ "states": [],
62
+ "structure": {
63
+ "rootElement": "button",
64
+ "requiredClasses": [
65
+ "tab-list"
66
+ ],
67
+ "optionalClasses": [
68
+ "tab-boxed",
69
+ "tab-toggle",
70
+ "tab-list-full",
71
+ "tab-xs",
72
+ "tab-sm",
73
+ "tab-lg"
74
+ ],
75
+ "requiredChildren": [],
76
+ "optionalChildren": []
77
+ },
78
+ "attributes": {
79
+ "allowed": [
80
+ "class",
81
+ "id",
82
+ "tabindex"
83
+ ],
84
+ "required": [],
85
+ "dataAttributes": [],
86
+ "roles": [],
87
+ "aria": []
88
+ },
89
+ "a11y": {
90
+ "interactive": true,
91
+ "requiredRoles": [],
92
+ "requiredAria": [
93
+ "aria-label (when no visible label)"
94
+ ],
95
+ "keyboardSupport": [
96
+ "Tab",
97
+ "Shift+Tab",
98
+ "Enter",
99
+ "Space"
100
+ ],
101
+ "focusBehavior": "Visible focus state is required when the component is focusable or clickable."
102
+ },
103
+ "dos": [
104
+ "Apply the base class 'tab-list' on the root element.",
105
+ "Use documented modifiers for visual variants instead of ad-hoc custom classes.",
106
+ "Keep semantic color usage aligned with token classes for light/dark support."
107
+ ],
108
+ "donts": [
109
+ "Do not combine conflicting state classes on the same element.",
110
+ "Do not rely on undocumented internal classes in production templates.",
111
+ "Do not remove required accessibility attributes when component is interactive."
112
+ ],
113
+ "tokenUsage": [
114
+ "background-surface",
115
+ "background-surface-elevated",
116
+ "brand-default",
117
+ "brand-moderate",
118
+ "line-brand",
119
+ "line-default",
120
+ "line-error",
121
+ "line-focus",
122
+ "line-highlight",
123
+ "line-strong",
124
+ "text-brand",
125
+ "text-default",
126
+ "text-inverted",
127
+ "text-tertiary"
128
+ ],
129
+ "examples": [
130
+ {
131
+ "id": "canonical",
132
+ "file": "examples/tabs.html",
133
+ "description": "Minimal canonical Tabs usage."
134
+ }
135
+ ],
136
+ "composition": {
137
+ "patterns": [
138
+ "navigation-hierarchy"
139
+ ],
140
+ "relatedComponents": [],
141
+ "notes": []
142
+ },
143
+ "breakingChangePolicy": {
144
+ "classContract": "Base class, documented modifiers, and state class names are semver-protected for consumer markup.",
145
+ "a11yContract": "Documented role and aria requirements are semver-protected for generated markup."
146
+ }
147
+ }
@@ -0,0 +1,80 @@
1
+ {
2
+ "id": "template-ai",
3
+ "name": "Fundraising AI components",
4
+ "status": "preview",
5
+ "summary": "Explore AI components tailored to fundraising workflows.",
6
+ "keywords": [
7
+ "agent",
8
+ "ai",
9
+ "alva",
10
+ "chat",
11
+ "fundraising AI",
12
+ "gpt",
13
+ "llama",
14
+ "llm",
15
+ "openai",
16
+ "template ai",
17
+ "template-ai",
18
+ "twntyX"
19
+ ],
20
+ "sourcePaths": [
21
+ "app/design-system/template-ai/page.js"
22
+ ],
23
+ "apiModel": "html-class",
24
+ "baseClass": "template-ai",
25
+ "variants": [],
26
+ "sizes": [],
27
+ "states": [],
28
+ "structure": {
29
+ "rootElement": "div",
30
+ "requiredClasses": [
31
+ "template-ai"
32
+ ],
33
+ "optionalClasses": [],
34
+ "requiredChildren": [],
35
+ "optionalChildren": []
36
+ },
37
+ "attributes": {
38
+ "allowed": [
39
+ "class"
40
+ ],
41
+ "required": [],
42
+ "dataAttributes": [],
43
+ "roles": [],
44
+ "aria": []
45
+ },
46
+ "a11y": {
47
+ "interactive": false,
48
+ "requiredRoles": [],
49
+ "requiredAria": [],
50
+ "keyboardSupport": [],
51
+ "focusBehavior": "No keyboard interaction is required unless nested interactive children are introduced."
52
+ },
53
+ "dos": [
54
+ "Apply the base class 'template-ai' on the root element.",
55
+ "Use documented modifiers for visual variants instead of ad-hoc custom classes.",
56
+ "Keep semantic color usage aligned with token classes for light/dark support."
57
+ ],
58
+ "donts": [
59
+ "Do not combine conflicting state classes on the same element.",
60
+ "Do not rely on undocumented internal classes in production templates.",
61
+ "Do not remove required accessibility attributes when component is interactive."
62
+ ],
63
+ "tokenUsage": [],
64
+ "examples": [
65
+ {
66
+ "id": "canonical",
67
+ "file": "examples/template-ai.html",
68
+ "description": "Minimal canonical Fundraising AI components usage."
69
+ }
70
+ ],
71
+ "composition": {
72
+ "patterns": [],
73
+ "relatedComponents": [],
74
+ "notes": []
75
+ },
76
+ "breakingChangePolicy": {
77
+ "classContract": "Base class, documented modifiers, and state class names are semver-protected for consumer markup.",
78
+ "a11yContract": "Documented role and aria requirements are semver-protected for generated markup."
79
+ }
80
+ }
@@ -0,0 +1,88 @@
1
+ {
2
+ "id": "template-login",
3
+ "name": "Login components",
4
+ "status": "preview",
5
+ "summary": "Explore various authentication components including login and password setup templates.",
6
+ "keywords": [
7
+ "auth",
8
+ "authentication",
9
+ "google",
10
+ "login",
11
+ "microsoft",
12
+ "oauth",
13
+ "password",
14
+ "sign in",
15
+ "single sign on",
16
+ "sso",
17
+ "template login",
18
+ "template-login"
19
+ ],
20
+ "sourcePaths": [
21
+ "app/design-system/template-login/page.js"
22
+ ],
23
+ "apiModel": "html-class",
24
+ "baseClass": "template-login",
25
+ "variants": [],
26
+ "sizes": [],
27
+ "states": [],
28
+ "structure": {
29
+ "rootElement": "div",
30
+ "requiredClasses": [
31
+ "template-login"
32
+ ],
33
+ "optionalClasses": [],
34
+ "requiredChildren": [],
35
+ "optionalChildren": []
36
+ },
37
+ "attributes": {
38
+ "allowed": [
39
+ "class"
40
+ ],
41
+ "required": [],
42
+ "dataAttributes": [],
43
+ "roles": [
44
+ "separator"
45
+ ],
46
+ "aria": [
47
+ "aria-label"
48
+ ]
49
+ },
50
+ "a11y": {
51
+ "interactive": false,
52
+ "requiredRoles": [
53
+ "separator"
54
+ ],
55
+ "requiredAria": [
56
+ "aria-label"
57
+ ],
58
+ "keyboardSupport": [],
59
+ "focusBehavior": "No keyboard interaction is required unless nested interactive children are introduced."
60
+ },
61
+ "dos": [
62
+ "Apply the base class 'template-login' on the root element.",
63
+ "Use documented modifiers for visual variants instead of ad-hoc custom classes.",
64
+ "Keep semantic color usage aligned with token classes for light/dark support."
65
+ ],
66
+ "donts": [
67
+ "Do not combine conflicting state classes on the same element.",
68
+ "Do not rely on undocumented internal classes in production templates.",
69
+ "Do not remove required accessibility attributes when component is interactive."
70
+ ],
71
+ "tokenUsage": [],
72
+ "examples": [
73
+ {
74
+ "id": "canonical",
75
+ "file": "examples/template-login.html",
76
+ "description": "Minimal canonical Login components usage."
77
+ }
78
+ ],
79
+ "composition": {
80
+ "patterns": [],
81
+ "relatedComponents": [],
82
+ "notes": []
83
+ },
84
+ "breakingChangePolicy": {
85
+ "classContract": "Base class, documented modifiers, and state class names are semver-protected for consumer markup.",
86
+ "a11yContract": "Documented role and aria requirements are semver-protected for generated markup."
87
+ }
88
+ }
@@ -0,0 +1,76 @@
1
+ {
2
+ "id": "template-stats",
3
+ "name": "Stats template",
4
+ "status": "preview",
5
+ "summary": "Tailwind-first stats template for composing metric cards directly in markup without component-specific classes.",
6
+ "keywords": [
7
+ "dashboard",
8
+ "kpi",
9
+ "metrics",
10
+ "stats",
11
+ "tailwind",
12
+ "template",
13
+ "template stats",
14
+ "template-stats"
15
+ ],
16
+ "sourcePaths": [
17
+ "app/design-system/template-stats/page.js"
18
+ ],
19
+ "apiModel": "html-class",
20
+ "baseClass": "template-stats",
21
+ "variants": [],
22
+ "sizes": [],
23
+ "states": [],
24
+ "structure": {
25
+ "rootElement": "div",
26
+ "requiredClasses": [
27
+ "template-stats"
28
+ ],
29
+ "optionalClasses": [],
30
+ "requiredChildren": [],
31
+ "optionalChildren": []
32
+ },
33
+ "attributes": {
34
+ "allowed": [
35
+ "class"
36
+ ],
37
+ "required": [],
38
+ "dataAttributes": [],
39
+ "roles": [],
40
+ "aria": []
41
+ },
42
+ "a11y": {
43
+ "interactive": false,
44
+ "requiredRoles": [],
45
+ "requiredAria": [],
46
+ "keyboardSupport": [],
47
+ "focusBehavior": "No keyboard interaction is required unless nested interactive children are introduced."
48
+ },
49
+ "dos": [
50
+ "Apply the base class 'template-stats' on the root element.",
51
+ "Use documented modifiers for visual variants instead of ad-hoc custom classes.",
52
+ "Keep semantic color usage aligned with token classes for light/dark support."
53
+ ],
54
+ "donts": [
55
+ "Do not combine conflicting state classes on the same element.",
56
+ "Do not rely on undocumented internal classes in production templates.",
57
+ "Do not remove required accessibility attributes when component is interactive."
58
+ ],
59
+ "tokenUsage": [],
60
+ "examples": [
61
+ {
62
+ "id": "canonical",
63
+ "file": "examples/template-stats.html",
64
+ "description": "Minimal canonical Stats template usage."
65
+ }
66
+ ],
67
+ "composition": {
68
+ "patterns": [],
69
+ "relatedComponents": [],
70
+ "notes": []
71
+ },
72
+ "breakingChangePolicy": {
73
+ "classContract": "Base class, documented modifiers, and state class names are semver-protected for consumer markup.",
74
+ "a11yContract": "Documented role and aria requirements are semver-protected for generated markup."
75
+ }
76
+ }