twntyx-css 1.0.10 → 1.0.11

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 CHANGED
@@ -28,12 +28,47 @@ npm install twntyx-css
28
28
 
29
29
  ### 3. Import the css
30
30
 
31
- Import the Framework CSS into your project stylesheet.
31
+ Import the framework stylesheets into your project. Load fonts before globals so bundlers resolve packaged font files correctly:
32
32
 
33
33
  ```css
34
+ @import url('twntyx-css/styles/font.css');
34
35
  @import 'twntyx-css/styles/globals.css';
35
36
  ```
36
37
 
38
+ Or import both in your app entry:
39
+
40
+ ```js
41
+ import 'twntyx-css/styles/font.css';
42
+ import 'twntyx-css/styles/globals.css';
43
+ ```
44
+
45
+ ### Nuxt + Tailwind CSS v4
46
+
47
+ ```ts
48
+ // nuxt.config.ts
49
+ export default defineNuxtConfig({
50
+ css: [
51
+ 'twntyx-css/styles/font.css',
52
+ 'twntyx-css/styles/globals.css',
53
+ ],
54
+ postcss: {
55
+ plugins: {
56
+ '@tailwindcss/postcss': {},
57
+ },
58
+ },
59
+ })
60
+ ```
61
+
62
+ twntyx-css ships `@font-face` rules for Instrument Sans and Gazpacho, so `@nuxt/fonts` is optional.
63
+
64
+ ### Fonts troubleshooting
65
+
66
+ If fonts fall back to system defaults:
67
+
68
+ 1. Import `twntyx-css/styles/font.css` before `twntyx-css/styles/globals.css`.
69
+ 2. In DevTools Network, confirm font requests resolve to bundled assets (not `/fonts/...` at your site root).
70
+ 3. After upgrading, clear `.nuxt/` and `node_modules/.cache`.
71
+
37
72
  ### 4. Adapt webpack config.
38
73
 
39
74
  Add postcss-loader to webpack.config.js.
@@ -17,64 +17,19 @@
17
17
  "new message state"
18
18
  ],
19
19
  "sourcePaths": [
20
- "app/design-system/chat-ai/page.js",
21
- "assets/styles/button.css",
22
- "assets/styles/chat.css",
23
- "assets/styles/form-text-select.css",
24
- "assets/styles/panel.css",
25
- "assets/styles/toast.css"
20
+ "app/design-system/chat-ai/page.js"
26
21
  ],
27
22
  "apiModel": "html-class",
28
23
  "baseClass": "chat-ai",
29
- "variants": [
30
- {
31
- "name": "chat-secondary",
32
- "className": "chat-secondary",
33
- "description": "AI chat visual variant styling."
34
- }
35
- ],
36
- "sizes": [
37
- {
38
- "name": "chat-loop-stack-lg",
39
- "className": "chat-loop-stack-lg",
40
- "description": "Large min-height variant for loop stack."
41
- }
42
- ],
43
- "states": [
44
- {
45
- "name": "chat-loop-loading",
46
- "className": "chat-loop-loading",
47
- "description": "Animated loading row in loop simulation."
48
- },
49
- {
50
- "name": "chat-loop-message",
51
- "className": "chat-loop-message",
52
- "description": "Animated resolved message row in loop simulation."
53
- },
54
- {
55
- "name": "is-owner",
56
- "className": "is-owner",
57
- "description": "Marks messages authored by the current user."
58
- },
59
- {
60
- "name": "is-loading",
61
- "className": "is-loading",
62
- "description": "Shows loading placeholder behavior for a message group."
63
- }
64
- ],
24
+ "variants": [],
25
+ "sizes": [],
26
+ "states": [],
65
27
  "structure": {
66
28
  "rootElement": "div",
67
29
  "requiredClasses": [
68
30
  "chat-ai"
69
31
  ],
70
- "optionalClasses": [
71
- "chat-secondary",
72
- "chat-loop-stack-lg",
73
- "chat-loop-loading",
74
- "chat-loop-message",
75
- "is-owner",
76
- "is-loading"
77
- ],
32
+ "optionalClasses": [],
78
33
  "requiredChildren": [],
79
34
  "optionalChildren": []
80
35
  },
@@ -114,56 +69,7 @@
114
69
  "Do not rely on undocumented internal classes in production templates.",
115
70
  "Do not remove required accessibility attributes when component is interactive."
116
71
  ],
117
- "tokenUsage": [
118
- "background-brand",
119
- "background-brand-active",
120
- "background-error",
121
- "background-error-active",
122
- "background-info",
123
- "background-info-active",
124
- "background-inverted",
125
- "background-page",
126
- "background-success",
127
- "background-success-active",
128
- "background-surface",
129
- "background-surface-elevated",
130
- "background-surface-sunken",
131
- "background-warning",
132
- "background-warning-active",
133
- "brand-default",
134
- "brand-moderate",
135
- "brand-strong",
136
- "core-black",
137
- "core-ui-100",
138
- "core-ui-50",
139
- "core-ui-700",
140
- "core-ui-800",
141
- "core-ui-900",
142
- "core-white",
143
- "line-default",
144
- "line-error",
145
- "line-focus",
146
- "line-highlight",
147
- "line-info",
148
- "line-strong",
149
- "line-success",
150
- "line-warning",
151
- "text-attention",
152
- "text-brand",
153
- "text-brand-active",
154
- "text-brand-hover",
155
- "text-default",
156
- "text-disabled",
157
- "text-error",
158
- "text-info",
159
- "text-inverted",
160
- "text-link",
161
- "text-link-hover",
162
- "text-secondary",
163
- "text-success",
164
- "text-tertiary",
165
- "text-warning"
166
- ],
72
+ "tokenUsage": [],
167
73
  "examples": [
168
74
  {
169
75
  "id": "canonical",
@@ -1 +1 @@
1
- <div class="chat-ai chat-secondary">AI chat structure</div>
1
+ <div class="chat-ai">AI chat structure</div>
package/llm/index.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "llmSchemaVersion": "1.0.0",
3
- "designSystemVersion": "1.0.10",
3
+ "designSystemVersion": "1.0.11",
4
4
  "packageName": "twntyx-css",
5
5
  "apiModel": "html-class",
6
- "sourceFingerprint": "f7c8ee0540e7bb413846b1be281b9f5034f86ab48ade5f990858bbcce6fea5ad",
6
+ "sourceFingerprint": "bcce447bfbebb4a79325f5db8a4af76b85fb2dec7e871f5ff848f6e33901ee92",
7
7
  "files": {
8
8
  "schema": "schema.json",
9
9
  "tokens": "tokens.json",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "twntyx-css",
3
- "version": "1.0.10",
3
+ "version": "1.0.11",
4
4
  "exports": {
5
5
  "./llm": "./llm/index.json",
6
6
  "./llm/components/*": "./llm/components/*.json",
@@ -11,6 +11,7 @@
11
11
  "./*": "./*",
12
12
  "./fonts/*": "./fonts/*",
13
13
  "./styles": "./styles/globals.css",
14
+ "./styles/font.css": "./styles/font.css",
14
15
  "./styles/*": "./styles/*",
15
16
  "./tailwind.config": "./tailwind.config.cjs"
16
17
  },
package/styles/button.css CHANGED
@@ -310,7 +310,7 @@
310
310
  }
311
311
 
312
312
  @utility button-destructive {
313
- @apply border backdrop-blur include-border-destructive bg-background-error border-line-error hover:border-line-error text-text-error active:bg-background-surface-elevated;
313
+ @apply border backdrop-blur include-border-destructive bg-background-error border-line-error hover:border-text-error text-text-error active:bg-background-surface-elevated;
314
314
 
315
315
  &.is-active {
316
316
  @apply bg-background-surface-elevated;
@@ -318,7 +318,7 @@
318
318
  }
319
319
 
320
320
  @utility button-constructive {
321
- @apply border backdrop-blur include-border-destructive bg-background-success border-line-success hover:border-line-success text-text-success active:bg-background-surface-elevated;
321
+ @apply border backdrop-blur include-border-destructive bg-background-success border-line-success hover:border-text-success text-text-success active:bg-background-surface-elevated;
322
322
 
323
323
  &.is-active {
324
324
  @apply bg-background-surface-elevated;
package/styles/chat.css CHANGED
@@ -332,7 +332,9 @@
332
332
  top-0
333
333
  md:top-3.5
334
334
  left-0
335
- animate-loading-text-gradient;
335
+ animate-loading-text-gradient
336
+ from-text-default
337
+ to-text-default/10;
336
338
  }
337
339
  }
338
340
  }
package/styles/font.css CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  @font-face {
6
6
  font-family: "Instrument Sans";
7
- src: url("../fonts/InstrumentSans-VariableFont_wdth,wght.ttf") format("truetype");
7
+ src: url("../fonts/InstrumentSans-Variable.ttf") format("truetype");
8
8
  font-weight: 100 900;
9
9
  font-style: normal;
10
10
  font-display: swap;
@@ -12,7 +12,7 @@
12
12
 
13
13
  @font-face {
14
14
  font-family: "Instrument Sans";
15
- src: url("../fonts/InstrumentSans-Italic-VariableFont_wdth,wght.ttf") format("truetype");
15
+ src: url("../fonts/InstrumentSans-Italic-Variable.ttf") format("truetype");
16
16
  font-weight: 100 900;
17
17
  font-style: italic;
18
18
  font-display: swap;
@@ -1,3 +1,4 @@
1
+ @import url("./font.css");
1
2
  @import 'tailwindcss';
2
3
  @import './theme.css';
3
4
 
@@ -25,7 +26,6 @@
25
26
  @import './drawer.css';
26
27
  @import './fieldset.css';
27
28
  @import './field.css';
28
- @import './font.css';
29
29
  @import './dropdown.css';
30
30
  @import './form-shared.css';
31
31
  @import './form-checkbox-radio-toggle.css';
package/styles/menu.css CHANGED
@@ -39,7 +39,7 @@
39
39
  &:has(svg:only-child) {
40
40
  @apply px-2;
41
41
  }
42
- > *:not(svg, .avatar) {
42
+ > *:not(svg, .avatar, .material-symbols-rounded) {
43
43
  @apply w-full;
44
44
  }
45
45
  svg {
@@ -110,3 +110,7 @@ h6 {
110
110
  }
111
111
  }
112
112
  }
113
+
114
+ .material-symbols-rounded {
115
+ @apply leading-none;
116
+ }