Skip to content

Commit fc77367

Browse files
feat(cli): add uniwind with heroui-native (#686)
1 parent 7cf7b57 commit fc77367

File tree

106 files changed

+4140
-1584
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

106 files changed

+4140
-1584
lines changed
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
---
22
alwaysApply: true
33
---
4-
54
- Always use functional programming; avoid object-oriented programming.
65
- Define functions using the standard function declaration syntax, not arrow functions.
76
- Do not include emojis.
87
- Use TypeScript type aliases instead of interface declarations.
98
- In Handlebars templates, avoid generic if/else blocks. Write explicit conditions, such as: use if (eq orm "prisma") for Prisma, and else if (eq orm "drizzle") for Drizzle.
10-
- Do not use explicit return types
9+
- Do not use explicit return types
10+
- escape the '{{' in hbs templates like '\{{'

apps/cli/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ Options:
5757
--orm <type> ORM type (none, drizzle, prisma, mongoose)
5858
--auth Include authentication
5959
--no-auth Exclude authentication
60-
--frontend <types...> Frontend types (tanstack-router, react-router, tanstack-start, next, nuxt, svelte, solid, native-nativewind, native-unistyles, none)
60+
--frontend <types...> Frontend types (tanstack-router, react-router, tanstack-start, next, nuxt, svelte, solid, native-bare, native-uniwind, native-unistyles, none)
6161
--addons <types...> Additional addons (pwa, tauri, starlight, biome, husky, turborepo, fumadocs, ultracite, oxlint, none)
6262
--examples <types...> Examples to include (todo, ai, none)
6363
--git Initialize git repository
@@ -119,7 +119,7 @@ npx create-better-t-stack my-app --backend elysia --runtime node
119119
Create a project with multiple frontend options (one web + one native):
120120

121121
```bash
122-
npx create-better-t-stack my-app --frontend tanstack-router native-nativewind
122+
npx create-better-t-stack my-app --frontend tanstack-router native-bare
123123
```
124124

125125
Create a project with examples:

apps/cli/src/constants.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ export const dependencyVersionMap = {
155155
"@sveltejs/adapter-cloudflare": "^7.2.1",
156156
"@cloudflare/workers-types": "^4.20250822.0",
157157

158-
alchemy: "^0.75.1",
158+
alchemy: "^0.77.0",
159159

160160
dotenv: "^17.2.2",
161161
tsdown: "^0.15.5",

apps/cli/src/helpers/addons/examples-setup.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,8 @@ export async function setupExamples(config: ProjectConfig) {
5656
frontend.includes("tanstack-start");
5757
const hasNext = frontend.includes("next");
5858
const hasReactNative =
59-
frontend.includes("native-nativewind") ||
59+
frontend.includes("native-bare") ||
60+
frontend.includes("native-uniwind") ||
6061
frontend.includes("native-unistyles");
6162

6263
if (webClientDirExists) {

apps/cli/src/helpers/addons/ultracite-setup.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,8 @@ function getFrameworksFromFrontend(frontend: string[]): string[] {
118118
"tanstack-start": "react",
119119
next: "next",
120120
nuxt: "vue",
121-
"native-nativewind": "react",
121+
"native-bare": "react",
122+
"native-uniwind": "react",
122123
"native-unistyles": "react",
123124
svelte: "svelte",
124125
solid: "solid",

apps/cli/src/helpers/core/api-setup.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ function getFrontendType(frontend: Frontend[]): {
3333
"tanstack-start",
3434
"next",
3535
];
36-
const nativeFrontends = ["native-nativewind", "native-unistyles"];
36+
const nativeFrontends = ["native-bare", "native-uniwind", "native-unistyles"];
3737

3838
return {
3939
hasReactWeb: frontend.some((f) => reactBasedFrontends.includes(f)),
@@ -149,7 +149,8 @@ function getQueryDependencies(frontend: Frontend[]) {
149149
"tanstack-router",
150150
"tanstack-start",
151151
"next",
152-
"native-nativewind",
152+
"native-bare",
153+
"native-uniwind",
153154
"native-unistyles",
154155
];
155156

@@ -162,12 +163,14 @@ function getQueryDependencies(frontend: Frontend[]) {
162163
if (needsReactQuery) {
163164
const hasReactWeb = frontend.some(
164165
(f) =>
165-
f !== "native-nativewind" &&
166+
f !== "native-bare" &&
167+
f !== "native-uniwind" &&
166168
f !== "native-unistyles" &&
167169
reactBasedFrontends.includes(f),
168170
);
169171
const hasNative =
170-
frontend.includes("native-nativewind") ||
172+
frontend.includes("native-bare") ||
173+
frontend.includes("native-uniwind") ||
171174
frontend.includes("native-unistyles");
172175

173176
if (hasReactWeb) {

apps/cli/src/helpers/core/auth-setup.ts

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,8 @@ export async function setupAuth(config: ProjectConfig) {
5252
const convexBackendDirExists = await fs.pathExists(convexBackendDir);
5353

5454
const hasNativeForBA =
55-
frontend.includes("native-nativewind") ||
55+
frontend.includes("native-bare") ||
56+
frontend.includes("native-uniwind") ||
5657
frontend.includes("native-unistyles");
5758

5859
if (convexBackendDirExists) {
@@ -98,9 +99,13 @@ export async function setupAuth(config: ProjectConfig) {
9899
}
99100
}
100101

101-
const hasNativeWind = frontend.includes("native-nativewind");
102+
const hasNativeBare = frontend.includes("native-bare");
103+
const hasNativeUniwind = frontend.includes("native-uniwind");
102104
const hasUnistyles = frontend.includes("native-unistyles");
103-
if (nativeDirExists && (hasNativeWind || hasUnistyles)) {
105+
if (
106+
nativeDirExists &&
107+
(hasNativeBare || hasNativeUniwind || hasUnistyles)
108+
) {
104109
await addPackageDependency({
105110
dependencies: [
106111
"better-auth",
@@ -116,12 +121,13 @@ export async function setupAuth(config: ProjectConfig) {
116121
}
117122
}
118123

119-
const hasNativeWind = frontend.includes("native-nativewind");
124+
const hasNativeBare = frontend.includes("native-bare");
125+
const hasNativeUniwind = frontend.includes("native-uniwind");
120126
const hasUnistyles = frontend.includes("native-unistyles");
121127
if (
122128
auth === "clerk" &&
123129
nativeDirExists &&
124-
(hasNativeWind || hasUnistyles)
130+
(hasNativeBare || hasNativeUniwind || hasUnistyles)
125131
) {
126132
await addPackageDependency({
127133
dependencies: ["@clerk/clerk-expo"],
@@ -163,7 +169,8 @@ export async function setupAuth(config: ProjectConfig) {
163169
}
164170

165171
if (
166-
(frontend.includes("native-nativewind") ||
172+
(frontend.includes("native-bare") ||
173+
frontend.includes("native-uniwind") ||
167174
frontend.includes("native-unistyles")) &&
168175
nativeDirExists
169176
) {

apps/cli/src/helpers/core/create-readme.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,8 @@ function generateReadmeContent(options: ProjectConfig) {
4343
const isConvex = backend === "convex";
4444
const hasReactRouter = frontend.includes("react-router");
4545
const hasNative =
46-
frontend.includes("native-nativewind") ||
46+
frontend.includes("native-bare") ||
47+
frontend.includes("native-uniwind") ||
4748
frontend.includes("native-unistyles");
4849
const hasSvelte = frontend.includes("svelte");
4950

@@ -321,7 +322,8 @@ function generateProjectStructure(
321322
}
322323

323324
const hasNative =
324-
frontend.includes("native-nativewind") ||
325+
frontend.includes("native-bare") ||
326+
frontend.includes("native-uniwind") ||
325327
frontend.includes("native-unistyles");
326328
if (hasNative) {
327329
if (isBackendSelf) {
@@ -402,7 +404,8 @@ function generateFeaturesList(
402404
const hasTanstackRouter = frontend.includes("tanstack-router");
403405
const hasReactRouter = frontend.includes("react-router");
404406
const hasNative =
405-
frontend.includes("native-nativewind") ||
407+
frontend.includes("native-bare") ||
408+
frontend.includes("native-uniwind") ||
406409
frontend.includes("native-unistyles");
407410
const hasNext = frontend.includes("next");
408411
const hasTanstackStart = frontend.includes("tanstack-start");

apps/cli/src/helpers/core/env-setup.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,8 @@ export async function setupEnvironmentVariables(config: ProjectConfig) {
225225
}
226226

227227
if (
228-
frontend.includes("native-nativewind") ||
228+
frontend.includes("native-bare") ||
229+
frontend.includes("native-uniwind") ||
229230
frontend.includes("native-unistyles")
230231
) {
231232
const nativeDir = path.join(projectDir, "apps/native");
@@ -277,7 +278,8 @@ export async function setupEnvironmentVariables(config: ProjectConfig) {
277278
const envLocalPath = path.join(convexBackendDir, ".env.local");
278279

279280
const hasNative =
280-
frontend.includes("native-nativewind") ||
281+
frontend.includes("native-bare") ||
282+
frontend.includes("native-uniwind") ||
281283
frontend.includes("native-unistyles");
282284
const hasWeb = hasWebFrontend;
283285

apps/cli/src/helpers/core/post-installation.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,8 @@ export async function displayPostInstallInstructions(
6161
? getLintingInstructions(runCmd)
6262
: "";
6363
const nativeInstructions =
64-
frontend?.includes("native-nativewind") ||
64+
frontend?.includes("native-bare") ||
65+
frontend?.includes("native-uniwind") ||
6566
frontend?.includes("native-unistyles")
6667
? getNativeInstructions(isConvex, isBackendSelf, frontend || [])
6768
: "";
@@ -103,7 +104,8 @@ export async function displayPostInstallInstructions(
103104
].includes(f),
104105
);
105106
const hasNative =
106-
frontend?.includes("native-nativewind") ||
107+
frontend?.includes("native-bare") ||
108+
frontend?.includes("native-uniwind") ||
107109
frontend?.includes("native-unistyles");
108110

109111
const bunWebNativeWarning =

0 commit comments

Comments
 (0)