refactor: migrate frontend from React to SvelteKit

This commit is contained in:
2026-01-28 20:41:20 -06:00
parent 0ce0257fdc
commit e3b855b956
35 changed files with 790 additions and 1755 deletions
+84
View File
@@ -0,0 +1,84 @@
@import "tailwindcss";
@import "@fontsource-variable/inter";
@custom-variant dark (&:where(.dark, .dark *));
:root {
--background: oklch(0.985 0 0);
--foreground: oklch(0.145 0 0);
--card: oklch(1 0 0);
--card-foreground: oklch(0.145 0 0);
--muted: oklch(0.96 0 0);
--muted-foreground: oklch(0.556 0 0);
--border: oklch(0.922 0 0);
--ring: oklch(0.708 0 0);
--status-green: oklch(0.65 0.2 145);
--status-red: oklch(0.63 0.2 25);
--status-orange: oklch(0.75 0.18 70);
--status-gray: oklch(0.556 0 0);
}
.dark {
--background: oklch(0.145 0 0);
--foreground: oklch(0.985 0 0);
--card: oklch(0.205 0 0);
--card-foreground: oklch(0.985 0 0);
--muted: oklch(0.269 0 0);
--muted-foreground: oklch(0.708 0 0);
--border: oklch(0.269 0 0);
--ring: oklch(0.556 0 0);
--status-green: oklch(0.72 0.19 145);
--status-red: oklch(0.7 0.19 25);
--status-orange: oklch(0.8 0.16 70);
--status-gray: oklch(0.708 0 0);
}
@theme inline {
--color-background: var(--background);
--color-foreground: var(--foreground);
--color-card: var(--card);
--color-card-foreground: var(--card-foreground);
--color-muted: var(--muted);
--color-muted-foreground: var(--muted-foreground);
--color-border: var(--border);
--color-ring: var(--ring);
--color-status-green: var(--status-green);
--color-status-red: var(--status-red);
--color-status-orange: var(--status-orange);
--color-status-gray: var(--status-gray);
--font-sans: "Inter Variable", ui-sans-serif, system-ui, sans-serif;
}
* {
border-color: var(--border);
}
body {
background-color: var(--background);
color: var(--foreground);
font-family: var(--font-sans);
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
margin: 0;
}
body,
body * {
transition: background-color 300ms, color 300ms, border-color 300ms, fill 300ms;
}
@keyframes pulse {
0%,
100% {
opacity: 0.2;
}
50% {
opacity: 0.4;
}
}
.animate-pulse {
animation: pulse 2s ease-in-out infinite;
}