@ecopages/radiant-themes 0.2.1 → 0.2.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.
Files changed (39) hide show
  1. package/README.md +27 -15
  2. package/dist/compiled/themes/cloudflare/compact.css +40 -12
  3. package/dist/compiled/themes/cloudflare.css +40 -12
  4. package/dist/compiled/themes/github/compact.css +264 -67
  5. package/dist/compiled/themes/github.css +264 -67
  6. package/dist/compiled/themes/high-contrast/compact.css +88 -5
  7. package/dist/compiled/themes/high-contrast.css +88 -5
  8. package/dist/compiled/themes/macos/compact.css +674 -294
  9. package/dist/compiled/themes/macos-classic/compact.css +197 -25
  10. package/dist/compiled/themes/macos-classic.css +197 -25
  11. package/dist/compiled/themes/macos.css +674 -294
  12. package/dist/compiled/themes/material/compact.css +447 -132
  13. package/dist/compiled/themes/material.css +447 -132
  14. package/dist/compiled/themes/vercel/compact.css +104 -62
  15. package/dist/compiled/themes/vercel.css +104 -62
  16. package/dist/compiled/themes/vscode/compact.css +255 -40
  17. package/dist/compiled/themes/vscode.css +255 -40
  18. package/dist/compiled/themes/windows95/compact.css +260 -22
  19. package/dist/compiled/themes/windows95.css +260 -22
  20. package/dist/tokens/colors/github.css +32 -0
  21. package/dist/tokens/colors/macos.css +65 -25
  22. package/dist/tokens/colors/material.css +61 -20
  23. package/dist/tokens/colors/vercel.css +43 -39
  24. package/dist/tokens/colors/vscode.css +48 -4
  25. package/dist/tokens/colors/windows95.css +10 -5
  26. package/dist/tokens/components/cloudflare.css +55 -5
  27. package/dist/tokens/components/github.css +258 -40
  28. package/dist/tokens/components/high-contrast.css +93 -5
  29. package/dist/tokens/components/macos-classic.css +262 -24
  30. package/dist/tokens/components/macos.css +537 -106
  31. package/dist/tokens/components/material.css +354 -25
  32. package/dist/tokens/components/vercel.css +77 -15
  33. package/dist/tokens/components/vscode.css +248 -27
  34. package/dist/tokens/components/windows95.css +304 -19
  35. package/dist/tokens/roles/github.css +12 -12
  36. package/dist/tokens/roles/macos.css +97 -93
  37. package/dist/tokens/roles/material.css +65 -65
  38. package/dist/tokens/roles/vercel.css +3 -3
  39. package/package.json +3 -3
package/README.md CHANGED
@@ -45,40 +45,52 @@ border opacity inputs. The docs tuner shows the six values and produces copyable
45
45
  Radiant Default; branded themes keep their own values.
46
46
 
47
47
  High Contrast targets at least 7:1 contrast for published semantic text pairs in both modes and uses prominent focus
48
- indicators. Its control surfaces, including switch tracks and thumbs, use square corners. Radiant UI's shared foundation
48
+ indicators. Its control surfaces, including switch tracks and thumbs, use square corners, radios stay round with a checked
49
+ dot, and muted text stays above 7:1. Radiant UI's shared foundation
49
50
  supports reduced motion, increased contrast, visible keyboard focus, and Windows forced colors. Verify non-text
50
51
  boundaries and application content after custom overrides.
51
52
 
52
53
  Windows 95 draws every control with the two-tone 2px bevel: gray push buttons with a black frame on the default
53
54
  action, sunken white fields, check boxes, and radio wells, raised property tabs joined to their page, navy title bars,
54
- and navy selection. Mac OS Classic is Mac OS 9 Platinum, built from the Mac OS 8 Human Interface Guidelines and the Appearance Manager's
55
+ navy selection, flat menu bars with navy menu highlights, trackbars with a sunken channel and raised pointer,
56
+ drop-down lists and combo boxes with a raised arrow button, sunken list boxes and tree views with dotted lines and
57
+ plus/minus boxes, and pale yellow tooltips. Mac OS Classic is Mac OS 9 Platinum, built from the Mac OS 8 Human Interface Guidelines and the Appearance Manager's
55
58
  default theme: the seven system greys `#eeeeee` to `#202020`, grey push buttons with a black outline and a two-pixel
56
59
  bevel, a three-layer ring around the default button, 12px bevelled check boxes, shaded radio spheres, sunken white
57
60
  fields, trapezoid tabs that merge into a black-framed page, and 1px striped title bars. Selection and focus use the
58
- default `#6666cc` accent. Both
59
- dark modes keep the same bevel structure on darker faces and fields, since neither system shipped one. macOS uses
60
- moderate control corners, grouped tab segments, softer layered surfaces, and accent-blue push buttons with white text
61
- in dark mode. Windows 95 also provides a full-size dithered scrollbar with raised arrow buttons and a bevelled thumb;
61
+ default `#6666cc` accent. Menus and the menu bar highlight items in that accent, list views are black-framed white
62
+ wells with bevelled column headers, tooltips are outlined help balloons, and disclosures use the Platinum triangle. Both
63
+ dark modes keep the same bevel structure on darker faces and fields, since neither system shipped one. macOS follows Sonoma AppKit:
64
+ the SF Pro system font at 13px, 6px push buttons outlined by a hairline shadow, accent-filled default buttons, check
65
+ boxes, and radio buttons, pop-up buttons with an accent arrow well, segmented tabs centered above a group box, white
66
+ slider knobs, translucent menus and popovers, and accent row selection with white text. Destructive buttons use red
67
+ text, as AppKit alerts do. Windows 95 also provides a full-size dithered scrollbar with raised arrow buttons and a bevelled thumb;
62
68
  Mac OS Classic provides Platinum's grey bevelled track, end-positioned arrow buttons, and striped blue scroll box.
63
69
  Chrome and Safari receive the detailed WebKit scrollbar treatment; Firefox receives the standard `scrollbar-width` and
64
70
  `scrollbar-color` fallback, whose native API does not expose classic arrow buttons, bevels, or stripe images.
65
- Material Design uses tonal surfaces, a purple accent family, and rounded action
66
- controls. These are original implementations written with Radiant semantic roles, Tailwind `@apply`, and catalog
71
+ Material Design uses the Material 3 baseline scheme: full-radius
72
+ buttons, 4px outlined fields and menus, 8px chips, 28px dialogs, tonal surface-container overlays, inverse-surface
73
+ tooltips and toasts, and a 3px secondary focus indicator. These are original implementations written with Radiant semantic roles, Tailwind `@apply`, and catalog
67
74
  selectors; they do not copy third-party CSS.
68
75
 
69
76
  The Cloudflare theme leads with Cloudflare orange on restrained neutral layers inspired by Cloudflare Kumo. Its
70
77
  semantic primary role uses the same contrast-safe orange `#cc3a00` in both modes. Filled primary buttons use that
71
78
  orange with white text in both modes. Links and focus stay blue, and warnings use a yellow amber that stays distinct
72
- from the primary.
73
- GitHub maps Primer's functional roles: green marks the primary action, blue is for links and focus, the selected tab
74
- uses Primer's coral underline, and neutral surfaces are used for secondary actions.
79
+ from the primary. Chosen options, menu items, and active navigation use Kumo's neutral grey, so they no longer use orange;
80
+ breadcrumb links are blue, dark mode uses a brighter orange for orange text, and controls are 26, 36, and 40px tall.
81
+ GitHub maps Primer's functional roles: green is limited to the primary button, the meter, and success states, blue marks links, focus, and
82
+ selected, checked, or current states, the selected tab uses Primer's coral underline, and secondary actions use
83
+ Primer's grey default button.
75
84
 
76
85
  The Vercel theme uses Background 2 for the light canvas and Background 1 for primary surfaces. Its component colors
77
86
  drive hover and active fills, Colors 4–6 drive default, hover, and active borders, and blue stays focused on links and
78
- keyboard focus. Control boundaries are strengthened for visibility. VS Code maps editor surfaces and accent states,
79
- with Dark Modern's `#0078d4` fill for dark-mode filled buttons. Button treatments vary by theme: Cloudflare uses a
80
- contrast-safe orange primary fill, while Cloudflare, GitHub, and Vercel use saturated fills with white text for
81
- dark-mode destructive buttons. Other variants follow each theme's semantic roles. These palettes adapt product cues to
87
+ keyboard focus. Control boundaries are strengthened for visibility. VS Code follows Light Modern and Dark Modern: 26px
88
+ controls with 2px corners, filled buttons in `#005fb8` (light) or `#0078d4` (dark) with white text, grey secondary
89
+ buttons for the outline variant, a 1px blue focus outline, blue menu highlights, editor-style boxed tabs with a blue top
90
+ border, and see-through square scrollbars. Button treatments vary by theme: Cloudflare uses a
91
+ contrast-safe orange primary fill, Cloudflare and Vercel use saturated fills with white text for dark-mode
92
+ destructive buttons, and GitHub uses Primer's danger button: red text on the default button face, filling red on
93
+ hover. Other variants follow each theme's semantic roles. These palettes adapt product cues to
82
94
  Radiant UI roles without reproducing the products pixel for pixel.
83
95
 
84
96
  ## Design references
@@ -27,8 +27,6 @@
27
27
  --font-weight-medium: var(--weight-medium);
28
28
  --opacity-disabled: var(--opacity-disabled);
29
29
  --opacity-muted: var(--opacity-muted);
30
- --color-primary-container: var(--primary-container);
31
- --color-on-primary-container: var(--on-primary-container);
32
30
  --color-secondary: var(--secondary);
33
31
  --color-on-secondary: var(--on-secondary);
34
32
  --color-surface: var(--surface);
@@ -603,6 +601,9 @@
603
601
  --border-radius-3xl: 1.25rem;
604
602
  --radius-control: var(--border-radius-lg);
605
603
  --radius-container: var(--border-radius-xl);
604
+ --size-control-sm: 1.625rem;
605
+ --size-control-md: 2.25rem;
606
+ --size-control-lg: 2.5rem;
606
607
  }
607
608
  @layer components {
608
609
  :root .rui-button--filled {
@@ -683,9 +684,12 @@
683
684
  border-color: var(--rui-control-border-color);
684
685
  }
685
686
  :root .rui-dialog__surface,
686
- :root .rui-popover-host,
687
+ :root .rui-popover:where(:not(.rui-popover--listbox)),
687
688
  :root .rui-hover-card__content,
688
689
  :root .rui-select__listbox,
690
+ :root .rui-combobox__listbox,
691
+ :root .rui-menu-button__menu,
692
+ :root .rui-menubar__menu,
689
693
  :root .rui-calendar {
690
694
  border-radius: var(--radius-container);
691
695
  border-style: var(--tw-border-style);
@@ -694,6 +698,14 @@
694
698
  box-shadow: 0 0 0 1px var(--color-cloudflare-shadow-edge),
695
699
  0 4px 12px var(--color-cloudflare-shadow-drop);
696
700
  }
701
+ :root .rui-menu-button__menu,
702
+ :root .rui-menubar__menu {
703
+ --rui-menu-item-hover: var(--color-cloudflare-tint);
704
+ }
705
+ :root .rui-select__listbox .rui-listbox,
706
+ :root .rui-combobox__listbox .rui-listbox {
707
+ background-color: transparent;
708
+ }
697
709
  :root rui-tabs[variant='boxed'] {
698
710
  border-radius: var(--radius-container);
699
711
  border-style: var(--tw-border-style);
@@ -722,25 +734,41 @@
722
734
  border-bottom-color: var(--primary);
723
735
  }
724
736
  :root .rui-listbox__option[aria-selected='true'],
737
+ :root .rui-listbox__option[aria-selected='true']:focus-visible,
725
738
  :root .rui-menu-button__item[aria-checked='true'],
726
- :root .rui-sidebar__menu-button--active {
727
- background-color: var(--color-primary-container);
728
- color: var(--color-on-primary-container);
739
+ :root .rui-sidebar__menu-button[aria-current='page'],
740
+ :root .rui-sidebar__menu-button--active,
741
+ :root .rui-tree__node[aria-selected='true'],
742
+ :root .rui-treegrid__cell[aria-selected='true'] {
743
+ background-color: var(--color-cloudflare-tint);
744
+ background-image: none;
745
+ color: var(--color-cloudflare-fg);
746
+ }
747
+ :root .rui-listbox__option[aria-selected='true'][data-active]:not([aria-disabled='true']) {
748
+ --tw-ring-color: var(--rui-control-border-color);
749
+ }
750
+ :root .rui-listbox__option[aria-selected='true'] .rui-listbox__option-indicator {
751
+ color: var(--color-cloudflare-fg);
752
+ }
753
+ :root .rui-breadcrumb__link {
754
+ color: var(--link);
755
+ }
756
+ :root.dark .rui-heading__eyebrow,
757
+ :root.dark .rui-toc__link--active,
758
+ :root.dark .rui-calendar__today,
759
+ :root.dark .rui-feed__rating-stars {
760
+ color: var(--color-cloudflare-orange-bright);
729
761
  }
730
762
  :root .rui-alert {
731
763
  border-radius: var(--radius-control);
732
764
  --tw-shadow: 0 0 #0000;
733
765
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
734
766
  }
735
- :root .rui-toast__content {
767
+ :root .rui-toast {
736
768
  border-radius: var(--radius-control);
737
- border-style: var(--tw-border-style);
738
- border-width: 1px;
739
- border-color: var(--color-border);
740
- background-color: var(--color-surface);
741
- color: var(--color-on-surface);
742
769
  --tw-shadow: 0 0 #0000;
743
770
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
771
+ background-image: none;
744
772
  }
745
773
  :root .rui-separator,
746
774
  :root .rui-sidebar__separator {
@@ -27,8 +27,6 @@
27
27
  --font-weight-medium: var(--weight-medium);
28
28
  --opacity-disabled: var(--opacity-disabled);
29
29
  --opacity-muted: var(--opacity-muted);
30
- --color-primary-container: var(--primary-container);
31
- --color-on-primary-container: var(--on-primary-container);
32
30
  --color-secondary: var(--secondary);
33
31
  --color-on-secondary: var(--on-secondary);
34
32
  --color-surface: var(--surface);
@@ -603,6 +601,9 @@
603
601
  --border-radius-3xl: 1.25rem;
604
602
  --radius-control: var(--border-radius-lg);
605
603
  --radius-container: var(--border-radius-xl);
604
+ --size-control-sm: 1.625rem;
605
+ --size-control-md: 2.25rem;
606
+ --size-control-lg: 2.5rem;
606
607
  }
607
608
  @layer components {
608
609
  :root .rui-button--filled {
@@ -683,9 +684,12 @@
683
684
  border-color: var(--rui-control-border-color);
684
685
  }
685
686
  :root .rui-dialog__surface,
686
- :root .rui-popover-host,
687
+ :root .rui-popover:where(:not(.rui-popover--listbox)),
687
688
  :root .rui-hover-card__content,
688
689
  :root .rui-select__listbox,
690
+ :root .rui-combobox__listbox,
691
+ :root .rui-menu-button__menu,
692
+ :root .rui-menubar__menu,
689
693
  :root .rui-calendar {
690
694
  border-radius: var(--radius-container);
691
695
  border-style: var(--tw-border-style);
@@ -694,6 +698,14 @@
694
698
  box-shadow: 0 0 0 1px var(--color-cloudflare-shadow-edge),
695
699
  0 4px 12px var(--color-cloudflare-shadow-drop);
696
700
  }
701
+ :root .rui-menu-button__menu,
702
+ :root .rui-menubar__menu {
703
+ --rui-menu-item-hover: var(--color-cloudflare-tint);
704
+ }
705
+ :root .rui-select__listbox .rui-listbox,
706
+ :root .rui-combobox__listbox .rui-listbox {
707
+ background-color: transparent;
708
+ }
697
709
  :root rui-tabs[variant='boxed'] {
698
710
  border-radius: var(--radius-container);
699
711
  border-style: var(--tw-border-style);
@@ -722,25 +734,41 @@
722
734
  border-bottom-color: var(--primary);
723
735
  }
724
736
  :root .rui-listbox__option[aria-selected='true'],
737
+ :root .rui-listbox__option[aria-selected='true']:focus-visible,
725
738
  :root .rui-menu-button__item[aria-checked='true'],
726
- :root .rui-sidebar__menu-button--active {
727
- background-color: var(--color-primary-container);
728
- color: var(--color-on-primary-container);
739
+ :root .rui-sidebar__menu-button[aria-current='page'],
740
+ :root .rui-sidebar__menu-button--active,
741
+ :root .rui-tree__node[aria-selected='true'],
742
+ :root .rui-treegrid__cell[aria-selected='true'] {
743
+ background-color: var(--color-cloudflare-tint);
744
+ background-image: none;
745
+ color: var(--color-cloudflare-fg);
746
+ }
747
+ :root .rui-listbox__option[aria-selected='true'][data-active]:not([aria-disabled='true']) {
748
+ --tw-ring-color: var(--rui-control-border-color);
749
+ }
750
+ :root .rui-listbox__option[aria-selected='true'] .rui-listbox__option-indicator {
751
+ color: var(--color-cloudflare-fg);
752
+ }
753
+ :root .rui-breadcrumb__link {
754
+ color: var(--link);
755
+ }
756
+ :root.dark .rui-heading__eyebrow,
757
+ :root.dark .rui-toc__link--active,
758
+ :root.dark .rui-calendar__today,
759
+ :root.dark .rui-feed__rating-stars {
760
+ color: var(--color-cloudflare-orange-bright);
729
761
  }
730
762
  :root .rui-alert {
731
763
  border-radius: var(--radius-control);
732
764
  --tw-shadow: 0 0 #0000;
733
765
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
734
766
  }
735
- :root .rui-toast__content {
767
+ :root .rui-toast {
736
768
  border-radius: var(--radius-control);
737
- border-style: var(--tw-border-style);
738
- border-width: 1px;
739
- border-color: var(--color-border);
740
- background-color: var(--color-surface);
741
- color: var(--color-on-surface);
742
769
  --tw-shadow: 0 0 #0000;
743
770
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
771
+ background-image: none;
744
772
  }
745
773
  :root .rui-separator,
746
774
  :root .rui-sidebar__separator {