kofi-stack-types 2.0.23 → 2.2.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.
@@ -1,5 +1,5 @@
1
1
 
2
- > kofi-stack-types@2.0.23 build /Users/theodenanyoh/Documents/Krumalabs/create-kofi-stack-v2/packages/types
2
+ > kofi-stack-types@2.1.0 build /Users/theodenanyoh/Documents/Krumalabs/create-kofi-stack-v2/packages/types
3
3
  > tsup src/index.ts --format esm --dts
4
4
 
5
5
  CLI Building entry: src/index.ts
@@ -7,8 +7,8 @@ CLI Using tsconfig: tsconfig.json
7
7
  CLI tsup v8.5.1
8
8
  CLI Target: es2022
9
9
  ESM Build start
10
- ESM dist/index.js 4.16 KB
11
- ESM ⚡️ Build success in 27ms
10
+ ESM dist/index.js 4.66 KB
11
+ ESM ⚡️ Build success in 29ms
12
12
  DTS Build start
13
- DTS ⚡️ Build success in 508ms
14
- DTS dist/index.d.ts 16.41 KB
13
+ DTS ⚡️ Build success in 517ms
14
+ DTS dist/index.d.ts 19.39 KB
@@ -0,0 +1,4 @@
1
+
2
+ > kofi-stack-types@2.0.23 typecheck /Users/theodenanyoh/Documents/Krumalabs/create-kofi-stack-v2/packages/types
3
+ > tsc --noEmit
4
+
package/dist/index.d.ts CHANGED
@@ -5,42 +5,49 @@ declare const MarketingSiteSchema: z.ZodEnum<["none", "nextjs", "payload"]>;
5
5
  declare const AuthProviderSchema: z.ZodEnum<["github", "google", "discord", "twitter", "apple", "microsoft", "linkedin"]>;
6
6
  declare const AnalyticsProviderSchema: z.ZodEnum<["none", "posthog", "vercel"]>;
7
7
  declare const UploadsProviderSchema: z.ZodEnum<["none", "convex-fs", "r2", "uploadthing", "s3", "vercel-blob"]>;
8
- declare const BaseColorSchema: z.ZodEnum<["neutral", "gray", "zinc", "slate", "stone"]>;
9
- declare const ThemeColorSchema: z.ZodEnum<["zinc", "slate", "stone", "gray", "neutral", "red", "rose", "orange", "green", "blue", "yellow", "violet"]>;
10
- declare const MenuAccentSchema: z.ZodEnum<["none", "muted", "primary"]>;
11
- declare const IconLibrarySchema: z.ZodEnum<["lucide", "hugeicons"]>;
12
- declare const FontFamilySchema: z.ZodEnum<["geist", "inter", "system"]>;
13
- declare const BorderRadiusSchema: z.ZodEnum<["0", "0.3", "0.5", "0.75", "1.0"]>;
14
- declare const SpacingScaleSchema: z.ZodEnum<["default", "compact", "comfortable"]>;
8
+ declare const PayloadStorageProviderSchema: z.ZodEnum<["local", "s3", "vercel-blob", "gcs", "r2"]>;
9
+ declare const PaymentProviderSchema: z.ZodEnum<["none", "stripe", "polar"]>;
10
+ declare const ComponentLibrarySchema: z.ZodEnum<["base", "radix"]>;
11
+ declare const ShadcnStyleSchema: z.ZodEnum<["vega", "nova", "maia", "lyra", "mira"]>;
12
+ declare const BaseColorSchema: z.ZodEnum<["neutral", "stone", "zinc", "gray"]>;
13
+ declare const ThemeColorSchema: z.ZodEnum<["neutral", "amber", "blue", "cyan", "emerald", "fuchsia", "green", "indigo", "lime", "orange", "pink", "purple", "red", "rose", "sky", "teal", "violet", "yellow"]>;
14
+ declare const IconLibrarySchema: z.ZodEnum<["lucide", "tabler", "hugeicons", "phosphor"]>;
15
+ declare const FontSchema: z.ZodEnum<["inter", "noto-sans", "nunito-sans", "figtree", "roboto", "raleway", "dm-sans", "public-sans", "outfit", "jetbrains-mono"]>;
16
+ declare const MenuAccentSchema: z.ZodEnum<["subtle", "bold"]>;
17
+ declare const MenuColorSchema: z.ZodEnum<["default", "inverted"]>;
18
+ declare const RadiusSchema: z.ZodEnum<["default", "none", "small", "medium", "large"]>;
15
19
  declare const PackageManagerSchema: z.ZodEnum<["pnpm", "npm", "bun"]>;
16
20
  declare const AddonSchema: z.ZodEnum<["biome", "husky", "turborepo", "playwright", "vitest", "rate-limiting", "monitoring"]>;
17
21
  declare const DesignSystemConfigSchema: z.ZodObject<{
18
- baseColor: z.ZodEnum<["neutral", "gray", "zinc", "slate", "stone"]>;
19
- themeColor: z.ZodEnum<["zinc", "slate", "stone", "gray", "neutral", "red", "rose", "orange", "green", "blue", "yellow", "violet"]>;
20
- menuAccent: z.ZodEnum<["none", "muted", "primary"]>;
21
- iconLibrary: z.ZodEnum<["lucide", "hugeicons"]>;
22
- headingFont: z.ZodEnum<["geist", "inter", "system"]>;
23
- bodyFont: z.ZodEnum<["geist", "inter", "system"]>;
24
- borderRadius: z.ZodEnum<["0", "0.3", "0.5", "0.75", "1.0"]>;
25
- spacingScale: z.ZodEnum<["default", "compact", "comfortable"]>;
22
+ componentLibrary: z.ZodEnum<["base", "radix"]>;
23
+ style: z.ZodEnum<["vega", "nova", "maia", "lyra", "mira"]>;
24
+ baseColor: z.ZodEnum<["neutral", "stone", "zinc", "gray"]>;
25
+ themeColor: z.ZodEnum<["neutral", "amber", "blue", "cyan", "emerald", "fuchsia", "green", "indigo", "lime", "orange", "pink", "purple", "red", "rose", "sky", "teal", "violet", "yellow"]>;
26
+ iconLibrary: z.ZodEnum<["lucide", "tabler", "hugeicons", "phosphor"]>;
27
+ font: z.ZodEnum<["inter", "noto-sans", "nunito-sans", "figtree", "roboto", "raleway", "dm-sans", "public-sans", "outfit", "jetbrains-mono"]>;
28
+ menuAccent: z.ZodEnum<["subtle", "bold"]>;
29
+ menuColor: z.ZodEnum<["default", "inverted"]>;
30
+ radius: z.ZodEnum<["default", "none", "small", "medium", "large"]>;
26
31
  }, "strip", z.ZodTypeAny, {
27
- baseColor: "neutral" | "gray" | "zinc" | "slate" | "stone";
28
- themeColor: "neutral" | "gray" | "zinc" | "slate" | "stone" | "red" | "rose" | "orange" | "green" | "blue" | "yellow" | "violet";
29
- menuAccent: "none" | "muted" | "primary";
30
- iconLibrary: "lucide" | "hugeicons";
31
- headingFont: "geist" | "inter" | "system";
32
- bodyFont: "geist" | "inter" | "system";
33
- borderRadius: "0" | "0.3" | "0.5" | "0.75" | "1.0";
34
- spacingScale: "default" | "compact" | "comfortable";
32
+ componentLibrary: "base" | "radix";
33
+ style: "vega" | "nova" | "maia" | "lyra" | "mira";
34
+ baseColor: "neutral" | "stone" | "zinc" | "gray";
35
+ themeColor: "neutral" | "amber" | "blue" | "cyan" | "emerald" | "fuchsia" | "green" | "indigo" | "lime" | "orange" | "pink" | "purple" | "red" | "rose" | "sky" | "teal" | "violet" | "yellow";
36
+ iconLibrary: "lucide" | "tabler" | "hugeicons" | "phosphor";
37
+ font: "inter" | "noto-sans" | "nunito-sans" | "figtree" | "roboto" | "raleway" | "dm-sans" | "public-sans" | "outfit" | "jetbrains-mono";
38
+ menuAccent: "subtle" | "bold";
39
+ menuColor: "default" | "inverted";
40
+ radius: "none" | "default" | "small" | "medium" | "large";
35
41
  }, {
36
- baseColor: "neutral" | "gray" | "zinc" | "slate" | "stone";
37
- themeColor: "neutral" | "gray" | "zinc" | "slate" | "stone" | "red" | "rose" | "orange" | "green" | "blue" | "yellow" | "violet";
38
- menuAccent: "none" | "muted" | "primary";
39
- iconLibrary: "lucide" | "hugeicons";
40
- headingFont: "geist" | "inter" | "system";
41
- bodyFont: "geist" | "inter" | "system";
42
- borderRadius: "0" | "0.3" | "0.5" | "0.75" | "1.0";
43
- spacingScale: "default" | "compact" | "comfortable";
42
+ componentLibrary: "base" | "radix";
43
+ style: "vega" | "nova" | "maia" | "lyra" | "mira";
44
+ baseColor: "neutral" | "stone" | "zinc" | "gray";
45
+ themeColor: "neutral" | "amber" | "blue" | "cyan" | "emerald" | "fuchsia" | "green" | "indigo" | "lime" | "orange" | "pink" | "purple" | "red" | "rose" | "sky" | "teal" | "violet" | "yellow";
46
+ iconLibrary: "lucide" | "tabler" | "hugeicons" | "phosphor";
47
+ font: "inter" | "noto-sans" | "nunito-sans" | "figtree" | "roboto" | "raleway" | "dm-sans" | "public-sans" | "outfit" | "jetbrains-mono";
48
+ menuAccent: "subtle" | "bold";
49
+ menuColor: "default" | "inverted";
50
+ radius: "none" | "default" | "small" | "medium" | "large";
44
51
  }>;
45
52
  declare const AuthConfigSchema: z.ZodObject<{
46
53
  providers: z.ZodArray<z.ZodEnum<["github", "google", "discord", "twitter", "apple", "microsoft", "linkedin"]>, "many">;
@@ -56,14 +63,17 @@ declare const IntegrationsConfigSchema: z.ZodObject<{
56
63
  analytics: z.ZodEnum<["none", "posthog", "vercel"]>;
57
64
  uploads: z.ZodEnum<["none", "convex-fs", "r2", "uploadthing", "s3", "vercel-blob"]>;
58
65
  payments: z.ZodEnum<["none", "stripe", "polar"]>;
66
+ payloadStorage: z.ZodOptional<z.ZodEnum<["local", "s3", "vercel-blob", "gcs", "r2"]>>;
59
67
  }, "strip", z.ZodTypeAny, {
60
68
  analytics: "none" | "posthog" | "vercel";
61
69
  uploads: "none" | "convex-fs" | "r2" | "uploadthing" | "s3" | "vercel-blob";
62
70
  payments: "none" | "stripe" | "polar";
71
+ payloadStorage?: "r2" | "s3" | "vercel-blob" | "local" | "gcs" | undefined;
63
72
  }, {
64
73
  analytics: "none" | "posthog" | "vercel";
65
74
  uploads: "none" | "convex-fs" | "r2" | "uploadthing" | "s3" | "vercel-blob";
66
75
  payments: "none" | "stripe" | "polar";
76
+ payloadStorage?: "r2" | "s3" | "vercel-blob" | "local" | "gcs" | undefined;
67
77
  }>;
68
78
  declare const ProjectConfigSchema: z.ZodObject<{
69
79
  projectName: z.ZodString;
@@ -71,32 +81,35 @@ declare const ProjectConfigSchema: z.ZodObject<{
71
81
  structure: z.ZodEnum<["standalone", "monorepo"]>;
72
82
  marketingSite: z.ZodEnum<["none", "nextjs", "payload"]>;
73
83
  shadcn: z.ZodObject<{
74
- baseColor: z.ZodEnum<["neutral", "gray", "zinc", "slate", "stone"]>;
75
- themeColor: z.ZodEnum<["zinc", "slate", "stone", "gray", "neutral", "red", "rose", "orange", "green", "blue", "yellow", "violet"]>;
76
- menuAccent: z.ZodEnum<["none", "muted", "primary"]>;
77
- iconLibrary: z.ZodEnum<["lucide", "hugeicons"]>;
78
- headingFont: z.ZodEnum<["geist", "inter", "system"]>;
79
- bodyFont: z.ZodEnum<["geist", "inter", "system"]>;
80
- borderRadius: z.ZodEnum<["0", "0.3", "0.5", "0.75", "1.0"]>;
81
- spacingScale: z.ZodEnum<["default", "compact", "comfortable"]>;
84
+ componentLibrary: z.ZodEnum<["base", "radix"]>;
85
+ style: z.ZodEnum<["vega", "nova", "maia", "lyra", "mira"]>;
86
+ baseColor: z.ZodEnum<["neutral", "stone", "zinc", "gray"]>;
87
+ themeColor: z.ZodEnum<["neutral", "amber", "blue", "cyan", "emerald", "fuchsia", "green", "indigo", "lime", "orange", "pink", "purple", "red", "rose", "sky", "teal", "violet", "yellow"]>;
88
+ iconLibrary: z.ZodEnum<["lucide", "tabler", "hugeicons", "phosphor"]>;
89
+ font: z.ZodEnum<["inter", "noto-sans", "nunito-sans", "figtree", "roboto", "raleway", "dm-sans", "public-sans", "outfit", "jetbrains-mono"]>;
90
+ menuAccent: z.ZodEnum<["subtle", "bold"]>;
91
+ menuColor: z.ZodEnum<["default", "inverted"]>;
92
+ radius: z.ZodEnum<["default", "none", "small", "medium", "large"]>;
82
93
  }, "strip", z.ZodTypeAny, {
83
- baseColor: "neutral" | "gray" | "zinc" | "slate" | "stone";
84
- themeColor: "neutral" | "gray" | "zinc" | "slate" | "stone" | "red" | "rose" | "orange" | "green" | "blue" | "yellow" | "violet";
85
- menuAccent: "none" | "muted" | "primary";
86
- iconLibrary: "lucide" | "hugeicons";
87
- headingFont: "geist" | "inter" | "system";
88
- bodyFont: "geist" | "inter" | "system";
89
- borderRadius: "0" | "0.3" | "0.5" | "0.75" | "1.0";
90
- spacingScale: "default" | "compact" | "comfortable";
94
+ componentLibrary: "base" | "radix";
95
+ style: "vega" | "nova" | "maia" | "lyra" | "mira";
96
+ baseColor: "neutral" | "stone" | "zinc" | "gray";
97
+ themeColor: "neutral" | "amber" | "blue" | "cyan" | "emerald" | "fuchsia" | "green" | "indigo" | "lime" | "orange" | "pink" | "purple" | "red" | "rose" | "sky" | "teal" | "violet" | "yellow";
98
+ iconLibrary: "lucide" | "tabler" | "hugeicons" | "phosphor";
99
+ font: "inter" | "noto-sans" | "nunito-sans" | "figtree" | "roboto" | "raleway" | "dm-sans" | "public-sans" | "outfit" | "jetbrains-mono";
100
+ menuAccent: "subtle" | "bold";
101
+ menuColor: "default" | "inverted";
102
+ radius: "none" | "default" | "small" | "medium" | "large";
91
103
  }, {
92
- baseColor: "neutral" | "gray" | "zinc" | "slate" | "stone";
93
- themeColor: "neutral" | "gray" | "zinc" | "slate" | "stone" | "red" | "rose" | "orange" | "green" | "blue" | "yellow" | "violet";
94
- menuAccent: "none" | "muted" | "primary";
95
- iconLibrary: "lucide" | "hugeicons";
96
- headingFont: "geist" | "inter" | "system";
97
- bodyFont: "geist" | "inter" | "system";
98
- borderRadius: "0" | "0.3" | "0.5" | "0.75" | "1.0";
99
- spacingScale: "default" | "compact" | "comfortable";
104
+ componentLibrary: "base" | "radix";
105
+ style: "vega" | "nova" | "maia" | "lyra" | "mira";
106
+ baseColor: "neutral" | "stone" | "zinc" | "gray";
107
+ themeColor: "neutral" | "amber" | "blue" | "cyan" | "emerald" | "fuchsia" | "green" | "indigo" | "lime" | "orange" | "pink" | "purple" | "red" | "rose" | "sky" | "teal" | "violet" | "yellow";
108
+ iconLibrary: "lucide" | "tabler" | "hugeicons" | "phosphor";
109
+ font: "inter" | "noto-sans" | "nunito-sans" | "figtree" | "roboto" | "raleway" | "dm-sans" | "public-sans" | "outfit" | "jetbrains-mono";
110
+ menuAccent: "subtle" | "bold";
111
+ menuColor: "default" | "inverted";
112
+ radius: "none" | "default" | "small" | "medium" | "large";
100
113
  }>;
101
114
  auth: z.ZodObject<{
102
115
  providers: z.ZodArray<z.ZodEnum<["github", "google", "discord", "twitter", "apple", "microsoft", "linkedin"]>, "many">;
@@ -112,14 +125,17 @@ declare const ProjectConfigSchema: z.ZodObject<{
112
125
  analytics: z.ZodEnum<["none", "posthog", "vercel"]>;
113
126
  uploads: z.ZodEnum<["none", "convex-fs", "r2", "uploadthing", "s3", "vercel-blob"]>;
114
127
  payments: z.ZodEnum<["none", "stripe", "polar"]>;
128
+ payloadStorage: z.ZodOptional<z.ZodEnum<["local", "s3", "vercel-blob", "gcs", "r2"]>>;
115
129
  }, "strip", z.ZodTypeAny, {
116
130
  analytics: "none" | "posthog" | "vercel";
117
131
  uploads: "none" | "convex-fs" | "r2" | "uploadthing" | "s3" | "vercel-blob";
118
132
  payments: "none" | "stripe" | "polar";
133
+ payloadStorage?: "r2" | "s3" | "vercel-blob" | "local" | "gcs" | undefined;
119
134
  }, {
120
135
  analytics: "none" | "posthog" | "vercel";
121
136
  uploads: "none" | "convex-fs" | "r2" | "uploadthing" | "s3" | "vercel-blob";
122
137
  payments: "none" | "stripe" | "polar";
138
+ payloadStorage?: "r2" | "s3" | "vercel-blob" | "local" | "gcs" | undefined;
123
139
  }>;
124
140
  addons: z.ZodArray<z.ZodEnum<["biome", "husky", "turborepo", "playwright", "vitest", "rate-limiting", "monitoring"]>, "many">;
125
141
  packageManager: z.ZodEnum<["pnpm", "npm", "bun"]>;
@@ -129,14 +145,15 @@ declare const ProjectConfigSchema: z.ZodObject<{
129
145
  structure: "standalone" | "monorepo";
130
146
  marketingSite: "none" | "nextjs" | "payload";
131
147
  shadcn: {
132
- baseColor: "neutral" | "gray" | "zinc" | "slate" | "stone";
133
- themeColor: "neutral" | "gray" | "zinc" | "slate" | "stone" | "red" | "rose" | "orange" | "green" | "blue" | "yellow" | "violet";
134
- menuAccent: "none" | "muted" | "primary";
135
- iconLibrary: "lucide" | "hugeicons";
136
- headingFont: "geist" | "inter" | "system";
137
- bodyFont: "geist" | "inter" | "system";
138
- borderRadius: "0" | "0.3" | "0.5" | "0.75" | "1.0";
139
- spacingScale: "default" | "compact" | "comfortable";
148
+ componentLibrary: "base" | "radix";
149
+ style: "vega" | "nova" | "maia" | "lyra" | "mira";
150
+ baseColor: "neutral" | "stone" | "zinc" | "gray";
151
+ themeColor: "neutral" | "amber" | "blue" | "cyan" | "emerald" | "fuchsia" | "green" | "indigo" | "lime" | "orange" | "pink" | "purple" | "red" | "rose" | "sky" | "teal" | "violet" | "yellow";
152
+ iconLibrary: "lucide" | "tabler" | "hugeicons" | "phosphor";
153
+ font: "inter" | "noto-sans" | "nunito-sans" | "figtree" | "roboto" | "raleway" | "dm-sans" | "public-sans" | "outfit" | "jetbrains-mono";
154
+ menuAccent: "subtle" | "bold";
155
+ menuColor: "default" | "inverted";
156
+ radius: "none" | "default" | "small" | "medium" | "large";
140
157
  };
141
158
  auth: {
142
159
  providers: ("github" | "google" | "discord" | "twitter" | "apple" | "microsoft" | "linkedin")[];
@@ -146,6 +163,7 @@ declare const ProjectConfigSchema: z.ZodObject<{
146
163
  analytics: "none" | "posthog" | "vercel";
147
164
  uploads: "none" | "convex-fs" | "r2" | "uploadthing" | "s3" | "vercel-blob";
148
165
  payments: "none" | "stripe" | "polar";
166
+ payloadStorage?: "r2" | "s3" | "vercel-blob" | "local" | "gcs" | undefined;
149
167
  };
150
168
  addons: ("biome" | "husky" | "turborepo" | "playwright" | "vitest" | "rate-limiting" | "monitoring")[];
151
169
  packageManager: "pnpm" | "npm" | "bun";
@@ -155,14 +173,15 @@ declare const ProjectConfigSchema: z.ZodObject<{
155
173
  structure: "standalone" | "monorepo";
156
174
  marketingSite: "none" | "nextjs" | "payload";
157
175
  shadcn: {
158
- baseColor: "neutral" | "gray" | "zinc" | "slate" | "stone";
159
- themeColor: "neutral" | "gray" | "zinc" | "slate" | "stone" | "red" | "rose" | "orange" | "green" | "blue" | "yellow" | "violet";
160
- menuAccent: "none" | "muted" | "primary";
161
- iconLibrary: "lucide" | "hugeicons";
162
- headingFont: "geist" | "inter" | "system";
163
- bodyFont: "geist" | "inter" | "system";
164
- borderRadius: "0" | "0.3" | "0.5" | "0.75" | "1.0";
165
- spacingScale: "default" | "compact" | "comfortable";
176
+ componentLibrary: "base" | "radix";
177
+ style: "vega" | "nova" | "maia" | "lyra" | "mira";
178
+ baseColor: "neutral" | "stone" | "zinc" | "gray";
179
+ themeColor: "neutral" | "amber" | "blue" | "cyan" | "emerald" | "fuchsia" | "green" | "indigo" | "lime" | "orange" | "pink" | "purple" | "red" | "rose" | "sky" | "teal" | "violet" | "yellow";
180
+ iconLibrary: "lucide" | "tabler" | "hugeicons" | "phosphor";
181
+ font: "inter" | "noto-sans" | "nunito-sans" | "figtree" | "roboto" | "raleway" | "dm-sans" | "public-sans" | "outfit" | "jetbrains-mono";
182
+ menuAccent: "subtle" | "bold";
183
+ menuColor: "default" | "inverted";
184
+ radius: "none" | "default" | "small" | "medium" | "large";
166
185
  };
167
186
  auth: {
168
187
  providers: ("github" | "google" | "discord" | "twitter" | "apple" | "microsoft" | "linkedin")[];
@@ -172,6 +191,7 @@ declare const ProjectConfigSchema: z.ZodObject<{
172
191
  analytics: "none" | "posthog" | "vercel";
173
192
  uploads: "none" | "convex-fs" | "r2" | "uploadthing" | "s3" | "vercel-blob";
174
193
  payments: "none" | "stripe" | "polar";
194
+ payloadStorage?: "r2" | "s3" | "vercel-blob" | "local" | "gcs" | undefined;
175
195
  };
176
196
  addons: ("biome" | "husky" | "turborepo" | "playwright" | "vitest" | "rate-limiting" | "monitoring")[];
177
197
  packageManager: "pnpm" | "npm" | "bun";
@@ -180,35 +200,41 @@ declare const CLIInputSchema: z.ZodObject<{
180
200
  projectName: z.ZodOptional<z.ZodString>;
181
201
  structure: z.ZodOptional<z.ZodEnum<["standalone", "monorepo"]>>;
182
202
  marketingSite: z.ZodOptional<z.ZodEnum<["none", "nextjs", "payload"]>>;
183
- baseColor: z.ZodOptional<z.ZodEnum<["neutral", "gray", "zinc", "slate", "stone"]>>;
184
- themeColor: z.ZodOptional<z.ZodEnum<["zinc", "slate", "stone", "gray", "neutral", "red", "rose", "orange", "green", "blue", "yellow", "violet"]>>;
185
- menuAccent: z.ZodOptional<z.ZodEnum<["none", "muted", "primary"]>>;
186
- iconLibrary: z.ZodOptional<z.ZodEnum<["lucide", "hugeicons"]>>;
187
- headingFont: z.ZodOptional<z.ZodEnum<["geist", "inter", "system"]>>;
188
- bodyFont: z.ZodOptional<z.ZodEnum<["geist", "inter", "system"]>>;
189
- borderRadius: z.ZodOptional<z.ZodEnum<["0", "0.3", "0.5", "0.75", "1.0"]>>;
190
- spacingScale: z.ZodOptional<z.ZodEnum<["default", "compact", "comfortable"]>>;
203
+ componentLibrary: z.ZodOptional<z.ZodEnum<["base", "radix"]>>;
204
+ style: z.ZodOptional<z.ZodEnum<["vega", "nova", "maia", "lyra", "mira"]>>;
205
+ baseColor: z.ZodOptional<z.ZodEnum<["neutral", "stone", "zinc", "gray"]>>;
206
+ themeColor: z.ZodOptional<z.ZodEnum<["neutral", "amber", "blue", "cyan", "emerald", "fuchsia", "green", "indigo", "lime", "orange", "pink", "purple", "red", "rose", "sky", "teal", "violet", "yellow"]>>;
207
+ iconLibrary: z.ZodOptional<z.ZodEnum<["lucide", "tabler", "hugeicons", "phosphor"]>>;
208
+ font: z.ZodOptional<z.ZodEnum<["inter", "noto-sans", "nunito-sans", "figtree", "roboto", "raleway", "dm-sans", "public-sans", "outfit", "jetbrains-mono"]>>;
209
+ menuAccent: z.ZodOptional<z.ZodEnum<["subtle", "bold"]>>;
210
+ menuColor: z.ZodOptional<z.ZodEnum<["default", "inverted"]>>;
211
+ radius: z.ZodOptional<z.ZodEnum<["default", "none", "small", "medium", "large"]>>;
191
212
  authProviders: z.ZodOptional<z.ZodArray<z.ZodEnum<["github", "google", "discord", "twitter", "apple", "microsoft", "linkedin"]>, "many">>;
192
213
  organizations: z.ZodOptional<z.ZodBoolean>;
193
214
  analytics: z.ZodOptional<z.ZodEnum<["none", "posthog", "vercel"]>>;
194
215
  uploads: z.ZodOptional<z.ZodEnum<["none", "convex-fs", "r2", "uploadthing", "s3", "vercel-blob"]>>;
216
+ payments: z.ZodOptional<z.ZodEnum<["none", "stripe", "polar"]>>;
217
+ payloadStorage: z.ZodOptional<z.ZodEnum<["local", "s3", "vercel-blob", "gcs", "r2"]>>;
195
218
  addons: z.ZodOptional<z.ZodArray<z.ZodEnum<["biome", "husky", "turborepo", "playwright", "vitest", "rate-limiting", "monitoring"]>, "many">>;
196
219
  git: z.ZodOptional<z.ZodBoolean>;
197
220
  packageManager: z.ZodOptional<z.ZodEnum<["pnpm", "npm", "bun"]>>;
198
221
  install: z.ZodOptional<z.ZodBoolean>;
199
222
  yes: z.ZodOptional<z.ZodBoolean>;
200
223
  }, "strip", z.ZodTypeAny, {
201
- baseColor?: "neutral" | "gray" | "zinc" | "slate" | "stone" | undefined;
202
- themeColor?: "neutral" | "gray" | "zinc" | "slate" | "stone" | "red" | "rose" | "orange" | "green" | "blue" | "yellow" | "violet" | undefined;
203
- menuAccent?: "none" | "muted" | "primary" | undefined;
204
- iconLibrary?: "lucide" | "hugeicons" | undefined;
205
- headingFont?: "geist" | "inter" | "system" | undefined;
206
- bodyFont?: "geist" | "inter" | "system" | undefined;
207
- borderRadius?: "0" | "0.3" | "0.5" | "0.75" | "1.0" | undefined;
208
- spacingScale?: "default" | "compact" | "comfortable" | undefined;
224
+ componentLibrary?: "base" | "radix" | undefined;
225
+ style?: "vega" | "nova" | "maia" | "lyra" | "mira" | undefined;
226
+ baseColor?: "neutral" | "stone" | "zinc" | "gray" | undefined;
227
+ themeColor?: "neutral" | "amber" | "blue" | "cyan" | "emerald" | "fuchsia" | "green" | "indigo" | "lime" | "orange" | "pink" | "purple" | "red" | "rose" | "sky" | "teal" | "violet" | "yellow" | undefined;
228
+ iconLibrary?: "lucide" | "tabler" | "hugeicons" | "phosphor" | undefined;
229
+ font?: "inter" | "noto-sans" | "nunito-sans" | "figtree" | "roboto" | "raleway" | "dm-sans" | "public-sans" | "outfit" | "jetbrains-mono" | undefined;
230
+ menuAccent?: "subtle" | "bold" | undefined;
231
+ menuColor?: "default" | "inverted" | undefined;
232
+ radius?: "none" | "default" | "small" | "medium" | "large" | undefined;
209
233
  organizations?: boolean | undefined;
210
234
  analytics?: "none" | "posthog" | "vercel" | undefined;
211
235
  uploads?: "none" | "convex-fs" | "r2" | "uploadthing" | "s3" | "vercel-blob" | undefined;
236
+ payments?: "none" | "stripe" | "polar" | undefined;
237
+ payloadStorage?: "r2" | "s3" | "vercel-blob" | "local" | "gcs" | undefined;
212
238
  projectName?: string | undefined;
213
239
  structure?: "standalone" | "monorepo" | undefined;
214
240
  marketingSite?: "none" | "nextjs" | "payload" | undefined;
@@ -219,17 +245,20 @@ declare const CLIInputSchema: z.ZodObject<{
219
245
  install?: boolean | undefined;
220
246
  yes?: boolean | undefined;
221
247
  }, {
222
- baseColor?: "neutral" | "gray" | "zinc" | "slate" | "stone" | undefined;
223
- themeColor?: "neutral" | "gray" | "zinc" | "slate" | "stone" | "red" | "rose" | "orange" | "green" | "blue" | "yellow" | "violet" | undefined;
224
- menuAccent?: "none" | "muted" | "primary" | undefined;
225
- iconLibrary?: "lucide" | "hugeicons" | undefined;
226
- headingFont?: "geist" | "inter" | "system" | undefined;
227
- bodyFont?: "geist" | "inter" | "system" | undefined;
228
- borderRadius?: "0" | "0.3" | "0.5" | "0.75" | "1.0" | undefined;
229
- spacingScale?: "default" | "compact" | "comfortable" | undefined;
248
+ componentLibrary?: "base" | "radix" | undefined;
249
+ style?: "vega" | "nova" | "maia" | "lyra" | "mira" | undefined;
250
+ baseColor?: "neutral" | "stone" | "zinc" | "gray" | undefined;
251
+ themeColor?: "neutral" | "amber" | "blue" | "cyan" | "emerald" | "fuchsia" | "green" | "indigo" | "lime" | "orange" | "pink" | "purple" | "red" | "rose" | "sky" | "teal" | "violet" | "yellow" | undefined;
252
+ iconLibrary?: "lucide" | "tabler" | "hugeicons" | "phosphor" | undefined;
253
+ font?: "inter" | "noto-sans" | "nunito-sans" | "figtree" | "roboto" | "raleway" | "dm-sans" | "public-sans" | "outfit" | "jetbrains-mono" | undefined;
254
+ menuAccent?: "subtle" | "bold" | undefined;
255
+ menuColor?: "default" | "inverted" | undefined;
256
+ radius?: "none" | "default" | "small" | "medium" | "large" | undefined;
230
257
  organizations?: boolean | undefined;
231
258
  analytics?: "none" | "posthog" | "vercel" | undefined;
232
259
  uploads?: "none" | "convex-fs" | "r2" | "uploadthing" | "s3" | "vercel-blob" | undefined;
260
+ payments?: "none" | "stripe" | "polar" | undefined;
261
+ payloadStorage?: "r2" | "s3" | "vercel-blob" | "local" | "gcs" | undefined;
233
262
  projectName?: string | undefined;
234
263
  structure?: "standalone" | "monorepo" | undefined;
235
264
  marketingSite?: "none" | "nextjs" | "payload" | undefined;
@@ -247,13 +276,17 @@ type MarketingSite = z.infer<typeof MarketingSiteSchema>;
247
276
  type AuthProvider = z.infer<typeof AuthProviderSchema>;
248
277
  type AnalyticsProvider = z.infer<typeof AnalyticsProviderSchema>;
249
278
  type UploadsProvider = z.infer<typeof UploadsProviderSchema>;
279
+ type PayloadStorageProvider = z.infer<typeof PayloadStorageProviderSchema>;
280
+ type PaymentProvider = z.infer<typeof PaymentProviderSchema>;
281
+ type ComponentLibrary = z.infer<typeof ComponentLibrarySchema>;
282
+ type ShadcnStyle = z.infer<typeof ShadcnStyleSchema>;
250
283
  type BaseColor = z.infer<typeof BaseColorSchema>;
251
284
  type ThemeColor = z.infer<typeof ThemeColorSchema>;
252
- type MenuAccent = z.infer<typeof MenuAccentSchema>;
253
285
  type IconLibrary = z.infer<typeof IconLibrarySchema>;
254
- type FontFamily = z.infer<typeof FontFamilySchema>;
255
- type BorderRadius = z.infer<typeof BorderRadiusSchema>;
256
- type SpacingScale = z.infer<typeof SpacingScaleSchema>;
286
+ type Font = z.infer<typeof FontSchema>;
287
+ type MenuAccent = z.infer<typeof MenuAccentSchema>;
288
+ type MenuColor = z.infer<typeof MenuColorSchema>;
289
+ type Radius = z.infer<typeof RadiusSchema>;
257
290
  type PackageManager = z.infer<typeof PackageManagerSchema>;
258
291
  type Addon = z.infer<typeof AddonSchema>;
259
292
  type DesignSystemConfig = z.infer<typeof DesignSystemConfigSchema>;
@@ -291,4 +324,4 @@ interface GeneratorResult {
291
324
  errors?: string[];
292
325
  }
293
326
 
294
- export { type Addon, AddonSchema, type AnalyticsProvider, AnalyticsProviderSchema, type AuthConfig, AuthConfigSchema, type AuthProvider, AuthProviderSchema, type BaseColor, BaseColorSchema, type BorderRadius, BorderRadiusSchema, type CLIInput, CLIInputSchema, DEFAULT_CONFIG, type DesignSystemConfig, DesignSystemConfigSchema, type FontFamily, FontFamilySchema, type GeneratorOptions, type GeneratorResult, type IconLibrary, IconLibrarySchema, type IntegrationsConfig, IntegrationsConfigSchema, type MarketingSite, MarketingSiteSchema, type MenuAccent, MenuAccentSchema, type PackageManager, PackageManagerSchema, type ProjectConfig, ProjectConfigSchema, type ProjectStructure, ProjectStructureSchema, type SpacingScale, SpacingScaleSchema, type ThemeColor, ThemeColorSchema, type UploadsProvider, UploadsProviderSchema, type VirtualDirectory, type VirtualFile, type VirtualFileTree, type VirtualNode };
327
+ export { type Addon, AddonSchema, type AnalyticsProvider, AnalyticsProviderSchema, type AuthConfig, AuthConfigSchema, type AuthProvider, AuthProviderSchema, type BaseColor, BaseColorSchema, type CLIInput, CLIInputSchema, type ComponentLibrary, ComponentLibrarySchema, DEFAULT_CONFIG, type DesignSystemConfig, DesignSystemConfigSchema, type Font, FontSchema, type GeneratorOptions, type GeneratorResult, type IconLibrary, IconLibrarySchema, type IntegrationsConfig, IntegrationsConfigSchema, type MarketingSite, MarketingSiteSchema, type MenuAccent, MenuAccentSchema, type MenuColor, MenuColorSchema, type PackageManager, PackageManagerSchema, type PayloadStorageProvider, PayloadStorageProviderSchema, type PaymentProvider, PaymentProviderSchema, type ProjectConfig, ProjectConfigSchema, type ProjectStructure, ProjectStructureSchema, type Radius, RadiusSchema, type ShadcnStyle, ShadcnStyleSchema, type ThemeColor, ThemeColorSchema, type UploadsProvider, UploadsProviderSchema, type VirtualDirectory, type VirtualFile, type VirtualFileTree, type VirtualNode };
package/dist/index.js CHANGED
@@ -20,27 +20,53 @@ var UploadsProviderSchema = z.enum([
20
20
  "s3",
21
21
  "vercel-blob"
22
22
  ]);
23
+ var PayloadStorageProviderSchema = z.enum([
24
+ "local",
25
+ "s3",
26
+ "vercel-blob",
27
+ "gcs",
28
+ "r2"
29
+ ]);
23
30
  var PaymentProviderSchema = z.enum(["none", "stripe", "polar"]);
24
- var BaseColorSchema = z.enum(["neutral", "gray", "zinc", "slate", "stone"]);
31
+ var ComponentLibrarySchema = z.enum(["base", "radix"]);
32
+ var ShadcnStyleSchema = z.enum(["vega", "nova", "maia", "lyra", "mira"]);
33
+ var BaseColorSchema = z.enum(["neutral", "stone", "zinc", "gray"]);
25
34
  var ThemeColorSchema = z.enum([
26
- "zinc",
27
- "slate",
28
- "stone",
29
- "gray",
30
35
  "neutral",
36
+ "amber",
37
+ "blue",
38
+ "cyan",
39
+ "emerald",
40
+ "fuchsia",
41
+ "green",
42
+ "indigo",
43
+ "lime",
44
+ "orange",
45
+ "pink",
46
+ "purple",
31
47
  "red",
32
48
  "rose",
33
- "orange",
34
- "green",
35
- "blue",
36
- "yellow",
37
- "violet"
49
+ "sky",
50
+ "teal",
51
+ "violet",
52
+ "yellow"
38
53
  ]);
39
- var MenuAccentSchema = z.enum(["none", "muted", "primary"]);
40
- var IconLibrarySchema = z.enum(["lucide", "hugeicons"]);
41
- var FontFamilySchema = z.enum(["geist", "inter", "system"]);
42
- var BorderRadiusSchema = z.enum(["0", "0.3", "0.5", "0.75", "1.0"]);
43
- var SpacingScaleSchema = z.enum(["default", "compact", "comfortable"]);
54
+ var IconLibrarySchema = z.enum(["lucide", "tabler", "hugeicons", "phosphor"]);
55
+ var FontSchema = z.enum([
56
+ "inter",
57
+ "noto-sans",
58
+ "nunito-sans",
59
+ "figtree",
60
+ "roboto",
61
+ "raleway",
62
+ "dm-sans",
63
+ "public-sans",
64
+ "outfit",
65
+ "jetbrains-mono"
66
+ ]);
67
+ var MenuAccentSchema = z.enum(["subtle", "bold"]);
68
+ var MenuColorSchema = z.enum(["default", "inverted"]);
69
+ var RadiusSchema = z.enum(["default", "none", "small", "medium", "large"]);
44
70
  var PackageManagerSchema = z.enum(["pnpm", "npm", "bun"]);
45
71
  var AddonSchema = z.enum([
46
72
  "biome",
@@ -52,14 +78,15 @@ var AddonSchema = z.enum([
52
78
  "monitoring"
53
79
  ]);
54
80
  var DesignSystemConfigSchema = z.object({
81
+ componentLibrary: ComponentLibrarySchema,
82
+ style: ShadcnStyleSchema,
55
83
  baseColor: BaseColorSchema,
56
84
  themeColor: ThemeColorSchema,
57
- menuAccent: MenuAccentSchema,
58
85
  iconLibrary: IconLibrarySchema,
59
- headingFont: FontFamilySchema,
60
- bodyFont: FontFamilySchema,
61
- borderRadius: BorderRadiusSchema,
62
- spacingScale: SpacingScaleSchema
86
+ font: FontSchema,
87
+ menuAccent: MenuAccentSchema,
88
+ menuColor: MenuColorSchema,
89
+ radius: RadiusSchema
63
90
  });
64
91
  var AuthConfigSchema = z.object({
65
92
  providers: z.array(AuthProviderSchema),
@@ -68,7 +95,8 @@ var AuthConfigSchema = z.object({
68
95
  var IntegrationsConfigSchema = z.object({
69
96
  analytics: AnalyticsProviderSchema,
70
97
  uploads: UploadsProviderSchema,
71
- payments: PaymentProviderSchema
98
+ payments: PaymentProviderSchema,
99
+ payloadStorage: PayloadStorageProviderSchema.optional()
72
100
  });
73
101
  var ProjectConfigSchema = z.object({
74
102
  // Basic info
@@ -92,18 +120,24 @@ var CLIInputSchema = z.object({
92
120
  projectName: z.string().optional(),
93
121
  structure: ProjectStructureSchema.optional(),
94
122
  marketingSite: MarketingSiteSchema.optional(),
123
+ // shadcn v4 options
124
+ componentLibrary: ComponentLibrarySchema.optional(),
125
+ style: ShadcnStyleSchema.optional(),
95
126
  baseColor: BaseColorSchema.optional(),
96
127
  themeColor: ThemeColorSchema.optional(),
97
- menuAccent: MenuAccentSchema.optional(),
98
128
  iconLibrary: IconLibrarySchema.optional(),
99
- headingFont: FontFamilySchema.optional(),
100
- bodyFont: FontFamilySchema.optional(),
101
- borderRadius: BorderRadiusSchema.optional(),
102
- spacingScale: SpacingScaleSchema.optional(),
129
+ font: FontSchema.optional(),
130
+ menuAccent: MenuAccentSchema.optional(),
131
+ menuColor: MenuColorSchema.optional(),
132
+ radius: RadiusSchema.optional(),
133
+ // Auth
103
134
  authProviders: z.array(AuthProviderSchema).optional(),
104
135
  organizations: z.boolean().optional(),
136
+ // Integrations
105
137
  analytics: AnalyticsProviderSchema.optional(),
106
138
  uploads: UploadsProviderSchema.optional(),
139
+ payments: PaymentProviderSchema.optional(),
140
+ payloadStorage: PayloadStorageProviderSchema.optional(),
107
141
  addons: z.array(AddonSchema).optional(),
108
142
  git: z.boolean().optional(),
109
143
  packageManager: PackageManagerSchema.optional(),
@@ -117,14 +151,15 @@ var DEFAULT_CONFIG = {
117
151
  structure: "standalone",
118
152
  marketingSite: "none",
119
153
  shadcn: {
154
+ componentLibrary: "base",
155
+ style: "nova",
120
156
  baseColor: "neutral",
121
- themeColor: "zinc",
122
- menuAccent: "muted",
123
- iconLibrary: "lucide",
124
- headingFont: "geist",
125
- bodyFont: "geist",
126
- borderRadius: "0.5",
127
- spacingScale: "default"
157
+ themeColor: "neutral",
158
+ iconLibrary: "hugeicons",
159
+ font: "inter",
160
+ menuAccent: "subtle",
161
+ menuColor: "default",
162
+ radius: "default"
128
163
  },
129
164
  auth: {
130
165
  providers: ["github", "google"],
@@ -144,19 +179,23 @@ export {
144
179
  AuthConfigSchema,
145
180
  AuthProviderSchema,
146
181
  BaseColorSchema,
147
- BorderRadiusSchema,
148
182
  CLIInputSchema,
183
+ ComponentLibrarySchema,
149
184
  DEFAULT_CONFIG,
150
185
  DesignSystemConfigSchema,
151
- FontFamilySchema,
186
+ FontSchema,
152
187
  IconLibrarySchema,
153
188
  IntegrationsConfigSchema,
154
189
  MarketingSiteSchema,
155
190
  MenuAccentSchema,
191
+ MenuColorSchema,
156
192
  PackageManagerSchema,
193
+ PayloadStorageProviderSchema,
194
+ PaymentProviderSchema,
157
195
  ProjectConfigSchema,
158
196
  ProjectStructureSchema,
159
- SpacingScaleSchema,
197
+ RadiusSchema,
198
+ ShadcnStyleSchema,
160
199
  ThemeColorSchema,
161
200
  UploadsProviderSchema
162
201
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kofi-stack-types",
3
- "version": "2.0.23",
3
+ "version": "2.2.0",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -10,6 +10,11 @@
10
10
  "types": "./dist/index.d.ts"
11
11
  }
12
12
  },
13
+ "scripts": {
14
+ "build": "tsup src/index.ts --format esm --dts",
15
+ "dev": "tsup src/index.ts --format esm --dts --watch",
16
+ "typecheck": "tsc --noEmit"
17
+ },
13
18
  "dependencies": {
14
19
  "zod": "^3.23.0"
15
20
  },
@@ -17,10 +22,5 @@
17
22
  "@types/node": "^20.0.0",
18
23
  "tsup": "^8.0.0",
19
24
  "typescript": "^5.0.0"
20
- },
21
- "scripts": {
22
- "build": "tsup src/index.ts --format esm --dts",
23
- "dev": "tsup src/index.ts --format esm --dts --watch",
24
- "typecheck": "tsc --noEmit"
25
25
  }
26
- }
26
+ }
package/src/index.ts CHANGED
@@ -5,13 +5,19 @@ export {
5
5
  AuthProviderSchema,
6
6
  AnalyticsProviderSchema,
7
7
  UploadsProviderSchema,
8
+ PayloadStorageProviderSchema,
9
+ PaymentProviderSchema,
10
+ // shadcn v4 schemas
11
+ ComponentLibrarySchema,
12
+ ShadcnStyleSchema,
8
13
  BaseColorSchema,
9
14
  ThemeColorSchema,
10
- MenuAccentSchema,
11
15
  IconLibrarySchema,
12
- FontFamilySchema,
13
- BorderRadiusSchema,
14
- SpacingScaleSchema,
16
+ FontSchema,
17
+ MenuAccentSchema,
18
+ MenuColorSchema,
19
+ RadiusSchema,
20
+ // Config schemas
15
21
  PackageManagerSchema,
16
22
  AddonSchema,
17
23
  DesignSystemConfigSchema,
@@ -29,13 +35,19 @@ export type {
29
35
  AuthProvider,
30
36
  AnalyticsProvider,
31
37
  UploadsProvider,
38
+ PayloadStorageProvider,
39
+ PaymentProvider,
40
+ // shadcn v4 types
41
+ ComponentLibrary,
42
+ ShadcnStyle,
32
43
  BaseColor,
33
44
  ThemeColor,
34
- MenuAccent,
35
45
  IconLibrary,
36
- FontFamily,
37
- BorderRadius,
38
- SpacingScale,
46
+ Font,
47
+ MenuAccent,
48
+ MenuColor,
49
+ Radius,
50
+ // Config types
39
51
  PackageManager,
40
52
  Addon,
41
53
  DesignSystemConfig,
package/src/schemas.ts CHANGED
@@ -20,7 +20,7 @@ export const AuthProviderSchema = z.enum([
20
20
  // Analytics providers
21
21
  export const AnalyticsProviderSchema = z.enum(['none', 'posthog', 'vercel'])
22
22
 
23
- // Upload/Storage providers
23
+ // Upload/Storage providers (for web app - Convex-based)
24
24
  export const UploadsProviderSchema = z.enum([
25
25
  'none',
26
26
  'convex-fs',
@@ -30,43 +30,78 @@ export const UploadsProviderSchema = z.enum([
30
30
  'vercel-blob',
31
31
  ])
32
32
 
33
+ // Payload CMS Storage providers
34
+ export const PayloadStorageProviderSchema = z.enum([
35
+ 'local',
36
+ 's3',
37
+ 'vercel-blob',
38
+ 'gcs',
39
+ 'r2',
40
+ ])
41
+
33
42
  // Payment providers
34
43
  export const PaymentProviderSchema = z.enum(['none', 'stripe', 'polar'])
35
44
 
45
+ // ============================================
46
+ // shadcn UI v4 Design System Options
47
+ // ============================================
48
+
49
+ // Component library (base or radix primitives)
50
+ export const ComponentLibrarySchema = z.enum(['base', 'radix'])
51
+
52
+ // Style presets (shadcn v4)
53
+ export const ShadcnStyleSchema = z.enum(['vega', 'nova', 'maia', 'lyra', 'mira'])
36
54
 
37
- // Base color
38
- export const BaseColorSchema = z.enum(['neutral', 'gray', 'zinc', 'slate', 'stone'])
55
+ // Base color (background/surface colors)
56
+ export const BaseColorSchema = z.enum(['neutral', 'stone', 'zinc', 'gray'])
39
57
 
40
- // Theme color
58
+ // Theme color (accent/primary color)
41
59
  export const ThemeColorSchema = z.enum([
42
- 'zinc',
43
- 'slate',
44
- 'stone',
45
- 'gray',
46
60
  'neutral',
61
+ 'amber',
62
+ 'blue',
63
+ 'cyan',
64
+ 'emerald',
65
+ 'fuchsia',
66
+ 'green',
67
+ 'indigo',
68
+ 'lime',
69
+ 'orange',
70
+ 'pink',
71
+ 'purple',
47
72
  'red',
48
73
  'rose',
49
- 'orange',
50
- 'green',
51
- 'blue',
52
- 'yellow',
74
+ 'sky',
75
+ 'teal',
53
76
  'violet',
77
+ 'yellow',
54
78
  ])
55
79
 
56
- // Menu accent
57
- export const MenuAccentSchema = z.enum(['none', 'muted', 'primary'])
58
-
59
80
  // Icon library
60
- export const IconLibrarySchema = z.enum(['lucide', 'hugeicons'])
81
+ export const IconLibrarySchema = z.enum(['lucide', 'tabler', 'hugeicons', 'phosphor'])
82
+
83
+ // Font
84
+ export const FontSchema = z.enum([
85
+ 'inter',
86
+ 'noto-sans',
87
+ 'nunito-sans',
88
+ 'figtree',
89
+ 'roboto',
90
+ 'raleway',
91
+ 'dm-sans',
92
+ 'public-sans',
93
+ 'outfit',
94
+ 'jetbrains-mono',
95
+ ])
61
96
 
62
- // Font family
63
- export const FontFamilySchema = z.enum(['geist', 'inter', 'system'])
97
+ // Menu accent
98
+ export const MenuAccentSchema = z.enum(['subtle', 'bold'])
64
99
 
65
- // Border radius
66
- export const BorderRadiusSchema = z.enum(['0', '0.3', '0.5', '0.75', '1.0'])
100
+ // Menu color
101
+ export const MenuColorSchema = z.enum(['default', 'inverted'])
67
102
 
68
- // Spacing scale
69
- export const SpacingScaleSchema = z.enum(['default', 'compact', 'comfortable'])
103
+ // Border radius
104
+ export const RadiusSchema = z.enum(['default', 'none', 'small', 'medium', 'large'])
70
105
 
71
106
  // Package manager
72
107
  export const PackageManagerSchema = z.enum(['pnpm', 'npm', 'bun'])
@@ -82,16 +117,17 @@ export const AddonSchema = z.enum([
82
117
  'monitoring',
83
118
  ])
84
119
 
85
- // Design system configuration
120
+ // Design system configuration (shadcn v4)
86
121
  export const DesignSystemConfigSchema = z.object({
122
+ componentLibrary: ComponentLibrarySchema,
123
+ style: ShadcnStyleSchema,
87
124
  baseColor: BaseColorSchema,
88
125
  themeColor: ThemeColorSchema,
89
- menuAccent: MenuAccentSchema,
90
126
  iconLibrary: IconLibrarySchema,
91
- headingFont: FontFamilySchema,
92
- bodyFont: FontFamilySchema,
93
- borderRadius: BorderRadiusSchema,
94
- spacingScale: SpacingScaleSchema,
127
+ font: FontSchema,
128
+ menuAccent: MenuAccentSchema,
129
+ menuColor: MenuColorSchema,
130
+ radius: RadiusSchema,
95
131
  })
96
132
 
97
133
  // Auth configuration
@@ -105,6 +141,7 @@ export const IntegrationsConfigSchema = z.object({
105
141
  analytics: AnalyticsProviderSchema,
106
142
  uploads: UploadsProviderSchema,
107
143
  payments: PaymentProviderSchema,
144
+ payloadStorage: PayloadStorageProviderSchema.optional(),
108
145
  })
109
146
 
110
147
  // Complete project configuration
@@ -138,18 +175,24 @@ export const CLIInputSchema = z.object({
138
175
  projectName: z.string().optional(),
139
176
  structure: ProjectStructureSchema.optional(),
140
177
  marketingSite: MarketingSiteSchema.optional(),
178
+ // shadcn v4 options
179
+ componentLibrary: ComponentLibrarySchema.optional(),
180
+ style: ShadcnStyleSchema.optional(),
141
181
  baseColor: BaseColorSchema.optional(),
142
182
  themeColor: ThemeColorSchema.optional(),
143
- menuAccent: MenuAccentSchema.optional(),
144
183
  iconLibrary: IconLibrarySchema.optional(),
145
- headingFont: FontFamilySchema.optional(),
146
- bodyFont: FontFamilySchema.optional(),
147
- borderRadius: BorderRadiusSchema.optional(),
148
- spacingScale: SpacingScaleSchema.optional(),
184
+ font: FontSchema.optional(),
185
+ menuAccent: MenuAccentSchema.optional(),
186
+ menuColor: MenuColorSchema.optional(),
187
+ radius: RadiusSchema.optional(),
188
+ // Auth
149
189
  authProviders: z.array(AuthProviderSchema).optional(),
150
190
  organizations: z.boolean().optional(),
191
+ // Integrations
151
192
  analytics: AnalyticsProviderSchema.optional(),
152
193
  uploads: UploadsProviderSchema.optional(),
194
+ payments: PaymentProviderSchema.optional(),
195
+ payloadStorage: PayloadStorageProviderSchema.optional(),
153
196
  addons: z.array(AddonSchema).optional(),
154
197
  git: z.boolean().optional(),
155
198
  packageManager: PackageManagerSchema.optional(),
@@ -164,14 +207,15 @@ export const DEFAULT_CONFIG: z.infer<typeof ProjectConfigSchema> = {
164
207
  structure: 'standalone',
165
208
  marketingSite: 'none',
166
209
  shadcn: {
210
+ componentLibrary: 'base',
211
+ style: 'nova',
167
212
  baseColor: 'neutral',
168
- themeColor: 'zinc',
169
- menuAccent: 'muted',
170
- iconLibrary: 'lucide',
171
- headingFont: 'geist',
172
- bodyFont: 'geist',
173
- borderRadius: '0.5',
174
- spacingScale: 'default',
213
+ themeColor: 'neutral',
214
+ iconLibrary: 'hugeicons',
215
+ font: 'inter',
216
+ menuAccent: 'subtle',
217
+ menuColor: 'default',
218
+ radius: 'default',
175
219
  },
176
220
  auth: {
177
221
  providers: ['github', 'google'],
package/src/types.ts CHANGED
@@ -5,14 +5,18 @@ import type {
5
5
  AuthProviderSchema,
6
6
  AnalyticsProviderSchema,
7
7
  UploadsProviderSchema,
8
+ PayloadStorageProviderSchema,
8
9
  PaymentProviderSchema,
10
+ // shadcn v4 schemas
11
+ ComponentLibrarySchema,
12
+ ShadcnStyleSchema,
9
13
  BaseColorSchema,
10
14
  ThemeColorSchema,
11
- MenuAccentSchema,
12
15
  IconLibrarySchema,
13
- FontFamilySchema,
14
- BorderRadiusSchema,
15
- SpacingScaleSchema,
16
+ FontSchema,
17
+ MenuAccentSchema,
18
+ MenuColorSchema,
19
+ RadiusSchema,
16
20
  PackageManagerSchema,
17
21
  AddonSchema,
18
22
  DesignSystemConfigSchema,
@@ -28,14 +32,20 @@ export type MarketingSite = z.infer<typeof MarketingSiteSchema>
28
32
  export type AuthProvider = z.infer<typeof AuthProviderSchema>
29
33
  export type AnalyticsProvider = z.infer<typeof AnalyticsProviderSchema>
30
34
  export type UploadsProvider = z.infer<typeof UploadsProviderSchema>
35
+ export type PayloadStorageProvider = z.infer<typeof PayloadStorageProviderSchema>
31
36
  export type PaymentProvider = z.infer<typeof PaymentProviderSchema>
37
+
38
+ // shadcn v4 types
39
+ export type ComponentLibrary = z.infer<typeof ComponentLibrarySchema>
40
+ export type ShadcnStyle = z.infer<typeof ShadcnStyleSchema>
32
41
  export type BaseColor = z.infer<typeof BaseColorSchema>
33
42
  export type ThemeColor = z.infer<typeof ThemeColorSchema>
34
- export type MenuAccent = z.infer<typeof MenuAccentSchema>
35
43
  export type IconLibrary = z.infer<typeof IconLibrarySchema>
36
- export type FontFamily = z.infer<typeof FontFamilySchema>
37
- export type BorderRadius = z.infer<typeof BorderRadiusSchema>
38
- export type SpacingScale = z.infer<typeof SpacingScaleSchema>
44
+ export type Font = z.infer<typeof FontSchema>
45
+ export type MenuAccent = z.infer<typeof MenuAccentSchema>
46
+ export type MenuColor = z.infer<typeof MenuColorSchema>
47
+ export type Radius = z.infer<typeof RadiusSchema>
48
+
39
49
  export type PackageManager = z.infer<typeof PackageManagerSchema>
40
50
  export type Addon = z.infer<typeof AddonSchema>
41
51
  export type DesignSystemConfig = z.infer<typeof DesignSystemConfigSchema>