cognite-create 0.2.31 → 0.2.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/bin/index.js CHANGED
@@ -6,6 +6,8 @@ const { spawn } = require("node:child_process");
6
6
  const fs = require("node:fs/promises");
7
7
  // eslint-disable-next-line @typescript-eslint/no-require-imports
8
8
  const path = require("node:path");
9
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
10
+ const readline = require("node:readline");
9
11
 
10
12
  const REQUIRED_DEPENDENCIES = [
11
13
  { name: "@tanstack/react-query", version: "^5.90.2" },
@@ -17,23 +19,49 @@ const REQUIRED_DEPENDENCIES = [
17
19
  { name: "clsx", version: "^2.1.1" },
18
20
  ];
19
21
 
22
+ function promptForInput(question) {
23
+ const rl = readline.createInterface({
24
+ input: process.stdin,
25
+ output: process.stdout,
26
+ });
27
+
28
+ return new Promise((resolve) => {
29
+ rl.question(question, (answer) => {
30
+ rl.close();
31
+ resolve(answer.trim());
32
+ });
33
+ });
34
+ }
35
+
20
36
  async function main() {
21
37
  const args = process.argv.slice(2);
38
+ let projectDir;
39
+ let additionalArgs = [];
22
40
 
23
41
  if (args.length === 0 || args[0].startsWith("-")) {
24
- console.error(
25
- "Usage: cognite-create <project-name> [create-next-app options]"
26
- );
27
- process.exit(1);
42
+ // No project name provided, prompt for one
43
+ projectDir = await promptForInput("Project name: ");
44
+
45
+ if (!projectDir) {
46
+ console.error("Error: Project name is required");
47
+ process.exit(1);
48
+ }
49
+
50
+ // Keep any flags that were provided
51
+ additionalArgs = args;
52
+ } else {
53
+ // First arg is the project name
54
+ projectDir = args[0];
55
+ // Rest are additional args
56
+ additionalArgs = args.slice(1);
28
57
  }
29
58
 
30
- const projectDir = args[0];
31
- const createArgs = ["create-next-app@latest", ...args];
32
- await runCreateNextApp(createArgs);
59
+ const createArgs = ["create-vite@latest", projectDir, ...additionalArgs];
60
+ await runCreateVite(createArgs);
33
61
  await addCogniteTemplates(projectDir);
34
62
  }
35
63
 
36
- function runCreateNextApp(cliArgs) {
64
+ function runCreateVite(cliArgs) {
37
65
  const command = process.platform === "win32" ? "npx.cmd" : "npx";
38
66
 
39
67
  return new Promise((resolve, reject) => {
@@ -42,7 +70,7 @@ function runCreateNextApp(cliArgs) {
42
70
  child.on("error", reject);
43
71
  child.on("close", (code) => {
44
72
  if (code !== 0) {
45
- const error = new Error(`create-next-app exited with code ${code}`);
73
+ const error = new Error(`create-vite exited with code ${code}`);
46
74
  error.exitCode = code;
47
75
  return reject(error);
48
76
  }
@@ -62,7 +90,7 @@ async function addCogniteTemplates(projectDir) {
62
90
  if (error.code === "ENOENT") {
63
91
  throw new Error(
64
92
  `Expected to find the newly created project at "${projectDir}", but it was not found. ` +
65
- "Check the create-next-app output for more details."
93
+ "Check the create-vite output for more details."
66
94
  );
67
95
  }
68
96
 
@@ -0,0 +1,288 @@
1
+ import { describe, it, expect, vi } from "vitest";
2
+
3
+ // Mock child_process spawn
4
+ vi.mock("node:child_process", () => ({
5
+ spawn: vi.fn(),
6
+ }));
7
+
8
+ // Mock readline
9
+ vi.mock("node:readline", () => ({
10
+ createInterface: vi.fn(() => ({
11
+ question: vi.fn(),
12
+ close: vi.fn(),
13
+ })),
14
+ }));
15
+
16
+ describe("CLI Command Tests", () => {
17
+ describe("Argument Parsing Logic", () => {
18
+ it("should use first argument as project name when provided", () => {
19
+ const args = ["my-project", "--template", "react-ts"];
20
+ let projectDir;
21
+ let additionalArgs = [];
22
+
23
+ if (args.length === 0 || args[0].startsWith("-")) {
24
+ additionalArgs = args;
25
+ } else {
26
+ projectDir = args[0];
27
+ additionalArgs = args.slice(1);
28
+ }
29
+
30
+ const createArgs = ["create-vite@latest", projectDir, ...additionalArgs];
31
+
32
+ expect(projectDir).toBe("my-project");
33
+ expect(additionalArgs).toEqual(["--template", "react-ts"]);
34
+ expect(createArgs).toEqual([
35
+ "create-vite@latest",
36
+ "my-project",
37
+ "--template",
38
+ "react-ts",
39
+ ]);
40
+ });
41
+
42
+ it("should handle flags-only arguments (requires prompt)", () => {
43
+ const args = ["--template", "react-ts"];
44
+ let projectDir;
45
+ let additionalArgs = [];
46
+
47
+ if (args.length === 0 || args[0].startsWith("-")) {
48
+ // Would prompt for project name
49
+ projectDir = undefined;
50
+ additionalArgs = args;
51
+ } else {
52
+ projectDir = args[0];
53
+ additionalArgs = args.slice(1);
54
+ }
55
+
56
+ expect(projectDir).toBeUndefined();
57
+ expect(additionalArgs).toEqual(["--template", "react-ts"]);
58
+ });
59
+
60
+ it("should handle empty arguments (requires prompt)", () => {
61
+ const args = [];
62
+ let projectDir;
63
+ let additionalArgs = [];
64
+
65
+ if (args.length === 0 || args[0]?.startsWith("-")) {
66
+ projectDir = undefined;
67
+ additionalArgs = args;
68
+ } else {
69
+ projectDir = args[0];
70
+ additionalArgs = args.slice(1);
71
+ }
72
+
73
+ expect(projectDir).toBeUndefined();
74
+ expect(additionalArgs).toEqual([]);
75
+ });
76
+
77
+ it("should properly construct create-vite command with all arguments", () => {
78
+ const projectDir = "test-app";
79
+ const additionalArgs = ["--template", "react-ts", "--force"];
80
+ const createArgs = ["create-vite@latest", projectDir, ...additionalArgs];
81
+
82
+ expect(createArgs).toEqual([
83
+ "create-vite@latest",
84
+ "test-app",
85
+ "--template",
86
+ "react-ts",
87
+ "--force",
88
+ ]);
89
+ });
90
+
91
+ it("should properly construct create-vite command with project name only", () => {
92
+ const projectDir = "simple-app";
93
+ const additionalArgs = [];
94
+ const createArgs = ["create-vite@latest", projectDir, ...additionalArgs];
95
+
96
+ expect(createArgs).toEqual(["create-vite@latest", "simple-app"]);
97
+ });
98
+ });
99
+
100
+ describe("Command Platform Detection", () => {
101
+ it("should use npx.cmd on Windows", () => {
102
+ const platform = "win32";
103
+ const command = platform === "win32" ? "npx.cmd" : "npx";
104
+ expect(command).toBe("npx.cmd");
105
+ });
106
+
107
+ it("should use npx on non-Windows platforms", () => {
108
+ const platform = "darwin";
109
+ const command = platform === "win32" ? "npx.cmd" : "npx";
110
+ expect(command).toBe("npx");
111
+ });
112
+ });
113
+
114
+ describe("Package Manager Detection", () => {
115
+ it("should detect package manager from packageManager field", () => {
116
+ const packageJson = { packageManager: "pnpm@8.0.0" };
117
+ const [name] = packageJson.packageManager.split("@");
118
+ expect(name).toBe("pnpm");
119
+ });
120
+
121
+ it("should extract package manager name correctly", () => {
122
+ const examples = [
123
+ { input: "npm@9.0.0", expected: "npm" },
124
+ { input: "yarn@3.0.0", expected: "yarn" },
125
+ { input: "pnpm@8.0.0", expected: "pnpm" },
126
+ { input: "bun@1.0.0", expected: "bun" },
127
+ ];
128
+
129
+ examples.forEach(({ input, expected }) => {
130
+ const [name] = input.split("@");
131
+ expect(name).toBe(expected);
132
+ });
133
+ });
134
+ });
135
+
136
+ describe("Install Command Generation", () => {
137
+ function getInstallCommand(packageManager, dependencySpecs) {
138
+ const normalizeCommand = (cmd) => {
139
+ if (process.platform === "win32" && cmd !== "bun") {
140
+ return `${cmd}.cmd`;
141
+ }
142
+ return cmd;
143
+ };
144
+
145
+ const normalized = normalizeCommand(packageManager);
146
+
147
+ switch (packageManager) {
148
+ case "npm":
149
+ return { command: normalized, args: ["install", ...dependencySpecs] };
150
+ case "pnpm":
151
+ return { command: normalized, args: ["add", ...dependencySpecs] };
152
+ case "yarn":
153
+ return { command: normalized, args: ["add", ...dependencySpecs] };
154
+ case "bun":
155
+ return { command: normalized, args: ["add", ...dependencySpecs] };
156
+ default:
157
+ return { command: null, args: [] };
158
+ }
159
+ }
160
+
161
+ it("should generate correct npm install command", () => {
162
+ const result = getInstallCommand("npm", ["package-a@1.0.0", "package-b"]);
163
+ expect(result.args).toEqual(["install", "package-a@1.0.0", "package-b"]);
164
+ });
165
+
166
+ it("should generate correct pnpm add command", () => {
167
+ const result = getInstallCommand("pnpm", ["package-a@1.0.0"]);
168
+ expect(result.args).toEqual(["add", "package-a@1.0.0"]);
169
+ });
170
+
171
+ it("should generate correct yarn add command", () => {
172
+ const result = getInstallCommand("yarn", ["package-a"]);
173
+ expect(result.args).toEqual(["add", "package-a"]);
174
+ });
175
+
176
+ it("should generate correct bun add command", () => {
177
+ const result = getInstallCommand("bun", ["package-a"]);
178
+ expect(result.args).toEqual(["add", "package-a"]);
179
+ });
180
+
181
+ it("should return null command for unsupported package manager", () => {
182
+ const result = getInstallCommand("unknown", ["package-a"]);
183
+ expect(result.command).toBeNull();
184
+ expect(result.args).toEqual([]);
185
+ });
186
+ });
187
+
188
+ describe("Dependency Formatting", () => {
189
+ function formatDependencySummary(dependencies) {
190
+ return dependencies
191
+ .map((dependency) =>
192
+ dependency.version
193
+ ? `${dependency.name}@${dependency.version}`
194
+ : dependency.name
195
+ )
196
+ .join(", ");
197
+ }
198
+
199
+ it("should format dependencies with versions", () => {
200
+ const deps = [
201
+ { name: "react", version: "^18.0.0" },
202
+ { name: "vite", version: "^5.0.0" },
203
+ ];
204
+ const result = formatDependencySummary(deps);
205
+ expect(result).toBe("react@^18.0.0, vite@^5.0.0");
206
+ });
207
+
208
+ it("should format dependencies without versions", () => {
209
+ const deps = [{ name: "react" }, { name: "vite" }];
210
+ const result = formatDependencySummary(deps);
211
+ expect(result).toBe("react, vite");
212
+ });
213
+
214
+ it("should handle mixed dependencies", () => {
215
+ const deps = [{ name: "react", version: "^18.0.0" }, { name: "vite" }];
216
+ const result = formatDependencySummary(deps);
217
+ expect(result).toBe("react@^18.0.0, vite");
218
+ });
219
+ });
220
+
221
+ describe("Path Normalization", () => {
222
+ it("should normalize Windows paths to forward slashes", () => {
223
+ const windowsPath = "app\\components\\Button.tsx";
224
+ const normalized = windowsPath.split("\\").join("/");
225
+ expect(normalized).toBe("app/components/Button.tsx");
226
+ });
227
+
228
+ it("should keep Unix paths unchanged", () => {
229
+ const unixPath = "app/components/Button.tsx";
230
+ const normalized = unixPath.split("/").join("/");
231
+ expect(normalized).toBe("app/components/Button.tsx");
232
+ });
233
+ });
234
+
235
+ describe("Missing Dependencies Detection", () => {
236
+ it("should detect missing dependencies", () => {
237
+ const requiredDeps = [
238
+ { name: "@tanstack/react-query", version: "^5.90.2" },
239
+ { name: "recharts", version: "^3.2.1" },
240
+ ];
241
+
242
+ const packageJson = {
243
+ dependencies: {
244
+ "@tanstack/react-query": "^5.90.2",
245
+ },
246
+ };
247
+
248
+ const missingDeps = requiredDeps.filter(
249
+ (dep) =>
250
+ !(
251
+ (packageJson.dependencies && packageJson.dependencies[dep.name]) ||
252
+ (packageJson.devDependencies &&
253
+ packageJson.devDependencies[dep.name])
254
+ )
255
+ );
256
+
257
+ expect(missingDeps).toHaveLength(1);
258
+ expect(missingDeps[0].name).toBe("recharts");
259
+ });
260
+
261
+ it("should return empty array when all dependencies are present", () => {
262
+ const requiredDeps = [
263
+ { name: "react", version: "^18.0.0" },
264
+ { name: "vite", version: "^5.0.0" },
265
+ ];
266
+
267
+ const packageJson = {
268
+ dependencies: {
269
+ react: "^18.0.0",
270
+ },
271
+ devDependencies: {
272
+ vite: "^5.0.0",
273
+ },
274
+ };
275
+
276
+ const missingDeps = requiredDeps.filter(
277
+ (dep) =>
278
+ !(
279
+ (packageJson.dependencies && packageJson.dependencies[dep.name]) ||
280
+ (packageJson.devDependencies &&
281
+ packageJson.devDependencies[dep.name])
282
+ )
283
+ );
284
+
285
+ expect(missingDeps).toHaveLength(0);
286
+ });
287
+ });
288
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cognite-create",
3
- "version": "0.2.31",
3
+ "version": "0.2.32",
4
4
  "description": "Create a Next.js app preconfigured with Cognite defaults.",
5
5
  "bin": {
6
6
  "cognite-create": "./bin/index.js"
@@ -9,8 +9,15 @@
9
9
  "bin",
10
10
  "templates"
11
11
  ],
12
+ "scripts": {
13
+ "test": "vitest run",
14
+ "test:watch": "vitest"
15
+ },
12
16
  "engines": {
13
17
  "node": ">=18.0.0"
14
18
  },
19
+ "devDependencies": {
20
+ "vitest": "^2.1.0"
21
+ },
15
22
  "license": "UNLICENSED"
16
23
  }
@@ -1,18 +1,18 @@
1
+ @import url('https://fonts.googleapis.com/css2?family=Nova+Mono&display=swap');
1
2
  @import "tailwindcss";
2
3
  @import "tw-animate-css";
3
4
 
4
5
  @custom-variant dark (&:is(.dark *));
5
6
 
7
+ /* Dark mode configuration */
8
+ @variant dark (@media (prefers-color-scheme: dark));
9
+ @variant dark (.dark &);
10
+
6
11
  @theme inline {
7
12
  --color-background: var(--background);
8
13
  --color-foreground: var(--foreground);
9
- --font-sans: var(--font-inter);
10
- --font-mono: var(--font-inter);
11
- --heading-1: var(--font-inter);
12
- --heading-2: var(--font-inter);
13
- --body-large: var(--font-inter);
14
- --body-medium: var(--font-inter);
15
- --body-small: var(--font-inter);
14
+ --font-sans: var(--font-geist-sans);
15
+ --font-mono: var(--font-geist-mono);
16
16
  --color-sidebar-ring: var(--sidebar-ring);
17
17
  --color-sidebar-border: var(--sidebar-border);
18
18
  --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
@@ -30,19 +30,108 @@
30
30
  --color-input: var(--input);
31
31
  --color-border: var(--border);
32
32
  --color-destructive: var(--destructive);
33
+ --color-destructive-foreground: var(--destructive-foreground);
34
+ --color-destructive-hover: var(--destructive-hover);
35
+ --color-decorative-background-hover: var(--decorative-background-hover);
36
+ --color-decorative-foreground-hover: var(--decorative-foreground-hover);
33
37
  --color-accent-foreground: var(--accent-foreground);
34
38
  --color-accent: var(--accent);
35
39
  --color-muted-foreground: var(--muted-foreground);
36
40
  --color-muted: var(--muted);
37
41
  --color-secondary-foreground: var(--secondary-foreground);
38
42
  --color-secondary: var(--secondary);
39
- --color-secondary-muted-default: var(--secondary-muted-default);
40
43
  --color-primary-foreground: var(--primary-foreground);
41
44
  --color-primary: var(--primary);
45
+ --color-primary-hover: var(--primary-hover);
46
+ --color-secondary-hover: var(--secondary-hover);
47
+ --color-tertiary: var(--tertiary);
48
+ --color-tertiary-hover: var(--tertiary-hover);
49
+ --color-tertiary-foreground: var(--tertiary-foreground);
42
50
  --color-popover-foreground: var(--popover-foreground);
43
51
  --color-popover: var(--popover);
44
52
  --color-card-foreground: var(--card-foreground);
45
53
  --color-card: var(--card);
54
+ --color-foreground-link: var(--foreground-link);
55
+ --color-backdrop: var(--backdrop);
56
+ --color-warning: var(--warning);
57
+ --color-warning-foreground: var(--warning-foreground);
58
+ --color-success: var(--success);
59
+ --color-success-foreground: var(--success-foreground);
60
+ --color-neutral: var(--neutral);
61
+ --color-neutral-foreground: var(--neutral-foreground);
62
+ --color-undefined: var(--undefined);
63
+ --color-undefined-foreground: var(--undefined-foreground);
64
+ --color-disabled: var(--disabled);
65
+ --color-disabled-foreground: var(--disabled-foreground);
66
+ --color-hover: var(--hover);
67
+
68
+ /* Color ramps - base colors */
69
+ --color-fjord: var(--fjord-50);
70
+ --color-nordic: var(--nordic-50);
71
+ --color-aurora: var(--aurora-50);
72
+ --color-sky: var(--sky-50);
73
+
74
+ /* Color ramps - individual shades */
75
+ --color-fjord-50: var(--fjord-50);
76
+ --color-fjord-100: var(--fjord-100);
77
+ --color-fjord-200: var(--fjord-200);
78
+ --color-fjord-300: var(--fjord-300);
79
+ --color-fjord-400: var(--fjord-400);
80
+ --color-fjord-450: var(--fjord-450);
81
+ --color-fjord-500: var(--fjord-500);
82
+ --color-fjord-550: var(--fjord-550);
83
+ --color-fjord-600: var(--fjord-600);
84
+ --color-fjord-650: var(--fjord-650);
85
+ --color-fjord-700: var(--fjord-700);
86
+ --color-fjord-800: var(--fjord-800);
87
+ --color-fjord-900: var(--fjord-900);
88
+ --color-fjord-950: var(--fjord-950);
89
+
90
+ --color-nordic-50: var(--nordic-50);
91
+ --color-nordic-100: var(--nordic-100);
92
+ --color-nordic-200: var(--nordic-200);
93
+ --color-nordic-300: var(--nordic-300);
94
+ --color-nordic-400: var(--nordic-400);
95
+ --color-nordic-450: var(--nordic-450);
96
+ --color-nordic-500: var(--nordic-500);
97
+ --color-nordic-550: var(--nordic-550);
98
+ --color-nordic-600: var(--nordic-600);
99
+ --color-nordic-650: var(--nordic-650);
100
+ --color-nordic-700: var(--nordic-700);
101
+ --color-nordic-800: var(--nordic-800);
102
+ --color-nordic-900: var(--nordic-900);
103
+ --color-nordic-950: var(--nordic-950);
104
+
105
+ --color-aurora-50: var(--aurora-50);
106
+ --color-aurora-100: var(--aurora-100);
107
+ --color-aurora-200: var(--aurora-200);
108
+ --color-aurora-300: var(--aurora-300);
109
+ --color-aurora-400: var(--aurora-400);
110
+ --color-aurora-450: var(--aurora-450);
111
+ --color-aurora-500: var(--aurora-500);
112
+ --color-aurora-550: var(--aurora-550);
113
+ --color-aurora-600: var(--aurora-600);
114
+ --color-aurora-650: var(--aurora-650);
115
+ --color-aurora-700: var(--aurora-700);
116
+ --color-aurora-800: var(--aurora-800);
117
+ --color-aurora-900: var(--aurora-900);
118
+ --color-aurora-950: var(--aurora-950);
119
+
120
+ --color-sky-50: var(--sky-50);
121
+ --color-sky-100: var(--sky-100);
122
+ --color-sky-200: var(--sky-200);
123
+ --color-sky-300: var(--sky-300);
124
+ --color-sky-400: var(--sky-400);
125
+ --color-sky-450: var(--sky-450);
126
+ --color-sky-500: var(--sky-500);
127
+ --color-sky-550: var(--sky-550);
128
+ --color-sky-600: var(--sky-600);
129
+ --color-sky-650: var(--sky-650);
130
+ --color-sky-700: var(--sky-700);
131
+ --color-sky-800: var(--sky-800);
132
+ --color-sky-900: var(--sky-900);
133
+ --color-sky-950: var(--sky-950);
134
+
46
135
  --radius-sm: calc(var(--radius) - 4px);
47
136
  --radius-md: calc(var(--radius) - 2px);
48
137
  --radius-lg: var(--radius);
@@ -50,74 +139,471 @@
50
139
  }
51
140
 
52
141
  :root {
53
- --radius: 0.625rem;
54
- --background: oklch(1 0 0);
55
- --foreground: oklch(0.145 0 0);
56
- --card: oklch(1 0 0);
57
- --card-foreground: oklch(0.145 0 0);
58
- --popover: oklch(1 0 0);
59
- --popover-foreground: oklch(0.145 0 0);
60
- --primary: oklch(0.205 0 0);
61
- --primary-foreground: oklch(0.985 0 0);
62
- --secondary: oklch(0.97 0 0);
63
- --secondary-foreground: oklch(0.205 0 0);
64
- --secondary-muted-default: #e4e4e7;
65
- --muted: oklch(0.97 0 0);
66
- --muted-foreground: oklch(0.556 0 0);
67
- --accent: oklch(0.97 0 0);
68
- --accent-foreground: oklch(0.205 0 0);
69
- --destructive: oklch(0.577 0.245 27.325);
70
- --border: oklch(0.922 0 0);
71
- --input: oklch(0.922 0 0);
72
- --ring: oklch(0.708 0 0);
73
- --chart-1: oklch(0.646 0.222 41.116);
74
- --chart-2: oklch(0.6 0.118 184.704);
75
- --chart-3: oklch(0.398 0.07 227.392);
76
- --chart-4: oklch(0.828 0.189 84.429);
77
- --chart-5: oklch(0.769 0.188 70.08);
78
- --sidebar: oklch(0.985 0 0);
79
- --sidebar-foreground: oklch(0.145 0 0);
80
- --sidebar-primary: oklch(0.205 0 0);
81
- --sidebar-primary-foreground: oklch(0.985 0 0);
82
- --sidebar-accent: oklch(0.97 0 0);
83
- --sidebar-accent-foreground: oklch(0.205 0 0);
84
- --sidebar-border: oklch(0.922 0 0);
85
- --sidebar-ring: oklch(0.708 0 0);
142
+ --radius: 0.375rem;
143
+
144
+ /* Mountain */
145
+ --mountain-50: rgb(241, 242, 243);
146
+ --mountain-100: rgb(228, 230, 232);
147
+ --mountain-200: rgb(212, 215, 217);
148
+ --mountain-300: rgb(187, 192, 196);
149
+ --mountain-400: rgb(165, 171, 177);
150
+ --mountain-450: rgb(139, 148, 154);
151
+ --mountain-500: rgb(124, 134, 142);
152
+ --mountain-550: rgb(109, 118, 126);
153
+ --mountain-600: rgb(94, 102, 109);
154
+ --mountain-650: rgb(82, 89, 95);
155
+ --mountain-700: rgb(64, 70, 74);
156
+ --mountain-800: rgb(45, 49, 52);
157
+ --mountain-900: rgb(33, 36, 38);
158
+ --mountain-950: rgb(17, 18, 19);
159
+ --mountain-white: rgb(255, 255, 255);
160
+ --mountain-black: rgb(0, 0, 0);
161
+
162
+ /* Fjord */
163
+ --fjord-50: rgb(239, 242, 253);
164
+ --fjord-100: rgb(223, 229, 252);
165
+ --fjord-200: rgb(204, 213, 250);
166
+ --fjord-300: rgb(174, 189, 247);
167
+ --fjord-400: rgb(147, 167, 244);
168
+ --fjord-450: rgb(114, 141, 241);
169
+ --fjord-500: rgb(95, 125, 239);
170
+ --fjord-550: rgb(72, 106, 237);
171
+ --fjord-600: rgb(47, 85, 234);
172
+ --fjord-650: rgb(23, 66, 231);
173
+ --fjord-700: rgb(18, 52, 182);
174
+ --fjord-800: rgb(13, 37, 130);
175
+ --fjord-900: rgb(10, 28, 97);
176
+ --fjord-950: rgb(5, 15, 51);
177
+
178
+ /* Nordic */
179
+ --nordic-50: rgb(218, 249, 242);
180
+ --nordic-100: rgb(180, 242, 229);
181
+ --nordic-200: rgb(127, 233, 210);
182
+ --nordic-300: rgb(37, 215, 176);
183
+ --nordic-400: rgb(33, 192, 157);
184
+ --nordic-450: rgb(28, 165, 135);
185
+ --nordic-500: rgb(26, 150, 122);
186
+ --nordic-550: rgb(23, 132, 108);
187
+ --nordic-600: rgb(20, 115, 94);
188
+ --nordic-650: rgb(17, 100, 82);
189
+ --nordic-700: rgb(13, 78, 64);
190
+ --nordic-800: rgb(10, 55, 45);
191
+ --nordic-900: rgb(7, 41, 34);
192
+ --nordic-950: rgb(4, 21, 17);
193
+
194
+ /* Aurora */
195
+ --aurora-50: rgb(231, 249, 198);
196
+ --aurora-100: rgb(207, 243, 141);
197
+ --aurora-200: rgb(171, 233, 56);
198
+ --aurora-300: rgb(144, 210, 23);
199
+ --aurora-400: rgb(129, 188, 20);
200
+ --aurora-450: rgb(110, 161, 18);
201
+ --aurora-500: rgb(100, 146, 16);
202
+ --aurora-550: rgb(88, 129, 14);
203
+ --aurora-600: rgb(77, 112, 12);
204
+ --aurora-650: rgb(67, 97, 11);
205
+ --aurora-700: rgb(52, 76, 8);
206
+ --aurora-800: rgb(37, 54, 6);
207
+ --aurora-900: rgb(27, 40, 4);
208
+ --aurora-950: rgb(14, 20, 2);
209
+
210
+ /* Dusk */
211
+ --dusk-50: rgb(253, 238, 244);
212
+ --dusk-100: rgb(251, 222, 234);
213
+ --dusk-200: rgb(249, 202, 220);
214
+ --dusk-300: rgb(245, 169, 199);
215
+ --dusk-400: rgb(242, 138, 180);
216
+ --dusk-450: rgb(237, 97, 153);
217
+ --dusk-500: rgb(234, 68, 134);
218
+ --dusk-550: rgb(226, 25, 105);
219
+ --dusk-600: rgb(196, 22, 91);
220
+ --dusk-650: rgb(172, 19, 80);
221
+ --dusk-700: rgb(136, 15, 63);
222
+ --dusk-800: rgb(98, 11, 45);
223
+ --dusk-900: rgb(74, 8, 34);
224
+ --dusk-950: rgb(40, 5, 19);
225
+
226
+ /* Red */
227
+ --red-50: rgb(254, 238, 241);
228
+ --red-100: rgb(253, 222, 228);
229
+ --red-200: rgb(252, 202, 210);
230
+ --red-300: rgb(250, 169, 183);
231
+ --red-400: rgb(248, 137, 156);
232
+ --red-450: rgb(246, 94, 120);
233
+ --red-500: rgb(244, 61, 92);
234
+ --red-550: rgb(233, 13, 50);
235
+ --red-600: rgb(203, 11, 44);
236
+ --red-650: rgb(178, 10, 38);
237
+ --red-700: rgb(141, 8, 31);
238
+ --red-800: rgb(102, 6, 22);
239
+ --red-900: rgb(78, 4, 17);
240
+ --red-950: rgb(44, 2, 9);
241
+
242
+ /* Amber */
243
+ --amber-50: rgb(255, 241, 208);
244
+ --amber-100: rgb(255, 227, 162);
245
+ --amber-200: rgb(255, 208, 98);
246
+ --amber-300: rgb(252, 177, 0);
247
+ --amber-400: rgb(225, 158, 0);
248
+ --amber-450: rgb(193, 136, 0);
249
+ --amber-500: rgb(175, 123, 0);
250
+ --amber-550: rgb(155, 109, 0);
251
+ --amber-600: rgb(134, 94, 0);
252
+ --amber-650: rgb(117, 82, 0);
253
+ --amber-700: rgb(91, 64, 0);
254
+ --amber-800: rgb(65, 45, 0);
255
+ --amber-900: rgb(48, 34, 0);
256
+ --amber-950: rgb(24, 17, 0);
257
+
258
+ /* Green */
259
+ --green-50: rgb(221, 249, 231);
260
+ --green-100: rgb(187, 243, 208);
261
+ --green-200: rgb(139, 234, 174);
262
+ --green-300: rgb(52, 218, 113);
263
+ --green-400: rgb(36, 196, 94);
264
+ --green-450: rgb(31, 168, 81);
265
+ --green-500: rgb(28, 152, 74);
266
+ --green-550: rgb(25, 135, 65);
267
+ --green-600: rgb(21, 117, 56);
268
+ --green-650: rgb(19, 102, 49);
269
+ --green-700: rgb(15, 80, 38);
270
+ --green-800: rgb(10, 56, 27);
271
+ --green-900: rgb(8, 42, 20);
272
+ --green-950: rgb(4, 22, 10);
273
+
274
+ /* Blue */
275
+ --blue-50: rgb(230, 244, 255);
276
+ --blue-100: rgb(206, 234, 255);
277
+ --blue-200: rgb(174, 220, 255);
278
+ --blue-300: rgb(124, 198, 255);
279
+ --blue-400: rgb(76, 178, 255);
280
+ --blue-450: rgb(11, 149, 255);
281
+ --blue-500: rgb(0, 134, 237);
282
+ --blue-550: rgb(0, 119, 210);
283
+ --blue-600: rgb(0, 103, 182);
284
+ --blue-650: rgb(0, 90, 159);
285
+ --blue-700: rgb(0, 71, 125);
286
+ --blue-800: rgb(0, 50, 89);
287
+ --blue-900: rgb(0, 37, 66);
288
+ --blue-950: rgb(0, 20, 35);
289
+
290
+ /* Sky */
291
+ --sky-50: rgb(219, 247, 255);
292
+ --sky-100: rgb(183, 239, 254);
293
+ --sky-200: rgb(132, 228, 254);
294
+ --sky-300: rgb(37, 207, 253);
295
+ --sky-400: rgb(2, 185, 234);
296
+ --sky-450: rgb(2, 159, 201);
297
+ --sky-500: rgb(2, 144, 182);
298
+ --sky-550: rgb(1, 127, 161);
299
+ --sky-600: rgb(1, 110, 140);
300
+ --sky-650: rgb(1, 96, 122);
301
+ --sky-700: rgb(1, 75, 96);
302
+ --sky-800: rgb(1, 54, 68);
303
+ --sky-900: rgb(0, 40, 50);
304
+ --sky-950: rgb(0, 21, 26);
305
+
306
+ /* Orange */
307
+ --orange-50: rgb(254, 239, 230);
308
+ --orange-100: rgb(253, 224, 207);
309
+ --orange-200: rgb(252, 205, 176);
310
+ --orange-300: rgb(251, 174, 126);
311
+ --orange-400: rgb(249, 143, 78);
312
+ --orange-450: rgb(247, 100, 10);
313
+ --orange-500: rgb(225, 90, 7);
314
+ --orange-550: rgb(199, 80, 6);
315
+ --orange-600: rgb(173, 69, 6);
316
+ --orange-650: rgb(150, 60, 5);
317
+ --orange-700: rgb(118, 47, 4);
318
+ --orange-800: rgb(84, 34, 3);
319
+ --orange-900: rgb(62, 25, 2);
320
+ --orange-950: rgb(33, 13, 1);
321
+
322
+ /* Yellow */
323
+ --yellow-50: rgb(255, 244, 162);
324
+ --yellow-100: rgb(255, 232, 52);
325
+ --yellow-200: rgb(243, 215, 0);
326
+ --yellow-300: rgb(216, 191, 0);
327
+ --yellow-400: rgb(193, 171, 0);
328
+ --yellow-450: rgb(166, 147, 0);
329
+ --yellow-500: rgb(150, 133, 0);
330
+ --yellow-550: rgb(133, 118, 0);
331
+ --yellow-600: rgb(115, 102, 0);
332
+ --yellow-650: rgb(100, 89, 0);
333
+ --yellow-700: rgb(78, 69, 0);
334
+ --yellow-800: rgb(55, 49, 0);
335
+ --yellow-900: rgb(41, 36, 0);
336
+ --yellow-950: rgb(21, 18, 0);
337
+
338
+ /* Gray */
339
+ --gray-50: rgb(240, 242, 249);
340
+ --gray-100: rgb(226, 229, 244);
341
+ --gray-200: rgb(208, 214, 237);
342
+ --gray-300: rgb(181, 190, 226);
343
+ --gray-400: rgb(157, 169, 217);
344
+ --gray-450: rgb(129, 143, 206);
345
+ --gray-500: rgb(112, 129, 199);
346
+ --gray-550: rgb(93, 112, 192);
347
+ --gray-600: rgb(74, 95, 184);
348
+ --gray-650: rgb(63, 82, 163);
349
+ --gray-700: rgb(50, 65, 127);
350
+ --gray-800: rgb(35, 46, 90);
351
+ --gray-900: rgb(26, 34, 66);
352
+ --gray-950: rgb(13, 17, 34);
353
+
354
+ /* Theme tokens (Light) mapped to ramp variables */
355
+ --background: var(--mountain-white);
356
+ --foreground: var(--mountain-950);
357
+ --card: var(--mountain-white);
358
+ --card-foreground: var(--mountain-950);
359
+ --popover: var(--mountain-white);
360
+ --popover-foreground: var(--mountain-950);
361
+ --primary: var(--mountain-900);
362
+ --primary-hover: var(--mountain-700);
363
+ --primary-foreground: var(--mountain-50);
364
+ --secondary: var(--mountain-100);
365
+ --secondary-hover: var(--mountain-200);
366
+ --secondary-foreground: var(--mountain-800);
367
+ --tertiary: var(--gray-550);
368
+ --tertiary-hover: var(--gray-300);
369
+ --tertiary-foreground: var(--mountain-white);
370
+ --muted: var(--mountain-50);
371
+ --muted-foreground: var(--mountain-600);
372
+ --accent: var(--mountain-100);
373
+ --accent-foreground: var(--mountain-950);
374
+ --foreground-link: var(--fjord-550);
375
+ --border: var(--mountain-50);
376
+ --input: var(--mountain-100);
377
+ --ring: var(--gray-600);
378
+ --backdrop: rgba(2, 6, 23, 0.2);
379
+
380
+ /* Status tokens */
381
+ --destructive: var(--red-50);
382
+ --destructive-hover: var(--red-100);
383
+ --destructive-foreground: var(--red-500);
384
+ --warning: var(--amber-50);
385
+ --warning-foreground: var(--amber-500);
386
+ --success: var(--green-50);
387
+ --success-foreground: var(--green-500);
388
+ --neutral: var(--blue-50);
389
+ --neutral-foreground: var(--blue-500);
390
+ --undefined: var(--mountain-50);
391
+ --undefined-foreground: var(--mountain-600);
392
+ --disabled: var(--mountain-50);
393
+ --disabled-foreground: var(--mountain-450);
394
+ --hover: var(--mountain-50)
395
+ /* Charts (light) */
396
+ --chart-fjord-solid: var(--fjord-600);
397
+ --chart-fjord-opacity-1: rgba(47, 85, 234, 0.8);
398
+ --chart-fjord-opacity-2: rgba(47, 85, 234, 0.65);
399
+ --chart-fjord-opacity-3: rgba(47, 85, 234, 0.5);
400
+ --chart-fjord-opacity-4: rgba(47, 85, 234, 0.35);
401
+ --chart-fjord-opacity-5: rgba(47, 85, 234, 0.2);
402
+ --chart-aurora-solid: var(--aurora-600);
403
+ --chart-aurora-opacity-1: rgba(77, 112, 12, 0.8);
404
+ --chart-aurora-opacity-2: rgba(77, 112, 12, 0.65);
405
+ --chart-aurora-opacity-3: rgba(77, 112, 12, 0.5);
406
+ --chart-aurora-opacity-4: rgba(77, 112, 12, 0.35);
407
+ --chart-aurora-opacity-5: rgba(77, 112, 12, 0.2);
408
+ --chart-nordic-solid: var(--nordic-600);
409
+ --chart-nordic-opacity-1: rgba(20, 115, 94, 0.8);
410
+ --chart-nordic-opacity-2: rgba(20, 115, 94, 0.65);
411
+ --chart-nordic-opacity-3: rgba(20, 115, 94, 0.5);
412
+ --chart-nordic-opacity-4: rgba(20, 115, 94, 0.35);
413
+ --chart-nordic-opacity-5: rgba(20, 115, 94, 0.2);
414
+ --chart-orange-solid: var(--orange-600);
415
+ --chart-orange-opacity-1: rgba(173, 69, 6, 0.8);
416
+ --chart-orange-opacity-2: rgba(173, 69, 6, 0.65);
417
+ --chart-orange-opacity-3: rgba(173, 69, 6, 0.5);
418
+ --chart-orange-opacity-4: rgba(173, 69, 6, 0.35);
419
+ --chart-orange-opacity-5: rgba(173, 69, 6, 0.2);
420
+ --chart-dusk-solid: var(--dusk-600);
421
+ --chart-dusk-opacity-1: rgba(196, 22, 91, 0.8);
422
+ --chart-dusk-opacity-2: rgba(196, 22, 91, 0.65);
423
+ --chart-dusk-opacity-3: rgba(196, 22, 91, 0.5);
424
+ --chart-dusk-opacity-4: rgba(196, 22, 91, 0.35);
425
+ --chart-dusk-opacity-5: rgba(196, 22, 91, 0.2);
426
+ --chart-lime-solid: var(--aurora-600);
427
+ --chart-lime-opacity-1: rgba(77, 112, 12, 0.8);
428
+ --chart-lime-opacity-2: rgba(77, 112, 12, 0.65);
429
+ --chart-lime-opacity-3: rgba(77, 112, 12, 0.5);
430
+ --chart-lime-opacity-4: rgba(77, 112, 12, 0.35);
431
+ --chart-lime-opacity-5: rgba(77, 112, 12, 0.2);
432
+ --chart-pink-solid: var(--dusk-600);
433
+ --chart-pink-opacity-1: rgba(196, 22, 91, 0.8);
434
+ --chart-pink-opacity-2: rgba(196, 22, 91, 0.65);
435
+ --chart-pink-opacity-3: rgba(196, 22, 91, 0.5);
436
+ --chart-pink-opacity-4: rgba(196, 22, 91, 0.35);
437
+ --chart-pink-opacity-5: rgba(196, 22, 91, 0.2);
438
+
439
+ /* Sidebar */
440
+ --sidebar: var(--mountain-900);
441
+ --sidebar-foreground: var(--mountain-100);
442
+ --sidebar-primary: var(--gray-500);
443
+ --sidebar-primary-foreground: var(--mountain-white);
444
+ --sidebar-accent: var(--gray-500);
445
+ --sidebar-accent-foreground: var(--mountain-white);
446
+ --sidebar-border: var(--mountain-800);
447
+ --sidebar-ring: var(--gray-300);
86
448
  }
87
449
 
88
450
  .dark {
89
- --background: oklch(0.145 0 0);
90
- --foreground: oklch(0.985 0 0);
91
- --card: oklch(0.205 0 0);
92
- --card-foreground: oklch(0.985 0 0);
93
- --popover: oklch(0.205 0 0);
94
- --popover-foreground: oklch(0.985 0 0);
95
- --primary: oklch(0.922 0 0);
96
- --primary-foreground: oklch(0.205 0 0);
97
- --secondary: oklch(0.269 0 0);
98
- --secondary-foreground: oklch(0.985 0 0);
99
- --secondary-muted-default: #e4e4e7;
100
- --muted: oklch(0.269 0 0);
101
- --muted-foreground: oklch(0.708 0 0);
102
- --accent: oklch(0.269 0 0);
103
- --accent-foreground: oklch(0.985 0 0);
104
- --destructive: oklch(0.704 0.191 22.216);
105
- --border: oklch(1 0 0 / 10%);
106
- --input: oklch(1 0 0 / 15%);
107
- --ring: oklch(0.556 0 0);
108
- --chart-1: oklch(0.488 0.243 264.376);
109
- --chart-2: oklch(0.696 0.17 162.48);
110
- --chart-3: oklch(0.769 0.188 70.08);
111
- --chart-4: oklch(0.627 0.265 303.9);
112
- --chart-5: oklch(0.645 0.246 16.439);
113
- --sidebar: oklch(0.205 0 0);
114
- --sidebar-foreground: oklch(0.985 0 0);
115
- --sidebar-primary: oklch(0.488 0.243 264.376);
116
- --sidebar-primary-foreground: oklch(0.985 0 0);
117
- --sidebar-accent: oklch(0.269 0 0);
118
- --sidebar-accent-foreground: oklch(0.985 0 0);
119
- --sidebar-border: oklch(1 0 0 / 10%);
120
- --sidebar-ring: oklch(0.556 0 0);
451
+ --background: var(--mountain-950);
452
+ --foreground: var(--mountain-50);
453
+ --card: var(--mountain-900);
454
+ --card-foreground: var(--mountain-50);
455
+ --popover: var(--mountain-900);
456
+ --popover-foreground: var(--mountain-200);
457
+ --primary: var(--mountain-50);
458
+ --primary-hover: var(--mountain-200);
459
+ --primary-foreground: var(--mountain-950);
460
+ --secondary: var(--mountain-700);
461
+ --secondary-hover: var(--mountain-600);
462
+ --secondary-foreground: var(--mountain-100);
463
+ --tertiary: var(--gray-550);
464
+ --tertiary-hover: var(--gray-700);
465
+ --tertiary-foreground: var(--mountain-white);
466
+ --muted: var(--mountain-800);
467
+ --muted-foreground: var(--mountain-400);
468
+ --accent: var(--mountain-700);
469
+ --accent-foreground: var(--mountain-50);
470
+ --foreground-link: var(--fjord-550);
471
+ --border: var(--mountain-800);
472
+ --input: var(--mountain-900);
473
+ --ring: var(--gray-300);
474
+ --backdrop: rgba(226, 232, 240, 0.2);
475
+
476
+ /* Status tokens */
477
+ --destructive: var(--red-900);
478
+ --destructive-hover: var(--red-800);
479
+ --destructive-foreground: var(--red-300);
480
+ --warning: var(--amber-900);
481
+ --warning-foreground: var(--amber-300);
482
+ --success: var(--green-900);
483
+ --success-foreground: var(--green-300);
484
+ --neutral: var(--blue-900);
485
+ --neutral-foreground: var(--blue-300);
486
+ --undefined: var(--mountain-900);
487
+ --undefined-foreground: var(--mountain-300);
488
+ --disabled: var(--mountain-800);
489
+ --disabled-foreground: var(--mountain-450);
490
+ --hover: var(--mountain-800);
491
+
492
+
493
+ /* Decorative background tokens */
494
+ --decorative-background-mountain: var(--mountain-900);
495
+ --decorative-background-fjord: var(--fjord-900);
496
+ --decorative-background-nordic: var(--nordic-900);
497
+ --decorative-background-aurora: var(--aurora-900);
498
+ --decorative-background-dusk: var(--dusk-900);
499
+ --decorative-background-orange: var(--orange-900);
500
+ --decorative-background-sky: var(--sky-900);
501
+
502
+ /* Decorative background hover tokens */
503
+ --decorative-background-hover-mountain: var(--mountain-900);
504
+ --decorative-background-hover-fjord: var(--fjord-900);
505
+ --decorative-background-hover-nordic: var(--nordic-900);
506
+ --decorative-background-hover-aurora: var(--aurora-900);
507
+ --decorative-background-hover-dusk: var(--dusk-900);
508
+ --decorative-background-hover-orange: var(--orange-900);
509
+ --decorative-background-hover-sky: var(--sky-900);
510
+
511
+ /* Decorative foreground tokens */
512
+ --decorative-foreground-mountain: var(--mountain-300);
513
+ --decorative-foreground-fjord: var(--fjord-300);
514
+ --decorative-foreground-nordic: var(--nordic-300);
515
+ --decorative-foreground-aurora: var(--aurora-300);
516
+ --decorative-foreground-dusk: var(--dusk-400);
517
+ --decorative-foreground-orange: var(--orange-300);
518
+ --decorative-foreground-sky: var(--sky-300);
519
+
520
+ /* Charts (dark) */
521
+ --chart-fjord-solid: var(--fjord-300);
522
+ --chart-fjord-opacity-1: rgba(174, 189, 247, 0.8);
523
+ --chart-fjord-opacity-2: rgba(174, 189, 247, 0.65);
524
+ --chart-fjord-opacity-3: rgba(174, 189, 247, 0.5);
525
+ --chart-fjord-opacity-4: rgba(174, 189, 247, 0.35);
526
+ --chart-fjord-opacity-5: rgba(174, 189, 247, 0.2);
527
+ --chart-aurora-solid: var(--aurora-200);
528
+ --chart-aurora-opacity-1: rgba(171, 233, 56, 0.8);
529
+ --chart-aurora-opacity-2: rgba(171, 233, 56, 0.65);
530
+ --chart-aurora-opacity-3: rgba(171, 233, 56, 0.5);
531
+ --chart-aurora-opacity-4: rgba(171, 233, 56, 0.35);
532
+ --chart-aurora-opacity-5: rgba(171, 233, 56, 0.2);
533
+ --chart-nordic-solid: var(--nordic-200);
534
+ --chart-nordic-opacity-1: rgba(127, 233, 210, 0.8);
535
+ --chart-nordic-opacity-2: rgba(127, 233, 210, 0.65);
536
+ --chart-nordic-opacity-3: rgba(127, 233, 210, 0.5);
537
+ --chart-nordic-opacity-4: rgba(127, 233, 210, 0.35);
538
+ --chart-nordic-opacity-5: rgba(127, 233, 210, 0.2);
539
+ --chart-orange-solid: var(--orange-200);
540
+ --chart-orange-opacity-1: rgba(252, 205, 176, 0.8);
541
+ --chart-orange-opacity-2: rgba(252, 205, 176, 0.65);
542
+ --chart-orange-opacity-3: rgba(252, 205, 176, 0.5);
543
+ --chart-orange-opacity-4: rgba(252, 205, 176, 0.35);
544
+ --chart-orange-opacity-5: rgba(252, 205, 176, 0.2);
545
+ --chart-dusk-solid: var(--dusk-200);
546
+ --chart-dusk-opacity-1: rgba(249, 202, 220, 0.8);
547
+ --chart-dusk-opacity-2: rgba(249, 202, 220, 0.65);
548
+ --chart-dusk-opacity-3: rgba(249, 202, 220, 0.5);
549
+ --chart-dusk-opacity-4: rgba(249, 202, 220, 0.35);
550
+ --chart-dusk-opacity-5: rgba(249, 202, 220, 0.2);
551
+ --chart-lime-solid: var(--aurora-200);
552
+ --chart-lime-opacity-1: rgba(171, 233, 56, 0.8);
553
+ --chart-lime-opacity-2: rgba(171, 233, 56, 0.65);
554
+ --chart-lime-opacity-3: rgba(171, 233, 56, 0.5);
555
+ --chart-lime-opacity-4: rgba(171, 233, 56, 0.35);
556
+ --chart-lime-opacity-5: rgba(171, 233, 56, 0.2);
557
+ --chart-pink-solid: var(--dusk-200);
558
+ --chart-pink-opacity-1: rgba(249, 202, 220, 0.8);
559
+ --chart-pink-opacity-2: rgba(249, 202, 220, 0.65);
560
+ --chart-pink-opacity-3: rgba(249, 202, 220, 0.5);
561
+ --chart-pink-opacity-4: rgba(249, 202, 220, 0.35);
562
+ --chart-pink-opacity-5: rgba(249, 202, 220, 0.2);
563
+
564
+ /* Sidebar */
565
+ --sidebar: var(--mountain-900);
566
+ --sidebar-foreground: var(--mountain-100);
567
+ --sidebar-primary: var(--gray-500);
568
+ --sidebar-primary-foreground: var(--mountain-white);
569
+ --sidebar-accent: var(--gray-500);
570
+ --sidebar-accent-foreground: var(--mountain-white);
571
+ --sidebar-border: var(--mountain-800);
572
+ --sidebar-ring: var(--gray-300);
573
+ }
574
+
575
+ .contrast {
576
+ --background: #000000; /* Pure black */
577
+ --foreground: #ffffff; /* Pure white */
578
+ --card: var(--onyx-900);
579
+ --card-foreground: #ffffff;
580
+ --popover: var(--onyx-900);
581
+ --popover-foreground: #ffffff;
582
+ --primary: #ffffff; /* Pure white for primary */
583
+ --primary-foreground: #000000; /* Pure black for primary text */
584
+ --secondary: var(--onyx-800);
585
+ --secondary-foreground: #ffffff;
586
+ --muted: var(--onyx-700);
587
+ --muted-foreground: var(--onyx-200);
588
+ --accent: var(--onyx-800);
589
+ --accent-foreground: #ffffff;
590
+ --destructive: #ff0000; /* High contrast red */
591
+ --border: var(--onyx-700);
592
+ --input: var(--onyx-800);
593
+ --ring: #ffffff;
594
+ --chart-1: #ffffff;
595
+ --chart-2: var(--neon-300);
596
+ --chart-3: var(--onyx-400);
597
+ --chart-4: var(--onyx-600);
598
+ --chart-5: var(--onyx-200);
599
+ --sidebar: var(--onyx-900);
600
+ --sidebar-foreground: #ffffff;
601
+ --sidebar-primary: #ffffff;
602
+ --sidebar-primary-foreground: #000000;
603
+ --sidebar-accent: var(--onyx-800);
604
+ --sidebar-accent-foreground: #ffffff;
605
+ --sidebar-border: var(--onyx-700);
606
+ --sidebar-ring: #ffffff;
121
607
  }
122
608
 
123
609
  @layer base {
@@ -127,39 +613,4 @@
127
613
  body {
128
614
  @apply bg-background text-foreground;
129
615
  }
130
- h1 {
131
- font-family: var(--heading-1);
132
- font-weight: 700;
133
- font-size: 36px;
134
- line-height: 44px;
135
- letter-spacing: -0.59px;
136
- }
137
- h2 {
138
- font-family: var(--heading-2);
139
- font-weight: 700;
140
- font-size: 28px;
141
- line-height: 32px;
142
- letter-spacing: -0.59px;
143
- }
144
- .body-large {
145
- font-family: var(--body-large);
146
- font-weight: 400;
147
- font-size: 16px;
148
- line-height: 20px;
149
- letter-spacing: -0.17px;
150
- }
151
- .body-medium {
152
- font-family: var(--body-medium);
153
- font-weight: 400;
154
- font-size: 14px;
155
- line-height: 20px;
156
- letter-spacing: -0.08px;
157
- }
158
- .body-small {
159
- font-family: var(--body-small);
160
- font-weight: 400;
161
- font-size: 12px;
162
- line-height: 16px;
163
- letter-spacing: -0.04px;
164
- }
165
- }
616
+ }
@@ -19,6 +19,6 @@
19
19
  "hooks": "@/hooks"
20
20
  },
21
21
  "registries": {
22
- "@cognite": "https://liz-playground.vercel.app/r/{name}.json"
22
+ "@cognite/aura": "https://refactored-couscous-5l9mkl3.pages.github.io/r/{name}.json"
23
23
  }
24
24
  }
@@ -1,7 +0,0 @@
1
- # Cognite Configuration
2
- NEXT_PUBLIC_COGNITE_PROJECT=
3
- NEXT_PUBLIC_COGNITE_BASE_URL=
4
-
5
- # OIDC Authentication (Required for production)
6
- NEXT_PUBLIC_COGNITE_CLIENT_ID=
7
- COGNITE_CLIENT_SECRET=