@rokkit/themes 1.3.1 → 1.3.2
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/dist/base/chat.css +264 -0
- package/dist/base/message.css +28 -0
- package/dist/base.css +293 -0
- package/dist/frosted/button.css +10 -4
- package/dist/frosted/message.css +4 -4
- package/dist/frosted/status-list.css +1 -1
- package/dist/frosted/table.css +3 -1
- package/dist/frosted/tabs.css +7 -2
- package/dist/frosted/toggle.css +7 -2
- package/dist/frosted.css +32 -14
- package/dist/index.css +431 -75
- package/dist/material/button.css +3 -1
- package/dist/material/message.css +4 -4
- package/dist/material/select.css +3 -1
- package/dist/material/status-list.css +1 -1
- package/dist/material/table.css +3 -1
- package/dist/material/tabs.css +5 -2
- package/dist/material/toggle.css +5 -2
- package/dist/material.css +24 -12
- package/dist/minimal/button.css +3 -1
- package/dist/minimal/message.css +4 -4
- package/dist/minimal/status-list.css +1 -1
- package/dist/minimal/table.css +3 -1
- package/dist/minimal/tabs.css +1 -1
- package/dist/minimal.css +12 -8
- package/dist/rokkit/button.css +3 -1
- package/dist/rokkit/message.css +4 -4
- package/dist/rokkit/status-list.css +1 -1
- package/dist/rokkit/table.css +3 -1
- package/dist/rokkit.css +11 -7
- package/dist/zen-sumi/button.css +26 -3
- package/dist/zen-sumi/chart.css +1 -1
- package/dist/zen-sumi/command-palette.css +4 -4
- package/dist/zen-sumi/floating-action.css +1 -1
- package/dist/zen-sumi/floating-navigation.css +3 -3
- package/dist/zen-sumi/input.css +2 -2
- package/dist/zen-sumi/message.css +4 -4
- package/dist/zen-sumi/range.css +2 -2
- package/dist/zen-sumi/search-filter.css +2 -2
- package/dist/zen-sumi/status-list.css +3 -3
- package/dist/zen-sumi/step-indicator.css +2 -2
- package/dist/zen-sumi/tabs.css +1 -1
- package/dist/zen-sumi/timeline.css +2 -2
- package/dist/zen-sumi/toc.css +5 -3
- package/dist/zen-sumi/toolbar.css +1 -1
- package/dist/zen-sumi.css +59 -34
- package/package.json +3 -3
- package/src/base/chat.css +264 -0
- package/src/base/index.css +1 -0
- package/src/base/message.css +28 -0
- package/src/frosted/button.css +10 -4
- package/src/frosted/message.css +4 -4
- package/src/frosted/status-list.css +1 -1
- package/src/frosted/table.css +3 -1
- package/src/frosted/tabs.css +7 -2
- package/src/frosted/toggle.css +7 -2
- package/src/material/button.css +3 -1
- package/src/material/message.css +4 -4
- package/src/material/select.css +3 -1
- package/src/material/status-list.css +1 -1
- package/src/material/table.css +3 -1
- package/src/material/tabs.css +5 -2
- package/src/material/toggle.css +5 -2
- package/src/minimal/button.css +3 -1
- package/src/minimal/message.css +4 -4
- package/src/minimal/status-list.css +1 -1
- package/src/minimal/table.css +3 -1
- package/src/minimal/tabs.css +1 -1
- package/src/rokkit/button.css +3 -1
- package/src/rokkit/message.css +4 -4
- package/src/rokkit/status-list.css +1 -1
- package/src/rokkit/table.css +3 -1
- package/src/zen-sumi/button.css +26 -3
- package/src/zen-sumi/chart.css +1 -1
- package/src/zen-sumi/command-palette.css +4 -4
- package/src/zen-sumi/floating-action.css +1 -1
- package/src/zen-sumi/floating-navigation.css +3 -3
- package/src/zen-sumi/input.css +2 -2
- package/src/zen-sumi/message.css +4 -4
- package/src/zen-sumi/range.css +2 -2
- package/src/zen-sumi/search-filter.css +2 -2
- package/src/zen-sumi/status-list.css +3 -3
- package/src/zen-sumi/step-indicator.css +2 -2
- package/src/zen-sumi/tabs.css +1 -1
- package/src/zen-sumi/timeline.css +2 -2
- package/src/zen-sumi/toc.css +5 -3
- package/src/zen-sumi/toolbar.css +1 -1
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
/* Chat — structural + neutral styling for the @rokkit/ui chat components
|
|
2
|
+
(ChatShell / ChatHistory / ChatTimeline / ChatMessage / ChatComposer).
|
|
3
|
+
|
|
4
|
+
The components are headless and emit data-* hooks only; this file owns
|
|
5
|
+
their visual treatment using the Rokkit named-token vocabulary
|
|
6
|
+
(--paper, --ink, --accent, …) so it adapts to every theme + mode
|
|
7
|
+
automatically. Component-intrinsic rules work standalone; shell-context
|
|
8
|
+
rules (the history rail width, composer inset, scroll) are scoped under
|
|
9
|
+
[data-chat-shell]. Per-style files may override for flavor. */
|
|
10
|
+
|
|
11
|
+
/* ─── ChatMessage: avatar + bubble row ──────────────────────────────── */
|
|
12
|
+
[data-chat-message] {
|
|
13
|
+
display: flex;
|
|
14
|
+
align-items: flex-start;
|
|
15
|
+
gap: 12px;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
[data-chat-bubble] {
|
|
19
|
+
flex: 1;
|
|
20
|
+
min-width: 0;
|
|
21
|
+
display: flex;
|
|
22
|
+
flex-direction: column;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
[data-chat-body] {
|
|
26
|
+
font: 400 14px/1.55 var(--font-ui);
|
|
27
|
+
color: var(--ink);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
[data-chat-message][data-role='user'] [data-chat-body] {
|
|
31
|
+
font-family: var(--font-display, var(--font-ui));
|
|
32
|
+
font-size: 16px;
|
|
33
|
+
line-height: 1.4;
|
|
34
|
+
letter-spacing: -0.005em;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/* Inline-code chips in prose — but NOT inside a CodeBlock's <pre><code>. */
|
|
38
|
+
[data-chat-body] code:not([data-code-block] code) {
|
|
39
|
+
font: 500 12px var(--font-mono);
|
|
40
|
+
padding: 1px 6px;
|
|
41
|
+
border: 1px solid var(--paper-edge);
|
|
42
|
+
border-radius: 4px;
|
|
43
|
+
background: var(--paper-soft);
|
|
44
|
+
color: var(--ink-mute);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
[data-chat-time] {
|
|
48
|
+
margin-top: 6px;
|
|
49
|
+
font: 500 10.5px var(--font-mono);
|
|
50
|
+
color: var(--ink-soft);
|
|
51
|
+
letter-spacing: 0.04em;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/* Streaming caret (data-status='streaming' on the message). */
|
|
55
|
+
[data-chat-caret] {
|
|
56
|
+
display: inline-block;
|
|
57
|
+
width: 7px;
|
|
58
|
+
height: 1.05em;
|
|
59
|
+
margin-left: 3px;
|
|
60
|
+
vertical-align: text-bottom;
|
|
61
|
+
background: var(--accent);
|
|
62
|
+
border-radius: 1px;
|
|
63
|
+
animation: rokkit-chat-caret 1s steps(2, start) infinite;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
@keyframes rokkit-chat-caret {
|
|
67
|
+
to {
|
|
68
|
+
opacity: 0;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/* ─── ChatTimeline: message list ────────────────────────────────────── */
|
|
73
|
+
[data-chat-timeline] {
|
|
74
|
+
flex: 1;
|
|
75
|
+
min-height: 0;
|
|
76
|
+
overflow-y: auto;
|
|
77
|
+
display: flex;
|
|
78
|
+
flex-direction: column;
|
|
79
|
+
gap: 22px;
|
|
80
|
+
padding: 24px 20px;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/* ─── ChatComposer: input card ──────────────────────────────────────── */
|
|
84
|
+
[data-chat-composer] {
|
|
85
|
+
flex-shrink: 0;
|
|
86
|
+
display: flex;
|
|
87
|
+
flex-direction: column;
|
|
88
|
+
gap: 8px;
|
|
89
|
+
padding: 10px 12px;
|
|
90
|
+
background: var(--paper-soft);
|
|
91
|
+
/* Match the standard input chrome: a subtle paper-mute hairline at rest,
|
|
92
|
+
darkening to ink-soft on focus — NOT paper-edge (the near-black etched
|
|
93
|
+
edge in dark mode, which reads as a heavy border). */
|
|
94
|
+
border: 1px solid var(--paper-mute);
|
|
95
|
+
border-radius: 10px;
|
|
96
|
+
transition: border-color 120ms ease;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/* Single, calm focus affordance — just darken the border (no ring), exactly
|
|
100
|
+
like [data-input-root]:focus-within. */
|
|
101
|
+
[data-chat-composer]:focus-within {
|
|
102
|
+
border-color: var(--ink-soft);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/* Disabled — mirror the input disabled treatment (dim + not-allowed). */
|
|
106
|
+
[data-chat-composer]:has([data-chat-input]:disabled) {
|
|
107
|
+
opacity: 0.55;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
[data-chat-input]:disabled {
|
|
111
|
+
cursor: not-allowed;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
[data-chat-input] {
|
|
115
|
+
width: 100%;
|
|
116
|
+
min-height: 22px;
|
|
117
|
+
max-height: 160px;
|
|
118
|
+
padding: 0;
|
|
119
|
+
border: 0;
|
|
120
|
+
outline: none;
|
|
121
|
+
background: transparent;
|
|
122
|
+
resize: none;
|
|
123
|
+
font: 400 14px/1.45 var(--font-ui);
|
|
124
|
+
color: var(--ink);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
[data-chat-input]::placeholder {
|
|
128
|
+
color: var(--ink-soft);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
[data-chat-composer][data-busy] [data-chat-input] {
|
|
132
|
+
opacity: 0.7;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/* ─── ChatHistory: conversation rail ────────────────────────────────── */
|
|
136
|
+
[data-chat-history] {
|
|
137
|
+
display: flex;
|
|
138
|
+
flex-direction: column;
|
|
139
|
+
min-height: 0;
|
|
140
|
+
overflow-y: auto;
|
|
141
|
+
padding: 8px;
|
|
142
|
+
background: var(--paper);
|
|
143
|
+
color: var(--ink);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
[data-chat-history-new] {
|
|
147
|
+
display: inline-flex;
|
|
148
|
+
align-items: center;
|
|
149
|
+
gap: 8px;
|
|
150
|
+
height: 32px;
|
|
151
|
+
padding: 0 10px;
|
|
152
|
+
margin-bottom: 6px;
|
|
153
|
+
border: 1px solid var(--paper-edge);
|
|
154
|
+
border-radius: 6px;
|
|
155
|
+
background: var(--paper-soft);
|
|
156
|
+
color: var(--ink);
|
|
157
|
+
font: 500 12.5px var(--font-ui);
|
|
158
|
+
cursor: pointer;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
[data-chat-history-new]:hover {
|
|
162
|
+
border-color: var(--ink-soft);
|
|
163
|
+
background: var(--paper);
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
[data-chat-history-row] {
|
|
167
|
+
display: flex;
|
|
168
|
+
align-items: center;
|
|
169
|
+
border-radius: 6px;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
[data-chat-history-row]:hover {
|
|
173
|
+
background: var(--paper-soft);
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
[data-chat-history-row][data-active] {
|
|
177
|
+
background: var(--paper-mute);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
[data-chat-history-item] {
|
|
181
|
+
flex: 1;
|
|
182
|
+
min-width: 0;
|
|
183
|
+
display: flex;
|
|
184
|
+
align-items: center;
|
|
185
|
+
gap: 8px;
|
|
186
|
+
padding: 7px 8px;
|
|
187
|
+
border: 0;
|
|
188
|
+
background: transparent;
|
|
189
|
+
color: var(--ink-mute);
|
|
190
|
+
cursor: pointer;
|
|
191
|
+
text-align: left;
|
|
192
|
+
font-family: var(--font-ui);
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
[data-chat-history-row][data-active] [data-chat-history-item] {
|
|
196
|
+
color: var(--ink);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
[data-chat-history-title] {
|
|
200
|
+
flex: 1;
|
|
201
|
+
min-width: 0;
|
|
202
|
+
font: 450 12.5px var(--font-ui);
|
|
203
|
+
overflow: hidden;
|
|
204
|
+
text-overflow: ellipsis;
|
|
205
|
+
white-space: nowrap;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
[data-chat-history-time] {
|
|
209
|
+
flex-shrink: 0;
|
|
210
|
+
font: 500 10px var(--font-mono);
|
|
211
|
+
color: var(--ink-soft);
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
[data-chat-history-delete] {
|
|
215
|
+
flex-shrink: 0;
|
|
216
|
+
width: 24px;
|
|
217
|
+
height: 24px;
|
|
218
|
+
display: grid;
|
|
219
|
+
place-items: center;
|
|
220
|
+
border: 0;
|
|
221
|
+
background: transparent;
|
|
222
|
+
color: var(--ink-soft);
|
|
223
|
+
border-radius: 4px;
|
|
224
|
+
cursor: pointer;
|
|
225
|
+
opacity: 0;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
[data-chat-history-row]:hover [data-chat-history-delete] {
|
|
229
|
+
opacity: 1;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
[data-chat-history-delete]:hover {
|
|
233
|
+
background: var(--paper-mute);
|
|
234
|
+
color: var(--ink);
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
/* ─── ChatShell: history rail + main column ─────────────────────────── */
|
|
238
|
+
[data-chat-shell] {
|
|
239
|
+
display: flex;
|
|
240
|
+
min-height: 0;
|
|
241
|
+
background: var(--paper);
|
|
242
|
+
color: var(--ink);
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
[data-chat-main] {
|
|
246
|
+
flex: 1;
|
|
247
|
+
min-width: 0;
|
|
248
|
+
min-height: 0;
|
|
249
|
+
display: flex;
|
|
250
|
+
flex-direction: column;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
/* Rail chrome only applies inside the shell — a standalone ChatHistory
|
|
254
|
+
fills its own container instead of imposing a fixed rail width. */
|
|
255
|
+
[data-chat-shell] [data-chat-history] {
|
|
256
|
+
width: 280px;
|
|
257
|
+
flex-shrink: 0;
|
|
258
|
+
border-right: 1px solid var(--paper-edge);
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
/* Inset the composer from the column edges inside the shell. */
|
|
262
|
+
[data-chat-main] [data-chat-composer] {
|
|
263
|
+
margin: 0 20px 20px;
|
|
264
|
+
}
|
package/src/base/index.css
CHANGED
package/src/base/message.css
CHANGED
|
@@ -31,6 +31,34 @@
|
|
|
31
31
|
min-width: 0;
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
+
/* Contrast-critical (applies to every style): the status soft-bg is a fixed
|
|
35
|
+
light tint that does NOT flip in dark mode, so the body text must be a fixed
|
|
36
|
+
DARK tone to stay readable. Darken the status hue toward black — keeps the
|
|
37
|
+
colour identity and reaches WCAG AA on the light tint in both modes. The
|
|
38
|
+
icon / border keep the vibrant status-500.
|
|
39
|
+
|
|
40
|
+
The same darkened tone is also set on the ROOT (not just [data-message-text]):
|
|
41
|
+
the root's `color` is the inherited default for any banner text, and the
|
|
42
|
+
styles set the vibrant `text-{status}` on the root — which fails AA on the
|
|
43
|
+
light soft-bg. The vibrant icon/dismiss keep their own higher-specificity
|
|
44
|
+
`text-{status}` rules, so this only re-tones the readable copy. */
|
|
45
|
+
[data-message-root][data-type='error'],
|
|
46
|
+
[data-message-root][data-type='error'] [data-message-text] {
|
|
47
|
+
color: color-mix(in oklch, var(--error) 55%, black);
|
|
48
|
+
}
|
|
49
|
+
[data-message-root][data-type='warning'],
|
|
50
|
+
[data-message-root][data-type='warning'] [data-message-text] {
|
|
51
|
+
color: color-mix(in oklch, var(--warning) 55%, black);
|
|
52
|
+
}
|
|
53
|
+
[data-message-root][data-type='info'],
|
|
54
|
+
[data-message-root][data-type='info'] [data-message-text] {
|
|
55
|
+
color: color-mix(in oklch, var(--info) 55%, black);
|
|
56
|
+
}
|
|
57
|
+
[data-message-root][data-type='success'],
|
|
58
|
+
[data-message-root][data-type='success'] [data-message-text] {
|
|
59
|
+
color: color-mix(in oklch, var(--success) 55%, black);
|
|
60
|
+
}
|
|
61
|
+
|
|
34
62
|
[data-message-actions] {
|
|
35
63
|
display: flex;
|
|
36
64
|
align-items: center;
|
package/src/frosted/button.css
CHANGED
|
@@ -21,9 +21,15 @@
|
|
|
21
21
|
0 2px 8px rgba(0, 0, 0, 0.08);
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
+
/* Filled frosted variants use a translucent fill (bg-X/60) that composites
|
|
25
|
+
over the page, so the effective fill is a diluted tint that flips light/dark
|
|
26
|
+
with the mode. The auto on-color (computed against the full-opacity status
|
|
27
|
+
500) is wrong for the diluted fill — near-black on the dark dilution only
|
|
28
|
+
reaches ~2.4:1. ink flips with the mode and clears AA on both poles
|
|
29
|
+
(~6.2:1 dark, ~7.8:1 light). */
|
|
24
30
|
[data-style='frosted'] [data-button][data-style='default'][data-variant='primary'],
|
|
25
31
|
[data-style='frosted'] [data-button]:not([data-style])[data-variant='primary'] {
|
|
26
|
-
@apply text-
|
|
32
|
+
@apply text-ink border backdrop-blur-xl bg-primary/60;
|
|
27
33
|
border-color: rgba(255, 255, 255, 0.25);
|
|
28
34
|
box-shadow:
|
|
29
35
|
inset 0 1px 0 rgba(255, 255, 255, 0.25),
|
|
@@ -32,7 +38,7 @@
|
|
|
32
38
|
|
|
33
39
|
[data-style='frosted'] [data-button][data-style='default'][data-variant='secondary'],
|
|
34
40
|
[data-style='frosted'] [data-button]:not([data-style])[data-variant='secondary'] {
|
|
35
|
-
@apply text-
|
|
41
|
+
@apply text-ink border backdrop-blur-xl bg-accent/60;
|
|
36
42
|
border-color: rgba(255, 255, 255, 0.25);
|
|
37
43
|
box-shadow:
|
|
38
44
|
inset 0 1px 0 rgba(255, 255, 255, 0.25),
|
|
@@ -41,7 +47,7 @@
|
|
|
41
47
|
|
|
42
48
|
[data-style='frosted'] [data-button][data-style='default'][data-variant='accent'],
|
|
43
49
|
[data-style='frosted'] [data-button]:not([data-style])[data-variant='accent'] {
|
|
44
|
-
@apply text-
|
|
50
|
+
@apply text-ink border backdrop-blur-xl bg-accent/60;
|
|
45
51
|
border-color: rgba(255, 255, 255, 0.25);
|
|
46
52
|
box-shadow:
|
|
47
53
|
inset 0 1px 0 rgba(255, 255, 255, 0.25),
|
|
@@ -50,7 +56,7 @@
|
|
|
50
56
|
|
|
51
57
|
[data-style='frosted'] [data-button][data-style='default'][data-variant='danger'],
|
|
52
58
|
[data-style='frosted'] [data-button]:not([data-style])[data-variant='danger'] {
|
|
53
|
-
@apply text-
|
|
59
|
+
@apply text-ink border backdrop-blur-xl bg-danger/60;
|
|
54
60
|
border-color: rgba(255, 255, 255, 0.25);
|
|
55
61
|
box-shadow:
|
|
56
62
|
inset 0 1px 0 rgba(255, 255, 255, 0.25),
|
package/src/frosted/message.css
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
5
|
[data-style='frosted'] [data-message-root][data-type='error'] {
|
|
6
|
-
@apply border-error/40
|
|
6
|
+
@apply border-error/40 backdrop-blur-sm;
|
|
7
7
|
background-color: var(--error-soft);
|
|
8
8
|
}
|
|
9
9
|
[data-style='frosted'] [data-message-root][data-type='error'] [data-message-icon],
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
[data-style='frosted'] [data-message-root][data-type='warning'] {
|
|
15
|
-
@apply border-warning/40
|
|
15
|
+
@apply border-warning/40 backdrop-blur-sm;
|
|
16
16
|
background-color: var(--warning-soft);
|
|
17
17
|
}
|
|
18
18
|
[data-style='frosted'] [data-message-root][data-type='warning'] [data-message-icon],
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
[data-style='frosted'] [data-message-root][data-type='info'] {
|
|
24
|
-
@apply border-info/40
|
|
24
|
+
@apply border-info/40 backdrop-blur-sm;
|
|
25
25
|
background-color: var(--info-soft);
|
|
26
26
|
}
|
|
27
27
|
[data-style='frosted'] [data-message-root][data-type='info'] [data-message-icon],
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
[data-style='frosted'] [data-message-root][data-type='success'] {
|
|
33
|
-
@apply border-success/40
|
|
33
|
+
@apply border-success/40 backdrop-blur-sm;
|
|
34
34
|
background-color: var(--success-soft);
|
|
35
35
|
}
|
|
36
36
|
[data-style='frosted'] [data-message-root][data-type='success'] [data-message-icon],
|
package/src/frosted/table.css
CHANGED
|
@@ -9,7 +9,9 @@
|
|
|
9
9
|
============================================================================= */
|
|
10
10
|
|
|
11
11
|
[data-style='frosted'] [data-table-header] th {
|
|
12
|
-
|
|
12
|
+
/* ink (not ink-mute): column headers are primary content; ink-mute on the
|
|
13
|
+
paper-mute header only reaches 4.07:1 in dark mode (AA fail). */
|
|
14
|
+
@apply text-ink border-b backdrop-blur-sm;
|
|
13
15
|
border-color: color-mix(in oklch, var(--ink-soft) 20%, transparent);
|
|
14
16
|
background-color: color-mix(in oklch, var(--paper-mute) 80%, transparent);
|
|
15
17
|
}
|
package/src/frosted/tabs.css
CHANGED
|
@@ -31,9 +31,14 @@
|
|
|
31
31
|
background-color: color-mix(in oklch, var(--paper-mute) 15%, transparent);
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
/* Selected state
|
|
34
|
+
/* Selected state.
|
|
35
|
+
ink (not primary): the selected pill's bg is a translucent primary tint
|
|
36
|
+
(bg-primary/40) that composites to a light tint in light mode and a dark
|
|
37
|
+
tint in dark mode. Vibrant primary text on the light tint is only ~1.6:1.
|
|
38
|
+
ink flips with the mode and clears AA on both poles (~10:1 light, ~8.6:1
|
|
39
|
+
dark). The vibrant primary lives on the border + icon below. */
|
|
35
40
|
[data-style='frosted'] [data-tabs-trigger][data-selected] {
|
|
36
|
-
@apply bg-primary/40 text-
|
|
41
|
+
@apply bg-primary/40 text-ink border-primary/50 border backdrop-blur-sm;
|
|
37
42
|
}
|
|
38
43
|
|
|
39
44
|
/* =============================================================================
|
package/src/frosted/toggle.css
CHANGED
|
@@ -28,9 +28,14 @@
|
|
|
28
28
|
background-color: color-mix(in oklch, var(--paper-mute) 15%, transparent);
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
/* Selected state
|
|
31
|
+
/* Selected state.
|
|
32
|
+
ink (not primary): the selected bg is a translucent primary tint
|
|
33
|
+
(bg-primary/40) that composites to a light tint in light mode and a dark
|
|
34
|
+
tint in dark mode. Vibrant primary text on the light tint is only ~1.6:1.
|
|
35
|
+
ink flips with the mode and clears AA on both poles. Vibrant primary stays
|
|
36
|
+
on the border + icon. */
|
|
32
37
|
[data-style='frosted'] [data-toggle-option][data-selected='true'] {
|
|
33
|
-
@apply bg-primary/40 text-
|
|
38
|
+
@apply bg-primary/40 text-ink border-primary/50 border backdrop-blur-sm;
|
|
34
39
|
}
|
|
35
40
|
|
|
36
41
|
/* =============================================================================
|
package/src/material/button.css
CHANGED
|
@@ -12,7 +12,9 @@
|
|
|
12
12
|
[data-style='material'] [data-button]:not([data-style])[data-variant='default'],
|
|
13
13
|
[data-style='material'] [data-button][data-style='default']:not([data-variant]),
|
|
14
14
|
[data-style='material'] [data-button]:not([data-style]):not([data-variant]) {
|
|
15
|
-
|
|
15
|
+
/* ink (not ink-mute): the button label is primary content; ink-mute on the
|
|
16
|
+
paper-mute fill only reaches 4.07:1 in dark mode (AA fail). */
|
|
17
|
+
@apply bg-paper-mute text-ink bg-none shadow-sm;
|
|
16
18
|
}
|
|
17
19
|
|
|
18
20
|
[data-style='material'] [data-button][data-style='default'][data-variant='primary'],
|
package/src/material/message.css
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
5
|
[data-style='material'] [data-message-root][data-type='error'] {
|
|
6
|
-
@apply bg-error-soft border-error
|
|
6
|
+
@apply bg-error-soft border-error shadow-sm;
|
|
7
7
|
}
|
|
8
8
|
[data-style='material'] [data-message-root][data-type='error'] [data-message-icon],
|
|
9
9
|
[data-style='material'] [data-message-root][data-type='error'] [data-message-dismiss] {
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
[data-style='material'] [data-message-root][data-type='warning'] {
|
|
14
|
-
@apply bg-warning-soft border-warning
|
|
14
|
+
@apply bg-warning-soft border-warning shadow-sm;
|
|
15
15
|
}
|
|
16
16
|
[data-style='material'] [data-message-root][data-type='warning'] [data-message-icon],
|
|
17
17
|
[data-style='material'] [data-message-root][data-type='warning'] [data-message-dismiss] {
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
[data-style='material'] [data-message-root][data-type='info'] {
|
|
22
|
-
@apply bg-info-soft border-info
|
|
22
|
+
@apply bg-info-soft border-info shadow-sm;
|
|
23
23
|
}
|
|
24
24
|
[data-style='material'] [data-message-root][data-type='info'] [data-message-icon],
|
|
25
25
|
[data-style='material'] [data-message-root][data-type='info'] [data-message-dismiss] {
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
[data-style='material'] [data-message-root][data-type='success'] {
|
|
30
|
-
@apply bg-success-soft border-success
|
|
30
|
+
@apply bg-success-soft border-success shadow-sm;
|
|
31
31
|
}
|
|
32
32
|
[data-style='material'] [data-message-root][data-type='success'] [data-message-icon],
|
|
33
33
|
[data-style='material'] [data-message-root][data-type='success'] [data-message-dismiss] {
|
package/src/material/select.css
CHANGED
|
@@ -49,7 +49,9 @@
|
|
|
49
49
|
============================================================================= */
|
|
50
50
|
|
|
51
51
|
[data-style='material'] [data-select-tag] {
|
|
52
|
-
|
|
52
|
+
/* ink (not ink-mute): the tag holds the selected value (primary content);
|
|
53
|
+
ink-mute on the paper-mute chip only reaches 4.07:1 in dark mode (AA fail). */
|
|
54
|
+
@apply bg-paper-mute text-ink rounded-full bg-none shadow-sm;
|
|
53
55
|
}
|
|
54
56
|
|
|
55
57
|
[data-style='material'] [data-select-tag-remove] {
|
package/src/material/table.css
CHANGED
|
@@ -9,7 +9,9 @@
|
|
|
9
9
|
============================================================================= */
|
|
10
10
|
|
|
11
11
|
[data-style='material'] [data-table-header] th {
|
|
12
|
-
|
|
12
|
+
/* ink (not ink-mute): column headers are primary content; ink-mute on the
|
|
13
|
+
paper-mute header only reaches 4.07:1 in dark mode (AA fail). */
|
|
14
|
+
@apply text-ink bg-paper-mute border-paper-edge border-b font-medium;
|
|
13
15
|
}
|
|
14
16
|
|
|
15
17
|
[data-style='material'] [data-table-header-cell][data-sortable='true']:hover {
|
package/src/material/tabs.css
CHANGED
|
@@ -20,8 +20,11 @@
|
|
|
20
20
|
Tab Triggers
|
|
21
21
|
============================================================================= */
|
|
22
22
|
|
|
23
|
+
/* ink (not ink-mute): an unselected tab label is an interactive navigation
|
|
24
|
+
target that must read clearly; ink-mute on the paper-mute tab list only
|
|
25
|
+
reaches 4.07:1 in dark mode (AA fail). */
|
|
23
26
|
[data-style='material'] [data-tabs-trigger] {
|
|
24
|
-
@apply text-ink
|
|
27
|
+
@apply text-ink rounded-t-lg bg-transparent;
|
|
25
28
|
}
|
|
26
29
|
|
|
27
30
|
[data-style='material'] [data-tabs][data-position='after'] [data-tabs-trigger] {
|
|
@@ -29,7 +32,7 @@
|
|
|
29
32
|
}
|
|
30
33
|
|
|
31
34
|
[data-style='material'] [data-tabs-trigger]:hover:not(:disabled):not([data-disabled]) {
|
|
32
|
-
@apply bg-paper-mute text-ink
|
|
35
|
+
@apply bg-paper-mute text-ink;
|
|
33
36
|
}
|
|
34
37
|
|
|
35
38
|
/* Selected state */
|
package/src/material/toggle.css
CHANGED
|
@@ -16,13 +16,16 @@
|
|
|
16
16
|
Toggle Options
|
|
17
17
|
============================================================================= */
|
|
18
18
|
|
|
19
|
+
/* ink (not ink-mute): an unselected option label is an interactive target
|
|
20
|
+
that must read clearly; ink-mute on the paper-mute container only reaches
|
|
21
|
+
4.07:1 in dark mode (AA fail). */
|
|
19
22
|
[data-style='material'] [data-toggle-option] {
|
|
20
|
-
@apply text-ink
|
|
23
|
+
@apply text-ink rounded-full;
|
|
21
24
|
}
|
|
22
25
|
|
|
23
26
|
[data-style='material'] [data-toggle-option]:hover:not(:disabled):not([data-disabled='true']),
|
|
24
27
|
[data-style='material'] [data-toggle-option]:focus:not(:disabled):not([data-disabled='true']) {
|
|
25
|
-
@apply bg-paper-mute text-ink
|
|
28
|
+
@apply bg-paper-mute text-ink bg-none;
|
|
26
29
|
}
|
|
27
30
|
|
|
28
31
|
/* Selected state */
|
package/src/minimal/button.css
CHANGED
|
@@ -12,7 +12,9 @@
|
|
|
12
12
|
[data-style='minimal'] [data-button]:not([data-style])[data-variant='default'],
|
|
13
13
|
[data-style='minimal'] [data-button][data-style='default']:not([data-variant]),
|
|
14
14
|
[data-style='minimal'] [data-button]:not([data-style]):not([data-variant]) {
|
|
15
|
-
|
|
15
|
+
/* ink (not ink-mute): the button label is primary content; ink-mute on the
|
|
16
|
+
paper-mute fill only reaches 4.07:1 in dark mode (AA fail). */
|
|
17
|
+
@apply bg-paper-mute border-paper-edge text-ink border bg-none;
|
|
16
18
|
}
|
|
17
19
|
|
|
18
20
|
[data-style='minimal'] [data-button][data-style='default'][data-variant='primary'],
|
package/src/minimal/message.css
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
5
|
[data-style='minimal'] [data-message-root][data-type='error'] {
|
|
6
|
-
@apply bg-error-soft border-error
|
|
6
|
+
@apply bg-error-soft border-error;
|
|
7
7
|
}
|
|
8
8
|
[data-style='minimal'] [data-message-root][data-type='error'] [data-message-icon],
|
|
9
9
|
[data-style='minimal'] [data-message-root][data-type='error'] [data-message-dismiss] {
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
[data-style='minimal'] [data-message-root][data-type='warning'] {
|
|
14
|
-
@apply bg-warning-soft border-warning
|
|
14
|
+
@apply bg-warning-soft border-warning;
|
|
15
15
|
}
|
|
16
16
|
[data-style='minimal'] [data-message-root][data-type='warning'] [data-message-icon],
|
|
17
17
|
[data-style='minimal'] [data-message-root][data-type='warning'] [data-message-dismiss] {
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
[data-style='minimal'] [data-message-root][data-type='info'] {
|
|
22
|
-
@apply bg-info-soft border-info
|
|
22
|
+
@apply bg-info-soft border-info;
|
|
23
23
|
}
|
|
24
24
|
[data-style='minimal'] [data-message-root][data-type='info'] [data-message-icon],
|
|
25
25
|
[data-style='minimal'] [data-message-root][data-type='info'] [data-message-dismiss] {
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
[data-style='minimal'] [data-message-root][data-type='success'] {
|
|
30
|
-
@apply bg-success-soft border-success
|
|
30
|
+
@apply bg-success-soft border-success;
|
|
31
31
|
}
|
|
32
32
|
[data-style='minimal'] [data-message-root][data-type='success'] [data-message-icon],
|
|
33
33
|
[data-style='minimal'] [data-message-root][data-type='success'] [data-message-dismiss] {
|
package/src/minimal/table.css
CHANGED
|
@@ -9,7 +9,9 @@
|
|
|
9
9
|
============================================================================= */
|
|
10
10
|
|
|
11
11
|
[data-style='minimal'] [data-table-header] th {
|
|
12
|
-
|
|
12
|
+
/* ink (not ink-mute): column headers are primary content; ink-mute on the
|
|
13
|
+
paper-mute header only reaches 4.07:1 in dark mode (AA fail). */
|
|
14
|
+
@apply text-ink border-paper-edge border-b bg-paper-mute;
|
|
13
15
|
}
|
|
14
16
|
|
|
15
17
|
[data-style='minimal'] [data-table-header-cell][data-sortable='true']:hover {
|
package/src/minimal/tabs.css
CHANGED
|
@@ -131,7 +131,7 @@
|
|
|
131
131
|
============================================================================= */
|
|
132
132
|
|
|
133
133
|
[data-style='minimal'] [data-tabs-trigger] [data-tabs-icon] {
|
|
134
|
-
@apply text-
|
|
134
|
+
@apply text-ink-soft;
|
|
135
135
|
}
|
|
136
136
|
|
|
137
137
|
[data-style='minimal'] [data-tabs-trigger]:hover:not(:disabled) [data-tabs-icon] {
|
package/src/rokkit/button.css
CHANGED
|
@@ -26,7 +26,9 @@
|
|
|
26
26
|
[data-style='rokkit'] [data-button]:not([data-style])[data-variant='default'],
|
|
27
27
|
[data-style='rokkit'] [data-button][data-style='default']:not([data-variant]),
|
|
28
28
|
[data-style='rokkit'] [data-button]:not([data-style]):not([data-variant]) {
|
|
29
|
-
|
|
29
|
+
/* ink (not ink-mute): the button label is primary content; ink-mute on the
|
|
30
|
+
paper-mute fill only reaches 4.07:1 in dark mode (AA fail). */
|
|
31
|
+
@apply border-paper-edge text-ink border;
|
|
30
32
|
background: var(--paper-mute);
|
|
31
33
|
}
|
|
32
34
|
|