diff --git a/package-lock.json b/package-lock.json index a3415931..0aaf2ac9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,7 @@ "name": "vite-project", "version": "0.0.0", "dependencies": { + "@adobe/leonardo-contrast-colors": "^1.0.0", "@hey-api/client-fetch": "^0.6.0", "@radix-ui/react-avatar": "^1.1.1", "@radix-ui/react-dialog": "^1.1.4", @@ -76,6 +77,18 @@ "dev": true, "license": "MIT" }, + "node_modules/@adobe/leonardo-contrast-colors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@adobe/leonardo-contrast-colors/-/leonardo-contrast-colors-1.0.0.tgz", + "integrity": "sha512-a4mD0JZ1zNu2wIem/vWJqdaiuQZgxwOph/gpHA75mlXcs6iiIQx9G+W0jtssRFgdYYAi/ceQYOlYwiSQj1AUCw==", + "dependencies": { + "apca-w3": "^0.1.9", + "chroma-js": "^2.4.2", + "ciebase": "^0.1.1", + "ciecam02": "^0.4.6", + "hsluv": "^0.1.0" + } + }, "node_modules/@alloc/quick-lru": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", @@ -3508,6 +3521,14 @@ "node": ">= 8" } }, + "node_modules/apca-w3": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/apca-w3/-/apca-w3-0.1.9.tgz", + "integrity": "sha512-Zrf6AeBeQjNe/fxK7U1jCo5zfdjDl6T4/kdw5Xlky3G7u+EJTZkyItjMYQGtwf9pkftsINxcYyOpuLkzKf1ITQ==", + "dependencies": { + "colorparsley": "^0.1.8" + } + }, "node_modules/arg": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", @@ -3941,6 +3962,28 @@ "node": ">=10" } }, + "node_modules/chroma-js": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/chroma-js/-/chroma-js-2.6.0.tgz", + "integrity": "sha512-BLHvCB9s8Z1EV4ethr6xnkl/P2YRFOGqfgvuMG/MyCbZPrTA+NeiByY6XvgF0zP4/2deU2CXnWyMa3zu1LqQ3A==" + }, + "node_modules/ciebase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ciebase/-/ciebase-0.1.1.tgz", + "integrity": "sha512-KEnf/WVT5E+Gn+LsfMHGJFATltSOeW0qm7dpzQYL/Qe5PEpyTM+UI5bMoBo16FE81zMpu+U6032USTP6Cz1XNA==", + "dependencies": { + "mout": "^0.11.1" + } + }, + "node_modules/ciecam02": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/ciecam02/-/ciecam02-0.4.6.tgz", + "integrity": "sha512-nh/Kl8s5lgtyEl7lA381JFinLhgUwDhJaAVgbVx2BaiiJIzJLumQvuFXwdS76tSch7jDjWejP+MtKYCCEk/brg==", + "dependencies": { + "ciebase": "^0.1.1", + "mout": "^0.11.1" + } + }, "node_modules/citty": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/citty/-/citty-0.1.6.tgz", @@ -4128,6 +4171,11 @@ "dev": true, "license": "MIT" }, + "node_modules/colorparsley": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/colorparsley/-/colorparsley-0.1.8.tgz", + "integrity": "sha512-rObESTTTE6G5qO5WFwFxWPggpw4KfpxnLC6Ssl8bITBnNVRhDsyCeTRAUxWQNVTx2pRknKlO2nddYTxjkdNFaw==" + }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -5519,6 +5567,11 @@ "integrity": "sha512-PDEfEF102G23vHmPhLyPboFCD+BkMGu+GuJe2d9/eH4FsCwvgBpnc9n0pGE+ffKdph38s6foEZiEjdgHdzp+IA==", "license": "CC0-1.0" }, + "node_modules/hsluv": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/hsluv/-/hsluv-0.1.0.tgz", + "integrity": "sha512-ERcanKLAszD2XN3Vh5r5Szkrv9q0oSTudmP0rkiKAGM/3NMc9FLmMZBB7TSqTaXJfSDBOreYTfjezCOYbRKqlw==" + }, "node_modules/html-encoding-sniffer": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", @@ -7443,6 +7496,11 @@ "ufo": "^1.5.4" } }, + "node_modules/mout": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/mout/-/mout-0.11.1.tgz", + "integrity": "sha512-pK9VNiLE3QgGBrC/3ICAscwOLU7oTNeK2l32uqNAioBYtB2tQAfSsGDNChUlk7CP23126mc5lUt6+na9FlN8JA==" + }, "node_modules/mrmime": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", diff --git a/package.json b/package.json index ae01c6c6..37132ed0 100644 --- a/package.json +++ b/package.json @@ -15,9 +15,11 @@ "preview": "vite preview", "test": "vitest", "test:coverage": "vitest run --coverage", - "type-check": "tsc --noEmit -p ./tsconfig.app.json" + "type-check": "tsc --noEmit -p ./tsconfig.app.json", + "generate-colors": "node ./src/scripts/generateColorTokens.js" }, "dependencies": { + "@adobe/leonardo-contrast-colors": "^1.0.0", "@hey-api/client-fetch": "^0.6.0", "@radix-ui/react-avatar": "^1.1.1", "@radix-ui/react-dialog": "^1.1.4", @@ -81,4 +83,4 @@ "overrides": { "vite": "^6.0.1" } -} \ No newline at end of file +} diff --git a/src/App.tsx b/src/App.tsx index fafa5bf0..a096bde6 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -28,8 +28,12 @@ function App() { fetchPrompts(); }, [fetchPrompts]); + const prefersDarkMode = window.matchMedia( + "(prefers-color-scheme: dark)", + ).matches; + return ( -