@beknurakhmed/webforge-cli 0.1.0 → 0.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 (324) hide show
  1. package/README.md +226 -212
  2. package/package.json +63 -63
  3. package/templates/extras/typescript/deps.json +6 -0
  4. package/templates/extras/typescript/react/tsconfig.json +21 -0
  5. package/templates/extras/typescript/vanilla/tsconfig.json +19 -0
  6. package/templates/extras/typescript/vue/tsconfig.json +20 -0
  7. package/templates/overlays/blog/angular/src/app/app.component.ts +100 -0
  8. package/templates/overlays/blog/angular/src/app/app.routes.ts +12 -0
  9. package/templates/overlays/blog/angular/src/app/components/blog-sidebar.component.ts +115 -0
  10. package/templates/overlays/blog/angular/src/app/components/post-card.component.ts +94 -0
  11. package/templates/overlays/blog/angular/src/app/pages/about.component.ts +114 -0
  12. package/templates/overlays/blog/angular/src/app/pages/category.component.ts +141 -0
  13. package/templates/overlays/blog/angular/src/app/pages/home.component.ts +143 -0
  14. package/templates/overlays/blog/angular/src/app/pages/post-detail.component.ts +196 -0
  15. package/templates/overlays/blog/angular/src/main.ts +10 -0
  16. package/templates/overlays/blog/nextjs/src/app/about/page.tsx +55 -0
  17. package/templates/overlays/blog/nextjs/src/app/category/[slug]/page.tsx +52 -0
  18. package/templates/overlays/blog/nextjs/src/app/components/BlogFooter.tsx +46 -0
  19. package/templates/overlays/blog/nextjs/src/app/components/BlogHeader.tsx +37 -0
  20. package/templates/overlays/blog/nextjs/src/app/components/BlogSidebar.tsx +56 -0
  21. package/templates/overlays/blog/nextjs/src/app/components/PostCard.tsx +42 -0
  22. package/templates/overlays/blog/nextjs/src/app/globals.css +158 -0
  23. package/templates/overlays/blog/nextjs/src/app/layout.tsx +20 -0
  24. package/templates/overlays/blog/nextjs/src/app/page.tsx +36 -0
  25. package/templates/overlays/blog/nextjs/src/app/post/[id]/page.tsx +78 -0
  26. package/templates/overlays/blog/nuxt/app.vue +27 -0
  27. package/templates/overlays/blog/nuxt/components/BlogFooter.vue +48 -0
  28. package/templates/overlays/blog/nuxt/components/BlogHeader.vue +55 -0
  29. package/templates/overlays/blog/nuxt/components/BlogSidebar.vue +144 -0
  30. package/templates/overlays/blog/nuxt/components/PostCard.vue +125 -0
  31. package/templates/overlays/blog/nuxt/layouts/default.vue +25 -0
  32. package/templates/overlays/blog/nuxt/pages/about.vue +161 -0
  33. package/templates/overlays/blog/nuxt/pages/category/[slug].vue +80 -0
  34. package/templates/overlays/blog/nuxt/pages/index.vue +54 -0
  35. package/templates/overlays/blog/nuxt/pages/post/[id].vue +158 -0
  36. package/templates/overlays/blog/react/src/App.css +58 -18
  37. package/templates/overlays/blog/react/src/App.tsx +16 -31
  38. package/templates/overlays/blog/react/src/components/BlogFooter.tsx +4 -2
  39. package/templates/overlays/blog/react/src/components/BlogHeader.tsx +12 -6
  40. package/templates/overlays/blog/react/src/components/BlogSidebar.tsx +9 -8
  41. package/templates/overlays/blog/react/src/components/Layout.tsx +17 -0
  42. package/templates/overlays/blog/react/src/components/PostCard.tsx +30 -0
  43. package/templates/overlays/blog/react/src/data/posts.ts +22 -0
  44. package/templates/overlays/blog/react/src/pages/About.tsx +33 -0
  45. package/templates/overlays/blog/react/src/pages/Category.tsx +29 -0
  46. package/templates/overlays/blog/react/src/pages/Home.tsx +18 -0
  47. package/templates/overlays/blog/react/src/pages/PostDetail.tsx +38 -0
  48. package/templates/overlays/blog/vanilla/src/main.ts +112 -0
  49. package/templates/overlays/blog/vanilla/src/pages/about.ts +106 -0
  50. package/templates/overlays/blog/vanilla/src/pages/category.ts +86 -0
  51. package/templates/overlays/blog/vanilla/src/pages/home.ts +103 -0
  52. package/templates/overlays/blog/vanilla/src/pages/post-detail.ts +108 -0
  53. package/templates/overlays/blog/vanilla/src/router.ts +33 -0
  54. package/templates/overlays/blog/vanilla/src/style.css +677 -0
  55. package/templates/overlays/blog/vue/src/App.vue +29 -0
  56. package/templates/overlays/blog/vue/src/components/BlogFooter.vue +8 -0
  57. package/templates/overlays/blog/vue/src/components/BlogHeader.vue +14 -0
  58. package/templates/overlays/blog/vue/src/components/BlogSidebar.vue +31 -0
  59. package/templates/overlays/blog/vue/src/components/PostCard.vue +17 -0
  60. package/templates/overlays/blog/vue/src/data.ts +82 -0
  61. package/templates/overlays/blog/vue/src/main.ts +6 -0
  62. package/templates/overlays/blog/vue/src/pages/About.vue +17 -0
  63. package/templates/overlays/blog/vue/src/pages/Category.vue +32 -0
  64. package/templates/overlays/blog/vue/src/pages/Home.vue +14 -0
  65. package/templates/overlays/blog/vue/src/pages/PostDetail.vue +22 -0
  66. package/templates/overlays/blog/vue/src/router.ts +19 -0
  67. package/templates/overlays/blog/vue/src/style.css +288 -0
  68. package/templates/overlays/crm/angular/src/app/app.component.ts +110 -0
  69. package/templates/overlays/crm/angular/src/app/app.routes.ts +12 -0
  70. package/templates/overlays/crm/angular/src/app/components/contacts-table.component.ts +98 -0
  71. package/templates/overlays/crm/angular/src/app/components/stats-cards.component.ts +63 -0
  72. package/templates/overlays/crm/angular/src/app/pages/contacts.component.ts +70 -0
  73. package/templates/overlays/crm/angular/src/app/pages/dashboard-home.component.ts +38 -0
  74. package/templates/overlays/crm/angular/src/app/pages/deals.component.ts +145 -0
  75. package/templates/overlays/crm/angular/src/app/pages/settings.component.ts +103 -0
  76. package/templates/overlays/crm/angular/src/main.ts +8 -0
  77. package/templates/overlays/crm/nextjs/src/app/components/ContactsTable.tsx +69 -0
  78. package/templates/overlays/crm/nextjs/src/app/components/Sidebar.tsx +45 -0
  79. package/templates/overlays/crm/nextjs/src/app/components/StatsCards.tsx +31 -0
  80. package/templates/overlays/crm/nextjs/src/app/contacts/page.tsx +111 -0
  81. package/templates/overlays/crm/nextjs/src/app/deals/page.tsx +111 -0
  82. package/templates/overlays/crm/nextjs/src/app/globals.css +165 -0
  83. package/templates/overlays/crm/nextjs/src/app/layout.tsx +20 -0
  84. package/templates/overlays/crm/nextjs/src/app/page.tsx +43 -0
  85. package/templates/overlays/crm/nextjs/src/app/settings/page.tsx +91 -0
  86. package/templates/overlays/crm/nuxt/app.vue +27 -0
  87. package/templates/overlays/crm/nuxt/components/ContactsTable.vue +140 -0
  88. package/templates/overlays/crm/nuxt/components/CrmSidebar.vue +97 -0
  89. package/templates/overlays/crm/nuxt/components/StatsCards.vue +63 -0
  90. package/templates/overlays/crm/nuxt/layouts/default.vue +21 -0
  91. package/templates/overlays/crm/nuxt/pages/contacts.vue +79 -0
  92. package/templates/overlays/crm/nuxt/pages/deals.vue +229 -0
  93. package/templates/overlays/crm/nuxt/pages/index.vue +186 -0
  94. package/templates/overlays/crm/nuxt/pages/settings.vue +233 -0
  95. package/templates/overlays/crm/react/src/App.css +49 -20
  96. package/templates/overlays/crm/react/src/App.tsx +16 -41
  97. package/templates/overlays/crm/react/src/components/ContactsTable.tsx +8 -8
  98. package/templates/overlays/crm/react/src/components/Layout.tsx +15 -0
  99. package/templates/overlays/crm/react/src/components/Sidebar.tsx +20 -14
  100. package/templates/overlays/crm/react/src/components/StatsCards.tsx +10 -12
  101. package/templates/overlays/crm/react/src/data/contacts.ts +19 -0
  102. package/templates/overlays/crm/react/src/pages/Contacts.tsx +32 -0
  103. package/templates/overlays/crm/react/src/pages/DashboardHome.tsx +44 -0
  104. package/templates/overlays/crm/react/src/pages/Deals.tsx +48 -0
  105. package/templates/overlays/crm/react/src/pages/Settings.tsx +35 -0
  106. package/templates/overlays/crm/vanilla/src/main.ts +95 -0
  107. package/templates/overlays/crm/vanilla/src/pages/contacts.ts +87 -0
  108. package/templates/overlays/crm/vanilla/src/pages/dashboard-home.ts +121 -0
  109. package/templates/overlays/crm/vanilla/src/pages/deals.ts +116 -0
  110. package/templates/overlays/crm/vanilla/src/pages/settings.ts +129 -0
  111. package/templates/overlays/crm/vanilla/src/router.ts +33 -0
  112. package/templates/overlays/crm/vanilla/src/style.css +766 -0
  113. package/templates/overlays/crm/vue/src/App.vue +25 -0
  114. package/templates/overlays/crm/vue/src/components/ContactsTable.vue +30 -0
  115. package/templates/overlays/crm/vue/src/components/CrmSidebar.vue +14 -0
  116. package/templates/overlays/crm/vue/src/components/StatsCards.vue +23 -0
  117. package/templates/overlays/crm/vue/src/data.ts +38 -0
  118. package/templates/overlays/crm/vue/src/main.ts +6 -0
  119. package/templates/overlays/crm/vue/src/pages/Contacts.vue +25 -0
  120. package/templates/overlays/crm/vue/src/pages/DashboardHome.vue +19 -0
  121. package/templates/overlays/crm/vue/src/pages/Deals.vue +34 -0
  122. package/templates/overlays/crm/vue/src/pages/Settings.vue +33 -0
  123. package/templates/overlays/crm/vue/src/router.ts +19 -0
  124. package/templates/overlays/crm/vue/src/style.css +272 -0
  125. package/templates/overlays/dashboard/angular/src/app/app.component.ts +135 -0
  126. package/templates/overlays/dashboard/angular/src/app/app.routes.ts +24 -0
  127. package/templates/overlays/dashboard/angular/src/app/components/chart-placeholder.component.ts +86 -0
  128. package/templates/overlays/dashboard/angular/src/app/components/data-table.component.ts +140 -0
  129. package/templates/overlays/dashboard/angular/src/app/components/kpi-cards.component.ts +120 -0
  130. package/templates/overlays/dashboard/angular/src/app/pages/analytics.component.ts +138 -0
  131. package/templates/overlays/dashboard/angular/src/app/pages/overview.component.ts +58 -0
  132. package/templates/overlays/dashboard/angular/src/app/pages/settings.component.ts +128 -0
  133. package/templates/overlays/dashboard/angular/src/app/pages/users.component.ts +153 -0
  134. package/templates/overlays/dashboard/angular/src/main.ts +10 -0
  135. package/templates/overlays/dashboard/nextjs/src/app/analytics/page.tsx +76 -0
  136. package/templates/overlays/dashboard/nextjs/src/app/components/ChartPlaceholder.tsx +58 -0
  137. package/templates/overlays/dashboard/nextjs/src/app/components/DataTable.tsx +60 -0
  138. package/templates/overlays/dashboard/nextjs/src/app/components/KPICards.tsx +31 -0
  139. package/templates/overlays/dashboard/nextjs/src/app/components/Sidebar.tsx +45 -0
  140. package/templates/overlays/dashboard/nextjs/src/app/globals.css +150 -0
  141. package/templates/overlays/dashboard/nextjs/src/app/layout.tsx +20 -0
  142. package/templates/overlays/dashboard/nextjs/src/app/page.tsx +20 -0
  143. package/templates/overlays/dashboard/nextjs/src/app/settings/page.tsx +118 -0
  144. package/templates/overlays/dashboard/nextjs/src/app/users/page.tsx +99 -0
  145. package/templates/overlays/dashboard/nuxt/app.vue +27 -0
  146. package/templates/overlays/dashboard/nuxt/components/ChartPlaceholder.vue +73 -0
  147. package/templates/overlays/dashboard/nuxt/components/DashSidebar.vue +97 -0
  148. package/templates/overlays/dashboard/nuxt/components/DataTable.vue +126 -0
  149. package/templates/overlays/dashboard/nuxt/components/KPICards.vue +76 -0
  150. package/templates/overlays/dashboard/nuxt/layouts/default.vue +21 -0
  151. package/templates/overlays/dashboard/nuxt/pages/analytics.vue +94 -0
  152. package/templates/overlays/dashboard/nuxt/pages/index.vue +49 -0
  153. package/templates/overlays/dashboard/nuxt/pages/settings.vue +239 -0
  154. package/templates/overlays/dashboard/nuxt/pages/users.vue +227 -0
  155. package/templates/overlays/dashboard/react/src/App.css +50 -24
  156. package/templates/overlays/dashboard/react/src/App.tsx +16 -22
  157. package/templates/overlays/dashboard/react/src/components/ChartPlaceholder.tsx +5 -2
  158. package/templates/overlays/dashboard/react/src/components/DataTable.tsx +9 -1
  159. package/templates/overlays/dashboard/react/src/components/KPICards.tsx +4 -4
  160. package/templates/overlays/dashboard/react/src/components/Layout.tsx +13 -0
  161. package/templates/overlays/dashboard/react/src/components/Sidebar.tsx +15 -10
  162. package/templates/overlays/dashboard/react/src/pages/Analytics.tsx +33 -0
  163. package/templates/overlays/dashboard/react/src/pages/Overview.tsx +23 -0
  164. package/templates/overlays/dashboard/react/src/pages/Settings.tsx +41 -0
  165. package/templates/overlays/dashboard/react/src/pages/Users.tsx +57 -0
  166. package/templates/overlays/dashboard/vanilla/src/main.ts +101 -0
  167. package/templates/overlays/dashboard/vanilla/src/pages/analytics.ts +99 -0
  168. package/templates/overlays/dashboard/vanilla/src/pages/overview.ts +60 -0
  169. package/templates/overlays/dashboard/vanilla/src/pages/settings.ts +118 -0
  170. package/templates/overlays/dashboard/vanilla/src/pages/users.ts +80 -0
  171. package/templates/overlays/dashboard/vanilla/src/router.ts +33 -0
  172. package/templates/overlays/dashboard/vanilla/src/style.css +654 -0
  173. package/templates/overlays/dashboard/vue/src/App.vue +12 -0
  174. package/templates/overlays/dashboard/vue/src/components/ChartPlaceholder.vue +34 -0
  175. package/templates/overlays/dashboard/vue/src/components/DashSidebar.vue +19 -0
  176. package/templates/overlays/dashboard/vue/src/components/DataTable.vue +34 -0
  177. package/templates/overlays/dashboard/vue/src/components/KPICards.vue +18 -0
  178. package/templates/overlays/dashboard/vue/src/main.ts +6 -0
  179. package/templates/overlays/dashboard/vue/src/pages/Analytics.vue +32 -0
  180. package/templates/overlays/dashboard/vue/src/pages/Overview.vue +17 -0
  181. package/templates/overlays/dashboard/vue/src/pages/Settings.vue +65 -0
  182. package/templates/overlays/dashboard/vue/src/pages/Users.vue +44 -0
  183. package/templates/overlays/dashboard/vue/src/router.ts +15 -0
  184. package/templates/overlays/dashboard/vue/src/style.css +447 -0
  185. package/templates/overlays/ecommerce/angular/src/app/app.component.ts +147 -0
  186. package/templates/overlays/ecommerce/angular/src/app/app.routes.ts +10 -0
  187. package/templates/overlays/ecommerce/angular/src/app/components/product-card.component.ts +94 -0
  188. package/templates/overlays/ecommerce/angular/src/app/data/products.ts +75 -0
  189. package/templates/overlays/ecommerce/angular/src/app/pages/cart.component.ts +169 -0
  190. package/templates/overlays/ecommerce/angular/src/app/pages/home.component.ts +96 -0
  191. package/templates/overlays/ecommerce/angular/src/app/pages/product-detail.component.ts +124 -0
  192. package/templates/overlays/ecommerce/angular/src/main.ts +10 -0
  193. package/templates/overlays/ecommerce/nextjs/src/app/cart/page.tsx +74 -0
  194. package/templates/overlays/ecommerce/nextjs/src/app/components/CartProvider.tsx +80 -0
  195. package/templates/overlays/ecommerce/nextjs/src/app/components/Footer.tsx +44 -0
  196. package/templates/overlays/ecommerce/nextjs/src/app/components/Header.tsx +27 -0
  197. package/templates/overlays/ecommerce/nextjs/src/app/components/ProductCard.tsx +23 -0
  198. package/templates/overlays/ecommerce/nextjs/src/app/globals.css +144 -0
  199. package/templates/overlays/ecommerce/nextjs/src/app/layout.tsx +23 -0
  200. package/templates/overlays/ecommerce/nextjs/src/app/page.tsx +73 -0
  201. package/templates/overlays/ecommerce/nextjs/src/app/product/[id]/page.tsx +63 -0
  202. package/templates/overlays/ecommerce/nuxt/app.vue +27 -0
  203. package/templates/overlays/ecommerce/nuxt/components/ProductCard.vue +77 -0
  204. package/templates/overlays/ecommerce/nuxt/components/StoreFooter.vue +47 -0
  205. package/templates/overlays/ecommerce/nuxt/components/StoreHeader.vue +91 -0
  206. package/templates/overlays/ecommerce/nuxt/layouts/default.vue +43 -0
  207. package/templates/overlays/ecommerce/nuxt/pages/cart.vue +268 -0
  208. package/templates/overlays/ecommerce/nuxt/pages/index.vue +154 -0
  209. package/templates/overlays/ecommerce/nuxt/pages/product/[id].vue +211 -0
  210. package/templates/overlays/ecommerce/react/src/App.css +71 -59
  211. package/templates/overlays/ecommerce/react/src/App.tsx +18 -44
  212. package/templates/overlays/ecommerce/react/src/components/Footer.tsx +2 -2
  213. package/templates/overlays/ecommerce/react/src/components/Header.tsx +15 -14
  214. package/templates/overlays/ecommerce/react/src/components/Layout.tsx +20 -0
  215. package/templates/overlays/ecommerce/react/src/components/ProductCard.tsx +28 -0
  216. package/templates/overlays/ecommerce/react/src/data/products.ts +23 -0
  217. package/templates/overlays/ecommerce/react/src/pages/Cart.tsx +51 -0
  218. package/templates/overlays/ecommerce/react/src/pages/Home.tsx +37 -0
  219. package/templates/overlays/ecommerce/react/src/pages/ProductDetail.tsx +38 -0
  220. package/templates/overlays/ecommerce/vanilla/src/main.ts +73 -0
  221. package/templates/overlays/ecommerce/vanilla/src/pages/cart.ts +73 -0
  222. package/templates/overlays/ecommerce/vanilla/src/pages/home.ts +71 -0
  223. package/templates/overlays/ecommerce/vanilla/src/pages/product-detail.ts +81 -0
  224. package/templates/overlays/ecommerce/vanilla/src/router.ts +33 -0
  225. package/templates/overlays/ecommerce/vanilla/src/style.css +522 -0
  226. package/templates/overlays/ecommerce/vue/src/App.vue +17 -32
  227. package/templates/overlays/ecommerce/vue/src/components/ProductCard.vue +25 -0
  228. package/templates/overlays/ecommerce/vue/src/components/StoreFooter.vue +6 -12
  229. package/templates/overlays/ecommerce/vue/src/components/StoreHeader.vue +5 -23
  230. package/templates/overlays/ecommerce/vue/src/data.ts +23 -0
  231. package/templates/overlays/ecommerce/vue/src/main.ts +6 -0
  232. package/templates/overlays/ecommerce/vue/src/pages/Cart.vue +34 -0
  233. package/templates/overlays/ecommerce/vue/src/pages/Home.vue +27 -0
  234. package/templates/overlays/ecommerce/vue/src/pages/ProductDetail.vue +27 -0
  235. package/templates/overlays/ecommerce/vue/src/router.ts +13 -0
  236. package/templates/overlays/ecommerce/vue/src/style.css +359 -0
  237. package/templates/overlays/portfolio/angular/src/app/app.component.ts +102 -0
  238. package/templates/overlays/portfolio/angular/src/app/app.routes.ts +12 -0
  239. package/templates/overlays/portfolio/angular/src/app/components/project-card.component.ts +86 -0
  240. package/templates/overlays/portfolio/angular/src/app/components/skills-grid.component.ts +88 -0
  241. package/templates/overlays/portfolio/angular/src/app/pages/about.component.ts +122 -0
  242. package/templates/overlays/portfolio/angular/src/app/pages/contact.component.ts +131 -0
  243. package/templates/overlays/portfolio/angular/src/app/pages/home.component.ts +207 -0
  244. package/templates/overlays/portfolio/angular/src/app/pages/projects.component.ts +150 -0
  245. package/templates/overlays/portfolio/angular/src/main.ts +10 -0
  246. package/templates/overlays/portfolio/nextjs/src/app/about/page.tsx +70 -0
  247. package/templates/overlays/portfolio/nextjs/src/app/components/Footer.tsx +37 -0
  248. package/templates/overlays/portfolio/nextjs/src/app/components/Navbar.tsx +37 -0
  249. package/templates/overlays/portfolio/nextjs/src/app/components/ProjectCard.tsx +35 -0
  250. package/templates/overlays/portfolio/nextjs/src/app/components/SkillsGrid.tsx +45 -0
  251. package/templates/overlays/portfolio/nextjs/src/app/contact/page.tsx +138 -0
  252. package/templates/overlays/portfolio/nextjs/src/app/globals.css +197 -0
  253. package/templates/overlays/portfolio/nextjs/src/app/layout.tsx +20 -0
  254. package/templates/overlays/portfolio/nextjs/src/app/page.tsx +60 -0
  255. package/templates/overlays/portfolio/nextjs/src/app/projects/page.tsx +56 -0
  256. package/templates/overlays/portfolio/nuxt/app.vue +27 -0
  257. package/templates/overlays/portfolio/nuxt/components/PortfolioFooter.vue +49 -0
  258. package/templates/overlays/portfolio/nuxt/components/PortfolioNav.vue +77 -0
  259. package/templates/overlays/portfolio/nuxt/components/ProjectCard.vue +102 -0
  260. package/templates/overlays/portfolio/nuxt/components/SkillsGrid.vue +89 -0
  261. package/templates/overlays/portfolio/nuxt/layouts/default.vue +21 -0
  262. package/templates/overlays/portfolio/nuxt/pages/about.vue +179 -0
  263. package/templates/overlays/portfolio/nuxt/pages/contact.vue +278 -0
  264. package/templates/overlays/portfolio/nuxt/pages/index.vue +160 -0
  265. package/templates/overlays/portfolio/nuxt/pages/projects.vue +116 -0
  266. package/templates/overlays/portfolio/react/src/App.css +54 -27
  267. package/templates/overlays/portfolio/react/src/App.tsx +16 -12
  268. package/templates/overlays/portfolio/react/src/components/Layout.tsx +17 -0
  269. package/templates/overlays/portfolio/react/src/components/Navbar.tsx +30 -0
  270. package/templates/overlays/portfolio/react/src/components/PortfolioFooter.tsx +5 -3
  271. package/templates/overlays/portfolio/react/src/components/ProjectCard.tsx +24 -0
  272. package/templates/overlays/portfolio/react/src/components/SkillsGrid.tsx +20 -0
  273. package/templates/overlays/portfolio/react/src/data/projects.ts +25 -0
  274. package/templates/overlays/portfolio/react/src/pages/About.tsx +43 -0
  275. package/templates/overlays/portfolio/react/src/pages/Contact.tsx +48 -0
  276. package/templates/overlays/portfolio/react/src/pages/Home.tsx +44 -0
  277. package/templates/overlays/portfolio/react/src/pages/Projects.tsx +36 -0
  278. package/templates/overlays/portfolio/vanilla/src/main.ts +58 -0
  279. package/templates/overlays/portfolio/vanilla/src/pages/about.ts +146 -0
  280. package/templates/overlays/portfolio/vanilla/src/pages/contact.ts +159 -0
  281. package/templates/overlays/portfolio/vanilla/src/pages/home.ts +123 -0
  282. package/templates/overlays/portfolio/vanilla/src/pages/projects.ts +89 -0
  283. package/templates/overlays/portfolio/vanilla/src/router.ts +33 -0
  284. package/templates/overlays/portfolio/vanilla/src/style.css +909 -0
  285. package/templates/overlays/portfolio/vue/src/App.vue +25 -0
  286. package/templates/overlays/portfolio/vue/src/components/PortfolioFooter.vue +14 -0
  287. package/templates/overlays/portfolio/vue/src/components/PortfolioNav.vue +16 -0
  288. package/templates/overlays/portfolio/vue/src/components/ProjectCard.vue +18 -0
  289. package/templates/overlays/portfolio/vue/src/components/SkillsGrid.vue +14 -0
  290. package/templates/overlays/portfolio/vue/src/data.ts +78 -0
  291. package/templates/overlays/portfolio/vue/src/main.ts +6 -0
  292. package/templates/overlays/portfolio/vue/src/pages/About.vue +30 -0
  293. package/templates/overlays/portfolio/vue/src/pages/Contact.vue +47 -0
  294. package/templates/overlays/portfolio/vue/src/pages/Home.vue +27 -0
  295. package/templates/overlays/portfolio/vue/src/pages/Projects.vue +33 -0
  296. package/templates/overlays/portfolio/vue/src/router.ts +19 -0
  297. package/templates/overlays/portfolio/vue/src/style.css +404 -0
  298. package/templates/react/package.json +23 -19
  299. package/templates/react/tsconfig.json +20 -0
  300. package/templates/styling/tailwind/deps.json +7 -6
  301. package/templates/styling/tailwind/nextjs/postcss.config.mjs +7 -0
  302. package/templates/styling/tailwind/nextjs/src/app/globals.css +1 -0
  303. package/templates/styling/tailwind/react/src/index.css +1 -0
  304. package/templates/styling/tailwind/react/vite.config.ts +7 -0
  305. package/templates/styling/tailwind/vanilla/src/style.css +1 -0
  306. package/templates/styling/tailwind/vanilla/vite.config.ts +6 -0
  307. package/templates/styling/tailwind/vue/src/style.css +1 -0
  308. package/templates/styling/tailwind/vue/vite.config.ts +7 -0
  309. package/templates/vanilla/package.json +15 -14
  310. package/templates/vanilla/tsconfig.json +19 -0
  311. package/templates/vue/package.json +21 -18
  312. package/templates/vue/tsconfig.json +20 -0
  313. package/templates/overlays/blog/react/src/components/PostList.tsx +0 -27
  314. package/templates/overlays/crm/react/src/components/Filters.tsx +0 -22
  315. package/templates/overlays/ecommerce/react/src/components/Cart.tsx +0 -47
  316. package/templates/overlays/ecommerce/react/src/components/ProductGrid.tsx +0 -32
  317. package/templates/overlays/ecommerce/vue/src/components/CartPanel.vue +0 -46
  318. package/templates/overlays/ecommerce/vue/src/components/ProductGrid.vue +0 -40
  319. package/templates/overlays/portfolio/react/src/components/ContactForm.tsx +0 -29
  320. package/templates/overlays/portfolio/react/src/components/HeroSection.tsx +0 -24
  321. package/templates/overlays/portfolio/react/src/components/Projects.tsx +0 -33
  322. package/templates/overlays/portfolio/react/src/components/Skills.tsx +0 -27
  323. package/templates/styling/tailwind/config/postcss.config.js +0 -5
  324. package/templates/styling/tailwind/config/tailwind.config.js +0 -11
@@ -0,0 +1,86 @@
1
+ import { posts, categories } from '../main';
2
+
3
+ export function renderCategory(params?: Record<string, string>): string {
4
+ const categoryName = params?.name || 'Technology';
5
+ const filteredPosts = posts.filter(p => p.category === categoryName);
6
+
7
+ return `
8
+ <header class="blog-header">
9
+ <div class="header-container">
10
+ <a href="#/" class="blog-logo">📝 {{projectName}}</a>
11
+ <nav class="blog-nav">
12
+ <a href="#/">Home</a>
13
+ ${categories.filter(c => c !== 'All').map(c => `
14
+ <a href="#/category/${c}" class="${c === categoryName ? 'active' : ''}">${c}</a>
15
+ `).join('')}
16
+ <a href="#/about">About</a>
17
+ </nav>
18
+ </div>
19
+ </header>
20
+
21
+ <main class="blog-main">
22
+ <section class="category-header">
23
+ <h1>${categoryName}</h1>
24
+ <p>${filteredPosts.length} article${filteredPosts.length !== 1 ? 's' : ''} in this category</p>
25
+ </section>
26
+
27
+ <div class="category-filters" style="margin-bottom: 2rem;">
28
+ ${categories.map(c => `
29
+ <a href="${c === 'All' ? '#/' : '#/category/' + c}" class="filter-btn ${c === categoryName ? 'active' : ''}">${c}</a>
30
+ `).join('')}
31
+ </div>
32
+
33
+ ${filteredPosts.length === 0 ? `
34
+ <div class="not-found">
35
+ <h2>No articles found</h2>
36
+ <p>There are no articles in the "${categoryName}" category yet.</p>
37
+ <a href="#/" class="btn-primary">Browse All Articles</a>
38
+ </div>
39
+ ` : `
40
+ <div class="posts-grid">
41
+ ${filteredPosts.map(p => `
42
+ <article class="post-card">
43
+ <a href="#/post/${p.id}" class="post-card-link">
44
+ <div class="post-card-image">${p.image}</div>
45
+ <div class="post-card-content">
46
+ <span class="post-category">${p.category}</span>
47
+ <h3>${p.title}</h3>
48
+ <p>${p.excerpt}</p>
49
+ <div class="post-meta">
50
+ <span class="post-author">${p.authorAvatar} ${p.author}</span>
51
+ <span class="post-date">${p.date}</span>
52
+ <span class="post-read-time">${p.readTime}</span>
53
+ </div>
54
+ </div>
55
+ </a>
56
+ </article>
57
+ `).join('')}
58
+ </div>
59
+ `}
60
+ </main>
61
+
62
+ <footer class="blog-footer">
63
+ <div class="footer-content">
64
+ <div class="footer-section">
65
+ <h4>{{projectName}}</h4>
66
+ <p>Sharing knowledge and insights about web development, design, and technology.</p>
67
+ </div>
68
+ <div class="footer-section">
69
+ <h4>Categories</h4>
70
+ ${categories.filter(c => c !== 'All').map(c => `
71
+ <a href="#/category/${c}">${c}</a>
72
+ `).join('')}
73
+ </div>
74
+ <div class="footer-section">
75
+ <h4>Follow Us</h4>
76
+ <a href="#">🐦 Twitter</a>
77
+ <a href="#">💼 LinkedIn</a>
78
+ <a href="#">🐙 GitHub</a>
79
+ </div>
80
+ </div>
81
+ <div class="footer-bottom">
82
+ <p>&copy; 2024 {{projectName}}. All rights reserved.</p>
83
+ </div>
84
+ </footer>
85
+ `;
86
+ }
@@ -0,0 +1,103 @@
1
+ import { posts, categories } from '../main';
2
+
3
+ export function renderHome(): string {
4
+ const featured = posts[0];
5
+ const recent = posts.slice(1);
6
+
7
+ return `
8
+ <header class="blog-header">
9
+ <div class="header-container">
10
+ <a href="#/" class="blog-logo">📝 {{projectName}}</a>
11
+ <nav class="blog-nav">
12
+ <a href="#/" class="active">Home</a>
13
+ ${categories.filter(c => c !== 'All').map(c => `
14
+ <a href="#/category/${c}">${c}</a>
15
+ `).join('')}
16
+ <a href="#/about">About</a>
17
+ </nav>
18
+ </div>
19
+ </header>
20
+
21
+ <main class="blog-main">
22
+ <section class="hero-post">
23
+ <a href="#/post/${featured.id}" class="hero-post-link">
24
+ <div class="hero-post-image">${featured.image}</div>
25
+ <div class="hero-post-content">
26
+ <span class="post-category">${featured.category}</span>
27
+ <h1>${featured.title}</h1>
28
+ <p>${featured.excerpt}</p>
29
+ <div class="post-meta">
30
+ <span class="post-author">${featured.authorAvatar} ${featured.author}</span>
31
+ <span class="post-date">${featured.date}</span>
32
+ <span class="post-read-time">${featured.readTime}</span>
33
+ </div>
34
+ </div>
35
+ </a>
36
+ </section>
37
+
38
+ <section class="posts-section">
39
+ <div class="section-header">
40
+ <h2>Latest Articles</h2>
41
+ <div class="category-filters">
42
+ ${categories.map(c => `
43
+ <a href="${c === 'All' ? '#/' : '#/category/' + c}" class="filter-btn ${c === 'All' ? 'active' : ''}">${c}</a>
44
+ `).join('')}
45
+ </div>
46
+ </div>
47
+
48
+ <div class="posts-grid">
49
+ ${recent.map(p => `
50
+ <article class="post-card">
51
+ <a href="#/post/${p.id}" class="post-card-link">
52
+ <div class="post-card-image">${p.image}</div>
53
+ <div class="post-card-content">
54
+ <span class="post-category">${p.category}</span>
55
+ <h3>${p.title}</h3>
56
+ <p>${p.excerpt}</p>
57
+ <div class="post-meta">
58
+ <span class="post-author">${p.authorAvatar} ${p.author}</span>
59
+ <span class="post-date">${p.date}</span>
60
+ <span class="post-read-time">${p.readTime}</span>
61
+ </div>
62
+ </div>
63
+ </a>
64
+ </article>
65
+ `).join('')}
66
+ </div>
67
+ </section>
68
+
69
+ <section class="newsletter">
70
+ <h2>Subscribe to Our Newsletter</h2>
71
+ <p>Get the latest articles and insights delivered straight to your inbox.</p>
72
+ <div class="newsletter-form">
73
+ <input type="email" placeholder="Enter your email address" class="newsletter-input" />
74
+ <button class="newsletter-btn">Subscribe</button>
75
+ </div>
76
+ </section>
77
+ </main>
78
+
79
+ <footer class="blog-footer">
80
+ <div class="footer-content">
81
+ <div class="footer-section">
82
+ <h4>{{projectName}}</h4>
83
+ <p>Sharing knowledge and insights about web development, design, and technology.</p>
84
+ </div>
85
+ <div class="footer-section">
86
+ <h4>Categories</h4>
87
+ ${categories.filter(c => c !== 'All').map(c => `
88
+ <a href="#/category/${c}">${c}</a>
89
+ `).join('')}
90
+ </div>
91
+ <div class="footer-section">
92
+ <h4>Follow Us</h4>
93
+ <a href="#">🐦 Twitter</a>
94
+ <a href="#">💼 LinkedIn</a>
95
+ <a href="#">🐙 GitHub</a>
96
+ </div>
97
+ </div>
98
+ <div class="footer-bottom">
99
+ <p>&copy; 2024 {{projectName}}. All rights reserved.</p>
100
+ </div>
101
+ </footer>
102
+ `;
103
+ }
@@ -0,0 +1,108 @@
1
+ import { posts, categories } from '../main';
2
+
3
+ export function renderPostDetail(params?: Record<string, string>): string {
4
+ const id = parseInt(params?.id || '1');
5
+ const post = posts.find(p => p.id === id);
6
+
7
+ if (!post) {
8
+ return `
9
+ <header class="blog-header">
10
+ <div class="header-container">
11
+ <a href="#/" class="blog-logo">📝 {{projectName}}</a>
12
+ <nav class="blog-nav">
13
+ <a href="#/">Home</a>
14
+ <a href="#/about">About</a>
15
+ </nav>
16
+ </div>
17
+ </header>
18
+ <main class="blog-main">
19
+ <div class="not-found">
20
+ <h2>Post Not Found</h2>
21
+ <p>The article you are looking for does not exist.</p>
22
+ <a href="#/" class="btn-primary">Back to Home</a>
23
+ </div>
24
+ </main>
25
+ `;
26
+ }
27
+
28
+ const relatedPosts = posts.filter(p => p.category === post.category && p.id !== post.id).slice(0, 3);
29
+
30
+ return `
31
+ <header class="blog-header">
32
+ <div class="header-container">
33
+ <a href="#/" class="blog-logo">📝 {{projectName}}</a>
34
+ <nav class="blog-nav">
35
+ <a href="#/">Home</a>
36
+ ${categories.filter(c => c !== 'All').map(c => `
37
+ <a href="#/category/${c}" class="${c === post.category ? 'active' : ''}">${c}</a>
38
+ `).join('')}
39
+ <a href="#/about">About</a>
40
+ </nav>
41
+ </div>
42
+ </header>
43
+
44
+ <main class="blog-main">
45
+ <article class="post-detail">
46
+ <div class="post-detail-header">
47
+ <div class="breadcrumb">
48
+ <a href="#/">Home</a> / <a href="#/category/${post.category}">${post.category}</a> / <span>${post.title}</span>
49
+ </div>
50
+ <span class="post-category">${post.category}</span>
51
+ <h1>${post.title}</h1>
52
+ <div class="post-meta post-meta-detail">
53
+ <span class="post-author">${post.authorAvatar} ${post.author}</span>
54
+ <span class="post-date">📅 ${post.date}</span>
55
+ <span class="post-read-time">⏱️ ${post.readTime}</span>
56
+ </div>
57
+ </div>
58
+
59
+ <div class="post-detail-image">${post.image}</div>
60
+
61
+ <div class="post-detail-body">
62
+ ${post.content.split('\n\n').map(paragraph => `<p>${paragraph}</p>`).join('')}
63
+ </div>
64
+
65
+ <div class="post-tags">
66
+ ${post.tags.map(tag => `<span class="tag">${tag}</span>`).join('')}
67
+ </div>
68
+
69
+ <div class="post-author-card">
70
+ <span class="author-card-avatar">${post.authorAvatar}</span>
71
+ <div class="author-card-info">
72
+ <h4>${post.author}</h4>
73
+ <p>Writer and contributor at {{projectName}}. Passionate about sharing knowledge with the community.</p>
74
+ </div>
75
+ </div>
76
+ </article>
77
+
78
+ ${relatedPosts.length > 0 ? `
79
+ <section class="related-posts">
80
+ <h2>Related Articles</h2>
81
+ <div class="posts-grid">
82
+ ${relatedPosts.map(p => `
83
+ <article class="post-card">
84
+ <a href="#/post/${p.id}" class="post-card-link">
85
+ <div class="post-card-image">${p.image}</div>
86
+ <div class="post-card-content">
87
+ <span class="post-category">${p.category}</span>
88
+ <h3>${p.title}</h3>
89
+ <div class="post-meta">
90
+ <span class="post-author">${p.authorAvatar} ${p.author}</span>
91
+ <span class="post-read-time">${p.readTime}</span>
92
+ </div>
93
+ </div>
94
+ </a>
95
+ </article>
96
+ `).join('')}
97
+ </div>
98
+ </section>
99
+ ` : ''}
100
+ </main>
101
+
102
+ <footer class="blog-footer">
103
+ <div class="footer-bottom">
104
+ <p>&copy; 2024 {{projectName}}. All rights reserved.</p>
105
+ </div>
106
+ </footer>
107
+ `;
108
+ }
@@ -0,0 +1,33 @@
1
+ interface Route {
2
+ path: string;
3
+ render: (params?: Record<string, string>) => string;
4
+ }
5
+
6
+ export function createRouter(routes: Route[], container: HTMLElement): void {
7
+ function matchRoute(): void {
8
+ const hash = window.location.hash.slice(1) || '/';
9
+ for (const route of routes) {
10
+ if (route.path.includes(':')) {
11
+ const paramNames: string[] = [];
12
+ const pattern = route.path.replace(/:(\w+)/g, (_, name) => {
13
+ paramNames.push(name);
14
+ return '([^/]+)';
15
+ });
16
+ const match = hash.match(new RegExp('^' + pattern + '$'));
17
+ if (match) {
18
+ const params: Record<string, string> = {};
19
+ paramNames.forEach((name, i) => params[name] = match[i + 1]);
20
+ container.innerHTML = route.render(params);
21
+ return;
22
+ }
23
+ } else if (route.path === hash) {
24
+ container.innerHTML = route.render();
25
+ return;
26
+ }
27
+ }
28
+ container.innerHTML = routes[0].render();
29
+ }
30
+
31
+ window.addEventListener('hashchange', matchRoute);
32
+ matchRoute();
33
+ }