@yenio-pld/blocks 0.0.0-stage → 0.0.0

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.
Files changed (103) hide show
  1. package/README.md +100 -2
  2. package/dist/avatar.cjs +88 -0
  3. package/dist/avatar.cjs.map +1 -0
  4. package/dist/avatar.d.cts +18 -0
  5. package/dist/avatar.d.ts +18 -0
  6. package/dist/avatar.js +84 -0
  7. package/dist/avatar.js.map +1 -0
  8. package/dist/consent.cjs +85 -0
  9. package/dist/consent.cjs.map +1 -0
  10. package/dist/consent.d.cts +20 -0
  11. package/dist/consent.d.ts +20 -0
  12. package/dist/consent.js +73 -0
  13. package/dist/consent.js.map +1 -0
  14. package/dist/index.cjs +4053 -0
  15. package/dist/index.cjs.map +1 -0
  16. package/dist/index.d.cts +859 -0
  17. package/dist/index.d.ts +859 -0
  18. package/dist/index.js +3947 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/theme-init.cjs +12 -0
  21. package/dist/theme-init.cjs.map +1 -0
  22. package/dist/theme-init.d.cts +11 -0
  23. package/dist/theme-init.d.ts +11 -0
  24. package/dist/theme-init.js +8 -0
  25. package/dist/theme-init.js.map +1 -0
  26. package/dist/ui/alert-dialog.d.ts +15 -0
  27. package/dist/ui/alert-dialog.js +137 -0
  28. package/dist/ui/alert-dialog.js.map +1 -0
  29. package/dist/ui/alert.d.ts +11 -0
  30. package/dist/ui/alert.js +57 -0
  31. package/dist/ui/alert.js.map +1 -0
  32. package/dist/ui/avatar.d.ts +13 -0
  33. package/dist/ui/avatar.js +105 -0
  34. package/dist/ui/avatar.js.map +1 -0
  35. package/dist/ui/badge.d.ts +13 -0
  36. package/dist/ui/badge.js +33 -0
  37. package/dist/ui/badge.js.map +1 -0
  38. package/dist/ui/breadcrumb.d.ts +12 -0
  39. package/dist/ui/breadcrumb.js +121 -0
  40. package/dist/ui/breadcrumb.js.map +1 -0
  41. package/dist/ui/bubble.d.ts +19 -0
  42. package/dist/ui/bubble.js +120 -0
  43. package/dist/ui/bubble.js.map +1 -0
  44. package/dist/ui/button.d.ts +12 -0
  45. package/dist/ui/button.js +59 -0
  46. package/dist/ui/button.js.map +1 -0
  47. package/dist/ui/card.d.ts +10 -0
  48. package/dist/ui/card.js +55 -0
  49. package/dist/ui/card.js.map +1 -0
  50. package/dist/ui/collapsible.d.ts +8 -0
  51. package/dist/ui/collapsible.js +17 -0
  52. package/dist/ui/collapsible.js.map +1 -0
  53. package/dist/ui/dialog.d.ts +16 -0
  54. package/dist/ui/dialog.js +125 -0
  55. package/dist/ui/dialog.js.map +1 -0
  56. package/dist/ui/dropdown-menu.d.ts +31 -0
  57. package/dist/ui/dropdown-menu.js +244 -0
  58. package/dist/ui/dropdown-menu.js.map +1 -0
  59. package/dist/ui/input-otp.d.ts +39 -0
  60. package/dist/ui/input-otp.js +53 -0
  61. package/dist/ui/input-otp.js.map +1 -0
  62. package/dist/ui/input.d.ts +5 -0
  63. package/dist/ui/input.js +28 -0
  64. package/dist/ui/input.js.map +1 -0
  65. package/dist/ui/label.d.ts +7 -0
  66. package/dist/ui/label.js +29 -0
  67. package/dist/ui/label.js.map +1 -0
  68. package/dist/ui/message.d.ts +12 -0
  69. package/dist/ui/message.js +93 -0
  70. package/dist/ui/message.js.map +1 -0
  71. package/dist/ui/progress.d.ts +9 -0
  72. package/dist/ui/progress.js +41 -0
  73. package/dist/ui/progress.js.map +1 -0
  74. package/dist/ui/separator.d.ts +6 -0
  75. package/dist/ui/separator.js +31 -0
  76. package/dist/ui/separator.js.map +1 -0
  77. package/dist/ui/sheet.d.ts +16 -0
  78. package/dist/ui/sheet.js +127 -0
  79. package/dist/ui/sheet.js.map +1 -0
  80. package/dist/ui/sidebar.d.ts +69 -0
  81. package/dist/ui/sidebar.js +624 -0
  82. package/dist/ui/sidebar.js.map +1 -0
  83. package/dist/ui/skeleton.d.ts +5 -0
  84. package/dist/ui/skeleton.js +26 -0
  85. package/dist/ui/skeleton.js.map +1 -0
  86. package/dist/ui/sonner.d.ts +6 -0
  87. package/dist/ui/sonner.js +25 -0
  88. package/dist/ui/sonner.js.map +1 -0
  89. package/dist/ui/switch.d.ts +8 -0
  90. package/dist/ui/switch.js +38 -0
  91. package/dist/ui/switch.js.map +1 -0
  92. package/dist/ui/table.d.ts +11 -0
  93. package/dist/ui/table.js +85 -0
  94. package/dist/ui/table.js.map +1 -0
  95. package/dist/ui/tooltip.d.ts +9 -0
  96. package/dist/ui/tooltip.js +67 -0
  97. package/dist/ui/tooltip.js.map +1 -0
  98. package/dist/ui/use-mobile.d.ts +3 -0
  99. package/dist/ui/use-mobile.js +24 -0
  100. package/dist/ui/use-mobile.js.map +1 -0
  101. package/package.json +281 -5
  102. package/scripts/check-theme.mjs +74 -0
  103. package/src/theme.css +191 -0
package/package.json CHANGED
@@ -1,6 +1,282 @@
1
1
  {
2
- "name": "@yenio-pld/blocks",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
2
+ "name": "@yenio-pld/blocks",
3
+ "version": "0.0.0",
4
+ "description": "Shared UI components for Yenio applications",
5
+ "type": "module",
6
+ "main": "./dist/index.cjs",
7
+ "module": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "import": {
12
+ "types": "./dist/index.d.ts",
13
+ "default": "./dist/index.js"
14
+ },
15
+ "require": {
16
+ "types": "./dist/index.d.cts",
17
+ "default": "./dist/index.cjs"
18
+ }
19
+ },
20
+ "./avatar": {
21
+ "import": {
22
+ "types": "./dist/avatar.d.ts",
23
+ "default": "./dist/avatar.js"
24
+ },
25
+ "require": {
26
+ "types": "./dist/avatar.d.cts",
27
+ "default": "./dist/avatar.cjs"
28
+ }
29
+ },
30
+ "./consent": {
31
+ "import": {
32
+ "types": "./dist/consent.d.ts",
33
+ "default": "./dist/consent.js"
34
+ },
35
+ "require": {
36
+ "types": "./dist/consent.d.cts",
37
+ "default": "./dist/consent.cjs"
38
+ }
39
+ },
40
+ "./theme-init": {
41
+ "import": {
42
+ "types": "./dist/theme-init.d.ts",
43
+ "default": "./dist/theme-init.js"
44
+ },
45
+ "require": {
46
+ "types": "./dist/theme-init.d.cts",
47
+ "default": "./dist/theme-init.cjs"
48
+ }
49
+ },
50
+ "./theme.css": "./src/theme.css",
51
+ "./ui/alert": {
52
+ "types": "./dist/ui/alert.d.ts",
53
+ "default": "./dist/ui/alert.js"
54
+ },
55
+ "./ui/alert-dialog": {
56
+ "types": "./dist/ui/alert-dialog.d.ts",
57
+ "default": "./dist/ui/alert-dialog.js"
58
+ },
59
+ "./ui/avatar": {
60
+ "types": "./dist/ui/avatar.d.ts",
61
+ "default": "./dist/ui/avatar.js"
62
+ },
63
+ "./ui/badge": {
64
+ "types": "./dist/ui/badge.d.ts",
65
+ "default": "./dist/ui/badge.js"
66
+ },
67
+ "./ui/breadcrumb": {
68
+ "types": "./dist/ui/breadcrumb.d.ts",
69
+ "default": "./dist/ui/breadcrumb.js"
70
+ },
71
+ "./ui/bubble": {
72
+ "types": "./dist/ui/bubble.d.ts",
73
+ "default": "./dist/ui/bubble.js"
74
+ },
75
+ "./ui/button": {
76
+ "types": "./dist/ui/button.d.ts",
77
+ "default": "./dist/ui/button.js"
78
+ },
79
+ "./ui/card": {
80
+ "types": "./dist/ui/card.d.ts",
81
+ "default": "./dist/ui/card.js"
82
+ },
83
+ "./ui/collapsible": {
84
+ "types": "./dist/ui/collapsible.d.ts",
85
+ "default": "./dist/ui/collapsible.js"
86
+ },
87
+ "./ui/dialog": {
88
+ "types": "./dist/ui/dialog.d.ts",
89
+ "default": "./dist/ui/dialog.js"
90
+ },
91
+ "./ui/dropdown-menu": {
92
+ "types": "./dist/ui/dropdown-menu.d.ts",
93
+ "default": "./dist/ui/dropdown-menu.js"
94
+ },
95
+ "./ui/input": {
96
+ "types": "./dist/ui/input.d.ts",
97
+ "default": "./dist/ui/input.js"
98
+ },
99
+ "./ui/input-otp": {
100
+ "types": "./dist/ui/input-otp.d.ts",
101
+ "default": "./dist/ui/input-otp.js"
102
+ },
103
+ "./ui/label": {
104
+ "types": "./dist/ui/label.d.ts",
105
+ "default": "./dist/ui/label.js"
106
+ },
107
+ "./ui/message": {
108
+ "types": "./dist/ui/message.d.ts",
109
+ "default": "./dist/ui/message.js"
110
+ },
111
+ "./ui/progress": {
112
+ "types": "./dist/ui/progress.d.ts",
113
+ "default": "./dist/ui/progress.js"
114
+ },
115
+ "./ui/separator": {
116
+ "types": "./dist/ui/separator.d.ts",
117
+ "default": "./dist/ui/separator.js"
118
+ },
119
+ "./ui/sheet": {
120
+ "types": "./dist/ui/sheet.d.ts",
121
+ "default": "./dist/ui/sheet.js"
122
+ },
123
+ "./ui/sidebar": {
124
+ "types": "./dist/ui/sidebar.d.ts",
125
+ "default": "./dist/ui/sidebar.js"
126
+ },
127
+ "./ui/skeleton": {
128
+ "types": "./dist/ui/skeleton.d.ts",
129
+ "default": "./dist/ui/skeleton.js"
130
+ },
131
+ "./ui/sonner": {
132
+ "types": "./dist/ui/sonner.d.ts",
133
+ "default": "./dist/ui/sonner.js"
134
+ },
135
+ "./ui/switch": {
136
+ "types": "./dist/ui/switch.d.ts",
137
+ "default": "./dist/ui/switch.js"
138
+ },
139
+ "./ui/table": {
140
+ "types": "./dist/ui/table.d.ts",
141
+ "default": "./dist/ui/table.js"
142
+ },
143
+ "./ui/tooltip": {
144
+ "types": "./dist/ui/tooltip.d.ts",
145
+ "default": "./dist/ui/tooltip.js"
146
+ },
147
+ "./ui/use-mobile": {
148
+ "types": "./dist/ui/use-mobile.d.ts",
149
+ "default": "./dist/ui/use-mobile.js"
150
+ }
151
+ },
152
+ "files": [
153
+ "dist",
154
+ "README.md",
155
+ "scripts/check-theme.mjs",
156
+ "src/theme.css"
157
+ ],
158
+ "sideEffects": [
159
+ "**/*.css"
160
+ ],
161
+ "scripts": {
162
+ "build": "tsup && tsup --config tsup.ui.config.ts && node scripts/prepend-use-client.mjs && node scripts/assert-ui-entries.mjs",
163
+ "dev": "tsup --watch",
164
+ "typecheck": "tsc --noEmit && tsc --noEmit -p tsconfig.storybook.json",
165
+ "lint": "eslint . --max-warnings=0",
166
+ "lint:fix": "eslint . --fix",
167
+ "format": "prettier --write .",
168
+ "format:check": "prettier --check .",
169
+ "test": "vitest run --coverage",
170
+ "test:watch": "vitest",
171
+ "theme:check": "node scripts/check-theme.mjs",
172
+ "prepare": "node scripts/prepare.mjs",
173
+ "prepublishOnly": "pnpm build",
174
+ "release": "semantic-release",
175
+ "ci:check": "pnpm run format:check && pnpm run lint && pnpm run typecheck && pnpm run test && pnpm run theme:check && pnpm run build",
176
+ "storybook": "storybook dev -p 6006",
177
+ "build-storybook": "storybook build"
178
+ },
179
+ "repository": {
180
+ "type": "git",
181
+ "url": "https://github.com/yenio-pld/blocks.git"
182
+ },
183
+ "bugs": {
184
+ "url": "https://github.com/yenio-pld/blocks/issues"
185
+ },
186
+ "homepage": "https://github.com/yenio-pld/blocks#readme",
187
+ "keywords": [
188
+ "react",
189
+ "ui",
190
+ "components",
191
+ "compliance"
192
+ ],
193
+ "author": "Yenio",
194
+ "license": "MIT",
195
+ "publishConfig": {
196
+ "access": "public"
197
+ },
198
+ "peerDependencies": {
199
+ "framer-motion": ">=11.0.0",
200
+ "lucide-react": ">=0.400.0",
201
+ "next-themes": ">=0.4.0",
202
+ "react": ">=18.0.0",
203
+ "react-dom": ">=18.0.0"
204
+ },
205
+ "peerDependenciesMeta": {
206
+ "framer-motion": {
207
+ "optional": true
208
+ },
209
+ "next-themes": {
210
+ "optional": true
211
+ }
212
+ },
213
+ "dependencies": {
214
+ "@base-ui/react": "^1.8.0",
215
+ "@radix-ui/react-alert-dialog": "^1.1.15",
216
+ "@radix-ui/react-dialog": "^1.1.15",
217
+ "@radix-ui/react-dropdown-menu": "^2.1.4",
218
+ "@radix-ui/react-label": "^2.1.15",
219
+ "@radix-ui/react-slider": "^1.3.6",
220
+ "@radix-ui/react-slot": "^1.1.1",
221
+ "@radix-ui/react-toggle": "^1.1.10",
222
+ "class-variance-authority": "^0.7.1",
223
+ "clsx": "^2.1.1",
224
+ "input-otp": "^1.5.0",
225
+ "sonner": "^2.0.8",
226
+ "tailwind-merge": "^3.3.0",
227
+ "vaul": "^1.1.2"
228
+ },
229
+ "devDependencies": {
230
+ "@commitlint/cli": "^19.8.1",
231
+ "@commitlint/config-conventional": "^19.8.1",
232
+ "@eslint/js": "^9.26.0",
233
+ "@fontsource/inter": "^5.3.0",
234
+ "@semantic-release/changelog": "^6.0.3",
235
+ "@semantic-release/git": "^10.0.1",
236
+ "@semantic-release/github": "^11.0.1",
237
+ "@semantic-release/npm": "^13.1.3",
238
+ "@storybook/addon-a11y": "^10.6.0",
239
+ "@storybook/addon-docs": "^10.6.0",
240
+ "@storybook/react-vite": "^10.6.0",
241
+ "@tailwindcss/postcss": "4.1.17",
242
+ "@testing-library/jest-dom": "6.9.1",
243
+ "@testing-library/react": "^16.3.0",
244
+ "@testing-library/user-event": "^14.6.1",
245
+ "@types/react": "^19.1.3",
246
+ "@types/react-dom": "^19.1.3",
247
+ "@vitest/coverage-istanbul": "^4.0.0",
248
+ "conventional-changelog-conventionalcommits": "^9.3.1",
249
+ "eslint": "^9.26.0",
250
+ "eslint-config-prettier": "^10.1.3",
251
+ "eslint-plugin-storybook": "^10.6.0",
252
+ "framer-motion": "^12.26.2",
253
+ "husky": "^9.1.7",
254
+ "jsdom": "^26.1.0",
255
+ "lint-staged": "^16.2.7",
256
+ "lucide-react": "^0.560.0",
257
+ "next-themes": "^0.4.4",
258
+ "prettier": "^3.5.3",
259
+ "react": "^19.1.0",
260
+ "react-dom": "^19.1.0",
261
+ "semantic-release": "^25.0.2",
262
+ "storybook": "^10.6.0",
263
+ "tailwindcss": "4.1.17",
264
+ "tsup": "^8.5.0",
265
+ "tw-animate-css": "^1.4.0",
266
+ "typescript": "^5.9.3",
267
+ "typescript-eslint": "^8.32.1",
268
+ "vitest": "^4.0.0",
269
+ "vitest-axe": "^0.1.0"
270
+ },
271
+ "pnpm": {
272
+ "onlyBuiltDependencies": [
273
+ "esbuild"
274
+ ]
275
+ },
276
+ "lint-staged": {
277
+ "**/*.{js,jsx,ts,tsx,md,json,yml,yaml,css}": [
278
+ "prettier --write"
279
+ ]
280
+ },
281
+ "packageManager": "pnpm@10.23.0+sha512.21c4e5698002ade97e4efe8b8b4a89a8de3c85a37919f957e7a0f30f38fbc5bbdd05980ffe29179b2fb6e6e691242e098d945d1601772cad0fef5fb6411e2a4b"
282
+ }
@@ -0,0 +1,74 @@
1
+ import { existsSync, readdirSync, readFileSync, realpathSync } from "node:fs";
2
+ import { dirname, join, resolve } from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+
5
+ const SKIP_DIRS = new Set([
6
+ "node_modules",
7
+ "dist",
8
+ "coverage",
9
+ "storybook-static",
10
+ ".git",
11
+ ]);
12
+
13
+ const TOKEN_DECLARATION =
14
+ /--(?:background|foreground|card|popover|primary|secondary|muted|accent|destructive|border|input|ring|skeleton|sidebar|chart-[1-5])\s*:/;
15
+
16
+ const canonical = resolve(
17
+ dirname(fileURLToPath(import.meta.url)),
18
+ "../src/theme.css",
19
+ );
20
+
21
+ function identity(path) {
22
+ const resolved = resolve(path);
23
+ return existsSync(resolved) ? realpathSync(resolved) : resolved;
24
+ }
25
+
26
+ const canonicalId = identity(canonical);
27
+
28
+ function walk(dir, out) {
29
+ let entries;
30
+ try {
31
+ entries = readdirSync(dir, { withFileTypes: true });
32
+ } catch (error) {
33
+ console.error(`check-theme: cannot read ${dir}`);
34
+ console.error(error instanceof Error ? error.message : error);
35
+ process.exit(1);
36
+ }
37
+ for (const entry of entries) {
38
+ if (SKIP_DIRS.has(entry.name)) continue;
39
+ const path = join(dir, entry.name);
40
+ if (entry.isDirectory()) {
41
+ walk(path, out);
42
+ } else if (entry.isFile() && entry.name.endsWith(".css")) {
43
+ out.push(path);
44
+ }
45
+ }
46
+ }
47
+
48
+ const roots = process.argv.slice(2);
49
+ const scanRoots = roots.length > 0 ? roots : [process.cwd()];
50
+ const files = [];
51
+ for (const root of scanRoots) {
52
+ walk(resolve(root), files);
53
+ }
54
+
55
+ const failures = [];
56
+ for (const file of files) {
57
+ if (identity(file) === canonicalId) continue;
58
+ const text = readFileSync(file, "utf8");
59
+ if (TOKEN_DECLARATION.test(text)) {
60
+ failures.push(file);
61
+ }
62
+ }
63
+
64
+ if (failures.length > 0) {
65
+ console.error(
66
+ "Color tokens belong only in @yenio-pld/blocks theme.css. Duplicate declarations:",
67
+ );
68
+ for (const file of failures) {
69
+ console.error(` ${file}`);
70
+ }
71
+ process.exit(1);
72
+ }
73
+
74
+ console.log("theme tokens ok");
package/src/theme.css ADDED
@@ -0,0 +1,191 @@
1
+ /* Provisional Yenio palette. Precise, calm, and trustworthy.
2
+ Not a final brand sign-off. This file is the only color-token source.
3
+ Import it after `tailwindcss`. Do not copy these values into an app.
4
+ CSS only: no JavaScript and no client boundary. */
5
+
6
+ @custom-variant dark (&:is(.dark *));
7
+
8
+ :root {
9
+ --background: oklch(0.985 0.004 230);
10
+ --foreground: oklch(0.28 0.02 250);
11
+ --card: oklch(0.995 0.002 230);
12
+ --card-foreground: oklch(0.28 0.02 250);
13
+ --popover: oklch(0.995 0.002 230);
14
+ --popover-foreground: oklch(0.28 0.02 250);
15
+ --primary: oklch(0.4 0.07 230);
16
+ --primary-foreground: oklch(0.985 0.004 230);
17
+ --secondary: oklch(0.95 0.008 230);
18
+ --secondary-foreground: oklch(0.28 0.02 250);
19
+ --muted: oklch(0.95 0.006 230);
20
+ --muted-foreground: oklch(0.48 0.02 250);
21
+ --skeleton: oklch(0.9 0 0);
22
+ --accent: oklch(0.93 0.02 200);
23
+ --accent-foreground: oklch(0.28 0.02 250);
24
+ --destructive: oklch(0.52 0.16 25);
25
+ --destructive-foreground: oklch(0.98 0.01 95);
26
+ --border: oklch(0.9 0.008 230);
27
+ --input: oklch(0.86 0.01 230);
28
+ --ring: oklch(0.4 0.07 230);
29
+ --chart-1: oklch(0.55 0.08 230);
30
+ --chart-2: oklch(0.55 0.07 170);
31
+ --chart-3: oklch(0.55 0.06 90);
32
+ --chart-4: oklch(0.55 0.08 30);
33
+ --chart-5: oklch(0.5 0.07 300);
34
+ --sidebar: oklch(0.975 0.006 230);
35
+ --sidebar-foreground: oklch(0.28 0.02 250);
36
+ --sidebar-primary: oklch(0.4 0.07 230);
37
+ --sidebar-primary-foreground: oklch(0.985 0.004 230);
38
+ --sidebar-accent: oklch(0.93 0.02 200);
39
+ --sidebar-accent-foreground: oklch(0.28 0.02 250);
40
+ --sidebar-border: oklch(0.9 0.008 230);
41
+ --sidebar-ring: oklch(0.4 0.07 230);
42
+ --font-sans: Inter, ui-sans-serif, sans-serif, system-ui;
43
+ --font-serif: ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;
44
+ --font-mono:
45
+ ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono",
46
+ "Courier New", monospace;
47
+ --radius: 0.625rem;
48
+ --shadow-x: 0;
49
+ --shadow-y: 1px;
50
+ --shadow-blur: 3px;
51
+ --shadow-spread: 0px;
52
+ --shadow-opacity: 0.1;
53
+ --shadow-color: #000000;
54
+ --shadow-2xs: 0 1px 3px 0px hsl(0 0% 0% / 0.05);
55
+ --shadow-xs: 0 1px 3px 0px hsl(0 0% 0% / 0.05);
56
+ --shadow-sm:
57
+ 0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 1px 2px -1px hsl(0 0% 0% / 0.1);
58
+ --shadow: 0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 1px 2px -1px hsl(0 0% 0% / 0.1);
59
+ --shadow-md:
60
+ 0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 2px 4px -1px hsl(0 0% 0% / 0.1);
61
+ --shadow-lg:
62
+ 0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 4px 6px -1px hsl(0 0% 0% / 0.1);
63
+ --shadow-xl:
64
+ 0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 8px 10px -1px hsl(0 0% 0% / 0.1);
65
+ --shadow-2xl: 0 1px 3px 0px hsl(0 0% 0% / 0.25);
66
+ --tracking-normal: 0em;
67
+ --spacing: 0.25rem;
68
+ color-scheme: light;
69
+ }
70
+
71
+ .dark {
72
+ --background: oklch(0.2 0.015 250);
73
+ --foreground: oklch(0.9 0.01 230);
74
+ --card: oklch(0.24 0.016 250);
75
+ --card-foreground: oklch(0.9 0.01 230);
76
+ --popover: oklch(0.24 0.016 250);
77
+ --popover-foreground: oklch(0.9 0.01 230);
78
+ --primary: oklch(0.74 0.06 220);
79
+ --primary-foreground: oklch(0.2 0.015 250);
80
+ --secondary: oklch(0.3 0.012 250);
81
+ --secondary-foreground: oklch(0.9 0.01 230);
82
+ --muted: oklch(0.28 0.012 250);
83
+ --muted-foreground: oklch(0.68 0.015 230);
84
+ --skeleton: oklch(0.32 0 0);
85
+ --accent: oklch(0.3 0.02 210);
86
+ --accent-foreground: oklch(0.95 0.01 230);
87
+ --destructive: oklch(0.65 0.15 25);
88
+ --destructive-foreground: oklch(0.98 0.005 250);
89
+ --border: oklch(0.34 0.012 250);
90
+ --input: oklch(0.34 0.012 250);
91
+ --ring: oklch(0.74 0.06 220);
92
+ --chart-1: oklch(0.7 0.07 230);
93
+ --chart-2: oklch(0.7 0.06 170);
94
+ --chart-3: oklch(0.75 0.05 95);
95
+ --chart-4: oklch(0.7 0.07 40);
96
+ --chart-5: oklch(0.68 0.07 310);
97
+ --sidebar: oklch(0.22 0.016 250);
98
+ --sidebar-foreground: oklch(0.9 0.01 230);
99
+ --sidebar-primary: oklch(0.74 0.06 220);
100
+ --sidebar-primary-foreground: oklch(0.2 0.015 250);
101
+ --sidebar-accent: oklch(0.3 0.02 210);
102
+ --sidebar-accent-foreground: oklch(0.95 0.01 230);
103
+ --sidebar-border: oklch(0.3 0.012 250);
104
+ --sidebar-ring: oklch(0.74 0.06 220);
105
+ --font-sans: Inter, ui-sans-serif, sans-serif, system-ui;
106
+ --font-serif: ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;
107
+ --font-mono:
108
+ ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono",
109
+ "Courier New", monospace;
110
+ --radius: 0.625rem;
111
+ --shadow-x: 0;
112
+ --shadow-y: 1px;
113
+ --shadow-blur: 3px;
114
+ --shadow-spread: 0px;
115
+ --shadow-opacity: 0.1;
116
+ --shadow-color: #000000;
117
+ --shadow-2xs: 0 1px 3px 0px hsl(0 0% 0% / 0.05);
118
+ --shadow-xs: 0 1px 3px 0px hsl(0 0% 0% / 0.05);
119
+ --shadow-sm:
120
+ 0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 1px 2px -1px hsl(0 0% 0% / 0.1);
121
+ --shadow: 0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 1px 2px -1px hsl(0 0% 0% / 0.1);
122
+ --shadow-md:
123
+ 0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 2px 4px -1px hsl(0 0% 0% / 0.1);
124
+ --shadow-lg:
125
+ 0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 4px 6px -1px hsl(0 0% 0% / 0.1);
126
+ --shadow-xl:
127
+ 0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 8px 10px -1px hsl(0 0% 0% / 0.1);
128
+ --shadow-2xl: 0 1px 3px 0px hsl(0 0% 0% / 0.25);
129
+ color-scheme: dark;
130
+ }
131
+
132
+ @theme inline {
133
+ --color-background: var(--background);
134
+ --color-foreground: var(--foreground);
135
+ --color-card: var(--card);
136
+ --color-card-foreground: var(--card-foreground);
137
+ --color-popover: var(--popover);
138
+ --color-popover-foreground: var(--popover-foreground);
139
+ --color-primary: var(--primary);
140
+ --color-primary-foreground: var(--primary-foreground);
141
+ --color-secondary: var(--secondary);
142
+ --color-secondary-foreground: var(--secondary-foreground);
143
+ --color-muted: var(--muted);
144
+ --color-muted-foreground: var(--muted-foreground);
145
+ --color-skeleton: var(--skeleton);
146
+ --color-accent: var(--accent);
147
+ --color-accent-foreground: var(--accent-foreground);
148
+ --color-destructive: var(--destructive);
149
+ --color-destructive-foreground: var(--destructive-foreground);
150
+ --color-border: var(--border);
151
+ --color-input: var(--input);
152
+ --color-ring: var(--ring);
153
+ --color-chart-1: var(--chart-1);
154
+ --color-chart-2: var(--chart-2);
155
+ --color-chart-3: var(--chart-3);
156
+ --color-chart-4: var(--chart-4);
157
+ --color-chart-5: var(--chart-5);
158
+ --color-sidebar: var(--sidebar);
159
+ --color-sidebar-foreground: var(--sidebar-foreground);
160
+ --color-sidebar-primary: var(--sidebar-primary);
161
+ --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
162
+ --color-sidebar-accent: var(--sidebar-accent);
163
+ --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
164
+ --color-sidebar-border: var(--sidebar-border);
165
+ --color-sidebar-ring: var(--sidebar-ring);
166
+
167
+ --font-sans: var(--font-sans);
168
+ --font-mono: var(--font-mono);
169
+ --font-serif: var(--font-serif);
170
+
171
+ --radius-sm: calc(var(--radius) - 4px);
172
+ --radius-md: calc(var(--radius) - 2px);
173
+ --radius-lg: var(--radius);
174
+ --radius-xl: calc(var(--radius) + 4px);
175
+
176
+ --shadow-2xs: var(--shadow-2xs);
177
+ --shadow-xs: var(--shadow-xs);
178
+ --shadow-sm: var(--shadow-sm);
179
+ --shadow: var(--shadow);
180
+ --shadow-md: var(--shadow-md);
181
+ --shadow-lg: var(--shadow-lg);
182
+ --shadow-xl: var(--shadow-xl);
183
+ --shadow-2xl: var(--shadow-2xl);
184
+
185
+ --tracking-tighter: calc(var(--tracking-normal) - 0.05em);
186
+ --tracking-tight: calc(var(--tracking-normal) - 0.025em);
187
+ --tracking-normal: var(--tracking-normal);
188
+ --tracking-wide: calc(var(--tracking-normal) + 0.025em);
189
+ --tracking-wider: calc(var(--tracking-normal) + 0.05em);
190
+ --tracking-widest: calc(var(--tracking-normal) + 0.1em);
191
+ }