|
92 | 92 | --color-solar-900: #7c3b0b; |
93 | 93 | --color-solar-950: #481d00; |
94 | 94 |
|
95 | | - /* Seeds - Not for general use */ |
96 | | - --color-seed: var(--color-sky-500); |
97 | | - /* --color-neutral-seed: oklch(from var(--color-seed) l 0.01 h); */ |
98 | | - /* --color-neutral-variant-seed: oklch(from var(--color-seed) l 0.015 h); */ |
| 95 | + --error-hue: 27; |
| 96 | + --success-hue: 152; |
| 97 | + |
| 98 | + --color-primary: inherit; |
| 99 | + --color-primary-hover: inherit; |
| 100 | + --color-on-primary: inherit; |
| 101 | + --color-primary-container: inherit; |
| 102 | + --color-on-primary-container: inherit; |
| 103 | + --color-error: inherit; |
| 104 | + --color-on-error: inherit; |
| 105 | + --color-error-container: inherit; |
| 106 | + --color-on-error-container: inherit; |
| 107 | + --color-success: inherit; |
| 108 | + --color-on-success: inherit; |
| 109 | + --color-success-container: inherit; |
| 110 | + --color-on-success-container: inherit; |
99 | 111 |
|
100 | | - /* Color Roles and default dark values */ |
101 | | - --color-primary: oklch(from var(--color-seed) 0.82 c h); |
102 | | - --color-primary-hover: oklch(from var(--color-seed) 0.9 c h); |
103 | | - --color-on-primary: oklch(from var(--color-seed) 0.2 c h); |
| 112 | + --color-shadow: oklch(0 0 0); |
| 113 | + --color-scrim: oklch(0 0 0 / 0.5); |
104 | 114 |
|
105 | | - --color-primary-container: oklch(from var(--color-seed) 0.39 0.086 h); |
106 | | - --color-on-primary-container: oklch(from var(--color-seed) 0.9 0.085 h); |
| 115 | + --color-outline: inherit; |
| 116 | + --color-outline-variant: inherit; |
| 117 | + --color-surface: inherit; |
| 118 | + --color-on-surface: inherit; |
| 119 | + --color-on-surface-variant: inherit; |
| 120 | + --color-surface-container-lowest: inherit; |
| 121 | + --color-surface-container-low: inherit; |
| 122 | + --color-surface-container: inherit; |
| 123 | + --color-surface-container-high: inherit; |
| 124 | + --color-surface-container-highest: inherit; |
| 125 | + --color-background: inherit; |
| 126 | + --color-on-background: inherit; |
| 127 | +} |
107 | 128 |
|
108 | | - --color-error: rgb(255 180 171); |
109 | | - --color-on-error: rgb(105 0 5); |
110 | | - --color-error-container: rgb(147 0 10); |
111 | | - --color-on-error-container: rgb(255 218 214); |
| 129 | +@utility dark-scheme { |
| 130 | + --color-primary: oklch(from var(--theme-seed) 0.82 c h); |
| 131 | + --color-primary-hover: oklch(from var(--theme-seed) 0.9 c h); |
| 132 | + --color-on-primary: oklch(from var(--theme-seed) 0.2 c h); |
112 | 133 |
|
113 | | - --color-shadow: oklch(0 0 0); |
114 | | - --color-scrim: oklch(0 0 0 / 0.5); |
| 134 | + --color-primary-container: oklch(from var(--theme-seed) 0.39 0.086 h); |
| 135 | + --color-on-primary-container: oklch(from var(--theme-seed) 0.9 0.085 h); |
115 | 136 |
|
116 | | - --color-surface-tint: var(--color-primary); |
117 | | - --color-surface: color-mix(in oklab, var(--color-shark-950) 100%, var(--color-surface-tint) 1.5%); |
118 | | - --color-background: var(--color-surface); |
| 137 | + --color-error: oklch(0.84 0.089 var(--error-hue)); |
| 138 | + --color-on-error: oklch(0.33 0.134 var(--error-hue)); |
| 139 | + --color-error-container: oklch(0.42 0.17 var(--error-hue)); |
| 140 | + --color-on-error-container: oklch(0.92 0.042 var(--error-hue)); |
119 | 141 |
|
120 | | - --color-on-surface: oklch(from var(--color-surface) 0.95 c h); |
121 | | - --color-on-surface-variant: oklch(from var(--color-surface) 0.8 calc(c * 2) h); |
122 | | - --color-on-background: var(--color-on-surface); |
| 142 | + --color-success: oklch(0.84 0.089 var(--success-hue)); |
| 143 | + --color-on-success: oklch(0.33 0.134 var(--success-hue)); |
| 144 | + --color-success-container: oklch(0.42 0.17 var(--success-hue)); |
| 145 | + --color-on-success-container: oklch(0.92 0.042 var(--success-hue)); |
123 | 146 |
|
124 | 147 | --color-outline: oklch(from var(--color-surface) 0.65 c h); |
125 | 148 | --color-outline-variant: oklch(from var(--color-surface) 0.4 c h); |
126 | 149 |
|
| 150 | + /* --color-surface: oklch( */ |
| 151 | + /* from color-mix(in oklab, var(--color-shark-950) 100%, var(--color-primary) 1.5%) l c h */ |
| 152 | + /* ); */ |
| 153 | + |
| 154 | + --color-surface: oklch(from var(--color-primary) 0.24 0.001 h); |
| 155 | + --color-on-surface: oklch(from var(--color-surface) 0.95 c h); |
| 156 | + --color-on-surface-variant: oklch(from var(--color-surface) 0.8 calc(c * 2) h); |
| 157 | + |
127 | 158 | /* Surface Containers ranked by emphasis (contrast) */ |
128 | 159 | --color-surface-container-lowest: oklch(from var(--color-surface) calc(l - 0.01) c h); |
129 | 160 | --color-surface-container-low: oklch(from var(--color-surface) calc(l + 0.01) c h); |
130 | 161 | --color-surface-container: oklch(from var(--color-surface) calc(l + 0.023) c h); |
131 | 162 | --color-surface-container-high: oklch(from var(--color-surface) calc(l + 0.05) c h); |
132 | 163 | --color-surface-container-highest: oklch(from var(--color-surface) calc(l + 0.1) c h); |
| 164 | + |
| 165 | + --color-background: var(--color-surface); |
| 166 | + --color-on-background: var(--color-on-surface); |
133 | 167 | } |
134 | 168 |
|
135 | | -/* |
136 | | - The default border color has changed to `currentColor` in Tailwind CSS v4, |
137 | | - so we've added these compatibility styles to make sure everything still |
138 | | - looks the same as it did with Tailwind CSS v3. |
| 169 | +@utility light-scheme { |
| 170 | + --color-primary: oklch(from var(--theme-seed) 0.4 c h); |
| 171 | + --color-primary-hover: oklch(from var(--theme-seed) 0.5 c h); |
| 172 | + --color-on-primary: oklch(from var(--theme-seed) 1 0 h); |
139 | 173 |
|
140 | | - If we ever want to remove these styles, we need to add an explicit border |
141 | | - color utility to any element that depends on these defaults. |
142 | | -*/ |
143 | | -@layer base { |
144 | | - *, |
145 | | - ::after, |
146 | | - ::before, |
147 | | - ::backdrop, |
148 | | - ::file-selector-button { |
149 | | - border-color: var(--color-outline, currentColor); |
150 | | - } |
| 174 | + --color-primary-container: oklch(from var(--theme-seed) 0.9 0.086 h); |
| 175 | + --color-on-primary-container: oklch(from var(--theme-seed) 0.218 0.085 h); |
151 | 176 |
|
152 | | - html { |
153 | | - @apply bg-background text-on-background h-full; |
154 | | - color-scheme: dark light; |
155 | | - touch-action: manipulation; |
156 | | - scrollbar-gutter: stable; |
| 177 | + --color-error: oklch(0.51 0.1927 var(--error-hue)); |
| 178 | + --color-on-error: oklch(1 0 var(--error-hue)); |
| 179 | + --color-error-container: oklch(0.92 0.042 var(--error-hue)); |
| 180 | + --color-on-error-container: oklch(0.42 0.17 var(--error-hue)); |
157 | 181 |
|
158 | | - ::selection { |
159 | | - @apply bg-primary text-on-primary; |
160 | | - } |
161 | | - } |
| 182 | + --color-success: oklch(0.51 0.1927 var(--success-hue)); |
| 183 | + --color-on-success: oklch(1 0 var(--success-hue)); |
| 184 | + --color-success-container: oklch(0.92 0.042 var(--success-hue)); |
| 185 | + --color-on-success-container: oklch(0.42 0.17 var(--success-hue)); |
162 | 186 |
|
163 | | - body { |
164 | | - @apply h-auto min-h-svh; |
| 187 | + --color-outline: oklch(from var(--color-surface) 0.5664 c h); |
| 188 | + --color-outline-variant: oklch(from var(--color-surface) 0.8267 c h); |
| 189 | + |
| 190 | + --color-surface: oklch(from var(--color-primary) 0.98 0.007 h); |
| 191 | + --color-on-surface: oklch(from var(--color-surface) 0.22 c h); |
| 192 | + --color-on-surface-variant: oklch(from var(--color-surface) 0.4 0.015 h); |
| 193 | + |
| 194 | + --color-surface-container-lowest: oklch(from var(--color-surface) calc(l + 0.01) 0.01 h); |
| 195 | + --color-surface-container-low: oklch(from var(--color-surface) calc(l - 0.01) 0.01 h); |
| 196 | + --color-surface-container: oklch(from var(--color-surface) calc(l - 0.023) 0.01 h); |
| 197 | + --color-surface-container-high: oklch(from var(--color-surface) calc(l - 0.05) 0.01 h); |
| 198 | + --color-surface-container-highest: oklch(from var(--color-surface) calc(l - 0.1) 0.01 h); |
| 199 | + |
| 200 | + --color-background: var(--color-surface); |
| 201 | + --color-on-background: var(--color-on-surface); |
| 202 | +} |
| 203 | + |
| 204 | +@layer base { |
| 205 | + /* Schemes */ |
| 206 | + [data-scheme='light'] { |
| 207 | + @apply light-scheme; |
165 | 208 | } |
166 | 209 |
|
167 | | - p, |
168 | | - li { |
169 | | - @apply text-muted text-base font-normal; |
| 210 | + [data-scheme='dark'] { |
| 211 | + @apply dark-scheme; |
170 | 212 | } |
| 213 | + |
| 214 | + /* Themes */ |
171 | 215 | [data-theme='eos'] { |
172 | | - --color-seed: rgb(248 187 113); |
| 216 | + --theme-seed: rgb(248 187 113); |
173 | 217 | } |
174 | 218 |
|
175 | 219 | [data-theme='telos'] { |
176 | | - --color-seed: rgb(207 189 254); |
| 220 | + --theme-seed: rgb(207 189 254); |
| 221 | + &[data-scheme='dark'] { |
| 222 | + --color-surface: oklch(from var(--color-primary) 0.24 0.02 h); |
| 223 | + } |
177 | 224 | } |
178 | 225 |
|
179 | 226 | [data-theme='jungle4'] { |
180 | | - --color-seed: #2e9e87; |
| 227 | + --theme-seed: #2e9e87; |
| 228 | + &[data-scheme='dark'] { |
| 229 | + --color-surface: oklch(from var(--color-primary) 0.24 0.005 h); |
| 230 | + } |
181 | 231 | } |
182 | 232 |
|
183 | 233 | [data-theme='vaulta'] { |
184 | | - --color-seed: #2e3bff; |
| 234 | + --theme-seed: #2e3bff; |
| 235 | + &[data-scheme='dark'] { |
| 236 | + --color-surface: oklch(from var(--color-primary) 0.24 0.02 h); |
| 237 | + } |
185 | 238 | } |
186 | 239 |
|
187 | 240 | [data-theme='wax'] { |
188 | | - --color-seed: rgb(255 183 123); |
| 241 | + --theme-seed: rgb(255 183 123); |
| 242 | + &[data-scheme='dark'] { |
| 243 | + --color-surface: oklch(from var(--color-primary) 0.24 0.001 h); |
| 244 | + } |
189 | 245 | } |
190 | 246 |
|
191 | 247 | [data-theme='kylin'] { |
192 | | - --color-seed: rgb(255 180 168); |
| 248 | + --theme-seed: rgb(255 180 168); |
| 249 | + } |
| 250 | + |
| 251 | + /* Element defaults */ |
| 252 | + :root { |
| 253 | + @apply bg-background text-on-background h-full; |
| 254 | + color-scheme: dark light; |
| 255 | + touch-action: manipulation; |
| 256 | + scrollbar-gutter: stable; |
| 257 | + |
| 258 | + ::selection { |
| 259 | + @apply bg-primary text-on-primary; |
| 260 | + } |
193 | 261 | } |
194 | 262 |
|
195 | | - /* Light Mode Themes */ |
196 | | - @media (prefers-color-scheme: light) { |
| 263 | + body { |
| 264 | + @apply h-auto min-h-svh; |
| 265 | + } |
| 266 | + |
| 267 | + p, |
| 268 | + li { |
| 269 | + @apply text-muted text-base font-normal; |
197 | 270 | } |
198 | 271 | } |
199 | 272 |
|
200 | 273 | @utility h1 { |
201 | | - /* Headings are defined by class instead of tag to preserve semantic html independent of style */ |
202 | 274 | @apply text-5xl leading-none font-semibold; |
203 | 275 | } |
204 | 276 |
|
|
0 commit comments