@warmio/design 1.5.1 → 1.6.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/LICENSES/{inter-OFL-1.1.txt → source-serif-4-OFL-1.1.txt} +1 -1
- package/README.md +2 -2
- package/components.css +111 -82
- package/dist/logo.js +2 -2
- package/fonts/source-serif-4-cyrillic-ext-wght-italic.woff2 +0 -0
- package/fonts/source-serif-4-cyrillic-ext-wght-normal.woff2 +0 -0
- package/fonts/source-serif-4-cyrillic-wght-italic.woff2 +0 -0
- package/fonts/source-serif-4-cyrillic-wght-normal.woff2 +0 -0
- package/fonts/source-serif-4-greek-wght-italic.woff2 +0 -0
- package/fonts/source-serif-4-greek-wght-normal.woff2 +0 -0
- package/fonts/source-serif-4-latin-ext-wght-italic.woff2 +0 -0
- package/fonts/source-serif-4-latin-ext-wght-normal.woff2 +0 -0
- package/fonts/source-serif-4-latin-wght-italic.woff2 +0 -0
- package/fonts/source-serif-4-latin-wght-normal.woff2 +0 -0
- package/fonts/source-serif-4-vietnamese-wght-italic.woff2 +0 -0
- package/fonts/source-serif-4-vietnamese-wght-normal.woff2 +0 -0
- package/fonts.css +65 -195
- package/interfaces.css +4 -1
- package/package.json +1 -1
- package/theme.css +4 -4
- package/LICENSES/geist-OFL-1.1.txt +0 -93
- package/fonts/geist-cyrillic-ext-wght-italic.woff2 +0 -0
- package/fonts/geist-cyrillic-ext-wght-normal.woff2 +0 -0
- package/fonts/geist-cyrillic-wght-italic.woff2 +0 -0
- package/fonts/geist-cyrillic-wght-normal.woff2 +0 -0
- package/fonts/geist-latin-ext-wght-italic.woff2 +0 -0
- package/fonts/geist-latin-ext-wght-normal.woff2 +0 -0
- package/fonts/geist-latin-wght-italic.woff2 +0 -0
- package/fonts/geist-latin-wght-normal.woff2 +0 -0
- package/fonts/geist-vietnamese-wght-italic.woff2 +0 -0
- package/fonts/geist-vietnamese-wght-normal.woff2 +0 -0
- package/fonts/inter-cyrillic-ext-wght-italic.woff2 +0 -0
- package/fonts/inter-cyrillic-ext-wght-normal.woff2 +0 -0
- package/fonts/inter-cyrillic-wght-italic.woff2 +0 -0
- package/fonts/inter-cyrillic-wght-normal.woff2 +0 -0
- package/fonts/inter-greek-ext-wght-italic.woff2 +0 -0
- package/fonts/inter-greek-ext-wght-normal.woff2 +0 -0
- package/fonts/inter-greek-wght-italic.woff2 +0 -0
- package/fonts/inter-greek-wght-normal.woff2 +0 -0
- package/fonts/inter-latin-ext-wght-italic.woff2 +0 -0
- package/fonts/inter-latin-ext-wght-normal.woff2 +0 -0
- package/fonts/inter-latin-wght-italic.woff2 +0 -0
- package/fonts/inter-latin-wght-normal.woff2 +0 -0
- package/fonts/inter-vietnamese-wght-italic.woff2 +0 -0
- package/fonts/inter-vietnamese-wght-normal.woff2 +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
Google Inc.
|
|
2
2
|
|
|
3
3
|
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
|
4
4
|
This license is copied below, and is also available with a FAQ at:
|
package/README.md
CHANGED
|
@@ -14,8 +14,8 @@ import { Button, ButtonLink } from '@warmio/design/button';
|
|
|
14
14
|
import { Logo, WarmLogoIcon } from '@warmio/design/logo';
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
-
The
|
|
18
|
-
|
|
17
|
+
The product typefaces are Geist Mono for default UI and Source Serif 4 for
|
|
18
|
+
headings (`h1`–`h6`). Do not add a third family.
|
|
19
19
|
|
|
20
20
|
`--accent-solid` / `--accent-solid-text` are the chromatic accent for links,
|
|
21
21
|
badges, and highlights. They derive from `--brand-accent-solid` in `themes.css`.
|
package/components.css
CHANGED
|
@@ -41,12 +41,12 @@
|
|
|
41
41
|
/* border handled by variant shadows/tokens; no default regression border */
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
-
|
|
45
44
|
[data-warm-button]:focus-visible {
|
|
46
|
-
box-shadow: 0 0 0 var(--button-focus-ring)
|
|
45
|
+
box-shadow: 0 0 0 var(--button-focus-ring)
|
|
46
|
+
color-mix(in oklab, var(--ring) var(--button-mix-50), transparent);
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
-
[data-warm-button][data-width=
|
|
49
|
+
[data-warm-button][data-width='full'] {
|
|
50
50
|
width: var(--button-width-full);
|
|
51
51
|
}
|
|
52
52
|
|
|
@@ -65,78 +65,78 @@
|
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
/* Variants (from cva + overrides + edge; tokens for color/shadow/radius) */
|
|
68
|
-
[data-warm-button][data-variant=
|
|
68
|
+
[data-warm-button][data-variant='default'] {
|
|
69
69
|
background-color: var(--button-primary-bg);
|
|
70
70
|
background-image: var(--button-primary-gradient);
|
|
71
71
|
color: var(--button-primary-foreground);
|
|
72
72
|
box-shadow: var(--button-primary-shadow);
|
|
73
73
|
/* no explicit border to avoid regression; shadow provides chrome */
|
|
74
74
|
}
|
|
75
|
-
[data-warm-button][data-variant=
|
|
75
|
+
[data-warm-button][data-variant='default']:hover {
|
|
76
76
|
background-color: var(--button-primary-hover);
|
|
77
77
|
background-image: var(--button-primary-gradient-hover);
|
|
78
78
|
}
|
|
79
|
-
[data-warm-button][data-variant=
|
|
79
|
+
[data-warm-button][data-variant='default']:active {
|
|
80
80
|
background-color: var(--button-primary-active);
|
|
81
81
|
}
|
|
82
82
|
|
|
83
|
-
[data-warm-button][data-variant=
|
|
83
|
+
[data-warm-button][data-variant='outline'] {
|
|
84
84
|
background-color: var(--background);
|
|
85
85
|
box-shadow: var(--button-outline-shadow);
|
|
86
86
|
border-style: none;
|
|
87
87
|
}
|
|
88
|
-
[data-warm-button][data-variant=
|
|
88
|
+
[data-warm-button][data-variant='outline']:hover {
|
|
89
89
|
background-color: var(--muted);
|
|
90
90
|
color: var(--foreground);
|
|
91
91
|
}
|
|
92
|
-
.dark [data-warm-button][data-variant=
|
|
92
|
+
.dark [data-warm-button][data-variant='outline'] {
|
|
93
93
|
background-color: var(--warm-surface-raised-dark, var(--input));
|
|
94
94
|
box-shadow: var(--button-outline-shadow-inset);
|
|
95
95
|
}
|
|
96
|
-
.dark [data-warm-button][data-variant=
|
|
96
|
+
.dark [data-warm-button][data-variant='outline']:hover {
|
|
97
97
|
background-color: var(--warm-surface-raised-hover-dark, var(--muted));
|
|
98
98
|
}
|
|
99
|
-
[data-warm-button][data-variant=
|
|
99
|
+
[data-warm-button][data-variant='outline']:disabled {
|
|
100
100
|
opacity: 1;
|
|
101
101
|
background-color: var(--muted);
|
|
102
102
|
color: var(--muted-foreground);
|
|
103
103
|
box-shadow: var(--button-outline-shadow);
|
|
104
104
|
}
|
|
105
|
-
.dark [data-warm-button][data-variant=
|
|
105
|
+
.dark [data-warm-button][data-variant='outline']:disabled {
|
|
106
106
|
background-color: color-mix(in oklab, var(--input) var(--button-mix-20), transparent);
|
|
107
107
|
box-shadow: var(--button-outline-shadow-inset);
|
|
108
108
|
}
|
|
109
109
|
|
|
110
|
-
[data-warm-button][data-variant=
|
|
110
|
+
[data-warm-button][data-variant='ghost'] {
|
|
111
111
|
/* `background-color` (not the `background` shorthand): the shorthand
|
|
112
112
|
implicitly resets `background-clip` to its initial `border-box`,
|
|
113
113
|
diverging from the base recipe's `padding-box` (origin: `bg-clip-padding`
|
|
114
114
|
with no resting-state Tailwind `bg-*` utility on ghost). */
|
|
115
115
|
background-color: transparent;
|
|
116
116
|
}
|
|
117
|
-
[data-warm-button][data-variant=
|
|
117
|
+
[data-warm-button][data-variant='ghost']:hover {
|
|
118
118
|
background-color: var(--muted);
|
|
119
119
|
color: var(--foreground);
|
|
120
120
|
}
|
|
121
|
-
.dark [data-warm-button][data-variant=
|
|
121
|
+
.dark [data-warm-button][data-variant='ghost']:hover {
|
|
122
122
|
background-color: color-mix(in oklab, var(--muted) var(--button-mix-50), transparent);
|
|
123
123
|
}
|
|
124
124
|
|
|
125
|
-
[data-warm-button][data-variant=
|
|
125
|
+
[data-warm-button][data-variant='destructive'] {
|
|
126
126
|
background-color: color-mix(in oklab, var(--destructive) var(--button-mix-10), transparent);
|
|
127
127
|
color: var(--destructive);
|
|
128
128
|
}
|
|
129
|
-
[data-warm-button][data-variant=
|
|
129
|
+
[data-warm-button][data-variant='destructive']:hover {
|
|
130
130
|
background-color: color-mix(in oklab, var(--destructive) var(--button-mix-20), transparent);
|
|
131
131
|
}
|
|
132
|
-
.dark [data-warm-button][data-variant=
|
|
132
|
+
.dark [data-warm-button][data-variant='destructive'] {
|
|
133
133
|
background-color: color-mix(in oklab, var(--destructive) var(--button-mix-20), transparent);
|
|
134
134
|
}
|
|
135
|
-
.dark [data-warm-button][data-variant=
|
|
135
|
+
.dark [data-warm-button][data-variant='destructive']:hover {
|
|
136
136
|
background-color: color-mix(in oklab, var(--destructive) var(--button-mix-30), transparent);
|
|
137
137
|
}
|
|
138
138
|
|
|
139
|
-
[data-warm-button][data-variant=
|
|
139
|
+
[data-warm-button][data-variant='apple'] {
|
|
140
140
|
/* `!important` on color/background: legacy's `buttonVariantClasses.apple`
|
|
141
141
|
overlay always applies after any presentation overlay in `cn()` order
|
|
142
142
|
(e.g. promptCategory's own `bg-background`/`text-foreground`,
|
|
@@ -152,51 +152,58 @@
|
|
|
152
152
|
color: var(--apple-button-foreground) !important;
|
|
153
153
|
box-shadow: var(--button-outline-shadow);
|
|
154
154
|
}
|
|
155
|
-
button[data-warm-button][data-variant=
|
|
155
|
+
button[data-warm-button][data-variant='apple'] {
|
|
156
156
|
appearance: button;
|
|
157
157
|
background-clip: padding-box;
|
|
158
158
|
}
|
|
159
|
-
[data-warm-button][data-variant=
|
|
160
|
-
background-color: color-mix(
|
|
159
|
+
[data-warm-button][data-variant='apple']:hover {
|
|
160
|
+
background-color: color-mix(
|
|
161
|
+
in oklab,
|
|
162
|
+
var(--apple-button-hover) var(--button-mix-90),
|
|
163
|
+
transparent
|
|
164
|
+
);
|
|
161
165
|
color: var(--apple-button-foreground);
|
|
162
166
|
}
|
|
163
|
-
[data-warm-button][data-variant=
|
|
167
|
+
[data-warm-button][data-variant='arrow'] {
|
|
164
168
|
border-width: 0;
|
|
165
169
|
text-decoration: underline;
|
|
166
170
|
text-underline-offset: var(--button-underline-offset);
|
|
167
171
|
}
|
|
168
|
-
[data-warm-button][data-variant=
|
|
172
|
+
[data-warm-button][data-variant='arrow'] svg {
|
|
169
173
|
width: var(--button-icon-size);
|
|
170
174
|
height: var(--button-icon-size);
|
|
171
175
|
transition: transform calc(var(--motion-duration-fast) * 2);
|
|
172
176
|
}
|
|
173
|
-
[data-warm-button][data-variant=
|
|
174
|
-
transform: translate(
|
|
177
|
+
[data-warm-button][data-variant='arrow']:hover svg {
|
|
178
|
+
transform: translate(
|
|
179
|
+
calc(var(--motion-distance-sm) / 2),
|
|
180
|
+
calc(-1 * var(--motion-distance-sm) / 2)
|
|
181
|
+
);
|
|
175
182
|
}
|
|
176
183
|
@media (prefers-reduced-motion: reduce) {
|
|
177
|
-
[data-warm-button][data-variant=
|
|
184
|
+
[data-warm-button][data-variant='arrow']:hover svg {
|
|
178
185
|
transform: none;
|
|
179
186
|
transition: none;
|
|
180
187
|
}
|
|
181
188
|
}
|
|
182
189
|
|
|
183
190
|
/* Sizes (public only; presentation overrides suppressed by explicit size via data attr, matches old resolveButton) */
|
|
184
|
-
[data-warm-button][data-size=
|
|
191
|
+
[data-warm-button][data-size='default'] {
|
|
185
192
|
height: var(--button-height-default);
|
|
186
193
|
padding-left: var(--button-padding-x);
|
|
187
194
|
padding-right: var(--button-padding-x);
|
|
188
195
|
gap: var(--button-gap);
|
|
189
196
|
}
|
|
190
|
-
[data-warm-button][data-size=
|
|
197
|
+
[data-warm-button][data-size='jumbo'] {
|
|
191
198
|
height: var(--button-height-jumbo);
|
|
192
|
-
padding-left: var(--button-padding-x);
|
|
193
|
-
padding-right: var(--button-padding-x);
|
|
199
|
+
padding-left: var(--button-padding-x-lg);
|
|
200
|
+
padding-right: var(--button-padding-x-lg);
|
|
194
201
|
font-size: var(--button-font-size-jumbo);
|
|
195
202
|
font-weight: 700;
|
|
196
203
|
line-height: var(--button-line-height-jumbo);
|
|
197
204
|
gap: var(--button-gap);
|
|
198
205
|
}
|
|
199
|
-
[data-warm-button][data-size=
|
|
206
|
+
[data-warm-button][data-size='icon'] {
|
|
200
207
|
width: var(--button-height-icon);
|
|
201
208
|
height: var(--button-height-icon);
|
|
202
209
|
}
|
|
@@ -204,45 +211,47 @@ button[data-warm-button][data-variant="apple"] {
|
|
|
204
211
|
buttonInputAlignmentClasses.default = 'bg-clip-border py-2'); this only
|
|
205
212
|
applies when the caller passes size="default" explicitly, never when
|
|
206
213
|
'default' is reached through presentation-driven implicit sizing. */
|
|
207
|
-
[data-warm-button][data-size=
|
|
214
|
+
[data-warm-button][data-size='default'][data-explicit-size] {
|
|
208
215
|
padding-top: var(--button-padding-y-md);
|
|
209
216
|
padding-bottom: var(--button-padding-y-md);
|
|
210
217
|
background-clip: border-box;
|
|
211
218
|
}
|
|
212
219
|
|
|
213
220
|
/* Presentations: private legacy maps drive resolve to public data-size; geometry only when !data-explicit-size. Exact from old buttonPresentationClasses + primitive sizes (icon-round=36px etc) + edge + variants. */
|
|
214
|
-
[data-warm-button][data-presentation=
|
|
221
|
+
[data-warm-button][data-presentation='assistantIcon']:not([data-explicit-size]) {
|
|
215
222
|
width: var(--button-size-xs);
|
|
216
223
|
height: var(--button-size-xs);
|
|
217
224
|
padding: var(--button-padding-y-md);
|
|
218
225
|
}
|
|
219
|
-
[data-warm-button][data-presentation=
|
|
226
|
+
[data-warm-button][data-presentation='assistantIcon']:not([data-explicit-size]):active:not(
|
|
227
|
+
[aria-haspopup]
|
|
228
|
+
) {
|
|
220
229
|
transform: scale(0.9);
|
|
221
230
|
}
|
|
222
231
|
@media (prefers-reduced-motion: reduce) {
|
|
223
|
-
[data-warm-button][data-presentation=
|
|
224
|
-
|
|
225
|
-
|
|
232
|
+
[data-warm-button][data-presentation='assistantIcon']:not([data-explicit-size]):active:not(
|
|
233
|
+
[aria-haspopup]
|
|
234
|
+
) {
|
|
226
235
|
transform: none;
|
|
227
236
|
}
|
|
228
237
|
}
|
|
229
|
-
[data-warm-button][data-presentation=
|
|
238
|
+
[data-warm-button][data-presentation='assistantRoundIcon']:not([data-explicit-size]) {
|
|
230
239
|
/* old icon-round 36px */
|
|
231
240
|
width: var(--button-height-icon);
|
|
232
241
|
height: var(--button-height-icon);
|
|
233
242
|
}
|
|
234
|
-
[data-warm-button][data-presentation=
|
|
243
|
+
[data-warm-button][data-presentation='composerIcon']:not([data-explicit-size]) {
|
|
235
244
|
width: var(--button-size-sm);
|
|
236
245
|
height: var(--button-size-sm);
|
|
237
246
|
padding: var(--button-padding-y-md);
|
|
238
247
|
}
|
|
239
|
-
[data-warm-button][data-presentation=
|
|
248
|
+
[data-warm-button][data-presentation='editPill']:not([data-explicit-size]) {
|
|
240
249
|
/* old sm 32px */
|
|
241
250
|
height: var(--button-size-md);
|
|
242
251
|
padding-left: var(--button-padding-x);
|
|
243
252
|
padding-right: var(--button-padding-x);
|
|
244
253
|
}
|
|
245
|
-
[data-warm-button][data-presentation=
|
|
254
|
+
[data-warm-button][data-presentation='hero']:not([data-explicit-size]) {
|
|
246
255
|
height: var(--button-size-lg);
|
|
247
256
|
padding-left: var(--button-padding-x);
|
|
248
257
|
padding-right: var(--button-padding-x);
|
|
@@ -253,7 +262,7 @@ button[data-warm-button][data-variant="apple"] {
|
|
|
253
262
|
line-height: var(--button-line-height-base);
|
|
254
263
|
background-clip: border-box;
|
|
255
264
|
}
|
|
256
|
-
[data-warm-button][data-presentation=
|
|
265
|
+
[data-warm-button][data-presentation='promptCategory']:not([data-explicit-size]) {
|
|
257
266
|
height: var(--button-height-default);
|
|
258
267
|
gap: var(--button-gap);
|
|
259
268
|
background-color: var(--background);
|
|
@@ -268,7 +277,7 @@ button[data-warm-button][data-variant="apple"] {
|
|
|
268
277
|
important modifier) to every `default`-variant promptCategory button
|
|
269
278
|
regardless of explicit/implicit sizing, overriding the default variant's
|
|
270
279
|
own gradient shadow unconditionally; mirror that with `!important` here. */
|
|
271
|
-
[data-warm-button][data-presentation=
|
|
280
|
+
[data-warm-button][data-presentation='promptCategory'][data-variant='default'] {
|
|
272
281
|
box-shadow: var(--shadow-xs) !important;
|
|
273
282
|
}
|
|
274
283
|
/* buttonPresentationClasses.promptCategory's own (non-!important) `shadow-xs`
|
|
@@ -276,13 +285,15 @@ button[data-warm-button][data-variant="apple"] {
|
|
|
276
285
|
branch), and only survives the cascade for variants without their own
|
|
277
286
|
later shadow override — arrow forces `shadow-none` and must keep winning;
|
|
278
287
|
default is already covered, unconditionally, by the rule above. */
|
|
279
|
-
[data-warm-button][data-presentation=
|
|
288
|
+
[data-warm-button][data-presentation='promptCategory']:not([data-explicit-size]):not(
|
|
289
|
+
[data-variant='arrow']
|
|
290
|
+
) {
|
|
280
291
|
box-shadow: var(--shadow-xs) !important;
|
|
281
292
|
}
|
|
282
|
-
[data-warm-button][data-presentation=
|
|
293
|
+
[data-warm-button][data-presentation='promptCategory']:hover {
|
|
283
294
|
background-color: var(--muted);
|
|
284
295
|
}
|
|
285
|
-
[data-warm-button][data-presentation=
|
|
296
|
+
[data-warm-button][data-presentation='promptOption']:not([data-explicit-size]) {
|
|
286
297
|
height: auto;
|
|
287
298
|
min-height: var(--button-min-height-option);
|
|
288
299
|
align-items: flex-start;
|
|
@@ -291,15 +302,15 @@ button[data-warm-button][data-variant="apple"] {
|
|
|
291
302
|
padding: var(--button-padding-x);
|
|
292
303
|
font-size: var(--button-font-size);
|
|
293
304
|
}
|
|
294
|
-
[data-warm-button][data-presentation=
|
|
305
|
+
[data-warm-button][data-presentation='sidebarIcon']:not([data-explicit-size]) {
|
|
295
306
|
color: var(--sidebar-foreground);
|
|
296
307
|
background-clip: border-box;
|
|
297
308
|
}
|
|
298
|
-
[data-warm-button][data-presentation=
|
|
309
|
+
[data-warm-button][data-presentation='sidebarIcon']:hover {
|
|
299
310
|
background-color: var(--sidebar-accent);
|
|
300
311
|
color: var(--sidebar-accent-foreground);
|
|
301
312
|
}
|
|
302
|
-
[data-warm-button][data-presentation=
|
|
313
|
+
[data-warm-button][data-presentation='tableHeader']:not([data-explicit-size]) {
|
|
303
314
|
height: auto;
|
|
304
315
|
min-height: 0;
|
|
305
316
|
width: var(--button-width-full);
|
|
@@ -314,19 +325,19 @@ button[data-warm-button][data-variant="apple"] {
|
|
|
314
325
|
line-height: var(--button-line-height);
|
|
315
326
|
color: var(--muted-foreground);
|
|
316
327
|
}
|
|
317
|
-
[data-warm-button][data-presentation=
|
|
328
|
+
[data-warm-button][data-presentation='tableHeader']:hover {
|
|
318
329
|
background-color: transparent;
|
|
319
330
|
color: var(--foreground);
|
|
320
331
|
}
|
|
321
|
-
[data-warm-button][data-presentation=
|
|
332
|
+
[data-warm-button][data-presentation='touch']:not([data-explicit-size]) {
|
|
322
333
|
min-height: var(--button-min-height-touch);
|
|
323
334
|
}
|
|
324
|
-
[data-warm-button][data-presentation=
|
|
335
|
+
[data-warm-button][data-presentation='threadMore']:not([data-explicit-size]) {
|
|
325
336
|
width: var(--button-size-xs);
|
|
326
337
|
height: var(--button-size-xs);
|
|
327
338
|
padding: 0;
|
|
328
339
|
}
|
|
329
|
-
[data-warm-button][data-presentation=
|
|
340
|
+
[data-warm-button][data-presentation='threadNew']:not([data-explicit-size]) {
|
|
330
341
|
height: var(--button-size-md);
|
|
331
342
|
justify-content: flex-start;
|
|
332
343
|
gap: var(--button-gap);
|
|
@@ -335,10 +346,10 @@ button[data-warm-button][data-variant="apple"] {
|
|
|
335
346
|
font-size: var(--button-font-size);
|
|
336
347
|
font-weight: 400;
|
|
337
348
|
}
|
|
338
|
-
[data-warm-button][data-presentation=
|
|
349
|
+
[data-warm-button][data-presentation='threadNew']:hover {
|
|
339
350
|
background-color: var(--muted);
|
|
340
351
|
}
|
|
341
|
-
[data-warm-button][data-presentation=
|
|
352
|
+
[data-warm-button][data-presentation='compact']:not([data-explicit-size]) {
|
|
342
353
|
height: var(--button-size-md);
|
|
343
354
|
padding-left: var(--button-padding-x-sm);
|
|
344
355
|
padding-right: var(--button-padding-x-sm);
|
|
@@ -350,13 +361,13 @@ button[data-warm-button][data-variant="apple"] {
|
|
|
350
361
|
`[data-size="default"][data-explicit-size]` rule below only fires once a
|
|
351
362
|
caller passes size="default" explicitly, so implicit 'default'/'controlPeer'
|
|
352
363
|
need their own copy of the same two properties). */
|
|
353
|
-
[data-warm-button][data-presentation=
|
|
354
|
-
[data-warm-button][data-presentation=
|
|
364
|
+
[data-warm-button][data-presentation='default']:not([data-explicit-size]),
|
|
365
|
+
[data-warm-button][data-presentation='controlPeer']:not([data-explicit-size]) {
|
|
355
366
|
padding-top: var(--button-padding-y-md);
|
|
356
367
|
padding-bottom: var(--button-padding-y-md);
|
|
357
368
|
background-clip: border-box;
|
|
358
369
|
}
|
|
359
|
-
[data-warm-button][data-presentation=
|
|
370
|
+
[data-warm-button][data-presentation='menuOption']:not([data-explicit-size]) {
|
|
360
371
|
/* old option min-height/auto 64px */
|
|
361
372
|
height: auto;
|
|
362
373
|
min-height: var(--button-min-height-option);
|
|
@@ -379,7 +390,7 @@ button[data-warm-button][data-variant="apple"] {
|
|
|
379
390
|
specificity of the `:not([data-explicit-size])` presentation rules and the
|
|
380
391
|
`[data-size][data-explicit-size]` size rule above, so this later rule wins
|
|
381
392
|
the cascade instead of losing on specificity. */
|
|
382
|
-
[data-warm-button][data-variant=
|
|
393
|
+
[data-warm-button][data-variant='arrow'][data-variant='arrow'] {
|
|
383
394
|
height: auto;
|
|
384
395
|
padding: 0;
|
|
385
396
|
gap: var(--button-gap);
|
|
@@ -405,11 +416,11 @@ button[data-warm-button][data-variant="apple"] {
|
|
|
405
416
|
pointer-events: none;
|
|
406
417
|
flex-shrink: 0;
|
|
407
418
|
}
|
|
408
|
-
[data-warm-button] svg:not([class*=
|
|
419
|
+
[data-warm-button] svg:not([class*='size-']) {
|
|
409
420
|
width: var(--button-icon-size);
|
|
410
421
|
height: var(--button-icon-size);
|
|
411
422
|
}
|
|
412
|
-
[data-warm-button][data-size=
|
|
423
|
+
[data-warm-button][data-size='jumbo'] svg:not([class*='size-']) {
|
|
413
424
|
width: var(--button-icon-size-jumbo);
|
|
414
425
|
height: var(--button-icon-size-jumbo);
|
|
415
426
|
}
|
|
@@ -424,7 +435,7 @@ button[data-warm-button][data-variant="apple"] {
|
|
|
424
435
|
private `lg` behavior. `:not([data-explicit-size])` also raises this rule's
|
|
425
436
|
specificity above the plain jumbo rule above, so it wins unconditionally
|
|
426
437
|
whenever it matches. */
|
|
427
|
-
[data-warm-button][data-presentation=
|
|
438
|
+
[data-warm-button][data-presentation='hero']:not([data-explicit-size]) svg:not([class*='size-']) {
|
|
428
439
|
width: var(--button-icon-size);
|
|
429
440
|
height: var(--button-icon-size);
|
|
430
441
|
}
|
|
@@ -434,26 +445,30 @@ button[data-warm-button][data-variant="apple"] {
|
|
|
434
445
|
(`[&_svg:not([class*='size-'])]:size-5`) carries one more selector
|
|
435
446
|
component than arrow's (`[&_svg]:size-4`), so jumbo's larger glyph size
|
|
436
447
|
wins whenever both apply (verified against the real compiled recipe). */
|
|
437
|
-
[data-warm-button][data-variant=
|
|
448
|
+
[data-warm-button][data-variant='arrow'] svg {
|
|
438
449
|
width: var(--button-icon-size);
|
|
439
450
|
height: var(--button-icon-size);
|
|
440
451
|
}
|
|
441
452
|
/* icon-xs primitive size (assistantIcon, threadMore) shrinks the icon glyph;
|
|
442
453
|
suppressed when the caller passes an explicit public size. */
|
|
443
|
-
[data-warm-button][data-presentation=
|
|
444
|
-
|
|
454
|
+
[data-warm-button][data-presentation='assistantIcon']:not([data-explicit-size])
|
|
455
|
+
svg:not([class*='size-']),
|
|
456
|
+
[data-warm-button][data-presentation='threadMore']:not([data-explicit-size])
|
|
457
|
+
svg:not([class*='size-']) {
|
|
445
458
|
width: var(--button-icon-size-xs);
|
|
446
459
|
height: var(--button-icon-size-xs);
|
|
447
460
|
}
|
|
448
461
|
/* Aria states (from cva aria-invalid + aria-expanded + dark) */
|
|
449
462
|
[data-warm-button][aria-invalid] {
|
|
450
|
-
box-shadow: 0 0 0 var(--button-focus-ring)
|
|
463
|
+
box-shadow: 0 0 0 var(--button-focus-ring)
|
|
464
|
+
color-mix(in oklab, var(--destructive) var(--button-mix-20), transparent);
|
|
451
465
|
}
|
|
452
466
|
.dark [data-warm-button][aria-invalid] {
|
|
453
|
-
box-shadow: 0 0 0 var(--button-focus-ring)
|
|
467
|
+
box-shadow: 0 0 0 var(--button-focus-ring)
|
|
468
|
+
color-mix(in oklab, var(--destructive) var(--button-mix-40), transparent);
|
|
454
469
|
}
|
|
455
|
-
[data-warm-button][data-variant=
|
|
456
|
-
[data-warm-button][data-variant=
|
|
470
|
+
[data-warm-button][data-variant='ghost'][aria-expanded='true'],
|
|
471
|
+
[data-warm-button][data-variant='outline'][aria-expanded='true'] {
|
|
457
472
|
background-color: var(--muted);
|
|
458
473
|
color: var(--foreground);
|
|
459
474
|
}
|
|
@@ -463,8 +478,8 @@ button[data-warm-button][data-variant="apple"] {
|
|
|
463
478
|
pointer-events: none;
|
|
464
479
|
opacity: 0.5;
|
|
465
480
|
}
|
|
466
|
-
[data-warm-button][data-variant=
|
|
467
|
-
[data-warm-button][data-variant=
|
|
481
|
+
[data-warm-button][data-variant='apple']:disabled,
|
|
482
|
+
[data-warm-button][data-variant='outline']:disabled {
|
|
468
483
|
opacity: 1;
|
|
469
484
|
}
|
|
470
485
|
|
|
@@ -480,16 +495,30 @@ button[data-warm-button][data-variant="apple"] {
|
|
|
480
495
|
letter-spacing: var(--logo-letter-spacing);
|
|
481
496
|
}
|
|
482
497
|
svg[data-warm-logo] {
|
|
483
|
-
display:
|
|
484
|
-
vertical-align: middle;
|
|
498
|
+
display: block;
|
|
485
499
|
fill: currentColor;
|
|
486
500
|
flex-shrink: 0;
|
|
487
501
|
}
|
|
488
|
-
[data-warm-logo][data-size=
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
502
|
+
[data-warm-logo][data-size='badge'] svg[data-warm-logo] {
|
|
503
|
+
width: var(--logo-size-badge);
|
|
504
|
+
height: var(--logo-size-badge);
|
|
505
|
+
}
|
|
506
|
+
[data-warm-logo][data-size='default'] svg[data-warm-logo] {
|
|
507
|
+
width: var(--logo-size-default);
|
|
508
|
+
height: var(--logo-size-default);
|
|
509
|
+
}
|
|
510
|
+
[data-warm-logo][data-size='feature'] svg[data-warm-logo] {
|
|
511
|
+
width: var(--logo-size-feature);
|
|
512
|
+
height: var(--logo-size-feature);
|
|
513
|
+
}
|
|
514
|
+
[data-warm-logo][data-size='hero'] svg[data-warm-logo] {
|
|
515
|
+
width: var(--logo-size-hero);
|
|
516
|
+
height: var(--logo-size-hero);
|
|
517
|
+
}
|
|
495
518
|
|
|
519
|
+
[data-warm-logo][data-tone='foreground'] {
|
|
520
|
+
color: var(--foreground);
|
|
521
|
+
}
|
|
522
|
+
[data-warm-logo][data-tone='sidebar'] {
|
|
523
|
+
color: var(--sidebar-foreground);
|
|
524
|
+
}
|
package/dist/logo.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
const WShape = (_jsxs("g", { fill: "currentColor", children: [_jsx("path", { d: "M 33.500 40.660 C 20.206 42.744, 0 48.560, -0 50.302 C -0 51.759, 123.955 348.889, 127.738 356.500 C 142.182 385.561, 169.450 410.275, 198.946 421.040 C 218.922 428.330, 243.683 430.825, 264.526 427.648 C 277.151 425.724, 294.628 420.011, 294.194 417.952 C 293.790 416.040, 172.732 124.599, 168.522 115.405 C 161.779 100.679, 149.168 84.171, 135.093 71.646 C 119.358 57.644, 98.880 47.362, 77 42.478 C 69.645 40.836, 40.220 39.606, 33.500 40.660" }), _jsx("path", { d: "M 229.651 41.597 C 217.916 43.718, 202.443 49.144, 202.744 51.035 C 203.418 55.268, 329.689 356.584, 333.687 363.500 C 340.525 375.327, 345.293 381.483, 355.408 391.538 C 374.603 410.619, 398.878 423.014, 425.907 427.533 C 439.649 429.831, 463.594 429.132, 476 426.072 C 489.892 422.645, 497.188 419.815, 496.703 418.043 C 495.416 413.331, 371.058 116.094, 367.406 109 C 349.467 74.149, 313.008 47.875, 273.752 41.509 C 262.281 39.648, 240.195 39.693, 229.651 41.597" }), _jsx("path", { d: "M 463 40.593 C 451.670 42.545, 447.288 43.569, 439 46.203 C 433.775 47.864, 429.338 49.372, 429.140 49.555 C 428.942 49.737, 434.670 64.021, 441.868 81.297 C 455.574 114.190, 462.215 131.660, 468.447 151.208 C 475.360 172.892, 486.124 186.213, 503.834 194.997 C 530.956 208.450, 564.982 201.679, 583.654 179.112 C 604.399 154.041, 605.407 121.944, 586.291 95.155 C 567.827 69.280, 539.107 50.114, 508 42.907 C 500.680 41.212, 494.713 40.644, 482 40.434 C 472.925 40.284, 464.375 40.356, 463 40.593" })] }));
|
|
3
|
+
const WShape = (_jsxs("g", { fill: "currentColor", transform: "translate(0 108)", children: [_jsx("path", { d: "M 33.500 40.660 C 20.206 42.744, 0 48.560, -0 50.302 C -0 51.759, 123.955 348.889, 127.738 356.500 C 142.182 385.561, 169.450 410.275, 198.946 421.040 C 218.922 428.330, 243.683 430.825, 264.526 427.648 C 277.151 425.724, 294.628 420.011, 294.194 417.952 C 293.790 416.040, 172.732 124.599, 168.522 115.405 C 161.779 100.679, 149.168 84.171, 135.093 71.646 C 119.358 57.644, 98.880 47.362, 77 42.478 C 69.645 40.836, 40.220 39.606, 33.500 40.660" }), _jsx("path", { d: "M 229.651 41.597 C 217.916 43.718, 202.443 49.144, 202.744 51.035 C 203.418 55.268, 329.689 356.584, 333.687 363.500 C 340.525 375.327, 345.293 381.483, 355.408 391.538 C 374.603 410.619, 398.878 423.014, 425.907 427.533 C 439.649 429.831, 463.594 429.132, 476 426.072 C 489.892 422.645, 497.188 419.815, 496.703 418.043 C 495.416 413.331, 371.058 116.094, 367.406 109 C 349.467 74.149, 313.008 47.875, 273.752 41.509 C 262.281 39.648, 240.195 39.693, 229.651 41.597" }), _jsx("path", { d: "M 463 40.593 C 451.670 42.545, 447.288 43.569, 439 46.203 C 433.775 47.864, 429.338 49.372, 429.140 49.555 C 428.942 49.737, 434.670 64.021, 441.868 81.297 C 455.574 114.190, 462.215 131.660, 468.447 151.208 C 475.360 172.892, 486.124 186.213, 503.834 194.997 C 530.956 208.450, 564.982 201.679, 583.654 179.112 C 604.399 154.041, 605.407 121.944, 586.291 95.155 C 567.827 69.280, 539.107 50.114, 508 42.907 C 500.680 41.212, 494.713 40.644, 482 40.434 C 472.925 40.284, 464.375 40.356, 463 40.593" })] }));
|
|
4
4
|
export function WarmLogoIcon({ size = 'default', tone = 'default', decorative = false, className: _className, style: _style, asChild: _asChild, render: _render, ...props }) {
|
|
5
5
|
const label = decorative ? undefined : 'Warm logo';
|
|
6
|
-
return (_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 600
|
|
6
|
+
return (_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 600 600", "data-warm-logo": true, "data-size": size, "data-tone": tone, width: size === 'hero' ? 56 : size === 'feature' ? 32 : size === 'default' ? 28 : 12, height: size === 'hero' ? 56 : size === 'feature' ? 32 : size === 'default' ? 28 : 12, "aria-hidden": decorative ? true : undefined, "aria-label": label, ...props, children: WShape }));
|
|
7
7
|
}
|
|
8
8
|
export const Logo = React.forwardRef(function Logo({ size = 'default', tone = 'default', showText = true, className: _className, style: _style, textClass: _textClass, asChild: _asChild, render: _render, ...props }, ref) {
|
|
9
9
|
return (_jsxs("div", { ref: ref, "data-warm-logo": true, "data-size": size, "data-tone": tone, ...props, children: [_jsx(WarmLogoIcon, { size: size, tone: tone, decorative: showText }), showText ? _jsx("span", { children: "Warm" }) : null] }));
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/fonts.css
CHANGED
|
@@ -1,121 +1,10 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* Self-hosted variable fonts vendored from these exact OFL-1.1 releases:
|
|
3
|
-
* @fontsource-variable/geist@5.2.
|
|
4
|
-
* @fontsource-variable/
|
|
5
|
-
* @fontsource-variable/inter@5.2.8.
|
|
3
|
+
* @fontsource-variable/geist-mono@5.2.8 and
|
|
4
|
+
* @fontsource-variable/source-serif-4@5.3.0.
|
|
6
5
|
*/
|
|
7
6
|
|
|
8
|
-
/* geist-cyrillic-ext-wght-normal */
|
|
9
|
-
@font-face {
|
|
10
|
-
font-family: 'Geist';
|
|
11
|
-
font-style: normal;
|
|
12
|
-
font-display: swap;
|
|
13
|
-
font-weight: 100 900;
|
|
14
|
-
src: url('./fonts/geist-cyrillic-ext-wght-normal.woff2') format('woff2');
|
|
15
|
-
unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
/* geist-cyrillic-wght-normal */
|
|
19
|
-
@font-face {
|
|
20
|
-
font-family: 'Geist';
|
|
21
|
-
font-style: normal;
|
|
22
|
-
font-display: swap;
|
|
23
|
-
font-weight: 100 900;
|
|
24
|
-
src: url('./fonts/geist-cyrillic-wght-normal.woff2') format('woff2');
|
|
25
|
-
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
/* geist-vietnamese-wght-normal */
|
|
29
|
-
@font-face {
|
|
30
|
-
font-family: 'Geist';
|
|
31
|
-
font-style: normal;
|
|
32
|
-
font-display: swap;
|
|
33
|
-
font-weight: 100 900;
|
|
34
|
-
src: url('./fonts/geist-vietnamese-wght-normal.woff2') format('woff2');
|
|
35
|
-
unicode-range:
|
|
36
|
-
U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301,
|
|
37
|
-
U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
/* geist-latin-ext-wght-normal */
|
|
41
|
-
@font-face {
|
|
42
|
-
font-family: 'Geist';
|
|
43
|
-
font-style: normal;
|
|
44
|
-
font-display: swap;
|
|
45
|
-
font-weight: 100 900;
|
|
46
|
-
src: url('./fonts/geist-latin-ext-wght-normal.woff2') format('woff2');
|
|
47
|
-
unicode-range:
|
|
48
|
-
U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329,
|
|
49
|
-
U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F,
|
|
50
|
-
U+A720-A7FF;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
/* geist-latin-wght-normal */
|
|
54
|
-
@font-face {
|
|
55
|
-
font-family: 'Geist';
|
|
56
|
-
font-style: normal;
|
|
57
|
-
font-display: swap;
|
|
58
|
-
font-weight: 100 900;
|
|
59
|
-
src: url('./fonts/geist-latin-wght-normal.woff2') format('woff2');
|
|
60
|
-
unicode-range:
|
|
61
|
-
U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329,
|
|
62
|
-
U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
|
63
|
-
} /* geist-cyrillic-ext-wght-italic */
|
|
64
|
-
@font-face {
|
|
65
|
-
font-family: 'Geist';
|
|
66
|
-
font-style: italic;
|
|
67
|
-
font-display: swap;
|
|
68
|
-
font-weight: 100 900;
|
|
69
|
-
src: url('./fonts/geist-cyrillic-ext-wght-italic.woff2') format('woff2');
|
|
70
|
-
unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
/* geist-cyrillic-wght-italic */
|
|
74
|
-
@font-face {
|
|
75
|
-
font-family: 'Geist';
|
|
76
|
-
font-style: italic;
|
|
77
|
-
font-display: swap;
|
|
78
|
-
font-weight: 100 900;
|
|
79
|
-
src: url('./fonts/geist-cyrillic-wght-italic.woff2') format('woff2');
|
|
80
|
-
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
/* geist-vietnamese-wght-italic */
|
|
84
|
-
@font-face {
|
|
85
|
-
font-family: 'Geist';
|
|
86
|
-
font-style: italic;
|
|
87
|
-
font-display: swap;
|
|
88
|
-
font-weight: 100 900;
|
|
89
|
-
src: url('./fonts/geist-vietnamese-wght-italic.woff2') format('woff2');
|
|
90
|
-
unicode-range:
|
|
91
|
-
U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301,
|
|
92
|
-
U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
/* geist-latin-ext-wght-italic */
|
|
96
|
-
@font-face {
|
|
97
|
-
font-family: 'Geist';
|
|
98
|
-
font-style: italic;
|
|
99
|
-
font-display: swap;
|
|
100
|
-
font-weight: 100 900;
|
|
101
|
-
src: url('./fonts/geist-latin-ext-wght-italic.woff2') format('woff2');
|
|
102
|
-
unicode-range:
|
|
103
|
-
U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329,
|
|
104
|
-
U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F,
|
|
105
|
-
U+A720-A7FF;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
/* geist-latin-wght-italic */
|
|
109
|
-
@font-face {
|
|
110
|
-
font-family: 'Geist';
|
|
111
|
-
font-style: italic;
|
|
112
|
-
font-display: swap;
|
|
113
|
-
font-weight: 100 900;
|
|
114
|
-
src: url('./fonts/geist-latin-wght-italic.woff2') format('woff2');
|
|
115
|
-
unicode-range:
|
|
116
|
-
U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329,
|
|
117
|
-
U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
|
118
|
-
} /* geist-mono-cyrillic-ext-wght-normal */
|
|
7
|
+
/* geist-mono-cyrillic-ext-wght-normal */
|
|
119
8
|
@font-face {
|
|
120
9
|
font-family: 'Geist Mono';
|
|
121
10
|
font-style: normal;
|
|
@@ -180,7 +69,9 @@
|
|
|
180
69
|
unicode-range:
|
|
181
70
|
U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329,
|
|
182
71
|
U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
|
183
|
-
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/* geist-mono-cyrillic-ext-wght-italic */
|
|
184
75
|
@font-face {
|
|
185
76
|
font-family: 'Geist Mono';
|
|
186
77
|
font-style: italic;
|
|
@@ -245,170 +136,149 @@
|
|
|
245
136
|
unicode-range:
|
|
246
137
|
U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329,
|
|
247
138
|
U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
|
248
|
-
} /* inter-cyrillic-ext-wght-normal */
|
|
249
|
-
@font-face {
|
|
250
|
-
font-family: 'Inter';
|
|
251
|
-
font-style: normal;
|
|
252
|
-
font-display: swap;
|
|
253
|
-
font-weight: 100 900;
|
|
254
|
-
src: url('./fonts/inter-cyrillic-ext-wght-normal.woff2') format('woff2');
|
|
255
|
-
unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
|
256
139
|
}
|
|
257
140
|
|
|
258
|
-
/*
|
|
141
|
+
/* source-serif-4-cyrillic-ext-wght-normal */
|
|
259
142
|
@font-face {
|
|
260
|
-
font-family: '
|
|
143
|
+
font-family: 'Source Serif 4';
|
|
261
144
|
font-style: normal;
|
|
262
145
|
font-display: swap;
|
|
263
|
-
font-weight:
|
|
264
|
-
src: url('./fonts/
|
|
265
|
-
unicode-range: U+
|
|
146
|
+
font-weight: 200 900;
|
|
147
|
+
src: url('./fonts/source-serif-4-cyrillic-ext-wght-normal.woff2') format('woff2');
|
|
148
|
+
unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
|
266
149
|
}
|
|
267
150
|
|
|
268
|
-
/*
|
|
151
|
+
/* source-serif-4-cyrillic-wght-normal */
|
|
269
152
|
@font-face {
|
|
270
|
-
font-family: '
|
|
153
|
+
font-family: 'Source Serif 4';
|
|
271
154
|
font-style: normal;
|
|
272
155
|
font-display: swap;
|
|
273
|
-
font-weight:
|
|
274
|
-
src: url('./fonts/
|
|
275
|
-
unicode-range: U+
|
|
156
|
+
font-weight: 200 900;
|
|
157
|
+
src: url('./fonts/source-serif-4-cyrillic-wght-normal.woff2') format('woff2');
|
|
158
|
+
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
|
276
159
|
}
|
|
277
160
|
|
|
278
|
-
/*
|
|
161
|
+
/* source-serif-4-greek-wght-normal */
|
|
279
162
|
@font-face {
|
|
280
|
-
font-family: '
|
|
163
|
+
font-family: 'Source Serif 4';
|
|
281
164
|
font-style: normal;
|
|
282
165
|
font-display: swap;
|
|
283
|
-
font-weight:
|
|
284
|
-
src: url('./fonts/
|
|
166
|
+
font-weight: 200 900;
|
|
167
|
+
src: url('./fonts/source-serif-4-greek-wght-normal.woff2') format('woff2');
|
|
285
168
|
unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
|
|
286
169
|
}
|
|
287
170
|
|
|
288
|
-
/*
|
|
171
|
+
/* source-serif-4-vietnamese-wght-normal */
|
|
289
172
|
@font-face {
|
|
290
|
-
font-family: '
|
|
173
|
+
font-family: 'Source Serif 4';
|
|
291
174
|
font-style: normal;
|
|
292
175
|
font-display: swap;
|
|
293
|
-
font-weight:
|
|
294
|
-
src: url('./fonts/
|
|
176
|
+
font-weight: 200 900;
|
|
177
|
+
src: url('./fonts/source-serif-4-vietnamese-wght-normal.woff2') format('woff2');
|
|
295
178
|
unicode-range:
|
|
296
179
|
U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301,
|
|
297
180
|
U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
|
|
298
181
|
}
|
|
299
182
|
|
|
300
|
-
/*
|
|
183
|
+
/* source-serif-4-latin-ext-wght-normal */
|
|
301
184
|
@font-face {
|
|
302
|
-
font-family: '
|
|
185
|
+
font-family: 'Source Serif 4';
|
|
303
186
|
font-style: normal;
|
|
304
187
|
font-display: swap;
|
|
305
|
-
font-weight:
|
|
306
|
-
src: url('./fonts/
|
|
188
|
+
font-weight: 200 900;
|
|
189
|
+
src: url('./fonts/source-serif-4-latin-ext-wght-normal.woff2') format('woff2');
|
|
307
190
|
unicode-range:
|
|
308
191
|
U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329,
|
|
309
192
|
U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F,
|
|
310
193
|
U+A720-A7FF;
|
|
311
194
|
}
|
|
312
195
|
|
|
313
|
-
/*
|
|
196
|
+
/* source-serif-4-latin-wght-normal */
|
|
314
197
|
@font-face {
|
|
315
|
-
font-family: '
|
|
198
|
+
font-family: 'Source Serif 4';
|
|
316
199
|
font-style: normal;
|
|
317
200
|
font-display: swap;
|
|
318
|
-
font-weight:
|
|
319
|
-
src: url('./fonts/
|
|
201
|
+
font-weight: 200 900;
|
|
202
|
+
src: url('./fonts/source-serif-4-latin-wght-normal.woff2') format('woff2');
|
|
320
203
|
unicode-range:
|
|
321
204
|
U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329,
|
|
322
205
|
U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
|
323
|
-
} /* inter-cyrillic-ext-wght-italic */
|
|
324
|
-
@font-face {
|
|
325
|
-
font-family: 'Inter';
|
|
326
|
-
font-style: italic;
|
|
327
|
-
font-display: swap;
|
|
328
|
-
font-weight: 100 900;
|
|
329
|
-
src: url('./fonts/inter-cyrillic-ext-wght-italic.woff2') format('woff2');
|
|
330
|
-
unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
|
331
206
|
}
|
|
332
207
|
|
|
333
|
-
/*
|
|
208
|
+
/* source-serif-4-cyrillic-ext-wght-italic */
|
|
334
209
|
@font-face {
|
|
335
|
-
font-family: '
|
|
210
|
+
font-family: 'Source Serif 4';
|
|
336
211
|
font-style: italic;
|
|
337
212
|
font-display: swap;
|
|
338
|
-
font-weight:
|
|
339
|
-
src: url('./fonts/
|
|
340
|
-
unicode-range: U+
|
|
213
|
+
font-weight: 200 900;
|
|
214
|
+
src: url('./fonts/source-serif-4-cyrillic-ext-wght-italic.woff2') format('woff2');
|
|
215
|
+
unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
|
341
216
|
}
|
|
342
217
|
|
|
343
|
-
/*
|
|
218
|
+
/* source-serif-4-cyrillic-wght-italic */
|
|
344
219
|
@font-face {
|
|
345
|
-
font-family: '
|
|
220
|
+
font-family: 'Source Serif 4';
|
|
346
221
|
font-style: italic;
|
|
347
222
|
font-display: swap;
|
|
348
|
-
font-weight:
|
|
349
|
-
src: url('./fonts/
|
|
350
|
-
unicode-range: U+
|
|
223
|
+
font-weight: 200 900;
|
|
224
|
+
src: url('./fonts/source-serif-4-cyrillic-wght-italic.woff2') format('woff2');
|
|
225
|
+
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
|
351
226
|
}
|
|
352
227
|
|
|
353
|
-
/*
|
|
228
|
+
/* source-serif-4-greek-wght-italic */
|
|
354
229
|
@font-face {
|
|
355
|
-
font-family: '
|
|
230
|
+
font-family: 'Source Serif 4';
|
|
356
231
|
font-style: italic;
|
|
357
232
|
font-display: swap;
|
|
358
|
-
font-weight:
|
|
359
|
-
src: url('./fonts/
|
|
233
|
+
font-weight: 200 900;
|
|
234
|
+
src: url('./fonts/source-serif-4-greek-wght-italic.woff2') format('woff2');
|
|
360
235
|
unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
|
|
361
236
|
}
|
|
362
237
|
|
|
363
|
-
/*
|
|
238
|
+
/* source-serif-4-vietnamese-wght-italic */
|
|
364
239
|
@font-face {
|
|
365
|
-
font-family: '
|
|
240
|
+
font-family: 'Source Serif 4';
|
|
366
241
|
font-style: italic;
|
|
367
242
|
font-display: swap;
|
|
368
|
-
font-weight:
|
|
369
|
-
src: url('./fonts/
|
|
243
|
+
font-weight: 200 900;
|
|
244
|
+
src: url('./fonts/source-serif-4-vietnamese-wght-italic.woff2') format('woff2');
|
|
370
245
|
unicode-range:
|
|
371
246
|
U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301,
|
|
372
247
|
U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
|
|
373
248
|
}
|
|
374
249
|
|
|
375
|
-
/*
|
|
250
|
+
/* source-serif-4-latin-ext-wght-italic */
|
|
376
251
|
@font-face {
|
|
377
|
-
font-family: '
|
|
252
|
+
font-family: 'Source Serif 4';
|
|
378
253
|
font-style: italic;
|
|
379
254
|
font-display: swap;
|
|
380
|
-
font-weight:
|
|
381
|
-
src: url('./fonts/
|
|
255
|
+
font-weight: 200 900;
|
|
256
|
+
src: url('./fonts/source-serif-4-latin-ext-wght-italic.woff2') format('woff2');
|
|
382
257
|
unicode-range:
|
|
383
258
|
U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329,
|
|
384
259
|
U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F,
|
|
385
260
|
U+A720-A7FF;
|
|
386
261
|
}
|
|
387
262
|
|
|
388
|
-
/*
|
|
263
|
+
/* source-serif-4-latin-wght-italic */
|
|
389
264
|
@font-face {
|
|
390
|
-
font-family: '
|
|
265
|
+
font-family: 'Source Serif 4';
|
|
391
266
|
font-style: italic;
|
|
392
267
|
font-display: swap;
|
|
393
|
-
font-weight:
|
|
394
|
-
src: url('./fonts/
|
|
268
|
+
font-weight: 200 900;
|
|
269
|
+
src: url('./fonts/source-serif-4-latin-wght-italic.woff2') format('woff2');
|
|
395
270
|
unicode-range:
|
|
396
271
|
U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329,
|
|
397
272
|
U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
|
398
273
|
}
|
|
399
274
|
|
|
400
275
|
:root {
|
|
401
|
-
--font-geist: 'Geist', ui-sans-serif, system-ui, sans-serif;
|
|
402
|
-
--font-heading: var(--font-geist);
|
|
403
|
-
--font-sans: var(--font-geist);
|
|
404
|
-
--font-serif: var(--font-geist);
|
|
405
|
-
--font-display: var(--font-geist);
|
|
406
276
|
--font-mono: 'Geist Mono', ui-monospace, monospace;
|
|
407
|
-
--font-
|
|
408
|
-
--font-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
font-
|
|
277
|
+
--font-sans: var(--font-mono);
|
|
278
|
+
--font-geist: var(--font-mono);
|
|
279
|
+
--font-display: var(--font-mono);
|
|
280
|
+
--font-editorial-sans: var(--font-mono);
|
|
281
|
+
--font-marketing-sans: var(--font-mono);
|
|
282
|
+
--font-serif: 'Source Serif 4', ui-serif, Georgia, 'Times New Roman', serif;
|
|
283
|
+
--font-heading: var(--font-serif);
|
|
414
284
|
}
|
package/interfaces.css
CHANGED
|
@@ -52,7 +52,10 @@ html.theme-switching *::after {
|
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
.interface-concentric {
|
|
55
|
-
border-radius: max(
|
|
55
|
+
border-radius: max(
|
|
56
|
+
0px,
|
|
57
|
+
calc(var(--interface-outer-radius, var(--radius-xl)) - var(--interface-inset, 0px))
|
|
58
|
+
);
|
|
56
59
|
}
|
|
57
60
|
|
|
58
61
|
.interface-icon-crossfade {
|
package/package.json
CHANGED
package/theme.css
CHANGED
|
@@ -194,8 +194,8 @@
|
|
|
194
194
|
NON-COLOR TOKENS (shared across all themes)
|
|
195
195
|
══════════════════════════════════════════════════════════════════════════ */
|
|
196
196
|
|
|
197
|
-
/* Typography —
|
|
198
|
-
|
|
197
|
+
/* Typography — two families in fonts.css: Geist Mono default, Source Serif 4 headings.
|
|
198
|
+
Role aliases (--font-sans, --font-display, --font-editorial-sans) resolve to those two. */
|
|
199
199
|
--tracking-normal: 0em;
|
|
200
200
|
|
|
201
201
|
/* Spacing Scale */
|
|
@@ -228,7 +228,7 @@
|
|
|
228
228
|
--button-padding-y-sm: 0.25rem;
|
|
229
229
|
--button-padding-x-md: 0.75rem;
|
|
230
230
|
--button-padding-y-md: 0.5rem;
|
|
231
|
-
--button-padding-x-lg:
|
|
231
|
+
--button-padding-x-lg: 1.75rem;
|
|
232
232
|
--button-padding-y-lg: 0.75rem;
|
|
233
233
|
--button-font-size: 0.875rem;
|
|
234
234
|
--button-gap: 0.5rem;
|
|
@@ -271,7 +271,7 @@
|
|
|
271
271
|
--button-height-icon: 2.25rem;
|
|
272
272
|
--button-min-height-touch: 2.75rem;
|
|
273
273
|
--button-min-height-option: 4rem;
|
|
274
|
-
--button-padding-x:
|
|
274
|
+
--button-padding-x: 1.25rem;
|
|
275
275
|
--button-font-size-base: 1rem;
|
|
276
276
|
--button-font-size-jumbo: 1.125rem;
|
|
277
277
|
--button-line-height-base: 1.5rem;
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
Copyright 2024 The Geist Project Authors (https://github.com/vercel/geist-font) Geist-Italic[wght].ttf: Copyright 2024 The Geist Project Authors (https://github.com/vercel/geist-font)
|
|
2
|
-
|
|
3
|
-
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
|
4
|
-
This license is copied below, and is also available with a FAQ at:
|
|
5
|
-
http://scripts.sil.org/OFL
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
-----------------------------------------------------------
|
|
9
|
-
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
|
10
|
-
-----------------------------------------------------------
|
|
11
|
-
|
|
12
|
-
PREAMBLE
|
|
13
|
-
The goals of the Open Font License (OFL) are to stimulate worldwide
|
|
14
|
-
development of collaborative font projects, to support the font creation
|
|
15
|
-
efforts of academic and linguistic communities, and to provide a free and
|
|
16
|
-
open framework in which fonts may be shared and improved in partnership
|
|
17
|
-
with others.
|
|
18
|
-
|
|
19
|
-
The OFL allows the licensed fonts to be used, studied, modified and
|
|
20
|
-
redistributed freely as long as they are not sold by themselves. The
|
|
21
|
-
fonts, including any derivative works, can be bundled, embedded,
|
|
22
|
-
redistributed and/or sold with any software provided that any reserved
|
|
23
|
-
names are not used by derivative works. The fonts and derivatives,
|
|
24
|
-
however, cannot be released under any other type of license. The
|
|
25
|
-
requirement for fonts to remain under this license does not apply
|
|
26
|
-
to any document created using the fonts or their derivatives.
|
|
27
|
-
|
|
28
|
-
DEFINITIONS
|
|
29
|
-
"Font Software" refers to the set of files released by the Copyright
|
|
30
|
-
Holder(s) under this license and clearly marked as such. This may
|
|
31
|
-
include source files, build scripts and documentation.
|
|
32
|
-
|
|
33
|
-
"Reserved Font Name" refers to any names specified as such after the
|
|
34
|
-
copyright statement(s).
|
|
35
|
-
|
|
36
|
-
"Original Version" refers to the collection of Font Software components as
|
|
37
|
-
distributed by the Copyright Holder(s).
|
|
38
|
-
|
|
39
|
-
"Modified Version" refers to any derivative made by adding to, deleting,
|
|
40
|
-
or substituting -- in part or in whole -- any of the components of the
|
|
41
|
-
Original Version, by changing formats or by porting the Font Software to a
|
|
42
|
-
new environment.
|
|
43
|
-
|
|
44
|
-
"Author" refers to any designer, engineer, programmer, technical
|
|
45
|
-
writer or other person who contributed to the Font Software.
|
|
46
|
-
|
|
47
|
-
PERMISSION & CONDITIONS
|
|
48
|
-
Permission is hereby granted, free of charge, to any person obtaining
|
|
49
|
-
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
|
50
|
-
redistribute, and sell modified and unmodified copies of the Font
|
|
51
|
-
Software, subject to the following conditions:
|
|
52
|
-
|
|
53
|
-
1) Neither the Font Software nor any of its individual components,
|
|
54
|
-
in Original or Modified Versions, may be sold by itself.
|
|
55
|
-
|
|
56
|
-
2) Original or Modified Versions of the Font Software may be bundled,
|
|
57
|
-
redistributed and/or sold with any software, provided that each copy
|
|
58
|
-
contains the above copyright notice and this license. These can be
|
|
59
|
-
included either as stand-alone text files, human-readable headers or
|
|
60
|
-
in the appropriate machine-readable metadata fields within text or
|
|
61
|
-
binary files as long as those fields can be easily viewed by the user.
|
|
62
|
-
|
|
63
|
-
3) No Modified Version of the Font Software may use the Reserved Font
|
|
64
|
-
Name(s) unless explicit written permission is granted by the corresponding
|
|
65
|
-
Copyright Holder. This restriction only applies to the primary font name as
|
|
66
|
-
presented to the users.
|
|
67
|
-
|
|
68
|
-
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
|
69
|
-
Software shall not be used to promote, endorse or advertise any
|
|
70
|
-
Modified Version, except to acknowledge the contribution(s) of the
|
|
71
|
-
Copyright Holder(s) and the Author(s) or with their explicit written
|
|
72
|
-
permission.
|
|
73
|
-
|
|
74
|
-
5) The Font Software, modified or unmodified, in part or in whole,
|
|
75
|
-
must be distributed entirely under this license, and must not be
|
|
76
|
-
distributed under any other license. The requirement for fonts to
|
|
77
|
-
remain under this license does not apply to any document created
|
|
78
|
-
using the Font Software.
|
|
79
|
-
|
|
80
|
-
TERMINATION
|
|
81
|
-
This license becomes null and void if any of the above conditions are
|
|
82
|
-
not met.
|
|
83
|
-
|
|
84
|
-
DISCLAIMER
|
|
85
|
-
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
86
|
-
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
|
87
|
-
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
|
88
|
-
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
|
89
|
-
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
90
|
-
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
|
91
|
-
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
92
|
-
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
|
93
|
-
OTHER DEALINGS IN THE FONT SOFTWARE.
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|