diff --git a/components.json b/components.json index f91a261..91cdd29 100644 --- a/components.json +++ b/components.json @@ -1,8 +1,7 @@ { "$schema": "https://shadcn-vue.com/schema.json", - "style": "default", + "style": "new-york", "typescript": true, - "tsConfigPath": "./tsconfig.json", "tailwind": { "config": "tailwind.config.js", "css": "src/assets/index.css", @@ -10,9 +9,12 @@ "cssVariables": true, "prefix": "" }, - "framework": "vite", "aliases": { "components": "@/components", - "utils": "@/lib/utils" - } + "composables": "@/composables", + "utils": "@/lib/utils", + "ui": "@/components/ui", + "lib": "@/lib" + }, + "iconLibrary": "lucide" } \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 157822f..91b3701 100644 --- a/package-lock.json +++ b/package-lock.json @@ -29,14 +29,14 @@ "devDependencies": { "@tailwindcss/forms": "^0.5.10", "@tailwindcss/typography": "^0.5.16", - "@tailwindcss/vite": "^4.0.1", - "@types/node": "^22.12.0", + "@tailwindcss/vite": "^4.0.12", + "@types/node": "^22.13.10", "@types/rollup-plugin-visualizer": "^4.2.3", "@vitejs/plugin-vue": "^5.2.1", "@vue/tsconfig": "^0.7.0", "rollup-plugin-visualizer": "^5.12.0", "sharp": "^0.33.2", - "tailwindcss": "^4.0.1", + "tailwindcss": "^4.0.12", "typescript": "~5.6.2", "vite": "^6.0.5", "vite-plugin-image-optimizer": "^1.1.7", @@ -3044,44 +3044,44 @@ } }, "node_modules/@tailwindcss/node": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.0.1.tgz", - "integrity": "sha512-lc+ly6PKHqgCVl7eO8D2JlV96Lks5bmL6pdtM6UasyUHLU2zmrOqU6jfgln120IVnCh3VC8GG/ca24xVTtSokw==", + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.0.12.tgz", + "integrity": "sha512-a6J11K1Ztdln9OrGfoM75/hChYPcHYGNYimqciMrvKXRmmPaS8XZTHhdvb5a3glz4Kd4ZxE1MnuFE2c0fGGmtg==", "dev": true, "license": "MIT", "dependencies": { - "enhanced-resolve": "^5.18.0", + "enhanced-resolve": "^5.18.1", "jiti": "^2.4.2", - "tailwindcss": "4.0.1" + "tailwindcss": "4.0.12" } }, "node_modules/@tailwindcss/oxide": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.0.1.tgz", - "integrity": "sha512-3z1SpWoDeaA6K6jd92CRrGyDghOcRILEgyWVHRhaUm/tcpiazwJpU9BSG0xB7GGGnl9capojaC+zme/nKsZd/w==", + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.0.12.tgz", + "integrity": "sha512-DWb+myvJB9xJwelwT9GHaMc1qJj6MDXRDR0CS+T8IdkejAtu8ctJAgV4r1drQJLPeS7mNwq2UHW2GWrudTf63A==", "dev": true, "license": "MIT", "engines": { "node": ">= 10" }, "optionalDependencies": { - "@tailwindcss/oxide-android-arm64": "4.0.1", - "@tailwindcss/oxide-darwin-arm64": "4.0.1", - "@tailwindcss/oxide-darwin-x64": "4.0.1", - "@tailwindcss/oxide-freebsd-x64": "4.0.1", - "@tailwindcss/oxide-linux-arm-gnueabihf": "4.0.1", - "@tailwindcss/oxide-linux-arm64-gnu": "4.0.1", - "@tailwindcss/oxide-linux-arm64-musl": "4.0.1", - "@tailwindcss/oxide-linux-x64-gnu": "4.0.1", - "@tailwindcss/oxide-linux-x64-musl": "4.0.1", - "@tailwindcss/oxide-win32-arm64-msvc": "4.0.1", - "@tailwindcss/oxide-win32-x64-msvc": "4.0.1" + "@tailwindcss/oxide-android-arm64": "4.0.12", + "@tailwindcss/oxide-darwin-arm64": "4.0.12", + "@tailwindcss/oxide-darwin-x64": "4.0.12", + "@tailwindcss/oxide-freebsd-x64": "4.0.12", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.0.12", + "@tailwindcss/oxide-linux-arm64-gnu": "4.0.12", + "@tailwindcss/oxide-linux-arm64-musl": "4.0.12", + "@tailwindcss/oxide-linux-x64-gnu": "4.0.12", + "@tailwindcss/oxide-linux-x64-musl": "4.0.12", + "@tailwindcss/oxide-win32-arm64-msvc": "4.0.12", + "@tailwindcss/oxide-win32-x64-msvc": "4.0.12" } }, "node_modules/@tailwindcss/oxide-android-arm64": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.0.1.tgz", - "integrity": "sha512-eP/rI9WaAElpeiiHDqGtDqga9iDsOClXxIqdHayHsw93F24F03b60CwgGhrGF9Io/EuWIpz3TMRhPVOLhoXivw==", + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.0.12.tgz", + "integrity": "sha512-dAXCaemu3mHLXcA5GwGlQynX8n7tTdvn5i1zAxRvZ5iC9fWLl5bGnjZnzrQqT7ttxCvRwdVf3IHUnMVdDBO/kQ==", "cpu": [ "arm64" ], @@ -3096,9 +3096,9 @@ } }, "node_modules/@tailwindcss/oxide-darwin-arm64": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.0.1.tgz", - "integrity": "sha512-jZVUo0kNd1IjxdCYwg4dwegDNsq7PoUx4LM814RmgY3gfJ63Y6GlpJXHOpd5FLv1igpeZox5LzRk2oz8MQoJwQ==", + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.0.12.tgz", + "integrity": "sha512-vPNI+TpJQ7sizselDXIJdYkx9Cu6JBdtmRWujw9pVIxW8uz3O2PjgGGzL/7A0sXI8XDjSyRChrUnEW9rQygmJQ==", "cpu": [ "arm64" ], @@ -3113,9 +3113,9 @@ } }, "node_modules/@tailwindcss/oxide-darwin-x64": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.0.1.tgz", - "integrity": "sha512-E31wHiIf4LB0aKRohrS4U6XfFSACCL9ifUFfPQ16FhcBIL4wU5rcBidvWvT9TQFGPkpE69n5dyXUcqiMrnF/Ig==", + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.0.12.tgz", + "integrity": "sha512-RL/9jM41Fdq4Efr35C5wgLx98BirnrfwuD+zgMFK6Ir68HeOSqBhW9jsEeC7Y/JcGyPd3MEoJVIU4fAb7YLg7A==", "cpu": [ "x64" ], @@ -3130,9 +3130,9 @@ } }, "node_modules/@tailwindcss/oxide-freebsd-x64": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.0.1.tgz", - "integrity": "sha512-8/3ZKLMYqgAsBzTeczOKWtT4geF02g9S7cntY5gvqQZ4E0ImX724cHcZJi9k6fkE6aLbvwxxHxaShFvRxblwKQ==", + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.0.12.tgz", + "integrity": "sha512-7WzWiax+LguJcMEimY0Q4sBLlFXu1tYxVka3+G2M9KmU/3m84J3jAIV4KZWnockbHsbb2XgrEjtlJKVwHQCoRA==", "cpu": [ "x64" ], @@ -3147,9 +3147,9 @@ } }, "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.0.1.tgz", - "integrity": "sha512-EYjbh225klQfWzy6LeIAfdjHCK+p71yLV/GjdPNW47Bfkkq05fTzIhHhCgshUvNp78EIA33iQU+ktWpW06NgHw==", + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.0.12.tgz", + "integrity": "sha512-X9LRC7jjE1QlfIaBbXjY0PGeQP87lz5mEfLSVs2J1yRc9PSg1tEPS9NBqY4BU9v5toZgJgzKeaNltORyTs22TQ==", "cpu": [ "arm" ], @@ -3164,9 +3164,9 @@ } }, "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.0.1.tgz", - "integrity": "sha512-PrX2SwIqWNP5cYeSyQfrhbk4ffOM338T6CrEwIAGvLPoUZiklt19yknlsBme6bReSw7TSAMy+8KFdLLi5fcWNQ==", + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.0.12.tgz", + "integrity": "sha512-i24IFNq2402zfDdoWKypXz0ZNS2G4NKaA82tgBlE2OhHIE+4mg2JDb5wVfyP6R+MCm5grgXvurcIcKWvo44QiQ==", "cpu": [ "arm64" ], @@ -3181,9 +3181,9 @@ } }, "node_modules/@tailwindcss/oxide-linux-arm64-musl": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.0.1.tgz", - "integrity": "sha512-iuoFGhKDojtfloi5uj6MIk4kxEOGcsAk/kPbZItF9Dp7TnzVhxo2U/718tXhxGrg6jSL3ST3cQHIjA6yw3OeXw==", + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.0.12.tgz", + "integrity": "sha512-LmOdshJBfAGIBG0DdBWhI0n5LTMurnGGJCHcsm9F//ISfsHtCnnYIKgYQui5oOz1SUCkqsMGfkAzWyNKZqbGNw==", "cpu": [ "arm64" ], @@ -3198,9 +3198,9 @@ } }, "node_modules/@tailwindcss/oxide-linux-x64-gnu": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.0.1.tgz", - "integrity": "sha512-pNUrGQYyE8RK+N9yvkPmHnlKDfFbni9A3lsi37u4RoA/6Yn+zWVoegvAQMZu3w+jqnpb2A/bYJ+LumcclUZ3yg==", + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.0.12.tgz", + "integrity": "sha512-OSK667qZRH30ep8RiHbZDQfqkXjnzKxdn0oRwWzgCO8CoTxV+MvIkd0BWdQbYtYuM1wrakARV/Hwp0eA/qzdbw==", "cpu": [ "x64" ], @@ -3215,9 +3215,9 @@ } }, "node_modules/@tailwindcss/oxide-linux-x64-musl": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.0.1.tgz", - "integrity": "sha512-xSGWaDcT6SJ75su9zWXj8GYb2jM/przXwZGH96RTS7HGDIoI1tvgpls88YajG5Sx7hXaqAWCufjw5L/dlu+lzg==", + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.0.12.tgz", + "integrity": "sha512-uylhWq6OWQ8krV8Jk+v0H/3AZKJW6xYMgNMyNnUbbYXWi7hIVdxRKNUB5UvrlC3RxtgsK5EAV2i1CWTRsNcAnA==", "cpu": [ "x64" ], @@ -3232,9 +3232,9 @@ } }, "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.0.1.tgz", - "integrity": "sha512-BUNL2isUZ2yWnbplPddggJpZxsqGHPZ1RJAYpu63W4znUnKCzI4m/jiy0WpyYqqOKL9jDM5q0QdsQ9mc3aw5YQ==", + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.0.12.tgz", + "integrity": "sha512-XDLnhMoXZEEOir1LK43/gHHwK84V1GlV8+pAncUAIN2wloeD+nNciI9WRIY/BeFTqES22DhTIGoilSO39xDb2g==", "cpu": [ "arm64" ], @@ -3249,9 +3249,9 @@ } }, "node_modules/@tailwindcss/oxide-win32-x64-msvc": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.0.1.tgz", - "integrity": "sha512-ZtcVu+XXOddGsPlvO5nh2fnbKmwly2C07ZB1lcYCf/b8qIWF04QY9o6vy6/+6ioLRfbp3E7H/ipFio38DZX4oQ==", + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.0.12.tgz", + "integrity": "sha512-I/BbjCLpKDQucvtn6rFuYLst1nfFwSMYyPzkx/095RE+tuzk5+fwXuzQh7T3fIBTcbn82qH/sFka7yPGA50tLw==", "cpu": [ "x64" ], @@ -3282,16 +3282,16 @@ } }, "node_modules/@tailwindcss/vite": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.0.1.tgz", - "integrity": "sha512-ZkwMBA7uR+nyrafIZI8ce3PduE0dDVFVmxmInCUPTN17Jgy6RfEPXzqtL5fz658eDDxKa5xZ+gmiTt+5AMD0pw==", + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.0.12.tgz", + "integrity": "sha512-JM3gp601UJiryIZ9R2bSqalzcOy15RCybQ1Q+BJqDEwVyo4LkWKeqQAcrpHapWXY31OJFTuOUVBFDWMhzHm2Bg==", "dev": true, "license": "MIT", "dependencies": { - "@tailwindcss/node": "^4.0.1", - "@tailwindcss/oxide": "^4.0.1", + "@tailwindcss/node": "4.0.12", + "@tailwindcss/oxide": "4.0.12", "lightningcss": "^1.29.1", - "tailwindcss": "4.0.1" + "tailwindcss": "4.0.12" }, "peerDependencies": { "vite": "^5.2.0 || ^6" @@ -3338,9 +3338,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.12.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.12.0.tgz", - "integrity": "sha512-Fll2FZ1riMjNmlmJOdAyY5pUbkftXslB5DgEzlIuNaiWhXd00FhWxVC/r4yV/4wBb9JfImTu+jiSvXTkJ7F/gA==", + "version": "22.13.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.10.tgz", + "integrity": "sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw==", "dev": true, "license": "MIT", "dependencies": { @@ -4514,9 +4514,9 @@ "license": "MIT" }, "node_modules/enhanced-resolve": { - "version": "5.18.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.0.tgz", - "integrity": "sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ==", + "version": "5.18.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", + "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", "dev": true, "license": "MIT", "dependencies": { @@ -7444,9 +7444,9 @@ } }, "node_modules/tailwindcss": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.0.1.tgz", - "integrity": "sha512-UK5Biiit/e+r3i0O223bisoS5+y7ZT1PM8Ojn0MxRHzXN1VPZ2KY6Lo6fhu1dOfCfyUAlK7Lt6wSxowRabATBw==", + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.0.12.tgz", + "integrity": "sha512-bT0hJo91FtncsAMSsMzUkoo/iEU0Xs5xgFgVC9XmdM9bw5MhZuQFjPNl6wxAE0SiQF/YTZJa+PndGWYSDtuxAg==", "license": "MIT" }, "node_modules/tailwindcss-animate": { diff --git a/package.json b/package.json index b98c336..04068ae 100644 --- a/package.json +++ b/package.json @@ -31,14 +31,14 @@ "devDependencies": { "@tailwindcss/forms": "^0.5.10", "@tailwindcss/typography": "^0.5.16", - "@tailwindcss/vite": "^4.0.1", - "@types/node": "^22.12.0", + "@tailwindcss/vite": "^4.0.12", + "@types/node": "^22.13.10", "@types/rollup-plugin-visualizer": "^4.2.3", "@vitejs/plugin-vue": "^5.2.1", "@vue/tsconfig": "^0.7.0", "rollup-plugin-visualizer": "^5.12.0", "sharp": "^0.33.2", - "tailwindcss": "^4.0.1", + "tailwindcss": "^4.0.12", "typescript": "~5.6.2", "vite": "^6.0.5", "vite-plugin-image-optimizer": "^1.1.7", diff --git a/src/assets/index.css b/src/assets/index.css index a5400ff..62e7972 100644 --- a/src/assets/index.css +++ b/src/assets/index.css @@ -4,104 +4,119 @@ @layer base { :root { /* Light theme */ - --background: rgb(231, 236, 254); + --background: 0 0% 100%; --background: oklch(0.97 0.02 250); - --foreground: rgb(75, 78, 104); + --foreground: 222.2 84% 4.9%; --foreground: oklch(0.40 0.03 265); - --card: rgb(226, 230, 242); + --card: 0 0% 100%; --card: oklch(0.92 0.02 260); - --card-foreground: rgb(75, 78, 104); + --card-foreground: 222.2 84% 4.9%; --card-foreground: oklch(0.40 0.03 265); - --popover: rgb(226, 230, 242); + --popover: 0 0% 100%; --popover: oklch(0.92 0.02 260); - --popover-foreground: rgb(75, 78, 104); + --popover-foreground: 222.2 84% 4.9%; --popover-foreground: oklch(0.40 0.03 265); - --primary: rgb(31, 102, 244); + --primary: 222.2 47.4% 11.2%; --primary: oklch(0.60 0.20 260); - --primary-foreground: rgb(231, 236, 254); + --primary-foreground: 210 40% 98%; --primary-foreground: oklch(0.97 0.02 250); - --secondary: rgb(212, 217, 228); + --secondary: 210 40% 96.1%; --secondary: oklch(0.87 0.03 255); - --secondary-foreground: rgb(75, 78, 104); + --secondary-foreground: 222.2 47.4% 11.2%; --secondary-foreground: oklch(0.40 0.03 265); - --muted: rgb(212, 217, 228); + --muted: 210 40% 96.1%; --muted: oklch(0.87 0.03 255); - --muted-foreground: rgb(115, 120, 141); + --muted-foreground: 215.4 16.3% 46.9%; --muted-foreground: oklch(0.55 0.03 265); - --accent: rgb(241, 127, 101); + --accent: 210 40% 96.1%; --accent: oklch(0.70 0.15 30); - --accent-foreground: rgb(231, 236, 254); + --accent-foreground: 222.2 47.4% 11.2%; --accent-foreground: oklch(0.97 0.02 250); - --destructive: rgb(210, 15, 57); + --destructive: 0 84.2% 60.2%; --destructive: oklch(0.50 0.28 15); - --destructive-foreground: rgb(231, 236, 254); + --destructive-foreground: 210 40% 98%; --destructive-foreground: oklch(0.97 0.02 250); - --border: rgb(197, 201, 216); + --border: 214.3 31.8% 91.4%; --border: oklch(0.83 0.02 265); - --input: rgb(197, 201, 216); + --input: 214.3 31.8% 91.4%; --input: oklch(0.83 0.02 265); - --ring: rgb(31, 102, 244); + --ring: 222.2 84% 4.9%; --ring: oklch(0.60 0.20 260); --radius: 0.5rem; + + --chart-1: 12 76% 61%; + + --chart-2: 173 58% 39%; + + --chart-3: 197 37% 24%; + + --chart-4: 43 74% 66%; + + --chart-5: 27 87% 67%; } .dark { /* Dark theme */ - --background: rgb(26, 32, 54); + --background: 222.2 84% 4.9%; --background: oklch(0.25 0.05 265); - --foreground: rgb(218, 226, 248); + --foreground: 210 40% 98%; --foreground: oklch(0.90 0.03 260); - --card: rgb(22, 27, 45); + --card: 222.2 84% 4.9%; --card: oklch(0.20 0.05 265); - --card-foreground: rgb(218, 226, 248); + --card-foreground: 210 40% 98%; --card-foreground: oklch(0.90 0.03 260); - --popover: rgb(22, 27, 45); + --popover: 222.2 84% 4.9%; --popover: oklch(0.20 0.05 265); - --popover-foreground: rgb(218, 226, 248); + --popover-foreground: 210 40% 98%; --popover-foreground: oklch(0.90 0.03 260); - --primary: rgb(127, 167, 249); + --primary: 210 40% 98%; --primary: oklch(0.75 0.15 260); - --primary-foreground: rgb(26, 32, 54); + --primary-foreground: 222.2 47.4% 11.2%; --primary-foreground: oklch(0.25 0.05 265); - --secondary: rgb(38, 46, 72); + --secondary: 217.2 32.6% 17.5%; --secondary: oklch(0.30 0.06 265); - --secondary-foreground: rgb(218, 226, 248); + --secondary-foreground: 210 40% 98%; --secondary-foreground: oklch(0.90 0.03 260); - --muted: rgb(38, 46, 72); + --muted: 217.2 32.6% 17.5%; --muted: oklch(0.30 0.06 265); - --muted-foreground: rgb(177, 186, 211); + --muted-foreground: 215 20.2% 65.1%; --muted-foreground: oklch(0.78 0.06 265); - --accent: rgb(255, 179, 164); + --accent: 217.2 32.6% 17.5%; --accent: oklch(0.83 0.12 30); - --accent-foreground: rgb(26, 32, 54); + --accent-foreground: 210 40% 98%; --accent-foreground: oklch(0.25 0.05 265); - --destructive: rgb(247, 130, 150); + --destructive: 0 62.8% 30.6%; --destructive: oklch(0.75 0.18 15); - --destructive-foreground: rgb(26, 32, 54); + --destructive-foreground: 210 40% 98%; --destructive-foreground: oklch(0.25 0.05 265); - --border: rgb(38, 46, 72); + --border: 217.2 32.6% 17.5%; --border: oklch(0.30 0.06 265); - --input: rgb(38, 46, 72); + --input: 217.2 32.6% 17.5%; --input: oklch(0.30 0.06 265); - --ring: rgb(127, 167, 249); + --ring: 212.7 26.8% 83.9%; --ring: oklch(0.75 0.15 260); + --chart-1: 220 70% 50%; + --chart-2: 160 60% 45%; + --chart-3: 30 80% 55%; + --chart-4: 280 65% 60%; + --chart-5: 340 75% 55%; } } @@ -294,3 +309,11 @@ border-color: var(--destructive-foreground); } } +@layer base { + * { + @apply border-border; + } + body { + @apply bg-background text-foreground; + } +} diff --git a/src/components/ui/badge/Badge.vue b/src/components/ui/badge/Badge.vue new file mode 100644 index 0000000..9ed8039 --- /dev/null +++ b/src/components/ui/badge/Badge.vue @@ -0,0 +1,16 @@ + + + diff --git a/src/components/ui/badge/index.ts b/src/components/ui/badge/index.ts new file mode 100644 index 0000000..c2ba5fb --- /dev/null +++ b/src/components/ui/badge/index.ts @@ -0,0 +1,25 @@ +import { cva, type VariantProps } from 'class-variance-authority' + +export { default as Badge } from './Badge.vue' + +export const badgeVariants = cva( + 'inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2', + { + variants: { + variant: { + default: + 'border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80', + secondary: + 'border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80', + destructive: + 'border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80', + outline: 'text-foreground', + }, + }, + defaultVariants: { + variant: 'default', + }, + }, +) + +export type BadgeVariants = VariantProps diff --git a/src/lib/utils.ts b/src/lib/utils.ts index 2617904..4c51992 100644 --- a/src/lib/utils.ts +++ b/src/lib/utils.ts @@ -1,3 +1,5 @@ +import type { Updater } from '@tanstack/vue-table' +import type { Ref } from 'vue' import { type ClassValue, clsx } from 'clsx' import { twMerge } from 'tailwind-merge' @@ -5,11 +7,9 @@ export function cn(...inputs: ClassValue[]) { return twMerge(clsx(inputs)) } -export async function withTimeout(promise: Promise, timeoutMs: number = 10000): Promise { - return Promise.race([ - promise, - new Promise((_, reject) => - setTimeout(() => reject(new Error('Operation timed out')), timeoutMs) - ) - ]) +export function valueUpdater>(updaterOrValue: T, ref: Ref) { + ref.value + = typeof updaterOrValue === 'function' + ? updaterOrValue(ref.value) + : updaterOrValue } diff --git a/tailwind.config.js b/tailwind.config.js index 4ac5287..99791ef 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -2,7 +2,7 @@ const animate = require("tailwindcss-animate") /** @type {import('tailwindcss').Config} */ module.exports = { - darkMode: 'class', + darkMode: ['class', 'class'], safelist: ["dark"], prefix: "", @@ -15,79 +15,95 @@ module.exports = { ], theme: { - container: { - center: true, - padding: "2rem", - screens: { - "2xl": "1400px", - }, - }, - extend: { - colors: { - border: 'hsl(var(--border) / )', - input: 'hsl(var(--input) / )', - ring: 'hsl(var(--ring) / )', - background: 'hsl(var(--background) / )', - foreground: 'hsl(var(--foreground) / )', - primary: { - DEFAULT: 'hsl(var(--primary) / )', - foreground: 'hsl(var(--primary-foreground) / )', - }, - secondary: { - DEFAULT: 'hsl(var(--secondary) / )', - foreground: 'hsl(var(--secondary-foreground) / )', - }, - destructive: { - DEFAULT: 'hsl(var(--destructive) / )', - foreground: 'hsl(var(--destructive-foreground) / )', - }, - muted: { - DEFAULT: 'hsl(var(--muted) / )', - foreground: 'hsl(var(--muted-foreground) / )', - }, - accent: { - DEFAULT: 'hsl(var(--accent) / )', - foreground: 'hsl(var(--accent-foreground) / )', - }, - popover: { - DEFAULT: 'hsl(var(--popover) / )', - foreground: 'hsl(var(--popover-foreground) / )', - }, - card: { - DEFAULT: 'hsl(var(--card) / )', - foreground: 'hsl(var(--card-foreground) / )', - }, - }, - borderRadius: { - lg: 'var(--radius)', - md: 'calc(var(--radius) - 2px)', - sm: 'calc(var(--radius) - 4px)', - }, - keyframes: { - "accordion-down": { - from: { height: "0" }, - to: { height: "var(--radix-accordion-content-height)" }, - }, - "accordion-up": { - from: { height: "var(--radix-accordion-content-height)" }, - to: { height: "0" }, - }, - }, - animation: { - "accordion-down": "accordion-down 0.2s ease-out", - "accordion-up": "accordion-up 0.2s ease-out", - }, - backgroundImage: { - 'gradient-radial': 'radial-gradient(var(--tw-gradient-stops))', - 'gradient-conic': 'conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))', - }, - }, + container: { + center: true, + padding: '2rem', + screens: { + '2xl': '1400px' + } + }, + extend: { + colors: { + border: 'hsl(var(--border))', + input: 'hsl(var(--input))', + ring: 'hsl(var(--ring))', + background: 'hsl(var(--background))', + foreground: 'hsl(var(--foreground))', + primary: { + DEFAULT: 'hsl(var(--primary))', + foreground: 'hsl(var(--primary-foreground))' + }, + secondary: { + DEFAULT: 'hsl(var(--secondary))', + foreground: 'hsl(var(--secondary-foreground))' + }, + destructive: { + DEFAULT: 'hsl(var(--destructive))', + foreground: 'hsl(var(--destructive-foreground))' + }, + muted: { + DEFAULT: 'hsl(var(--muted))', + foreground: 'hsl(var(--muted-foreground))' + }, + accent: { + DEFAULT: 'hsl(var(--accent))', + foreground: 'hsl(var(--accent-foreground))' + }, + popover: { + DEFAULT: 'hsl(var(--popover))', + foreground: 'hsl(var(--popover-foreground))' + }, + card: { + DEFAULT: 'hsl(var(--card))', + foreground: 'hsl(var(--card-foreground))' + }, + chart: { + '1': 'hsl(var(--chart-1))', + '2': 'hsl(var(--chart-2))', + '3': 'hsl(var(--chart-3))', + '4': 'hsl(var(--chart-4))', + '5': 'hsl(var(--chart-5))' + } + }, + borderRadius: { + lg: 'var(--radius)', + md: 'calc(var(--radius) - 2px)', + sm: 'calc(var(--radius) - 4px)' + }, + keyframes: { + 'accordion-down': { + from: { + height: '0' + }, + to: { + height: 'var(--radix-accordion-content-height)' + } + }, + 'accordion-up': { + from: { + height: 'var(--radix-accordion-content-height)' + }, + to: { + height: '0' + } + } + }, + animation: { + 'accordion-down': 'accordion-down 0.2s ease-out', + 'accordion-up': 'accordion-up 0.2s ease-out' + }, + backgroundImage: { + 'gradient-radial': 'radial-gradient(var(--tw-gradient-stops))', + 'gradient-conic': 'conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))' + } + } }, plugins: [ animate, require('@tailwindcss/forms'), require('@tailwindcss/typography'), - ], + require("tailwindcss-animate") +], future: { hoverOnlyWhenSupported: true, respectDefaultRingColorOpacity: true, diff --git a/tsconfig.app.json b/tsconfig.app.json index 49003fa..1af5834 100644 --- a/tsconfig.app.json +++ b/tsconfig.app.json @@ -11,9 +11,10 @@ // shadcn "baseUrl": ".", "paths": { - "@/*": [ - "./src/*" - ] + "@/*": ["./src/*"], + "@/components/*": ["./src/components/*"], + "@/lib/*": ["./src/lib/*"], + "@/composables/*": ["./src/composables/*"] } }, "include": [