native ui + touch id unlock + portfolio dashboard

This commit is contained in:
2026-08-01 19:07:49 +08:00
parent 42a22918a3
commit bd8ba8e3e5
18 changed files with 675 additions and 194 deletions
+93 -61
View File
@@ -6,77 +6,78 @@
@custom-variant dark (&:is(.dark *));
:root {
--background: oklch(1 0 0);
--foreground: oklch(0.145 0 0);
--background: oklch(0.99 0 0);
--foreground: oklch(0.16 0 0);
--card: oklch(1 0 0);
--card-foreground: oklch(0.145 0 0);
--card-foreground: oklch(0.16 0 0);
--popover: oklch(1 0 0);
--popover-foreground: oklch(0.145 0 0);
--primary: oklch(0.553 0.195 38.402);
--primary-foreground: oklch(0.98 0.016 73.684);
--secondary: oklch(0.967 0.001 286.375);
--secondary-foreground: oklch(0.21 0.006 285.885);
--muted: oklch(0.97 0 0);
--muted-foreground: oklch(0.556 0 0);
--accent: oklch(0.553 0.195 38.402);
--accent-foreground: oklch(0.98 0.016 73.684);
--popover-foreground: oklch(0.16 0 0);
--primary: oklch(0.4 0 0);
--primary-foreground: oklch(0.99 0 0);
--secondary: oklch(0.96 0 0);
--secondary-foreground: oklch(0.2 0 0);
--muted: oklch(0.965 0 0);
--muted-foreground: oklch(0.52 0 0);
--accent: oklch(0.94 0 0);
--accent-foreground: oklch(0.2 0 0);
--destructive: oklch(0.577 0.245 27.325);
--border: oklch(0.922 0 0);
--input: oklch(0.922 0 0);
--ring: oklch(0.708 0 0);
--chart-1: oklch(0.837 0.128 66.29);
--chart-2: oklch(0.705 0.213 47.604);
--chart-3: oklch(0.646 0.222 41.116);
--chart-4: oklch(0.553 0.195 38.402);
--chart-5: oklch(0.47 0.157 37.304);
--radius: 0rem;
--sidebar: oklch(0.985 0 0);
--sidebar-foreground: oklch(0.145 0 0);
--sidebar-primary: oklch(0.646 0.222 41.116);
--sidebar-primary-foreground: oklch(0.98 0.016 73.684);
--sidebar-accent: oklch(0.97 0 0);
--sidebar-accent-foreground: oklch(0.205 0 0);
--sidebar-border: oklch(0.922 0 0);
--sidebar-ring: oklch(0.708 0 0);
--border: oklch(0.905 0 0);
--input: oklch(0.905 0 0);
--ring: oklch(0.6 0 0);
--chart-1: oklch(0.4 0 0);
--chart-2: oklch(0.55 0 0);
--chart-3: oklch(0.68 0 0);
--chart-4: oklch(0.78 0 0);
--chart-5: oklch(0.88 0 0);
--radius: 0.625rem;
--sidebar: oklch(0.97 0 0);
--sidebar-foreground: oklch(0.2 0 0);
--sidebar-primary: oklch(0.35 0 0);
--sidebar-primary-foreground: oklch(0.99 0 0);
--sidebar-accent: oklch(0.92 0 0);
--sidebar-accent-foreground: oklch(0.2 0 0);
--sidebar-border: oklch(0.905 0 0);
--sidebar-ring: oklch(0.6 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);
--popover: oklch(0.205 0 0);
--popover-foreground: oklch(0.985 0 0);
--primary: oklch(0.47 0.157 37.304);
--primary-foreground: oklch(0.98 0.016 73.684);
--secondary: oklch(0.274 0.006 286.033);
--secondary-foreground: oklch(0.985 0 0);
--muted: oklch(0.269 0 0);
--muted-foreground: oklch(0.708 0 0);
--accent: oklch(0.47 0.157 37.304);
--accent-foreground: oklch(0.98 0.016 73.684);
--background: oklch(0.21 0 0);
--foreground: oklch(0.96 0 0);
--card: oklch(0.235 0 0);
--card-foreground: oklch(0.96 0 0);
--popover: oklch(0.25 0 0);
--popover-foreground: oklch(0.96 0 0);
--primary: oklch(0.5 0 0);
--primary-foreground: oklch(0.99 0 0);
--secondary: oklch(0.29 0 0);
--secondary-foreground: oklch(0.96 0 0);
--muted: oklch(0.27 0 0);
--muted-foreground: oklch(0.66 0 0);
--accent: oklch(0.3 0 0);
--accent-foreground: oklch(0.96 0 0);
--destructive: oklch(0.704 0.191 22.216);
--border: oklch(1 0 0 / 10%);
--input: oklch(1 0 0 / 15%);
--ring: oklch(0.556 0 0);
--chart-1: oklch(0.837 0.128 66.29);
--chart-2: oklch(0.705 0.213 47.604);
--chart-3: oklch(0.646 0.222 41.116);
--chart-4: oklch(0.553 0.195 38.402);
--chart-5: oklch(0.47 0.157 37.304);
--border: oklch(1 0 0 / 12%);
--input: oklch(1 0 0 / 16%);
--ring: oklch(0.55 0 0);
--chart-1: oklch(0.7 0 0);
--chart-2: oklch(0.6 0 0);
--chart-3: oklch(0.5 0 0);
--chart-4: oklch(0.4 0 0);
--chart-5: oklch(0.3 0 0);
--sidebar: oklch(0.205 0 0);
--sidebar-foreground: oklch(0.985 0 0);
--sidebar-primary: oklch(0.705 0.213 47.604);
--sidebar-primary-foreground: oklch(0.98 0.016 73.684);
--sidebar-accent: oklch(0.269 0 0);
--sidebar-accent-foreground: oklch(0.985 0 0);
--sidebar-foreground: oklch(0.92 0 0);
--sidebar-primary: oklch(0.7 0 0);
--sidebar-primary-foreground: oklch(0.1 0 0);
--sidebar-accent: oklch(0.28 0 0);
--sidebar-accent-foreground: oklch(0.96 0 0);
--sidebar-border: oklch(1 0 0 / 10%);
--sidebar-ring: oklch(0.556 0 0);
--sidebar-ring: oklch(0.55 0 0);
}
@theme inline {
--font-mono: 'Geist Mono Variable', monospace;
--font-heading: 'Geist Mono Variable', monospace;
--font-sans: -apple-system, BlinkMacSystemFont, "SF Pro Text", "SF Pro Display", "Segoe UI", system-ui, sans-serif;
--font-mono: 'Geist Mono Variable', ui-monospace, SFMono-Regular, Menlo, monospace;
--font-heading: -apple-system, BlinkMacSystemFont, "SF Pro Display", "Segoe UI", system-ui, sans-serif;
--color-sidebar-ring: var(--sidebar-ring);
--color-sidebar-border: var(--sidebar-border);
--color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
@@ -121,10 +122,41 @@
* {
@apply border-border outline-ring/50;
}
html {
@apply font-sans;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-rendering: optimizeLegibility;
font-feature-settings: "ss01", "cv01";
}
body {
@apply bg-background text-foreground;
}
html {
@apply font-mono;
::selection {
background: oklch(0.5 0 0 / 25%);
}
}
@layer base {
* {
scrollbar-width: thin;
scrollbar-color: oklch(0.5 0 0 / 25%) transparent;
}
::-webkit-scrollbar {
width: 8px;
height: 8px;
}
::-webkit-scrollbar-track {
background: transparent;
}
::-webkit-scrollbar-thumb {
background: oklch(0.5 0 0 / 22%);
border-radius: 9999px;
border: 2px solid transparent;
background-clip: content-box;
}
::-webkit-scrollbar-thumb:hover {
background: oklch(0.5 0 0 / 38%);
background-clip: content-box;
}
}