cognite-create 0.2.28 → 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,8 +6,11 @@ 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 = [
13
+ { name: "@tanstack/react-query", version: "^5.90.2" },
11
14
  { name: "recharts", version: "^3.2.1" },
12
15
  { name: "@cognite/sdk", version: "^10.2.0" },
13
16
  { name: "date-fns", version: "^4.1.0" },
@@ -16,23 +19,49 @@ const REQUIRED_DEPENDENCIES = [
16
19
  { name: "clsx", version: "^2.1.1" },
17
20
  ];
18
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
+
19
36
  async function main() {
20
37
  const args = process.argv.slice(2);
38
+ let projectDir;
39
+ let additionalArgs = [];
21
40
 
22
41
  if (args.length === 0 || args[0].startsWith("-")) {
23
- console.error(
24
- "Usage: cognite-create <project-name> [create-next-app options]"
25
- );
26
- 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);
27
57
  }
28
58
 
29
- const projectDir = args[0];
30
- const createArgs = ["create-next-app@latest", ...args];
31
- await runCreateNextApp(createArgs);
59
+ const createArgs = ["create-vite@latest", projectDir, ...additionalArgs];
60
+ await runCreateVite(createArgs);
32
61
  await addCogniteTemplates(projectDir);
33
62
  }
34
63
 
35
- function runCreateNextApp(cliArgs) {
64
+ function runCreateVite(cliArgs) {
36
65
  const command = process.platform === "win32" ? "npx.cmd" : "npx";
37
66
 
38
67
  return new Promise((resolve, reject) => {
@@ -41,7 +70,7 @@ function runCreateNextApp(cliArgs) {
41
70
  child.on("error", reject);
42
71
  child.on("close", (code) => {
43
72
  if (code !== 0) {
44
- const error = new Error(`create-next-app exited with code ${code}`);
73
+ const error = new Error(`create-vite exited with code ${code}`);
45
74
  error.exitCode = code;
46
75
  return reject(error);
47
76
  }
@@ -61,7 +90,7 @@ async function addCogniteTemplates(projectDir) {
61
90
  if (error.code === "ENOENT") {
62
91
  throw new Error(
63
92
  `Expected to find the newly created project at "${projectDir}", but it was not found. ` +
64
- "Check the create-next-app output for more details."
93
+ "Check the create-vite output for more details."
65
94
  );
66
95
  }
67
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.28",
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
  }
@@ -10,8 +10,14 @@ Always use semantic Tailwind color classes (e.g., bg-primary, text-primary, bord
10
10
 
11
11
  Layout & Components
12
12
  Make sure to put the components together in a cohesive manner.
13
- Make sure charts have properly formatted value properties to display data.
14
13
  Make sure to properly handle x and y values to proper scales.
14
+ Make sure you are properly handling timezoned dates between client and server.
15
+
16
+ Chart Rendering Rules
17
+ Use direct hex colors: Avoid CSS variables like var(--color-*) in stroke properties
18
+ Make sure charts have properly formatted value properties to display data.
19
+ Use real Cognite data from the SDK.
20
+ Be really careful with x chart values and make sure you are rendering them correctly. Keep consistent with date and timestamp formatting as this can cause rendering issues.
15
21
 
16
22
  CogniteSDK Rules
17
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=