create-gardener 2.1.0 → 2.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/package.json +1 -1
  2. package/template/build/backend/controllers/gardener/addPage.d.ts.map +1 -1
  3. package/template/build/backend/controllers/gardener/addPage.js +31 -21
  4. package/template/build/backend/controllers/gardener/addPage.js.map +1 -1
  5. package/template/build/backend/controllers/gardener/createStatic.d.ts.map +1 -1
  6. package/template/build/backend/controllers/gardener/createStatic.js +3 -1
  7. package/template/build/backend/controllers/gardener/createStatic.js.map +1 -1
  8. package/template/build/backend/libs/generateWebp.d.ts.map +1 -1
  9. package/template/build/backend/libs/generateWebp.js +0 -2
  10. package/template/build/backend/libs/generateWebp.js.map +1 -1
  11. package/template/build/backend/routes/gardener.route.js +5 -0
  12. package/template/build/backend/routes/gardener.route.js.map +1 -1
  13. package/template/build/frontend/static/bundle/bundle._.js +1 -0
  14. package/template/build/frontend/static/bundle/bundle._about.js +1 -0
  15. package/template/build/frontend/static/bundle/bundle._kartik.js +1 -0
  16. package/template/build/frontend/static/bundle/bundle._new.js +1 -0
  17. package/template/build/frontend/static/bundle/bundle._ritish.js +1 -0
  18. package/template/build/frontend/static/cache/gardener_100x100.webp +0 -0
  19. package/template/build/frontend/static/components/copybtn.js +16 -3
  20. package/template/build/frontend/static/components/footer.js +33 -0
  21. package/template/build/frontend/static/components/gardener/errorBox.js +47 -0
  22. package/template/build/frontend/static/components/gardener/hotReloadbtn.js +82 -0
  23. package/template/build/frontend/static/components/gardener/pageOverlayBtn.js +138 -0
  24. package/template/build/frontend/static/components/gardener/parserWindow.js +159 -0
  25. package/template/build/frontend/static/components/nonui/api.js +15 -2
  26. package/template/build/frontend/static/components/nonui/navigation.js +2 -2
  27. package/template/build/frontend/static/components/notification.js +1 -1
  28. package/template/build/frontend/static/gardener.js +129 -58
  29. package/template/build/frontend/static/gardenerConfig.js +1 -1
  30. package/template/build/frontend/static/gardenerDev.js +67 -401
  31. package/template/build/frontend/static/global.js +2 -2
  32. package/template/build/frontend/static/pages/pages._.js +7 -2
  33. package/template/build/frontend/static/pages/pages._about.js +2 -0
  34. package/template/build/frontend/static/pages/pages._kartik.js +2 -0
  35. package/template/build/frontend/static/pages/pages._new.js +2 -0
  36. package/template/build/frontend/static/pages/pages._ritish.js +2 -0
  37. package/template/build/frontend/static/style.css +1 -1
  38. package/template/build/frontend/static/style2.css +2 -2
  39. package/template/build/frontend/views/_.ejs +6 -2
  40. package/template/build/frontend/views/_about.ejs +126 -0
  41. package/template/build/frontend/views/_kartik.ejs +126 -0
  42. package/template/build/frontend/views/_new.ejs +126 -0
  43. package/template/build/frontend/views/_ritish.ejs +126 -0
  44. package/template/buildHelper.js +33 -2
  45. package/template/package.json +2 -1
  46. package/template/pnpm-lock.yaml +271 -0
  47. package/template/src/backend/controllers/gardener/addPage.ts +7 -1
  48. package/template/src/backend/controllers/gardener/createStatic.ts +94 -59
  49. package/template/src/backend/controllers/gardener/index.ts +0 -1
  50. package/template/src/backend/routes/gardener.route.ts +1 -2
  51. package/template/src/frontend/bundle/bundle._.js +2 -0
  52. package/template/src/frontend/bundle/bundle._about.js +1 -0
  53. package/template/src/frontend/bundle/bundle._kartik.js +1 -0
  54. package/template/src/frontend/bundle/bundle._new.js +1 -0
  55. package/template/src/frontend/bundle/bundle._ritish.js +1 -0
  56. package/template/src/frontend/static/components/nonui/navigation.js +2 -2
  57. package/template/src/frontend/static/components/notification.js +1 -1
  58. package/template/src/frontend/static/gardenerDev.js +2 -2
  59. package/template/src/frontend/static/global.js +1 -1
  60. package/template/src/frontend/static/pages/pages._.js +2 -2
  61. package/template/src/frontend/static/style.css +61 -31
  62. package/template/src/frontend/template/template._.ejs +5 -1
  63. package/template/src/frontend/views/_.ejs +6 -2
  64. package/template/build/frontend/static/gardener.test.js +0 -364
  65. package/template/build/frontend/static/zod.js +0 -8
  66. package/template/buildHelper.test.js +0 -78
  67. package/template/jest.config.js +0 -13
  68. package/template/src/frontend/static/gardener.test.js +0 -364
  69. package/template/src/frontend/static/zod.js +0 -8
@@ -1,85 +1,120 @@
1
- import type { Request, Response } from "express";
2
1
  import path from "path";
3
2
  import fsp from "fs/promises";
4
3
  import ejs from "ejs";
4
+ import { build } from "esbuild";
5
5
 
6
6
  import { fileURLToPath } from "url";
7
7
  const __filename = fileURLToPath(import.meta.url);
8
8
  const __dirname = path.dirname(__filename);
9
9
 
10
- const frontendDir = path.resolve(__dirname, '..', '..', '..', 'frontend');
10
+ const frontendDir = path.resolve(__dirname, "..", "..", "..", "frontend");
11
11
 
12
- export async function createStatic(req: Request, res: Response) {
13
- try {
14
- const viewsDir = path.join(frontendDir, "views");
15
- const outDir = path.resolve("src/tempfrontend");
16
- const finalOut = path.resolve("src/frontendStatic");
12
+ async function generateStatic() {
13
+ const viewsDir = path.join(frontendDir, "views");
14
+ const outDir = path.resolve("src/tempfrontend");
15
+ const finalOut = path.resolve("src/frontendStatic");
17
16
 
18
- await fsp.mkdir(outDir, { recursive: true });
19
- await fsp.mkdir(finalOut, { recursive: true });
17
+ await fsp.mkdir(outDir, { recursive: true });
18
+ await fsp.mkdir(finalOut, { recursive: true });
20
19
 
21
- const entries = await fsp.readdir(viewsDir, { withFileTypes: true });
20
+ const entries = await fsp.readdir(viewsDir, { withFileTypes: true });
22
21
 
23
- const rendered: string[] = [];
22
+ const rendered: string[] = [];
24
23
 
24
+ for (const entry of entries) {
25
+ if (!entry.isFile()) continue;
26
+ if (!entry.name.endsWith(".ejs")) continue;
25
27
 
26
- for (const entry of entries) {
27
- // skip folders (partials, layouts, etc.)
28
- if (!entry.isFile()) continue;
29
- if (!entry.name.endsWith(".ejs")) continue;
28
+ const inputPath = path.join(viewsDir, entry.name);
29
+ const outputName = entry.name.replace(/\.ejs$/, ".html");
30
+ const outputPath = path.join(outDir, outputName);
30
31
 
31
- const inputPath = path.join(viewsDir, entry.name);
32
- const outputName = entry.name.replace(/\.ejs$/, ".html");
33
- const outputPath = path.join(outDir, outputName);
32
+ const html = await ejs.renderFile(
33
+ inputPath,
34
+ {
35
+ fileName: entry.name.slice(0, -4)
36
+ },
37
+ {
38
+ views: [viewsDir],
39
+ }
40
+ );
34
41
 
35
- const html = await ejs.renderFile(
36
- inputPath,
37
- {
38
- fileName: inputPath
39
- },
40
- {
41
- // async: true,
42
- views: [viewsDir], // needed for includes
43
- }
44
- );
42
+ await fsp.writeFile(outputPath, html, "utf8");
43
+ rendered.push(outputName);
44
+ }
45
45
 
46
- await fsp.writeFile(outputPath, html, "utf8");
47
- rendered.push(outputName);
48
- }
46
+ const entries3 = await fsp.readdir(outDir, { withFileTypes: true });
47
+ for (const entry of entries3) {
48
+ const parts = entry.name
49
+ .replace(/^_/, "")
50
+ .replace(/\.html$/, "")
51
+ .split("_");
49
52
 
50
- const entries3 = await fsp.readdir(outDir, { withFileTypes: true });
51
- for (const entry of entries3) {
53
+ const targetDir = path.join(finalOut, ...parts);
54
+ const targetFile = path.join(targetDir, "index.html");
52
55
 
53
- // "_path1_path2_path3.html" -> ["path1", "path2", "path3"]
54
- const parts = entry.name
55
- .replace(/^_/, "")
56
- .replace(/\.html$/, "")
57
- .split("_");
56
+ await fsp.mkdir(targetDir, { recursive: true });
57
+ await fsp.copyFile(path.join(outDir, entry.name), targetFile);
58
+ }
58
59
 
59
- const targetDir = path.join(finalOut, ...parts);
60
- const targetFile = path.join(targetDir, "index.html");
60
+ await fsp.rm(outDir, { recursive: true, force: true });
61
61
 
62
- // ensure directories exist
63
- await fsp.mkdir(targetDir, { recursive: true });
64
- console.log('done');
65
- // copy file
66
- await fsp.copyFile(path.join(outDir, entry.name), targetFile);
62
+ await fsp.mkdir(path.join(finalOut, "static"), { recursive: true });
63
+
64
+ await fsp.cp(
65
+ path.join(frontendDir, "static", 'cache'),
66
+ path.join(finalOut, "static", 'cache'),
67
+ { recursive: true }
68
+ );
69
+
70
+ await fsp.cp(
71
+ path.join(frontendDir, "static", 'style.css'),
72
+ path.join(finalOut, "static", 'style.css'),
73
+ { recursive: true }
74
+ );
67
75
 
68
- }
69
- await fsp.rm(outDir, { recursive: true, force: true });
70
- await fsp.cp(
71
- path.join(frontendDir, "static"),
72
- path.join(finalOut, 'static'),
73
- { recursive: true }
74
- );
75
76
 
76
- return res.json({
77
- success: true,
78
- generated: rendered,
79
- outDir,
80
- });
77
+ await fsp.cp(
78
+ path.join(frontendDir, "static", 'style2.css'),
79
+ path.join(finalOut, "static", 'style2.css'),
80
+ { recursive: true }
81
+ );
82
+
83
+ const srcBundleDir = path.join(frontendDir, "bundle");
84
+ const destBundleDir = path.join(finalOut, "static", "bundle");
85
+
86
+ try {
87
+ const bundleFiles = await fsp.readdir(srcBundleDir);
88
+ if (bundleFiles.length) {
89
+ await fsp.mkdir(destBundleDir, { recursive: true });
90
+
91
+ for (const file of bundleFiles) {
92
+ const srcFile = path.join(srcBundleDir, file);
93
+ const destFile = path.join(destBundleDir, file);
94
+
95
+ await build({
96
+ entryPoints: [srcFile],
97
+ bundle: true,
98
+ minify: true,
99
+ format: "esm",
100
+ outfile: destFile,
101
+ });
102
+ }
103
+ }
81
104
  } catch (err) {
82
- console.error(err);
83
- return res.status(500).json({ error: "Static build failed" });
105
+ const error = err as NodeJS.ErrnoException;
106
+ if (error.code !== "ENOENT") {
107
+ throw err;
108
+ }
84
109
  }
110
+
111
+ console.log("Static pages generated:", rendered);
112
+ console.log("Output directory:", finalOut);
113
+ }
114
+
115
+ if (import.meta.url === `file://${process.argv[1]}`) {
116
+ generateStatic().catch((err) => {
117
+ console.error("Static build failed:", err);
118
+ process.exit(1);
119
+ });
85
120
  }
@@ -1,5 +1,4 @@
1
1
  export * from './imageOptimiser.js';
2
2
  export * from './addPage.js';
3
- export * from './createStatic.js';
4
3
  export * from './addComponent.js';
5
4
  export * from './saveTemplate.js';
@@ -1,6 +1,6 @@
1
1
  import type { Request, Response } from 'express';
2
2
  import { Router } from "express";
3
- import { addComponent, addPage, createStatic, imageOptimiser, saveTemplate } from "../controllers/gardener/index.js";
3
+ import { addComponent, addPage, imageOptimiser, saveTemplate } from "../controllers/gardener/index.js";
4
4
 
5
5
  const router: Router = Router();
6
6
  export default router;
@@ -11,7 +11,6 @@ export default router;
11
11
  router.route("/static/cache/:name").get(imageOptimiser);
12
12
 
13
13
  if (process.env.NODE_ENV !== 'production') {
14
- router.route("/createstatic").get(createStatic);
15
14
  router.route('/addcomponent').post(addComponent);
16
15
  router.route('/addpage').post(addPage);
17
16
  router.route('/savetemplate').post(saveTemplate);
@@ -0,0 +1,2 @@
1
+ import '../static/global.js';
2
+ import '../static/pages/pages._.js';
@@ -0,0 +1 @@
1
+ import '../static/global.js'; import '../static/pages/pages._about.js';
@@ -0,0 +1 @@
1
+ import '../static/global.js'; import '../static/pages/pages._kartik.js';
@@ -0,0 +1 @@
1
+ import '../static/global.js'; import '../static/pages/pages._new.js';
@@ -0,0 +1 @@
1
+ import '../static/global.js'; import '../static/pages/pages._ritish.js';
@@ -1,5 +1,5 @@
1
- import { gardener, fetchElement, appendElement } from "/static/gardener.js";
2
- import { mode } from "/static/gardenerConfig.js";
1
+ import { gardener, fetchElement, appendElement } from "../../gardener.js";
2
+ import { mode } from "../../gardenerConfig.js";
3
3
 
4
4
  const body = fetchElement('#main');
5
5
 
@@ -1,4 +1,4 @@
1
- import { gardener, replaceElement, fetchElement } from '/static/gardener.js';
1
+ import { gardener, replaceElement, fetchElement } from '../gardener.js';
2
2
 
3
3
  export default function addNotification(noti) {
4
4
  console.log('clicked');
@@ -1,5 +1,5 @@
1
- import { mode } from '/static/gardenerConfig.js'
2
- import { gardener, appendElement, fetchElement } from '/static/gardener.js'
1
+ import { mode } from './gardenerConfig.js'
2
+ import { gardener, appendElement, fetchElement } from './gardener.js'
3
3
  import { addPagebtn } from './components/gardener/pageOverlayBtn.js';
4
4
  import { parserWindow as parserWindowComponent } from './components/gardener/parserWindow.js';
5
5
  import { hotReloadBtn, togglehotreload } from './components/gardener/hotReloadbtn.js';
@@ -1,4 +1,4 @@
1
- import { nextPagehandler, pageloader } from '/static/components/nonui/navigation.js';
1
+ import { nextPagehandler, pageloader } from './components/nonui/navigation.js';
2
2
 
3
3
  pageloader()
4
4
  nextPagehandler();
@@ -1,8 +1,8 @@
1
1
  import { copybtn } from "../components/copybtn.js";
2
2
  import { pageloader } from "../components/nonui/navigation.js";
3
3
  import addNotification from "../components/notification.js";
4
- import { gardener, fetchElement, replaceElement, appendElement } from "/static/gardener.js";
5
- import { log, parser, addEl, State } from "/static/gardenerDev.js"
4
+ import { gardener, fetchElement, replaceElement, appendElement } from "../gardener.js";
5
+ import { log, parser, addEl, State } from "../gardenerDev.js"
6
6
 
7
7
 
8
8
  // pageloader();
@@ -247,18 +247,21 @@
247
247
  .start {
248
248
  inset-inline-start: var(--spacing);
249
249
  }
250
- .end {
251
- inset-inline-end: var(--spacing);
252
- }
253
250
  .top-0 {
254
251
  top: calc(var(--spacing) * 0);
255
252
  }
253
+ .top-1 {
254
+ top: calc(var(--spacing) * 1);
255
+ }
256
256
  .top-1\/2 {
257
257
  top: calc(1 / 2 * 100%);
258
258
  }
259
259
  .top-1\/4 {
260
260
  top: calc(1 / 4 * 100%);
261
261
  }
262
+ .top-2 {
263
+ top: calc(var(--spacing) * 2);
264
+ }
262
265
  .top-2\/5 {
263
266
  top: calc(2 / 5 * 100%);
264
267
  }
@@ -289,12 +292,18 @@
289
292
  .left-0 {
290
293
  left: calc(var(--spacing) * 0);
291
294
  }
295
+ .left-1 {
296
+ left: calc(var(--spacing) * 1);
297
+ }
292
298
  .left-1\/2 {
293
299
  left: calc(1 / 2 * 100%);
294
300
  }
295
301
  .left-1\/4 {
296
302
  left: calc(1 / 4 * 100%);
297
303
  }
304
+ .left-2 {
305
+ left: calc(var(--spacing) * 2);
306
+ }
298
307
  .left-2\/5 {
299
308
  left: calc(2 / 5 * 100%);
300
309
  }
@@ -316,24 +325,6 @@
316
325
  .z-\[100\] {
317
326
  z-index: 100;
318
327
  }
319
- .container {
320
- width: 100%;
321
- @media (width >= 40rem) {
322
- max-width: 40rem;
323
- }
324
- @media (width >= 48rem) {
325
- max-width: 48rem;
326
- }
327
- @media (width >= 64rem) {
328
- max-width: 64rem;
329
- }
330
- @media (width >= 80rem) {
331
- max-width: 80rem;
332
- }
333
- @media (width >= 96rem) {
334
- max-width: 96rem;
335
- }
336
- }
337
328
  .m-2 {
338
329
  margin: calc(var(--spacing) * 2);
339
330
  }
@@ -385,12 +376,15 @@
385
376
  .hidden {
386
377
  display: none;
387
378
  }
388
- .inline {
389
- display: inline;
390
- }
391
379
  .inline-block {
392
380
  display: inline-block;
393
381
  }
382
+ .table {
383
+ display: table;
384
+ }
385
+ .h-2 {
386
+ height: calc(var(--spacing) * 2);
387
+ }
394
388
  .h-2\/4 {
395
389
  height: calc(2 / 4 * 100%);
396
390
  }
@@ -409,15 +403,24 @@
409
403
  .h-screen {
410
404
  height: 100vh;
411
405
  }
406
+ .w-1 {
407
+ width: calc(var(--spacing) * 1);
408
+ }
412
409
  .w-1\/4 {
413
410
  width: calc(1 / 4 * 100%);
414
411
  }
412
+ .w-2 {
413
+ width: calc(var(--spacing) * 2);
414
+ }
415
415
  .w-2\/4 {
416
416
  width: calc(2 / 4 * 100%);
417
417
  }
418
418
  .w-5 {
419
419
  width: calc(var(--spacing) * 5);
420
420
  }
421
+ .w-11 {
422
+ width: calc(var(--spacing) * 11);
423
+ }
421
424
  .w-11\/12 {
422
425
  width: calc(11 / 12 * 100%);
423
426
  }
@@ -454,10 +457,21 @@
454
457
  .flex-1 {
455
458
  flex: 1;
456
459
  }
460
+ .border-collapse {
461
+ border-collapse: collapse;
462
+ }
463
+ .-translate-x-1 {
464
+ --tw-translate-x: calc(var(--spacing) * -1);
465
+ translate: var(--tw-translate-x) var(--tw-translate-y);
466
+ }
457
467
  .-translate-x-1\/2 {
458
468
  --tw-translate-x: calc(calc(1 / 2 * 100%) * -1);
459
469
  translate: var(--tw-translate-x) var(--tw-translate-y);
460
470
  }
471
+ .-translate-y-1 {
472
+ --tw-translate-y: calc(var(--spacing) * -1);
473
+ translate: var(--tw-translate-x) var(--tw-translate-y);
474
+ }
461
475
  .-translate-y-1\/2 {
462
476
  --tw-translate-y: calc(calc(1 / 2 * 100%) * -1);
463
477
  translate: var(--tw-translate-x) var(--tw-translate-y);
@@ -468,6 +482,9 @@
468
482
  .cursor-pointer {
469
483
  cursor: pointer;
470
484
  }
485
+ .resize {
486
+ resize: both;
487
+ }
471
488
  .grid-cols-2 {
472
489
  grid-template-columns: repeat(2, minmax(0, 1fr));
473
490
  }
@@ -692,6 +709,9 @@
692
709
  .py-20 {
693
710
  padding-block: calc(var(--spacing) * 20);
694
711
  }
712
+ .pb-1 {
713
+ padding-bottom: calc(var(--spacing) * 1);
714
+ }
695
715
  .pb-1\.5 {
696
716
  padding-bottom: calc(var(--spacing) * 1.5);
697
717
  }
@@ -715,10 +735,6 @@
715
735
  font-size: var(--text-3xl);
716
736
  line-height: var(--tw-leading, var(--text-3xl--line-height));
717
737
  }
718
- .text-5xl {
719
- font-size: var(--text-5xl);
720
- line-height: var(--tw-leading, var(--text-5xl--line-height));
721
- }
722
738
  .text-6xl {
723
739
  font-size: var(--text-6xl);
724
740
  line-height: var(--tw-leading, var(--text-6xl--line-height));
@@ -808,15 +824,15 @@
808
824
  .text-white {
809
825
  color: var(--color-white);
810
826
  }
811
- .lowercase {
812
- text-transform: lowercase;
813
- }
814
827
  .uppercase {
815
828
  text-transform: uppercase;
816
829
  }
817
830
  .italic {
818
831
  font-style: italic;
819
832
  }
833
+ .underline {
834
+ text-decoration-line: underline;
835
+ }
820
836
  .opacity-70 {
821
837
  opacity: 70%;
822
838
  }
@@ -836,11 +852,19 @@
836
852
  --tw-shadow: 0 20px 25px -5px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 8px 10px -6px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
837
853
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
838
854
  }
855
+ .outline {
856
+ outline-style: var(--tw-outline-style);
857
+ outline-width: 1px;
858
+ }
839
859
  .backdrop-blur-md {
840
860
  --tw-backdrop-blur: blur(var(--blur-md));
841
861
  -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
842
862
  backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
843
863
  }
864
+ .backdrop-filter {
865
+ -webkit-backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
866
+ backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
867
+ }
844
868
  .transition {
845
869
  transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, content-visibility, overlay, pointer-events;
846
870
  transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
@@ -1057,6 +1081,11 @@
1057
1081
  inherits: false;
1058
1082
  initial-value: 0 0 #0000;
1059
1083
  }
1084
+ @property --tw-outline-style {
1085
+ syntax: "*";
1086
+ inherits: false;
1087
+ initial-value: solid;
1088
+ }
1060
1089
  @property --tw-backdrop-blur {
1061
1090
  syntax: "*";
1062
1091
  inherits: false;
@@ -1141,6 +1170,7 @@
1141
1170
  --tw-ring-offset-width: 0px;
1142
1171
  --tw-ring-offset-color: #fff;
1143
1172
  --tw-ring-offset-shadow: 0 0 #0000;
1173
+ --tw-outline-style: solid;
1144
1174
  --tw-backdrop-blur: initial;
1145
1175
  --tw-backdrop-brightness: initial;
1146
1176
  --tw-backdrop-contrast: initial;
@@ -116,6 +116,10 @@ gardener({
116
116
  </div>
117
117
 
118
118
  </body>
119
- <script type='module' src='/static/global.js'> </script>
119
+ <% if (process.env.NODE_ENV === 'production') { %>
120
+ <script type='module' src='/static/bundle/bundle.<%=fileName%>.js'></script>
121
+ <% } else { %>
122
+ <script type='module' src='/static/global.js'></script>
120
123
 
124
+ <% } %>
121
125
  </html>
@@ -116,6 +116,10 @@ gardener({
116
116
  </div>
117
117
 
118
118
  </body>
119
- <script type='module' src='/static/global.js'> </script>
120
- <script type='module' src='/static/pages/pages._.js'> </script>
119
+ <% if (process.env.NODE_ENV === 'production') { %>
120
+ <script type='module' src='/static/bundle/bundle.<%=fileName%>.js'></script>
121
+ <% } else { %>
122
+ <script type='module' src='/static/global.js'></script>
123
+ <script type='module' src='/static/pages/pages._.js'></script>
124
+ <% } %>
121
125
  </html>