@charstudios/pallet 0.2.0 → 0.3.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.
@@ -1,25 +1,23 @@
1
1
  /*
2
2
  * Frosted variant skin.
3
3
  *
4
- * Frosted-glass / glassmorphism across every common shadcn data-slot: translucent
5
- * fills, backdrop blur, soft luminous borders, and light specular highlights.
4
+ * Quiet glassmorphism: light backdrop blur, hairline luminous borders, soft
5
+ * translucent fills. Intentionally restrained no heavy sheens or deep shadows.
6
6
  */
7
7
 
8
8
  @layer pallet-variants {
9
9
  [data-pallet-variant="frosted"] {
10
- --frost-blur: 18px;
11
- --frost-saturate: 1.45;
12
- --frost-bg: color-mix(in oklch, var(--card) 52%, transparent);
13
- --frost-bg-strong: color-mix(in oklch, var(--card) 72%, transparent);
14
- --frost-bg-soft: color-mix(in oklch, var(--muted) 45%, transparent);
15
- --frost-border: color-mix(in oklch, white 42%, var(--border));
16
- --frost-border-strong: color-mix(in oklch, white 55%, var(--border));
17
- --frost-highlight: inset 0 1px 0 0 color-mix(in oklch, white 55%, transparent);
18
- --frost-shadow: var(--shadow-lg), var(--frost-highlight);
19
- --pallet-control-radius: var(--radius-lg);
20
- --pallet-surface-radius: var(--radius-2xl);
21
- --pallet-overlay-radius: var(--radius-xl);
22
- --pallet-chip-radius: 9999px;
10
+ --frost-blur: 12px;
11
+ --frost-saturate: 1.2;
12
+ --frost-bg: color-mix(in oklch, var(--card) 64%, transparent);
13
+ --frost-bg-strong: color-mix(in oklch, var(--card) 78%, transparent);
14
+ --frost-bg-soft: color-mix(in oklch, var(--background) 55%, transparent);
15
+ --frost-border: color-mix(in oklch, white 55%, var(--border));
16
+ --frost-border-muted: color-mix(in oklch, white 35%, var(--border));
17
+ --pallet-control-radius: var(--radius-md);
18
+ --pallet-surface-radius: var(--radius-xl);
19
+ --pallet-overlay-radius: var(--radius-lg);
20
+ --pallet-chip-radius: var(--radius-md);
23
21
  }
24
22
 
25
23
  :is(
@@ -27,12 +25,10 @@
27
25
  [data-pallet-variant="frosted"].dark,
28
26
  .dark [data-pallet-variant="frosted"]
29
27
  ) {
30
- --frost-border: color-mix(in oklch, white 18%, var(--border));
31
- --frost-border-strong: color-mix(in oklch, white 28%, var(--border));
32
- --frost-highlight: inset 0 1px 0 0 color-mix(in oklch, white 18%, transparent);
28
+ --frost-border: color-mix(in oklch, white 22%, var(--border));
29
+ --frost-border-muted: color-mix(in oklch, white 12%, var(--border));
33
30
  }
34
31
 
35
- /* Shared glass recipe */
36
32
  [data-pallet-variant="frosted"] :is(
37
33
  [data-slot="card"],
38
34
  [data-slot="alert"],
@@ -51,24 +47,16 @@
51
47
  [data-slot="chart"],
52
48
  [data-slot="menubar"],
53
49
  [data-slot="navigation-menu-viewport"],
54
- [data-slot="breadcrumb"],
55
- [data-slot="pagination"],
56
50
  [data-slot="scroll-area"]
57
51
  ) {
58
52
  background-color: var(--frost-bg);
59
- background-image: linear-gradient(
60
- 135deg,
61
- color-mix(in oklch, white 18%, transparent),
62
- transparent 42%
63
- );
64
- border-color: var(--frost-border);
53
+ border: 1px solid var(--frost-border);
65
54
  border-radius: var(--pallet-surface-radius);
66
- box-shadow: var(--frost-shadow);
55
+ box-shadow: 0 1px 0 color-mix(in oklch, white 40%, transparent);
67
56
  backdrop-filter: blur(var(--frost-blur)) saturate(var(--frost-saturate));
68
57
  -webkit-backdrop-filter: blur(var(--frost-blur)) saturate(var(--frost-saturate));
69
58
  }
70
59
 
71
- /* ── Controls ─────────────────────────────────────────────────────────── */
72
60
  [data-pallet-variant="frosted"] :is(
73
61
  [data-slot="button"],
74
62
  [data-slot="toggle"],
@@ -79,32 +67,13 @@
79
67
  [data-slot="sidebar-trigger"],
80
68
  [data-slot="sidebar-menu-button"],
81
69
  [data-slot="sidebar-menu-sub-button"],
82
- [data-slot="sidebar-group-action"],
83
- [data-slot="sidebar-menu-action"],
84
- [data-slot="input-group-button"],
85
- [data-slot="button-group"]
70
+ [data-slot="input-group-button"]
86
71
  ) {
87
72
  border-radius: var(--pallet-control-radius);
88
- border-color: var(--frost-border);
89
- box-shadow: var(--frost-highlight), var(--shadow-sm);
90
- backdrop-filter: blur(calc(var(--frost-blur) * 0.55)) saturate(var(--frost-saturate));
91
- -webkit-backdrop-filter: blur(calc(var(--frost-blur) * 0.55))
92
- saturate(var(--frost-saturate));
93
- transition:
94
- box-shadow var(--motion-duration) var(--motion-ease),
95
- background-color var(--motion-duration) var(--motion-ease),
96
- border-color var(--motion-duration) var(--motion-ease);
97
- }
98
-
99
- [data-pallet-variant="frosted"] :is(
100
- [data-slot="button"],
101
- [data-slot="toggle"],
102
- [data-slot="toggle-group-item"],
103
- [data-slot="pagination-link"],
104
- [data-slot="sidebar-menu-button"]
105
- ):hover {
106
- border-color: var(--frost-border-strong);
107
- box-shadow: var(--frost-highlight), var(--shadow-md);
73
+ border-color: var(--frost-border-muted);
74
+ box-shadow: none;
75
+ backdrop-filter: blur(8px) saturate(var(--frost-saturate));
76
+ -webkit-backdrop-filter: blur(8px) saturate(var(--frost-saturate));
108
77
  }
109
78
 
110
79
  [data-pallet-variant="frosted"] :is(
@@ -112,101 +81,70 @@
112
81
  [data-slot="textarea"],
113
82
  [data-slot="select-trigger"],
114
83
  [data-slot="native-select"],
115
- [data-slot="native-select-wrapper"],
116
84
  [data-slot="combobox-trigger"],
117
- [data-slot="combobox-chip"],
118
- [data-slot="combobox-chip-input"],
119
85
  [data-slot="command-input"],
120
- [data-slot="input-otp"],
121
86
  [data-slot="input-otp-slot"],
122
87
  [data-slot="input-group"],
123
- [data-slot="input-group-control"],
124
88
  [data-slot="sidebar-input"],
125
89
  [data-slot="calendar"]
126
90
  ) {
127
91
  background-color: var(--frost-bg-soft);
128
- border-color: var(--frost-border);
92
+ border: 1px solid var(--frost-border-muted);
129
93
  border-radius: var(--pallet-control-radius);
130
- box-shadow: var(--frost-highlight);
131
- backdrop-filter: blur(calc(var(--frost-blur) * 0.7)) saturate(var(--frost-saturate));
132
- -webkit-backdrop-filter: blur(calc(var(--frost-blur) * 0.7))
133
- saturate(var(--frost-saturate));
94
+ box-shadow: none;
95
+ backdrop-filter: blur(8px) saturate(var(--frost-saturate));
96
+ -webkit-backdrop-filter: blur(8px) saturate(var(--frost-saturate));
134
97
  }
135
98
 
136
99
  [data-pallet-variant="frosted"] [data-slot="textarea"],
137
100
  [data-pallet-variant="frosted"] [data-slot="calendar"] {
138
- border-radius: var(--radius-xl);
101
+ border-radius: var(--radius-lg);
139
102
  }
140
103
 
141
104
  [data-pallet-variant="frosted"] :is(
142
105
  [data-slot="input"],
143
106
  [data-slot="textarea"],
144
107
  [data-slot="select-trigger"],
145
- [data-slot="native-select"],
146
108
  [data-slot="combobox-trigger"],
147
109
  [data-slot="command-input"],
148
- [data-slot="input-otp-slot"],
149
110
  [data-slot="sidebar-input"]
150
111
  ):focus-visible {
151
112
  border-color: var(--ring);
152
- box-shadow:
153
- var(--frost-highlight),
154
- 0 0 0 3px color-mix(in oklch, var(--ring) 28%, transparent);
113
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--ring) 22%, transparent);
155
114
  outline: none;
156
115
  }
157
116
 
158
117
  [data-pallet-variant="frosted"] :is(
159
- [data-slot="checkbox"],
160
- [data-slot="radio-group-item"],
161
- [data-slot="switch"],
162
- [data-slot="slider-track"],
163
- [data-slot="progress"],
164
- [data-slot="skeleton"],
165
- [data-slot="avatar"],
166
- [data-slot="avatar-fallback"]
118
+ [data-slot="badge"],
119
+ [data-slot="kbd"],
120
+ [data-slot="combobox-chip"]
167
121
  ) {
168
- background-color: var(--frost-bg-soft);
169
- border-color: var(--frost-border);
170
- backdrop-filter: blur(8px) saturate(var(--frost-saturate));
171
- -webkit-backdrop-filter: blur(8px) saturate(var(--frost-saturate));
122
+ background-color: var(--frost-bg);
123
+ border: 1px solid var(--frost-border-muted);
124
+ border-radius: var(--pallet-chip-radius);
125
+ box-shadow: none;
126
+ backdrop-filter: blur(8px);
127
+ -webkit-backdrop-filter: blur(8px);
172
128
  }
173
129
 
174
130
  [data-pallet-variant="frosted"] :is(
131
+ [data-slot="checkbox"],
132
+ [data-slot="radio-group-item"],
175
133
  [data-slot="switch"],
176
134
  [data-slot="slider-track"],
177
- [data-slot="slider-range"],
178
- [data-slot="slider-thumb"],
179
135
  [data-slot="progress"],
180
- [data-slot="progress-indicator"],
181
136
  [data-slot="avatar"],
182
137
  [data-slot="avatar-fallback"],
183
- [data-slot="avatar-group"],
184
- [data-slot="badge"],
185
- [data-slot="kbd"],
186
- [data-slot="avatar-badge"]
187
- ) {
188
- border-radius: var(--pallet-chip-radius);
189
- }
190
-
191
- [data-pallet-variant="frosted"] [data-slot="checkbox"] {
192
- border-radius: var(--radius-sm);
193
- }
194
-
195
- [data-pallet-variant="frosted"] :is(
196
- [data-slot="badge"],
197
- [data-slot="kbd"],
198
- [data-slot="combobox-chip"]
138
+ [data-slot="skeleton"]
199
139
  ) {
200
- background-color: var(--frost-bg);
201
- border: 1px solid var(--frost-border);
202
- box-shadow: var(--frost-highlight);
203
- backdrop-filter: blur(10px) saturate(var(--frost-saturate));
204
- -webkit-backdrop-filter: blur(10px) saturate(var(--frost-saturate));
140
+ border-color: var(--frost-border-muted);
141
+ box-shadow: none;
205
142
  }
206
143
 
207
- /* ── Surface details ──────────────────────────────────────────────────── */
208
- [data-pallet-variant="frosted"] [data-slot="tabs-list"] {
209
- padding: 0.25rem;
144
+ [data-pallet-variant="frosted"] [data-slot="switch"],
145
+ [data-pallet-variant="frosted"] [data-slot="slider-track"],
146
+ [data-pallet-variant="frosted"] [data-slot="progress"] {
147
+ border-radius: 9999px;
210
148
  }
211
149
 
212
150
  [data-pallet-variant="frosted"] [data-slot="tabs-trigger"] {
@@ -215,57 +153,14 @@
215
153
 
216
154
  [data-pallet-variant="frosted"] [data-slot="tabs-trigger"][data-state="active"] {
217
155
  background-color: var(--frost-bg-strong);
218
- box-shadow: var(--frost-highlight), var(--shadow-sm);
219
- backdrop-filter: blur(var(--frost-blur)) saturate(var(--frost-saturate));
220
- -webkit-backdrop-filter: blur(var(--frost-blur)) saturate(var(--frost-saturate));
221
- }
222
-
223
- [data-pallet-variant="frosted"] [data-slot="accordion-trigger"] {
224
- border-radius: var(--radius-lg);
225
- }
226
-
227
- [data-pallet-variant="frosted"] [data-slot="table"] {
228
- background-color: transparent;
229
- }
230
-
231
- [data-pallet-variant="frosted"] [data-slot="table-header"] {
232
- background-color: color-mix(in oklch, var(--muted) 35%, transparent);
156
+ border: 1px solid var(--frost-border);
157
+ box-shadow: none;
233
158
  }
234
159
 
235
160
  [data-pallet-variant="frosted"] [data-slot="table-row"]:hover {
236
- background-color: color-mix(in oklch, white 10%, var(--accent));
237
- }
238
-
239
- [data-pallet-variant="frosted"] [data-slot="table-head"],
240
- [data-pallet-variant="frosted"] [data-slot="table-cell"] {
241
- border-color: var(--frost-border);
242
- }
243
-
244
- [data-pallet-variant="frosted"] :is(
245
- [data-slot="separator"],
246
- [data-slot="sidebar-separator"],
247
- [data-slot="dropdown-menu-separator"],
248
- [data-slot="context-menu-separator"],
249
- [data-slot="menubar-separator"],
250
- [data-slot="command-separator"],
251
- [data-slot="select-separator"],
252
- [data-slot="combobox-separator"],
253
- [data-slot="field-separator"],
254
- [data-slot="item-separator"],
255
- [data-slot="button-group-separator"]
256
- ) {
257
- background-color: var(--frost-border);
258
- }
259
-
260
- [data-pallet-variant="frosted"] :is(
261
- [data-slot="breadcrumb-link"],
262
- [data-slot="breadcrumb-page"],
263
- [data-slot="breadcrumb-ellipsis"]
264
- ) {
265
- border-radius: var(--pallet-chip-radius);
161
+ background-color: color-mix(in oklch, var(--accent) 40%, transparent);
266
162
  }
267
163
 
268
- /* ── Overlays / menus / portals ───────────────────────────────────────── */
269
164
  [data-pallet-variant="frosted"] :is(
270
165
  [data-slot="popover-content"],
271
166
  [data-slot="dropdown-menu-content"],
@@ -288,16 +183,11 @@
288
183
  [data-slot="drawer-content"]
289
184
  ) {
290
185
  background-color: var(--frost-bg-strong);
291
- background-image: linear-gradient(
292
- 160deg,
293
- color-mix(in oklch, white 22%, transparent),
294
- transparent 48%
295
- );
296
- border: 1px solid var(--frost-border-strong);
186
+ border: 1px solid var(--frost-border);
297
187
  border-radius: var(--pallet-overlay-radius);
298
- box-shadow: var(--frost-shadow);
299
- backdrop-filter: blur(calc(var(--frost-blur) * 1.25)) saturate(var(--frost-saturate));
300
- -webkit-backdrop-filter: blur(calc(var(--frost-blur) * 1.25))
188
+ box-shadow: 0 8px 28px -12px color-mix(in oklch, var(--foreground) 28%, transparent);
189
+ backdrop-filter: blur(calc(var(--frost-blur) + 4px)) saturate(var(--frost-saturate));
190
+ -webkit-backdrop-filter: blur(calc(var(--frost-blur) + 4px))
301
191
  saturate(var(--frost-saturate));
302
192
  }
303
193
 
@@ -307,55 +197,20 @@
307
197
  [data-slot="sheet-overlay"],
308
198
  [data-slot="drawer-overlay"]
309
199
  ) {
310
- background-color: color-mix(in oklch, var(--foreground) 28%, transparent);
311
- backdrop-filter: blur(8px) saturate(1.2);
312
- -webkit-backdrop-filter: blur(8px) saturate(1.2);
200
+ background-color: color-mix(in oklch, var(--foreground) 22%, transparent);
201
+ backdrop-filter: blur(6px);
202
+ -webkit-backdrop-filter: blur(6px);
313
203
  }
314
204
 
315
205
  [data-pallet-variant="frosted"] :is(
316
206
  [data-slot="dropdown-menu-item"],
317
- [data-slot="dropdown-menu-checkbox-item"],
318
- [data-slot="dropdown-menu-radio-item"],
319
- [data-slot="dropdown-menu-sub-trigger"],
320
- [data-slot="context-menu-item"],
321
- [data-slot="context-menu-checkbox-item"],
322
- [data-slot="context-menu-radio-item"],
323
- [data-slot="context-menu-sub-trigger"],
324
- [data-slot="menubar-item"],
325
- [data-slot="menubar-checkbox-item"],
326
- [data-slot="menubar-radio-item"],
327
- [data-slot="menubar-sub-trigger"],
328
- [data-slot="menubar-trigger"],
329
- [data-slot="select-item"],
330
- [data-slot="combobox-item"],
331
- [data-slot="command-item"],
332
- [data-slot="navigation-menu-link"],
333
- [data-slot="navigation-menu-trigger"]
334
- ) {
335
- border-radius: var(--radius-md);
336
- }
337
-
338
- [data-pallet-variant="frosted"] :is(
339
- [data-slot="dropdown-menu-item"],
340
- [data-slot="dropdown-menu-checkbox-item"],
341
- [data-slot="dropdown-menu-radio-item"],
342
207
  [data-slot="context-menu-item"],
343
208
  [data-slot="menubar-item"],
344
209
  [data-slot="select-item"],
345
210
  [data-slot="combobox-item"],
346
211
  [data-slot="command-item"],
347
212
  [data-slot="navigation-menu-link"]
348
- ):focus,
349
- [data-pallet-variant="frosted"] :is(
350
- [data-slot="dropdown-menu-item"],
351
- [data-slot="context-menu-item"],
352
- [data-slot="menubar-item"],
353
- [data-slot="select-item"],
354
- [data-slot="combobox-item"],
355
- [data-slot="command-item"]
356
- )[data-highlighted] {
357
- background-color: color-mix(in oklch, var(--accent) 55%, transparent);
358
- backdrop-filter: blur(8px);
359
- -webkit-backdrop-filter: blur(8px);
213
+ ) {
214
+ border-radius: var(--radius-sm);
360
215
  }
361
216
  }