feat: integrate radix colors and theme switching

This commit is contained in:
OmarMcAdam
2026-01-20 08:20:16 -08:00
parent 3d7514dec2
commit 87d8f1bc43
6 changed files with 58 additions and 370 deletions

View File

@@ -23,7 +23,7 @@
})();
</script>
</head>
<body class="bg-gray-1 text-gray-12">
<body class="bg-gray-12 text-gray-12">
<div id="root"></div>
<script type="module" src="/src/index.tsx"></script>
</body>

2
src-tauri/Cargo.lock generated
View File

@@ -2371,7 +2371,7 @@ dependencies = [
[[package]]
name = "openwork"
version = "0.2.3"
version = "0.2.2"
dependencies = [
"serde",
"serde_json",

View File

@@ -3,367 +3,44 @@
@import "../styles/colors.css";
@theme {
--color-gray-1: var(--gray-1);
--color-gray-2: var(--gray-2);
--color-gray-3: var(--gray-3);
--color-gray-4: var(--gray-4);
--color-gray-5: var(--gray-5);
--color-gray-6: var(--gray-6);
--color-gray-7: var(--gray-7);
--color-gray-8: var(--gray-8);
--color-gray-9: var(--gray-9);
--color-gray-10: var(--gray-10);
--color-gray-11: var(--gray-11);
--color-gray-12: var(--gray-12);
--color-mauve-1: var(--mauve-1);
--color-mauve-2: var(--mauve-2);
--color-mauve-3: var(--mauve-3);
--color-mauve-4: var(--mauve-4);
--color-mauve-5: var(--mauve-5);
--color-mauve-6: var(--mauve-6);
--color-mauve-7: var(--mauve-7);
--color-mauve-8: var(--mauve-8);
--color-mauve-9: var(--mauve-9);
--color-mauve-10: var(--mauve-10);
--color-mauve-11: var(--mauve-11);
--color-mauve-12: var(--mauve-12);
--color-slate-1: var(--slate-1);
--color-slate-2: var(--slate-2);
--color-slate-3: var(--slate-3);
--color-slate-4: var(--slate-4);
--color-slate-5: var(--slate-5);
--color-slate-6: var(--slate-6);
--color-slate-7: var(--slate-7);
--color-slate-8: var(--slate-8);
--color-slate-9: var(--slate-9);
--color-slate-10: var(--slate-10);
--color-slate-11: var(--slate-11);
--color-slate-12: var(--slate-12);
--color-blue-1: var(--blue-1);
--color-blue-2: var(--blue-2);
--color-blue-3: var(--blue-3);
--color-blue-4: var(--blue-4);
--color-blue-5: var(--blue-5);
--color-blue-6: var(--blue-6);
--color-blue-7: var(--blue-7);
--color-blue-8: var(--blue-8);
--color-blue-9: var(--blue-9);
--color-blue-10: var(--blue-10);
--color-blue-11: var(--blue-11);
--color-blue-12: var(--blue-12);
--color-green-1: var(--green-1);
--color-green-2: var(--green-2);
--color-green-3: var(--green-3);
--color-green-4: var(--green-4);
--color-green-5: var(--green-5);
--color-green-6: var(--green-6);
--color-green-7: var(--green-7);
--color-green-8: var(--green-8);
--color-green-9: var(--green-9);
--color-green-10: var(--green-10);
--color-green-11: var(--green-11);
--color-green-12: var(--green-12);
--color-red-1: var(--red-1);
--color-red-2: var(--red-2);
--color-red-3: var(--red-3);
--color-red-4: var(--red-4);
--color-red-5: var(--red-5);
--color-red-6: var(--red-6);
--color-red-7: var(--red-7);
--color-red-8: var(--red-8);
--color-red-9: var(--red-9);
--color-red-10: var(--red-10);
--color-red-11: var(--red-11);
--color-red-12: var(--red-12);
--color-orange-1: var(--orange-1);
--color-orange-2: var(--orange-2);
--color-orange-3: var(--orange-3);
--color-orange-4: var(--orange-4);
--color-orange-5: var(--orange-5);
--color-orange-6: var(--orange-6);
--color-orange-7: var(--orange-7);
--color-orange-8: var(--orange-8);
--color-orange-9: var(--orange-9);
--color-orange-10: var(--orange-10);
--color-orange-11: var(--orange-11);
--color-orange-12: var(--orange-12);
--color-yellow-1: var(--yellow-1);
--color-yellow-2: var(--yellow-2);
--color-yellow-3: var(--yellow-3);
--color-yellow-4: var(--yellow-4);
--color-yellow-5: var(--yellow-5);
--color-yellow-6: var(--yellow-6);
--color-yellow-7: var(--yellow-7);
--color-yellow-8: var(--yellow-8);
--color-yellow-9: var(--yellow-9);
--color-yellow-10: var(--yellow-10);
--color-yellow-11: var(--yellow-11);
--color-yellow-12: var(--yellow-12);
--color-amber-1: var(--amber-1);
--color-amber-2: var(--amber-2);
--color-amber-3: var(--amber-3);
--color-amber-4: var(--amber-4);
--color-amber-5: var(--amber-5);
--color-amber-6: var(--amber-6);
--color-amber-7: var(--amber-7);
--color-amber-8: var(--amber-8);
--color-amber-9: var(--amber-9);
--color-amber-10: var(--amber-10);
--color-amber-11: var(--amber-11);
--color-amber-12: var(--amber-12);
--color-teal-1: var(--teal-1);
--color-teal-2: var(--teal-2);
--color-teal-3: var(--teal-3);
--color-teal-4: var(--teal-4);
--color-teal-5: var(--teal-5);
--color-teal-6: var(--teal-6);
--color-teal-7: var(--teal-7);
--color-teal-8: var(--teal-8);
--color-teal-9: var(--teal-9);
--color-teal-10: var(--teal-10);
--color-teal-11: var(--teal-11);
--color-teal-12: var(--teal-12);
--color-cyan-1: var(--cyan-1);
--color-cyan-2: var(--cyan-2);
--color-cyan-3: var(--cyan-3);
--color-cyan-4: var(--cyan-4);
--color-cyan-5: var(--cyan-5);
--color-cyan-6: var(--cyan-6);
--color-cyan-7: var(--cyan-7);
--color-cyan-8: var(--cyan-8);
--color-cyan-9: var(--cyan-9);
--color-cyan-10: var(--cyan-10);
--color-cyan-11: var(--cyan-11);
--color-cyan-12: var(--cyan-12);
--color-purple-1: var(--purple-1);
--color-purple-2: var(--purple-2);
--color-purple-3: var(--purple-3);
--color-purple-4: var(--purple-4);
--color-purple-5: var(--purple-5);
--color-purple-6: var(--purple-6);
--color-purple-7: var(--purple-7);
--color-purple-8: var(--purple-8);
--color-purple-9: var(--purple-9);
--color-purple-10: var(--purple-10);
--color-purple-11: var(--purple-11);
--color-purple-12: var(--purple-12);
--color-violet-1: var(--violet-1);
--color-violet-2: var(--violet-2);
--color-violet-3: var(--violet-3);
--color-violet-4: var(--violet-4);
--color-violet-5: var(--violet-5);
--color-violet-6: var(--violet-6);
--color-violet-7: var(--violet-7);
--color-violet-8: var(--violet-8);
--color-violet-9: var(--violet-9);
--color-violet-10: var(--violet-10);
--color-violet-11: var(--violet-11);
--color-violet-12: var(--violet-12);
--color-indigo-1: var(--indigo-1);
--color-indigo-2: var(--indigo-2);
--color-indigo-3: var(--indigo-3);
--color-indigo-4: var(--indigo-4);
--color-indigo-5: var(--indigo-5);
--color-indigo-6: var(--indigo-6);
--color-indigo-7: var(--indigo-7);
--color-indigo-8: var(--indigo-8);
--color-indigo-9: var(--indigo-9);
--color-indigo-10: var(--indigo-10);
--color-indigo-11: var(--indigo-11);
--color-indigo-12: var(--indigo-12);
--color-pink-1: var(--pink-1);
--color-pink-2: var(--pink-2);
--color-pink-3: var(--pink-3);
--color-pink-4: var(--pink-4);
--color-pink-5: var(--pink-5);
--color-pink-6: var(--pink-6);
--color-pink-7: var(--pink-7);
--color-pink-8: var(--pink-8);
--color-pink-9: var(--pink-9);
--color-pink-10: var(--pink-10);
--color-pink-11: var(--pink-11);
--color-pink-12: var(--pink-12);
--color-tomato-1: var(--tomato-1);
--color-tomato-2: var(--tomato-2);
--color-tomato-3: var(--tomato-3);
--color-tomato-4: var(--tomato-4);
--color-tomato-5: var(--tomato-5);
--color-tomato-6: var(--tomato-6);
--color-tomato-7: var(--tomato-7);
--color-tomato-8: var(--tomato-8);
--color-tomato-9: var(--tomato-9);
--color-tomato-10: var(--tomato-10);
--color-tomato-11: var(--tomato-11);
--color-tomato-12: var(--tomato-12);
--color-ruby-1: var(--ruby-1);
--color-ruby-2: var(--ruby-2);
--color-ruby-3: var(--ruby-3);
--color-ruby-4: var(--ruby-4);
--color-ruby-5: var(--ruby-5);
--color-ruby-6: var(--ruby-6);
--color-ruby-7: var(--ruby-7);
--color-ruby-8: var(--ruby-8);
--color-ruby-9: var(--ruby-9);
--color-ruby-10: var(--ruby-10);
--color-ruby-11: var(--ruby-11);
--color-ruby-12: var(--ruby-12);
--color-crimson-1: var(--crimson-1);
--color-crimson-2: var(--crimson-2);
--color-crimson-3: var(--crimson-3);
--color-crimson-4: var(--crimson-4);
--color-crimson-5: var(--crimson-5);
--color-crimson-6: var(--crimson-6);
--color-crimson-7: var(--crimson-7);
--color-crimson-8: var(--crimson-8);
--color-crimson-9: var(--crimson-9);
--color-crimson-10: var(--crimson-10);
--color-crimson-11: var(--crimson-11);
--color-crimson-12: var(--crimson-12);
--color-iris-1: var(--iris-1);
--color-iris-2: var(--iris-2);
--color-iris-3: var(--iris-3);
--color-iris-4: var(--iris-4);
--color-iris-5: var(--iris-5);
--color-iris-6: var(--iris-6);
--color-iris-7: var(--iris-7);
--color-iris-8: var(--iris-8);
--color-iris-9: var(--iris-9);
--color-iris-10: var(--iris-10);
--color-iris-11: var(--iris-11);
--color-iris-12: var(--iris-12);
--color-jade-1: var(--jade-1);
--color-jade-2: var(--jade-2);
--color-jade-3: var(--jade-3);
--color-jade-4: var(--jade-4);
--color-jade-5: var(--jade-5);
--color-jade-6: var(--jade-6);
--color-jade-7: var(--jade-7);
--color-jade-8: var(--jade-8);
--color-jade-9: var(--jade-9);
--color-jade-10: var(--jade-10);
--color-jade-11: var(--jade-11);
--color-jade-12: var(--jade-12);
--color-grass-1: var(--grass-1);
--color-grass-2: var(--grass-2);
--color-grass-3: var(--grass-3);
--color-grass-4: var(--grass-4);
--color-grass-5: var(--grass-5);
--color-grass-6: var(--grass-6);
--color-grass-7: var(--grass-7);
--color-grass-8: var(--grass-8);
--color-grass-9: var(--grass-9);
--color-grass-10: var(--grass-10);
--color-grass-11: var(--grass-11);
--color-grass-12: var(--grass-12);
--color-lime-1: var(--lime-1);
--color-lime-2: var(--lime-2);
--color-lime-3: var(--lime-3);
--color-lime-4: var(--lime-4);
--color-lime-5: var(--lime-5);
--color-lime-6: var(--lime-6);
--color-lime-7: var(--lime-7);
--color-lime-8: var(--lime-8);
--color-lime-9: var(--lime-9);
--color-lime-10: var(--lime-10);
--color-lime-11: var(--lime-11);
--color-lime-12: var(--lime-12);
--color-mint-1: var(--mint-1);
--color-mint-2: var(--mint-2);
--color-mint-3: var(--mint-3);
--color-mint-4: var(--mint-4);
--color-mint-5: var(--mint-5);
--color-mint-6: var(--mint-6);
--color-mint-7: var(--mint-7);
--color-mint-8: var(--mint-8);
--color-mint-9: var(--mint-9);
--color-mint-10: var(--mint-10);
--color-mint-11: var(--mint-11);
--color-mint-12: var(--mint-12);
--color-sky-1: var(--sky-1);
--color-sky-2: var(--sky-2);
--color-sky-3: var(--sky-3);
--color-sky-4: var(--sky-4);
--color-sky-5: var(--sky-5);
--color-sky-6: var(--sky-6);
--color-sky-7: var(--sky-7);
--color-sky-8: var(--sky-8);
--color-sky-9: var(--sky-9);
--color-sky-10: var(--sky-10);
--color-sky-11: var(--sky-11);
--color-sky-12: var(--sky-12);
--color-brown-1: var(--brown-1);
--color-brown-2: var(--brown-2);
--color-brown-3: var(--brown-3);
--color-brown-4: var(--brown-4);
--color-brown-5: var(--brown-5);
--color-brown-6: var(--brown-6);
--color-brown-7: var(--brown-7);
--color-brown-8: var(--brown-8);
--color-brown-9: var(--brown-9);
--color-brown-10: var(--brown-10);
--color-brown-11: var(--brown-11);
--color-brown-12: var(--brown-12);
--color-bronze-1: var(--bronze-1);
--color-bronze-2: var(--bronze-2);
--color-bronze-3: var(--bronze-3);
--color-bronze-4: var(--bronze-4);
--color-bronze-5: var(--bronze-5);
--color-bronze-6: var(--bronze-6);
--color-bronze-7: var(--bronze-7);
--color-bronze-8: var(--bronze-8);
--color-bronze-9: var(--bronze-9);
--color-bronze-10: var(--bronze-10);
--color-bronze-11: var(--bronze-11);
--color-bronze-12: var(--bronze-12);
--color-gold-1: var(--gold-1);
--color-gold-2: var(--gold-2);
--color-gold-3: var(--gold-3);
--color-gold-4: var(--gold-4);
--color-gold-5: var(--gold-5);
--color-gold-6: var(--gold-6);
--color-gold-7: var(--gold-7);
--color-gold-8: var(--gold-8);
--color-gold-9: var(--gold-9);
--color-gold-10: var(--gold-10);
--color-gold-11: var(--gold-11);
--color-gold-12: var(--gold-12);
--color-sand-1: var(--sand-1);
--color-sand-2: var(--sand-2);
--color-sand-3: var(--sand-3);
--color-sand-4: var(--sand-4);
--color-sand-5: var(--sand-5);
--color-sand-6: var(--sand-6);
--color-sand-7: var(--sand-7);
--color-sand-8: var(--sand-8);
--color-sand-9: var(--sand-9);
--color-sand-10: var(--sand-10);
--color-sand-11: var(--sand-11);
--color-sand-12: var(--sand-12);
--color-olive-1: var(--olive-1);
--color-olive-2: var(--olive-2);
--color-olive-3: var(--olive-3);
--color-olive-4: var(--olive-4);
--color-olive-5: var(--olive-5);
--color-olive-6: var(--olive-6);
--color-olive-7: var(--olive-7);
--color-olive-8: var(--olive-8);
--color-olive-9: var(--olive-9);
--color-olive-10: var(--olive-10);
--color-olive-11: var(--olive-11);
--color-olive-12: var(--olive-12);
--color-sage-1: var(--sage-1);
--color-sage-2: var(--sage-2);
--color-sage-3: var(--sage-3);
--color-sage-4: var(--sage-4);
--color-sage-5: var(--sage-5);
--color-sage-6: var(--sage-6);
--color-sage-7: var(--sage-7);
--color-sage-8: var(--sage-8);
--color-sage-9: var(--sage-9);
--color-sage-10: var(--sage-10);
--color-sage-11: var(--sage-11);
--color-sage-12: var(--sage-12);
:root {
color-scheme: light;
}
[data-theme="dark"] {
color-scheme: dark;
}
html,
body {
height: 100%;
}
body {
margin: 0;
font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
"Helvetica Neue", Arial, "Noto Sans", "Apple Color Emoji", "Segoe UI Emoji";
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
@utility animate-spin-slow {
animation: spin 3s linear infinite;
}
@keyframes soft-pulse {
0%, 100% {
transform: scale(1);
opacity: 0.4;
}
50% {
transform: scale(1.15);
opacity: 1;
}
}
@utility animate-soft-pulse {
animation: soft-pulse 1.5s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}
:root {

View File

@@ -295,8 +295,8 @@ export default function DashboardView(props: DashboardViewProps) {
<aside class="w-64 border-r border-gray-6 p-6 hidden md:flex flex-col justify-between bg-gray-1">
<div>
<div class="flex items-center gap-3 mb-10 px-2">
<div class="w-8 h-8 rounded-lg flex items-center justify-center">
<OpenWorkLogo size={18} class="text-gray-12" />
<div class="w-8 h-8 bg-gray-12 rounded-lg flex items-center justify-center">
<OpenWorkLogo size={18} class="text-gray-1" />
</div>
<span class="font-bold text-lg tracking-tight">OpenWork</span>
</div>

View File

@@ -111,10 +111,10 @@ export default function OnboardingView(props: OnboardingViewProps) {
<div class="absolute top-0 left-0 w-full h-96 bg-gradient-to-b from-gray-2 to-transparent opacity-20 pointer-events-none" />
<div class="max-w-lg w-full z-10 space-y-6">
<div class="text-center space-y-2">
<div class="w-12 h-12 rounded-2xl mx-auto flex items-center justify-center mb-6">
<OpenWorkLogo size={18} class="text-gray-12" />
</div>
<div class="text-center space-y-2">
<div class="w-12 h-12 bg-gray-12 rounded-2xl mx-auto flex items-center justify-center shadow-2xl shadow-gray-12/10 mb-6">
<OpenWorkLogo size={18} class="text-gray-1" />
</div>
<h2 class="text-2xl font-bold tracking-tight">
{props.workspaces.length <= 1 ? "Create your first workspace" : "Create a workspace"}
</h2>
@@ -436,7 +436,7 @@ export default function OnboardingView(props: OnboardingViewProps) {
<div class="max-w-xl w-full z-10 space-y-12">
<div class="text-center space-y-4">
<div class="flex items-center justify-center gap-3 mb-6">
<div class="w-12 h-12 rounded-xl flex items-center justify-center">
<div class="w-12 h-12 bg-gray-12 rounded-xl flex items-center justify-center">
<OpenWorkLogo size={24} class="text-gray-1" />
</div>
<h1 class="text-3xl font-bold tracking-tight text-gray-12">OpenWork</h1>

View File

@@ -1,3 +1,14 @@
import { radixColors, tailwindSafelist } from './src/styles/tailwind-colors';
export default {
content: ["./index.html", "./src/**/*.{ts,tsx}"],
darkMode: 'class',
safelist: [
tailwindSafelist
],
theme: {
// OVERRIDE the base theme completely instead of extending it
colors: {
...radixColors,
}
}
};