twntyx-css 1.0.2 → 1.0.5

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 (70) hide show
  1. package/llm/components/ai-orb.json +0 -1
  2. package/llm/components/ai-perl.json +5 -13
  3. package/llm/components/all-components.json +13 -5
  4. package/llm/components/{banner-marketplace.json → banner-funding.json} +8 -8
  5. package/llm/components/breadcrumb.json +0 -1
  6. package/llm/components/button-container.json +1 -0
  7. package/llm/components/chat-ai.json +100 -6
  8. package/llm/components/chat-footer.json +24 -3
  9. package/llm/components/checkmark.json +0 -1
  10. package/llm/components/command-palette.json +0 -1
  11. package/llm/components/countdown.json +1 -1
  12. package/llm/components/divider.json +1 -1
  13. package/llm/components/kbd.json +1 -1
  14. package/llm/components/key-value.json +2 -10
  15. package/llm/components/{skeleton.json → loader-skeleton.json} +7 -5
  16. package/llm/components/{loader.json → loader-symbol.json} +8 -10
  17. package/llm/components/{empty-state.json → loader-text.json} +22 -20
  18. package/llm/components/progress-bullet.json +0 -1
  19. package/llm/components/state.json +2 -1
  20. package/llm/components/stepper.json +1 -1
  21. package/llm/components/steps.json +6 -95
  22. package/llm/components/surface.json +2 -0
  23. package/llm/components/tabs.json +1 -0
  24. package/llm/components/{input-group.json → template-navbar.json} +28 -43
  25. package/llm/components/text-input.json +8 -169
  26. package/llm/components/toast.json +0 -2
  27. package/llm/components/tooltip.json +1 -1
  28. package/llm/examples/ai-perl.html +1 -1
  29. package/llm/examples/banner-funding.html +1 -0
  30. package/llm/examples/chat-ai.html +1 -1
  31. package/llm/examples/chat-footer.html +1 -1
  32. package/llm/examples/key-value.html +1 -1
  33. package/llm/examples/loader-skeleton.html +1 -0
  34. package/llm/examples/loader-symbol.html +1 -0
  35. package/llm/examples/loader-text.html +1 -0
  36. package/llm/examples/steps.html +1 -1
  37. package/llm/examples/template-navbar.html +1 -0
  38. package/llm/index.json +73 -88
  39. package/llm/patterns.json +2 -2
  40. package/llm/tokens.json +657 -367
  41. package/package.json +1 -1
  42. package/styles/ai.css +3 -7
  43. package/styles/animation.css +228 -94
  44. package/styles/button.css +50 -39
  45. package/styles/card.css +3 -3
  46. package/styles/colors.css +525 -283
  47. package/styles/datepicker.css +8 -15
  48. package/styles/divider.css +1 -1
  49. package/styles/form.css +6 -8
  50. package/styles/globals.css +62 -64
  51. package/styles/key-value.css +4 -3
  52. package/styles/loader.css +25 -31
  53. package/styles/logotype.css +6 -6
  54. package/styles/scrollbar.css +2 -2
  55. package/styles/shared.css +17 -17
  56. package/styles/skeleton.css +2 -1
  57. package/styles/state.css +109 -97
  58. package/styles/steps.css +2 -2
  59. package/styles/surface.css +74 -90
  60. package/styles/table.css +3 -3
  61. package/styles/toast.css +3 -5
  62. package/llm/components/navbar.json +0 -158
  63. package/llm/examples/banner-marketplace.html +0 -1
  64. package/llm/examples/empty-state.html +0 -1
  65. package/llm/examples/input-group.html +0 -1
  66. package/llm/examples/loader.html +0 -1
  67. package/llm/examples/navbar.html +0 -1
  68. package/llm/examples/skeleton.html +0 -1
  69. package/styles/empty-state.css +0 -48
  70. package/styles/navbar.css +0 -48
@@ -4,16 +4,14 @@
4
4
 
5
5
  /* Base Surface */
6
6
  @utility surface {
7
- @apply
8
- border
7
+ @apply border
9
8
  bg-background-surface
10
9
  border-line-default;
11
10
  }
12
11
 
13
12
  /* Surface Variants */
14
13
  @utility surface-placeholder {
15
- @apply
16
- border
14
+ @apply border
17
15
  border-dashed
18
16
  bg-background-page
19
17
  border-line-highlight
@@ -21,11 +19,10 @@
21
19
  }
22
20
 
23
21
  @utility surface-elevated {
24
- @apply
25
- border
22
+ @apply border
26
23
  bg-background-surface-elevated
27
24
  border-line-hover/30
28
- shadow-[inset_0_-2px_2px_color-mix(in_srgb,var(--tw-inset-shadow-color)_100%,transparent),inset_0_-4px_4px_color-mix(in_srgb,var(--tw-inset-shadow-color)_25%,transparent)]
25
+ shadow-[inset_0_-1px_1px_color-mix(in_srgb,var(--tw-inset-shadow-color)_100%,transparent),inset_0_-2px_2px_color-mix(in_srgb,var(--tw-inset-shadow-color)_25%,transparent)]
29
26
  inset-shadow-white/80
30
27
  dark:inset-shadow-white/5;
31
28
  }
@@ -34,10 +31,9 @@
34
31
  @apply border
35
32
  bg-background-surface-sunken
36
33
  border-line-strong/35
37
- shadow-[inset_0_2px_2px_color-mix(in_srgb,var(--tw-inset-shadow-color)_100%,transparent),inset_0_4px_4px_color-mix(in_srgb,var(--tw-inset-shadow-color)_25%,transparent)]
34
+ shadow-[inset_0_1px_1px_color-mix(in_srgb,var(--tw-inset-shadow-color)_100%,transparent),inset_0_2px_2px_color-mix(in_srgb,var(--tw-inset-shadow-color)_25%,transparent)]
38
35
  inset-shadow-black/5
39
- dark:inset-shadow-black/40
40
- ;
36
+ dark:inset-shadow-black/40;
41
37
  }
42
38
 
43
39
  @utility surface-highlighted {
@@ -46,44 +42,36 @@
46
42
 
47
43
  /* Brand Surfaces */
48
44
  @utility surface-brand {
49
- @apply
50
- text-text-inverted
45
+ @apply text-text-inverted
51
46
  bg-linear-to-b
52
47
  via-75%
53
48
  from-[0.5rem]
54
49
  to-[calc(100%-0.5rem)]
55
50
  from-brand-default
56
51
  to-brand-moderate
57
- dark:from-brand-moderate
58
- dark:to-brand-default
59
- /* dark:from-brand-default
60
- dark:via-brand-moderate
61
- dark:to-brand-default */
52
+ /* dark:from-brand-moderate */
53
+ /* dark:to-brand-default */
62
54
  border
63
55
  border-brand-default
64
- /* bg-size-[100%_calc(100%+0.5rem)]
65
- bg-repeat
66
- bg-position-[50%_calc(50%-0.5rem)] */
67
-
68
- /* dark:*:drop-shadow-[0_-1px_0_color-mix(in_srgb,var(--tw-drop-shadow-color)_20%,transparent),0_-1px_1px_var(--tw-drop-shadow-color),0_-1px_2px_color-mix(in_srgb,var(--tw-drop-shadow-color)_20%,transparent)] */
69
-
70
- /* text-shadow-2xs
71
- text-shadow-brand-strong/50 */
72
56
  transition-[background-position,brightness]
73
- shadow-[inset_0_1px_0.5px_0_color-mix(in_srgb,var(--color-brand-moderate)_100%,transparent),inset_0_-2px_0.5px_0_color-mix(in_srgb,var(--color-brand-default)_50%,transparent)]
74
- dark:shadow-[inset_0_1px_0.5px_0_color-mix(in_srgb,var(--color-brand-soft)_100%,transparent),inset_0_-2px_0.5px_0_color-mix(in_srgb,var(--color-white)_50%,transparent)]
75
- /* dark:shadow-[inset_0_-1px_0.5px_0_color-mix(in_srgb,var(--color-brand-moderate)_100%,transparent),inset_0_-2px_0.5px_0_color-mix(in_srgb,var(--color-brand-default)_50%,transparent)] */
57
+ shadow-[inset_0_1px_0_0_color-mix(in_srgb,var(--color-brand-moderate)_100%,transparent),inset_0_-2px_0_0_color-mix(in_srgb,var(--color-brand-default)_50%,transparent)]
58
+ /* dark:shadow-[inset_0_1px_0.5px_0_color-mix(in_srgb,var(--color-brand-soft)_100%,transparent),inset_0_-2px_0.5px_0_color-mix(in_srgb,var(--color-white)_50%,transparent)] */
76
59
  duration-75
77
- ease-out-cubic
78
- ;
60
+ ease-out-cubic;
79
61
 
80
- > *, &::before, &::after {
81
- @apply
82
- drop-shadow-[0_1px_0_color-mix(in_srgb,var(--tw-drop-shadow-color)_20%,transparent),0_1px_1px_color-mix(in_srgb,var(--tw-drop-shadow-color)_100%,transparent),0_1px_2px_color-mix(in_srgb,var(--tw-drop-shadow-color)_20%,transparent)]
62
+ > *,
63
+ &::before,
64
+ &::after {
65
+ @apply drop-shadow-[0_1px_0_color-mix(in_srgb,var(--tw-drop-shadow-color)_20%,transparent),0_1px_1px_color-mix(in_srgb,var(--tw-drop-shadow-color)_100%,transparent),0_1px_2px_color-mix(in_srgb,var(--tw-drop-shadow-color)_20%,transparent)]
83
66
  dark:drop-shadow-[0_-1px_0_color-mix(in_srgb,var(--tw-drop-shadow-color)_10%,transparent)]
84
- drop-shadow-brand-strong/50
85
- ;
86
- }
67
+ drop-shadow-brand-strong/50;
68
+ }
69
+ }
70
+
71
+ @utility surface-brand-light {
72
+ @apply bg-background-brand/15
73
+ border
74
+ border-line-brand/15;
87
75
  }
88
76
 
89
77
  /* Status Surfaces */
@@ -136,61 +124,59 @@
136
124
  }
137
125
 
138
126
  @utility surface-interactive-brand {
139
- @apply
140
- surface-brand
127
+ @apply surface-brand
141
128
  hover:brightness-105
142
129
  hover:border-brand-strong
143
- active:border-brand-default
144
- ;
130
+ active:border-brand-default;
145
131
  }
146
132
 
147
133
  @utility surface-interactive {
148
- @apply cursor-pointer hover:transition-colors include-interactive;
149
-
150
- /* Interactive states for base surface */
151
- &.surface {
152
- @apply surface-interactive-neutral;
153
- }
154
-
155
- /* Interactive states for placeholder surface */
156
- &.surface-placeholder {
157
- @apply surface-interactive-placeholder;
158
- }
159
-
160
- /* Interactive states for elevated surface */
161
- &.surface-elevated {
162
- @apply hover:bg-background-surface-elevated/90 hover:border-line-hover active:bg-background-surface-elevated/75 active:border-line-strong;
163
- }
164
-
165
- /* Interactive states for sunken surface */
166
- &.surface-sunken {
167
- @apply hover:bg-background-surface hover:border-line-hover active:bg-background-page active:border-line-strong;
168
- }
169
-
170
- /* Interactive states for brand surface */
171
- &.surface-brand {
172
- @apply surface-interactive-brand;
173
- }
174
-
175
- /* Interactive states for success surface */
176
- &.surface-success {
177
- @apply surface-interactive-success;
178
- }
179
-
180
- /* Interactive states for error surface */
181
- &.surface-error {
182
- @apply surface-interactive-error;
183
- }
184
-
185
- /* Interactive states for warning surface */
186
- &.surface-warning {
187
- @apply surface-interactive-warning;
188
- }
189
-
190
- /* Interactive states for attention surface */
191
- &.surface-attention {
192
- @apply surface-interactive-attention;
193
- }
134
+ @apply cursor-pointer hover:transition-colors include-interactive;
135
+
136
+ /* Interactive states for base surface */
137
+ &.surface {
138
+ @apply surface-interactive-neutral;
139
+ }
140
+
141
+ /* Interactive states for placeholder surface */
142
+ &.surface-placeholder {
143
+ @apply surface-interactive-placeholder;
144
+ }
145
+
146
+ /* Interactive states for elevated surface */
147
+ &.surface-elevated {
148
+ @apply hover:bg-background-surface-elevated/90 hover:border-line-hover active:bg-background-surface-elevated/75 active:border-line-strong;
149
+ }
150
+
151
+ /* Interactive states for sunken surface */
152
+ &.surface-sunken {
153
+ @apply hover:bg-background-surface hover:border-line-hover active:bg-background-page active:border-line-strong;
154
+ }
155
+
156
+ /* Interactive states for brand surface */
157
+ &.surface-brand {
158
+ @apply surface-interactive-brand;
159
+ }
160
+
161
+ /* Interactive states for success surface */
162
+ &.surface-success {
163
+ @apply surface-interactive-success;
164
+ }
165
+
166
+ /* Interactive states for error surface */
167
+ &.surface-error {
168
+ @apply surface-interactive-error;
169
+ }
170
+
171
+ /* Interactive states for warning surface */
172
+ &.surface-warning {
173
+ @apply surface-interactive-warning;
174
+ }
175
+
176
+ /* Interactive states for attention surface */
177
+ &.surface-attention {
178
+ @apply surface-interactive-attention;
179
+ }
194
180
 
195
181
  /* Interactive states for info surface */
196
182
  &.surface-info {
@@ -199,8 +185,7 @@
199
185
  }
200
186
 
201
187
  @utility surface-claim {
202
- @apply
203
- relative
188
+ @apply relative
204
189
  overflow-clip
205
190
  rounded-full
206
191
  bg-brand-moderate!
@@ -217,8 +202,7 @@
217
202
  --claim-color-3: var(--color-text-inverted);
218
203
  --claim-color-4: var(--color-text-inverted);
219
204
 
220
- @apply
221
- absolute
205
+ @apply absolute
222
206
  z-0
223
207
  -inset-1.5
224
208
  rounded-full
package/styles/table.css CHANGED
@@ -100,7 +100,7 @@
100
100
  }
101
101
 
102
102
  th {
103
- @apply font-medium text-left whitespace-nowrap text-text-secondary;
103
+ @apply font-semibold text-left whitespace-nowrap text-text-secondary;
104
104
  }
105
105
 
106
106
  td {
@@ -157,8 +157,8 @@
157
157
  }
158
158
 
159
159
  /* Row selection styles */
160
- tr:has(input[type="checkbox"]:checked),
161
- tr:has(input[type="radio"]:checked) {
160
+ tr:has(input[type='checkbox']:checked),
161
+ tr:has(input[type='radio']:checked) {
162
162
  @apply bg-background-brand/5;
163
163
  .table-item-title {
164
164
  @apply font-medium text-text-default;
package/styles/toast.css CHANGED
@@ -10,7 +10,7 @@
10
10
  }
11
11
 
12
12
  @utility toast {
13
- @apply relative pt-0.5 mx-auto w-full max-w-lg overflow-clip rounded border shadow-xl duration-300 text-text-default bg-background-surface ease-snappy-out border-line-default;
13
+ @apply relative pt-0.5 mx-auto w-full max-w-lg overflow-clip rounded border shadow-xl duration-300 text-text-default surface-elevated ease-snappy-out;
14
14
 
15
15
  &::before {
16
16
  @apply content-[''] absolute inset-x-0 top-0 h-0.5 rounded-t-xl duration-200 ease-in-out-cubic origin-center;
@@ -71,12 +71,10 @@
71
71
  }
72
72
 
73
73
  @utility toast-action {
74
- @apply
75
- px-3
74
+ @apply px-3
76
75
  py-1
77
76
  ml-3
78
- rounded-2xl
79
- ;
77
+ rounded-2xl;
80
78
  }
81
79
 
82
80
  @utility toast-close {
@@ -1,158 +0,0 @@
1
- {
2
- "id": "navbar",
3
- "name": "Navbar",
4
- "status": "stable",
5
- "summary": "Navbar layout pattern for top-level product navigation and actions.",
6
- "keywords": [
7
- "header",
8
- "nav",
9
- "navbar",
10
- "navigation bar",
11
- "site navigation",
12
- "top bar"
13
- ],
14
- "sourcePaths": [
15
- "app/design-system/navbar/page.js",
16
- "assets/styles/breadcrumb.css",
17
- "assets/styles/button.css",
18
- "assets/styles/chat.css",
19
- "assets/styles/checkmark.css",
20
- "assets/styles/command.css",
21
- "assets/styles/form-text-select.css",
22
- "assets/styles/menu.css",
23
- "assets/styles/navbar.css",
24
- "assets/styles/pagination.css",
25
- "assets/styles/progress.css",
26
- "assets/styles/steps.css",
27
- "assets/styles/tab.css",
28
- "assets/styles/table.css",
29
- "assets/styles/toast.css"
30
- ],
31
- "apiModel": "html-class",
32
- "baseClass": "navbar",
33
- "variants": [],
34
- "sizes": [],
35
- "states": [
36
- {
37
- "name": "is-active",
38
- "className": "is-active",
39
- "description": "Highlights the active navigation item."
40
- }
41
- ],
42
- "structure": {
43
- "rootElement": "a",
44
- "requiredClasses": [
45
- "navbar"
46
- ],
47
- "optionalClasses": [
48
- "is-active"
49
- ],
50
- "requiredChildren": [],
51
- "optionalChildren": []
52
- },
53
- "attributes": {
54
- "allowed": [
55
- "class"
56
- ],
57
- "required": [],
58
- "dataAttributes": [],
59
- "roles": [],
60
- "aria": [
61
- "aria-current",
62
- "aria-label"
63
- ]
64
- },
65
- "a11y": {
66
- "interactive": false,
67
- "requiredRoles": [],
68
- "requiredAria": [
69
- "aria-current",
70
- "aria-label"
71
- ],
72
- "keyboardSupport": [],
73
- "focusBehavior": "No keyboard interaction is required unless nested interactive children are introduced."
74
- },
75
- "dos": [
76
- "Apply the base class 'navbar' on the root element.",
77
- "Use documented modifiers for visual variants instead of ad-hoc custom classes.",
78
- "Keep semantic color usage aligned with token classes for light/dark support."
79
- ],
80
- "donts": [
81
- "Do not combine conflicting state classes on the same element.",
82
- "Do not rely on undocumented internal classes in production templates.",
83
- "Do not remove required accessibility attributes when component is interactive."
84
- ],
85
- "tokenUsage": [
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-strong",
104
- "core-black",
105
- "core-ui-100",
106
- "core-ui-300",
107
- "core-ui-400",
108
- "core-ui-50",
109
- "core-ui-600",
110
- "core-ui-700",
111
- "core-ui-800",
112
- "core-ui-900",
113
- "core-white",
114
- "line-brand",
115
- "line-default",
116
- "line-error",
117
- "line-focus",
118
- "line-highlight",
119
- "line-info",
120
- "line-strong",
121
- "line-success",
122
- "line-warning",
123
- "text-attention",
124
- "text-brand",
125
- "text-brand-active",
126
- "text-brand-hover",
127
- "text-default",
128
- "text-disabled",
129
- "text-error",
130
- "text-info",
131
- "text-inverted",
132
- "text-link",
133
- "text-link-active",
134
- "text-link-hover",
135
- "text-secondary",
136
- "text-success",
137
- "text-tertiary",
138
- "text-warning"
139
- ],
140
- "examples": [
141
- {
142
- "id": "canonical",
143
- "file": "examples/navbar.html",
144
- "description": "Minimal canonical Navbar usage."
145
- }
146
- ],
147
- "composition": {
148
- "patterns": [
149
- "navigation-hierarchy"
150
- ],
151
- "relatedComponents": [],
152
- "notes": []
153
- },
154
- "breakingChangePolicy": {
155
- "classContract": "Base class, documented modifiers, and state class names are semver-protected for consumer markup.",
156
- "a11yContract": "Documented role and aria requirements are semver-protected for generated markup."
157
- }
158
- }
@@ -1 +0,0 @@
1
- <div class="banner-marketplace">Funding banner</div>
@@ -1 +0,0 @@
1
- <div class="empty-state">Empty state</div>
@@ -1 +0,0 @@
1
- <div class="input-group">Input group</div>
@@ -1 +0,0 @@
1
- <div class="loader">Loader</div>
@@ -1 +0,0 @@
1
- <a class="navbar" href="#">Navbar</a>
@@ -1 +0,0 @@
1
- <div class="skeleton">Skeleton</div>
@@ -1,48 +0,0 @@
1
- /*----------------------------*/
2
- /* EMPTY STATE */
3
- /*----------------------------*/
4
-
5
- @utility empty-state {
6
- @apply p-8 rounded-3xl border bg-background-surface border-line-default text-center;
7
-
8
- > :where(.empty-state-icon) {
9
- @apply inline-flex justify-center items-center mx-auto mb-4 rounded-full size-14 surface-elevated text-text-tertiary;
10
-
11
- > svg {
12
- @apply size-7 fill-current;
13
- }
14
- }
15
-
16
- > :where(h1, h2, h3, h4, h5, h6, .empty-state-title) {
17
- @apply mb-2 h4;
18
- }
19
-
20
- > :where(p, .empty-state-description) {
21
- @apply p2 text-text-secondary;
22
- }
23
-
24
- > :where(:last-child, .empty-state-actions) {
25
- @apply flex flex-wrap gap-2 justify-center mt-4;
26
- }
27
- }
28
-
29
- /* Compatibility aliases */
30
- @utility empty-state-icon {
31
- @apply inline-flex justify-center items-center mx-auto mb-4 rounded-full size-14 surface-elevated text-text-tertiary;
32
-
33
- > svg {
34
- @apply size-7 fill-current;
35
- }
36
- }
37
-
38
- @utility empty-state-title {
39
- @apply mb-2 h4;
40
- }
41
-
42
- @utility empty-state-description {
43
- @apply p2 text-text-secondary;
44
- }
45
-
46
- @utility empty-state-actions {
47
- @apply flex flex-wrap gap-2 justify-center mt-4;
48
- }
package/styles/navbar.css DELETED
@@ -1,48 +0,0 @@
1
- /*----------------------------*/
2
- /* NAVBAR */
3
- /*----------------------------*/
4
-
5
- @utility navbar {
6
- @apply w-full flex gap-3 items-center p-2 rounded-2xl border bg-background-surface border-line-default;
7
-
8
- > :where(:first-child, .navbar-start) {
9
- @apply flex flex-1 gap-2 items-center min-w-0;
10
- }
11
-
12
- > :where(:nth-child(2), .navbar-center) {
13
- @apply flex gap-2 justify-center items-center;
14
- }
15
-
16
- > :where(:last-child, .navbar-end) {
17
- @apply flex flex-1 gap-2 justify-end items-center min-w-0;
18
- }
19
-
20
- :where(a, button, .navbar-item) {
21
- @apply inline-flex gap-2 items-center px-3 py-1.5 rounded-full text-sm include-interactive include-hover-primary text-text-secondary hover:text-text-default;
22
-
23
- &.is-active {
24
- @apply include-hover-primary-active text-text-brand;
25
- }
26
- }
27
- }
28
-
29
- /* Compatibility aliases */
30
- @utility navbar-start {
31
- @apply flex flex-1 gap-2 items-center min-w-0;
32
- }
33
-
34
- @utility navbar-center {
35
- @apply flex gap-2 justify-center items-center;
36
- }
37
-
38
- @utility navbar-end {
39
- @apply flex flex-1 gap-2 justify-end items-center min-w-0;
40
- }
41
-
42
- @utility navbar-item {
43
- @apply inline-flex gap-2 items-center px-3 py-1.5 rounded-full text-sm include-interactive include-hover-primary text-text-secondary hover:text-text-default;
44
-
45
- &.is-active {
46
- @apply include-hover-primary-active text-text-brand;
47
- }
48
- }