create-gardener 2.1.3 → 2.1.5

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 (96) hide show
  1. package/README.md +108 -302
  2. package/package.json +1 -1
  3. package/template/.env +3 -0
  4. package/template/README.md +181 -0
  5. package/template/buildHelper.js +5 -0
  6. package/template/src/backend/controllers/gardener/hotReload.ts +34 -0
  7. package/template/src/backend/controllers/gardener/imageOptimiser.ts +114 -25
  8. package/template/src/backend/controllers/gardener/index.ts +1 -0
  9. package/template/src/backend/routes/gardener.route.ts +2 -1
  10. package/template/src/backend/server.ts +19 -1
  11. package/template/src/frontend/assets/remote/betterway.jpg +0 -0
  12. package/template/src/frontend/static/components/gardener/hotReloadbtn.js +25 -78
  13. package/template/src/frontend/static/gardenerDev.js +2 -18
  14. package/template/src/frontend/static/style.css +0 -77
  15. package/template/src/frontend/views/_.ejs +101 -89
  16. package/template/build/backend/controllers/gardener/addComponent.d.ts +0 -8
  17. package/template/build/backend/controllers/gardener/addComponent.d.ts.map +0 -1
  18. package/template/build/backend/controllers/gardener/addComponent.js +0 -19
  19. package/template/build/backend/controllers/gardener/addComponent.js.map +0 -1
  20. package/template/build/backend/controllers/gardener/addPage.d.ts +0 -3
  21. package/template/build/backend/controllers/gardener/addPage.d.ts.map +0 -1
  22. package/template/build/backend/controllers/gardener/addPage.js +0 -86
  23. package/template/build/backend/controllers/gardener/addPage.js.map +0 -1
  24. package/template/build/backend/controllers/gardener/createStatic.d.ts +0 -3
  25. package/template/build/backend/controllers/gardener/createStatic.d.ts.map +0 -1
  26. package/template/build/backend/controllers/gardener/createStatic.js +0 -63
  27. package/template/build/backend/controllers/gardener/createStatic.js.map +0 -1
  28. package/template/build/backend/controllers/gardener/imageOptimiser.d.ts +0 -3
  29. package/template/build/backend/controllers/gardener/imageOptimiser.d.ts.map +0 -1
  30. package/template/build/backend/controllers/gardener/imageOptimiser.js +0 -54
  31. package/template/build/backend/controllers/gardener/imageOptimiser.js.map +0 -1
  32. package/template/build/backend/controllers/gardener/index.d.ts +0 -6
  33. package/template/build/backend/controllers/gardener/index.d.ts.map +0 -1
  34. package/template/build/backend/controllers/gardener/index.js +0 -6
  35. package/template/build/backend/controllers/gardener/index.js.map +0 -1
  36. package/template/build/backend/controllers/gardener/saveTemplate.d.ts +0 -3
  37. package/template/build/backend/controllers/gardener/saveTemplate.d.ts.map +0 -1
  38. package/template/build/backend/controllers/gardener/saveTemplate.js +0 -36
  39. package/template/build/backend/controllers/gardener/saveTemplate.js.map +0 -1
  40. package/template/build/backend/libs/generateWebp.d.ts +0 -2
  41. package/template/build/backend/libs/generateWebp.d.ts.map +0 -1
  42. package/template/build/backend/libs/generateWebp.js +0 -16
  43. package/template/build/backend/libs/generateWebp.js.map +0 -1
  44. package/template/build/backend/routes/gardener.route.d.ts +0 -4
  45. package/template/build/backend/routes/gardener.route.d.ts.map +0 -1
  46. package/template/build/backend/routes/gardener.route.js +0 -18
  47. package/template/build/backend/routes/gardener.route.js.map +0 -1
  48. package/template/build/backend/server.d.ts +0 -2
  49. package/template/build/backend/server.d.ts.map +0 -1
  50. package/template/build/backend/server.js +0 -20
  51. package/template/build/backend/server.js.map +0 -1
  52. package/template/build/frontend/assets/favicon.png +0 -0
  53. package/template/build/frontend/assets/gardener.jpg +0 -0
  54. package/template/build/frontend/static/bundle/bundle._.js +0 -1
  55. package/template/build/frontend/static/bundle/bundle._about.js +0 -1
  56. package/template/build/frontend/static/bundle/bundle._kartik.js +0 -1
  57. package/template/build/frontend/static/bundle/bundle._new.js +0 -1
  58. package/template/build/frontend/static/bundle/bundle._ritish.js +0 -1
  59. package/template/build/frontend/static/cache/favicon_500x500.webp +0 -0
  60. package/template/build/frontend/static/cache/favicon_50x50.webp +0 -0
  61. package/template/build/frontend/static/cache/gardener_100x100.webp +0 -0
  62. package/template/build/frontend/static/cache/gardener_500x500.webp +0 -0
  63. package/template/build/frontend/static/cache/gardener_50x50.webp +0 -0
  64. package/template/build/frontend/static/components/copybtn.js +0 -99
  65. package/template/build/frontend/static/components/footer.js +0 -33
  66. package/template/build/frontend/static/components/gardener/errorBox.js +0 -47
  67. package/template/build/frontend/static/components/gardener/hotReloadbtn.js +0 -82
  68. package/template/build/frontend/static/components/gardener/pageOverlayBtn.js +0 -138
  69. package/template/build/frontend/static/components/gardener/parserWindow.js +0 -159
  70. package/template/build/frontend/static/components/nonui/api.js +0 -52
  71. package/template/build/frontend/static/components/nonui/navigation.js +0 -59
  72. package/template/build/frontend/static/components/notification.js +0 -67
  73. package/template/build/frontend/static/gardener.js +0 -160
  74. package/template/build/frontend/static/gardenerConfig.js +0 -1
  75. package/template/build/frontend/static/gardenerDev.js +0 -165
  76. package/template/build/frontend/static/global.js +0 -4
  77. package/template/build/frontend/static/pages/pages._.js +0 -25
  78. package/template/build/frontend/static/pages/pages._about.js +0 -2
  79. package/template/build/frontend/static/pages/pages._kartik.js +0 -2
  80. package/template/build/frontend/static/pages/pages._new.js +0 -2
  81. package/template/build/frontend/static/pages/pages._ritish.js +0 -2
  82. package/template/build/frontend/static/style.css +0 -2
  83. package/template/build/frontend/static/style2.css +0 -26
  84. package/template/build/frontend/style.css +0 -1045
  85. package/template/build/frontend/tailwind.css +0 -1
  86. package/template/build/frontend/views/_.ejs +0 -125
  87. package/template/build/frontend/views/_about.ejs +0 -126
  88. package/template/build/frontend/views/_kartik.ejs +0 -126
  89. package/template/build/frontend/views/_new.ejs +0 -126
  90. package/template/build/frontend/views/_ritish.ejs +0 -126
  91. package/template/build/frontend/views/partials/icons/clipboard.ejs +0 -1
  92. package/template/build/frontend/views/partials/icons/clipboardok.ejs +0 -1
  93. package/template/src/frontend/static/cache/favicon_500x500.webp +0 -0
  94. package/template/src/frontend/static/cache/favicon_50x50.webp +0 -0
  95. package/template/src/frontend/static/cache/gardener_100x100.webp +0 -0
  96. package/template/src/frontend/static/cache/gardener_500x500.webp +0 -0
@@ -1,16 +0,0 @@
1
- import path from "path";
2
- import fsp from "fs/promises";
3
- import sharp from "sharp";
4
- export default async function generateWebP(inputPath, outputPath, width, height) {
5
- const cacheDir = path.dirname(outputPath);
6
- await fsp.mkdir(cacheDir, { recursive: true });
7
- await sharp(inputPath)
8
- .resize(width, height, {
9
- fit: "inside",
10
- withoutEnlargement: true,
11
- })
12
- .webp({ quality: 100 })
13
- .toFile(outputPath);
14
- console.log("✅ Image successfully generated");
15
- }
16
- //# sourceMappingURL=generateWebp.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generateWebp.js","sourceRoot":"","sources":["../../../src/backend/libs/generateWebp.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,GAAG,MAAM,aAAa,CAAC;AAC9B,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,YAAY,CACxC,SAAiB,EACjB,UAAkB,EAClB,KAAa,EACb,MAAc;IAEd,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC1C,MAAM,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAG/C,MAAM,KAAK,CAAC,SAAS,CAAC;SACnB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE;QACrB,GAAG,EAAE,QAAQ;QACb,kBAAkB,EAAE,IAAI;KACzB,CAAC;SACD,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;SACtB,MAAM,CAAC,UAAU,CAAC,CAAC;IAEtB,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;AAChD,CAAC"}
@@ -1,4 +0,0 @@
1
- import { Router } from "express";
2
- declare const router: Router;
3
- export default router;
4
- //# sourceMappingURL=gardener.route.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gardener.route.d.ts","sourceRoot":"","sources":["../../../src/backend/routes/gardener.route.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAGjC,QAAA,MAAM,MAAM,EAAE,MAAiB,CAAC;AAChC,eAAe,MAAM,CAAC"}
@@ -1,18 +0,0 @@
1
- import { Router } from "express";
2
- import { addComponent, addPage, createStatic, imageOptimiser, saveTemplate } from "../controllers/gardener/index.js";
3
- const router = Router();
4
- export default router;
5
- router.route("/static/cache/:name").get(imageOptimiser);
6
- if (process.env.NODE_ENV !== 'production') {
7
- router.route("/createstatic").get(createStatic);
8
- router.route('/addcomponent').post(addComponent);
9
- router.route('/addpage').post(addPage);
10
- router.route('/savetemplate').post(saveTemplate);
11
- }
12
- router.route('/').get((req, res) => res.render('_', { fileName: '_' }));
13
- router.route("/new").get((req, res) => res.render("_new", { fileName: "_new" }));
14
- router.route("/new").get((req, res) => res.render("_new", { fileName: "_new" }));
15
- router.route("/about").get((req, res) => res.render("_about", { fileName: "_about" }));
16
- router.route("/ritish").get((req, res) => res.render("_ritish", { fileName: "_ritish" }));
17
- router.route("/kartik").get((req, res) => res.render("_kartik", { fileName: "_kartik" }));
18
- //# sourceMappingURL=gardener.route.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gardener.route.js","sourceRoot":"","sources":["../../../src/backend/routes/gardener.route.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAErH,MAAM,MAAM,GAAW,MAAM,EAAE,CAAC;AAChC,eAAe,MAAM,CAAC;AAKtB,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AAExD,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;IAC1C,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAChD,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACjD,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACnD,CAAC;AAMD,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;AAC3F,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAC,EAAC,QAAQ,EAAC,MAAM,EAAC,CAAC,CAAC,CAAC;AAChG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAC,EAAC,QAAQ,EAAC,MAAM,EAAC,CAAC,CAAC,CAAC;AAChG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAC,EAAC,QAAQ,EAAC,QAAQ,EAAC,CAAC,CAAC,CAAC;AACtG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAC,EAAC,QAAQ,EAAC,SAAS,EAAC,CAAC,CAAC,CAAC;AACzG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAC,EAAC,QAAQ,EAAC,SAAS,EAAC,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- import 'dotenv/config';
2
- //# sourceMappingURL=server.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/backend/server.ts"],"names":[],"mappings":"AACA,OAAO,eAAe,CAAC"}
@@ -1,20 +0,0 @@
1
- // server.ts
2
- import 'dotenv/config';
3
- import express from 'express';
4
- import frontendRoute from './routes/gardener.route.js';
5
- import path from "path";
6
- const app = express();
7
- import { fileURLToPath } from "url";
8
- const __filename = fileURLToPath(import.meta.url);
9
- const __dirname = path.dirname(__filename);
10
- const staticFiles = path.resolve(__dirname, '..', 'frontend');
11
- app.set('views', path.join(staticFiles, 'views'));
12
- app.set("view engine", "ejs");
13
- app.use(express.static(staticFiles));
14
- app.use(express.json());
15
- app.use(frontendRoute);
16
- const PORT = process.env.PORT || 3000;
17
- app.listen(PORT, () => {
18
- console.log("server listening 🚀🚀🚀 PORT:", PORT);
19
- });
20
- //# sourceMappingURL=server.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/backend/server.ts"],"names":[],"mappings":"AAAA,YAAY;AACZ,OAAO,eAAe,CAAC;AACvB,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,aAAa,MAAM,4BAA4B,CAAA;AACtD,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;AAGtB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3C,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,UAAU,CAAC,CAAA;AAE7D,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;AAClD,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;AAC9B,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;AACrC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AACxB,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AAEvB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC;AAEtC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;IACpB,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE,IAAI,CAAC,CAAC;AACrD,CAAC,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- var j=n("body");function d(e){a(j,i({t:"div",cn:["fixed","top-1/2","left-1/2","-translate-x-1/2","-translate-y-1/2","w-11/12","max-w-md","bg-white","text-gray-800","shadow-2xl","border-l-8","border-red-600","rounded-r-lg","z-[100]","p-0","overflow-hidden"],children:[{t:"div",cn:["bg-red-50","p-4","flex","items-center","gap-3"],children:[{t:"h2",cn:["text-red-700","font-bold","text-lg","uppercase","tracking-wider"],txt:"\u26A0\uFE0F System Error"}]},{t:"div",cn:["p-6","bg-white"],children:[{t:"p",cn:["font-mono","text-sm","bg-gray-100","p-3","rounded","border","border-gray-200","break-words"],txt:e},{t:"button",cn:["mt-4","w-full","py-2","bg-gray-800","text-white","rounded","hover:bg-black","transition-colors","cursor-pointer"],txt:"Dismiss",events:{click:t=>t.target.closest(".fixed").remove()}}]}]}))}function n(e){let t=document.querySelector(e);return t||console.warn(`Element not found: ${e}`),t}function a(e,t){try{if(typeof e=="string"&&(e=n(e)),!e)throw new Error("Parent element is null or undefined");if(!t)throw new Error("Child element is null or undefined");e.appendChild(t)}catch(r){d(r)}}function O(e,t){try{if(!e)throw new Error("Element type is required");let r=document.createElement(e);return t&&r.classList.add(...t),r}catch(r){return d(r),null}}function $(e,t){if(!e){console.warn("insertText: Element is null or undefined");return}e.textContent=t}function f(e,t){try{if(typeof e=="string"&&(e=n(e)),!e)throw new Error("Original element is null or undefined");if(!t)throw new Error("New element is null or undefined");e.replaceWith(t)}catch(r){d(r)}}function i(e){try{if(!e)throw new Error("DOM configuration is null or undefined");if(e.nodeType===1)return e;if(!e.t)throw new Error("Element type (t) is required in DOM configuration");let t=["svg","path","circle","rect","line","polygon","polyline","g","defs","clipPath","use"].includes(e.t),r;if(t?(r=document.createElementNS("http://www.w3.org/2000/svg",e.t),e.cn&&r.classList.add(...e.cn)):r=O(e.t,e.cn),!r)throw new Error(`Failed to create element: ${e.t}`);e.txt&&$(r,e.txt);let l=new Set(["value","selected","muted","disabled","selectedIndex","volume"]);if(e.attr)for(let[o,c]of Object.entries(e.attr))try{if(t||o.startsWith("data-")||o.startsWith("aria-"))r.setAttribute(o,c);else if(o in r&&!l.has(o))try{r[o]=c===""?!0:c}catch{r.setAttribute(o,c)}else r.setAttribute(o,c)}catch(p){console.warn(`Failed to set attribute ${o}:`,p)}return e.events&&Object.entries(e.events).forEach(([o,c])=>{try{if(typeof c!="function")throw new Error(`Event handler for '${o}' must be a function`);r.addEventListener(o,c)}catch(p){console.warn(`Failed to add event listener ${o}:`,p)}}),e.children&&e.children.forEach(o=>{try{a(r,i(o))}catch(c){console.warn("Failed to append child:",c)}}),r}catch(t){return d(t),null}}var h="prod";var m=n("#main");function w(){document.querySelectorAll("a").forEach(t=>{t.addEventListener("click",r=>{r.preventDefault(),P(t.href)})}),window.addEventListener("pagehide",()=>{setTimeout(()=>{m.style.transform="translateX(0px)",setTimeout(()=>{try{n(".tempnpdiv").remove()}catch{}},200)},200)})}function P(e){a(m,i({t:"div",cn:["tempnpdiv","top-0","left-[100vw]","fixed","h-screen","w-screen"]}));let t=window.innerWidth;console.log(t),m.style.transition=".2s",m.style.transform=`translateX(-${t}px)`,setTimeout(()=>{window.location.href=e},200)}function E(){let e=n(".loader");e.style.transition=".4s",e.style.opacity="0",h!=="dev"?setTimeout(()=>e.remove(),400):e.remove()}E();w();function s(e){console.log("clicked"),f(n(".notification"),L(e))}function L(e){return e?i({t:"div",cn:["notification","fixed","top-[-60px]","left-0","md:left-auto","md:right-[60px]","right-0","z-50","flex","justify-center","min-w-100","px-4","box-border"],children:[{t:"div",cn:["flex","items-center","w-full","max-w-sm","p-4","rounded-2xl","shadow-xl","text-white","backdrop-blur-md","bg-opacity-95",{success:"bg-[#2e7d32]",warning:"bg-[#ed6c02]",failure:"bg-[#d32f2f]"}[e.status]],children:[{t:"div",cn:["flex-1","text-sm","font-medium","tracking-wide"],txt:e.message}]}]}):null}function x(){return i({t:"button",events:{click:()=>{try{navigator.clipboard.writeText(n(".initCommand").innerText),f(".copybtn",x()),s({status:"success",message:"Copied"})}catch{s({status:"failure",message:"Couldn't Copy"})}}},cn:["copybtn","flex","items-center","justify-center","p-2","text-gray-400","hover:text-white","hover:bg-white/10","rounded","transition-all","duration-200","active:scale-95"],children:[{t:"span",cn:["w-5","h-5"],children:[{t:"svg",cn:["icon","icon-tabler","icons-tabler-outline","icon-tabler-clipboard-check"],attr:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},children:[{t:"path",attr:{stroke:"none",d:"M0 0h24v24H0z",fill:"none"}},{t:"path",attr:{d:"M9 5h-2a2 2 0 0 0 -2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-12a2 2 0 0 0 -2 -2h-2"}},{t:"path",attr:{d:"M9 5a2 2 0 0 1 2 -2h2a2 2 0 0 1 2 2a2 2 0 0 1 -2 2h-2a2 2 0 0 1 -2 -2"}},{t:"path",attr:{d:"M9 14l2 2l4 -4"}}]}]}]})}var A=n("body");function k(e=!0){if(e){let t=i({t:"form",cn:["addpageform","fixed","left-2/5","bg-gray-200","rounded-lg","block","top-2/5","p-2","flex","flex-col","p-5","gap-2"],events:{submit:async r=>{try{r.preventDefault();let l=new FormData(r.target),o=Object.fromEntries(l.entries()),c=await fetch("/addpage",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)}).then(p=>p.json());k(!1),window.location.href=`${o.page}`}catch(l){console.log(l)}}},children:[{t:"label",txt:"ENTER PATH FOR NEW PAGE"},{t:"input",attr:{name:"page"},cn:["pathinput"]}]});a(A,t),n(".pathinput").focus()}else n(".addpageform").remove()}var v=i({t:"div",cn:["fixed","bottom-20","right-4","flex","flex-col","gap-2","bg-white","shadow-lg","rounded-xl","p-3","z-50"],children:[{t:"button",cn:["px-4","py-2","bg-blue-500","text-white","rounded-lg","hover:bg-blue-600","transition"],children:[{t:"span",txt:"New Page"}],events:{click:k}},{t:"button",cn:["px-4","py-2","bg-gray-800","text-white","rounded-lg","hover:bg-gray-900","transition"],children:[{t:"span",txt:"Save Template"}],events:{click:async()=>{let t=await(await fetch("/savetemplate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:n("#fileName").innerText})})).json();alert(t.message)}}}]}),b=i({t:"div",cn:["fixed","bottom-4","right-4","z-50"],events:{mouseenter:()=>a(b,v),mouseleave:()=>v.remove()},children:[{t:"span",cn:["flex","items-center","justify-center","h-14","w-14","bg-black","text-white","fixed","bottom-22","right-2","rounded-full","shadow-lg","cursor-pointer"],txt:"GR"}]});var D=n("body");var F={hotreload:!1},u,T,y=localStorage.getItem("hotreload");y===null?u=F.hotreload:y==="true"?u=!0:y==="false"&&(u=!1);function g(){let e=u,t=n("#hrcheckbox");localStorage.setItem("hotreload",e),u=!u,e?(t.style.background="#66e666",n(".hrcheckbox").checked=!0,localStorage.setItem("hotreload","true"),T=setTimeout(()=>window.location.reload(),1e3)):(t.style.background="red",n(".hrcheckbox").checked=!1,localStorage.setItem("hotreload","false"),clearTimeout(T))}function C(){return i({t:"p",cn:["bg-gray-200","fixed","bottom-0","z-100","right-0","border-b-1","p-2","rounded-md"],children:[{t:"span",txt:"Press "},{t:"span",cn:["text-green-500","font-bold"],txt:"Alt+h"},{t:"span",txt:" to toggle Hot Reload"},{t:"form",attr:{id:"hrcheckbox"},events:{click:()=>g()},cn:["p-2","bg-red-300"],children:[{t:"label",txt:"Hot Reload "},{t:"input",cn:["hrcheckbox"],attr:{type:"checkbox"}}]}]})}var S=n("body");h==="dev"&&(a(S,b),a(S,C()),g());document.addEventListener("keydown",function(e){e.altKey&&e.key.toLowerCase()==="h"&&(e.preventDefault(),g())});function N(e,t,r){try{typeof e=="string"&&(e=n(e)),e.addEventListener(t,r)}catch(l){d(`addElError: ${l}`)}}N(".copybtn","click",()=>{try{navigator.clipboard.writeText(n(".initCommand").innerText),f(".copybtn",x()),s({status:"success",message:"Copied"})}catch{s({status:"failure",message:"Couldn't Copy"})}});
@@ -1 +0,0 @@
1
- var k=n("body");function l(e){i(k,c({t:"div",cn:["fixed","top-1/2","left-1/2","-translate-x-1/2","-translate-y-1/2","w-11/12","max-w-md","bg-white","text-gray-800","shadow-2xl","border-l-8","border-red-600","rounded-r-lg","z-[100]","p-0","overflow-hidden"],children:[{t:"div",cn:["bg-red-50","p-4","flex","items-center","gap-3"],children:[{t:"h2",cn:["text-red-700","font-bold","text-lg","uppercase","tracking-wider"],txt:"\u26A0\uFE0F System Error"}]},{t:"div",cn:["p-6","bg-white"],children:[{t:"p",cn:["font-mono","text-sm","bg-gray-100","p-3","rounded","border","border-gray-200","break-words"],txt:e},{t:"button",cn:["mt-4","w-full","py-2","bg-gray-800","text-white","rounded","hover:bg-black","transition-colors","cursor-pointer"],txt:"Dismiss",events:{click:t=>t.target.closest(".fixed").remove()}}]}]}))}function n(e){let t=document.querySelector(e);return t||console.warn(`Element not found: ${e}`),t}function i(e,t){try{if(typeof e=="string"&&(e=n(e)),!e)throw new Error("Parent element is null or undefined");if(!t)throw new Error("Child element is null or undefined");e.appendChild(t)}catch(r){l(r)}}function S(e,t){try{if(!e)throw new Error("Element type is required");let r=document.createElement(e);return t&&r.classList.add(...t),r}catch(r){return l(r),null}}function C(e,t){if(!e){console.warn("insertText: Element is null or undefined");return}e.textContent=t}function c(e){try{if(!e)throw new Error("DOM configuration is null or undefined");if(e.nodeType===1)return e;if(!e.t)throw new Error("Element type (t) is required in DOM configuration");let t=["svg","path","circle","rect","line","polygon","polyline","g","defs","clipPath","use"].includes(e.t),r;if(t?(r=document.createElementNS("http://www.w3.org/2000/svg",e.t),e.cn&&r.classList.add(...e.cn)):r=S(e.t,e.cn),!r)throw new Error(`Failed to create element: ${e.t}`);e.txt&&C(r,e.txt);let p=new Set(["value","selected","muted","disabled","selectedIndex","volume"]);if(e.attr)for(let[o,a]of Object.entries(e.attr))try{if(t||o.startsWith("data-")||o.startsWith("aria-"))r.setAttribute(o,a);else if(o in r&&!p.has(o))try{r[o]=a===""?!0:a}catch{r.setAttribute(o,a)}else r.setAttribute(o,a)}catch(d){console.warn(`Failed to set attribute ${o}:`,d)}return e.events&&Object.entries(e.events).forEach(([o,a])=>{try{if(typeof a!="function")throw new Error(`Event handler for '${o}' must be a function`);r.addEventListener(o,a)}catch(d){console.warn(`Failed to add event listener ${o}:`,d)}}),e.children&&e.children.forEach(o=>{try{i(r,c(o))}catch(a){console.warn("Failed to append child:",a)}}),r}catch(t){return l(t),null}}var f="prod";var u=n("#main");function x(){document.querySelectorAll("a").forEach(t=>{t.addEventListener("click",r=>{r.preventDefault(),N(t.href)})}),window.addEventListener("pagehide",()=>{setTimeout(()=>{u.style.transform="translateX(0px)",setTimeout(()=>{try{n(".tempnpdiv").remove()}catch{}},200)},200)})}function N(e){i(u,c({t:"div",cn:["tempnpdiv","top-0","left-[100vw]","fixed","h-screen","w-screen"]}));let t=window.innerWidth;console.log(t),u.style.transition=".2s",u.style.transform=`translateX(-${t}px)`,setTimeout(()=>{window.location.href=e},200)}function b(){let e=n(".loader");e.style.transition=".4s",e.style.opacity="0",f!=="dev"?setTimeout(()=>e.remove(),400):e.remove()}b();x();var O=n("body");function w(e=!0){if(e){let t=c({t:"form",cn:["addpageform","fixed","left-2/5","bg-gray-200","rounded-lg","block","top-2/5","p-2","flex","flex-col","p-5","gap-2"],events:{submit:async r=>{try{r.preventDefault();let p=new FormData(r.target),o=Object.fromEntries(p.entries()),a=await fetch("/addpage",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)}).then(d=>d.json());w(!1),window.location.href=`${o.page}`}catch(p){console.log(p)}}},children:[{t:"label",txt:"ENTER PATH FOR NEW PAGE"},{t:"input",attr:{name:"page"},cn:["pathinput"]}]});i(O,t),n(".pathinput").focus()}else n(".addpageform").remove()}var y=c({t:"div",cn:["fixed","bottom-20","right-4","flex","flex-col","gap-2","bg-white","shadow-lg","rounded-xl","p-3","z-50"],children:[{t:"button",cn:["px-4","py-2","bg-blue-500","text-white","rounded-lg","hover:bg-blue-600","transition"],children:[{t:"span",txt:"New Page"}],events:{click:w}},{t:"button",cn:["px-4","py-2","bg-gray-800","text-white","rounded-lg","hover:bg-gray-900","transition"],children:[{t:"span",txt:"Save Template"}],events:{click:async()=>{let t=await(await fetch("/savetemplate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:n("#fileName").innerText})})).json();alert(t.message)}}}]}),m=c({t:"div",cn:["fixed","bottom-4","right-4","z-50"],events:{mouseenter:()=>i(m,y),mouseleave:()=>y.remove()},children:[{t:"span",cn:["flex","items-center","justify-center","h-14","w-14","bg-black","text-white","fixed","bottom-22","right-2","rounded-full","shadow-lg","cursor-pointer"],txt:"GR"}]});var _=n("body");var $={hotreload:!1},s,E,g=localStorage.getItem("hotreload");g===null?s=$.hotreload:g==="true"?s=!0:g==="false"&&(s=!1);function h(){let e=s,t=n("#hrcheckbox");localStorage.setItem("hotreload",e),s=!s,e?(t.style.background="#66e666",n(".hrcheckbox").checked=!0,localStorage.setItem("hotreload","true"),E=setTimeout(()=>window.location.reload(),1e3)):(t.style.background="red",n(".hrcheckbox").checked=!1,localStorage.setItem("hotreload","false"),clearTimeout(E))}function v(){return c({t:"p",cn:["bg-gray-200","fixed","bottom-0","z-100","right-0","border-b-1","p-2","rounded-md"],children:[{t:"span",txt:"Press "},{t:"span",cn:["text-green-500","font-bold"],txt:"Alt+h"},{t:"span",txt:" to toggle Hot Reload"},{t:"form",attr:{id:"hrcheckbox"},events:{click:()=>h()},cn:["p-2","bg-red-300"],children:[{t:"label",txt:"Hot Reload "},{t:"input",cn:["hrcheckbox"],attr:{type:"checkbox"}}]}]})}var T=n("body");f==="dev"&&(i(T,m),i(T,v()),h());document.addEventListener("keydown",function(e){e.altKey&&e.key.toLowerCase()==="h"&&(e.preventDefault(),h())});
@@ -1 +0,0 @@
1
- var k=n("body");function l(e){i(k,c({t:"div",cn:["fixed","top-1/2","left-1/2","-translate-x-1/2","-translate-y-1/2","w-11/12","max-w-md","bg-white","text-gray-800","shadow-2xl","border-l-8","border-red-600","rounded-r-lg","z-[100]","p-0","overflow-hidden"],children:[{t:"div",cn:["bg-red-50","p-4","flex","items-center","gap-3"],children:[{t:"h2",cn:["text-red-700","font-bold","text-lg","uppercase","tracking-wider"],txt:"\u26A0\uFE0F System Error"}]},{t:"div",cn:["p-6","bg-white"],children:[{t:"p",cn:["font-mono","text-sm","bg-gray-100","p-3","rounded","border","border-gray-200","break-words"],txt:e},{t:"button",cn:["mt-4","w-full","py-2","bg-gray-800","text-white","rounded","hover:bg-black","transition-colors","cursor-pointer"],txt:"Dismiss",events:{click:t=>t.target.closest(".fixed").remove()}}]}]}))}function n(e){let t=document.querySelector(e);return t||console.warn(`Element not found: ${e}`),t}function i(e,t){try{if(typeof e=="string"&&(e=n(e)),!e)throw new Error("Parent element is null or undefined");if(!t)throw new Error("Child element is null or undefined");e.appendChild(t)}catch(r){l(r)}}function S(e,t){try{if(!e)throw new Error("Element type is required");let r=document.createElement(e);return t&&r.classList.add(...t),r}catch(r){return l(r),null}}function C(e,t){if(!e){console.warn("insertText: Element is null or undefined");return}e.textContent=t}function c(e){try{if(!e)throw new Error("DOM configuration is null or undefined");if(e.nodeType===1)return e;if(!e.t)throw new Error("Element type (t) is required in DOM configuration");let t=["svg","path","circle","rect","line","polygon","polyline","g","defs","clipPath","use"].includes(e.t),r;if(t?(r=document.createElementNS("http://www.w3.org/2000/svg",e.t),e.cn&&r.classList.add(...e.cn)):r=S(e.t,e.cn),!r)throw new Error(`Failed to create element: ${e.t}`);e.txt&&C(r,e.txt);let p=new Set(["value","selected","muted","disabled","selectedIndex","volume"]);if(e.attr)for(let[o,a]of Object.entries(e.attr))try{if(t||o.startsWith("data-")||o.startsWith("aria-"))r.setAttribute(o,a);else if(o in r&&!p.has(o))try{r[o]=a===""?!0:a}catch{r.setAttribute(o,a)}else r.setAttribute(o,a)}catch(d){console.warn(`Failed to set attribute ${o}:`,d)}return e.events&&Object.entries(e.events).forEach(([o,a])=>{try{if(typeof a!="function")throw new Error(`Event handler for '${o}' must be a function`);r.addEventListener(o,a)}catch(d){console.warn(`Failed to add event listener ${o}:`,d)}}),e.children&&e.children.forEach(o=>{try{i(r,c(o))}catch(a){console.warn("Failed to append child:",a)}}),r}catch(t){return l(t),null}}var f="prod";var u=n("#main");function x(){document.querySelectorAll("a").forEach(t=>{t.addEventListener("click",r=>{r.preventDefault(),N(t.href)})}),window.addEventListener("pagehide",()=>{setTimeout(()=>{u.style.transform="translateX(0px)",setTimeout(()=>{try{n(".tempnpdiv").remove()}catch{}},200)},200)})}function N(e){i(u,c({t:"div",cn:["tempnpdiv","top-0","left-[100vw]","fixed","h-screen","w-screen"]}));let t=window.innerWidth;console.log(t),u.style.transition=".2s",u.style.transform=`translateX(-${t}px)`,setTimeout(()=>{window.location.href=e},200)}function b(){let e=n(".loader");e.style.transition=".4s",e.style.opacity="0",f!=="dev"?setTimeout(()=>e.remove(),400):e.remove()}b();x();var O=n("body");function w(e=!0){if(e){let t=c({t:"form",cn:["addpageform","fixed","left-2/5","bg-gray-200","rounded-lg","block","top-2/5","p-2","flex","flex-col","p-5","gap-2"],events:{submit:async r=>{try{r.preventDefault();let p=new FormData(r.target),o=Object.fromEntries(p.entries()),a=await fetch("/addpage",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)}).then(d=>d.json());w(!1),window.location.href=`${o.page}`}catch(p){console.log(p)}}},children:[{t:"label",txt:"ENTER PATH FOR NEW PAGE"},{t:"input",attr:{name:"page"},cn:["pathinput"]}]});i(O,t),n(".pathinput").focus()}else n(".addpageform").remove()}var y=c({t:"div",cn:["fixed","bottom-20","right-4","flex","flex-col","gap-2","bg-white","shadow-lg","rounded-xl","p-3","z-50"],children:[{t:"button",cn:["px-4","py-2","bg-blue-500","text-white","rounded-lg","hover:bg-blue-600","transition"],children:[{t:"span",txt:"New Page"}],events:{click:w}},{t:"button",cn:["px-4","py-2","bg-gray-800","text-white","rounded-lg","hover:bg-gray-900","transition"],children:[{t:"span",txt:"Save Template"}],events:{click:async()=>{let t=await(await fetch("/savetemplate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:n("#fileName").innerText})})).json();alert(t.message)}}}]}),m=c({t:"div",cn:["fixed","bottom-4","right-4","z-50"],events:{mouseenter:()=>i(m,y),mouseleave:()=>y.remove()},children:[{t:"span",cn:["flex","items-center","justify-center","h-14","w-14","bg-black","text-white","fixed","bottom-22","right-2","rounded-full","shadow-lg","cursor-pointer"],txt:"GR"}]});var _=n("body");var $={hotreload:!1},s,E,g=localStorage.getItem("hotreload");g===null?s=$.hotreload:g==="true"?s=!0:g==="false"&&(s=!1);function h(){let e=s,t=n("#hrcheckbox");localStorage.setItem("hotreload",e),s=!s,e?(t.style.background="#66e666",n(".hrcheckbox").checked=!0,localStorage.setItem("hotreload","true"),E=setTimeout(()=>window.location.reload(),1e3)):(t.style.background="red",n(".hrcheckbox").checked=!1,localStorage.setItem("hotreload","false"),clearTimeout(E))}function v(){return c({t:"p",cn:["bg-gray-200","fixed","bottom-0","z-100","right-0","border-b-1","p-2","rounded-md"],children:[{t:"span",txt:"Press "},{t:"span",cn:["text-green-500","font-bold"],txt:"Alt+h"},{t:"span",txt:" to toggle Hot Reload"},{t:"form",attr:{id:"hrcheckbox"},events:{click:()=>h()},cn:["p-2","bg-red-300"],children:[{t:"label",txt:"Hot Reload "},{t:"input",cn:["hrcheckbox"],attr:{type:"checkbox"}}]}]})}var T=n("body");f==="dev"&&(i(T,m),i(T,v()),h());document.addEventListener("keydown",function(e){e.altKey&&e.key.toLowerCase()==="h"&&(e.preventDefault(),h())});
@@ -1 +0,0 @@
1
- var k=n("body");function l(e){i(k,c({t:"div",cn:["fixed","top-1/2","left-1/2","-translate-x-1/2","-translate-y-1/2","w-11/12","max-w-md","bg-white","text-gray-800","shadow-2xl","border-l-8","border-red-600","rounded-r-lg","z-[100]","p-0","overflow-hidden"],children:[{t:"div",cn:["bg-red-50","p-4","flex","items-center","gap-3"],children:[{t:"h2",cn:["text-red-700","font-bold","text-lg","uppercase","tracking-wider"],txt:"\u26A0\uFE0F System Error"}]},{t:"div",cn:["p-6","bg-white"],children:[{t:"p",cn:["font-mono","text-sm","bg-gray-100","p-3","rounded","border","border-gray-200","break-words"],txt:e},{t:"button",cn:["mt-4","w-full","py-2","bg-gray-800","text-white","rounded","hover:bg-black","transition-colors","cursor-pointer"],txt:"Dismiss",events:{click:t=>t.target.closest(".fixed").remove()}}]}]}))}function n(e){let t=document.querySelector(e);return t||console.warn(`Element not found: ${e}`),t}function i(e,t){try{if(typeof e=="string"&&(e=n(e)),!e)throw new Error("Parent element is null or undefined");if(!t)throw new Error("Child element is null or undefined");e.appendChild(t)}catch(r){l(r)}}function S(e,t){try{if(!e)throw new Error("Element type is required");let r=document.createElement(e);return t&&r.classList.add(...t),r}catch(r){return l(r),null}}function C(e,t){if(!e){console.warn("insertText: Element is null or undefined");return}e.textContent=t}function c(e){try{if(!e)throw new Error("DOM configuration is null or undefined");if(e.nodeType===1)return e;if(!e.t)throw new Error("Element type (t) is required in DOM configuration");let t=["svg","path","circle","rect","line","polygon","polyline","g","defs","clipPath","use"].includes(e.t),r;if(t?(r=document.createElementNS("http://www.w3.org/2000/svg",e.t),e.cn&&r.classList.add(...e.cn)):r=S(e.t,e.cn),!r)throw new Error(`Failed to create element: ${e.t}`);e.txt&&C(r,e.txt);let p=new Set(["value","selected","muted","disabled","selectedIndex","volume"]);if(e.attr)for(let[o,a]of Object.entries(e.attr))try{if(t||o.startsWith("data-")||o.startsWith("aria-"))r.setAttribute(o,a);else if(o in r&&!p.has(o))try{r[o]=a===""?!0:a}catch{r.setAttribute(o,a)}else r.setAttribute(o,a)}catch(d){console.warn(`Failed to set attribute ${o}:`,d)}return e.events&&Object.entries(e.events).forEach(([o,a])=>{try{if(typeof a!="function")throw new Error(`Event handler for '${o}' must be a function`);r.addEventListener(o,a)}catch(d){console.warn(`Failed to add event listener ${o}:`,d)}}),e.children&&e.children.forEach(o=>{try{i(r,c(o))}catch(a){console.warn("Failed to append child:",a)}}),r}catch(t){return l(t),null}}var f="prod";var u=n("#main");function x(){document.querySelectorAll("a").forEach(t=>{t.addEventListener("click",r=>{r.preventDefault(),N(t.href)})}),window.addEventListener("pagehide",()=>{setTimeout(()=>{u.style.transform="translateX(0px)",setTimeout(()=>{try{n(".tempnpdiv").remove()}catch{}},200)},200)})}function N(e){i(u,c({t:"div",cn:["tempnpdiv","top-0","left-[100vw]","fixed","h-screen","w-screen"]}));let t=window.innerWidth;console.log(t),u.style.transition=".2s",u.style.transform=`translateX(-${t}px)`,setTimeout(()=>{window.location.href=e},200)}function b(){let e=n(".loader");e.style.transition=".4s",e.style.opacity="0",f!=="dev"?setTimeout(()=>e.remove(),400):e.remove()}b();x();var O=n("body");function w(e=!0){if(e){let t=c({t:"form",cn:["addpageform","fixed","left-2/5","bg-gray-200","rounded-lg","block","top-2/5","p-2","flex","flex-col","p-5","gap-2"],events:{submit:async r=>{try{r.preventDefault();let p=new FormData(r.target),o=Object.fromEntries(p.entries()),a=await fetch("/addpage",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)}).then(d=>d.json());w(!1),window.location.href=`${o.page}`}catch(p){console.log(p)}}},children:[{t:"label",txt:"ENTER PATH FOR NEW PAGE"},{t:"input",attr:{name:"page"},cn:["pathinput"]}]});i(O,t),n(".pathinput").focus()}else n(".addpageform").remove()}var y=c({t:"div",cn:["fixed","bottom-20","right-4","flex","flex-col","gap-2","bg-white","shadow-lg","rounded-xl","p-3","z-50"],children:[{t:"button",cn:["px-4","py-2","bg-blue-500","text-white","rounded-lg","hover:bg-blue-600","transition"],children:[{t:"span",txt:"New Page"}],events:{click:w}},{t:"button",cn:["px-4","py-2","bg-gray-800","text-white","rounded-lg","hover:bg-gray-900","transition"],children:[{t:"span",txt:"Save Template"}],events:{click:async()=>{let t=await(await fetch("/savetemplate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:n("#fileName").innerText})})).json();alert(t.message)}}}]}),m=c({t:"div",cn:["fixed","bottom-4","right-4","z-50"],events:{mouseenter:()=>i(m,y),mouseleave:()=>y.remove()},children:[{t:"span",cn:["flex","items-center","justify-center","h-14","w-14","bg-black","text-white","fixed","bottom-22","right-2","rounded-full","shadow-lg","cursor-pointer"],txt:"GR"}]});var _=n("body");var $={hotreload:!1},s,E,g=localStorage.getItem("hotreload");g===null?s=$.hotreload:g==="true"?s=!0:g==="false"&&(s=!1);function h(){let e=s,t=n("#hrcheckbox");localStorage.setItem("hotreload",e),s=!s,e?(t.style.background="#66e666",n(".hrcheckbox").checked=!0,localStorage.setItem("hotreload","true"),E=setTimeout(()=>window.location.reload(),1e3)):(t.style.background="red",n(".hrcheckbox").checked=!1,localStorage.setItem("hotreload","false"),clearTimeout(E))}function v(){return c({t:"p",cn:["bg-gray-200","fixed","bottom-0","z-100","right-0","border-b-1","p-2","rounded-md"],children:[{t:"span",txt:"Press "},{t:"span",cn:["text-green-500","font-bold"],txt:"Alt+h"},{t:"span",txt:" to toggle Hot Reload"},{t:"form",attr:{id:"hrcheckbox"},events:{click:()=>h()},cn:["p-2","bg-red-300"],children:[{t:"label",txt:"Hot Reload "},{t:"input",cn:["hrcheckbox"],attr:{type:"checkbox"}}]}]})}var T=n("body");f==="dev"&&(i(T,m),i(T,v()),h());document.addEventListener("keydown",function(e){e.altKey&&e.key.toLowerCase()==="h"&&(e.preventDefault(),h())});
@@ -1 +0,0 @@
1
- var k=n("body");function l(e){i(k,c({t:"div",cn:["fixed","top-1/2","left-1/2","-translate-x-1/2","-translate-y-1/2","w-11/12","max-w-md","bg-white","text-gray-800","shadow-2xl","border-l-8","border-red-600","rounded-r-lg","z-[100]","p-0","overflow-hidden"],children:[{t:"div",cn:["bg-red-50","p-4","flex","items-center","gap-3"],children:[{t:"h2",cn:["text-red-700","font-bold","text-lg","uppercase","tracking-wider"],txt:"\u26A0\uFE0F System Error"}]},{t:"div",cn:["p-6","bg-white"],children:[{t:"p",cn:["font-mono","text-sm","bg-gray-100","p-3","rounded","border","border-gray-200","break-words"],txt:e},{t:"button",cn:["mt-4","w-full","py-2","bg-gray-800","text-white","rounded","hover:bg-black","transition-colors","cursor-pointer"],txt:"Dismiss",events:{click:t=>t.target.closest(".fixed").remove()}}]}]}))}function n(e){let t=document.querySelector(e);return t||console.warn(`Element not found: ${e}`),t}function i(e,t){try{if(typeof e=="string"&&(e=n(e)),!e)throw new Error("Parent element is null or undefined");if(!t)throw new Error("Child element is null or undefined");e.appendChild(t)}catch(r){l(r)}}function S(e,t){try{if(!e)throw new Error("Element type is required");let r=document.createElement(e);return t&&r.classList.add(...t),r}catch(r){return l(r),null}}function C(e,t){if(!e){console.warn("insertText: Element is null or undefined");return}e.textContent=t}function c(e){try{if(!e)throw new Error("DOM configuration is null or undefined");if(e.nodeType===1)return e;if(!e.t)throw new Error("Element type (t) is required in DOM configuration");let t=["svg","path","circle","rect","line","polygon","polyline","g","defs","clipPath","use"].includes(e.t),r;if(t?(r=document.createElementNS("http://www.w3.org/2000/svg",e.t),e.cn&&r.classList.add(...e.cn)):r=S(e.t,e.cn),!r)throw new Error(`Failed to create element: ${e.t}`);e.txt&&C(r,e.txt);let p=new Set(["value","selected","muted","disabled","selectedIndex","volume"]);if(e.attr)for(let[o,a]of Object.entries(e.attr))try{if(t||o.startsWith("data-")||o.startsWith("aria-"))r.setAttribute(o,a);else if(o in r&&!p.has(o))try{r[o]=a===""?!0:a}catch{r.setAttribute(o,a)}else r.setAttribute(o,a)}catch(d){console.warn(`Failed to set attribute ${o}:`,d)}return e.events&&Object.entries(e.events).forEach(([o,a])=>{try{if(typeof a!="function")throw new Error(`Event handler for '${o}' must be a function`);r.addEventListener(o,a)}catch(d){console.warn(`Failed to add event listener ${o}:`,d)}}),e.children&&e.children.forEach(o=>{try{i(r,c(o))}catch(a){console.warn("Failed to append child:",a)}}),r}catch(t){return l(t),null}}var f="prod";var u=n("#main");function x(){document.querySelectorAll("a").forEach(t=>{t.addEventListener("click",r=>{r.preventDefault(),N(t.href)})}),window.addEventListener("pagehide",()=>{setTimeout(()=>{u.style.transform="translateX(0px)",setTimeout(()=>{try{n(".tempnpdiv").remove()}catch{}},200)},200)})}function N(e){i(u,c({t:"div",cn:["tempnpdiv","top-0","left-[100vw]","fixed","h-screen","w-screen"]}));let t=window.innerWidth;console.log(t),u.style.transition=".2s",u.style.transform=`translateX(-${t}px)`,setTimeout(()=>{window.location.href=e},200)}function b(){let e=n(".loader");e.style.transition=".4s",e.style.opacity="0",f!=="dev"?setTimeout(()=>e.remove(),400):e.remove()}b();x();var O=n("body");function w(e=!0){if(e){let t=c({t:"form",cn:["addpageform","fixed","left-2/5","bg-gray-200","rounded-lg","block","top-2/5","p-2","flex","flex-col","p-5","gap-2"],events:{submit:async r=>{try{r.preventDefault();let p=new FormData(r.target),o=Object.fromEntries(p.entries()),a=await fetch("/addpage",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)}).then(d=>d.json());w(!1),window.location.href=`${o.page}`}catch(p){console.log(p)}}},children:[{t:"label",txt:"ENTER PATH FOR NEW PAGE"},{t:"input",attr:{name:"page"},cn:["pathinput"]}]});i(O,t),n(".pathinput").focus()}else n(".addpageform").remove()}var y=c({t:"div",cn:["fixed","bottom-20","right-4","flex","flex-col","gap-2","bg-white","shadow-lg","rounded-xl","p-3","z-50"],children:[{t:"button",cn:["px-4","py-2","bg-blue-500","text-white","rounded-lg","hover:bg-blue-600","transition"],children:[{t:"span",txt:"New Page"}],events:{click:w}},{t:"button",cn:["px-4","py-2","bg-gray-800","text-white","rounded-lg","hover:bg-gray-900","transition"],children:[{t:"span",txt:"Save Template"}],events:{click:async()=>{let t=await(await fetch("/savetemplate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:n("#fileName").innerText})})).json();alert(t.message)}}}]}),m=c({t:"div",cn:["fixed","bottom-4","right-4","z-50"],events:{mouseenter:()=>i(m,y),mouseleave:()=>y.remove()},children:[{t:"span",cn:["flex","items-center","justify-center","h-14","w-14","bg-black","text-white","fixed","bottom-22","right-2","rounded-full","shadow-lg","cursor-pointer"],txt:"GR"}]});var _=n("body");var $={hotreload:!1},s,E,g=localStorage.getItem("hotreload");g===null?s=$.hotreload:g==="true"?s=!0:g==="false"&&(s=!1);function h(){let e=s,t=n("#hrcheckbox");localStorage.setItem("hotreload",e),s=!s,e?(t.style.background="#66e666",n(".hrcheckbox").checked=!0,localStorage.setItem("hotreload","true"),E=setTimeout(()=>window.location.reload(),1e3)):(t.style.background="red",n(".hrcheckbox").checked=!1,localStorage.setItem("hotreload","false"),clearTimeout(E))}function v(){return c({t:"p",cn:["bg-gray-200","fixed","bottom-0","z-100","right-0","border-b-1","p-2","rounded-md"],children:[{t:"span",txt:"Press "},{t:"span",cn:["text-green-500","font-bold"],txt:"Alt+h"},{t:"span",txt:" to toggle Hot Reload"},{t:"form",attr:{id:"hrcheckbox"},events:{click:()=>h()},cn:["p-2","bg-red-300"],children:[{t:"label",txt:"Hot Reload "},{t:"input",cn:["hrcheckbox"],attr:{type:"checkbox"}}]}]})}var T=n("body");f==="dev"&&(i(T,m),i(T,v()),h());document.addEventListener("keydown",function(e){e.altKey&&e.key.toLowerCase()==="h"&&(e.preventDefault(),h())});
@@ -1,99 +0,0 @@
1
-
2
- import { gardener, fetchElement, replaceElement } from '../gardener.js'
3
- import addNotification from './notification.js';
4
-
5
- export function copybtn() {
6
- return gardener({
7
- "t": "button",
8
- events: {
9
- click: () => {
10
- try {
11
- navigator.clipboard.writeText(fetchElement('.initCommand').innerText)
12
- replaceElement('.copybtn', copybtn());
13
- addNotification({ status: 'success', message: 'Copied' })
14
- }
15
- catch (err) {
16
- addNotification({
17
- status: 'failure', message: "Couldn't Copy"
18
- });
19
- }
20
-
21
- }
22
- },
23
- "cn": [
24
- "copybtn",
25
- "flex",
26
- "items-center",
27
- "justify-center",
28
- "p-2",
29
- "text-gray-400",
30
- "hover:text-white",
31
- "hover:bg-white/10",
32
- "rounded",
33
- "transition-all",
34
- "duration-200",
35
- "active:scale-95"
36
- ],
37
- "children": [
38
- {
39
- "t": "span",
40
- "cn": [
41
- "w-5",
42
- "h-5"
43
- ],
44
- "children": [
45
- {
46
- "t": "svg",
47
- "cn": [
48
- "icon",
49
- "icon-tabler",
50
- "icons-tabler-outline",
51
- "icon-tabler-clipboard-check"
52
- ],
53
- "attr": {
54
- "xmlns": "http://www.w3.org/2000/svg",
55
- "width": "24",
56
- "height": "24",
57
- "viewBox": "0 0 24 24",
58
- "fill": "none",
59
- "stroke": "currentColor",
60
- "stroke-width": "2",
61
- "stroke-linecap": "round",
62
- "stroke-linejoin": "round"
63
- },
64
- "children": [
65
- {
66
- "t": "path",
67
- "attr": {
68
- "stroke": "none",
69
- "d": "M0 0h24v24H0z",
70
- "fill": "none"
71
- }
72
- },
73
- {
74
- "t": "path",
75
- "attr": {
76
- "d": "M9 5h-2a2 2 0 0 0 -2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-12a2 2 0 0 0 -2 -2h-2"
77
- }
78
- },
79
- {
80
- "t": "path",
81
- "attr": {
82
- "d": "M9 5a2 2 0 0 1 2 -2h2a2 2 0 0 1 2 2a2 2 0 0 1 -2 2h-2a2 2 0 0 1 -2 -2"
83
- }
84
- },
85
- {
86
- "t": "path",
87
- "attr": {
88
- "d": "M9 14l2 2l4 -4"
89
- }
90
- }
91
- ]
92
- }
93
- ]
94
- }
95
- ]
96
- })
97
- }
98
-
99
-
@@ -1,33 +0,0 @@
1
-
2
- import { gardener, fetchElement, replaceElement } from '../gardener.js'
3
-
4
- export function footer({mystery}) {
5
- return gardener({
6
- "t": "footer",
7
- "cn": [
8
- "bg-green-900",
9
- "text-green-100",
10
- "py-12",
11
- "text-center"
12
- ],
13
- "children": [
14
- {
15
- "t": "p",
16
- "cn": [
17
- "text-xl",
18
- "italic"
19
- ],
20
- "txt": "\"Because sometimes you don't need a forest. Just a garden.\""
21
- },
22
- {
23
- "t": "div",
24
- "cn": [
25
- "mt-6",
26
- "text-sm",
27
- "opacity-70"
28
- ],
29
- "txt": "MIT Licensed | Built on Express & EJS "+mystery+""
30
- }
31
- ]
32
- })
33
- }
@@ -1,47 +0,0 @@
1
- import { gardener, fetchElement, appendElement } from '../../gardener.js'
2
-
3
- const body = fetchElement('body');
4
-
5
- export function gardenerError(error) {
6
- appendElement(body, gardener({
7
- t: 'div',
8
- // Added: centering, shadow, border-left for "alert" feel, and high z-index
9
- cn: [
10
- 'fixed', 'top-1/2', 'left-1/2', '-translate-x-1/2', '-translate-y-1/2',
11
- 'w-11/12', 'max-w-md', 'bg-white', 'text-gray-800', 'shadow-2xl',
12
- 'border-l-8', 'border-red-600', 'rounded-r-lg', 'z-[100]', 'p-0', 'overflow-hidden'
13
- ],
14
- children: [
15
- {
16
- t: 'div',
17
- cn: ['bg-red-50', 'p-4', 'flex', 'items-center', 'gap-3'],
18
- children: [
19
- {
20
- t: 'h2',
21
- cn: ['text-red-700', 'font-bold', 'text-lg', 'uppercase', 'tracking-wider'],
22
- txt: '⚠️ System Error'
23
- }
24
- ]
25
- },
26
- {
27
- t: 'div',
28
- cn: ['p-6', 'bg-white'],
29
- children: [
30
- {
31
- t: 'p',
32
- cn: ['font-mono', 'text-sm', 'bg-gray-100', 'p-3', 'rounded', 'border', 'border-gray-200', 'break-words'],
33
- txt: error
34
- },
35
- {
36
- t: 'button',
37
- cn: ['mt-4', 'w-full', 'py-2', 'bg-gray-800', 'text-white', 'rounded', 'hover:bg-black', 'transition-colors', 'cursor-pointer'],
38
- txt: 'Dismiss',
39
- events: {
40
- click: (e) => e.target.closest('.fixed').remove()
41
- }
42
- }
43
- ]
44
- }
45
- ]
46
- }))
47
- }
@@ -1,82 +0,0 @@
1
- import { gardener, fetchElement, appendElement } from '../../gardener.js'
2
- import { gardenerError } from './errorBox.js';
3
-
4
- const config = {
5
- hotreload: false
6
- }
7
-
8
- let hotReload;
9
- let hotReloadtimeout;
10
- const localStore = localStorage.getItem('hotreload');
11
-
12
- if (localStore === null) hotReload = config.hotreload;
13
- else if (localStore === 'true') hotReload = true
14
- else if (localStore === 'false') hotReload = false
15
-
16
-
17
- export function togglehotreload() {
18
- const hr = hotReload;
19
- const hrcheck = fetchElement('#hrcheckbox');
20
-
21
- localStorage.setItem('hotreload', hr);
22
-
23
- hotReload = !hotReload;
24
-
25
- if (hr) {
26
- hrcheck.style.background = '#66e666';
27
- fetchElement('.hrcheckbox').checked = true;
28
- localStorage.setItem('hotreload', 'true');
29
- hotReloadtimeout = setTimeout(() => window.location.reload(), 1000);
30
- }
31
- else {
32
- hrcheck.style.background = 'red';
33
- fetchElement('.hrcheckbox').checked = false;
34
- localStorage.setItem('hotreload', 'false');
35
- clearTimeout(hotReloadtimeout);
36
- }
37
-
38
- //localStorage.setItem('hotreload', hotReload);
39
- }
40
-
41
- export function hotReloadBtn() {
42
- return gardener({
43
- t: 'p',
44
- cn: ['bg-gray-200', 'fixed', 'bottom-0', 'z-100', 'right-0', 'border-b-1', 'p-2', 'rounded-md'],
45
- children: [
46
- {
47
- t: 'span',
48
- txt: 'Press '
49
- },
50
- {
51
- t: 'span',
52
- cn: ['text-green-500', 'font-bold'],
53
- txt: 'Alt+h'
54
- },
55
- {
56
- t: 'span',
57
- txt: ' to toggle Hot Reload'
58
- },
59
- {
60
- t: 'form',
61
- attr: {
62
- id: 'hrcheckbox',
63
- },
64
- events: {
65
- click: () => togglehotreload()
66
- },
67
- cn: ['p-2', 'bg-red-300'],
68
- children: [{
69
- t: 'label',
70
- txt: 'Hot Reload ',
71
- }
72
- , {
73
- t: 'input',
74
- cn: ['hrcheckbox'],
75
- attr: {
76
- type: 'checkbox'
77
- }
78
- }]
79
- }
80
- ]
81
- })
82
- }
@@ -1,138 +0,0 @@
1
- import { gardener, fetchElement, appendElement } from '../../gardener.js'
2
-
3
- const body = fetchElement('body');
4
-
5
- function opnPagedialog(btn = true) {
6
- if (btn) {
7
- const dialog = gardener({
8
- t: 'form', cn: ['addpageform', 'fixed', 'left-2/5', 'bg-gray-200', 'rounded-lg', 'block', 'top-2/5', 'p-2', 'flex', 'flex-col', 'p-5', 'gap-2'], events: {
9
- submit: async (e) => {
10
- try {
11
- e.preventDefault()
12
- const data = new FormData(e.target);
13
- const input = Object.fromEntries(data.entries());
14
-
15
- const response = await fetch('/addpage', {
16
- method: 'POST',
17
- headers: {
18
- "Content-Type": 'application/json'
19
- },
20
- body: JSON.stringify(input)
21
- }).then(res => res.json())
22
- opnPagedialog(false)
23
- window.location.href = `${input.page}`
24
- }
25
- catch (err) {
26
- console.log(err)
27
- }
28
-
29
- }
30
- }, children: [{
31
- t: 'label',
32
- txt: 'ENTER PATH FOR NEW PAGE'
33
- }, { t: 'input', attr: { name: 'page' }, cn: ['pathinput'] }]
34
-
35
- })
36
-
37
- appendElement(body, dialog);
38
- fetchElement('.pathinput').focus();
39
- }
40
- else {
41
- fetchElement('.addpageform').remove();
42
- }
43
- }
44
-
45
-
46
-
47
- const pagebtns = gardener({
48
- t: 'div',
49
- cn: [
50
- 'fixed',
51
- 'bottom-20',
52
- 'right-4',
53
- 'flex',
54
- 'flex-col',
55
- 'gap-2',
56
- 'bg-white',
57
- 'shadow-lg',
58
- 'rounded-xl',
59
- 'p-3',
60
- 'z-50'
61
- ],
62
- children: [
63
- {
64
- t: 'button',
65
- cn: [
66
- 'px-4',
67
- 'py-2',
68
- 'bg-blue-500',
69
- 'text-white',
70
- 'rounded-lg',
71
- 'hover:bg-blue-600',
72
- 'transition'
73
- ],
74
- children: [{ t: 'span', txt: 'New Page' }],
75
- events: {
76
- click: opnPagedialog
77
- }
78
- },
79
- {
80
- t: 'button',
81
- cn: [
82
- 'px-4',
83
- 'py-2',
84
- 'bg-gray-800',
85
- 'text-white',
86
- 'rounded-lg',
87
- 'hover:bg-gray-900',
88
- 'transition'
89
- ],
90
- children: [{ t: 'span', txt: 'Save Template' }],
91
- events: {
92
- click: async () => {
93
- const result = await fetch('/savetemplate', {
94
- method: 'POST',
95
- headers: { "Content-Type": 'application/json' },
96
- body: JSON.stringify({ path: fetchElement('#fileName').innerText })
97
- });
98
-
99
- const data = await result.json(); // ✅ fix
100
- alert(data.message);
101
- }
102
- }
103
- }
104
- ]
105
- });
106
-
107
-
108
- export const addPagebtn = gardener({
109
- t: 'div',
110
- cn: ['fixed', 'bottom-4', 'right-4', 'z-50'],
111
- events: {
112
- mouseenter: () => appendElement(addPagebtn, pagebtns),
113
- mouseleave: () => pagebtns.remove()
114
- },
115
- children: [
116
- {
117
- t: 'span',
118
- // cn: ['pb-1.5', 'flex', 'items-center', 'justify-center', 'h-15', 'w-15', 'bg-black', 'text-white', 'fixed', 'bottom-22', 'right-2'],
119
-
120
- cn: [
121
- 'flex',
122
- 'items-center',
123
- 'justify-center',
124
- 'h-14',
125
- 'w-14',
126
- 'bg-black',
127
- 'text-white',
128
- 'fixed',
129
- 'bottom-22',
130
- 'right-2',
131
- 'rounded-full',
132
- 'shadow-lg',
133
- 'cursor-pointer',
134
- ],
135
- txt: 'GR'
136
- }
137
- ]
138
- });