@proofkit/cli 1.0.0 → 1.1.6

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@proofkit/cli",
3
- "version": "1.0.0",
3
+ "version": "1.1.6",
4
4
  "description": "Create web application with the ProofKit stack",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -19,8 +19,8 @@
19
19
  "type": "module",
20
20
  "exports": {
21
21
  ".": {
22
- "import": "./dist/index.js",
23
- "types": "./index.d.ts"
22
+ "types": "./index.d.ts",
23
+ "import": "./dist/index.js"
24
24
  }
25
25
  },
26
26
  "bin": {
@@ -28,9 +28,9 @@
28
28
  },
29
29
  "files": [
30
30
  "dist",
31
- "index.d.ts",
32
31
  "template",
33
32
  "README.md",
33
+ "index.d.ts",
34
34
  "LICENSE",
35
35
  "CHANGELOG.md",
36
36
  "package.json"
@@ -56,11 +56,14 @@
56
56
  "jsonc-parser": "^3.3.1",
57
57
  "open": "^10.1.0",
58
58
  "ora": "6.3.1",
59
+ "prettier": "^3.5.3",
60
+ "prettier-plugin-tailwindcss": "^0.6.5",
59
61
  "randomstring": "^1.3.0",
60
62
  "semver": "^7.6.3",
61
63
  "sort-package-json": "^2.10.0",
62
64
  "ts-morph": "^26.0.0",
63
- "@proofkit/fmdapi": "5.0.0"
65
+ "@proofkit/fmdapi": "5.0.0",
66
+ "@proofkit/typegen": "1.0.7"
64
67
  },
65
68
  "devDependencies": {
66
69
  "@auth/drizzle-adapter": "^1.1.0",
@@ -78,34 +81,32 @@
78
81
  "@types/axios": "^0.14.0",
79
82
  "@types/fs-extra": "^11.0.4",
80
83
  "@types/gradient-string": "^1.1.6",
81
- "@types/node": "^22.15.19",
84
+ "@types/node": "^22.15.32",
82
85
  "@types/randomstring": "^1.3.0",
83
- "@types/react": "^19.1.2",
86
+ "@types/react": "^19.1.8",
84
87
  "@types/semver": "^7.5.8",
85
88
  "@vitest/coverage-v8": "^1.4.0",
86
89
  "drizzle-kit": "^0.21.4",
87
90
  "drizzle-orm": "^0.30.10",
88
91
  "mysql2": "^3.9.7",
89
- "next": "^15.3.3",
92
+ "next": "^15.3.4",
90
93
  "next-auth": "^4.24.7",
91
94
  "postgres": "^3.4.4",
92
- "prettier": "^3.5.3",
93
- "prettier-plugin-tailwindcss": "^0.6.5",
94
95
  "prisma": "^5.14.0",
96
+ "publint": "^0.3.12",
95
97
  "react": "^19.1.0",
96
98
  "react-dom": "^19.1.0",
97
99
  "superjson": "^2.2.1",
98
- "tailwindcss": "^4.1.4",
100
+ "tailwindcss": "^4.1.10",
99
101
  "tsup": "^6.7.0",
100
102
  "type-fest": "^3.13.1",
101
103
  "typescript": "^5.8.3",
102
104
  "vitest": "^3.2.3",
103
- "zod": "3.25.64",
104
- "@proofkit/typegen": "1.0.0"
105
+ "zod": "3.25.64"
105
106
  },
106
107
  "scripts": {
107
108
  "typecheck": "tsc",
108
- "build": "tsup",
109
+ "build": "tsup && publint --strict",
109
110
  "dev": "tsup --watch",
110
111
  "clean": "rm -rf dist .turbo node_modules",
111
112
  "start": "node dist/index.js",
@@ -0,0 +1,3 @@
1
+ {
2
+ "plugins": ["prettier-plugin-tailwindcss"]
3
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema.json",
3
+ "style": "new-york",
4
+ "rsc": true,
5
+ "tsx": true,
6
+ "tailwind": {
7
+ "config": "",
8
+ "css": "src/config/theme/globals.css",
9
+ "baseColor": "neutral",
10
+ "cssVariables": true,
11
+ "prefix": "tw:"
12
+ },
13
+ "aliases": {
14
+ "components": "@/components",
15
+ "utils": "@/utils/styles",
16
+ "ui": "@/components/ui",
17
+ "lib": "@/utils",
18
+ "hooks": "@/utils/hooks"
19
+ },
20
+ "iconLibrary": "lucide"
21
+ }
@@ -12,9 +12,9 @@
12
12
  "deploy": "proofkit deploy"
13
13
  },
14
14
  "dependencies": {
15
- "@hookform/resolvers": "^3.10.0",
16
- "@next-safe-action/adapter-react-hook-form": "^1.0.13",
17
- "next-safe-action": "^7.10.4",
15
+ "@hookform/resolvers": "^5.1.1",
16
+ "@next-safe-action/adapter-react-hook-form": "^2.0.0",
17
+ "next-safe-action": "^8.0.4",
18
18
  "react-hook-form": "^7.54.2",
19
19
  "@tabler/icons-react": "^3.30.0",
20
20
  "@mantine/core": "^7.17.0",
@@ -1,5 +1,6 @@
1
1
  module.exports = {
2
2
  plugins: {
3
+ "@tailwindcss/postcss": {},
3
4
  "postcss-preset-mantine": {},
4
5
  "postcss-simple-vars": {
5
6
  variables: {
@@ -1 +1,6 @@
1
- { "auth": { "type": "none" }, "envFile": ".env", "appType": "browser" }
1
+ {
2
+ "auth": { "type": "none" },
3
+ "envFile": ".env",
4
+ "appType": "browser",
5
+ "appliedUpgrades": ["shadcn", "cursorRules"]
6
+ }
@@ -1 +1,125 @@
1
1
  /* Add global styles here */
2
+
3
+ @import "tailwindcss" prefix(tw);
4
+ @import "tw-animate-css";
5
+
6
+ @custom-variant dark (&:is(.dark *));
7
+
8
+ :root {
9
+ --background: oklch(1 0 0);
10
+ --foreground: oklch(0.145 0 0);
11
+ --card: oklch(1 0 0);
12
+ --card-foreground: oklch(0.145 0 0);
13
+ --popover: oklch(1 0 0);
14
+ --popover-foreground: oklch(0.145 0 0);
15
+ --primary: oklch(0.205 0 0);
16
+ --primary-foreground: oklch(0.985 0 0);
17
+ --secondary: oklch(0.97 0 0);
18
+ --secondary-foreground: oklch(0.205 0 0);
19
+ --muted: oklch(0.97 0 0);
20
+ --muted-foreground: oklch(0.556 0 0);
21
+ --accent: oklch(0.97 0 0);
22
+ --accent-foreground: oklch(0.205 0 0);
23
+ --destructive: oklch(0.577 0.245 27.325);
24
+ --destructive-foreground: oklch(0.577 0.245 27.325);
25
+ --border: oklch(0.922 0 0);
26
+ --input: oklch(0.922 0 0);
27
+ --ring: oklch(0.708 0 0);
28
+ --chart-1: oklch(0.646 0.222 41.116);
29
+ --chart-2: oklch(0.6 0.118 184.704);
30
+ --chart-3: oklch(0.398 0.07 227.392);
31
+ --chart-4: oklch(0.828 0.189 84.429);
32
+ --chart-5: oklch(0.769 0.188 70.08);
33
+ --radius: 0.625rem;
34
+ --sidebar: oklch(0.985 0 0);
35
+ --sidebar-foreground: oklch(0.145 0 0);
36
+ --sidebar-primary: oklch(0.205 0 0);
37
+ --sidebar-primary-foreground: oklch(0.985 0 0);
38
+ --sidebar-accent: oklch(0.97 0 0);
39
+ --sidebar-accent-foreground: oklch(0.205 0 0);
40
+ --sidebar-border: oklch(0.922 0 0);
41
+ --sidebar-ring: oklch(0.708 0 0);
42
+ }
43
+
44
+ .dark {
45
+ --background: oklch(0.145 0 0);
46
+ --foreground: oklch(0.985 0 0);
47
+ --card: oklch(0.145 0 0);
48
+ --card-foreground: oklch(0.985 0 0);
49
+ --popover: oklch(0.145 0 0);
50
+ --popover-foreground: oklch(0.985 0 0);
51
+ --primary: oklch(0.985 0 0);
52
+ --primary-foreground: oklch(0.205 0 0);
53
+ --secondary: oklch(0.269 0 0);
54
+ --secondary-foreground: oklch(0.985 0 0);
55
+ --muted: oklch(0.269 0 0);
56
+ --muted-foreground: oklch(0.708 0 0);
57
+ --accent: oklch(0.269 0 0);
58
+ --accent-foreground: oklch(0.985 0 0);
59
+ --destructive: oklch(0.396 0.141 25.723);
60
+ --destructive-foreground: oklch(0.637 0.237 25.331);
61
+ --border: oklch(0.269 0 0);
62
+ --input: oklch(0.269 0 0);
63
+ --ring: oklch(0.439 0 0);
64
+ --chart-1: oklch(0.488 0.243 264.376);
65
+ --chart-2: oklch(0.696 0.17 162.48);
66
+ --chart-3: oklch(0.769 0.188 70.08);
67
+ --chart-4: oklch(0.627 0.265 303.9);
68
+ --chart-5: oklch(0.645 0.246 16.439);
69
+ --sidebar: oklch(0.205 0 0);
70
+ --sidebar-foreground: oklch(0.985 0 0);
71
+ --sidebar-primary: oklch(0.488 0.243 264.376);
72
+ --sidebar-primary-foreground: oklch(0.985 0 0);
73
+ --sidebar-accent: oklch(0.269 0 0);
74
+ --sidebar-accent-foreground: oklch(0.985 0 0);
75
+ --sidebar-border: oklch(0.269 0 0);
76
+ --sidebar-ring: oklch(0.439 0 0);
77
+ }
78
+
79
+ @theme inline {
80
+ --color-background: var(--background);
81
+ --color-foreground: var(--foreground);
82
+ --color-card: var(--card);
83
+ --color-card-foreground: var(--card-foreground);
84
+ --color-popover: var(--popover);
85
+ --color-popover-foreground: var(--popover-foreground);
86
+ --color-primary: var(--primary);
87
+ --color-primary-foreground: var(--primary-foreground);
88
+ --color-secondary: var(--secondary);
89
+ --color-secondary-foreground: var(--secondary-foreground);
90
+ --color-muted: var(--muted);
91
+ --color-muted-foreground: var(--muted-foreground);
92
+ --color-accent: var(--accent);
93
+ --color-accent-foreground: var(--accent-foreground);
94
+ --color-destructive: var(--destructive);
95
+ --color-destructive-foreground: var(--destructive-foreground);
96
+ --color-border: var(--border);
97
+ --color-input: var(--input);
98
+ --color-ring: var(--ring);
99
+ --color-chart-1: var(--chart-1);
100
+ --color-chart-2: var(--chart-2);
101
+ --color-chart-3: var(--chart-3);
102
+ --color-chart-4: var(--chart-4);
103
+ --color-chart-5: var(--chart-5);
104
+ --radius-sm: calc(var(--radius) - 4px);
105
+ --radius-md: calc(var(--radius) - 2px);
106
+ --radius-lg: var(--radius);
107
+ --radius-xl: calc(var(--radius) + 4px);
108
+ --color-sidebar: var(--sidebar);
109
+ --color-sidebar-foreground: var(--sidebar-foreground);
110
+ --color-sidebar-primary: var(--sidebar-primary);
111
+ --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
112
+ --color-sidebar-accent: var(--sidebar-accent);
113
+ --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
114
+ --color-sidebar-border: var(--sidebar-border);
115
+ --color-sidebar-ring: var(--sidebar-ring);
116
+ }
117
+
118
+ @layer base {
119
+ * {
120
+ @apply tw:border-border tw:outline-ring/50;
121
+ }
122
+ body {
123
+ @apply tw:bg-background tw:text-foreground;
124
+ }
125
+ }
@@ -0,0 +1,6 @@
1
+ import { clsx } from "clsx";
2
+ import { twMerge } from "tailwind-merge";
3
+
4
+ export function cn(...inputs: any[]) {
5
+ return twMerge(clsx(inputs));
6
+ }
@@ -1,12 +1,13 @@
1
1
  "use server";
2
2
 
3
- import { __CLIENT_NAME__ } from "@/config/schemas/__SOURCE_NAME__/client";
4
3
  import { __ZOD_TYPE_NAME__ } from "@/config/schemas/__SOURCE_NAME__/__SCHEMA_NAME__";
4
+ import { __CLIENT_NAME__ } from "@/config/schemas/__SOURCE_NAME__/client";
5
5
  import { __ACTION_CLIENT__ } from "@/server/safe-action";
6
+
6
7
  import { idFieldName } from "./schema";
7
8
 
8
9
  export const updateRecord = __ACTION_CLIENT__
9
- .schema(__ZOD_TYPE_NAME__.partial())
10
+ .inputSchema(__ZOD_TYPE_NAME__.partial())
10
11
  .action(async ({ parsedInput }) => {
11
12
  const id = parsedInput[idFieldName];
12
13
  delete parsedInput[idFieldName]; // this ensures the id field value is not included in the updated fieldData
@@ -3,13 +3,13 @@
3
3
  import { __TYPE_NAME__ } from "@/config/schemas/__SOURCE_NAME__/__SCHEMA_NAME__";
4
4
  import { __CLIENT_NAME__ } from "@/config/schemas/__SOURCE_NAME__/client";
5
5
  import { __ACTION_CLIENT__ } from "@/server/safe-action";
6
- import { ListParams, Query } from "@proofkit/fmdapi/dist/client-types.js";
6
+ import { clientTypes } from "@proofkit/fmdapi";
7
7
  import dayjs from "dayjs";
8
8
  import { z } from "zod/v4";
9
9
 
10
10
  const limit = 50; // raise or lower this number depending on how your layout performs
11
11
  export const fetchData = __ACTION_CLIENT__
12
- .schema(
12
+ .inputSchema(
13
13
  z.object({
14
14
  offset: z.number().catch(0),
15
15
  sorting: z.array(
@@ -20,8 +20,8 @@ export const fetchData = __ACTION_CLIENT__
20
20
  )
21
21
  .action(async ({ parsedInput: { offset, sorting, columnFilters } }) => {
22
22
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
23
- const getOptions: ListParams<__TYPE_NAME__, any> & {
24
- query: Query<__TYPE_NAME__>[];
23
+ const getOptions: clientTypes.ListParams<__TYPE_NAME__, any> & {
24
+ query: clientTypes.Query<__TYPE_NAME__>[];
25
25
  } = {
26
26
  limit,
27
27
  offset,
@@ -49,7 +49,7 @@ export const fetchData = __ACTION_CLIENT__
49
49
  }
50
50
  return null;
51
51
  })
52
- .filter(Boolean) as Query<any>[];
52
+ .filter(Boolean) as clientTypes.Query<any>[];
53
53
  }
54
54
 
55
55
  const data = await __CLIENT_NAME__.find(getOptions);
@@ -6,7 +6,7 @@ import {
6
6
  } from "@/config/schemas/__SOURCE_NAME__/__SCHEMA_NAME__";
7
7
  import { __CLIENT_NAME__ } from "@/config/schemas/__SOURCE_NAME__/client";
8
8
  import { __ACTION_CLIENT__ } from "@/server/safe-action";
9
- import { ListParams, Query } from "@proofkit/fmdapi/dist/client-types.js";
9
+ import { clientTypes } from "@proofkit/fmdapi";
10
10
  import dayjs from "dayjs";
11
11
  import { z } from "zod/v4";
12
12
 
@@ -14,7 +14,7 @@ import { idFieldName } from "./schema";
14
14
 
15
15
  const limit = 50; // raise or lower this number depending on how your layout performs
16
16
  export const fetchData = __ACTION_CLIENT__
17
- .schema(
17
+ .inputSchema(
18
18
  z.object({
19
19
  offset: z.number().catch(0),
20
20
  sorting: z.array(
@@ -25,8 +25,8 @@ export const fetchData = __ACTION_CLIENT__
25
25
  )
26
26
  .action(async ({ parsedInput: { offset, sorting, columnFilters } }) => {
27
27
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
28
- const getOptions: ListParams<__TYPE_NAME__, any> & {
29
- query: Query<__TYPE_NAME__>[];
28
+ const getOptions: clientTypes.ListParams<__TYPE_NAME__, any> & {
29
+ query: clientTypes.Query<__TYPE_NAME__>[];
30
30
  } = {
31
31
  limit,
32
32
  offset,
@@ -54,7 +54,7 @@ export const fetchData = __ACTION_CLIENT__
54
54
  }
55
55
  return null;
56
56
  })
57
- .filter(Boolean) as Query<any>[];
57
+ .filter(Boolean) as clientTypes.Query<any>[];
58
58
  }
59
59
 
60
60
  const data = await __CLIENT_NAME__.find(getOptions);
@@ -67,7 +67,7 @@ export const fetchData = __ACTION_CLIENT__
67
67
  });
68
68
 
69
69
  export const updateRecord = __ACTION_CLIENT__
70
- .schema(__ZOD_TYPE_NAME__.partial())
70
+ .inputSchema(__ZOD_TYPE_NAME__.partial())
71
71
  .action(async ({ parsedInput }) => {
72
72
  const id = parsedInput[idFieldName];
73
73
  delete parsedInput[idFieldName]; // this ensures the id field value is not included in the updated fieldData
@@ -0,0 +1,3 @@
1
+ {
2
+ "plugins": ["prettier-plugin-tailwindcss"]
3
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema.json",
3
+ "style": "new-york",
4
+ "rsc": true,
5
+ "tsx": true,
6
+ "tailwind": {
7
+ "config": "",
8
+ "css": "src/config/theme/globals.css",
9
+ "baseColor": "neutral",
10
+ "cssVariables": true,
11
+ "prefix": "tw:"
12
+ },
13
+ "aliases": {
14
+ "components": "@/components",
15
+ "utils": "@/utils/styles",
16
+ "ui": "@/components/ui",
17
+ "lib": "@/utils",
18
+ "hooks": "@/utils/hooks"
19
+ },
20
+ "iconLibrary": "lucide"
21
+ }
@@ -1,5 +1,6 @@
1
1
  module.exports = {
2
2
  plugins: {
3
+ "@tailwindcss/postcss": {},
3
4
  "postcss-preset-mantine": {},
4
5
  "postcss-simple-vars": {
5
6
  variables: {
@@ -1 +1,6 @@
1
- { "auth": { "type": "none" }, "envFile": ".env", "appType": "webviewer" }
1
+ {
2
+ "auth": { "type": "none" },
3
+ "envFile": ".env",
4
+ "appType": "webviewer",
5
+ "appliedUpgrades": ["shadcn"]
6
+ }
@@ -1 +1,125 @@
1
1
  /* Add global styles here */
2
+
3
+ @import "tailwindcss" prefix(tw);
4
+ @import "tw-animate-css";
5
+
6
+ @custom-variant dark (&:is(.dark *));
7
+
8
+ :root {
9
+ --background: oklch(1 0 0);
10
+ --foreground: oklch(0.145 0 0);
11
+ --card: oklch(1 0 0);
12
+ --card-foreground: oklch(0.145 0 0);
13
+ --popover: oklch(1 0 0);
14
+ --popover-foreground: oklch(0.145 0 0);
15
+ --primary: oklch(0.205 0 0);
16
+ --primary-foreground: oklch(0.985 0 0);
17
+ --secondary: oklch(0.97 0 0);
18
+ --secondary-foreground: oklch(0.205 0 0);
19
+ --muted: oklch(0.97 0 0);
20
+ --muted-foreground: oklch(0.556 0 0);
21
+ --accent: oklch(0.97 0 0);
22
+ --accent-foreground: oklch(0.205 0 0);
23
+ --destructive: oklch(0.577 0.245 27.325);
24
+ --destructive-foreground: oklch(0.577 0.245 27.325);
25
+ --border: oklch(0.922 0 0);
26
+ --input: oklch(0.922 0 0);
27
+ --ring: oklch(0.708 0 0);
28
+ --chart-1: oklch(0.646 0.222 41.116);
29
+ --chart-2: oklch(0.6 0.118 184.704);
30
+ --chart-3: oklch(0.398 0.07 227.392);
31
+ --chart-4: oklch(0.828 0.189 84.429);
32
+ --chart-5: oklch(0.769 0.188 70.08);
33
+ --radius: 0.625rem;
34
+ --sidebar: oklch(0.985 0 0);
35
+ --sidebar-foreground: oklch(0.145 0 0);
36
+ --sidebar-primary: oklch(0.205 0 0);
37
+ --sidebar-primary-foreground: oklch(0.985 0 0);
38
+ --sidebar-accent: oklch(0.97 0 0);
39
+ --sidebar-accent-foreground: oklch(0.205 0 0);
40
+ --sidebar-border: oklch(0.922 0 0);
41
+ --sidebar-ring: oklch(0.708 0 0);
42
+ }
43
+
44
+ .dark {
45
+ --background: oklch(0.145 0 0);
46
+ --foreground: oklch(0.985 0 0);
47
+ --card: oklch(0.145 0 0);
48
+ --card-foreground: oklch(0.985 0 0);
49
+ --popover: oklch(0.145 0 0);
50
+ --popover-foreground: oklch(0.985 0 0);
51
+ --primary: oklch(0.985 0 0);
52
+ --primary-foreground: oklch(0.205 0 0);
53
+ --secondary: oklch(0.269 0 0);
54
+ --secondary-foreground: oklch(0.985 0 0);
55
+ --muted: oklch(0.269 0 0);
56
+ --muted-foreground: oklch(0.708 0 0);
57
+ --accent: oklch(0.269 0 0);
58
+ --accent-foreground: oklch(0.985 0 0);
59
+ --destructive: oklch(0.396 0.141 25.723);
60
+ --destructive-foreground: oklch(0.637 0.237 25.331);
61
+ --border: oklch(0.269 0 0);
62
+ --input: oklch(0.269 0 0);
63
+ --ring: oklch(0.439 0 0);
64
+ --chart-1: oklch(0.488 0.243 264.376);
65
+ --chart-2: oklch(0.696 0.17 162.48);
66
+ --chart-3: oklch(0.769 0.188 70.08);
67
+ --chart-4: oklch(0.627 0.265 303.9);
68
+ --chart-5: oklch(0.645 0.246 16.439);
69
+ --sidebar: oklch(0.205 0 0);
70
+ --sidebar-foreground: oklch(0.985 0 0);
71
+ --sidebar-primary: oklch(0.488 0.243 264.376);
72
+ --sidebar-primary-foreground: oklch(0.985 0 0);
73
+ --sidebar-accent: oklch(0.269 0 0);
74
+ --sidebar-accent-foreground: oklch(0.985 0 0);
75
+ --sidebar-border: oklch(0.269 0 0);
76
+ --sidebar-ring: oklch(0.439 0 0);
77
+ }
78
+
79
+ @theme inline {
80
+ --color-background: var(--background);
81
+ --color-foreground: var(--foreground);
82
+ --color-card: var(--card);
83
+ --color-card-foreground: var(--card-foreground);
84
+ --color-popover: var(--popover);
85
+ --color-popover-foreground: var(--popover-foreground);
86
+ --color-primary: var(--primary);
87
+ --color-primary-foreground: var(--primary-foreground);
88
+ --color-secondary: var(--secondary);
89
+ --color-secondary-foreground: var(--secondary-foreground);
90
+ --color-muted: var(--muted);
91
+ --color-muted-foreground: var(--muted-foreground);
92
+ --color-accent: var(--accent);
93
+ --color-accent-foreground: var(--accent-foreground);
94
+ --color-destructive: var(--destructive);
95
+ --color-destructive-foreground: var(--destructive-foreground);
96
+ --color-border: var(--border);
97
+ --color-input: var(--input);
98
+ --color-ring: var(--ring);
99
+ --color-chart-1: var(--chart-1);
100
+ --color-chart-2: var(--chart-2);
101
+ --color-chart-3: var(--chart-3);
102
+ --color-chart-4: var(--chart-4);
103
+ --color-chart-5: var(--chart-5);
104
+ --radius-sm: calc(var(--radius) - 4px);
105
+ --radius-md: calc(var(--radius) - 2px);
106
+ --radius-lg: var(--radius);
107
+ --radius-xl: calc(var(--radius) + 4px);
108
+ --color-sidebar: var(--sidebar);
109
+ --color-sidebar-foreground: var(--sidebar-foreground);
110
+ --color-sidebar-primary: var(--sidebar-primary);
111
+ --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
112
+ --color-sidebar-accent: var(--sidebar-accent);
113
+ --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
114
+ --color-sidebar-border: var(--sidebar-border);
115
+ --color-sidebar-ring: var(--sidebar-ring);
116
+ }
117
+
118
+ @layer base {
119
+ * {
120
+ @apply tw:border-border tw:outline-ring/50;
121
+ }
122
+ body {
123
+ @apply tw:bg-background tw:text-foreground;
124
+ }
125
+ }
@@ -0,0 +1,6 @@
1
+ import { clsx } from "clsx";
2
+ import { twMerge } from "tailwind-merge";
3
+
4
+ export function cn(...inputs: any[]) {
5
+ return twMerge(clsx(inputs));
6
+ }