@charstudios/pallet 0.1.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,32 +1,215 @@
1
- /*
2
- * Flat variant skin.
3
- *
4
- * The baseline look: crisp hairline borders, minimal shadows, tighter radii.
5
- * This mostly matches default shadcn/ui, so it is intentionally light-touch and
6
- * simply normalizes surfaces to hairline rings with no elevation.
7
- */
8
-
9
- @layer pallet-variants {
10
- [data-pallet-variant="flat"] [data-slot="card"] {
11
- box-shadow: none;
12
- border-radius: var(--radius-2xl);
13
- }
14
-
15
- [data-pallet-variant="flat"] [data-slot="popover"],
16
- [data-pallet-variant="flat"] [data-slot="dropdown-menu"],
17
- [data-pallet-variant="flat"] [data-slot="dropdown-menu-content"],
18
- [data-pallet-variant="flat"] [data-slot="select-content"] {
19
- box-shadow: var(--shadow-md);
20
- border: 1px solid var(--border);
21
- }
22
-
23
- [data-pallet-variant="flat"] [data-slot="button"] {
24
- box-shadow: none;
25
- }
26
-
27
- [data-pallet-variant="flat"] [data-slot="input"],
28
- [data-pallet-variant="flat"] [data-slot="textarea"],
29
- [data-pallet-variant="flat"] [data-slot="select-trigger"] {
30
- border-radius: var(--radius-md);
31
- }
32
- }
1
+ /*
2
+ * Flat variant skin.
3
+ *
4
+ * Crisp hairline borders, minimal shadows, tighter radii — the baseline shadcn
5
+ * look applied consistently across every common data-slot surface.
6
+ */
7
+
8
+ @layer pallet-variants {
9
+ [data-pallet-variant="flat"] {
10
+ --pallet-control-radius: var(--radius-md);
11
+ --pallet-surface-radius: var(--radius-xl);
12
+ --pallet-overlay-radius: var(--radius-lg);
13
+ --pallet-chip-radius: var(--radius-md);
14
+ --pallet-surface-shadow: none;
15
+ --pallet-overlay-shadow: var(--shadow-md);
16
+ --pallet-control-shadow: none;
17
+ }
18
+
19
+ /* ── Controls ─────────────────────────────────────────────────────────── */
20
+ [data-pallet-variant="flat"] :is(
21
+ [data-slot="button"],
22
+ [data-slot="input"],
23
+ [data-slot="textarea"],
24
+ [data-slot="select-trigger"],
25
+ [data-slot="native-select"],
26
+ [data-slot="native-select-wrapper"],
27
+ [data-slot="combobox-trigger"],
28
+ [data-slot="combobox-chip-input"],
29
+ [data-slot="command-input"],
30
+ [data-slot="input-otp"],
31
+ [data-slot="input-otp-slot"],
32
+ [data-slot="input-group"],
33
+ [data-slot="input-group-control"],
34
+ [data-slot="sidebar-input"],
35
+ [data-slot="toggle"],
36
+ [data-slot="toggle-group"],
37
+ [data-slot="toggle-group-item"],
38
+ [data-slot="checkbox"],
39
+ [data-slot="radio-group-item"],
40
+ [data-slot="switch"],
41
+ [data-slot="slider-thumb"],
42
+ [data-slot="calendar"],
43
+ [data-slot="pagination-link"],
44
+ [data-slot="button-group"],
45
+ [data-slot="input-group-button"]
46
+ ) {
47
+ border-radius: var(--pallet-control-radius);
48
+ box-shadow: var(--pallet-control-shadow);
49
+ }
50
+
51
+ [data-pallet-variant="flat"] :is(
52
+ [data-slot="textarea"],
53
+ [data-slot="calendar"]
54
+ ) {
55
+ border-radius: var(--radius-lg);
56
+ }
57
+
58
+ [data-pallet-variant="flat"] :is(
59
+ [data-slot="checkbox"],
60
+ [data-slot="radio-group-item"],
61
+ [data-slot="switch"],
62
+ [data-slot="switch-thumb"],
63
+ [data-slot="slider-thumb"],
64
+ [data-slot="avatar"],
65
+ [data-slot="avatar-fallback"],
66
+ [data-slot="progress"],
67
+ [data-slot="progress-indicator"],
68
+ [data-slot="skeleton"]
69
+ ) {
70
+ border-radius: var(--radius-sm);
71
+ }
72
+
73
+ [data-pallet-variant="flat"] [data-slot="switch"],
74
+ [data-pallet-variant="flat"] [data-slot="slider-track"] {
75
+ border-radius: 9999px;
76
+ }
77
+
78
+ /* ── Surfaces ─────────────────────────────────────────────────────────── */
79
+ [data-pallet-variant="flat"] :is(
80
+ [data-slot="card"],
81
+ [data-slot="alert"],
82
+ [data-slot="accordion"],
83
+ [data-slot="accordion-item"],
84
+ [data-slot="tabs"],
85
+ [data-slot="tabs-list"],
86
+ [data-slot="table"],
87
+ [data-slot="table-container"],
88
+ [data-slot="item"],
89
+ [data-slot="item-group"],
90
+ [data-slot="empty"],
91
+ [data-slot="field"],
92
+ [data-slot="field-set"],
93
+ [data-slot="field-group"],
94
+ [data-slot="sidebar"],
95
+ [data-slot="sidebar-container"],
96
+ [data-slot="sidebar-inner"],
97
+ [data-slot="sidebar-inset"],
98
+ [data-slot="sidebar-group"],
99
+ [data-slot="carousel"],
100
+ [data-slot="chart"],
101
+ [data-slot="resizable-panel"],
102
+ [data-slot="scroll-area"],
103
+ [data-slot="breadcrumb"],
104
+ [data-slot="pagination"],
105
+ [data-slot="menubar"],
106
+ [data-slot="navigation-menu"],
107
+ [data-slot="navigation-menu-viewport"]
108
+ ) {
109
+ border-radius: var(--pallet-surface-radius);
110
+ box-shadow: var(--pallet-surface-shadow);
111
+ }
112
+
113
+ [data-pallet-variant="flat"] :is(
114
+ [data-slot="card"],
115
+ [data-slot="alert"],
116
+ [data-slot="item"],
117
+ [data-slot="empty"],
118
+ [data-slot="accordion-item"]
119
+ ) {
120
+ border-color: var(--border);
121
+ }
122
+
123
+ [data-pallet-variant="flat"] :is(
124
+ [data-slot="tabs-list"],
125
+ [data-slot="table-container"],
126
+ [data-slot="sidebar-menu-button"],
127
+ [data-slot="sidebar-menu-sub-button"],
128
+ [data-slot="breadcrumb-link"],
129
+ [data-slot="breadcrumb-page"],
130
+ [data-slot="badge"],
131
+ [data-slot="kbd"],
132
+ [data-slot="avatar-badge"]
133
+ ) {
134
+ border-radius: var(--pallet-chip-radius);
135
+ }
136
+
137
+ [data-pallet-variant="flat"] [data-slot="table-row"]:hover {
138
+ background-color: color-mix(in oklch, var(--muted) 70%, transparent);
139
+ }
140
+
141
+ [data-pallet-variant="flat"] :is(
142
+ [data-slot="separator"],
143
+ [data-slot="sidebar-separator"],
144
+ [data-slot="dropdown-menu-separator"],
145
+ [data-slot="context-menu-separator"],
146
+ [data-slot="menubar-separator"],
147
+ [data-slot="command-separator"],
148
+ [data-slot="select-separator"],
149
+ [data-slot="combobox-separator"],
150
+ [data-slot="field-separator"],
151
+ [data-slot="item-separator"],
152
+ [data-slot="button-group-separator"]
153
+ ) {
154
+ background-color: var(--border);
155
+ }
156
+
157
+ /* ── Overlays / menus / portals ───────────────────────────────────────── */
158
+ [data-pallet-variant="flat"] :is(
159
+ [data-slot="popover-content"],
160
+ [data-slot="dropdown-menu-content"],
161
+ [data-slot="dropdown-menu-sub-content"],
162
+ [data-slot="context-menu-content"],
163
+ [data-slot="context-menu-sub-content"],
164
+ [data-slot="menubar-content"],
165
+ [data-slot="menubar-sub-content"],
166
+ [data-slot="select-content"],
167
+ [data-slot="combobox-content"],
168
+ [data-slot="combobox-list"],
169
+ [data-slot="command"],
170
+ [data-slot="command-list"],
171
+ [data-slot="hover-card-content"],
172
+ [data-slot="tooltip-content"],
173
+ [data-slot="navigation-menu-content"],
174
+ [data-slot="dialog-content"],
175
+ [data-slot="alert-dialog-content"],
176
+ [data-slot="sheet-content"],
177
+ [data-slot="drawer-content"]
178
+ ) {
179
+ border-radius: var(--pallet-overlay-radius);
180
+ box-shadow: var(--pallet-overlay-shadow);
181
+ border: 1px solid var(--border);
182
+ }
183
+
184
+ [data-pallet-variant="flat"] :is(
185
+ [data-slot="dialog-overlay"],
186
+ [data-slot="alert-dialog-overlay"],
187
+ [data-slot="sheet-overlay"],
188
+ [data-slot="drawer-overlay"]
189
+ ) {
190
+ background-color: color-mix(in oklch, var(--foreground) 40%, transparent);
191
+ }
192
+
193
+ [data-pallet-variant="flat"] :is(
194
+ [data-slot="dropdown-menu-item"],
195
+ [data-slot="dropdown-menu-checkbox-item"],
196
+ [data-slot="dropdown-menu-radio-item"],
197
+ [data-slot="dropdown-menu-sub-trigger"],
198
+ [data-slot="context-menu-item"],
199
+ [data-slot="context-menu-checkbox-item"],
200
+ [data-slot="context-menu-radio-item"],
201
+ [data-slot="context-menu-sub-trigger"],
202
+ [data-slot="menubar-item"],
203
+ [data-slot="menubar-checkbox-item"],
204
+ [data-slot="menubar-radio-item"],
205
+ [data-slot="menubar-sub-trigger"],
206
+ [data-slot="menubar-trigger"],
207
+ [data-slot="select-item"],
208
+ [data-slot="combobox-item"],
209
+ [data-slot="command-item"],
210
+ [data-slot="navigation-menu-link"],
211
+ [data-slot="navigation-menu-trigger"]
212
+ ) {
213
+ border-radius: var(--radius-sm);
214
+ }
215
+ }
@@ -0,0 +1,216 @@
1
+ /*
2
+ * Frosted variant skin.
3
+ *
4
+ * Quiet glassmorphism: light backdrop blur, hairline luminous borders, soft
5
+ * translucent fills. Intentionally restrained — no heavy sheens or deep shadows.
6
+ */
7
+
8
+ @layer pallet-variants {
9
+ [data-pallet-variant="frosted"] {
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);
21
+ }
22
+
23
+ :is(
24
+ .dark[data-pallet-variant="frosted"],
25
+ [data-pallet-variant="frosted"].dark,
26
+ .dark [data-pallet-variant="frosted"]
27
+ ) {
28
+ --frost-border: color-mix(in oklch, white 22%, var(--border));
29
+ --frost-border-muted: color-mix(in oklch, white 12%, var(--border));
30
+ }
31
+
32
+ [data-pallet-variant="frosted"] :is(
33
+ [data-slot="card"],
34
+ [data-slot="alert"],
35
+ [data-slot="accordion-item"],
36
+ [data-slot="tabs-list"],
37
+ [data-slot="table-container"],
38
+ [data-slot="item"],
39
+ [data-slot="item-group"],
40
+ [data-slot="empty"],
41
+ [data-slot="field-set"],
42
+ [data-slot="sidebar"],
43
+ [data-slot="sidebar-container"],
44
+ [data-slot="sidebar-inner"],
45
+ [data-slot="sidebar-group"],
46
+ [data-slot="carousel"],
47
+ [data-slot="chart"],
48
+ [data-slot="menubar"],
49
+ [data-slot="navigation-menu-viewport"],
50
+ [data-slot="scroll-area"]
51
+ ) {
52
+ background-color: var(--frost-bg);
53
+ border: 1px solid var(--frost-border);
54
+ border-radius: var(--pallet-surface-radius);
55
+ box-shadow: 0 1px 0 color-mix(in oklch, white 40%, transparent);
56
+ backdrop-filter: blur(var(--frost-blur)) saturate(var(--frost-saturate));
57
+ -webkit-backdrop-filter: blur(var(--frost-blur)) saturate(var(--frost-saturate));
58
+ }
59
+
60
+ [data-pallet-variant="frosted"] :is(
61
+ [data-slot="button"],
62
+ [data-slot="toggle"],
63
+ [data-slot="toggle-group-item"],
64
+ [data-slot="pagination-link"],
65
+ [data-slot="carousel-previous"],
66
+ [data-slot="carousel-next"],
67
+ [data-slot="sidebar-trigger"],
68
+ [data-slot="sidebar-menu-button"],
69
+ [data-slot="sidebar-menu-sub-button"],
70
+ [data-slot="input-group-button"]
71
+ ) {
72
+ border-radius: var(--pallet-control-radius);
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));
77
+ }
78
+
79
+ [data-pallet-variant="frosted"] :is(
80
+ [data-slot="input"],
81
+ [data-slot="textarea"],
82
+ [data-slot="select-trigger"],
83
+ [data-slot="native-select"],
84
+ [data-slot="combobox-trigger"],
85
+ [data-slot="command-input"],
86
+ [data-slot="input-otp-slot"],
87
+ [data-slot="input-group"],
88
+ [data-slot="sidebar-input"],
89
+ [data-slot="calendar"]
90
+ ) {
91
+ background-color: var(--frost-bg-soft);
92
+ border: 1px solid var(--frost-border-muted);
93
+ border-radius: var(--pallet-control-radius);
94
+ box-shadow: none;
95
+ backdrop-filter: blur(8px) saturate(var(--frost-saturate));
96
+ -webkit-backdrop-filter: blur(8px) saturate(var(--frost-saturate));
97
+ }
98
+
99
+ [data-pallet-variant="frosted"] [data-slot="textarea"],
100
+ [data-pallet-variant="frosted"] [data-slot="calendar"] {
101
+ border-radius: var(--radius-lg);
102
+ }
103
+
104
+ [data-pallet-variant="frosted"] :is(
105
+ [data-slot="input"],
106
+ [data-slot="textarea"],
107
+ [data-slot="select-trigger"],
108
+ [data-slot="combobox-trigger"],
109
+ [data-slot="command-input"],
110
+ [data-slot="sidebar-input"]
111
+ ):focus-visible {
112
+ border-color: var(--ring);
113
+ box-shadow: 0 0 0 3px color-mix(in oklch, var(--ring) 22%, transparent);
114
+ outline: none;
115
+ }
116
+
117
+ [data-pallet-variant="frosted"] :is(
118
+ [data-slot="badge"],
119
+ [data-slot="kbd"],
120
+ [data-slot="combobox-chip"]
121
+ ) {
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);
128
+ }
129
+
130
+ [data-pallet-variant="frosted"] :is(
131
+ [data-slot="checkbox"],
132
+ [data-slot="radio-group-item"],
133
+ [data-slot="switch"],
134
+ [data-slot="slider-track"],
135
+ [data-slot="progress"],
136
+ [data-slot="avatar"],
137
+ [data-slot="avatar-fallback"],
138
+ [data-slot="skeleton"]
139
+ ) {
140
+ border-color: var(--frost-border-muted);
141
+ box-shadow: none;
142
+ }
143
+
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;
148
+ }
149
+
150
+ [data-pallet-variant="frosted"] [data-slot="tabs-trigger"] {
151
+ border-radius: var(--pallet-control-radius);
152
+ }
153
+
154
+ [data-pallet-variant="frosted"] [data-slot="tabs-trigger"][data-state="active"] {
155
+ background-color: var(--frost-bg-strong);
156
+ border: 1px solid var(--frost-border);
157
+ box-shadow: none;
158
+ }
159
+
160
+ [data-pallet-variant="frosted"] [data-slot="table-row"]:hover {
161
+ background-color: color-mix(in oklch, var(--accent) 40%, transparent);
162
+ }
163
+
164
+ [data-pallet-variant="frosted"] :is(
165
+ [data-slot="popover-content"],
166
+ [data-slot="dropdown-menu-content"],
167
+ [data-slot="dropdown-menu-sub-content"],
168
+ [data-slot="context-menu-content"],
169
+ [data-slot="context-menu-sub-content"],
170
+ [data-slot="menubar-content"],
171
+ [data-slot="menubar-sub-content"],
172
+ [data-slot="select-content"],
173
+ [data-slot="combobox-content"],
174
+ [data-slot="combobox-list"],
175
+ [data-slot="command"],
176
+ [data-slot="command-list"],
177
+ [data-slot="hover-card-content"],
178
+ [data-slot="tooltip-content"],
179
+ [data-slot="navigation-menu-content"],
180
+ [data-slot="dialog-content"],
181
+ [data-slot="alert-dialog-content"],
182
+ [data-slot="sheet-content"],
183
+ [data-slot="drawer-content"]
184
+ ) {
185
+ background-color: var(--frost-bg-strong);
186
+ border: 1px solid var(--frost-border);
187
+ border-radius: var(--pallet-overlay-radius);
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))
191
+ saturate(var(--frost-saturate));
192
+ }
193
+
194
+ [data-pallet-variant="frosted"] :is(
195
+ [data-slot="dialog-overlay"],
196
+ [data-slot="alert-dialog-overlay"],
197
+ [data-slot="sheet-overlay"],
198
+ [data-slot="drawer-overlay"]
199
+ ) {
200
+ background-color: color-mix(in oklch, var(--foreground) 22%, transparent);
201
+ backdrop-filter: blur(6px);
202
+ -webkit-backdrop-filter: blur(6px);
203
+ }
204
+
205
+ [data-pallet-variant="frosted"] :is(
206
+ [data-slot="dropdown-menu-item"],
207
+ [data-slot="context-menu-item"],
208
+ [data-slot="menubar-item"],
209
+ [data-slot="select-item"],
210
+ [data-slot="combobox-item"],
211
+ [data-slot="command-item"],
212
+ [data-slot="navigation-menu-link"]
213
+ ) {
214
+ border-radius: var(--radius-sm);
215
+ }
216
+ }