@akanjs/cli 0.0.142 → 0.0.144

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 (349) hide show
  1. package/README.md +8 -0
  2. package/cjs/index.js +2437 -3204
  3. package/cjs/src/guidelines/___library/sharedUiStructureDescription.en.md +786 -0
  4. package/cjs/src/guidelines/___library/utilUiStructureDescription.en.md +395 -0
  5. package/cjs/src/guidelines/___lint/lintRuleDescription.en.md +64 -0
  6. package/cjs/src/guidelines/___module/moduleStructureDescription.en.md +80 -0
  7. package/cjs/src/guidelines/componentRule/componentRule.instruction.md +732 -0
  8. package/cjs/src/guidelines/databaseModule/databaseModule.instruction.md +691 -0
  9. package/cjs/src/guidelines/enumConstant/enumConstant.instruction.md +232 -0
  10. package/cjs/src/guidelines/fieldDecorator/fieldDecorator.instruction.md +611 -0
  11. package/cjs/src/guidelines/framework/framework.instruction.md +1112 -0
  12. package/cjs/src/guidelines/modelConstant/modelConstant.instruction.md +958 -0
  13. package/cjs/src/guidelines/modelDictionary/modelDictionary.instruction.md +583 -0
  14. package/cjs/src/guidelines/modelDocument/modelDocument.instruction.md +683 -0
  15. package/cjs/src/guidelines/modelService/modelService.instruction.md +935 -0
  16. package/cjs/src/guidelines/modelSignal/modelSignal.instruction.md +588 -0
  17. package/cjs/src/guidelines/modelStore/modelStore.instruction.md +591 -0
  18. package/cjs/src/guidelines/modelTemplate/modelTemplate.instruction.md +577 -0
  19. package/cjs/src/guidelines/modelUnit/modelUnit.instruction.md +833 -0
  20. package/cjs/src/guidelines/modelUtil/modelUtil.instruction.md +752 -0
  21. package/cjs/src/guidelines/modelView/modelView.instruction.md +1005 -0
  22. package/cjs/src/guidelines/modelZone/modelZone.instruction.md +528 -0
  23. package/cjs/src/guidelines/scalarConstant/scalarConstant.instruction.md +489 -0
  24. package/cjs/src/guidelines/scalarDictionary/scalarDictionary.instruction.md +347 -0
  25. package/cjs/src/guidelines/sharedUiUsage/sharedUiUsage.instruction.md +318 -0
  26. package/cjs/src/guidelines/utilUiUsage/utilUiUsage.instruction.md +339 -0
  27. package/cjs/src/templates/module/__model__.dictionary.js +4 -5
  28. package/esm/index.js +2524 -3286
  29. package/esm/src/guidelines/___library/sharedUiStructureDescription.en.md +786 -0
  30. package/esm/src/guidelines/___library/utilUiStructureDescription.en.md +395 -0
  31. package/esm/src/guidelines/___lint/lintRuleDescription.en.md +64 -0
  32. package/esm/src/guidelines/___module/moduleStructureDescription.en.md +80 -0
  33. package/esm/src/guidelines/componentRule/componentRule.instruction.md +732 -0
  34. package/esm/src/guidelines/databaseModule/databaseModule.instruction.md +691 -0
  35. package/esm/src/guidelines/enumConstant/enumConstant.instruction.md +232 -0
  36. package/esm/src/guidelines/fieldDecorator/fieldDecorator.instruction.md +611 -0
  37. package/esm/src/guidelines/framework/framework.instruction.md +1112 -0
  38. package/esm/src/guidelines/modelConstant/modelConstant.instruction.md +958 -0
  39. package/esm/src/guidelines/modelDictionary/modelDictionary.instruction.md +583 -0
  40. package/esm/src/guidelines/modelDocument/modelDocument.instruction.md +683 -0
  41. package/esm/src/guidelines/modelService/modelService.instruction.md +935 -0
  42. package/esm/src/guidelines/modelSignal/modelSignal.instruction.md +588 -0
  43. package/esm/src/guidelines/modelStore/modelStore.instruction.md +591 -0
  44. package/esm/src/guidelines/modelTemplate/modelTemplate.instruction.md +577 -0
  45. package/esm/src/guidelines/modelUnit/modelUnit.instruction.md +833 -0
  46. package/esm/src/guidelines/modelUtil/modelUtil.instruction.md +752 -0
  47. package/esm/src/guidelines/modelView/modelView.instruction.md +1005 -0
  48. package/esm/src/guidelines/modelZone/modelZone.instruction.md +528 -0
  49. package/esm/src/guidelines/scalarConstant/scalarConstant.instruction.md +489 -0
  50. package/esm/src/guidelines/scalarDictionary/scalarDictionary.instruction.md +347 -0
  51. package/esm/src/guidelines/sharedUiUsage/sharedUiUsage.instruction.md +318 -0
  52. package/esm/src/guidelines/utilUiUsage/utilUiUsage.instruction.md +339 -0
  53. package/esm/src/templates/module/__model__.dictionary.js +4 -5
  54. package/package.json +3 -1
  55. package/src/guideline/guideline.command.d.ts +7 -0
  56. package/src/guideline/guideline.prompt.d.ts +15 -0
  57. package/src/guideline/guideline.runner.d.ts +5 -0
  58. package/src/guideline/guideline.script.d.ts +6 -0
  59. package/src/guidelines/___library/sharedUiStructureDescription.en.md +786 -0
  60. package/src/guidelines/___library/utilUiStructureDescription.en.md +395 -0
  61. package/src/guidelines/___lint/lintRuleDescription.en.md +64 -0
  62. package/src/guidelines/___module/moduleStructureDescription.en.md +80 -0
  63. package/src/guidelines/componentRule/componentRule.instruction.md +732 -0
  64. package/src/guidelines/databaseModule/databaseModule.instruction.md +691 -0
  65. package/src/guidelines/enumConstant/enumConstant.instruction.md +232 -0
  66. package/src/guidelines/fieldDecorator/fieldDecorator.instruction.md +611 -0
  67. package/src/guidelines/framework/framework.instruction.md +1112 -0
  68. package/src/guidelines/modelConstant/modelConstant.instruction.md +958 -0
  69. package/src/guidelines/modelDictionary/modelDictionary.instruction.md +583 -0
  70. package/src/guidelines/modelDocument/modelDocument.instruction.md +683 -0
  71. package/src/guidelines/modelService/modelService.instruction.md +935 -0
  72. package/src/guidelines/modelSignal/modelSignal.instruction.md +588 -0
  73. package/src/guidelines/modelStore/modelStore.instruction.md +591 -0
  74. package/src/guidelines/modelTemplate/modelTemplate.instruction.md +577 -0
  75. package/src/guidelines/modelUnit/modelUnit.instruction.md +833 -0
  76. package/src/guidelines/modelUtil/modelUtil.instruction.md +752 -0
  77. package/src/guidelines/modelView/modelView.instruction.md +1005 -0
  78. package/src/guidelines/modelZone/modelZone.instruction.md +528 -0
  79. package/src/guidelines/scalarConstant/scalarConstant.instruction.md +489 -0
  80. package/src/guidelines/scalarDictionary/scalarDictionary.instruction.md +347 -0
  81. package/src/guidelines/sharedUiUsage/sharedUiUsage.instruction.md +318 -0
  82. package/src/guidelines/utilUiUsage/utilUiUsage.instruction.md +339 -0
  83. package/src/module/module.command.d.ts +6 -8
  84. package/src/module/module.prompt.d.ts +2 -15
  85. package/src/module/module.request.d.ts +22 -18
  86. package/src/module/module.runner.d.ts +4 -20
  87. package/src/module/module.script.d.ts +6 -7
  88. package/src/scalar/scalar.command.d.ts +7 -0
  89. package/src/scalar/scalar.prompt.d.ts +23 -0
  90. package/src/scalar/scalar.runner.d.ts +13 -0
  91. package/src/scalar/scalar.script.d.ts +6 -0
  92. package/cjs/src/templates/app/app/[lang]/(__appName__)/(public)/forgotpassword/page.js +0 -47
  93. package/cjs/src/templates/app/app/[lang]/(__appName__)/(public)/page.js +0 -128
  94. package/cjs/src/templates/app/app/[lang]/(__appName__)/(public)/privacy/page.js +0 -42
  95. package/cjs/src/templates/app/app/[lang]/(__appName__)/(public)/signin/page.js +0 -50
  96. package/cjs/src/templates/app/app/[lang]/(__appName__)/(public)/termsofservice/page.js +0 -41
  97. package/cjs/src/templates/app/app/[lang]/(__appName__)/(public)/unknown/page.js +0 -51
  98. package/cjs/src/templates/app/app/[lang]/(__appName__)/(user)/layout.js +0 -43
  99. package/cjs/src/templates/app/app/[lang]/(__appName__)/(user)/self/page.js +0 -60
  100. package/cjs/src/templates/app/app/[lang]/(__appName__)/layout.js +0 -54
  101. package/cjs/src/templates/app/app/[lang]/(__appName__)/styles.css.template +0 -19
  102. package/cjs/src/templates/app/app/[lang]/admin/layout.js +0 -54
  103. package/cjs/src/templates/app/app/[lang]/admin/page.js +0 -63
  104. package/cjs/src/templates/app/app/csr.js +0 -34
  105. package/cjs/src/templates/app/app/index.html.template +0 -13
  106. package/cjs/src/templates/app/app/layout.js +0 -38
  107. package/cjs/src/templates/app/capacitor.config.ts.template +0 -8
  108. package/cjs/src/templates/app/env/env.client.debug.ts.template +0 -7
  109. package/cjs/src/templates/app/env/env.client.develop.ts.template +0 -7
  110. package/cjs/src/templates/app/env/env.client.local.ts.template +0 -7
  111. package/cjs/src/templates/app/env/env.client.main.ts.template +0 -7
  112. package/cjs/src/templates/app/env/env.client.testing.ts.template +0 -7
  113. package/cjs/src/templates/app/env/env.server.debug.ts.template +0 -15
  114. package/cjs/src/templates/app/env/env.server.develop.ts.template +0 -15
  115. package/cjs/src/templates/app/env/env.server.local.ts.template +0 -15
  116. package/cjs/src/templates/app/env/env.server.main.ts.template +0 -15
  117. package/cjs/src/templates/app/env/env.server.testing.ts.template +0 -7
  118. package/cjs/src/templates/app/lib/setting/Setting.Template.js +0 -57
  119. package/cjs/src/templates/app/lib/setting/Setting.Unit.js +0 -38
  120. package/cjs/src/templates/app/lib/setting/Setting.Util.js +0 -34
  121. package/cjs/src/templates/app/lib/setting/Setting.View.js +0 -51
  122. package/cjs/src/templates/app/lib/setting/Setting.Zone.js +0 -80
  123. package/cjs/src/templates/app/lib/setting/index.js +0 -61
  124. package/cjs/src/templates/app/lib/summary/Summary.Template.js +0 -43
  125. package/cjs/src/templates/app/lib/summary/Summary.Unit.js +0 -38
  126. package/cjs/src/templates/app/lib/summary/Summary.Util.js +0 -33
  127. package/cjs/src/templates/app/lib/summary/Summary.View.js +0 -51
  128. package/cjs/src/templates/app/lib/summary/Summary.Zone.js +0 -62
  129. package/cjs/src/templates/app/lib/summary/index.js +0 -67
  130. package/cjs/src/templates/app/lib/user/User.Template.js +0 -65
  131. package/cjs/src/templates/app/lib/user/User.Unit.js +0 -38
  132. package/cjs/src/templates/app/lib/user/User.Util.js +0 -94
  133. package/cjs/src/templates/app/lib/user/User.View.js +0 -66
  134. package/cjs/src/templates/app/lib/user/User.Zone.js +0 -74
  135. package/cjs/src/templates/app/lib/user/index.js +0 -61
  136. package/cjs/src/templates/app/page.test.ts.template +0 -10
  137. package/cjs/src/templates/app/playwright.config.ts.template +0 -6
  138. package/cjs/src/templates/app/postcss.config.js.template +0 -10
  139. package/cjs/src/templates/app/public/manifest.json.template +0 -67
  140. package/cjs/src/templates/app/tsconfig.json.template +0 -22
  141. package/cjs/src/templates/app/tsconfig.spec.json.template +0 -7
  142. package/cjs/src/templates/app/ui/Footer.js +0 -67
  143. package/cjs/src/templates/app/ui/MainHeader.js +0 -131
  144. package/cjs/src/templates/crudPages/[__model__Id]/edit/page.js +0 -73
  145. package/cjs/src/templates/crudPages/[__model__Id]/page.js +0 -83
  146. package/cjs/src/templates/crudPages/new/page.js +0 -70
  147. package/cjs/src/templates/crudPages/page.js +0 -71
  148. package/cjs/src/templates/libRoot/.gitignore.template +0 -15
  149. package/cjs/src/templates/libRoot/env/env.server.example.ts.template +0 -7
  150. package/cjs/src/templates/libRoot/env/env.server.testing.ts.template +0 -7
  151. package/cjs/src/templates/libRoot/lib/setting/Setting.Template.js +0 -57
  152. package/cjs/src/templates/libRoot/lib/setting/Setting.Unit.js +0 -38
  153. package/cjs/src/templates/libRoot/lib/setting/Setting.Util.js +0 -34
  154. package/cjs/src/templates/libRoot/lib/setting/Setting.View.js +0 -51
  155. package/cjs/src/templates/libRoot/lib/setting/Setting.Zone.js +0 -80
  156. package/cjs/src/templates/libRoot/lib/setting/index.js +0 -61
  157. package/cjs/src/templates/libRoot/lib/summary/Summary.Template.js +0 -43
  158. package/cjs/src/templates/libRoot/lib/summary/Summary.Unit.js +0 -38
  159. package/cjs/src/templates/libRoot/lib/summary/Summary.Util.js +0 -33
  160. package/cjs/src/templates/libRoot/lib/summary/Summary.View.js +0 -51
  161. package/cjs/src/templates/libRoot/lib/summary/Summary.Zone.js +0 -62
  162. package/cjs/src/templates/libRoot/lib/summary/index.js +0 -67
  163. package/cjs/src/templates/libRoot/lib/user/User.Template.js +0 -65
  164. package/cjs/src/templates/libRoot/lib/user/User.Unit.js +0 -38
  165. package/cjs/src/templates/libRoot/lib/user/User.Util.js +0 -94
  166. package/cjs/src/templates/libRoot/lib/user/User.View.js +0 -66
  167. package/cjs/src/templates/libRoot/lib/user/User.Zone.js +0 -74
  168. package/cjs/src/templates/libRoot/lib/user/index.js +0 -61
  169. package/cjs/src/templates/libRoot/package.json.template +0 -4
  170. package/cjs/src/templates/libRoot/tsconfig.json.template +0 -13
  171. package/cjs/src/templates/libRoot/tsconfig.spec.json.template +0 -7
  172. package/cjs/src/templates/localDev/docker-compose.yaml.template +0 -36
  173. package/cjs/src/templates/module/__Model__.Template.js +0 -54
  174. package/cjs/src/templates/module/__Model__.Unit.js +0 -42
  175. package/cjs/src/templates/module/__Model__.Util.js +0 -70
  176. package/cjs/src/templates/module/__Model__.View.js +0 -48
  177. package/cjs/src/templates/module/__Model__.Zone.js +0 -83
  178. package/cjs/src/templates/module/index.js +0 -61
  179. package/cjs/src/templates/pkgRoot/tsconfig.json.template +0 -15
  180. package/cjs/src/templates/workspaceRoot/.env.template +0 -20
  181. package/cjs/src/templates/workspaceRoot/.gitignore.template +0 -118
  182. package/cjs/src/templates/workspaceRoot/.prettierignore.template +0 -10
  183. package/cjs/src/templates/workspaceRoot/.prettierrc.json.template +0 -6
  184. package/cjs/src/templates/workspaceRoot/.swcrc.template +0 -9
  185. package/cjs/src/templates/workspaceRoot/.vscode/settings.json.template +0 -13
  186. package/cjs/src/templates/workspaceRoot/README.md.template +0 -37
  187. package/cjs/src/templates/workspaceRoot/eslint.config.ts.template +0 -3
  188. package/cjs/src/templates/workspaceRoot/package.json.template +0 -43
  189. package/cjs/src/templates/workspaceRoot/tsconfig.json.template +0 -29
  190. package/esm/src/templates/app/app/[lang]/(__appName__)/(public)/forgotpassword/page.js +0 -27
  191. package/esm/src/templates/app/app/[lang]/(__appName__)/(public)/page.js +0 -108
  192. package/esm/src/templates/app/app/[lang]/(__appName__)/(public)/privacy/page.js +0 -22
  193. package/esm/src/templates/app/app/[lang]/(__appName__)/(public)/signin/page.js +0 -30
  194. package/esm/src/templates/app/app/[lang]/(__appName__)/(public)/termsofservice/page.js +0 -21
  195. package/esm/src/templates/app/app/[lang]/(__appName__)/(public)/unknown/page.js +0 -31
  196. package/esm/src/templates/app/app/[lang]/(__appName__)/(user)/layout.js +0 -23
  197. package/esm/src/templates/app/app/[lang]/(__appName__)/(user)/self/page.js +0 -40
  198. package/esm/src/templates/app/app/[lang]/(__appName__)/layout.js +0 -34
  199. package/esm/src/templates/app/app/[lang]/(__appName__)/styles.css.template +0 -19
  200. package/esm/src/templates/app/app/[lang]/admin/layout.js +0 -34
  201. package/esm/src/templates/app/app/[lang]/admin/page.js +0 -43
  202. package/esm/src/templates/app/app/csr.js +0 -14
  203. package/esm/src/templates/app/app/index.html.template +0 -13
  204. package/esm/src/templates/app/app/layout.js +0 -18
  205. package/esm/src/templates/app/capacitor.config.ts.template +0 -8
  206. package/esm/src/templates/app/env/env.client.debug.ts.template +0 -7
  207. package/esm/src/templates/app/env/env.client.develop.ts.template +0 -7
  208. package/esm/src/templates/app/env/env.client.local.ts.template +0 -7
  209. package/esm/src/templates/app/env/env.client.main.ts.template +0 -7
  210. package/esm/src/templates/app/env/env.client.testing.ts.template +0 -7
  211. package/esm/src/templates/app/env/env.server.debug.ts.template +0 -15
  212. package/esm/src/templates/app/env/env.server.develop.ts.template +0 -15
  213. package/esm/src/templates/app/env/env.server.local.ts.template +0 -15
  214. package/esm/src/templates/app/env/env.server.main.ts.template +0 -15
  215. package/esm/src/templates/app/env/env.server.testing.ts.template +0 -7
  216. package/esm/src/templates/app/lib/setting/Setting.Template.js +0 -37
  217. package/esm/src/templates/app/lib/setting/Setting.Unit.js +0 -18
  218. package/esm/src/templates/app/lib/setting/Setting.Util.js +0 -14
  219. package/esm/src/templates/app/lib/setting/Setting.View.js +0 -31
  220. package/esm/src/templates/app/lib/setting/Setting.Zone.js +0 -60
  221. package/esm/src/templates/app/lib/setting/index.js +0 -41
  222. package/esm/src/templates/app/lib/summary/Summary.Template.js +0 -23
  223. package/esm/src/templates/app/lib/summary/Summary.Unit.js +0 -18
  224. package/esm/src/templates/app/lib/summary/Summary.Util.js +0 -13
  225. package/esm/src/templates/app/lib/summary/Summary.View.js +0 -31
  226. package/esm/src/templates/app/lib/summary/Summary.Zone.js +0 -42
  227. package/esm/src/templates/app/lib/summary/index.js +0 -47
  228. package/esm/src/templates/app/lib/user/User.Template.js +0 -45
  229. package/esm/src/templates/app/lib/user/User.Unit.js +0 -18
  230. package/esm/src/templates/app/lib/user/User.Util.js +0 -74
  231. package/esm/src/templates/app/lib/user/User.View.js +0 -46
  232. package/esm/src/templates/app/lib/user/User.Zone.js +0 -54
  233. package/esm/src/templates/app/lib/user/index.js +0 -41
  234. package/esm/src/templates/app/page.test.ts.template +0 -10
  235. package/esm/src/templates/app/playwright.config.ts.template +0 -6
  236. package/esm/src/templates/app/postcss.config.js.template +0 -10
  237. package/esm/src/templates/app/public/manifest.json.template +0 -67
  238. package/esm/src/templates/app/tsconfig.json.template +0 -22
  239. package/esm/src/templates/app/tsconfig.spec.json.template +0 -7
  240. package/esm/src/templates/app/ui/Footer.js +0 -47
  241. package/esm/src/templates/app/ui/MainHeader.js +0 -111
  242. package/esm/src/templates/crudPages/[__model__Id]/edit/page.js +0 -53
  243. package/esm/src/templates/crudPages/[__model__Id]/page.js +0 -63
  244. package/esm/src/templates/crudPages/new/page.js +0 -50
  245. package/esm/src/templates/crudPages/page.js +0 -51
  246. package/esm/src/templates/libRoot/.gitignore.template +0 -15
  247. package/esm/src/templates/libRoot/env/env.server.example.ts.template +0 -7
  248. package/esm/src/templates/libRoot/env/env.server.testing.ts.template +0 -7
  249. package/esm/src/templates/libRoot/lib/setting/Setting.Template.js +0 -37
  250. package/esm/src/templates/libRoot/lib/setting/Setting.Unit.js +0 -18
  251. package/esm/src/templates/libRoot/lib/setting/Setting.Util.js +0 -14
  252. package/esm/src/templates/libRoot/lib/setting/Setting.View.js +0 -31
  253. package/esm/src/templates/libRoot/lib/setting/Setting.Zone.js +0 -60
  254. package/esm/src/templates/libRoot/lib/setting/index.js +0 -41
  255. package/esm/src/templates/libRoot/lib/summary/Summary.Template.js +0 -23
  256. package/esm/src/templates/libRoot/lib/summary/Summary.Unit.js +0 -18
  257. package/esm/src/templates/libRoot/lib/summary/Summary.Util.js +0 -13
  258. package/esm/src/templates/libRoot/lib/summary/Summary.View.js +0 -31
  259. package/esm/src/templates/libRoot/lib/summary/Summary.Zone.js +0 -42
  260. package/esm/src/templates/libRoot/lib/summary/index.js +0 -47
  261. package/esm/src/templates/libRoot/lib/user/User.Template.js +0 -45
  262. package/esm/src/templates/libRoot/lib/user/User.Unit.js +0 -18
  263. package/esm/src/templates/libRoot/lib/user/User.Util.js +0 -74
  264. package/esm/src/templates/libRoot/lib/user/User.View.js +0 -46
  265. package/esm/src/templates/libRoot/lib/user/User.Zone.js +0 -54
  266. package/esm/src/templates/libRoot/lib/user/index.js +0 -41
  267. package/esm/src/templates/libRoot/package.json.template +0 -4
  268. package/esm/src/templates/libRoot/tsconfig.json.template +0 -13
  269. package/esm/src/templates/libRoot/tsconfig.spec.json.template +0 -7
  270. package/esm/src/templates/localDev/docker-compose.yaml.template +0 -36
  271. package/esm/src/templates/module/__Model__.Template.js +0 -34
  272. package/esm/src/templates/module/__Model__.Unit.js +0 -22
  273. package/esm/src/templates/module/__Model__.Util.js +0 -50
  274. package/esm/src/templates/module/__Model__.View.js +0 -28
  275. package/esm/src/templates/module/__Model__.Zone.js +0 -63
  276. package/esm/src/templates/module/index.js +0 -41
  277. package/esm/src/templates/pkgRoot/tsconfig.json.template +0 -15
  278. package/esm/src/templates/workspaceRoot/.env.template +0 -20
  279. package/esm/src/templates/workspaceRoot/.gitignore.template +0 -118
  280. package/esm/src/templates/workspaceRoot/.prettierignore.template +0 -10
  281. package/esm/src/templates/workspaceRoot/.prettierrc.json.template +0 -6
  282. package/esm/src/templates/workspaceRoot/.swcrc.template +0 -9
  283. package/esm/src/templates/workspaceRoot/.vscode/settings.json.template +0 -13
  284. package/esm/src/templates/workspaceRoot/README.md.template +0 -37
  285. package/esm/src/templates/workspaceRoot/eslint.config.ts.template +0 -3
  286. package/esm/src/templates/workspaceRoot/package.json.template +0 -43
  287. package/esm/src/templates/workspaceRoot/tsconfig.json.template +0 -29
  288. package/src/application/application.prompt.d.ts +0 -2
  289. package/src/templates/app/app/[lang]/(__appName__)/(public)/forgotpassword/page.d.ts +0 -9
  290. package/src/templates/app/app/[lang]/(__appName__)/(public)/page.d.ts +0 -9
  291. package/src/templates/app/app/[lang]/(__appName__)/(public)/privacy/page.d.ts +0 -9
  292. package/src/templates/app/app/[lang]/(__appName__)/(public)/signin/page.d.ts +0 -9
  293. package/src/templates/app/app/[lang]/(__appName__)/(public)/termsofservice/page.d.ts +0 -10
  294. package/src/templates/app/app/[lang]/(__appName__)/(public)/unknown/page.d.ts +0 -9
  295. package/src/templates/app/app/[lang]/(__appName__)/(user)/layout.d.ts +0 -9
  296. package/src/templates/app/app/[lang]/(__appName__)/(user)/self/page.d.ts +0 -9
  297. package/src/templates/app/app/[lang]/(__appName__)/layout.d.ts +0 -9
  298. package/src/templates/app/app/[lang]/admin/layout.d.ts +0 -9
  299. package/src/templates/app/app/[lang]/admin/page.d.ts +0 -9
  300. package/src/templates/app/app/csr.d.ts +0 -9
  301. package/src/templates/app/app/layout.d.ts +0 -9
  302. package/src/templates/app/lib/setting/Setting.Template.d.ts +0 -9
  303. package/src/templates/app/lib/setting/Setting.Unit.d.ts +0 -9
  304. package/src/templates/app/lib/setting/Setting.Util.d.ts +0 -9
  305. package/src/templates/app/lib/setting/Setting.View.d.ts +0 -9
  306. package/src/templates/app/lib/setting/Setting.Zone.d.ts +0 -9
  307. package/src/templates/app/lib/setting/index.d.ts +0 -9
  308. package/src/templates/app/lib/summary/Summary.Template.d.ts +0 -9
  309. package/src/templates/app/lib/summary/Summary.Unit.d.ts +0 -9
  310. package/src/templates/app/lib/summary/Summary.Util.d.ts +0 -9
  311. package/src/templates/app/lib/summary/Summary.View.d.ts +0 -9
  312. package/src/templates/app/lib/summary/Summary.Zone.d.ts +0 -9
  313. package/src/templates/app/lib/summary/index.d.ts +0 -9
  314. package/src/templates/app/lib/user/User.Template.d.ts +0 -9
  315. package/src/templates/app/lib/user/User.Unit.d.ts +0 -9
  316. package/src/templates/app/lib/user/User.Util.d.ts +0 -9
  317. package/src/templates/app/lib/user/User.View.d.ts +0 -9
  318. package/src/templates/app/lib/user/User.Zone.d.ts +0 -9
  319. package/src/templates/app/lib/user/index.d.ts +0 -9
  320. package/src/templates/app/ui/Footer.d.ts +0 -9
  321. package/src/templates/app/ui/MainHeader.d.ts +0 -10
  322. package/src/templates/crudPages/[__model__Id]/edit/page.d.ts +0 -11
  323. package/src/templates/crudPages/[__model__Id]/page.d.ts +0 -11
  324. package/src/templates/crudPages/new/page.d.ts +0 -11
  325. package/src/templates/crudPages/page.d.ts +0 -11
  326. package/src/templates/libRoot/lib/setting/Setting.Template.d.ts +0 -9
  327. package/src/templates/libRoot/lib/setting/Setting.Unit.d.ts +0 -9
  328. package/src/templates/libRoot/lib/setting/Setting.Util.d.ts +0 -9
  329. package/src/templates/libRoot/lib/setting/Setting.View.d.ts +0 -9
  330. package/src/templates/libRoot/lib/setting/Setting.Zone.d.ts +0 -9
  331. package/src/templates/libRoot/lib/setting/index.d.ts +0 -9
  332. package/src/templates/libRoot/lib/summary/Summary.Template.d.ts +0 -9
  333. package/src/templates/libRoot/lib/summary/Summary.Unit.d.ts +0 -9
  334. package/src/templates/libRoot/lib/summary/Summary.Util.d.ts +0 -9
  335. package/src/templates/libRoot/lib/summary/Summary.View.d.ts +0 -9
  336. package/src/templates/libRoot/lib/summary/Summary.Zone.d.ts +0 -9
  337. package/src/templates/libRoot/lib/summary/index.d.ts +0 -9
  338. package/src/templates/libRoot/lib/user/User.Template.d.ts +0 -9
  339. package/src/templates/libRoot/lib/user/User.Unit.d.ts +0 -9
  340. package/src/templates/libRoot/lib/user/User.Util.d.ts +0 -9
  341. package/src/templates/libRoot/lib/user/User.View.d.ts +0 -9
  342. package/src/templates/libRoot/lib/user/User.Zone.d.ts +0 -9
  343. package/src/templates/libRoot/lib/user/index.d.ts +0 -9
  344. package/src/templates/module/__Model__.Template.d.ts +0 -11
  345. package/src/templates/module/__Model__.Unit.d.ts +0 -11
  346. package/src/templates/module/__Model__.Util.d.ts +0 -11
  347. package/src/templates/module/__Model__.View.d.ts +0 -11
  348. package/src/templates/module/__Model__.Zone.d.ts +0 -11
  349. package/src/templates/module/index.d.ts +0 -11
@@ -0,0 +1,577 @@
1
+ # Model.Template.tsx Implementation Guide
2
+
3
+ ## Purpose and Role of Model.Template.tsx Files
4
+
5
+ Model.Template.tsx files are client-side React components that define the form structure for creating/editing models in Akan.js applications. They serve as:
6
+
7
+ 1. **Form Blueprints**: Provide reusable form structures for model CRUD operations
8
+ 2. **State Management**: Connect form inputs to Zustand store slices
9
+ 3. **Validation**: Implement field-level validation rules
10
+ 4. **UI Consistency**: Ensure uniform form design across the application
11
+ 5. **Type Safety**: Enforce data types based on Model.Constant definitions
12
+ 6. **Internationalization**: Support multi-language form fields with dictionary integration
13
+
14
+ ## File Location and Naming Convention
15
+
16
+ ```
17
+ libs/[domain]/lib/[model]/[Model].Template.tsx
18
+ ```
19
+
20
+ For example:
21
+
22
+ - `libs/shared/lib/admin/Admin.Template.tsx`
23
+ - `apps/akamir/lib/rewardRequest/RewardRequest.Template.tsx`
24
+
25
+ The file should export one or more named components, typically including:
26
+
27
+ - `General`: Main form template used in most scenarios
28
+ - `Advanced`: Optional complex fields for advanced forms
29
+ - `Compact`: Simplified version for inline editing or mobile views
30
+
31
+ ## Creating Model.Template.tsx Files
32
+
33
+ ### Basic Structure
34
+
35
+ ```tsx
36
+ // File: libs/[domain]/lib/[model]/[Model].Template.tsx
37
+ "use client";
38
+ import { Field } from "@akanjs/client";
39
+ import { cnst } from "@[project]/constant";
40
+ import { st } from "@[project]/client";
41
+ import { usePage } from "@[project]/lib/usePage";
42
+
43
+ export const General = ({ id }: { id?: string }) => {
44
+ const form = st.use.[model]Form(); // e.g., st.use.adminForm()
45
+ const { l } = usePage();
46
+
47
+ return (
48
+ <div className="grid grid-cols-1 gap-4 md:grid-cols-2">
49
+ <Field.Text
50
+ label={l.field.name}
51
+ value={form.name}
52
+ onChange={(v) => st.do.setNameOn[Model](v)}
53
+ required
54
+ maxLength={30}
55
+ />
56
+
57
+ <Field.Select
58
+ label={l.field.status}
59
+ value={form.status}
60
+ options={cnst.[Model]Status.options}
61
+ onChange={(v) => st.do.setStatusOn[Model](v)}
62
+ />
63
+
64
+ {/* Add other fields */}
65
+ </div>
66
+ );
67
+ };
68
+ ```
69
+
70
+ ### Integration with Store State
71
+
72
+ Model.Template components connect to Zustand store slices that follow a consistent pattern:
73
+
74
+ ```tsx
75
+ // Form state (defined in model.store.ts)
76
+ interface [Model]State {
77
+ [model]Form: cnst.[Model]Input;
78
+ // other state properties...
79
+ }
80
+
81
+ // Form actions (defined in model.store.ts)
82
+ interface [Model]Action {
83
+ setNameOn[Model]: (name: string) => void;
84
+ setStatusOn[Model]: (status: cnst.[Model]Status) => void;
85
+ // other actions...
86
+ }
87
+
88
+ // In Template component
89
+ const form = st.use.[model]Form();
90
+ const { setNameOn[Model] } = st.do;
91
+ ```
92
+
93
+ ### Field Types and Components
94
+
95
+ Akan.js provides a comprehensive set of form field components in the `Field` namespace:
96
+
97
+ ```tsx
98
+ <Field.Text /> // Text input
99
+ <Field.Textarea /> // Multi-line text
100
+ <Field.Number /> // Numeric input
101
+ <Field.Select /> // Dropdown selection
102
+ <Field.Checkbox /> // Toggle input
103
+ <Field.Date /> // Date picker
104
+ <Field.File /> // File upload
105
+ <Field.Image /> // Image upload with preview
106
+ <Field.Radio /> // Radio button group
107
+ <Field.Switch /> // Toggle switch
108
+ <Field.Tags /> // Tag input
109
+ <Field.Time /> // Time picker
110
+ <Field.Color /> // Color picker
111
+ <Field.Autocomplete /> // Text input with suggestions
112
+ <Field.MultiSelect /> // Multi-value selection
113
+ <Field.RichText /> // Rich text editor
114
+ <Field.CodeEditor /> // Code editor
115
+ <Field.Location /> // Map location picker
116
+ <Field.Slider /> // Numeric range slider
117
+ <Field.Password /> // Password input with visibility toggle
118
+ ```
119
+
120
+ ### Form Validation
121
+
122
+ Field components support validation through props:
123
+
124
+ ```tsx
125
+ <Field.Text
126
+ label="Email"
127
+ value={form.email}
128
+ onChange={(v) => st.do.setEmailOnUser(v)}
129
+ validate={(v) => /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(v)}
130
+ errorMessage="Invalid email format"
131
+ required
132
+ maxLength={50}
133
+ />
134
+ ```
135
+
136
+ Common validation options:
137
+
138
+ - `required`: Makes the field required
139
+ - `maxLength`: Maximum character length
140
+ - `minLength`: Minimum character length
141
+ - `min`/`max`: Number range limits
142
+ - `pattern`: Regex pattern for validation
143
+ - `validate`: Custom validation function
144
+ - `errorMessage`: Custom error message
145
+
146
+ ### Internationalization
147
+
148
+ Templates should use the `usePage()` hook to access localized strings:
149
+
150
+ ```tsx
151
+ const { l } = usePage();
152
+
153
+ <Field.Text
154
+ label={l.field.email}
155
+ placeholder={l.desc.enterEmail}
156
+ // ...
157
+ />;
158
+ ```
159
+
160
+ ## Form Layout Patterns
161
+
162
+ ### Basic Grid Layout
163
+
164
+ ```tsx
165
+ <div className="grid grid-cols-1 gap-4 md:grid-cols-2">
166
+ <Field.Text label="First Name" /* ... */ />
167
+ <Field.Text label="Last Name" /* ... */ />
168
+ <Field.Email label="Email" className="md:col-span-2" /* ... */ />
169
+ </div>
170
+ ```
171
+
172
+ ### Grouped Fields
173
+
174
+ ```tsx
175
+ <div className="space-y-6">
176
+ <fieldset className="rounded-md border p-4">
177
+ <legend className="text-lg font-medium">{l.section.personalInfo}</legend>
178
+ <div className="grid grid-cols-1 gap-4 md:grid-cols-2">{/* Personal info fields */}</div>
179
+ </fieldset>
180
+
181
+ <fieldset className="rounded-md border p-4">
182
+ <legend className="text-lg font-medium">{l.section.contactInfo}</legend>
183
+ <div className="grid grid-cols-1 gap-4 md:grid-cols-2">{/* Contact info fields */}</div>
184
+ </fieldset>
185
+ </div>
186
+ ```
187
+
188
+ ### Conditional Fields
189
+
190
+ ```tsx
191
+ {
192
+ form.type === "business" && (
193
+ <>
194
+ <Field.Text label="Company Name" /* ... */ />
195
+ <Field.Text label="Tax ID" /* ... */ />
196
+ </>
197
+ );
198
+ }
199
+ ```
200
+
201
+ ### Nested Components
202
+
203
+ Break complex forms into nested components for better organization:
204
+
205
+ ```tsx
206
+ export const General = ({ id }: { id?: string }) => {
207
+ // Main form logic
208
+ return (
209
+ <div className="space-y-6">
210
+ <BasicInfo />
211
+ <ContactDetails />
212
+ <Preferences />
213
+ </div>
214
+ );
215
+ };
216
+
217
+ const BasicInfo = () => {
218
+ const form = st.use.userForm();
219
+ // Component implementation
220
+ };
221
+ ```
222
+
223
+ ## Using Model.Template in Pages
224
+
225
+ ### Creation Page
226
+
227
+ ```tsx
228
+ // apps/app-name/app/[lang]/[model]/new/page.tsx
229
+ import { Model } from "@shared/ui";
230
+ import { [Model] } from "@[project]/client";
231
+
232
+ export default function NewModelPage() {
233
+ return (
234
+ <Model.Edit
235
+ sliceName="[model]"
236
+ type="form"
237
+ onSubmit="/[model]"
238
+ >
239
+ <[Model].Template.General />
240
+ </Model.Edit>
241
+ );
242
+ }
243
+ ```
244
+
245
+ ### Editing Page
246
+
247
+ ```tsx
248
+ // apps/app-name/app/[lang]/[model]/[id]/edit/page.tsx
249
+ import { Model } from "@shared/ui";
250
+ import { [Model] } from "@[project]/client";
251
+
252
+ export default function EditModelPage({ params }) {
253
+ return (
254
+ <Model.Edit
255
+ modelId={params.id}
256
+ sliceName="[model]"
257
+ renderTitle={l => l.title.edit[model]}
258
+ >
259
+ <[Model].Template.General id={params.id} />
260
+ </Model.Edit>
261
+ );
262
+ }
263
+ ```
264
+
265
+ ## Using Model.Template in Utility Components
266
+
267
+ ### In Modal Dialogs
268
+
269
+ ```tsx
270
+ // libs/[domain]/lib/[model]/[Model].Util.tsx
271
+ import { Modal, Model } from "@util/ui";
272
+ import { [Model] } from "@[project]/client";
273
+
274
+ export const EditButton = ({ id }: { id: string }) => (
275
+ <>
276
+ <Modal.Open opens={`edit-${id}`}>
277
+ <button>Edit</button>
278
+ </Modal.Open>
279
+
280
+ <Modal.Window name={`edit-${id}`}>
281
+ <Model.Edit
282
+ modelId={id}
283
+ sliceName="[model]"
284
+ >
285
+ <[Model].Template.General id={id} />
286
+ </Model.Edit>
287
+ </Modal.Window>
288
+ </>
289
+ );
290
+ ```
291
+
292
+ ### In Custom Forms
293
+
294
+ ```tsx
295
+ // libs/[domain]/lib/[model]/[Model].Util.tsx
296
+ import { st } from "@[project]/client";
297
+ import { [Model] } from "@[project]/client";
298
+
299
+ export const CustomFormSection = () => {
300
+ const form = st.use.[model]Form();
301
+
302
+ return (
303
+ <div>
304
+ <h3>Advanced Settings</h3>
305
+ <[Model].Template.Advanced />
306
+ <button onClick={st.do.submit[model]}>Save</button>
307
+ </div>
308
+ );
309
+ };
310
+ ```
311
+
312
+ ## Using Model.Template in Zone Components
313
+
314
+ ### List View Creation
315
+
316
+ ```tsx
317
+ // libs/[domain]/lib/[model]/[Model].Zone.tsx
318
+ import { Data } from "@shared/ui";
319
+ import { [Model] } from "@[project]/client";
320
+
321
+ export const AdminZone = () => (
322
+ <Data.ListContainer
323
+ renderTemplate={() => <[Model].Template.General />}
324
+ // ...other props
325
+ />
326
+ );
327
+ ```
328
+
329
+ ### Inline Editing
330
+
331
+ ```tsx
332
+ // libs/[domain]/lib/[model]/[Model].Zone.tsx
333
+ import { Model } from "@shared/ui";
334
+ import { [Model] } from "@[project]/client";
335
+
336
+ export const InlineEditor = ({ id }: { id: string }) => (
337
+ <Model.EditInline
338
+ modelId={id}
339
+ sliceName="[model]"
340
+ >
341
+ <[Model].Template.Compact id={id} />
342
+ </Model.EditInline>
343
+ );
344
+ ```
345
+
346
+ ## Best Practices
347
+
348
+ ### 1. Component Organization
349
+
350
+ Split complex templates into logical sections:
351
+
352
+ ```tsx
353
+ // Recommended structure
354
+ [Model].Template.tsx
355
+ ├─ General.tsx // Main form
356
+ ├─ Advanced.tsx // Advanced fields
357
+ ├─ Compact.tsx // Simplified form
358
+ └─ Sections/ // Form sections
359
+ ├─ Basic.tsx
360
+ └─ Metadata.tsx
361
+ ```
362
+
363
+ ### 2. State Management
364
+
365
+ - Use `st.use.[model]Form()` for accessing form state
366
+ - Use `st.do.set[Field]On[Model]()` for updating form fields
367
+ - Perform form initialization in useEffect:
368
+
369
+ ```tsx
370
+ useEffect(() => {
371
+ if (id) {
372
+ void sig.[model].get[Model](id).then(data => {
373
+ st.do.set[Model]Form(data.[model]);
374
+ });
375
+ }
376
+
377
+ // Reset form on unmount
378
+ return () => st.do.reset[Model]Form();
379
+ }, [id]);
380
+ ```
381
+
382
+ ### 3. Validation Approaches
383
+
384
+ - **Field-level validation**: Use the `validate` prop on field components
385
+ - **Form-level validation**: Use custom validation logic before submission
386
+ - **Server-side validation**: Always validate in the service layer as well
387
+
388
+ ```tsx
389
+ // Form-level validation example
390
+ const handleSubmit = () => {
391
+ const errors = validateForm(form);
392
+ if (Object.keys(errors).length > 0) {
393
+ st.do.setFormErrors(errors);
394
+ return;
395
+ }
396
+
397
+ st.do.submit[Model]();
398
+ };
399
+ ```
400
+
401
+ ### 4. Performance Optimization
402
+
403
+ - Memoize components with `React.memo` for complex forms
404
+ - Use controlled components consistently
405
+ - Debounce input changes for expensive operations:
406
+
407
+ ```tsx
408
+ import { useDebounce } from "@[project]/lib/hooks";
409
+
410
+ const debouncedValue = useDebounce(inputValue, 300);
411
+
412
+ useEffect(() => {
413
+ // Perform expensive operation with debouncedValue
414
+ }, [debouncedValue]);
415
+ ```
416
+
417
+ ### 5. Accessibility
418
+
419
+ - Associate labels with inputs using `htmlFor`/`id`
420
+ - Provide ARIA attributes for custom components
421
+ - Ensure keyboard navigation works properly
422
+ - Use semantic HTML elements
423
+
424
+ ```tsx
425
+ <label htmlFor="name-field" className="block text-sm font-medium">
426
+ Name
427
+ </label>
428
+ <input
429
+ id="name-field"
430
+ type="text"
431
+ aria-describedby="name-description"
432
+ // ...
433
+ />
434
+ <p id="name-description" className="text-xs text-gray-500">
435
+ Enter your full name as it appears on your ID
436
+ </p>
437
+ ```
438
+
439
+ ## Common Patterns
440
+
441
+ ### Conditional Fields
442
+
443
+ ```tsx
444
+ {
445
+ form.type === "advanced" && (
446
+ <Field.Text
447
+ label="Advanced Option"
448
+ value={form.advancedOption}
449
+ onChange={(v) => st.do.setAdvancedOptionOn[Model](v)}
450
+ />
451
+ );
452
+ }
453
+ ```
454
+
455
+ ### Field Groups
456
+
457
+ ```tsx
458
+ const ContactSection = () => {
459
+ const form = st.use.[model]Form();
460
+ const { l } = usePage();
461
+
462
+ return (
463
+ <fieldset className="border p-4">
464
+ <legend>{l.section.contactInfo}</legend>
465
+ <Field.Text label={l.field.email} /* ... */ />
466
+ <Field.Text label={l.field.phone} /* ... */ />
467
+ </fieldset>
468
+ );
469
+ };
470
+ ```
471
+
472
+ ### Custom Field Components
473
+
474
+ ```tsx
475
+ const CustomField = ({ label, value, onChange }) => {
476
+ const handleChange = (e) => {
477
+ onChange(e.target.value);
478
+ };
479
+
480
+ return (
481
+ <div className="custom-field">
482
+ <label>{label}</label>
483
+ <input value={value} onChange={handleChange} className="special-input" />
484
+ </div>
485
+ );
486
+ };
487
+ ```
488
+
489
+ ## Form State Integration with Database Models
490
+
491
+ Templates connect to state that directly corresponds to the model structure defined in `[model].constant.ts`:
492
+
493
+ ```tsx
494
+ // In [model].constant.ts
495
+ @Model.Input("[Model]Input")
496
+ export class [Model]Input {
497
+ @Field.Prop(() => String)
498
+ name: string;
499
+
500
+ @Field.Prop(() => String)
501
+ description: string;
502
+ }
503
+
504
+ // In [Model].Template.tsx
505
+ const form = st.use.[model]Form(); // Type: [Model]Input
506
+
507
+ <Field.Text
508
+ value={form.name}
509
+ onChange={(v) => st.do.setNameOn[Model](v)}
510
+ />
511
+ ```
512
+
513
+ ## Troubleshooting
514
+
515
+ ### Form Not Updating
516
+
517
+ - Verify Zustand store actions are properly connected
518
+ - Check for conflicting state updates in parent components
519
+ - Ensure `onChange` handlers are updating the correct store slice
520
+ - Verify that the form state is being properly initialized
521
+
522
+ ### Validation Issues
523
+
524
+ - Confirm validation regex patterns match server-side rules
525
+ - Check field requirements in `[model].constant.ts`
526
+ - Verify error messages are properly displayed
527
+ - Test edge cases like empty strings and special characters
528
+
529
+ ### Performance Problems
530
+
531
+ - Profile re-renders with React DevTools
532
+ - Implement memoization on complex components
533
+ - Consider virtualizing large forms
534
+ - Check for unnecessary re-renders
535
+
536
+ ### Type Errors
537
+
538
+ - Ensure `[model].constant.ts` types are up to date
539
+ - Verify FormState interface matches `[Model]Input`
540
+ - Check for correct import paths
541
+ - Validate that prop types match the expected form field types
542
+
543
+ ## Integration with API Calls
544
+
545
+ Templates should work with signals and stores to handle form submissions:
546
+
547
+ ```tsx
548
+ // In [model].store.ts
549
+ createUser: async () => {
550
+ const { userForm } = get();
551
+ try {
552
+ const user = await sig.user.createUser({ data: userForm });
553
+ set((state) => {
554
+ state.users = [...state.users, user];
555
+ state.userForm = {
556
+ /* reset form */
557
+ };
558
+ });
559
+ return user;
560
+ } catch (error) {
561
+ set((state) => {
562
+ state.formErrors = error.errors || { general: error.message };
563
+ });
564
+ throw error;
565
+ }
566
+ };
567
+
568
+ // In component
569
+ const handleSubmit = async () => {
570
+ try {
571
+ await st.do.createUser();
572
+ // Handle success (navigation, toast, etc.)
573
+ } catch (error) {
574
+ // Error already handled in store
575
+ }
576
+ };
577
+ ```