create-newt-app 0.23.4 → 0.25.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.
- package/dist/index.js +1001 -263
- package/package.json +6 -2
package/dist/index.js
CHANGED
|
@@ -7,7 +7,7 @@ import chalk from "chalk";
|
|
|
7
7
|
// package.json
|
|
8
8
|
var package_default = {
|
|
9
9
|
name: "create-newt-app",
|
|
10
|
-
version: "0.
|
|
10
|
+
version: "0.25.0",
|
|
11
11
|
license: "MIT",
|
|
12
12
|
private: false,
|
|
13
13
|
type: "module",
|
|
@@ -17,11 +17,15 @@ var package_default = {
|
|
|
17
17
|
files: [
|
|
18
18
|
"dist"
|
|
19
19
|
],
|
|
20
|
+
engines: {
|
|
21
|
+
node: ">=20.9.0"
|
|
22
|
+
},
|
|
20
23
|
scripts: {
|
|
21
24
|
build: "tsup",
|
|
22
25
|
"build:watch": "tsup --watch",
|
|
23
26
|
dev: "tsup --watch",
|
|
24
|
-
test: "vitest run"
|
|
27
|
+
test: "vitest run",
|
|
28
|
+
typecheck: "tsc --noEmit"
|
|
25
29
|
},
|
|
26
30
|
dependencies: {
|
|
27
31
|
"@clack/prompts": "^0.11.0",
|
|
@@ -63,12 +67,13 @@ var package_json_default = {
|
|
|
63
67
|
"db:generate": "turbo run generate"
|
|
64
68
|
},
|
|
65
69
|
"devDependencies": {
|
|
66
|
-
"
|
|
67
|
-
"
|
|
70
|
+
"@types/node": "<%= versions["@types/node"] %>",
|
|
71
|
+
"turbo": "<%= versions.turbo %>",
|
|
72
|
+
"typescript": "<%= versions.typescript %>"
|
|
68
73
|
},
|
|
69
74
|
"packageManager": "pnpm@9.0.0",
|
|
70
75
|
"engines": {
|
|
71
|
-
"node": ">=
|
|
76
|
+
"node": ">=20.9.0"
|
|
72
77
|
}
|
|
73
78
|
}`
|
|
74
79
|
};
|
|
@@ -117,15 +122,6 @@ yarn-error.log*
|
|
|
117
122
|
*.pem`
|
|
118
123
|
};
|
|
119
124
|
|
|
120
|
-
// src/templates/root/templates/prettierrc.ts
|
|
121
|
-
var prettierrc_default = {
|
|
122
|
-
filename: ".prettierrc",
|
|
123
|
-
template: `{
|
|
124
|
-
"singleQuote": true,
|
|
125
|
-
"trailingComma": "all"
|
|
126
|
-
}`
|
|
127
|
-
};
|
|
128
|
-
|
|
129
125
|
// src/templates/root/templates/dockerignore.ts
|
|
130
126
|
var dockerignore_default = {
|
|
131
127
|
filename: ".dockerignore",
|
|
@@ -251,7 +247,6 @@ var root = {
|
|
|
251
247
|
templates: [
|
|
252
248
|
package_json_default,
|
|
253
249
|
gitignore_default,
|
|
254
|
-
prettierrc_default,
|
|
255
250
|
dockerignore_default,
|
|
256
251
|
npmrc_default,
|
|
257
252
|
turbo_json_default,
|
|
@@ -282,22 +277,22 @@ var package_json_default2 = {
|
|
|
282
277
|
"dependencies": {
|
|
283
278
|
"@<%= projectName %>/auth": "workspace:*",
|
|
284
279
|
"@<%= projectName %>/ui": "workspace:*",
|
|
285
|
-
"@tailwindcss/postcss": "
|
|
286
|
-
"dotenv": "
|
|
287
|
-
"@tanstack/react-form": "
|
|
288
|
-
"@tanstack/react-query": "
|
|
289
|
-
"better-auth": "
|
|
290
|
-
"next": "
|
|
291
|
-
"react": "
|
|
292
|
-
"react-dom": "
|
|
293
|
-
"tailwindcss": "
|
|
280
|
+
"@tailwindcss/postcss": "<%= versions["@tailwindcss/postcss"] %>",
|
|
281
|
+
"dotenv": "<%= versions.dotenv %>",
|
|
282
|
+
"@tanstack/react-form": "<%= versions["@tanstack/react-form"] %>",
|
|
283
|
+
"@tanstack/react-query": "<%= versions["@tanstack/react-query"] %>",
|
|
284
|
+
"better-auth": "<%= versions["better-auth"] %>",
|
|
285
|
+
"next": "<%= versions.next %>",
|
|
286
|
+
"react": "<%= versions.react %>",
|
|
287
|
+
"react-dom": "<%= versions["react-dom"] %>",
|
|
288
|
+
"tailwindcss": "<%= versions.tailwindcss %>"
|
|
294
289
|
},
|
|
295
290
|
"devDependencies": {
|
|
296
291
|
"@<%= projectName %>/typescript-config": "workspace:*",
|
|
297
|
-
"@types/node": "
|
|
298
|
-
"@types/react": "
|
|
299
|
-
"@types/react-dom": "
|
|
300
|
-
"typescript": "
|
|
292
|
+
"@types/node": "<%= versions["@types/node"] %>",
|
|
293
|
+
"@types/react": "<%= versions["@types/react"] %>",
|
|
294
|
+
"@types/react-dom": "<%= versions["@types/react-dom"] %>",
|
|
295
|
+
"typescript": "<%= versions.typescript %>"
|
|
301
296
|
}
|
|
302
297
|
}`
|
|
303
298
|
};
|
|
@@ -823,27 +818,27 @@ var package_json_default3 = {
|
|
|
823
818
|
"start:prod": "node dist/main"
|
|
824
819
|
},
|
|
825
820
|
"dependencies": {
|
|
826
|
-
"@nestjs/common": "
|
|
827
|
-
"@nestjs/core": "
|
|
828
|
-
"@nestjs/platform-express": "
|
|
821
|
+
"@nestjs/common": "<%= versions["@nestjs/common"] %>",
|
|
822
|
+
"@nestjs/core": "<%= versions["@nestjs/core"] %>",
|
|
823
|
+
"@nestjs/platform-express": "<%= versions["@nestjs/platform-express"] %>",
|
|
829
824
|
"@<%= projectName %>/auth": "workspace:*",
|
|
830
825
|
"@<%= projectName %>/db": "workspace:*",
|
|
831
|
-
"@thallesp/nestjs-better-auth": "
|
|
832
|
-
"dotenv": "
|
|
833
|
-
"reflect-metadata": "
|
|
834
|
-
"rxjs": "
|
|
826
|
+
"@thallesp/nestjs-better-auth": "<%= versions["@thallesp/nestjs-better-auth"] %>",
|
|
827
|
+
"dotenv": "<%= versions.dotenv %>",
|
|
828
|
+
"reflect-metadata": "<%= versions["reflect-metadata"] %>",
|
|
829
|
+
"rxjs": "<%= versions.rxjs %>"
|
|
835
830
|
},
|
|
836
831
|
"devDependencies": {
|
|
837
|
-
"@nestjs/cli": "
|
|
838
|
-
"@nestjs/schematics": "
|
|
839
|
-
"@nestjs/testing": "
|
|
840
|
-
"@types/express": "
|
|
841
|
-
"@types/node": "
|
|
842
|
-
"@types/supertest": "
|
|
843
|
-
"supertest": "
|
|
844
|
-
"ts-node": "
|
|
845
|
-
"tsconfig-paths": "
|
|
846
|
-
"typescript": "
|
|
832
|
+
"@nestjs/cli": "<%= versions["@nestjs/cli"] %>",
|
|
833
|
+
"@nestjs/schematics": "<%= versions["@nestjs/schematics"] %>",
|
|
834
|
+
"@nestjs/testing": "<%= versions["@nestjs/testing"] %>",
|
|
835
|
+
"@types/express": "<%= versions["@types/express"] %>",
|
|
836
|
+
"@types/node": "<%= versions["@types/node"] %>",
|
|
837
|
+
"@types/supertest": "<%= versions["@types/supertest"] %>",
|
|
838
|
+
"supertest": "<%= versions.supertest %>",
|
|
839
|
+
"ts-node": "<%= versions["ts-node"] %>",
|
|
840
|
+
"tsconfig-paths": "<%= versions["tsconfig-paths"] %>",
|
|
841
|
+
"typescript": "<%= versions.typescript %>"
|
|
847
842
|
}
|
|
848
843
|
}`
|
|
849
844
|
};
|
|
@@ -999,13 +994,13 @@ var package_json_default4 = {
|
|
|
999
994
|
},
|
|
1000
995
|
"dependencies": {
|
|
1001
996
|
"@<%= projectName %>/db": "workspace:*",
|
|
1002
|
-
"auth": "
|
|
1003
|
-
"better-auth": "
|
|
997
|
+
"auth": "<%= versions.auth %>",
|
|
998
|
+
"better-auth": "<%= versions["better-auth"] %>"
|
|
1004
999
|
},
|
|
1005
1000
|
"devDependencies": {
|
|
1006
1001
|
"@<%= projectName %>/typescript-config": "workspace:*",
|
|
1007
|
-
"dotenv-cli": "
|
|
1008
|
-
"typescript": "
|
|
1002
|
+
"dotenv-cli": "<%= versions["dotenv-cli"] %>",
|
|
1003
|
+
"typescript": "<%= versions.typescript %>"
|
|
1009
1004
|
}
|
|
1010
1005
|
}`
|
|
1011
1006
|
};
|
|
@@ -1241,15 +1236,15 @@ var package_json_sqlite_default = {
|
|
|
1241
1236
|
"make": "tsx scripts/new-migration.ts"
|
|
1242
1237
|
},
|
|
1243
1238
|
"dependencies": {
|
|
1244
|
-
"better-sqlite3": "
|
|
1245
|
-
"kysely": "
|
|
1239
|
+
"better-sqlite3": "<%= versions["better-sqlite3"] %>",
|
|
1240
|
+
"kysely": "<%= versions.kysely %>"
|
|
1246
1241
|
},
|
|
1247
1242
|
"devDependencies": {
|
|
1248
1243
|
"@<%= projectName %>/typescript-config": "workspace:*",
|
|
1249
|
-
"@types/better-sqlite3": "
|
|
1250
|
-
"dotenv-cli": "
|
|
1251
|
-
"tsx": "
|
|
1252
|
-
"typescript": "
|
|
1244
|
+
"@types/better-sqlite3": "<%= versions["@types/better-sqlite3"] %>",
|
|
1245
|
+
"dotenv-cli": "<%= versions["dotenv-cli"] %>",
|
|
1246
|
+
"tsx": "<%= versions.tsx %>",
|
|
1247
|
+
"typescript": "<%= versions.typescript %>"
|
|
1253
1248
|
}
|
|
1254
1249
|
}`
|
|
1255
1250
|
};
|
|
@@ -1269,15 +1264,15 @@ var package_json_postgres_default = {
|
|
|
1269
1264
|
"make": "tsx scripts/new-migration.ts"
|
|
1270
1265
|
},
|
|
1271
1266
|
"dependencies": {
|
|
1272
|
-
"kysely": "
|
|
1273
|
-
"pg": "
|
|
1267
|
+
"kysely": "<%= versions.kysely %>",
|
|
1268
|
+
"pg": "<%= versions.pg %>"
|
|
1274
1269
|
},
|
|
1275
1270
|
"devDependencies": {
|
|
1276
1271
|
"@<%= projectName %>/typescript-config": "workspace:*",
|
|
1277
|
-
"@types/pg": "
|
|
1278
|
-
"dotenv-cli": "
|
|
1279
|
-
"tsx": "
|
|
1280
|
-
"typescript": "
|
|
1272
|
+
"@types/pg": "<%= versions["@types/pg"] %>",
|
|
1273
|
+
"dotenv-cli": "<%= versions["dotenv-cli"] %>",
|
|
1274
|
+
"tsx": "<%= versions.tsx %>",
|
|
1275
|
+
"typescript": "<%= versions.typescript %>"
|
|
1281
1276
|
}
|
|
1282
1277
|
}`
|
|
1283
1278
|
};
|
|
@@ -1350,12 +1345,12 @@ var package_json_default5 = {
|
|
|
1350
1345
|
},
|
|
1351
1346
|
"devDependencies": {
|
|
1352
1347
|
"@<%= projectName %>/typescript-config": "workspace:*",
|
|
1353
|
-
"@tailwindcss/postcss": "
|
|
1354
|
-
"tailwindcss": "
|
|
1355
|
-
"@types/node": "
|
|
1356
|
-
"@types/react": "
|
|
1357
|
-
"@types/react-dom": "
|
|
1358
|
-
"typescript": "
|
|
1348
|
+
"@tailwindcss/postcss": "<%= versions["@tailwindcss/postcss"] %>",
|
|
1349
|
+
"tailwindcss": "<%= versions.tailwindcss %>",
|
|
1350
|
+
"@types/node": "<%= versions["@types/node"] %>",
|
|
1351
|
+
"@types/react": "<%= versions["@types/react"] %>",
|
|
1352
|
+
"@types/react-dom": "<%= versions["@types/react-dom"] %>",
|
|
1353
|
+
"typescript": "<%= versions.typescript %>"
|
|
1359
1354
|
},
|
|
1360
1355
|
"peerDependencies": {
|
|
1361
1356
|
"next": ">=15.0.0",
|
|
@@ -1363,8 +1358,8 @@ var package_json_default5 = {
|
|
|
1363
1358
|
"react-dom": ">=19.0.0"
|
|
1364
1359
|
},
|
|
1365
1360
|
"dependencies": {
|
|
1366
|
-
"clsx": "
|
|
1367
|
-
"tailwind-merge": "
|
|
1361
|
+
"clsx": "<%= versions.clsx %>",
|
|
1362
|
+
"tailwind-merge": "<%= versions["tailwind-merge"] %>"
|
|
1368
1363
|
}
|
|
1369
1364
|
}`
|
|
1370
1365
|
};
|
|
@@ -1595,6 +1590,87 @@ var ui = {
|
|
|
1595
1590
|
};
|
|
1596
1591
|
var ui_default = ui;
|
|
1597
1592
|
|
|
1593
|
+
// src/templates/versions.ts
|
|
1594
|
+
var versions = {
|
|
1595
|
+
"@base-ui/react": "^1.6.0",
|
|
1596
|
+
"@eslint/eslintrc": "^3.2.0",
|
|
1597
|
+
"@eslint/js": "^9.39.1",
|
|
1598
|
+
"@nestjs/cli": "^11.0.0",
|
|
1599
|
+
"@nestjs/common": "^11.0.1",
|
|
1600
|
+
"@nestjs/core": "^11.0.1",
|
|
1601
|
+
"@nestjs/platform-express": "^11.0.1",
|
|
1602
|
+
"@nestjs/schematics": "^11.0.0",
|
|
1603
|
+
"@nestjs/serve-static": "^5.0.0",
|
|
1604
|
+
"@nestjs/testing": "^11.0.1",
|
|
1605
|
+
"@next/eslint-plugin-next": "^16.3.0",
|
|
1606
|
+
"@shadcn/react": "^0.2.1",
|
|
1607
|
+
"@swc/core": "^1.10.0",
|
|
1608
|
+
"@tailwindcss/postcss": "^4.2.1",
|
|
1609
|
+
"@tanstack/react-form": "^1.28.5",
|
|
1610
|
+
"@tanstack/react-query": "^5.90.21",
|
|
1611
|
+
"@thallesp/nestjs-better-auth": "^2.5.1",
|
|
1612
|
+
"@types/better-sqlite3": "^7.6.13",
|
|
1613
|
+
"@types/express": "^5.0.0",
|
|
1614
|
+
"@types/jest": "^30.0.0",
|
|
1615
|
+
"@types/node": "^22.15.3",
|
|
1616
|
+
"@types/pg": "^8.11.13",
|
|
1617
|
+
"@types/react": "19.2.14",
|
|
1618
|
+
"@types/react-dom": "19.2.3",
|
|
1619
|
+
"@types/supertest": "^6.0.2",
|
|
1620
|
+
"@vitest/coverage-v8": "^3.0.0",
|
|
1621
|
+
"auth": "^1.5.5",
|
|
1622
|
+
"better-auth": "^1.2.8",
|
|
1623
|
+
"better-sqlite3": "^12.11.1",
|
|
1624
|
+
"class-variance-authority": "^0.7.1",
|
|
1625
|
+
"clsx": "^2.1.1",
|
|
1626
|
+
"cmdk": "^1.1.1",
|
|
1627
|
+
"date-fns": "^4.2.1",
|
|
1628
|
+
"dotenv": "^17.3.1",
|
|
1629
|
+
"dotenv-cli": "^11.0.0",
|
|
1630
|
+
"embla-carousel-react": "^8.6.0",
|
|
1631
|
+
"eslint": "^9.39.1",
|
|
1632
|
+
"eslint-config-prettier": "^10.1.1",
|
|
1633
|
+
"eslint-plugin-only-warn": "^1.1.0",
|
|
1634
|
+
"eslint-plugin-react": "^7.37.5",
|
|
1635
|
+
"eslint-plugin-react-hooks": "^5.2.0",
|
|
1636
|
+
"eslint-plugin-turbo": "^2.7.1",
|
|
1637
|
+
"globals": "^16.5.0",
|
|
1638
|
+
"input-otp": "^1.4.2",
|
|
1639
|
+
"jest": "^30.0.0",
|
|
1640
|
+
"kysely": "^0.28.2",
|
|
1641
|
+
"lucide-react": "^1.16.0",
|
|
1642
|
+
"next": "16.3.0",
|
|
1643
|
+
"next-themes": "^0.4.6",
|
|
1644
|
+
"oxfmt": "^0.59.0",
|
|
1645
|
+
"oxlint": "^1.74.0",
|
|
1646
|
+
"pg": "^8.14.1",
|
|
1647
|
+
"prettier": "^3.7.4",
|
|
1648
|
+
"react": "^19.2.4",
|
|
1649
|
+
"react-day-picker": "^10.0.1",
|
|
1650
|
+
"react-dom": "^19.2.4",
|
|
1651
|
+
"react-resizable-panels": "^4.11.1",
|
|
1652
|
+
"recharts": "^3.8.0",
|
|
1653
|
+
"reflect-metadata": "^0.2.2",
|
|
1654
|
+
"rxjs": "^7.8.1",
|
|
1655
|
+
"shadcn": "^4.7.0",
|
|
1656
|
+
"sonner": "^2.0.7",
|
|
1657
|
+
"source-map-support": "^0.5.21",
|
|
1658
|
+
"supertest": "^7.0.0",
|
|
1659
|
+
"tailwind-merge": "^3.6.0",
|
|
1660
|
+
"tailwindcss": "^4.2.1",
|
|
1661
|
+
"ts-jest": "^29.2.5",
|
|
1662
|
+
"ts-loader": "^9.5.2",
|
|
1663
|
+
"ts-node": "^10.9.2",
|
|
1664
|
+
"tsconfig-paths": "^4.2.0",
|
|
1665
|
+
"tsx": "^4.19.4",
|
|
1666
|
+
"turbo": "^2.8.16",
|
|
1667
|
+
"tw-animate-css": "^1.4.0",
|
|
1668
|
+
"typescript": "6.0.2",
|
|
1669
|
+
"typescript-eslint": "^8.50.0",
|
|
1670
|
+
"unplugin-swc": "^1.5.9",
|
|
1671
|
+
"vitest": "^3.0.0"
|
|
1672
|
+
};
|
|
1673
|
+
|
|
1598
1674
|
// src/templates/shadcn-ui/templates/components-json.ts
|
|
1599
1675
|
var components_json_default = {
|
|
1600
1676
|
filename: "packages/ui/components.json",
|
|
@@ -1669,22 +1745,23 @@ var package_json_default6 = {
|
|
|
1669
1745
|
},
|
|
1670
1746
|
"scripts": {},
|
|
1671
1747
|
"dependencies": {
|
|
1672
|
-
"@base-ui/react": "
|
|
1673
|
-
"shadcn": "
|
|
1674
|
-
"
|
|
1675
|
-
"
|
|
1676
|
-
"
|
|
1677
|
-
"
|
|
1678
|
-
"
|
|
1679
|
-
"
|
|
1680
|
-
"
|
|
1681
|
-
"
|
|
1682
|
-
"
|
|
1683
|
-
"react-
|
|
1684
|
-
"
|
|
1685
|
-
"
|
|
1686
|
-
"
|
|
1687
|
-
"
|
|
1748
|
+
"@base-ui/react": "<%= versions["@base-ui/react"] %>",
|
|
1749
|
+
"@shadcn/react": "<%= versions["@shadcn/react"] %>",
|
|
1750
|
+
"shadcn": "<%= versions.shadcn %>",
|
|
1751
|
+
"class-variance-authority": "<%= versions["class-variance-authority"] %>",
|
|
1752
|
+
"clsx": "<%= versions.clsx %>",
|
|
1753
|
+
"cmdk": "<%= versions.cmdk %>",
|
|
1754
|
+
"date-fns": "<%= versions["date-fns"] %>",
|
|
1755
|
+
"embla-carousel-react": "<%= versions["embla-carousel-react"] %>",
|
|
1756
|
+
"input-otp": "<%= versions["input-otp"] %>",
|
|
1757
|
+
"lucide-react": "<%= versions["lucide-react"] %>",
|
|
1758
|
+
"next-themes": "<%= versions["next-themes"] %>",
|
|
1759
|
+
"react-day-picker": "<%= versions["react-day-picker"] %>",
|
|
1760
|
+
"react-resizable-panels": "<%= versions["react-resizable-panels"] %>",
|
|
1761
|
+
"recharts": "<%= versions.recharts %>",
|
|
1762
|
+
"sonner": "<%= versions.sonner %>",
|
|
1763
|
+
"tailwind-merge": "<%= versions["tailwind-merge"] %>",
|
|
1764
|
+
"tw-animate-css": "<%= versions["tw-animate-css"] %>"
|
|
1688
1765
|
},
|
|
1689
1766
|
"peerDependencies": {
|
|
1690
1767
|
"next": ">=15.0.0",
|
|
@@ -1693,12 +1770,12 @@ var package_json_default6 = {
|
|
|
1693
1770
|
},
|
|
1694
1771
|
"devDependencies": {
|
|
1695
1772
|
"@<%= projectName %>/typescript-config": "workspace:*",
|
|
1696
|
-
"@tailwindcss/postcss": "
|
|
1697
|
-
"@types/node": "
|
|
1698
|
-
"@types/react": "
|
|
1699
|
-
"@types/react-dom": "
|
|
1700
|
-
"tailwindcss": "
|
|
1701
|
-
"typescript": "
|
|
1773
|
+
"@tailwindcss/postcss": "<%= versions["@tailwindcss/postcss"] %>",
|
|
1774
|
+
"@types/node": "<%= versions["@types/node"] %>",
|
|
1775
|
+
"@types/react": "<%= versions["@types/react"] %>",
|
|
1776
|
+
"@types/react-dom": "<%= versions["@types/react-dom"] %>",
|
|
1777
|
+
"tailwindcss": "<%= versions.tailwindcss %>",
|
|
1778
|
+
"typescript": "<%= versions.typescript %>"
|
|
1702
1779
|
}
|
|
1703
1780
|
}`
|
|
1704
1781
|
};
|
|
@@ -9363,6 +9440,665 @@ export function ModeToggle() {
|
|
|
9363
9440
|
`
|
|
9364
9441
|
};
|
|
9365
9442
|
|
|
9443
|
+
// src/templates/shadcn-ui/templates/attachment.ts
|
|
9444
|
+
var attachment_default = {
|
|
9445
|
+
filename: "packages/ui/src/components/attachment.tsx",
|
|
9446
|
+
template: `import * as React from "react"
|
|
9447
|
+
import { mergeProps } from "@base-ui/react/merge-props"
|
|
9448
|
+
import { useRender } from "@base-ui/react/use-render"
|
|
9449
|
+
import { cva, type VariantProps } from "class-variance-authority"
|
|
9450
|
+
|
|
9451
|
+
import { cn } from "@<%= projectName %>/ui/lib/utils"
|
|
9452
|
+
import { Button } from "@<%= projectName %>/ui/components/button"
|
|
9453
|
+
|
|
9454
|
+
const attachmentVariants = cva(
|
|
9455
|
+
"group/attachment relative flex w-fit max-w-full min-w-0 shrink-0 flex-wrap rounded-xl border bg-card text-card-foreground transition-colors focus-within:ring-1 focus-within:ring-ring/50 has-[>a,>button]:hover:bg-muted/50 data-[state=error]:border-destructive/30 data-[state=idle]:border-dashed",
|
|
9456
|
+
{
|
|
9457
|
+
variants: {
|
|
9458
|
+
size: {
|
|
9459
|
+
default:
|
|
9460
|
+
"gap-2 text-sm has-data-[slot=attachment-content]:px-2.5 has-data-[slot=attachment-content]:py-2 has-data-[slot=attachment-media]:p-2",
|
|
9461
|
+
sm: "gap-2.5 text-xs has-data-[slot=attachment-content]:px-2 has-data-[slot=attachment-content]:py-1.5 has-data-[slot=attachment-media]:p-1.5",
|
|
9462
|
+
xs: "gap-1.5 rounded-lg text-xs has-data-[slot=attachment-content]:px-1.5 has-data-[slot=attachment-content]:py-1 has-data-[slot=attachment-media]:p-1",
|
|
9463
|
+
},
|
|
9464
|
+
orientation: {
|
|
9465
|
+
horizontal: "min-w-40 items-center",
|
|
9466
|
+
vertical: "w-24 flex-col has-data-[slot=attachment-content]:w-30",
|
|
9467
|
+
},
|
|
9468
|
+
},
|
|
9469
|
+
}
|
|
9470
|
+
)
|
|
9471
|
+
|
|
9472
|
+
function Attachment({
|
|
9473
|
+
className,
|
|
9474
|
+
state = "done",
|
|
9475
|
+
size = "default",
|
|
9476
|
+
orientation = "horizontal",
|
|
9477
|
+
...props
|
|
9478
|
+
}: React.ComponentProps<"div"> &
|
|
9479
|
+
VariantProps<typeof attachmentVariants> & {
|
|
9480
|
+
state?: "idle" | "uploading" | "processing" | "error" | "done"
|
|
9481
|
+
}) {
|
|
9482
|
+
return (
|
|
9483
|
+
<div
|
|
9484
|
+
data-slot="attachment"
|
|
9485
|
+
data-state={state}
|
|
9486
|
+
data-size={size}
|
|
9487
|
+
data-orientation={orientation}
|
|
9488
|
+
className={cn(attachmentVariants({ size, orientation }), className)}
|
|
9489
|
+
{...props}
|
|
9490
|
+
/>
|
|
9491
|
+
)
|
|
9492
|
+
}
|
|
9493
|
+
|
|
9494
|
+
const attachmentMediaVariants = cva(
|
|
9495
|
+
"relative flex aspect-square w-10 shrink-0 items-center justify-center overflow-hidden rounded-lg bg-muted text-foreground group-data-[orientation=vertical]/attachment:w-full group-data-[size=sm]/attachment:w-8 group-data-[size=xs]/attachment:w-7 group-data-[size=xs]/attachment:rounded-md group-data-[state=error]/attachment:bg-destructive/10 group-data-[state=error]/attachment:text-destructive group-data-[orientation=vertical]/attachment:*:data-[slot=spinner]:size-6! [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 group-data-[orientation=vertical]/attachment:[&_svg:not([class*='size-'])]:size-6 group-data-[size=xs]/attachment:[&_svg:not([class*='size-'])]:size-3.5",
|
|
9496
|
+
{
|
|
9497
|
+
variants: {
|
|
9498
|
+
variant: {
|
|
9499
|
+
icon: "",
|
|
9500
|
+
image:
|
|
9501
|
+
"opacity-60 group-data-[state=done]/attachment:opacity-100 group-data-[state=idle]/attachment:opacity-100 *:[img]:aspect-square *:[img]:w-full *:[img]:object-cover",
|
|
9502
|
+
},
|
|
9503
|
+
},
|
|
9504
|
+
defaultVariants: {
|
|
9505
|
+
variant: "icon",
|
|
9506
|
+
},
|
|
9507
|
+
}
|
|
9508
|
+
)
|
|
9509
|
+
|
|
9510
|
+
function AttachmentMedia({
|
|
9511
|
+
className,
|
|
9512
|
+
variant = "icon",
|
|
9513
|
+
...props
|
|
9514
|
+
}: React.ComponentProps<"div"> & VariantProps<typeof attachmentMediaVariants>) {
|
|
9515
|
+
return (
|
|
9516
|
+
<div
|
|
9517
|
+
data-slot="attachment-media"
|
|
9518
|
+
data-variant={variant}
|
|
9519
|
+
className={cn(attachmentMediaVariants({ variant }), className)}
|
|
9520
|
+
{...props}
|
|
9521
|
+
/>
|
|
9522
|
+
)
|
|
9523
|
+
}
|
|
9524
|
+
|
|
9525
|
+
function AttachmentContent({
|
|
9526
|
+
className,
|
|
9527
|
+
...props
|
|
9528
|
+
}: React.ComponentProps<"div">) {
|
|
9529
|
+
return (
|
|
9530
|
+
<div
|
|
9531
|
+
data-slot="attachment-content"
|
|
9532
|
+
className={cn(
|
|
9533
|
+
"max-w-full min-w-0 flex-1 leading-tight group-data-[orientation=vertical]/attachment:px-1",
|
|
9534
|
+
className
|
|
9535
|
+
)}
|
|
9536
|
+
{...props}
|
|
9537
|
+
/>
|
|
9538
|
+
)
|
|
9539
|
+
}
|
|
9540
|
+
|
|
9541
|
+
function AttachmentTitle({
|
|
9542
|
+
className,
|
|
9543
|
+
...props
|
|
9544
|
+
}: React.ComponentProps<"span">) {
|
|
9545
|
+
return (
|
|
9546
|
+
<span
|
|
9547
|
+
data-slot="attachment-title"
|
|
9548
|
+
className={cn(
|
|
9549
|
+
"block max-w-full min-w-0 truncate font-medium group-data-[state=processing]/attachment:shimmer group-data-[state=uploading]/attachment:shimmer",
|
|
9550
|
+
className
|
|
9551
|
+
)}
|
|
9552
|
+
{...props}
|
|
9553
|
+
/>
|
|
9554
|
+
)
|
|
9555
|
+
}
|
|
9556
|
+
|
|
9557
|
+
function AttachmentDescription({
|
|
9558
|
+
className,
|
|
9559
|
+
...props
|
|
9560
|
+
}: React.ComponentProps<"span">) {
|
|
9561
|
+
return (
|
|
9562
|
+
<span
|
|
9563
|
+
data-slot="attachment-description"
|
|
9564
|
+
className={cn(
|
|
9565
|
+
"mt-0.5 block min-w-0 truncate text-xs text-muted-foreground group-data-[state=error]/attachment:text-destructive/80",
|
|
9566
|
+
"max-w-full",
|
|
9567
|
+
className
|
|
9568
|
+
)}
|
|
9569
|
+
{...props}
|
|
9570
|
+
/>
|
|
9571
|
+
)
|
|
9572
|
+
}
|
|
9573
|
+
|
|
9574
|
+
function AttachmentActions({
|
|
9575
|
+
className,
|
|
9576
|
+
...props
|
|
9577
|
+
}: React.ComponentProps<"div">) {
|
|
9578
|
+
return (
|
|
9579
|
+
<div
|
|
9580
|
+
data-slot="attachment-actions"
|
|
9581
|
+
className={cn(
|
|
9582
|
+
"relative z-20 flex shrink-0 items-center group-data-[orientation=vertical]/attachment:absolute group-data-[orientation=vertical]/attachment:top-3 group-data-[orientation=vertical]/attachment:right-3 group-data-[orientation=vertical]/attachment:gap-1",
|
|
9583
|
+
className
|
|
9584
|
+
)}
|
|
9585
|
+
{...props}
|
|
9586
|
+
/>
|
|
9587
|
+
)
|
|
9588
|
+
}
|
|
9589
|
+
|
|
9590
|
+
function AttachmentAction({
|
|
9591
|
+
className,
|
|
9592
|
+
variant,
|
|
9593
|
+
size = "icon-xs",
|
|
9594
|
+
...props
|
|
9595
|
+
}: React.ComponentProps<typeof Button>) {
|
|
9596
|
+
return (
|
|
9597
|
+
<Button
|
|
9598
|
+
data-slot="attachment-action"
|
|
9599
|
+
variant={variant ?? "ghost"}
|
|
9600
|
+
size={size}
|
|
9601
|
+
className={cn(className)}
|
|
9602
|
+
{...props}
|
|
9603
|
+
/>
|
|
9604
|
+
)
|
|
9605
|
+
}
|
|
9606
|
+
|
|
9607
|
+
function AttachmentTrigger({
|
|
9608
|
+
className,
|
|
9609
|
+
render,
|
|
9610
|
+
type,
|
|
9611
|
+
...props
|
|
9612
|
+
}: useRender.ComponentProps<"button">) {
|
|
9613
|
+
return useRender({
|
|
9614
|
+
defaultTagName: "button",
|
|
9615
|
+
props: mergeProps<"button">(
|
|
9616
|
+
{
|
|
9617
|
+
type: render ? type : (type ?? "button"),
|
|
9618
|
+
className: cn("absolute inset-0 z-10 outline-none", className),
|
|
9619
|
+
},
|
|
9620
|
+
props
|
|
9621
|
+
),
|
|
9622
|
+
render,
|
|
9623
|
+
state: {
|
|
9624
|
+
slot: "attachment-trigger",
|
|
9625
|
+
},
|
|
9626
|
+
})
|
|
9627
|
+
}
|
|
9628
|
+
|
|
9629
|
+
function AttachmentGroup({ className, ...props }: React.ComponentProps<"div">) {
|
|
9630
|
+
return (
|
|
9631
|
+
<div
|
|
9632
|
+
data-slot="attachment-group"
|
|
9633
|
+
className={cn(
|
|
9634
|
+
"flex min-w-0 scroll-fade-x snap-x snap-mandatory scroll-px-1 scrollbar-none gap-3 overflow-x-auto overscroll-x-contain py-1 *:data-[slot=attachment]:flex-none *:data-[slot=attachment]:snap-start",
|
|
9635
|
+
className
|
|
9636
|
+
)}
|
|
9637
|
+
{...props}
|
|
9638
|
+
/>
|
|
9639
|
+
)
|
|
9640
|
+
}
|
|
9641
|
+
|
|
9642
|
+
export {
|
|
9643
|
+
Attachment,
|
|
9644
|
+
AttachmentGroup,
|
|
9645
|
+
AttachmentMedia,
|
|
9646
|
+
AttachmentContent,
|
|
9647
|
+
AttachmentTitle,
|
|
9648
|
+
AttachmentDescription,
|
|
9649
|
+
AttachmentActions,
|
|
9650
|
+
AttachmentAction,
|
|
9651
|
+
AttachmentTrigger,
|
|
9652
|
+
}
|
|
9653
|
+
`
|
|
9654
|
+
};
|
|
9655
|
+
|
|
9656
|
+
// src/templates/shadcn-ui/templates/bubble.ts
|
|
9657
|
+
var bubble_default = {
|
|
9658
|
+
filename: "packages/ui/src/components/bubble.tsx",
|
|
9659
|
+
template: `import * as React from "react"
|
|
9660
|
+
import { mergeProps } from "@base-ui/react/merge-props"
|
|
9661
|
+
import { useRender } from "@base-ui/react/use-render"
|
|
9662
|
+
import { cva, type VariantProps } from "class-variance-authority"
|
|
9663
|
+
|
|
9664
|
+
import { cn } from "@<%= projectName %>/ui/lib/utils"
|
|
9665
|
+
|
|
9666
|
+
function BubbleGroup({ className, ...props }: React.ComponentProps<"div">) {
|
|
9667
|
+
return (
|
|
9668
|
+
<div
|
|
9669
|
+
data-slot="bubble-group"
|
|
9670
|
+
className={cn("flex min-w-0 flex-col gap-2", className)}
|
|
9671
|
+
{...props}
|
|
9672
|
+
/>
|
|
9673
|
+
)
|
|
9674
|
+
}
|
|
9675
|
+
|
|
9676
|
+
const bubbleVariants = cva(
|
|
9677
|
+
"group/bubble relative flex w-fit max-w-[80%] min-w-0 flex-col gap-1 group-data-[align=end]/message:self-end data-[align=end]:self-end data-[variant=ghost]:max-w-full",
|
|
9678
|
+
{
|
|
9679
|
+
variants: {
|
|
9680
|
+
variant: {
|
|
9681
|
+
default:
|
|
9682
|
+
"*:data-[slot=bubble-content]:bg-primary *:data-[slot=bubble-content]:text-primary-foreground [&>[data-slot=bubble-content]:is(button,a):hover]:bg-primary/80",
|
|
9683
|
+
secondary:
|
|
9684
|
+
"*:data-[slot=bubble-content]:bg-secondary *:data-[slot=bubble-content]:text-secondary-foreground [&>[data-slot=bubble-content]:is(button,a):hover]:bg-[color-mix(in_oklch,var(--secondary),var(--foreground)_5%)]",
|
|
9685
|
+
muted:
|
|
9686
|
+
"*:data-[slot=bubble-content]:bg-muted [&>[data-slot=bubble-content]:is(button,a):hover]:bg-[color-mix(in_oklch,var(--muted),var(--foreground)_5%)]",
|
|
9687
|
+
tinted:
|
|
9688
|
+
"*:data-[slot=bubble-content]:bg-[oklch(from_var(--primary)_0.93_calc(c*0.4)_h)] *:data-[slot=bubble-content]:text-foreground dark:*:data-[slot=bubble-content]:bg-[oklch(from_var(--primary)_0.3_calc(c*0.4)_h)] [&>[data-slot=bubble-content]:is(button,a):hover]:bg-[oklch(from_var(--primary)_0.88_calc(c*0.5)_h)] dark:[&>[data-slot=bubble-content]:is(button,a):hover]:bg-[oklch(from_var(--primary)_0.35_calc(c*0.5)_h)]",
|
|
9689
|
+
outline:
|
|
9690
|
+
"*:data-[slot=bubble-content]:border-border *:data-[slot=bubble-content]:bg-background [&>[data-slot=bubble-content]:is(button,a):hover]:bg-muted [&>[data-slot=bubble-content]:is(button,a):hover]:text-foreground dark:[&>[data-slot=bubble-content]:is(button,a):hover]:bg-input/30",
|
|
9691
|
+
ghost:
|
|
9692
|
+
"border-none *:data-[slot=bubble-content]:rounded-none *:data-[slot=bubble-content]:bg-transparent *:data-[slot=bubble-content]:p-0 [&>[data-slot=bubble-content]:is(button,a):hover]:bg-muted [&>[data-slot=bubble-content]:is(button,a):hover]:text-foreground dark:[&>[data-slot=bubble-content]:is(button,a):hover]:bg-muted/50",
|
|
9693
|
+
destructive:
|
|
9694
|
+
"*:data-[slot=bubble-content]:bg-destructive/10 *:data-[slot=bubble-content]:text-destructive dark:*:data-[slot=bubble-content]:bg-destructive/20 [&>[data-slot=bubble-content]:is(button,a):hover]:bg-destructive/20 dark:[&>[data-slot=bubble-content]:is(button,a):hover]:bg-destructive/30",
|
|
9695
|
+
},
|
|
9696
|
+
},
|
|
9697
|
+
defaultVariants: {
|
|
9698
|
+
variant: "default",
|
|
9699
|
+
},
|
|
9700
|
+
}
|
|
9701
|
+
)
|
|
9702
|
+
|
|
9703
|
+
function Bubble({
|
|
9704
|
+
variant = "default",
|
|
9705
|
+
align = "start",
|
|
9706
|
+
className,
|
|
9707
|
+
...props
|
|
9708
|
+
}: React.ComponentProps<"div"> &
|
|
9709
|
+
VariantProps<typeof bubbleVariants> & {
|
|
9710
|
+
align?: "start" | "end"
|
|
9711
|
+
}) {
|
|
9712
|
+
return (
|
|
9713
|
+
<div
|
|
9714
|
+
data-slot="bubble"
|
|
9715
|
+
data-variant={variant}
|
|
9716
|
+
data-align={align}
|
|
9717
|
+
className={cn(bubbleVariants({ variant }), className)}
|
|
9718
|
+
{...props}
|
|
9719
|
+
/>
|
|
9720
|
+
)
|
|
9721
|
+
}
|
|
9722
|
+
|
|
9723
|
+
function BubbleContent({
|
|
9724
|
+
className,
|
|
9725
|
+
render,
|
|
9726
|
+
...props
|
|
9727
|
+
}: useRender.ComponentProps<"div">) {
|
|
9728
|
+
return useRender({
|
|
9729
|
+
defaultTagName: "div",
|
|
9730
|
+
props: mergeProps<"div">(
|
|
9731
|
+
{
|
|
9732
|
+
className: cn(
|
|
9733
|
+
"w-fit max-w-full min-w-0 overflow-hidden rounded-xl border border-transparent px-3 py-2 text-sm leading-relaxed wrap-break-word group-data-[align=end]/bubble:self-end [button]:text-left [button,a]:transition-colors [button,a]:outline-none [button,a]:focus-visible:border-ring [button,a]:focus-visible:ring-3 [button,a]:focus-visible:ring-ring/50",
|
|
9734
|
+
className
|
|
9735
|
+
),
|
|
9736
|
+
},
|
|
9737
|
+
props
|
|
9738
|
+
),
|
|
9739
|
+
render,
|
|
9740
|
+
state: {
|
|
9741
|
+
slot: "bubble-content",
|
|
9742
|
+
},
|
|
9743
|
+
})
|
|
9744
|
+
}
|
|
9745
|
+
|
|
9746
|
+
const bubbleReactionsVariants = cva(
|
|
9747
|
+
"absolute z-10 flex w-fit shrink-0 items-center justify-center gap-1 rounded-full bg-muted px-1.5 py-0.5 text-sm ring-3 ring-card has-[button]:p-0",
|
|
9748
|
+
{
|
|
9749
|
+
variants: {
|
|
9750
|
+
side: {
|
|
9751
|
+
top: "top-0 -translate-y-3/4",
|
|
9752
|
+
bottom: "bottom-0 translate-y-3/4",
|
|
9753
|
+
},
|
|
9754
|
+
align: {
|
|
9755
|
+
start: "left-3",
|
|
9756
|
+
end: "right-3",
|
|
9757
|
+
},
|
|
9758
|
+
},
|
|
9759
|
+
defaultVariants: {
|
|
9760
|
+
side: "bottom",
|
|
9761
|
+
align: "end",
|
|
9762
|
+
},
|
|
9763
|
+
}
|
|
9764
|
+
)
|
|
9765
|
+
|
|
9766
|
+
function BubbleReactions({
|
|
9767
|
+
side = "bottom",
|
|
9768
|
+
align = "end",
|
|
9769
|
+
className,
|
|
9770
|
+
...props
|
|
9771
|
+
}: React.ComponentProps<"div"> & {
|
|
9772
|
+
align?: "start" | "end"
|
|
9773
|
+
side?: "top" | "bottom"
|
|
9774
|
+
}) {
|
|
9775
|
+
return (
|
|
9776
|
+
<div
|
|
9777
|
+
data-slot="bubble-reactions"
|
|
9778
|
+
data-align={align}
|
|
9779
|
+
data-side={side}
|
|
9780
|
+
className={cn(bubbleReactionsVariants({ side, align }), className)}
|
|
9781
|
+
{...props}
|
|
9782
|
+
/>
|
|
9783
|
+
)
|
|
9784
|
+
}
|
|
9785
|
+
|
|
9786
|
+
export { BubbleGroup, Bubble, BubbleContent, BubbleReactions }
|
|
9787
|
+
`
|
|
9788
|
+
};
|
|
9789
|
+
|
|
9790
|
+
// src/templates/shadcn-ui/templates/marker.ts
|
|
9791
|
+
var marker_default = {
|
|
9792
|
+
filename: "packages/ui/src/components/marker.tsx",
|
|
9793
|
+
template: `import * as React from "react"
|
|
9794
|
+
import { mergeProps } from "@base-ui/react/merge-props"
|
|
9795
|
+
import { useRender } from "@base-ui/react/use-render"
|
|
9796
|
+
import { cva, type VariantProps } from "class-variance-authority"
|
|
9797
|
+
|
|
9798
|
+
import { cn } from "@<%= projectName %>/ui/lib/utils"
|
|
9799
|
+
|
|
9800
|
+
const markerVariants = cva(
|
|
9801
|
+
"group/marker relative flex min-h-4 w-full items-center gap-2 text-left text-sm text-muted-foreground [&_svg:not([class*='size-'])]:size-4 [a]:underline [a]:underline-offset-3 [a]:hover:text-foreground",
|
|
9802
|
+
{
|
|
9803
|
+
variants: {
|
|
9804
|
+
variant: {
|
|
9805
|
+
default: "",
|
|
9806
|
+
separator:
|
|
9807
|
+
"before:mr-1 before:h-px before:min-w-0 before:flex-1 before:bg-border after:ml-1 after:h-px after:min-w-0 after:flex-1 after:bg-border",
|
|
9808
|
+
border: "border-b border-border pb-2",
|
|
9809
|
+
},
|
|
9810
|
+
},
|
|
9811
|
+
}
|
|
9812
|
+
)
|
|
9813
|
+
|
|
9814
|
+
function Marker({
|
|
9815
|
+
className,
|
|
9816
|
+
variant = "default",
|
|
9817
|
+
render,
|
|
9818
|
+
...props
|
|
9819
|
+
}: useRender.ComponentProps<"div"> & VariantProps<typeof markerVariants>) {
|
|
9820
|
+
return useRender({
|
|
9821
|
+
defaultTagName: "div",
|
|
9822
|
+
props: mergeProps<"div">(
|
|
9823
|
+
{
|
|
9824
|
+
className: cn(markerVariants({ variant, className })),
|
|
9825
|
+
},
|
|
9826
|
+
props
|
|
9827
|
+
),
|
|
9828
|
+
render,
|
|
9829
|
+
state: {
|
|
9830
|
+
slot: "marker",
|
|
9831
|
+
variant,
|
|
9832
|
+
},
|
|
9833
|
+
})
|
|
9834
|
+
}
|
|
9835
|
+
|
|
9836
|
+
function MarkerIcon({ className, ...props }: React.ComponentProps<"span">) {
|
|
9837
|
+
return (
|
|
9838
|
+
<span
|
|
9839
|
+
data-slot="marker-icon"
|
|
9840
|
+
aria-hidden="true"
|
|
9841
|
+
className={cn(
|
|
9842
|
+
"size-4 shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
9843
|
+
className
|
|
9844
|
+
)}
|
|
9845
|
+
{...props}
|
|
9846
|
+
/>
|
|
9847
|
+
)
|
|
9848
|
+
}
|
|
9849
|
+
|
|
9850
|
+
function MarkerContent({ className, ...props }: React.ComponentProps<"span">) {
|
|
9851
|
+
return (
|
|
9852
|
+
<span
|
|
9853
|
+
data-slot="marker-content"
|
|
9854
|
+
className={cn(
|
|
9855
|
+
"min-w-0 wrap-break-word group-data-[variant=separator]/marker:flex-none group-data-[variant=separator]/marker:text-center *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",
|
|
9856
|
+
className
|
|
9857
|
+
)}
|
|
9858
|
+
{...props}
|
|
9859
|
+
/>
|
|
9860
|
+
)
|
|
9861
|
+
}
|
|
9862
|
+
|
|
9863
|
+
export { Marker, MarkerIcon, MarkerContent, markerVariants }
|
|
9864
|
+
`
|
|
9865
|
+
};
|
|
9866
|
+
|
|
9867
|
+
// src/templates/shadcn-ui/templates/message.ts
|
|
9868
|
+
var message_default = {
|
|
9869
|
+
filename: "packages/ui/src/components/message.tsx",
|
|
9870
|
+
template: `import * as React from "react"
|
|
9871
|
+
|
|
9872
|
+
import { cn } from "@<%= projectName %>/ui/lib/utils"
|
|
9873
|
+
|
|
9874
|
+
function MessageGroup({ className, ...props }: React.ComponentProps<"div">) {
|
|
9875
|
+
return (
|
|
9876
|
+
<div
|
|
9877
|
+
data-slot="message-group"
|
|
9878
|
+
className={cn("flex min-w-0 flex-col gap-2", className)}
|
|
9879
|
+
{...props}
|
|
9880
|
+
/>
|
|
9881
|
+
)
|
|
9882
|
+
}
|
|
9883
|
+
|
|
9884
|
+
function Message({
|
|
9885
|
+
className,
|
|
9886
|
+
align = "start",
|
|
9887
|
+
...props
|
|
9888
|
+
}: React.ComponentProps<"div"> & { align?: "start" | "end" }) {
|
|
9889
|
+
return (
|
|
9890
|
+
<div
|
|
9891
|
+
data-slot="message"
|
|
9892
|
+
data-align={align}
|
|
9893
|
+
className={cn(
|
|
9894
|
+
"group/message relative flex w-full min-w-0 gap-2 text-sm data-[align=end]:flex-row-reverse",
|
|
9895
|
+
className
|
|
9896
|
+
)}
|
|
9897
|
+
{...props}
|
|
9898
|
+
/>
|
|
9899
|
+
)
|
|
9900
|
+
}
|
|
9901
|
+
|
|
9902
|
+
function MessageAvatar({ className, ...props }: React.ComponentProps<"div">) {
|
|
9903
|
+
return (
|
|
9904
|
+
<div
|
|
9905
|
+
data-slot="message-avatar"
|
|
9906
|
+
className={cn(
|
|
9907
|
+
"flex w-fit min-w-8 shrink-0 items-center justify-center self-end overflow-hidden rounded-full bg-muted group-has-data-[slot=message-footer]/message:-translate-y-8",
|
|
9908
|
+
className
|
|
9909
|
+
)}
|
|
9910
|
+
{...props}
|
|
9911
|
+
/>
|
|
9912
|
+
)
|
|
9913
|
+
}
|
|
9914
|
+
|
|
9915
|
+
function MessageContent({ className, ...props }: React.ComponentProps<"div">) {
|
|
9916
|
+
return (
|
|
9917
|
+
<div
|
|
9918
|
+
data-slot="message-content"
|
|
9919
|
+
className={cn(
|
|
9920
|
+
"flex w-full min-w-0 flex-col gap-2.5 wrap-break-word group-data-[align=end]/message:*:data-slot:self-end",
|
|
9921
|
+
className
|
|
9922
|
+
)}
|
|
9923
|
+
{...props}
|
|
9924
|
+
/>
|
|
9925
|
+
)
|
|
9926
|
+
}
|
|
9927
|
+
|
|
9928
|
+
function MessageHeader({ className, ...props }: React.ComponentProps<"div">) {
|
|
9929
|
+
return (
|
|
9930
|
+
<div
|
|
9931
|
+
data-slot="message-header"
|
|
9932
|
+
className={cn(
|
|
9933
|
+
"flex max-w-full min-w-0 items-center px-3 text-xs font-medium text-muted-foreground group-has-data-[variant=ghost]/message:px-0",
|
|
9934
|
+
className
|
|
9935
|
+
)}
|
|
9936
|
+
{...props}
|
|
9937
|
+
/>
|
|
9938
|
+
)
|
|
9939
|
+
}
|
|
9940
|
+
|
|
9941
|
+
function MessageFooter({ className, ...props }: React.ComponentProps<"div">) {
|
|
9942
|
+
return (
|
|
9943
|
+
<div
|
|
9944
|
+
data-slot="message-footer"
|
|
9945
|
+
className={cn(
|
|
9946
|
+
"flex max-w-full min-w-0 items-center px-3 text-xs font-medium text-muted-foreground group-has-data-[variant=ghost]/message:px-0 group-data-[align=end]/message:justify-end",
|
|
9947
|
+
className
|
|
9948
|
+
)}
|
|
9949
|
+
{...props}
|
|
9950
|
+
/>
|
|
9951
|
+
)
|
|
9952
|
+
}
|
|
9953
|
+
|
|
9954
|
+
export {
|
|
9955
|
+
MessageGroup,
|
|
9956
|
+
Message,
|
|
9957
|
+
MessageAvatar,
|
|
9958
|
+
MessageContent,
|
|
9959
|
+
MessageFooter,
|
|
9960
|
+
MessageHeader,
|
|
9961
|
+
}
|
|
9962
|
+
`
|
|
9963
|
+
};
|
|
9964
|
+
|
|
9965
|
+
// src/templates/shadcn-ui/templates/message-scroller.ts
|
|
9966
|
+
var message_scroller_default = {
|
|
9967
|
+
filename: "packages/ui/src/components/message-scroller.tsx",
|
|
9968
|
+
template: `"use client"
|
|
9969
|
+
|
|
9970
|
+
import * as React from "react"
|
|
9971
|
+
import {
|
|
9972
|
+
MessageScroller as MessageScrollerPrimitive,
|
|
9973
|
+
useMessageScroller,
|
|
9974
|
+
useMessageScrollerScrollable,
|
|
9975
|
+
useMessageScrollerVisibility,
|
|
9976
|
+
} from "@shadcn/react/message-scroller"
|
|
9977
|
+
|
|
9978
|
+
import { cn } from "@<%= projectName %>/ui/lib/utils"
|
|
9979
|
+
import { Button } from "@<%= projectName %>/ui/components/button"
|
|
9980
|
+
import { ArrowDownIcon } from "lucide-react"
|
|
9981
|
+
|
|
9982
|
+
function MessageScrollerProvider(
|
|
9983
|
+
props: React.ComponentProps<typeof MessageScrollerPrimitive.Provider>
|
|
9984
|
+
) {
|
|
9985
|
+
return <MessageScrollerPrimitive.Provider {...props} />
|
|
9986
|
+
}
|
|
9987
|
+
|
|
9988
|
+
function MessageScroller({
|
|
9989
|
+
className,
|
|
9990
|
+
...props
|
|
9991
|
+
}: React.ComponentProps<typeof MessageScrollerPrimitive.Root>) {
|
|
9992
|
+
return (
|
|
9993
|
+
<MessageScrollerPrimitive.Root
|
|
9994
|
+
data-slot="message-scroller"
|
|
9995
|
+
className={cn(
|
|
9996
|
+
"group/message-scroller relative flex size-full min-h-0 flex-col overflow-hidden",
|
|
9997
|
+
className
|
|
9998
|
+
)}
|
|
9999
|
+
{...props}
|
|
10000
|
+
/>
|
|
10001
|
+
)
|
|
10002
|
+
}
|
|
10003
|
+
|
|
10004
|
+
function MessageScrollerViewport({
|
|
10005
|
+
className,
|
|
10006
|
+
...props
|
|
10007
|
+
}: React.ComponentProps<typeof MessageScrollerPrimitive.Viewport>) {
|
|
10008
|
+
return (
|
|
10009
|
+
<MessageScrollerPrimitive.Viewport
|
|
10010
|
+
data-slot="message-scroller-viewport"
|
|
10011
|
+
className={cn(
|
|
10012
|
+
"size-full min-h-0 min-w-0 scroll-fade-b scrollbar-thin scrollbar-gutter-stable overflow-y-auto overscroll-contain contain-content data-autoscrolling:scrollbar-thumb-transparent data-autoscrolling:scrollbar-track-transparent",
|
|
10013
|
+
className
|
|
10014
|
+
)}
|
|
10015
|
+
{...props}
|
|
10016
|
+
/>
|
|
10017
|
+
)
|
|
10018
|
+
}
|
|
10019
|
+
|
|
10020
|
+
function MessageScrollerContent({
|
|
10021
|
+
className,
|
|
10022
|
+
...props
|
|
10023
|
+
}: React.ComponentProps<typeof MessageScrollerPrimitive.Content>) {
|
|
10024
|
+
return (
|
|
10025
|
+
<MessageScrollerPrimitive.Content
|
|
10026
|
+
data-slot="message-scroller-content"
|
|
10027
|
+
className={cn("flex h-max min-h-full flex-col gap-6", className)}
|
|
10028
|
+
{...props}
|
|
10029
|
+
/>
|
|
10030
|
+
)
|
|
10031
|
+
}
|
|
10032
|
+
|
|
10033
|
+
function MessageScrollerItem({
|
|
10034
|
+
className,
|
|
10035
|
+
scrollAnchor = false,
|
|
10036
|
+
...props
|
|
10037
|
+
}: React.ComponentProps<typeof MessageScrollerPrimitive.Item>) {
|
|
10038
|
+
return (
|
|
10039
|
+
<MessageScrollerPrimitive.Item
|
|
10040
|
+
data-slot="message-scroller-item"
|
|
10041
|
+
scrollAnchor={scrollAnchor}
|
|
10042
|
+
className={cn(
|
|
10043
|
+
"min-w-0 shrink-0 [contain-intrinsic-size:auto_10rem] [content-visibility:auto]",
|
|
10044
|
+
className
|
|
10045
|
+
)}
|
|
10046
|
+
{...props}
|
|
10047
|
+
/>
|
|
10048
|
+
)
|
|
10049
|
+
}
|
|
10050
|
+
|
|
10051
|
+
function MessageScrollerButton({
|
|
10052
|
+
direction = "end",
|
|
10053
|
+
className,
|
|
10054
|
+
children,
|
|
10055
|
+
render,
|
|
10056
|
+
variant = "secondary",
|
|
10057
|
+
size = "icon-sm",
|
|
10058
|
+
...props
|
|
10059
|
+
}: React.ComponentProps<typeof MessageScrollerPrimitive.Button> &
|
|
10060
|
+
Pick<React.ComponentProps<typeof Button>, "variant" | "size">) {
|
|
10061
|
+
return (
|
|
10062
|
+
<MessageScrollerPrimitive.Button
|
|
10063
|
+
data-slot="message-scroller-button"
|
|
10064
|
+
data-direction={direction}
|
|
10065
|
+
data-variant={variant}
|
|
10066
|
+
data-size={size}
|
|
10067
|
+
direction={direction}
|
|
10068
|
+
className={cn(
|
|
10069
|
+
"absolute inset-s-1/2 -translate-x-1/2 border-border bg-background text-foreground transition-[translate,scale,opacity] duration-200 hover:bg-muted hover:text-foreground data-[active=false]:pointer-events-none data-[active=false]:scale-95 data-[active=false]:opacity-0 data-[active=false]:duration-400 data-[active=false]:ease-[cubic-bezier(0.7,0,0.84,0)] data-[active=true]:translate-y-0 data-[active=true]:scale-100 data-[active=true]:opacity-100 data-[active=true]:ease-[cubic-bezier(0.23,1,0.32,1)] data-[direction=end]:bottom-4 data-[direction=end]:data-[active=false]:translate-y-full data-[direction=start]:top-4 data-[direction=start]:data-[active=false]:-translate-y-full rtl:translate-x-1/2 data-[direction=start]:[&_svg]:rotate-180",
|
|
10070
|
+
className
|
|
10071
|
+
)}
|
|
10072
|
+
render={render ?? <Button variant={variant} size={size} />}
|
|
10073
|
+
{...props}
|
|
10074
|
+
>
|
|
10075
|
+
{children ?? (
|
|
10076
|
+
<>
|
|
10077
|
+
<ArrowDownIcon
|
|
10078
|
+
/>
|
|
10079
|
+
<span className="sr-only">
|
|
10080
|
+
{direction === "end" ? "Scroll to end" : "Scroll to start"}
|
|
10081
|
+
</span>
|
|
10082
|
+
</>
|
|
10083
|
+
)}
|
|
10084
|
+
</MessageScrollerPrimitive.Button>
|
|
10085
|
+
)
|
|
10086
|
+
}
|
|
10087
|
+
|
|
10088
|
+
export {
|
|
10089
|
+
MessageScrollerProvider,
|
|
10090
|
+
MessageScroller,
|
|
10091
|
+
MessageScrollerViewport,
|
|
10092
|
+
MessageScrollerContent,
|
|
10093
|
+
MessageScrollerItem,
|
|
10094
|
+
MessageScrollerButton,
|
|
10095
|
+
useMessageScroller,
|
|
10096
|
+
useMessageScrollerScrollable,
|
|
10097
|
+
useMessageScrollerVisibility,
|
|
10098
|
+
}
|
|
10099
|
+
`
|
|
10100
|
+
};
|
|
10101
|
+
|
|
9366
10102
|
// src/templates/shadcn-ui/index.ts
|
|
9367
10103
|
var shadcnUi = {
|
|
9368
10104
|
templates: [
|
|
@@ -9434,12 +10170,17 @@ var shadcnUi = {
|
|
|
9434
10170
|
toggle_default,
|
|
9435
10171
|
tooltip_default,
|
|
9436
10172
|
mode_toggle_default,
|
|
10173
|
+
attachment_default,
|
|
10174
|
+
bubble_default,
|
|
10175
|
+
marker_default,
|
|
10176
|
+
message_default,
|
|
10177
|
+
message_scroller_default,
|
|
9437
10178
|
components_json_default,
|
|
9438
10179
|
web_components_json_default
|
|
9439
10180
|
],
|
|
9440
10181
|
packages: [
|
|
9441
|
-
{ package: "next-themes", module: "apps/web", version: "
|
|
9442
|
-
{ package: "sonner", module: "apps/web", version:
|
|
10182
|
+
{ package: "next-themes", module: "apps/web", version: versions["next-themes"] },
|
|
10183
|
+
{ package: "sonner", module: "apps/web", version: versions.sonner }
|
|
9443
10184
|
]
|
|
9444
10185
|
};
|
|
9445
10186
|
var shadcn_ui_default = shadcnUi;
|
|
@@ -9458,17 +10199,17 @@ var package_json_default7 = {
|
|
|
9458
10199
|
"./react-internal": "./react-internal.js"
|
|
9459
10200
|
},
|
|
9460
10201
|
"devDependencies": {
|
|
9461
|
-
"@eslint/js": "
|
|
9462
|
-
"@next/eslint-plugin-next": "
|
|
9463
|
-
"eslint": "
|
|
9464
|
-
"eslint-config-prettier": "
|
|
9465
|
-
"eslint-plugin-only-warn": "
|
|
9466
|
-
"eslint-plugin-react": "
|
|
9467
|
-
"eslint-plugin-react-hooks": "
|
|
9468
|
-
"eslint-plugin-turbo": "
|
|
9469
|
-
"globals": "
|
|
9470
|
-
"typescript": "
|
|
9471
|
-
"typescript-eslint": "
|
|
10202
|
+
"@eslint/js": "<%= versions["@eslint/js"] %>",
|
|
10203
|
+
"@next/eslint-plugin-next": "<%= versions["@next/eslint-plugin-next"] %>",
|
|
10204
|
+
"eslint": "<%= versions.eslint %>",
|
|
10205
|
+
"eslint-config-prettier": "<%= versions["eslint-config-prettier"] %>",
|
|
10206
|
+
"eslint-plugin-only-warn": "<%= versions["eslint-plugin-only-warn"] %>",
|
|
10207
|
+
"eslint-plugin-react": "<%= versions["eslint-plugin-react"] %>",
|
|
10208
|
+
"eslint-plugin-react-hooks": "<%= versions["eslint-plugin-react-hooks"] %>",
|
|
10209
|
+
"eslint-plugin-turbo": "<%= versions["eslint-plugin-turbo"] %>",
|
|
10210
|
+
"globals": "<%= versions.globals %>",
|
|
10211
|
+
"typescript": "<%= versions.typescript %>",
|
|
10212
|
+
"typescript-eslint": "<%= versions["typescript-eslint"] %>"
|
|
9472
10213
|
}
|
|
9473
10214
|
}`
|
|
9474
10215
|
};
|
|
@@ -9674,25 +10415,34 @@ var eslint_config_default3 = {
|
|
|
9674
10415
|
export default config;`
|
|
9675
10416
|
};
|
|
9676
10417
|
|
|
10418
|
+
// src/templates/root/templates/prettierrc.ts
|
|
10419
|
+
var prettierrc_default = {
|
|
10420
|
+
filename: ".prettierrc",
|
|
10421
|
+
template: `{
|
|
10422
|
+
"singleQuote": true,
|
|
10423
|
+
"trailingComma": "all"
|
|
10424
|
+
}`
|
|
10425
|
+
};
|
|
10426
|
+
|
|
9677
10427
|
// src/templates/eslint-config/index.ts
|
|
9678
10428
|
var web2 = "apps/web";
|
|
9679
10429
|
var api2 = "apps/api";
|
|
9680
10430
|
var ui2 = "packages/ui";
|
|
9681
10431
|
var root2 = "";
|
|
9682
10432
|
var eslintConfig = {
|
|
9683
|
-
templates: [package_json_default7, base_default, next_default, react_internal_default, eslint_config_default, eslint_config_default2, eslint_config_default3],
|
|
10433
|
+
templates: [package_json_default7, base_default, next_default, react_internal_default, eslint_config_default, eslint_config_default2, eslint_config_default3, prettierrc_default],
|
|
9684
10434
|
packages: [
|
|
9685
|
-
{ package: "eslint", module: web2, version:
|
|
10435
|
+
{ package: "eslint", module: web2, version: versions.eslint, dev: true },
|
|
9686
10436
|
{ package: "@<%= projectName %>/eslint-config", module: web2, version: "workspace:*", dev: true },
|
|
9687
|
-
{ package: "@eslint/eslintrc", module: api2, version: "
|
|
9688
|
-
{ package: "@eslint/js", module: api2, version: "
|
|
9689
|
-
{ package: "eslint", module: api2, version:
|
|
9690
|
-
{ package: "eslint-config-prettier", module: api2, version: "
|
|
9691
|
-
{ package: "globals", module: api2, version:
|
|
9692
|
-
{ package: "typescript-eslint", module: api2, version: "
|
|
9693
|
-
{ package: "eslint", module: ui2, version:
|
|
10437
|
+
{ package: "@eslint/eslintrc", module: api2, version: versions["@eslint/eslintrc"], dev: true },
|
|
10438
|
+
{ package: "@eslint/js", module: api2, version: versions["@eslint/js"], dev: true },
|
|
10439
|
+
{ package: "eslint", module: api2, version: versions.eslint, dev: true },
|
|
10440
|
+
{ package: "eslint-config-prettier", module: api2, version: versions["eslint-config-prettier"], dev: true },
|
|
10441
|
+
{ package: "globals", module: api2, version: versions.globals, dev: true },
|
|
10442
|
+
{ package: "typescript-eslint", module: api2, version: versions["typescript-eslint"], dev: true },
|
|
10443
|
+
{ package: "eslint", module: ui2, version: versions.eslint, dev: true },
|
|
9694
10444
|
{ package: "@<%= projectName %>/eslint-config", module: ui2, version: "workspace:*", dev: true },
|
|
9695
|
-
{ package: "prettier", module: root2, version:
|
|
10445
|
+
{ package: "prettier", module: root2, version: versions.prettier, dev: true }
|
|
9696
10446
|
],
|
|
9697
10447
|
scripts: [
|
|
9698
10448
|
{ module: web2, name: "lint", script: "eslint --fix && next typegen && tsc --noEmit" },
|
|
@@ -9735,10 +10485,10 @@ var root3 = "";
|
|
|
9735
10485
|
var oxc = {
|
|
9736
10486
|
templates: [oxlintrc_default, oxfmtrc_default],
|
|
9737
10487
|
packages: [
|
|
9738
|
-
{ package: "oxlint", module: web3, version:
|
|
9739
|
-
{ package: "oxlint", module: api3, version:
|
|
9740
|
-
{ package: "oxlint", module: ui3, version:
|
|
9741
|
-
{ package: "oxfmt", module: root3, version:
|
|
10488
|
+
{ package: "oxlint", module: web3, version: versions.oxlint, dev: true },
|
|
10489
|
+
{ package: "oxlint", module: api3, version: versions.oxlint, dev: true },
|
|
10490
|
+
{ package: "oxlint", module: ui3, version: versions.oxlint, dev: true },
|
|
10491
|
+
{ package: "oxfmt", module: root3, version: versions.oxfmt, dev: true }
|
|
9742
10492
|
],
|
|
9743
10493
|
scripts: [
|
|
9744
10494
|
{ module: web3, name: "lint", script: "oxlint --fix && next typegen && tsc --noEmit" },
|
|
@@ -9911,11 +10661,11 @@ module.exports = {
|
|
|
9911
10661
|
var testingJest = {
|
|
9912
10662
|
templates: [jest_config_default, jest_e2e_config_default, e2e_spec_default, nestjs_better_auth_mock_default],
|
|
9913
10663
|
packages: [
|
|
9914
|
-
{ package: "jest", module: "apps/api", version:
|
|
9915
|
-
{ package: "ts-jest", module: "apps/api", version: "
|
|
9916
|
-
{ package: "@types/jest", module: "apps/api", version: "
|
|
9917
|
-
{ package: "ts-loader", module: "apps/api", version: "
|
|
9918
|
-
{ package: "source-map-support", module: "apps/api", version: "
|
|
10664
|
+
{ package: "jest", module: "apps/api", version: versions.jest, dev: true },
|
|
10665
|
+
{ package: "ts-jest", module: "apps/api", version: versions["ts-jest"], dev: true },
|
|
10666
|
+
{ package: "@types/jest", module: "apps/api", version: versions["@types/jest"], dev: true },
|
|
10667
|
+
{ package: "ts-loader", module: "apps/api", version: versions["ts-loader"], dev: true },
|
|
10668
|
+
{ package: "source-map-support", module: "apps/api", version: versions["source-map-support"], dev: true }
|
|
9919
10669
|
],
|
|
9920
10670
|
scripts: [
|
|
9921
10671
|
{ module: "apps/api", name: "test", script: "jest" },
|
|
@@ -9997,10 +10747,10 @@ describe('AppController (e2e)', () => {
|
|
|
9997
10747
|
var testingVitest = {
|
|
9998
10748
|
templates: [vitest_config_default, vitest_config_e2e_default, e2e_spec_default2],
|
|
9999
10749
|
packages: [
|
|
10000
|
-
{ package: "vitest", module: "apps/api", version:
|
|
10001
|
-
{ package: "@vitest/coverage-v8", module: "apps/api", version: "
|
|
10002
|
-
{ package: "unplugin-swc", module: "apps/api", version: "
|
|
10003
|
-
{ package: "@swc/core", module: "apps/api", version: "
|
|
10750
|
+
{ package: "vitest", module: "apps/api", version: versions.vitest, dev: true },
|
|
10751
|
+
{ package: "@vitest/coverage-v8", module: "apps/api", version: versions["@vitest/coverage-v8"], dev: true },
|
|
10752
|
+
{ package: "unplugin-swc", module: "apps/api", version: versions["unplugin-swc"], dev: true },
|
|
10753
|
+
{ package: "@swc/core", module: "apps/api", version: versions["@swc/core"], dev: true }
|
|
10004
10754
|
],
|
|
10005
10755
|
scripts: [
|
|
10006
10756
|
{ module: "apps/api", name: "test", script: "vitest run" },
|
|
@@ -10212,27 +10962,27 @@ var api_package_json_default = {
|
|
|
10212
10962
|
"start:prod": "node dist/main"
|
|
10213
10963
|
},
|
|
10214
10964
|
"dependencies": {
|
|
10215
|
-
"@nestjs/common": "
|
|
10216
|
-
"@nestjs/core": "
|
|
10217
|
-
"@nestjs/platform-express": "
|
|
10965
|
+
"@nestjs/common": "<%= versions["@nestjs/common"] %>",
|
|
10966
|
+
"@nestjs/core": "<%= versions["@nestjs/core"] %>",
|
|
10967
|
+
"@nestjs/platform-express": "<%= versions["@nestjs/platform-express"] %>",
|
|
10218
10968
|
"@<%= projectName %>/auth": "workspace:*",
|
|
10219
10969
|
"@<%= projectName %>/db": "workspace:*",
|
|
10220
|
-
"@thallesp/nestjs-better-auth": "
|
|
10221
|
-
"dotenv": "
|
|
10222
|
-
"reflect-metadata": "
|
|
10223
|
-
"rxjs": "
|
|
10970
|
+
"@thallesp/nestjs-better-auth": "<%= versions["@thallesp/nestjs-better-auth"] %>",
|
|
10971
|
+
"dotenv": "<%= versions.dotenv %>",
|
|
10972
|
+
"reflect-metadata": "<%= versions["reflect-metadata"] %>",
|
|
10973
|
+
"rxjs": "<%= versions.rxjs %>"
|
|
10224
10974
|
},
|
|
10225
10975
|
"devDependencies": {
|
|
10226
|
-
"@nestjs/cli": "
|
|
10227
|
-
"@nestjs/schematics": "
|
|
10228
|
-
"@nestjs/testing": "
|
|
10229
|
-
"@types/express": "
|
|
10230
|
-
"@types/node": "
|
|
10231
|
-
"@types/supertest": "
|
|
10232
|
-
"supertest": "
|
|
10233
|
-
"ts-node": "
|
|
10234
|
-
"tsconfig-paths": "
|
|
10235
|
-
"typescript": "
|
|
10976
|
+
"@nestjs/cli": "<%= versions["@nestjs/cli"] %>",
|
|
10977
|
+
"@nestjs/schematics": "<%= versions["@nestjs/schematics"] %>",
|
|
10978
|
+
"@nestjs/testing": "<%= versions["@nestjs/testing"] %>",
|
|
10979
|
+
"@types/express": "<%= versions["@types/express"] %>",
|
|
10980
|
+
"@types/node": "<%= versions["@types/node"] %>",
|
|
10981
|
+
"@types/supertest": "<%= versions["@types/supertest"] %>",
|
|
10982
|
+
"supertest": "<%= versions.supertest %>",
|
|
10983
|
+
"ts-node": "<%= versions["ts-node"] %>",
|
|
10984
|
+
"tsconfig-paths": "<%= versions["tsconfig-paths"] %>",
|
|
10985
|
+
"typescript": "<%= versions.typescript %>"
|
|
10236
10986
|
}
|
|
10237
10987
|
}`
|
|
10238
10988
|
};
|
|
@@ -10311,25 +11061,25 @@ var web_package_json_default = {
|
|
|
10311
11061
|
"@<%= projectName %>/api": "workspace:*",
|
|
10312
11062
|
"@<%= projectName %>/auth": "workspace:*",
|
|
10313
11063
|
"@<%= projectName %>/ui": "workspace:*",
|
|
10314
|
-
"@nestjs/core": "
|
|
10315
|
-
"@tailwindcss/postcss": "
|
|
10316
|
-
"dotenv": "
|
|
10317
|
-
"@tanstack/react-form": "
|
|
10318
|
-
"@tanstack/react-query": "
|
|
10319
|
-
"better-auth": "
|
|
10320
|
-
"next": "
|
|
10321
|
-
"react": "
|
|
10322
|
-
"react-dom": "
|
|
10323
|
-
"reflect-metadata": "
|
|
10324
|
-
"tailwindcss": "
|
|
11064
|
+
"@nestjs/core": "<%= versions["@nestjs/core"] %>",
|
|
11065
|
+
"@tailwindcss/postcss": "<%= versions["@tailwindcss/postcss"] %>",
|
|
11066
|
+
"dotenv": "<%= versions.dotenv %>",
|
|
11067
|
+
"@tanstack/react-form": "<%= versions["@tanstack/react-form"] %>",
|
|
11068
|
+
"@tanstack/react-query": "<%= versions["@tanstack/react-query"] %>",
|
|
11069
|
+
"better-auth": "<%= versions["better-auth"] %>",
|
|
11070
|
+
"next": "<%= versions.next %>",
|
|
11071
|
+
"react": "<%= versions.react %>",
|
|
11072
|
+
"react-dom": "<%= versions["react-dom"] %>",
|
|
11073
|
+
"reflect-metadata": "<%= versions["reflect-metadata"] %>",
|
|
11074
|
+
"tailwindcss": "<%= versions.tailwindcss %>"
|
|
10325
11075
|
},
|
|
10326
11076
|
"devDependencies": {
|
|
10327
11077
|
"@<%= projectName %>/typescript-config": "workspace:*",
|
|
10328
|
-
"@types/node": "
|
|
10329
|
-
"@types/react": "
|
|
10330
|
-
"@types/react-dom": "
|
|
10331
|
-
"tsx": "
|
|
10332
|
-
"typescript": "
|
|
11078
|
+
"@types/node": "<%= versions["@types/node"] %>",
|
|
11079
|
+
"@types/react": "<%= versions["@types/react"] %>",
|
|
11080
|
+
"@types/react-dom": "<%= versions["@types/react-dom"] %>",
|
|
11081
|
+
"tsx": "<%= versions.tsx %>",
|
|
11082
|
+
"typescript": "<%= versions.typescript %>"
|
|
10333
11083
|
}
|
|
10334
11084
|
}`
|
|
10335
11085
|
};
|
|
@@ -10472,28 +11222,28 @@ var api_package_json_default2 = {
|
|
|
10472
11222
|
"start:prod": "node dist/main"
|
|
10473
11223
|
},
|
|
10474
11224
|
"dependencies": {
|
|
10475
|
-
"@nestjs/common": "
|
|
10476
|
-
"@nestjs/core": "
|
|
10477
|
-
"@nestjs/platform-express": "
|
|
10478
|
-
"@nestjs/serve-static": "
|
|
11225
|
+
"@nestjs/common": "<%= versions["@nestjs/common"] %>",
|
|
11226
|
+
"@nestjs/core": "<%= versions["@nestjs/core"] %>",
|
|
11227
|
+
"@nestjs/platform-express": "<%= versions["@nestjs/platform-express"] %>",
|
|
11228
|
+
"@nestjs/serve-static": "<%= versions["@nestjs/serve-static"] %>",
|
|
10479
11229
|
"@<%= projectName %>/auth": "workspace:*",
|
|
10480
11230
|
"@<%= projectName %>/db": "workspace:*",
|
|
10481
|
-
"@thallesp/nestjs-better-auth": "
|
|
10482
|
-
"dotenv": "
|
|
10483
|
-
"reflect-metadata": "
|
|
10484
|
-
"rxjs": "
|
|
11231
|
+
"@thallesp/nestjs-better-auth": "<%= versions["@thallesp/nestjs-better-auth"] %>",
|
|
11232
|
+
"dotenv": "<%= versions.dotenv %>",
|
|
11233
|
+
"reflect-metadata": "<%= versions["reflect-metadata"] %>",
|
|
11234
|
+
"rxjs": "<%= versions.rxjs %>"
|
|
10485
11235
|
},
|
|
10486
11236
|
"devDependencies": {
|
|
10487
|
-
"@nestjs/cli": "
|
|
10488
|
-
"@nestjs/schematics": "
|
|
10489
|
-
"@nestjs/testing": "
|
|
10490
|
-
"@types/express": "
|
|
10491
|
-
"@types/node": "
|
|
10492
|
-
"@types/supertest": "
|
|
10493
|
-
"supertest": "
|
|
10494
|
-
"ts-node": "
|
|
10495
|
-
"tsconfig-paths": "
|
|
10496
|
-
"typescript": "
|
|
11237
|
+
"@nestjs/cli": "<%= versions["@nestjs/cli"] %>",
|
|
11238
|
+
"@nestjs/schematics": "<%= versions["@nestjs/schematics"] %>",
|
|
11239
|
+
"@nestjs/testing": "<%= versions["@nestjs/testing"] %>",
|
|
11240
|
+
"@types/express": "<%= versions["@types/express"] %>",
|
|
11241
|
+
"@types/node": "<%= versions["@types/node"] %>",
|
|
11242
|
+
"@types/supertest": "<%= versions["@types/supertest"] %>",
|
|
11243
|
+
"supertest": "<%= versions.supertest %>",
|
|
11244
|
+
"ts-node": "<%= versions["ts-node"] %>",
|
|
11245
|
+
"tsconfig-paths": "<%= versions["tsconfig-paths"] %>",
|
|
11246
|
+
"typescript": "<%= versions.typescript %>"
|
|
10497
11247
|
}
|
|
10498
11248
|
}`
|
|
10499
11249
|
};
|
|
@@ -10555,23 +11305,23 @@ var api_package_json_default3 = {
|
|
|
10555
11305
|
"build": "nest build"
|
|
10556
11306
|
},
|
|
10557
11307
|
"dependencies": {
|
|
10558
|
-
"@nestjs/common": "
|
|
10559
|
-
"@nestjs/core": "
|
|
11308
|
+
"@nestjs/common": "<%= versions["@nestjs/common"] %>",
|
|
11309
|
+
"@nestjs/core": "<%= versions["@nestjs/core"] %>",
|
|
10560
11310
|
"@<%= projectName %>/auth": "workspace:*",
|
|
10561
11311
|
"@<%= projectName %>/db": "workspace:*",
|
|
10562
|
-
"@thallesp/nestjs-better-auth": "
|
|
10563
|
-
"dotenv": "
|
|
10564
|
-
"reflect-metadata": "
|
|
10565
|
-
"rxjs": "
|
|
11312
|
+
"@thallesp/nestjs-better-auth": "<%= versions["@thallesp/nestjs-better-auth"] %>",
|
|
11313
|
+
"dotenv": "<%= versions.dotenv %>",
|
|
11314
|
+
"reflect-metadata": "<%= versions["reflect-metadata"] %>",
|
|
11315
|
+
"rxjs": "<%= versions.rxjs %>"
|
|
10566
11316
|
},
|
|
10567
11317
|
"devDependencies": {
|
|
10568
|
-
"@nestjs/cli": "
|
|
10569
|
-
"@nestjs/schematics": "
|
|
10570
|
-
"@nestjs/testing": "
|
|
10571
|
-
"@types/node": "
|
|
10572
|
-
"ts-node": "
|
|
10573
|
-
"tsconfig-paths": "
|
|
10574
|
-
"typescript": "
|
|
11318
|
+
"@nestjs/cli": "<%= versions["@nestjs/cli"] %>",
|
|
11319
|
+
"@nestjs/schematics": "<%= versions["@nestjs/schematics"] %>",
|
|
11320
|
+
"@nestjs/testing": "<%= versions["@nestjs/testing"] %>",
|
|
11321
|
+
"@types/node": "<%= versions["@types/node"] %>",
|
|
11322
|
+
"ts-node": "<%= versions["ts-node"] %>",
|
|
11323
|
+
"tsconfig-paths": "<%= versions["tsconfig-paths"] %>",
|
|
11324
|
+
"typescript": "<%= versions.typescript %>"
|
|
10575
11325
|
}
|
|
10576
11326
|
}`
|
|
10577
11327
|
};
|
|
@@ -10660,25 +11410,25 @@ var web_package_json_default2 = {
|
|
|
10660
11410
|
"@<%= projectName %>/auth": "workspace:*",
|
|
10661
11411
|
"@<%= projectName %>/db": "workspace:*",
|
|
10662
11412
|
"@<%= projectName %>/ui": "workspace:*",
|
|
10663
|
-
"@nestjs/common": "
|
|
10664
|
-
"@nestjs/core": "
|
|
10665
|
-
"reflect-metadata": "
|
|
10666
|
-
"@tailwindcss/postcss": "
|
|
10667
|
-
"dotenv": "
|
|
10668
|
-
"@tanstack/react-form": "
|
|
10669
|
-
"@tanstack/react-query": "
|
|
10670
|
-
"better-auth": "
|
|
10671
|
-
"next": "
|
|
10672
|
-
"react": "
|
|
10673
|
-
"react-dom": "
|
|
10674
|
-
"tailwindcss": "
|
|
11413
|
+
"@nestjs/common": "<%= versions["@nestjs/common"] %>",
|
|
11414
|
+
"@nestjs/core": "<%= versions["@nestjs/core"] %>",
|
|
11415
|
+
"reflect-metadata": "<%= versions["reflect-metadata"] %>",
|
|
11416
|
+
"@tailwindcss/postcss": "<%= versions["@tailwindcss/postcss"] %>",
|
|
11417
|
+
"dotenv": "<%= versions.dotenv %>",
|
|
11418
|
+
"@tanstack/react-form": "<%= versions["@tanstack/react-form"] %>",
|
|
11419
|
+
"@tanstack/react-query": "<%= versions["@tanstack/react-query"] %>",
|
|
11420
|
+
"better-auth": "<%= versions["better-auth"] %>",
|
|
11421
|
+
"next": "<%= versions.next %>",
|
|
11422
|
+
"react": "<%= versions.react %>",
|
|
11423
|
+
"react-dom": "<%= versions["react-dom"] %>",
|
|
11424
|
+
"tailwindcss": "<%= versions.tailwindcss %>"
|
|
10675
11425
|
},
|
|
10676
11426
|
"devDependencies": {
|
|
10677
11427
|
"@<%= projectName %>/typescript-config": "workspace:*",
|
|
10678
|
-
"@types/node": "
|
|
10679
|
-
"@types/react": "
|
|
10680
|
-
"@types/react-dom": "
|
|
10681
|
-
"typescript": "
|
|
11428
|
+
"@types/node": "<%= versions["@types/node"] %>",
|
|
11429
|
+
"@types/react": "<%= versions["@types/react"] %>",
|
|
11430
|
+
"@types/react-dom": "<%= versions["@types/react-dom"] %>",
|
|
11431
|
+
"typescript": "<%= versions.typescript %>"
|
|
10682
11432
|
}
|
|
10683
11433
|
}`
|
|
10684
11434
|
};
|
|
@@ -11900,32 +12650,37 @@ var staticDirPath = fileURLToPath(staticDir);
|
|
|
11900
12650
|
function getStaticFilePath(name) {
|
|
11901
12651
|
return fileURLToPath(new URL(`./static/${name}`, import.meta.url));
|
|
11902
12652
|
}
|
|
11903
|
-
|
|
11904
|
-
|
|
11905
|
-
|
|
11906
|
-
|
|
11907
|
-
|
|
11908
|
-
|
|
11909
|
-
|
|
11910
|
-
|
|
11911
|
-
|
|
11912
|
-
|
|
11913
|
-
|
|
11914
|
-
|
|
11915
|
-
|
|
11916
|
-
|
|
11917
|
-
|
|
11918
|
-
|
|
11919
|
-
|
|
11920
|
-
|
|
11921
|
-
|
|
11922
|
-
|
|
11923
|
-
|
|
11924
|
-
|
|
11925
|
-
|
|
11926
|
-
|
|
11927
|
-
|
|
11928
|
-
|
|
12653
|
+
function selectModules(selection) {
|
|
12654
|
+
const { deployment, nestDiOnly: nestDiOnly2, todoExample, shadcn, database, linter, testing } = selection;
|
|
12655
|
+
const deploymentModule = deployment === "standalone" ? deployment_standalone_default : deployment === "custom-server" ? single_process_custom_server_default : deployment === "spa" ? single_process_static_export_default : null;
|
|
12656
|
+
const webModule = deployment === "spa" ? {
|
|
12657
|
+
...web_default,
|
|
12658
|
+
templates: web_default.templates.filter(
|
|
12659
|
+
(t) => t.filename !== "apps/web/app/api/auth/[...all]/route.ts"
|
|
12660
|
+
)
|
|
12661
|
+
} : web_default;
|
|
12662
|
+
return [
|
|
12663
|
+
root_default,
|
|
12664
|
+
webModule,
|
|
12665
|
+
api_default,
|
|
12666
|
+
database === "postgres" ? dbPostgres : dbSqlite,
|
|
12667
|
+
auth_default,
|
|
12668
|
+
shadcn ? shadcn_ui_default : ui_default,
|
|
12669
|
+
linter === "oxc" ? oxc_default : eslint_config_default4,
|
|
12670
|
+
typescript_config_default,
|
|
12671
|
+
testing === "vitest" ? testing_vitest_default : testing_jest_default,
|
|
12672
|
+
...deploymentModule ? [deploymentModule] : [],
|
|
12673
|
+
...nestDiOnly2 ? [nest_di_only_default] : [api_controllers_default],
|
|
12674
|
+
// nest-di-only overwrites the standalone next.config.js and leaves the
|
|
12675
|
+
// Dockerfile pointing at an api entrypoint DI-only never emits
|
|
12676
|
+
...nestDiOnly2 && deployment === "standalone" ? [deployment_standalone_di_default] : [],
|
|
12677
|
+
...todoExample ? [
|
|
12678
|
+
todoExampleApi,
|
|
12679
|
+
...nestDiOnly2 ? [todoExampleDi] : [todoExampleControllers],
|
|
12680
|
+
shadcn ? todoExampleShadcn : todoExampleWeb
|
|
12681
|
+
] : []
|
|
12682
|
+
];
|
|
12683
|
+
}
|
|
11929
12684
|
|
|
11930
12685
|
// src/tasks.ts
|
|
11931
12686
|
import { randomBytes } from "crypto";
|
|
@@ -12108,7 +12863,8 @@ async function scaffold(modules, options) {
|
|
|
12108
12863
|
testing: options.testing,
|
|
12109
12864
|
database: options.database,
|
|
12110
12865
|
deployment: options.deployment,
|
|
12111
|
-
authSecret: randomBytes(32).toString("base64url")
|
|
12866
|
+
authSecret: randomBytes(32).toString("base64url"),
|
|
12867
|
+
versions
|
|
12112
12868
|
};
|
|
12113
12869
|
await renderTemplatesToDisk(modules, options.name, templateData, options.selection);
|
|
12114
12870
|
const packages = modules.map((mod) => mod.packages).filter((ele) => ele !== void 0).flat();
|
|
@@ -12238,34 +12994,16 @@ async function doInit(options) {
|
|
|
12238
12994
|
if (!deploymentCombo.valid) {
|
|
12239
12995
|
throw new Error(deploymentCombo.error);
|
|
12240
12996
|
}
|
|
12241
|
-
const
|
|
12242
|
-
|
|
12243
|
-
|
|
12244
|
-
|
|
12245
|
-
|
|
12246
|
-
|
|
12247
|
-
|
|
12248
|
-
|
|
12249
|
-
|
|
12250
|
-
|
|
12251
|
-
templates.api,
|
|
12252
|
-
database === "postgres" ? templates.dbPostgres : templates.dbSqlite,
|
|
12253
|
-
templates.auth,
|
|
12254
|
-
useShadcn ? templates.shadcnUi : templates.ui,
|
|
12255
|
-
linter === "oxc" ? templates.oxc : templates.eslintConfig,
|
|
12256
|
-
templates.typescriptConfig,
|
|
12257
|
-
testing === "vitest" ? templates.testingVitest : templates.testingJest,
|
|
12258
|
-
...deploymentModule ? [deploymentModule] : [],
|
|
12259
|
-
...nestDiOnly2 ? [templates.nestDiOnly] : [templates.apiControllers],
|
|
12260
|
-
// nest-di-only overwrites the standalone next.config.js and leaves the
|
|
12261
|
-
// Dockerfile pointing at an api entrypoint DI-only never emits
|
|
12262
|
-
...nestDiOnly2 && deployment === "standalone" ? [templates.deploymentStandaloneDi] : [],
|
|
12263
|
-
...todoExample ? [
|
|
12264
|
-
templates.todoExampleApi,
|
|
12265
|
-
...nestDiOnly2 ? [templates.todoExampleDi] : [templates.todoExampleControllers],
|
|
12266
|
-
useShadcn ? templates.todoExampleShadcn : templates.todoExampleWeb
|
|
12267
|
-
] : []
|
|
12268
|
-
];
|
|
12997
|
+
const selection = {
|
|
12998
|
+
deployment,
|
|
12999
|
+
nestDiOnly: nestDiOnly2,
|
|
13000
|
+
todoExample,
|
|
13001
|
+
shadcn: useShadcn,
|
|
13002
|
+
database,
|
|
13003
|
+
linter,
|
|
13004
|
+
testing
|
|
13005
|
+
};
|
|
13006
|
+
const allModules = selectModules(selection);
|
|
12269
13007
|
const name = group2.name ?? options.name ?? "";
|
|
12270
13008
|
const taskBuilder = new TaskBuilder();
|
|
12271
13009
|
taskBuilder.add({
|
|
@@ -12276,7 +13014,7 @@ async function doInit(options) {
|
|
|
12276
13014
|
testing,
|
|
12277
13015
|
database,
|
|
12278
13016
|
deployment,
|
|
12279
|
-
selection
|
|
13017
|
+
selection
|
|
12280
13018
|
});
|
|
12281
13019
|
return "Scaffolded.";
|
|
12282
13020
|
}
|