From 08e8ebd1e05be6a153e15f02e717e460cb671829 Mon Sep 17 00:00:00 2001 From: Marko Djordjevic Date: Thu, 12 Feb 2026 16:01:33 +0100 Subject: [PATCH] design: change to minimalistic and clean light theme - Replace Matrix/terminal dark theme with modern light design - Update Tailwind config with clean, professional color palette - Change from monospace to Inter sans-serif font - Update chart styling to use white background with subtle grids - Remove glow effects and neon colors from buttons and UI - Update color picker with better color options - Improve sidebar spacing and typography - Update annotation badges with softer colors - Change scrollbar styling to match light theme --- drizzle/0000_sweet_roland_deschain.sql | 18 ++++ drizzle/0001_broken_the_fury.sql | 1 + drizzle/meta/0001_snapshot.json | 131 +++++++++++++++++++++++++ src/app/globals.css | 48 ++++----- src/app/page.tsx | 37 +++---- src/components/CandleChart.tsx | 22 ++--- src/components/FileUpload.tsx | 11 +-- src/components/Toolbox.tsx | 28 +++--- tailwind.config.ts | 37 +------ 9 files changed, 225 insertions(+), 108 deletions(-) create mode 100644 drizzle/0000_sweet_roland_deschain.sql create mode 100644 drizzle/0001_broken_the_fury.sql create mode 100644 drizzle/meta/0001_snapshot.json diff --git a/drizzle/0000_sweet_roland_deschain.sql b/drizzle/0000_sweet_roland_deschain.sql new file mode 100644 index 0000000..0f50ef2 --- /dev/null +++ b/drizzle/0000_sweet_roland_deschain.sql @@ -0,0 +1,18 @@ +CREATE TABLE `annotations` ( + `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL, + `timestamp` integer NOT NULL, + `label_type` text NOT NULL, + `geometry` text, + `created_at` integer NOT NULL +); +--> statement-breakpoint +CREATE TABLE `candles` ( + `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL, + `time` integer NOT NULL, + `open` real NOT NULL, + `high` real NOT NULL, + `low` real NOT NULL, + `close` real NOT NULL +); +--> statement-breakpoint +CREATE UNIQUE INDEX `candles_time_unique` ON `candles` (`time`); \ No newline at end of file diff --git a/drizzle/0001_broken_the_fury.sql b/drizzle/0001_broken_the_fury.sql new file mode 100644 index 0000000..ec9e711 --- /dev/null +++ b/drizzle/0001_broken_the_fury.sql @@ -0,0 +1 @@ +ALTER TABLE `annotations` ADD `color` text DEFAULT '#3b82f6'; \ No newline at end of file diff --git a/drizzle/meta/0001_snapshot.json b/drizzle/meta/0001_snapshot.json new file mode 100644 index 0000000..6f2fa40 --- /dev/null +++ b/drizzle/meta/0001_snapshot.json @@ -0,0 +1,131 @@ +{ + "version": "6", + "dialect": "sqlite", + "id": "9a43200c-01b1-41fc-ac10-8071afa36f6f", + "prevId": "4f92efce-343c-4fa1-a55b-53b8dd7ed42e", + "tables": { + "annotations": { + "name": "annotations", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "timestamp": { + "name": "timestamp", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "label_type": { + "name": "label_type", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "geometry": { + "name": "geometry", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "color": { + "name": "color", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": "'#3b82f6'" + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "candles": { + "name": "candles", + "columns": { + "id": { + "name": "id", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "time": { + "name": "time", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "open": { + "name": "open", + "type": "real", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "high": { + "name": "high", + "type": "real", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "low": { + "name": "low", + "type": "real", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "close": { + "name": "close", + "type": "real", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "candles_time_unique": { + "name": "candles_time_unique", + "columns": [ + "time" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + } + }, + "views": {}, + "enums": {}, + "_meta": { + "schemas": {}, + "tables": {}, + "columns": {} + }, + "internal": { + "indexes": {} + } +} \ No newline at end of file diff --git a/src/app/globals.css b/src/app/globals.css index 5f33e3a..c39917f 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -4,25 +4,25 @@ @layer base { :root { - --background: 120 100% 4%; - --foreground: 120 100% 50%; - --card: 120 100% 6%; - --card-foreground: 120 100% 50%; - --popover: 120 100% 4%; - --popover-foreground: 120 100% 50%; - --primary: 120 100% 50%; - --primary-foreground: 120 100% 4%; - --secondary: 120 100% 8%; - --secondary-foreground: 120 100% 50%; - --muted: 120 100% 10%; - --muted-foreground: 120 100% 40%; - --accent: 120 100% 50%; - --accent-foreground: 120 100% 4%; - --destructive: 348 100% 50%; - --destructive-foreground: 120 100% 4%; - --border: 120 100% 10%; - --input: 120 100% 8%; - --ring: 120 100% 50%; + --background: 0 0% 100%; + --foreground: 222 47% 11%; + --card: 0 0% 100%; + --card-foreground: 222 47% 11%; + --popover: 0 0% 100%; + --popover-foreground: 222 47% 11%; + --primary: 221 83% 53%; + --primary-foreground: 210 40% 98%; + --secondary: 210 40% 96%; + --secondary-foreground: 222 47% 11%; + --muted: 210 40% 96%; + --muted-foreground: 215 16% 47%; + --accent: 210 40% 96%; + --accent-foreground: 222 47% 11%; + --destructive: 0 84% 60%; + --destructive-foreground: 210 40% 98%; + --border: 214 32% 91%; + --input: 214 32% 91%; + --ring: 221 83% 53%; --radius: 0.5rem; } } @@ -32,14 +32,14 @@ @apply border-border; } body { - @apply bg-background text-foreground; - font-family: 'JetBrains Mono', 'Fira Code', 'Courier New', monospace; + @apply bg-background text-foreground antialiased; + font-family: 'Inter', system-ui, -apple-system, sans-serif; } } @layer base { ::selection { - @apply bg-matrix/40 text-matrix; + @apply bg-primary/20 text-foreground; } ::-webkit-scrollbar { @@ -47,10 +47,10 @@ } ::-webkit-scrollbar-track { - @apply bg-matrixDark; + @apply bg-muted; } ::-webkit-scrollbar-thumb { - @apply bg-matrix rounded; + @apply bg-border hover:bg-muted-foreground/30 rounded; } } diff --git a/src/app/page.tsx b/src/app/page.tsx index b13635c..2aa9ad6 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -87,30 +87,33 @@ export default function Home() { }, [selectedLabelId]); return ( -
+
{/* Sidebar */} -