@codenhub/styles 0.7.0 → 0.9.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/README.es.md +9 -8
- package/README.md +8 -7
- package/README.pt-BR.md +9 -8
- package/dist/aesthetics/chunky-tile.css +1 -1
- package/dist/aesthetics/cyber.css +1 -1
- package/dist/aesthetics/glass.css +1 -1
- package/dist/aesthetics/index.css +2 -2
- package/dist/aesthetics/neobrutalism.css +1 -1
- package/dist/aesthetics/pixel.css +1 -1
- package/dist/aesthetics/sketch.css +1 -1
- package/dist/cli.js +358 -0
- package/dist/components.css +50 -2
- package/dist/index.css +50 -2
- package/dist/index.d.ts +1 -0
- package/dist/native.css +50 -2
- package/dist/palette.css +1 -1
- package/dist/purge/classes.json +1 -0
- package/dist/purge/index.css +50 -0
- package/dist/theme.css +2 -2
- package/docs/accessibility.md +46 -27
- package/docs/changelog/0.8.0.md +70 -0
- package/docs/changelog/0.9.0.md +40 -0
- package/docs/changelog/index.md +2 -0
- package/docs/es/accessibility.md +47 -28
- package/docs/es/index.md +4 -3
- package/docs/es/integrating/index.md +38 -10
- package/docs/es/integrating/tailwind.md +79 -8
- package/docs/es/integrating/without-a-bundler.md +157 -5
- package/docs/es/setup.md +43 -34
- package/docs/es/usage/aesthetics.md +20 -14
- package/docs/es/usage/buttons.md +6 -2
- package/docs/es/usage/composing.md +6 -2
- package/docs/es/usage/content-and-layout.md +10 -4
- package/docs/es/usage/customizing.md +46 -26
- package/docs/es/usage/feedback.md +5 -1
- package/docs/es/usage/forms.md +30 -5
- package/docs/es/usage/index.md +7 -3
- package/docs/es/usage/presets.md +92 -0
- package/docs/es/usage/solo.md +4 -2
- package/docs/es/usage/theming.md +29 -16
- package/docs/es/usage/tooltips.md +2 -2
- package/docs/index.md +3 -2
- package/docs/integrating/index.md +38 -10
- package/docs/integrating/tailwind.md +78 -7
- package/docs/integrating/without-a-bundler.md +156 -4
- package/docs/pt-BR/accessibility.md +47 -28
- package/docs/pt-BR/index.md +4 -3
- package/docs/pt-BR/integrating/index.md +38 -10
- package/docs/pt-BR/integrating/tailwind.md +79 -8
- package/docs/pt-BR/integrating/without-a-bundler.md +157 -5
- package/docs/pt-BR/setup.md +43 -34
- package/docs/pt-BR/usage/aesthetics.md +20 -14
- package/docs/pt-BR/usage/buttons.md +6 -2
- package/docs/pt-BR/usage/composing.md +6 -2
- package/docs/pt-BR/usage/content-and-layout.md +10 -4
- package/docs/pt-BR/usage/customizing.md +46 -26
- package/docs/pt-BR/usage/feedback.md +5 -1
- package/docs/pt-BR/usage/forms.md +30 -5
- package/docs/pt-BR/usage/index.md +7 -3
- package/docs/pt-BR/usage/presets.md +92 -0
- package/docs/pt-BR/usage/solo.md +4 -2
- package/docs/pt-BR/usage/theming.md +22 -9
- package/docs/pt-BR/usage/tooltips.md +2 -2
- package/docs/setup.md +31 -22
- package/docs/usage/aesthetics.md +19 -13
- package/docs/usage/buttons.md +5 -1
- package/docs/usage/composing.md +5 -1
- package/docs/usage/content-and-layout.md +9 -3
- package/docs/usage/customizing.md +45 -25
- package/docs/usage/feedback.md +4 -0
- package/docs/usage/forms.md +29 -4
- package/docs/usage/index.md +6 -2
- package/docs/usage/presets.md +91 -0
- package/docs/usage/solo.md +3 -1
- package/docs/usage/theming.md +21 -8
- package/docs/usage/tooltips.md +1 -1
- package/llms-full.txt +695 -134
- package/llms.txt +3 -2
- package/package.json +117 -65
- package/{dist/tw → tw}/aesthetics/chunky-tile.css +43 -20
- package/{dist/tw → tw}/aesthetics/cyber.css +19 -25
- package/{dist/tw → tw}/aesthetics/glass.css +110 -36
- package/{dist/tw → tw}/aesthetics/neobrutalism.css +41 -21
- package/{dist/tw → tw}/aesthetics/pixel.css +3 -0
- package/tw/aesthetics/sketch.css +435 -0
- package/{dist/tw → tw}/box.css +109 -26
- package/tw/components/button.css +11 -0
- package/tw/components/button.rules.css +187 -0
- package/tw/components/feedback.css +11 -0
- package/{dist/tw/components/feedback.css → tw/components/feedback.rules.css} +156 -33
- package/tw/components/form.css +11 -0
- package/{dist/tw/components/form.css → tw/components/form.rules.css} +584 -141
- package/tw/components/index.css +16 -0
- package/tw/components/rules.css +41 -0
- package/tw/components/surface.css +11 -0
- package/tw/components/surface.rules.css +225 -0
- package/tw/components/tooltip.css +11 -0
- package/{dist/tw/components/tooltip.css → tw/components/tooltip.rules.css} +82 -61
- package/{dist/tw → tw}/corner.css +18 -12
- package/{dist/tw → tw}/elevation.css +27 -21
- package/{dist/tw → tw}/index.css +11 -9
- package/tw/index.d.ts +1 -0
- package/tw/intent.css +312 -0
- package/tw/modifiers.css +127 -0
- package/tw/native.css +323 -0
- package/tw/presentation.css +139 -0
- package/tw/reset.css +10 -0
- package/{dist/tw/reset.css → tw/reset.rules.css} +7 -8
- package/tw/size.css +34 -0
- package/tw/surface.css +9 -0
- package/tw/surface.rules.css +212 -0
- package/{dist/tw → tw}/theme.css +93 -29
- package/tw/typography.css +8 -0
- package/{dist/tw/typography.css → tw/typography.rules.css} +0 -3
- package/{dist/tw → tw}/utilities/content.css +248 -108
- package/tw/utilities/index.css +11 -0
- package/tw/utilities/layout.css +210 -0
- package/tw/utilities/rules.css +8 -0
- package/dist/tw/aesthetics/sketch.css +0 -398
- package/dist/tw/components/button.css +0 -139
- package/dist/tw/components/index.css +0 -35
- package/dist/tw/components/surface.css +0 -184
- package/dist/tw/intent.css +0 -229
- package/dist/tw/native.css +0 -203
- package/dist/tw/palette.css +0 -460
- package/dist/tw/presentation.css +0 -68
- package/dist/tw/surface.css +0 -61
- package/dist/tw/utilities/index.css +0 -6
- package/dist/tw/utilities/layout.css +0 -144
- /package/{dist/tw → tw}/aesthetics/index.css +0 -0
|
@@ -39,6 +39,13 @@
|
|
|
39
39
|
on a field's 60% resting line, in light. See
|
|
40
40
|
docs/internal/model.md#presentation. */
|
|
41
41
|
--ui-control-ink: light-dark(rgb(0 0 0 / 0.55), rgb(255 255 255 / 0.55));
|
|
42
|
+
/* Buttons and badges keep the hairline, which needs a plate to be seen
|
|
43
|
+
on. Unfilled they have none -- white at 65% on a light page is 1.01:1,
|
|
44
|
+
an edged ghost button with no edge -- so there the neutral line is the
|
|
45
|
+
control one. `box` reads it only for a neutral box resolving to no
|
|
46
|
+
fill; the other aesthetics clear it below, so the nearest region
|
|
47
|
+
decides. */
|
|
48
|
+
--_unfilled-ink: light-dark(rgb(0 0 0 / 0.55), rgb(255 255 255 / 0.55));
|
|
42
49
|
/* Nor is a line drawn on a plate: the hairline vanishes on a table's light
|
|
43
50
|
plate, and its default, `.ruled`, and `.ruleless` forms would render as
|
|
44
51
|
one. A table's frame and rules take the theme's ink at a fifth,
|
|
@@ -124,20 +131,41 @@
|
|
|
124
131
|
--ui-label-tracking: initial;
|
|
125
132
|
--ui-label-case: initial;
|
|
126
133
|
--ui-label-shadow: initial;
|
|
134
|
+
|
|
135
|
+
/* No face of its own, so the theme's, named rather than inherited: a glass
|
|
136
|
+
region nested inside pixel, cyber, sketch, or chunky tile otherwise took
|
|
137
|
+
their face. `--font-default` is the token the reset applies to the page,
|
|
138
|
+
as chunky tile reads it. */
|
|
139
|
+
font-family: var(--font-default, ui-sans-serif, system-ui, sans-serif);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/* A region of another aesthetic nested in glass draws its own line. */
|
|
143
|
+
:is(.neobrutalism, .pixel, .chunky-tile, .cyber, .sketch) {
|
|
144
|
+
--_unfilled-ink: initial;
|
|
127
145
|
}
|
|
128
146
|
|
|
129
147
|
/* Transparency is the whole aesthetic, so the honest degradation is an opaque
|
|
130
|
-
surface rather than a softer blur.
|
|
131
|
-
|
|
148
|
+
surface rather than a softer blur.
|
|
149
|
+
|
|
150
|
+
Forced colours take the same branch. They repaint a background in `Canvas`
|
|
151
|
+
but keep its alpha -- measured in Chromium -- so the translucent ground
|
|
152
|
+
stayed translucent over whatever was behind it, and a liquid card's text
|
|
153
|
+
sat at about 2.5:1 over a busy page. An opaque ground is `Canvas` whole. */
|
|
154
|
+
@media (prefers-reduced-transparency: reduce), (forced-colors: active), (prefers-contrast: more) {
|
|
132
155
|
.glass {
|
|
133
156
|
--ui-backdrop: none;
|
|
134
157
|
--ui-surface-ground: var(--color-background);
|
|
135
158
|
}
|
|
136
159
|
}
|
|
137
160
|
|
|
138
|
-
|
|
161
|
+
/* More contrast also takes the ground whole, above, and then the white
|
|
162
|
+
hairline has nothing to be seen against: 1.03:1 on an opaque light page.
|
|
163
|
+
The line becomes the theme's control grey, above 4:1 on both grounds.
|
|
164
|
+
Only under this preference: reduced transparency asks for no stronger
|
|
165
|
+
line. See docs/accessibility.md. */
|
|
166
|
+
@media (prefers-contrast: more) {
|
|
139
167
|
.glass {
|
|
140
|
-
--ui-
|
|
168
|
+
--ui-ink: var(--color-control-border);
|
|
141
169
|
}
|
|
142
170
|
}
|
|
143
171
|
|
|
@@ -209,10 +237,9 @@
|
|
|
209
237
|
same element, or on a surface inside a glass region.
|
|
210
238
|
|
|
211
239
|
The backdrop is liquid's lighter blur, for whatever frosts under glass and
|
|
212
|
-
takes no layers below: a bare `<table>` under `/native
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
blurred behind it. A surface that does take the layers clears its own. */
|
|
240
|
+
takes no layers below: a bare `<table>` under `/native`. With the backdrop
|
|
241
|
+
cleared here it kept the clearer ground with nothing blurred behind it. A
|
|
242
|
+
host of the layers clears its own. */
|
|
216
243
|
.glass.glass-liquid:not(.glass-solo),
|
|
217
244
|
.glass .glass-liquid:not(.glass-solo) {
|
|
218
245
|
--ui-ink: light-dark(rgb(255 255 255 / 0.45), rgb(255 255 255 / 0.16));
|
|
@@ -221,7 +248,7 @@
|
|
|
221
248
|
--ui-backdrop: var(--_glass-liquid-blur);
|
|
222
249
|
}
|
|
223
250
|
|
|
224
|
-
@media (prefers-reduced-transparency: reduce) {
|
|
251
|
+
@media (prefers-reduced-transparency: reduce), (forced-colors: active), (prefers-contrast: more) {
|
|
225
252
|
.glass.glass-liquid:not(.glass-solo),
|
|
226
253
|
.glass .glass-liquid:not(.glass-solo) {
|
|
227
254
|
--ui-surface-ground: var(--color-background);
|
|
@@ -234,14 +261,27 @@
|
|
|
234
261
|
}
|
|
235
262
|
}
|
|
236
263
|
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
264
|
+
@media (prefers-contrast: more) {
|
|
265
|
+
.glass.glass-liquid:not(.glass-solo),
|
|
266
|
+
.glass .glass-liquid:not(.glass-solo) {
|
|
267
|
+
--ui-ink: var(--color-control-border);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
/* The layers: a treatment no token reaches. Two pseudo-elements behind the
|
|
272
|
+
content, the blur beneath and the lens with the rim and sheen above it.
|
|
273
|
+
`isolation` keeps them above the element's own plate, which they then blur
|
|
274
|
+
with the page; `position` anchors them, and a component that positions
|
|
275
|
+
itself -- the tooltip bubble -- keeps its own. Both slots are spent, so a
|
|
276
|
+
host carries no `::before` or `::after` of the consumer's; the fields
|
|
277
|
+
cannot host one.
|
|
278
|
+
|
|
279
|
+
Surfaces draw them in `surface` itself, from the flag and the values
|
|
280
|
+
below, so every element that applies it takes them: the package's
|
|
281
|
+
surfaces and a consumer's `@apply surface` alike. A selector list here
|
|
282
|
+
reached only the classes it named. The list below is for the two hosts
|
|
283
|
+
that are not surfaces, and the registry records it: a default or `.soft`
|
|
284
|
+
table, which frosts under glass, and a liquid button.
|
|
245
285
|
|
|
246
286
|
The blur is on the layer and not on the host: an element with a backdrop
|
|
247
287
|
filter of its own is a backdrop root, and a layer inside one sees only that
|
|
@@ -249,8 +289,18 @@
|
|
|
249
289
|
|
|
250
290
|
Surfaces take the layers from a liquid scope. A region of another
|
|
251
291
|
aesthetic nested inside, or of plain glass, keeps its own material and
|
|
252
|
-
takes none
|
|
253
|
-
|
|
292
|
+
takes none, and a liquid region nested again inside that takes them back:
|
|
293
|
+
the nearest region decides. A `:not(.glass-liquid :is(...) *)` exclusion
|
|
294
|
+
cannot tell those two apart, since the re-entered surface also sits below
|
|
295
|
+
the other aesthetic, so each region writes a private flag instead and
|
|
296
|
+
inheritance hands a surface the nearest one's -- the way neobrutalism
|
|
297
|
+
rests its alert. The flag is on only for a liquid region in a glass
|
|
298
|
+
scope, so it alone says whether a surface takes the layers. Off, it
|
|
299
|
+
withholds the layers, the anchor, and the isolation, and a table or a
|
|
300
|
+
button gets back the backdrop the nearest region set. The list below
|
|
301
|
+
names the other aesthetics, and `registry.test.ts` fails when one is
|
|
302
|
+
missing. A region's own element is not a host: it declares the flag's
|
|
303
|
+
backdrop from its own, which a host would then declare from the flag.
|
|
254
304
|
|
|
255
305
|
A button takes them only when it carries `.glass-liquid` itself, in a
|
|
256
306
|
glass scope. Controls stay solid under a liquid region, for the reason
|
|
@@ -261,24 +311,27 @@
|
|
|
261
311
|
plate under the rim, and `.soft` and `.ghost` are the clear panes. A
|
|
262
312
|
disabled one is dimmed by `opacity`, which makes it a backdrop root, so it
|
|
263
313
|
keeps the ground and the rim and bends nothing. */
|
|
314
|
+
.glass-liquid:not(.glass-solo):is(.glass, .glass *) {
|
|
315
|
+
/* A space toggle: empty is on, and `initial` makes every declaration
|
|
316
|
+
reading it invalid at computed-value time, which is off. */
|
|
317
|
+
--_glass-liquid-on: ;
|
|
318
|
+
--_glass-liquid-backdrop: initial;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
.glass:not(.glass-liquid),
|
|
322
|
+
:is(.neobrutalism, .pixel, .chunky-tile, .cyber, .sketch) {
|
|
323
|
+
--_glass-liquid-on: initial;
|
|
324
|
+
--_glass-liquid-backdrop: var(--ui-backdrop);
|
|
325
|
+
}
|
|
326
|
+
|
|
264
327
|
:is(.glass-liquid:not(.glass-solo), .glass-liquid:not(.glass-solo) *):is(.glass, .glass *):is(
|
|
265
|
-
.card,
|
|
266
|
-
.panel,
|
|
267
|
-
.alert,
|
|
268
|
-
.tooltip-bubble,
|
|
269
|
-
.surface,
|
|
270
328
|
.data-table:not(.solid, .ghost)
|
|
271
|
-
):not(
|
|
272
|
-
.glass-liquid :is(.neobrutalism, .pixel, .chunky-tile, .cyber, .sketch),
|
|
273
|
-
.glass-liquid :is(.neobrutalism, .pixel, .chunky-tile, .cyber, .sketch) *,
|
|
274
|
-
.glass-liquid .glass:not(.glass-liquid),
|
|
275
|
-
.glass-liquid .glass:not(.glass-liquid) *
|
|
276
|
-
),
|
|
329
|
+
):not(.glass:not(.glass-liquid), :is(.neobrutalism, .pixel, .chunky-tile, .cyber, .sketch)),
|
|
277
330
|
.btn.glass-liquid:is(.glass, .glass *) {
|
|
278
|
-
--ui-backdrop: none;
|
|
331
|
+
--ui-backdrop: var(--_glass-liquid-backdrop, none);
|
|
279
332
|
|
|
280
|
-
position: relative;
|
|
281
|
-
isolation: isolate;
|
|
333
|
+
position: var(--_glass-liquid-on) relative;
|
|
334
|
+
isolation: var(--_glass-liquid-on) isolate;
|
|
282
335
|
|
|
283
336
|
&::before,
|
|
284
337
|
&::after {
|
|
@@ -287,7 +340,7 @@
|
|
|
287
340
|
z-index: -1;
|
|
288
341
|
border-radius: inherit;
|
|
289
342
|
corner-shape: inherit;
|
|
290
|
-
content: "";
|
|
343
|
+
content: var(--_glass-liquid-on) "";
|
|
291
344
|
pointer-events: none;
|
|
292
345
|
}
|
|
293
346
|
|
|
@@ -392,6 +445,11 @@
|
|
|
392
445
|
does, rather than to the fill. */
|
|
393
446
|
--_solo-edge: color-mix(in oklab, var(--_solo-ink) var(--ui-border, 100%), transparent);
|
|
394
447
|
|
|
448
|
+
/* Printed as drawn, as `box` is: a browser leaves backgrounds off paper
|
|
449
|
+
and greys a contrast label, so a solid element printed its label on
|
|
450
|
+
no plate. Inherited, so what it holds keeps its paint too. */
|
|
451
|
+
print-color-adjust: exact;
|
|
452
|
+
|
|
395
453
|
background-color: color-mix(in oklab, var(--_solo-color) var(--_solo-capped), var(--_solo-ground));
|
|
396
454
|
border: 1px solid var(--_solo-edge);
|
|
397
455
|
/* The surface corner: the element this exists for is a pane. */
|
|
@@ -438,7 +496,8 @@
|
|
|
438
496
|
color: var(--_solo-fg);
|
|
439
497
|
}
|
|
440
498
|
|
|
441
|
-
|
|
499
|
+
/* Forced colours with it, for the reason the aesthetic class gives. */
|
|
500
|
+
@media (prefers-reduced-transparency: reduce), (forced-colors: active), (prefers-contrast: more) {
|
|
442
501
|
.glass-solo {
|
|
443
502
|
--_solo-ground: var(--color-background, light-dark(oklch(98.5% 0 0), oklch(14.5% 0 0)));
|
|
444
503
|
|
|
@@ -447,6 +506,13 @@
|
|
|
447
506
|
}
|
|
448
507
|
}
|
|
449
508
|
|
|
509
|
+
/* The line on an opaque ground, as the aesthetic class draws it. */
|
|
510
|
+
@media (prefers-contrast: more) {
|
|
511
|
+
.glass-solo {
|
|
512
|
+
--_solo-ink: var(--_solo-intent-border, var(--color-control-border, oklch(55.6% 0 0)));
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
|
|
450
516
|
/* With `.glass-liquid`, the liquid pane: its corner and ground, and the same two
|
|
451
517
|
layers behind the element's content. The element's own blur goes, for the
|
|
452
518
|
backdrop-root reason the modifier gives. Both pseudo-elements are spent, so a
|
|
@@ -498,8 +564,16 @@
|
|
|
498
564
|
}
|
|
499
565
|
}
|
|
500
566
|
|
|
501
|
-
@media (prefers-reduced-transparency: reduce) {
|
|
567
|
+
@media (prefers-reduced-transparency: reduce), (forced-colors: active), (prefers-contrast: more) {
|
|
502
568
|
.glass-solo.glass-liquid {
|
|
503
569
|
--_solo-ground: var(--color-background, light-dark(oklch(98.5% 0 0), oklch(14.5% 0 0)));
|
|
504
570
|
}
|
|
505
571
|
}
|
|
572
|
+
|
|
573
|
+
/* After the liquid pane's own ink, which it would otherwise override by source
|
|
574
|
+
order at the same specificity. */
|
|
575
|
+
@media (prefers-contrast: more) {
|
|
576
|
+
.glass-solo.glass-liquid {
|
|
577
|
+
--_solo-ink: var(--_solo-intent-border, var(--color-control-border, oklch(55.6% 0 0)));
|
|
578
|
+
}
|
|
579
|
+
}
|
|
@@ -108,6 +108,12 @@
|
|
|
108
108
|
--ui-label-tracking: initial;
|
|
109
109
|
--ui-label-case: initial;
|
|
110
110
|
--ui-label-shadow: initial;
|
|
111
|
+
|
|
112
|
+
/* No face of its own, so the theme's, named rather than inherited: a
|
|
113
|
+
neobrutalist region nested inside pixel, cyber, sketch, or chunky tile
|
|
114
|
+
otherwise took their face. `--font-default` is the token the reset
|
|
115
|
+
applies to the page, as chunky tile reads it. */
|
|
116
|
+
font-family: var(--font-default, ui-sans-serif, system-ui, sans-serif);
|
|
111
117
|
}
|
|
112
118
|
}
|
|
113
119
|
|
|
@@ -138,7 +144,9 @@
|
|
|
138
144
|
--_neo-alert-elevation: initial;
|
|
139
145
|
}
|
|
140
146
|
|
|
141
|
-
|
|
147
|
+
/* The class on the alert itself counts as its region, as it does for every
|
|
148
|
+
token: `.card.neobrutalism` takes its slab, and the alert rested flat. */
|
|
149
|
+
:is(.neobrutalism .alert, .alert.neobrutalism) {
|
|
142
150
|
--_d-elevation: var(--_neo-alert-elevation, 0);
|
|
143
151
|
}
|
|
144
152
|
}
|
|
@@ -179,14 +187,14 @@
|
|
|
179
187
|
and `.floating` doubles it, and the press travels the same distance. */
|
|
180
188
|
--_solo-depth: calc(var(--_neo-offset) * var(--ui-elevation, 1));
|
|
181
189
|
|
|
190
|
+
/* Printed as drawn; see `.glass-solo`. */
|
|
191
|
+
print-color-adjust: exact;
|
|
192
|
+
|
|
182
193
|
border: 2px solid var(--_solo-edge);
|
|
183
194
|
border-radius: 0;
|
|
184
195
|
box-shadow:
|
|
185
196
|
var(--_solo-depth) var(--_solo-depth) 0 0 var(--_solo-ink),
|
|
186
197
|
inset 0 0 0 100vmax var(--_solo-fill);
|
|
187
|
-
transition:
|
|
188
|
-
box-shadow var(--motion-duration-normal, 200ms) var(--motion-ease, cubic-bezier(0.2, 0, 0, 1)),
|
|
189
|
-
transform var(--motion-duration-normal, 200ms) var(--motion-ease, cubic-bezier(0.2, 0, 0, 1));
|
|
190
198
|
}
|
|
191
199
|
|
|
192
200
|
/* An intent class on the element colours it, as on a component. Named rather
|
|
@@ -220,7 +228,33 @@
|
|
|
220
228
|
|
|
221
229
|
/* The press, only on something pressed: an action, not disabled. A solo
|
|
222
230
|
container -- a toast clicked to dismiss -- stays put, the way only `.btn` and
|
|
223
|
-
an opted-in card press under the aesthetic class.
|
|
231
|
+
an opted-in card press under the aesthetic class.
|
|
232
|
+
|
|
233
|
+
Only an action takes the press's transition. `transition` is one list, so
|
|
234
|
+
writing it on every solo element replaced a container's own -- a toast's
|
|
235
|
+
fade and height stopped animating. The travel is the independent
|
|
236
|
+
`translate`, so the element's own `transform` stays its own. */
|
|
237
|
+
.neobrutalism-solo:is(
|
|
238
|
+
button,
|
|
239
|
+
a[href],
|
|
240
|
+
[role="button"],
|
|
241
|
+
summary,
|
|
242
|
+
input[type="button"],
|
|
243
|
+
input[type="submit"],
|
|
244
|
+
input[type="reset"]
|
|
245
|
+
) {
|
|
246
|
+
transition:
|
|
247
|
+
box-shadow var(--motion-duration-normal, 200ms) var(--motion-ease, cubic-bezier(0.2, 0, 0, 1)),
|
|
248
|
+
translate var(--motion-duration-normal, 200ms) var(--motion-ease, cubic-bezier(0.2, 0, 0, 1));
|
|
249
|
+
|
|
250
|
+
/* Reduced motion keeps the press and drops its motion: the element lands in
|
|
251
|
+
its slab at once. The near-zero duration `box` uses, so a `transitionend`
|
|
252
|
+
still fires. */
|
|
253
|
+
@media (prefers-reduced-motion: reduce) {
|
|
254
|
+
transition-duration: 0.01ms;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
|
|
224
258
|
.neobrutalism-solo:is(
|
|
225
259
|
button,
|
|
226
260
|
a[href],
|
|
@@ -229,23 +263,9 @@
|
|
|
229
263
|
input[type="button"],
|
|
230
264
|
input[type="submit"],
|
|
231
265
|
input[type="reset"]
|
|
232
|
-
):active:not(:disabled, [aria-disabled="true"]) {
|
|
266
|
+
):active:not(:disabled, .disabled, [aria-disabled="true"], [data-disabled]) {
|
|
233
267
|
box-shadow:
|
|
234
268
|
0 0 0 0 var(--_solo-ink),
|
|
235
269
|
inset 0 0 0 100vmax var(--_solo-fill);
|
|
236
|
-
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
@media (prefers-reduced-motion: reduce) {
|
|
240
|
-
.neobrutalism-solo:is(
|
|
241
|
-
button,
|
|
242
|
-
a[href],
|
|
243
|
-
[role="button"],
|
|
244
|
-
summary,
|
|
245
|
-
input[type="button"],
|
|
246
|
-
input[type="submit"],
|
|
247
|
-
input[type="reset"]
|
|
248
|
-
):active:not(:disabled, [aria-disabled="true"]) {
|
|
249
|
-
transform: none;
|
|
250
|
-
}
|
|
270
|
+
translate: var(--_solo-depth) var(--_solo-depth);
|
|
251
271
|
}
|
|
@@ -182,6 +182,9 @@
|
|
|
182
182
|
|
|
183
183
|
/* The clip removes a border at the straight sides, so the ring draws the
|
|
184
184
|
edge and the element's own border goes. */
|
|
185
|
+
/* Printed as drawn; see `.glass-solo`. */
|
|
186
|
+
print-color-adjust: exact;
|
|
187
|
+
|
|
185
188
|
border: 0;
|
|
186
189
|
border-radius: 0;
|
|
187
190
|
box-shadow:
|