@phantompixeldev/retrocss 3.0.1 → 3.1.1
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/MIGRATION.md +53 -0
- package/README.md +51 -9
- package/dist/retro.css +222 -23
- package/dist/retro.css.map +1 -1
- package/dist/retro.js +210 -50
- package/dist/retro.min.css +1 -1
- package/dist/retro.min.css.map +1 -1
- package/dist/retro.min.js +1 -1
- package/package.json +2 -1
package/MIGRATION.md
CHANGED
|
@@ -1,3 +1,56 @@
|
|
|
1
|
+
# Migrating to RetroCSS 3.x
|
|
2
|
+
|
|
3
|
+
## 3.1 — keyboard access, OS dark mode, and the rest of the radius token
|
|
4
|
+
|
|
5
|
+
Additive. Nothing was renamed and no class removed; existing markup keeps
|
|
6
|
+
working, because the fixes are applied by the JavaScript at init time rather
|
|
7
|
+
than by requiring new HTML. Three things are worth knowing:
|
|
8
|
+
|
|
9
|
+
**Dark mode now follows the operating system.** Previously the default was a
|
|
10
|
+
hardcoded `light`, so a visitor whose system was set to dark got a light page
|
|
11
|
+
until they found the toggle — on a framework that ships a full dark theme. Now
|
|
12
|
+
an explicit choice (anything stored under `retro-theme`) still wins; only when
|
|
13
|
+
there is none does `prefers-color-scheme` decide. To keep the old behaviour,
|
|
14
|
+
store a theme yourself before `RetroCSS.init()`:
|
|
15
|
+
|
|
16
|
+
```js
|
|
17
|
+
localStorage.setItem('retro-theme', 'light');
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
The palette itself is applied in CSS, so there is **no theme flash**: the dark
|
|
21
|
+
tokens are emitted both for `[data-theme="dark"]` and, under
|
|
22
|
+
`@media (prefers-color-scheme: dark)`, for `:root:not([data-theme="light"])`.
|
|
23
|
+
A dark-OS visitor is painted dark before a line of JavaScript runs.
|
|
24
|
+
|
|
25
|
+
Two consequences:
|
|
26
|
+
|
|
27
|
+
- `applyTheme('light')` now writes `data-theme="light"` instead of *removing*
|
|
28
|
+
the attribute. It has to: on a dark OS the attribute is the only thing that
|
|
29
|
+
can hold a deliberate light choice in place. If you keyed any CSS off
|
|
30
|
+
`:root:not([data-theme])` to mean "light", match `[data-theme="light"]`
|
|
31
|
+
instead.
|
|
32
|
+
- To also cover a *stored* choice that differs from the OS — the one case CSS
|
|
33
|
+
cannot see — add the inline `<head>` snippet documented in the README. Every
|
|
34
|
+
page in this repo now ships it.
|
|
35
|
+
|
|
36
|
+
**`--retro-border-radius` now reaches the whole framework.** 3.0.1 wired 31
|
|
37
|
+
components to the token; the core chrome — card, button, badge, nav, progress,
|
|
38
|
+
alert, input, checkbox, accordion — still hardcoded `0`, so setting the token
|
|
39
|
+
rounded dropdowns but left buttons square. All of it follows the token now. The
|
|
40
|
+
default is unchanged (the token is `0`); but if you had already set
|
|
41
|
+
`--retro-border-radius`, more of the framework will round than before.
|
|
42
|
+
|
|
43
|
+
**Interactive components gained roles and keyboard handling.** Rating stars are
|
|
44
|
+
a `radiogroup` of `radio`s, carousel dots are `button`s with `aria-current`,
|
|
45
|
+
tooltips appear on focus and carry `aria-describedby`, tag removes are
|
|
46
|
+
`button`s, and tabs use a roving tabindex. If you styled any of these by tag
|
|
47
|
+
name (`span.retro-tag-remove`, `div.retro-carousel-dot`), switch to the class —
|
|
48
|
+
newly generated ones are `<button>`. If you hid a file input with
|
|
49
|
+
`.retro-hidden`, switch to `.retro-sr-only`: `display: none` removes it from the
|
|
50
|
+
tab order, leaving no keyboard route to the file picker.
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
1
54
|
# Migrating to RetroCSS 3.0
|
|
2
55
|
|
|
3
56
|
3.0 is a visual release. Nothing was renamed and no class was removed, but two
|
package/README.md
CHANGED
|
@@ -183,9 +183,32 @@ sidebar, tabs, pagination and the file uploader:
|
|
|
183
183
|
:root { --retro-border-radius: 4px; }
|
|
184
184
|
```
|
|
185
185
|
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
186
|
+
`.retro-rounded` / `-lg` / `-full` still round one element at a time. Two
|
|
187
|
+
components keep their shape on purpose: `.retro-nav-pills` and `.retro-tag`.
|
|
188
|
+
Tables stay square because `border-collapse: collapse` — what merges their cell
|
|
189
|
+
borders into a single hairline — makes every engine ignore `border-radius`.
|
|
190
|
+
|
|
191
|
+
Dark mode follows the operating system when the visitor has expressed no
|
|
192
|
+
preference of their own. The moment they use a `.retro-theme-toggle`, that
|
|
193
|
+
choice is stored and outranks the OS from then on.
|
|
194
|
+
|
|
195
|
+
This is done in CSS, not script — the dark palette is emitted both for
|
|
196
|
+
`[data-theme="dark"]` and under `@media (prefers-color-scheme: dark)` for
|
|
197
|
+
`:root:not([data-theme="light"])` — so a dark-OS visitor gets the right colours
|
|
198
|
+
on the very first paint, with no flash, even before the bundle loads.
|
|
199
|
+
|
|
200
|
+
The one case CSS cannot see is a *stored* choice that differs from the OS.
|
|
201
|
+
Add this to your `<head>` to cover it. It must be inline: an external or
|
|
202
|
+
`defer`red script runs after the first paint, which is the whole problem.
|
|
203
|
+
|
|
204
|
+
```html
|
|
205
|
+
<script>
|
|
206
|
+
try {
|
|
207
|
+
var retroTheme = localStorage.getItem('retro-theme');
|
|
208
|
+
if (retroTheme) document.documentElement.setAttribute('data-theme', retroTheme);
|
|
209
|
+
} catch (e) {}
|
|
210
|
+
</script>
|
|
211
|
+
```
|
|
189
212
|
|
|
190
213
|
> **Upgrading?** See [MIGRATION.md](MIGRATION.md). No class has ever been
|
|
191
214
|
> renamed, but 3.0 raises the body text to 16px and drops the `!important` from
|
|
@@ -229,8 +252,13 @@ That proves the *tokens* are sound. `npm run check:pages` proves the *pages*
|
|
|
229
252
|
are: it renders every page in the repo in real Chromium, in both themes, at
|
|
230
253
|
1200/980/760/420/360px, and fails on a console error, horizontal overflow, a
|
|
231
254
|
missing or duplicated `<h1>`, any rendered text below AA against the surface
|
|
232
|
-
actually painted behind it, or an input glyph off its field's centre line.
|
|
233
|
-
|
|
255
|
+
actually painted behind it, or an input glyph off its field's centre line.
|
|
256
|
+
|
|
257
|
+
Neither can see whether a control can be *reached*, so `npm run check:keyboard`
|
|
258
|
+
asserts that too: every control the framework drives from script is in the tab
|
|
259
|
+
order and carries an accessible name, roving-tabindex groups expose exactly one
|
|
260
|
+
tab stop, and every tooltip appears on focus and not only on hover. All four
|
|
261
|
+
gates run in CI on every push.
|
|
234
262
|
|
|
235
263
|
Beyond colour:
|
|
236
264
|
|
|
@@ -248,8 +276,19 @@ Beyond colour:
|
|
|
248
276
|
neutralised, with the looping text effects switched off outright.
|
|
249
277
|
- **Sortable tables are operable.** `.retro-table-sortable` headers are
|
|
250
278
|
focusable, sort on Enter and Space as well as click, and carry `aria-sort`.
|
|
279
|
+
Add `data-sort="none"` to a column that should not sort.
|
|
280
|
+
- **Rating stars are a radiogroup.** Tab reaches the group, Arrow keys move and
|
|
281
|
+
set the value, Home/End jump to the ends, and each star reports `aria-checked`.
|
|
282
|
+
- **Carousels are keyboard-driven.** Dots are real buttons with labels and
|
|
283
|
+
`aria-current`; Left/Right arrows move between slides once focus is inside.
|
|
284
|
+
- **Tooltips appear on focus,** not only on hover, are dismissible with Escape,
|
|
285
|
+
and are wired to their trigger with `aria-describedby` (WCAG 1.4.13).
|
|
286
|
+
- **Tabs use a roving tabindex.** Tab steps over the tablist into the panel;
|
|
287
|
+
Arrow keys, Home and End move between tabs.
|
|
251
288
|
- **`.retro-sr-only`** labels icon-only controls; `.retro-sr-only-focusable`
|
|
252
|
-
gives you a skip link.
|
|
289
|
+
gives you a skip link. Use it — not `.retro-hidden` — to hide a real form
|
|
290
|
+
control you still want reachable, such as a styled `<input type="file">`:
|
|
291
|
+
`display: none` takes it out of the tab order entirely.
|
|
253
292
|
|
|
254
293
|
```html
|
|
255
294
|
<button class="retro-btn">💾<span class="retro-sr-only">Save</span></button>
|
|
@@ -289,13 +328,16 @@ npm run watch
|
|
|
289
328
|
Run the gates:
|
|
290
329
|
|
|
291
330
|
```bash
|
|
292
|
-
npm run check:a11y && npm run check:radius && npm run check:pages
|
|
331
|
+
npm run check:a11y && npm run check:radius && npm run check:pages && npm run check:keyboard
|
|
293
332
|
```
|
|
294
333
|
|
|
295
334
|
`check:a11y` gates the tokens (every `var(--retro-*)` resolves, every
|
|
296
335
|
text/surface pair clears WCAG AA), `check:radius` gates the shape (nothing
|
|
297
|
-
hardcodes a corner behind `--retro-border-radius`),
|
|
298
|
-
rendered result across 8 pages × 2 themes × 5 widths
|
|
336
|
+
hardcodes a corner behind `--retro-border-radius`), `check:pages` gates the
|
|
337
|
+
rendered result across 8 pages × 2 themes × 5 widths — including that the first
|
|
338
|
+
paint is already the right theme with the bundle blocked, so a theme flash fails
|
|
339
|
+
the build — and `check:keyboard` gates operability: that every control can
|
|
340
|
+
actually be reached and used.
|
|
299
341
|
|
|
300
342
|
`check:pages` needs a browser once: `npx playwright install chromium`.
|
|
301
343
|
|
package/dist/retro.css
CHANGED
|
@@ -614,6 +614,185 @@
|
|
|
614
614
|
--retro-syntax-attribute: #c8a2e0;
|
|
615
615
|
}
|
|
616
616
|
|
|
617
|
+
@media (prefers-color-scheme: dark) {
|
|
618
|
+
:root:not([data-theme=light]) {
|
|
619
|
+
color-scheme: dark;
|
|
620
|
+
--retro-body-bg: #2b2b2b;
|
|
621
|
+
--retro-bg: #3a3a3a;
|
|
622
|
+
--retro-primary: #4a90e2;
|
|
623
|
+
--retro-primary-rgb: 74, 144, 226;
|
|
624
|
+
--retro-light: #454545;
|
|
625
|
+
--retro-white: #3a3a3a;
|
|
626
|
+
--retro-black: #fff;
|
|
627
|
+
--retro-white-rgb: 58, 58, 58;
|
|
628
|
+
--retro-black-rgb: 255, 255, 255;
|
|
629
|
+
--retro-light-rgb: 69, 69, 69;
|
|
630
|
+
--retro-border-light: #909090;
|
|
631
|
+
--retro-border-medium: #262626;
|
|
632
|
+
--retro-border-dark: #151515;
|
|
633
|
+
--retro-success: #2ecc71;
|
|
634
|
+
--retro-success-rgb: 46, 204, 113;
|
|
635
|
+
--retro-warning: #f39c12;
|
|
636
|
+
--retro-warning-rgb: 243, 156, 18;
|
|
637
|
+
--retro-danger: #e74c3c;
|
|
638
|
+
--retro-danger-rgb: 231, 76, 60;
|
|
639
|
+
--retro-info: #3498db;
|
|
640
|
+
--retro-info-rgb: 52, 152, 219;
|
|
641
|
+
--retro-teal: #1abc9c;
|
|
642
|
+
--retro-teal-rgb: 26, 188, 156;
|
|
643
|
+
--retro-tan: #d4b483;
|
|
644
|
+
--retro-tan-rgb: 212, 180, 131;
|
|
645
|
+
--retro-pink: #e84393;
|
|
646
|
+
--retro-pink-rgb: 232, 67, 147;
|
|
647
|
+
--retro-lime: #00b894;
|
|
648
|
+
--retro-lime-rgb: 0, 184, 148;
|
|
649
|
+
--retro-cyan: #00cec9;
|
|
650
|
+
--retro-cyan-rgb: 0, 206, 201;
|
|
651
|
+
--retro-orange: #e67e22;
|
|
652
|
+
--retro-orange-rgb: 230, 126, 34;
|
|
653
|
+
--retro-brown: #a67c52;
|
|
654
|
+
--retro-brown-rgb: 166, 124, 82;
|
|
655
|
+
--retro-violet: #9b59b6;
|
|
656
|
+
--retro-violet-rgb: 155, 89, 182;
|
|
657
|
+
--retro-gray: #95a5a6;
|
|
658
|
+
--retro-gray-rgb: 149, 165, 166;
|
|
659
|
+
--retro-maroon: #c0392b;
|
|
660
|
+
--retro-maroon-rgb: 192, 57, 43;
|
|
661
|
+
--retro-gold: #f1c40f;
|
|
662
|
+
--retro-gold-rgb: 241, 196, 15;
|
|
663
|
+
--retro-navy: #2c3e50;
|
|
664
|
+
--retro-navy-rgb: 44, 62, 80;
|
|
665
|
+
--retro-olive: #7f8c8d;
|
|
666
|
+
--retro-olive-rgb: 127, 140, 141;
|
|
667
|
+
--retro-silver: #bdc3c7;
|
|
668
|
+
--retro-silver-rgb: 189, 195, 199;
|
|
669
|
+
--retro-box-shadow-subtle: 0 1px 2px rgba(0, 0, 0, 0.3);
|
|
670
|
+
--retro-box-shadow-medium: 0 2px 4px rgba(0, 0, 0, 0.4);
|
|
671
|
+
--retro-card-bg: #3a3a3a;
|
|
672
|
+
--retro-card-header-bg: #1a237e;
|
|
673
|
+
--retro-card-header-text: #fff;
|
|
674
|
+
--retro-card-content-bg: #333333;
|
|
675
|
+
--retro-card-content-text: #f2f2f2;
|
|
676
|
+
--retro-card-footer-bg: #3a3a3a;
|
|
677
|
+
--retro-card-footer-text: #f2f2f2;
|
|
678
|
+
--retro-modal-bg: #3a3a3a;
|
|
679
|
+
--retro-modal-header-bg: #1a237e;
|
|
680
|
+
--retro-modal-header-text: #fff;
|
|
681
|
+
--retro-table-bg: #333333;
|
|
682
|
+
--retro-table-header-bg: #3a3a3a;
|
|
683
|
+
--retro-table-header-text: #f2f2f2;
|
|
684
|
+
--retro-table-striped-bg: #3f3f3f;
|
|
685
|
+
--retro-input-bg: #2e2e2e;
|
|
686
|
+
--retro-input-text: #f2f2f2;
|
|
687
|
+
--retro-sidebar-bg: #333333;
|
|
688
|
+
--retro-sidebar-text: #f2f2f2;
|
|
689
|
+
--retro-dropdown-bg: #3a3a3a;
|
|
690
|
+
--retro-dropdown-text: #f2f2f2;
|
|
691
|
+
--retro-list-bg: #333333;
|
|
692
|
+
--retro-list-text: #f2f2f2;
|
|
693
|
+
--retro-progress-bg: #2e2e2e;
|
|
694
|
+
--retro-progress-bar-bg: #4a90e2;
|
|
695
|
+
--retro-alert-bg: #3a3a3a;
|
|
696
|
+
--retro-alert-text: #f2f2f2;
|
|
697
|
+
--retro-badge-bg: #4a4a4a;
|
|
698
|
+
--retro-badge-text: #fff;
|
|
699
|
+
--retro-toast-bg: #3a3a3a;
|
|
700
|
+
--retro-toast-text: #f2f2f2;
|
|
701
|
+
--retro-primary-text: #8fbaed;
|
|
702
|
+
--retro-success-text: #31d074;
|
|
703
|
+
--retro-danger-text: #f3a29a;
|
|
704
|
+
--retro-warning-text: #f4a72b;
|
|
705
|
+
--retro-info-text: #7ebee8;
|
|
706
|
+
--retro-teal-text: #1cceab;
|
|
707
|
+
--retro-tan-text: #d4b483;
|
|
708
|
+
--retro-pink-text: #f39dc6;
|
|
709
|
+
--retro-lime-text: #00cfa6;
|
|
710
|
+
--retro-cyan-text: #00cec9;
|
|
711
|
+
--retro-orange-text: #eea869;
|
|
712
|
+
--retro-brown-text: #ccb399;
|
|
713
|
+
--retro-violet-text: #ccabda;
|
|
714
|
+
--retro-gray-text: #adb9ba;
|
|
715
|
+
--retro-maroon-text: #e9a69f;
|
|
716
|
+
--retro-gold-text: #f1c40f;
|
|
717
|
+
--retro-navy-text: #a5b9cd; /* fill is 1.41:1 as text -- worst case in the framework */
|
|
718
|
+
--retro-olive-text: #b1b9b9;
|
|
719
|
+
--retro-silver-text: #bdc3c7;
|
|
720
|
+
--retro-primary-fg: #000000;
|
|
721
|
+
--retro-success-fg: #000000;
|
|
722
|
+
--retro-danger-fg: #000000;
|
|
723
|
+
--retro-warning-fg: #000000;
|
|
724
|
+
--retro-info-fg: #000000;
|
|
725
|
+
--retro-teal-fg: #000000;
|
|
726
|
+
--retro-tan-fg: #000000;
|
|
727
|
+
--retro-pink-fg: #000000;
|
|
728
|
+
--retro-lime-fg: #000000;
|
|
729
|
+
--retro-cyan-fg: #000000;
|
|
730
|
+
--retro-orange-fg: #000000;
|
|
731
|
+
--retro-brown-fg: #000000;
|
|
732
|
+
--retro-violet-fg: #ffffff;
|
|
733
|
+
--retro-gray-fg: #000000;
|
|
734
|
+
--retro-maroon-fg: #ffffff;
|
|
735
|
+
--retro-gold-fg: #000000;
|
|
736
|
+
--retro-navy-fg: #ffffff;
|
|
737
|
+
--retro-olive-fg: #000000;
|
|
738
|
+
--retro-silver-fg: #000000;
|
|
739
|
+
--retro-text: #f2f2f2;
|
|
740
|
+
--retro-text-muted: #b8b8b8;
|
|
741
|
+
--retro-text-inverse: #1a1a1a;
|
|
742
|
+
--retro-primary-hover: #76abe9;
|
|
743
|
+
--retro-primary-active: #2378db;
|
|
744
|
+
--retro-success-hover: #54d98c;
|
|
745
|
+
--retro-success-active: #25a25a;
|
|
746
|
+
--retro-danger-hover: #ed7669;
|
|
747
|
+
--retro-danger-active: #e32f1c;
|
|
748
|
+
--retro-warning-hover: #f5b043;
|
|
749
|
+
--retro-warning-active: #c87f0a;
|
|
750
|
+
--retro-info-hover: #5faee3;
|
|
751
|
+
--retro-info-active: #217dbb;
|
|
752
|
+
--retro-teal-hover: #28e1bd;
|
|
753
|
+
--retro-teal-active: #148f77;
|
|
754
|
+
--retro-tan-hover: #e1cba9;
|
|
755
|
+
--retro-tan-active: #c79d5d;
|
|
756
|
+
--retro-pink-hover: #ee70ad;
|
|
757
|
+
--retro-pink-active: #e21c7c;
|
|
758
|
+
--retro-lime-hover: #00ebbd;
|
|
759
|
+
--retro-lime-active: #008a6f;
|
|
760
|
+
--retro-cyan-hover: #02fff9;
|
|
761
|
+
--retro-cyan-active: #009b97;
|
|
762
|
+
--retro-orange-hover: #eb9950;
|
|
763
|
+
--retro-orange-active: #bf6516;
|
|
764
|
+
--retro-brown-hover: #b99672;
|
|
765
|
+
--retro-brown-active: #956f4a;
|
|
766
|
+
--retro-violet-hover: #9b59b6;
|
|
767
|
+
--retro-violet-active: #804399;
|
|
768
|
+
--retro-gray-hover: #b1bdbd;
|
|
769
|
+
--retro-gray-active: #798d8f;
|
|
770
|
+
--retro-maroon-hover: #d14233;
|
|
771
|
+
--retro-maroon-active: #962d22;
|
|
772
|
+
--retro-gold-hover: #f4d03f;
|
|
773
|
+
--retro-gold-active: #c29d0b;
|
|
774
|
+
--retro-navy-hover: #3e5771;
|
|
775
|
+
--retro-navy-active: #1a242f;
|
|
776
|
+
--retro-olive-hover: #9aa4a5;
|
|
777
|
+
--retro-olive-active: #6d7a7b;
|
|
778
|
+
--retro-silver-hover: #d9dcde;
|
|
779
|
+
--retro-silver-active: #a1aab0;
|
|
780
|
+
--retro-primary-dark: #2378db;
|
|
781
|
+
--retro-gray-100: #454545;
|
|
782
|
+
--retro-shadow-light: #909090;
|
|
783
|
+
--retro-syntax-keyword: #6ba9db;
|
|
784
|
+
--retro-syntax-string: #d0967e;
|
|
785
|
+
--retro-syntax-comment: #8cad6f;
|
|
786
|
+
--retro-syntax-function: #dcdcaa;
|
|
787
|
+
--retro-syntax-number: #b5cea8;
|
|
788
|
+
--retro-syntax-operator: #9cdcfe;
|
|
789
|
+
--retro-syntax-variable: #d4d4d4;
|
|
790
|
+
--retro-syntax-class: #4ec9b0;
|
|
791
|
+
--retro-syntax-property: #9cdcfe;
|
|
792
|
+
--retro-syntax-tag: #6ba9db;
|
|
793
|
+
--retro-syntax-attribute: #c8a2e0;
|
|
794
|
+
}
|
|
795
|
+
}
|
|
617
796
|
/* Layout Specific Variables */
|
|
618
797
|
/* Component Specific Variables */
|
|
619
798
|
/* RetroCSS - A Retro-Inspired CSS Framework */
|
|
@@ -922,7 +1101,7 @@ h1, h2, h3, h4, h5, h6 {
|
|
|
922
1101
|
font-weight: var(--retro-font-weight-bold);
|
|
923
1102
|
text-align: left;
|
|
924
1103
|
margin: var(--retro-spacing-lg) 0 var(--retro-spacing-sm);
|
|
925
|
-
border-radius:
|
|
1104
|
+
border-radius: var(--retro-border-radius);
|
|
926
1105
|
box-shadow: none;
|
|
927
1106
|
letter-spacing: 0;
|
|
928
1107
|
background: none;
|
|
@@ -1559,7 +1738,7 @@ h5, h6 {
|
|
|
1559
1738
|
user-select: none;
|
|
1560
1739
|
padding: var(--retro-spacing-xs) var(--retro-spacing-md);
|
|
1561
1740
|
border: var(--retro-border-width-thick) solid var(--retro-border-dark);
|
|
1562
|
-
border-radius:
|
|
1741
|
+
border-radius: var(--retro-border-radius);
|
|
1563
1742
|
background: var(--retro-light);
|
|
1564
1743
|
color: var(--retro-text);
|
|
1565
1744
|
box-shadow: inset 1px 1px 0 var(--retro-border-light), inset -1px -1px 0 var(--retro-border-dark), 1px 1px 0 var(--retro-border-medium);
|
|
@@ -1769,9 +1948,11 @@ h5, h6 {
|
|
|
1769
1948
|
box-shadow: inset 1px 1px 0 var(--retro-bg), inset -1px -1px 0 var(--retro-border-medium);
|
|
1770
1949
|
font-family: var(--retro-font);
|
|
1771
1950
|
margin-bottom: 24px;
|
|
1951
|
+
border-radius: var(--retro-border-radius);
|
|
1772
1952
|
position: relative;
|
|
1773
1953
|
}
|
|
1774
1954
|
.retro-card-header {
|
|
1955
|
+
border-radius: var(--retro-border-radius) var(--retro-border-radius) 0 0;
|
|
1775
1956
|
background: var(--retro-card-header-bg);
|
|
1776
1957
|
color: var(--retro-card-header-text);
|
|
1777
1958
|
}
|
|
@@ -1797,6 +1978,11 @@ h5, h6 {
|
|
|
1797
1978
|
}
|
|
1798
1979
|
.retro-card-content {
|
|
1799
1980
|
padding: 16px 16px;
|
|
1981
|
+
}
|
|
1982
|
+
.retro-card-content:last-child {
|
|
1983
|
+
border-radius: 0 0 var(--retro-border-radius) var(--retro-border-radius);
|
|
1984
|
+
}
|
|
1985
|
+
.retro-card-content {
|
|
1800
1986
|
background: var(--retro-card-content-bg);
|
|
1801
1987
|
border-top: 2px solid var(--retro-card-content-bg);
|
|
1802
1988
|
font-size: 1rem;
|
|
@@ -1811,6 +1997,7 @@ h5, h6 {
|
|
|
1811
1997
|
color: var(--retro-card-footer-text);
|
|
1812
1998
|
padding: 8px 16px;
|
|
1813
1999
|
font-size: 0.875rem;
|
|
2000
|
+
border-radius: 0 0 var(--retro-border-radius) var(--retro-border-radius);
|
|
1814
2001
|
text-align: left;
|
|
1815
2002
|
}
|
|
1816
2003
|
|
|
@@ -1866,7 +2053,7 @@ h5, h6 {
|
|
|
1866
2053
|
color: var(--retro-input-text);
|
|
1867
2054
|
font-family: var(--retro-font);
|
|
1868
2055
|
font-size: var(--retro-font-size);
|
|
1869
|
-
border-radius:
|
|
2056
|
+
border-radius: var(--retro-border-radius);
|
|
1870
2057
|
transition: none;
|
|
1871
2058
|
}
|
|
1872
2059
|
.retro-input:focus,
|
|
@@ -2077,7 +2264,7 @@ input[type=radio].retro-input {
|
|
|
2077
2264
|
}
|
|
2078
2265
|
|
|
2079
2266
|
input[type=checkbox].retro-input {
|
|
2080
|
-
border-radius:
|
|
2267
|
+
border-radius: var(--retro-border-radius);
|
|
2081
2268
|
}
|
|
2082
2269
|
|
|
2083
2270
|
input[type=checkbox].retro-input:checked::after {
|
|
@@ -2271,7 +2458,7 @@ input[type=radio].retro-input:focus-visible {
|
|
|
2271
2458
|
|
|
2272
2459
|
/* Checkbox specific styles */
|
|
2273
2460
|
.retro-checkbox {
|
|
2274
|
-
border-radius:
|
|
2461
|
+
border-radius: var(--retro-border-radius);
|
|
2275
2462
|
}
|
|
2276
2463
|
.retro-checkbox:checked {
|
|
2277
2464
|
background: var(--retro-white);
|
|
@@ -2476,7 +2663,7 @@ input[type=radio].retro-input:focus-visible {
|
|
|
2476
2663
|
border-bottom: 2px solid var(--retro-border-light);
|
|
2477
2664
|
border-left: 2px solid var(--retro-border-medium);
|
|
2478
2665
|
border-top: 2px solid var(--retro-border-medium);
|
|
2479
|
-
border-radius:
|
|
2666
|
+
border-radius: var(--retro-border-radius);
|
|
2480
2667
|
font-family: var(--retro-font-heading);
|
|
2481
2668
|
box-shadow: none;
|
|
2482
2669
|
margin-bottom: 1.2em;
|
|
@@ -2509,7 +2696,7 @@ input[type=radio].retro-input:focus-visible {
|
|
|
2509
2696
|
padding: 0.3em 1em 0.2em 1em;
|
|
2510
2697
|
font-size: var(--retro-font-size-sm);
|
|
2511
2698
|
font-family: inherit;
|
|
2512
|
-
border-radius:
|
|
2699
|
+
border-radius: var(--retro-border-radius);
|
|
2513
2700
|
box-shadow: none;
|
|
2514
2701
|
border-top: 2px solid rgba(var(--retro-black-rgb), 0.12);
|
|
2515
2702
|
background: var(--retro-light);
|
|
@@ -2934,12 +3121,14 @@ input[type=radio].retro-input:focus-visible {
|
|
|
2934
3121
|
transition: none;
|
|
2935
3122
|
text-align: left;
|
|
2936
3123
|
vertical-align: middle;
|
|
3124
|
+
border-radius: var(--retro-border-radius);
|
|
2937
3125
|
}
|
|
2938
3126
|
.retro-modal-header {
|
|
2939
3127
|
display: flex;
|
|
2940
3128
|
align-items: center;
|
|
2941
3129
|
justify-content: space-between;
|
|
2942
3130
|
padding: 8px 24px;
|
|
3131
|
+
border-radius: var(--retro-border-radius) var(--retro-border-radius) 0 0;
|
|
2943
3132
|
background: var(--retro-modal-header-bg);
|
|
2944
3133
|
color: var(--retro-modal-header-text);
|
|
2945
3134
|
}
|
|
@@ -3092,7 +3281,7 @@ input[type=radio].retro-input:focus-visible {
|
|
|
3092
3281
|
list-style: none;
|
|
3093
3282
|
background: var(--retro-light);
|
|
3094
3283
|
border: 2px solid var(--retro-border-dark);
|
|
3095
|
-
border-radius:
|
|
3284
|
+
border-radius: var(--retro-border-radius);
|
|
3096
3285
|
box-shadow: inset 1px 1px 0 var(--retro-border-light), inset -1px -1px 0 var(--retro-border-medium);
|
|
3097
3286
|
font-family: var(--retro-font);
|
|
3098
3287
|
transition: none;
|
|
@@ -3103,7 +3292,7 @@ input[type=radio].retro-input:focus-visible {
|
|
|
3103
3292
|
padding: 8px 16px;
|
|
3104
3293
|
color: var(--retro-black);
|
|
3105
3294
|
text-decoration: none;
|
|
3106
|
-
border-radius:
|
|
3295
|
+
border-radius: var(--retro-border-radius);
|
|
3107
3296
|
background: var(--retro-light);
|
|
3108
3297
|
border-right: 1px solid var(--retro-border-medium);
|
|
3109
3298
|
font-family: var(--retro-font);
|
|
@@ -3203,7 +3392,7 @@ input[type=radio].retro-input:focus-visible {
|
|
|
3203
3392
|
display: block;
|
|
3204
3393
|
border-right: none;
|
|
3205
3394
|
border-bottom: 1px solid var(--retro-border-medium);
|
|
3206
|
-
border-radius:
|
|
3395
|
+
border-radius: var(--retro-border-radius);
|
|
3207
3396
|
width: 100%;
|
|
3208
3397
|
}
|
|
3209
3398
|
.retro-nav-vertical .retro-nav-item:last-child, .retro-nav-vertical .retro-tab:last-child {
|
|
@@ -3259,7 +3448,7 @@ input[type=radio].retro-input:focus-visible {
|
|
|
3259
3448
|
margin: 0;
|
|
3260
3449
|
background: var(--retro-light);
|
|
3261
3450
|
border: 2px solid var(--retro-border-dark);
|
|
3262
|
-
border-radius:
|
|
3451
|
+
border-radius: var(--retro-border-radius);
|
|
3263
3452
|
box-shadow: inset 1px 1px 0 var(--retro-border-light), inset -1px -1px 0 var(--retro-border-medium);
|
|
3264
3453
|
font-family: var(--retro-font);
|
|
3265
3454
|
}
|
|
@@ -3275,7 +3464,7 @@ input[type=radio].retro-input:focus-visible {
|
|
|
3275
3464
|
text-decoration: none;
|
|
3276
3465
|
background: var(--retro-light);
|
|
3277
3466
|
border: 2px solid transparent;
|
|
3278
|
-
border-radius:
|
|
3467
|
+
border-radius: var(--retro-border-radius);
|
|
3279
3468
|
text-align: center;
|
|
3280
3469
|
}
|
|
3281
3470
|
.retro-nav-toolbar .retro-nav-item:hover, .retro-nav-toolbar .retro-tab:hover {
|
|
@@ -3471,7 +3660,7 @@ input[type=radio].retro-input:focus-visible {
|
|
|
3471
3660
|
border-bottom: 2px solid var(--retro-border-light);
|
|
3472
3661
|
border-left: 2px solid var(--retro-border-medium);
|
|
3473
3662
|
border-top: 2px solid var(--retro-border-medium);
|
|
3474
|
-
border-radius:
|
|
3663
|
+
border-radius: var(--retro-border-radius);
|
|
3475
3664
|
height: 22px;
|
|
3476
3665
|
position: relative;
|
|
3477
3666
|
margin: 1em 0;
|
|
@@ -3485,7 +3674,7 @@ input[type=radio].retro-input:focus-visible {
|
|
|
3485
3674
|
width: 0%;
|
|
3486
3675
|
transition: width 0.4s cubic-bezier(0.4, 0, 0.2, 1);
|
|
3487
3676
|
border-right: 2px solid var(--retro-border-light);
|
|
3488
|
-
border-radius:
|
|
3677
|
+
border-radius: var(--retro-border-radius);
|
|
3489
3678
|
box-shadow: none;
|
|
3490
3679
|
position: absolute;
|
|
3491
3680
|
left: 0;
|
|
@@ -3547,7 +3736,7 @@ input[type=radio].retro-input:focus-visible {
|
|
|
3547
3736
|
color: var(--retro-badge-text);
|
|
3548
3737
|
background: var(--retro-badge-bg);
|
|
3549
3738
|
border: 1px solid var(--retro-border-dark);
|
|
3550
|
-
border-radius:
|
|
3739
|
+
border-radius: var(--retro-border-radius);
|
|
3551
3740
|
box-shadow: 0 0 0 2px rgba(var(--retro-white-rgb), 0.1), inset 0 0 6px rgba(var(--retro-black-rgb), 0.8);
|
|
3552
3741
|
text-shadow: none;
|
|
3553
3742
|
margin: 0.2em 0.4em 0.2em 0;
|
|
@@ -3785,6 +3974,7 @@ input[type=radio].retro-input:focus-visible {
|
|
|
3785
3974
|
}
|
|
3786
3975
|
|
|
3787
3976
|
.retro-accordion-item {
|
|
3977
|
+
border-radius: var(--retro-border-radius);
|
|
3788
3978
|
border: 2px solid var(--retro-border-dark);
|
|
3789
3979
|
margin-bottom: 0.5rem;
|
|
3790
3980
|
background-color: var(--retro-bg);
|
|
@@ -4030,6 +4220,11 @@ input[type=radio].retro-input:focus-visible {
|
|
|
4030
4220
|
margin-bottom: 0;
|
|
4031
4221
|
}
|
|
4032
4222
|
|
|
4223
|
+
.retro-file-input:focus-visible + .retro-file-label {
|
|
4224
|
+
outline: 2px solid var(--retro-primary);
|
|
4225
|
+
outline-offset: 2px;
|
|
4226
|
+
}
|
|
4227
|
+
|
|
4033
4228
|
.retro-file-filename {
|
|
4034
4229
|
font-size: var(--retro-font-size);
|
|
4035
4230
|
color: var(--retro-input-text);
|
|
@@ -4517,7 +4712,7 @@ input[type=radio].retro-input:focus-visible {
|
|
|
4517
4712
|
margin-left: var(--retro-spacing-lg);
|
|
4518
4713
|
background: none;
|
|
4519
4714
|
box-shadow: none;
|
|
4520
|
-
border-radius:
|
|
4715
|
+
border-radius: var(--retro-border-radius);
|
|
4521
4716
|
}
|
|
4522
4717
|
.retro-list-bordered {
|
|
4523
4718
|
border: 1px solid var(--retro-border-medium);
|
|
@@ -4661,7 +4856,7 @@ dl.retro-list dd {
|
|
|
4661
4856
|
color: var(--retro-black);
|
|
4662
4857
|
border: 2px solid var(--retro-border-dark);
|
|
4663
4858
|
box-shadow: 2px 2px 0 var(--retro-border-light), -2px -2px 0 var(--retro-border-dark);
|
|
4664
|
-
border-radius:
|
|
4859
|
+
border-radius: var(--retro-border-radius);
|
|
4665
4860
|
width: 32px;
|
|
4666
4861
|
height: 32px;
|
|
4667
4862
|
cursor: pointer;
|
|
@@ -4700,7 +4895,7 @@ dl.retro-list dd {
|
|
|
4700
4895
|
.retro-carousel-dot {
|
|
4701
4896
|
width: 12px;
|
|
4702
4897
|
height: 12px;
|
|
4703
|
-
border-radius:
|
|
4898
|
+
border-radius: var(--retro-border-radius);
|
|
4704
4899
|
background: var(--retro-border-medium);
|
|
4705
4900
|
border: 2px solid var(--retro-border-dark);
|
|
4706
4901
|
box-shadow: 1px 1px 0 var(--retro-border-light);
|
|
@@ -5053,18 +5248,22 @@ input[type=datetime-local].retro-input.retro-input-sm {
|
|
|
5053
5248
|
}
|
|
5054
5249
|
|
|
5055
5250
|
.retro-sidebar-group {
|
|
5056
|
-
margin:
|
|
5251
|
+
margin: 0;
|
|
5252
|
+
padding: var(--retro-spacing-xs) var(--retro-spacing-md);
|
|
5057
5253
|
font-size: var(--retro-font-size-xs);
|
|
5058
5254
|
font-weight: var(--retro-font-weight-bold);
|
|
5059
5255
|
text-transform: uppercase;
|
|
5060
|
-
letter-spacing: 0.08em;
|
|
5061
5256
|
color: var(--retro-text-muted);
|
|
5257
|
+
background: var(--retro-bg);
|
|
5062
5258
|
border-bottom: 1px solid var(--retro-border-medium);
|
|
5063
|
-
padding-bottom: 2px;
|
|
5064
5259
|
}
|
|
5065
5260
|
|
|
5066
|
-
.retro-
|
|
5067
|
-
margin-
|
|
5261
|
+
.retro-nav-vertical .retro-sidebar-section {
|
|
5262
|
+
margin-bottom: 0;
|
|
5263
|
+
}
|
|
5264
|
+
|
|
5265
|
+
.retro-nav-vertical .retro-sidebar-section + .retro-sidebar-section .retro-sidebar-group {
|
|
5266
|
+
border-top: 1px solid var(--retro-border-medium);
|
|
5068
5267
|
}
|
|
5069
5268
|
|
|
5070
5269
|
/* Utilities */
|