@ecopages/radiant-themes 0.0.0-stage → 0.2.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.md +96 -2
- package/dist/compiled/themes/cloudflare/compact.css +848 -0
- package/dist/compiled/themes/cloudflare.css +831 -0
- package/dist/compiled/themes/github/compact.css +819 -0
- package/dist/compiled/themes/github.css +802 -0
- package/dist/compiled/themes/high-contrast/compact.css +707 -0
- package/dist/compiled/themes/high-contrast.css +690 -0
- package/dist/compiled/themes/macos/compact.css +815 -0
- package/dist/compiled/themes/macos-classic/compact.css +1083 -0
- package/dist/compiled/themes/macos-classic.css +1066 -0
- package/dist/compiled/themes/macos.css +798 -0
- package/dist/compiled/themes/material/compact.css +634 -0
- package/dist/compiled/themes/material.css +617 -0
- package/dist/compiled/themes/vercel/compact.css +811 -0
- package/dist/compiled/themes/vercel.css +794 -0
- package/dist/compiled/themes/vscode/compact.css +763 -0
- package/dist/compiled/themes/vscode.css +746 -0
- package/dist/compiled/themes/windows95/compact.css +959 -0
- package/dist/compiled/themes/windows95.css +942 -0
- package/dist/foundation.css +11 -0
- package/dist/themes/cloudflare/compact.css +2 -0
- package/dist/themes/cloudflare.css +4 -0
- package/dist/themes/github/compact.css +2 -0
- package/dist/themes/github.css +4 -0
- package/dist/themes/high-contrast/compact.css +2 -0
- package/dist/themes/high-contrast.css +4 -0
- package/dist/themes/macos/compact.css +2 -0
- package/dist/themes/macos-classic/compact.css +2 -0
- package/dist/themes/macos-classic.css +4 -0
- package/dist/themes/macos.css +4 -0
- package/dist/themes/material/compact.css +2 -0
- package/dist/themes/material.css +4 -0
- package/dist/themes/vercel/compact.css +2 -0
- package/dist/themes/vercel.css +4 -0
- package/dist/themes/vscode/compact.css +2 -0
- package/dist/themes/vscode.css +4 -0
- package/dist/themes/windows95/compact.css +2 -0
- package/dist/themes/windows95.css +4 -0
- package/dist/tokens/colors/cloudflare.css +53 -0
- package/dist/tokens/colors/github.css +33 -0
- package/dist/tokens/colors/high-contrast.css +53 -0
- package/dist/tokens/colors/macos-classic.css +66 -0
- package/dist/tokens/colors/macos.css +40 -0
- package/dist/tokens/colors/material.css +25 -0
- package/dist/tokens/colors/vercel.css +71 -0
- package/dist/tokens/colors/vscode.css +31 -0
- package/dist/tokens/colors/windows95.css +54 -0
- package/dist/tokens/components/cloudflare.css +147 -0
- package/dist/tokens/components/github.css +111 -0
- package/dist/tokens/components/high-contrast.css +108 -0
- package/dist/tokens/components/macos-classic.css +587 -0
- package/dist/tokens/components/macos.css +225 -0
- package/dist/tokens/components/material.css +82 -0
- package/dist/tokens/components/vercel.css +150 -0
- package/dist/tokens/components/vscode.css +72 -0
- package/dist/tokens/components/windows95.css +433 -0
- package/dist/tokens/roles/cloudflare.css +150 -0
- package/dist/tokens/roles/github.css +150 -0
- package/dist/tokens/roles/high-contrast.css +155 -0
- package/dist/tokens/roles/macos-classic.css +142 -0
- package/dist/tokens/roles/macos.css +155 -0
- package/dist/tokens/roles/material.css +144 -0
- package/dist/tokens/roles/vercel.css +141 -0
- package/dist/tokens/roles/vscode.css +143 -0
- package/dist/tokens/roles/windows95.css +142 -0
- package/package.json +144 -3
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
@reference 'tailwindcss';
|
|
2
|
+
|
|
3
|
+
:root,
|
|
4
|
+
:root[data-rui-theme='cloudflare'] {
|
|
5
|
+
--font-sans: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
|
|
6
|
+
--font-heading: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
|
|
7
|
+
--font-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
|
8
|
+
--rui-border-alpha: 100%;
|
|
9
|
+
--border-radius-xs: 0.125rem;
|
|
10
|
+
--border-radius-sm: 0.25rem;
|
|
11
|
+
--border-radius-md: 0.375rem;
|
|
12
|
+
--border-radius-lg: 0.5rem;
|
|
13
|
+
--border-radius-xl: 0.75rem;
|
|
14
|
+
--border-radius-2xl: 1rem;
|
|
15
|
+
--border-radius-3xl: 1.25rem;
|
|
16
|
+
--radius-control: var(--border-radius-lg);
|
|
17
|
+
--radius-container: var(--border-radius-xl);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
@layer components {
|
|
21
|
+
/**
|
|
22
|
+
* @remarks Kumo draws the primary action with white text in both modes, a ring one tenth darker than the fill, and
|
|
23
|
+
* `shadow-xs`. `#cc3a00` keeps cloudflare.com's orange hue at 5:1 against white, where the marketing orange
|
|
24
|
+
* `#ff5e1e` reaches only 3:1. `--primary` stays the lighter orange in dark mode for text and icons.
|
|
25
|
+
*/
|
|
26
|
+
:root .rui-button--filled {
|
|
27
|
+
background-color: var(--color-cloudflare-orange-fill);
|
|
28
|
+
color: #ffffff;
|
|
29
|
+
box-shadow:
|
|
30
|
+
0 0 0 1px color-mix(in oklch, var(--color-cloudflare-orange-fill), black 10%),
|
|
31
|
+
0 1px 2px oklch(0% 0 0 / 5%);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
:root .rui-button--filled:hover:not(:disabled) {
|
|
35
|
+
background-color: #b83400;
|
|
36
|
+
color: #ffffff;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
:root .rui-button--filled:active:not(:disabled),
|
|
40
|
+
:root .rui-button--filled[aria-pressed='true'] {
|
|
41
|
+
background-color: #a32e00;
|
|
42
|
+
color: #ffffff;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* @remarks Cloudflare fills dark destructive buttons with a saturated red and white text; `--error` stays the lighter
|
|
47
|
+
* red used for error text on dark surfaces.
|
|
48
|
+
*/
|
|
49
|
+
:root.dark .rui-button--destructive {
|
|
50
|
+
background-color: #d1242f;
|
|
51
|
+
color: #ffffff;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
:root.dark .rui-button--destructive:hover:not(:disabled) {
|
|
55
|
+
background-color: #c3272d;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
:root.dark .rui-button--destructive:active:not(:disabled) {
|
|
59
|
+
background-color: #ae1f25;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* @remarks Kumo changes hover colors immediately instead of transitioning them.
|
|
64
|
+
*/
|
|
65
|
+
:root .rui-button {
|
|
66
|
+
@apply rounded-control border border-transparent font-medium shadow-none;
|
|
67
|
+
transition: none;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
:root .rui-button--secondary {
|
|
71
|
+
@apply border border-border bg-secondary text-on-secondary shadow-none;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
:root .rui-button--secondary:hover:not(:disabled),
|
|
75
|
+
:root .rui-button--outline:hover:not(:disabled),
|
|
76
|
+
:root .rui-button--ghost:hover:not(:disabled) {
|
|
77
|
+
@apply bg-surface-container-high;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
:root .rui-button--outline,
|
|
81
|
+
:root .rui-input,
|
|
82
|
+
:root .rui-textarea,
|
|
83
|
+
:root .rui-select__control {
|
|
84
|
+
@apply border-border bg-surface text-on-surface shadow-none;
|
|
85
|
+
border-color: var(--rui-control-border-color);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
:root .rui-checkbox__control,
|
|
89
|
+
:root .rui-radio__control {
|
|
90
|
+
@apply border-border bg-surface;
|
|
91
|
+
border-color: var(--rui-control-border-color);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* @remarks Kumo does not combine a border with a drop shadow. Floating surfaces use a 1px edge ring plus a soft drop.
|
|
96
|
+
*/
|
|
97
|
+
:root .rui-dialog__surface,
|
|
98
|
+
:root .rui-popover-host,
|
|
99
|
+
:root .rui-hover-card__content,
|
|
100
|
+
:root .rui-select__listbox,
|
|
101
|
+
:root .rui-calendar {
|
|
102
|
+
@apply rounded-container border-0 bg-surface;
|
|
103
|
+
box-shadow:
|
|
104
|
+
0 0 0 1px var(--color-cloudflare-shadow-edge),
|
|
105
|
+
0 4px 12px var(--color-cloudflare-shadow-drop);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
:root rui-tabs[variant='boxed'] {
|
|
109
|
+
@apply rounded-container border border-border bg-surface shadow-none;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
:root rui-tabs[variant='boxed'] .rui-tabs__list {
|
|
113
|
+
@apply border-b bg-transparent px-2 pt-2;
|
|
114
|
+
border-color: var(--color-cloudflare-hairline);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
:root rui-tabs[variant='boxed'] .rui-tabs__tab:hover:not([aria-selected='true']) {
|
|
118
|
+
background-color: var(--color-cloudflare-tint);
|
|
119
|
+
color: var(--color-cloudflare-fg);
|
|
120
|
+
opacity: 1;
|
|
121
|
+
transition: none;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
:root rui-tabs[variant='boxed'] .rui-tabs__tab[aria-selected='true'] {
|
|
125
|
+
@apply text-on-surface;
|
|
126
|
+
border-bottom-color: var(--primary);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
:root .rui-listbox__option[aria-selected='true'],
|
|
130
|
+
:root .rui-menu-button__item[aria-checked='true'],
|
|
131
|
+
:root .rui-sidebar__menu-button--active {
|
|
132
|
+
@apply bg-primary-container text-on-primary-container;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
:root .rui-alert {
|
|
136
|
+
@apply rounded-control shadow-none;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
:root .rui-toast__content {
|
|
140
|
+
@apply rounded-control border border-border bg-surface text-on-surface shadow-none;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
:root .rui-separator,
|
|
144
|
+
:root .rui-sidebar__separator {
|
|
145
|
+
@apply bg-border;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
@reference 'tailwindcss';
|
|
2
|
+
|
|
3
|
+
:root,
|
|
4
|
+
:root[data-rui-theme='github'] {
|
|
5
|
+
--font-sans: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
|
|
6
|
+
--font-heading: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
|
|
7
|
+
--font-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
|
8
|
+
--rui-border-alpha: 100%;
|
|
9
|
+
--border-radius-xs: 0.25rem;
|
|
10
|
+
--border-radius-sm: 0.375rem;
|
|
11
|
+
--border-radius-md: 0.5rem;
|
|
12
|
+
--border-radius-lg: 0.75rem;
|
|
13
|
+
--border-radius-xl: 1rem;
|
|
14
|
+
--border-radius-2xl: 1.25rem;
|
|
15
|
+
--border-radius-3xl: 1.5rem;
|
|
16
|
+
--radius-control: var(--border-radius-sm);
|
|
17
|
+
--radius-container: var(--border-radius-md);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
@layer components {
|
|
21
|
+
/**
|
|
22
|
+
* @remarks Primer fills dark destructive buttons with a saturated red and white text; `--error` stays the lighter
|
|
23
|
+
* red used for error text on dark surfaces.
|
|
24
|
+
*/
|
|
25
|
+
:root.dark .rui-button--destructive {
|
|
26
|
+
background-color: #da3633;
|
|
27
|
+
color: #ffffff;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
:root.dark .rui-button--destructive:hover:not(:disabled) {
|
|
31
|
+
background-color: #b62324;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
:root.dark .rui-button--destructive:active:not(:disabled) {
|
|
35
|
+
background-color: #a40e26;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
:root rui-tabs {
|
|
39
|
+
--rui-tabs-indicator-color: #fd8c73;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
:root.dark rui-tabs {
|
|
43
|
+
--rui-tabs-indicator-color: #f78166;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
:root .rui-button {
|
|
47
|
+
@apply rounded-control border border-transparent font-medium shadow-none;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
:root .rui-button--outline,
|
|
51
|
+
:root .rui-input,
|
|
52
|
+
:root .rui-textarea,
|
|
53
|
+
:root .rui-select__control {
|
|
54
|
+
@apply border-border bg-surface text-on-surface shadow-none;
|
|
55
|
+
border-color: var(--rui-control-border-color);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
:root .rui-button--outline:hover:not(:disabled),
|
|
59
|
+
:root .rui-button--ghost:hover:not(:disabled) {
|
|
60
|
+
@apply bg-surface-container-low;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
:root .rui-checkbox__control {
|
|
64
|
+
@apply rounded-xs border-border bg-surface;
|
|
65
|
+
border-color: var(--rui-control-border-color);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
:root .rui-dialog__surface,
|
|
69
|
+
:root .rui-popover-host,
|
|
70
|
+
:root .rui-select__listbox,
|
|
71
|
+
:root .rui-calendar {
|
|
72
|
+
@apply rounded-container border border-border bg-surface shadow-lg;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
:root rui-tabs[variant='boxed'] {
|
|
76
|
+
@apply overflow-visible rounded-none border-0 bg-transparent shadow-none;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
:root rui-tabs[variant='boxed'] .rui-tabs__list {
|
|
80
|
+
@apply gap-2 border-b border-border bg-transparent px-0 pt-0;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
:root rui-tabs[variant='boxed'] .rui-tabs__tab {
|
|
84
|
+
@apply rounded-none text-on-surface-container-low;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
:root rui-tabs[variant='boxed'] .rui-tabs__tab[aria-selected='true'] {
|
|
88
|
+
@apply text-on-surface font-semibold;
|
|
89
|
+
border-bottom-color: var(--rui-tabs-indicator-color);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* @remarks Primer's underline nav has no panel, but Radiant tabs own one. A subtle surface with a divider border keeps
|
|
94
|
+
* the panel distinct from the white page. It clips its content so square code blocks respect the rounded corners.
|
|
95
|
+
*/
|
|
96
|
+
:root rui-tabs[variant='boxed'] .rui-tabs__panel {
|
|
97
|
+
@apply mt-3 overflow-hidden rounded-container border border-border bg-surface;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
:root .rui-listbox__option[aria-selected='true'],
|
|
101
|
+
:root .rui-menu-button__item[aria-checked='true'],
|
|
102
|
+
:root .rui-sidebar__menu-button--active {
|
|
103
|
+
@apply rounded-control bg-info-container text-on-info-container;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
:root .rui-badge,
|
|
107
|
+
:root .rui-chip,
|
|
108
|
+
:root .rui-pagination__link {
|
|
109
|
+
@apply rounded-pill;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
@reference 'tailwindcss';
|
|
2
|
+
|
|
3
|
+
:root, :root[data-rui-theme='high-contrast'] {
|
|
4
|
+
--font-sans: ui-sans-serif, system-ui, sans-serif;
|
|
5
|
+
--font-heading: var(--font-sans);
|
|
6
|
+
--font-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
|
7
|
+
--border-radius-xs: 0;
|
|
8
|
+
--border-radius-sm: 0;
|
|
9
|
+
--border-radius-md: 0;
|
|
10
|
+
--border-radius-lg: 0;
|
|
11
|
+
--border-radius-xl: 0;
|
|
12
|
+
--border-radius-2xl: 0;
|
|
13
|
+
--border-radius-3xl: 0;
|
|
14
|
+
--radius-control: 0;
|
|
15
|
+
--radius-container: 0;
|
|
16
|
+
--rui-border-alpha: 100%;
|
|
17
|
+
--focus-ring-width: 3px;
|
|
18
|
+
--focus-ring-offset: 3px;
|
|
19
|
+
--opacity-disabled: 1;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
@layer components {
|
|
23
|
+
:root .rui-button {
|
|
24
|
+
@apply rounded-none border-2 font-semibold shadow-none;
|
|
25
|
+
transition: none;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
:root .rui-button--outline,
|
|
29
|
+
:root .rui-button--ghost {
|
|
30
|
+
@apply border-2 border-on-background bg-background text-on-background;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
:root .rui-button:disabled,
|
|
34
|
+
:root .rui-input:disabled,
|
|
35
|
+
:root .rui-textarea:disabled,
|
|
36
|
+
:root .rui-select[aria-disabled='true'] {
|
|
37
|
+
@apply border-2 border-on-background text-on-background;
|
|
38
|
+
opacity: 1;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
:root .rui-input,
|
|
42
|
+
:root .rui-textarea,
|
|
43
|
+
:root .rui-autocomplete__input,
|
|
44
|
+
:root .rui-combobox__input,
|
|
45
|
+
:root .rui-date-field__input,
|
|
46
|
+
:root .rui-date-input__segment,
|
|
47
|
+
:root .rui-number-field__input,
|
|
48
|
+
:root .rui-select__control {
|
|
49
|
+
@apply rounded-none border-2 border-on-background bg-background text-on-background;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
:root .rui-checkbox__control,
|
|
53
|
+
:root .rui-radio__control,
|
|
54
|
+
:root .rui-switch__track {
|
|
55
|
+
@apply rounded-none border-2 border-on-background bg-background;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
:root .rui-checkbox__input:checked + .rui-checkbox__control,
|
|
59
|
+
:root .rui-radio__input:checked + .rui-radio__control,
|
|
60
|
+
:root .rui-switch__input:checked + .rui-switch__track {
|
|
61
|
+
@apply border-2 border-primary bg-primary;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
:root .rui-listbox__option[aria-selected='true'],
|
|
65
|
+
:root .rui-menu-button__item[aria-checked='true'],
|
|
66
|
+
:root .rui-menubar__menu-item[aria-checked='true'],
|
|
67
|
+
:root .rui-tree__node[aria-selected='true'],
|
|
68
|
+
:root .rui-calendar__day[aria-selected='true'] {
|
|
69
|
+
@apply border-2 border-primary bg-primary text-on-primary font-semibold;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
:root .rui-tabs__tab[aria-selected='true'],
|
|
73
|
+
:root .rui-button[aria-pressed='true'],
|
|
74
|
+
:root .rui-pagination__link[aria-current='page'] {
|
|
75
|
+
@apply font-bold underline decoration-2 underline-offset-4;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
:root .rui-alert,
|
|
79
|
+
:root .rui-toast__content,
|
|
80
|
+
:root .rui-dialog__surface,
|
|
81
|
+
:root .rui-popover-host,
|
|
82
|
+
:root .rui-hover-card__content,
|
|
83
|
+
:root .rui-calendar,
|
|
84
|
+
:root rui-tabs[variant='boxed'] {
|
|
85
|
+
@apply rounded-none border-2 border-on-background bg-background text-on-background shadow-none;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
:root .rui-badge,
|
|
89
|
+
:root .rui-chip,
|
|
90
|
+
:root .rui-separator,
|
|
91
|
+
:root .rui-meter__track,
|
|
92
|
+
:root .rui-slider__range-track,
|
|
93
|
+
:root .rui-window-splitter__separator {
|
|
94
|
+
@apply border border-on-background;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
:root .rui-table__header,
|
|
98
|
+
:root .rui-treegrid__row--header,
|
|
99
|
+
:root .rui-calendar__weekdays {
|
|
100
|
+
@apply border-b-2 border-on-background font-bold;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
:root .rui-checkbox:has(input:disabled),
|
|
104
|
+
:root .rui-radio:has(input:disabled),
|
|
105
|
+
:root .rui-switch:has(input:disabled) {
|
|
106
|
+
opacity: 1;
|
|
107
|
+
}
|
|
108
|
+
}
|