@carlonicora/nextjs-jsonapi 1.2.0 → 1.3.1

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 (272) hide show
  1. package/dist/{BlockNoteEditor-CNXQ3WL3.js → BlockNoteEditor-7WYPN34K.js} +17 -17
  2. package/dist/{BlockNoteEditor-CNXQ3WL3.js.map → BlockNoteEditor-7WYPN34K.js.map} +1 -1
  3. package/dist/{BlockNoteEditor-DC33K4IF.mjs → BlockNoteEditor-V625C23O.mjs} +7 -7
  4. package/dist/{JsonApiRequest-O7BGUMFO.mjs → JsonApiRequest-6UR7DIAR.mjs} +4 -2
  5. package/dist/JsonApiRequest-UJ7FGIVI.js +25 -0
  6. package/dist/JsonApiRequest-UJ7FGIVI.js.map +1 -0
  7. package/dist/{chunk-EZK3H6EJ.js → chunk-5IET37O4.js} +206 -206
  8. package/dist/{chunk-EZK3H6EJ.js.map → chunk-5IET37O4.js.map} +1 -1
  9. package/dist/{chunk-Y4XI3AZR.mjs → chunk-5QC7A6BL.mjs} +32 -20
  10. package/dist/chunk-5QC7A6BL.mjs.map +1 -0
  11. package/dist/{chunk-LJRD4SRV.js → chunk-DEYKTLA3.js} +6 -6
  12. package/dist/{chunk-LJRD4SRV.js.map → chunk-DEYKTLA3.js.map} +1 -1
  13. package/dist/{chunk-NPPQNSXN.mjs → chunk-FMBQZAIP.mjs} +3 -3
  14. package/dist/{chunk-MHVXFWZY.mjs → chunk-HTLEKZND.mjs} +3 -3
  15. package/dist/{chunk-74F6BBHH.mjs → chunk-IKBA4AHN.mjs} +2 -1
  16. package/dist/chunk-IKBA4AHN.mjs.map +1 -0
  17. package/dist/{chunk-JLN6UWII.mjs → chunk-JGFWIT2E.mjs} +2 -2
  18. package/dist/{chunk-KDFDGXCX.js → chunk-K2ANOT66.js} +576 -564
  19. package/dist/chunk-K2ANOT66.js.map +1 -0
  20. package/dist/{chunk-X53MF5ZN.mjs → chunk-P2F54I7Q.mjs} +2 -2
  21. package/dist/{chunk-5ZEADNNP.js → chunk-PMXG5WBC.js} +3 -2
  22. package/dist/chunk-PMXG5WBC.js.map +1 -0
  23. package/dist/{chunk-L6LH7WA4.js → chunk-PO5Q3H5I.js} +190 -190
  24. package/dist/{chunk-L6LH7WA4.js.map → chunk-PO5Q3H5I.js.map} +1 -1
  25. package/dist/{chunk-WZJDLITG.js → chunk-Q4FXESVT.js} +3 -3
  26. package/dist/{chunk-WZJDLITG.js.map → chunk-Q4FXESVT.js.map} +1 -1
  27. package/dist/client/index.js +7 -7
  28. package/dist/client/index.mjs +6 -6
  29. package/dist/components/index.js +7 -7
  30. package/dist/components/index.mjs +6 -6
  31. package/dist/contexts/index.js +7 -7
  32. package/dist/contexts/index.mjs +6 -6
  33. package/dist/core/index.js +2 -2
  34. package/dist/core/index.mjs +1 -1
  35. package/dist/features/index.js +4 -4
  36. package/dist/features/index.mjs +3 -3
  37. package/dist/hooks/index.js +7 -7
  38. package/dist/hooks/index.mjs +6 -6
  39. package/dist/index.d.mts +2 -1
  40. package/dist/index.d.ts +2 -1
  41. package/dist/index.js +5 -3
  42. package/dist/index.js.map +1 -1
  43. package/dist/index.mjs +4 -2
  44. package/dist/scripts/generate-web-module/generator.d.ts +15 -0
  45. package/dist/scripts/generate-web-module/generator.d.ts.map +1 -0
  46. package/dist/scripts/generate-web-module/generator.js +320 -0
  47. package/dist/scripts/generate-web-module/generator.js.map +1 -0
  48. package/dist/scripts/generate-web-module/index.d.ts +16 -0
  49. package/dist/scripts/generate-web-module/index.d.ts.map +1 -0
  50. package/dist/scripts/generate-web-module/index.js +80 -0
  51. package/dist/scripts/generate-web-module/index.js.map +1 -0
  52. package/dist/scripts/generate-web-module/templates/components/container.template.d.ts +14 -0
  53. package/dist/scripts/generate-web-module/templates/components/container.template.d.ts.map +1 -0
  54. package/dist/scripts/generate-web-module/templates/components/container.template.js +124 -0
  55. package/dist/scripts/generate-web-module/templates/components/container.template.js.map +1 -0
  56. package/dist/scripts/generate-web-module/templates/components/content.template.d.ts +15 -0
  57. package/dist/scripts/generate-web-module/templates/components/content.template.d.ts.map +1 -0
  58. package/dist/scripts/generate-web-module/templates/components/content.template.js +39 -0
  59. package/dist/scripts/generate-web-module/templates/components/content.template.js.map +1 -0
  60. package/dist/scripts/generate-web-module/templates/components/deleter.template.d.ts +14 -0
  61. package/dist/scripts/generate-web-module/templates/components/deleter.template.d.ts.map +1 -0
  62. package/dist/scripts/generate-web-module/templates/components/deleter.template.js +51 -0
  63. package/dist/scripts/generate-web-module/templates/components/deleter.template.js.map +1 -0
  64. package/dist/scripts/generate-web-module/templates/components/details.template.d.ts +14 -0
  65. package/dist/scripts/generate-web-module/templates/components/details.template.d.ts.map +1 -0
  66. package/dist/scripts/generate-web-module/templates/components/details.template.js +109 -0
  67. package/dist/scripts/generate-web-module/templates/components/details.template.js.map +1 -0
  68. package/dist/scripts/generate-web-module/templates/components/editor.template.d.ts +14 -0
  69. package/dist/scripts/generate-web-module/templates/components/editor.template.d.ts.map +1 -0
  70. package/dist/scripts/generate-web-module/templates/components/editor.template.js +459 -0
  71. package/dist/scripts/generate-web-module/templates/components/editor.template.js.map +1 -0
  72. package/dist/scripts/generate-web-module/templates/components/index.d.ts +15 -0
  73. package/dist/scripts/generate-web-module/templates/components/index.d.ts.map +1 -0
  74. package/dist/scripts/generate-web-module/templates/components/index.js +29 -0
  75. package/dist/scripts/generate-web-module/templates/components/index.js.map +1 -0
  76. package/dist/scripts/generate-web-module/templates/components/list-container.template.d.ts +14 -0
  77. package/dist/scripts/generate-web-module/templates/components/list-container.template.d.ts.map +1 -0
  78. package/dist/scripts/generate-web-module/templates/components/list-container.template.js +30 -0
  79. package/dist/scripts/generate-web-module/templates/components/list-container.template.js.map +1 -0
  80. package/dist/scripts/generate-web-module/templates/components/list.template.d.ts +14 -0
  81. package/dist/scripts/generate-web-module/templates/components/list.template.d.ts.map +1 -0
  82. package/dist/scripts/generate-web-module/templates/components/list.template.js +84 -0
  83. package/dist/scripts/generate-web-module/templates/components/list.template.js.map +1 -0
  84. package/dist/scripts/generate-web-module/templates/components/multi-selector.template.d.ts +14 -0
  85. package/dist/scripts/generate-web-module/templates/components/multi-selector.template.d.ts.map +1 -0
  86. package/dist/scripts/generate-web-module/templates/components/multi-selector.template.js +184 -0
  87. package/dist/scripts/generate-web-module/templates/components/multi-selector.template.js.map +1 -0
  88. package/dist/scripts/generate-web-module/templates/components/selector.template.d.ts +14 -0
  89. package/dist/scripts/generate-web-module/templates/components/selector.template.d.ts.map +1 -0
  90. package/dist/scripts/generate-web-module/templates/components/selector.template.js +199 -0
  91. package/dist/scripts/generate-web-module/templates/components/selector.template.js.map +1 -0
  92. package/dist/scripts/generate-web-module/templates/context.template.d.ts +14 -0
  93. package/dist/scripts/generate-web-module/templates/context.template.d.ts.map +1 -0
  94. package/dist/scripts/generate-web-module/templates/context.template.js +121 -0
  95. package/dist/scripts/generate-web-module/templates/context.template.js.map +1 -0
  96. package/dist/scripts/generate-web-module/templates/data/fields.template.d.ts +14 -0
  97. package/dist/scripts/generate-web-module/templates/data/fields.template.d.ts.map +1 -0
  98. package/dist/scripts/generate-web-module/templates/data/fields.template.js +55 -0
  99. package/dist/scripts/generate-web-module/templates/data/fields.template.js.map +1 -0
  100. package/dist/scripts/generate-web-module/templates/data/index.d.ts +10 -0
  101. package/dist/scripts/generate-web-module/templates/data/index.d.ts.map +1 -0
  102. package/dist/scripts/generate-web-module/templates/data/index.js +26 -0
  103. package/dist/scripts/generate-web-module/templates/data/index.js.map +1 -0
  104. package/dist/scripts/generate-web-module/templates/data/interface.template.d.ts +14 -0
  105. package/dist/scripts/generate-web-module/templates/data/interface.template.d.ts.map +1 -0
  106. package/dist/scripts/generate-web-module/templates/data/interface.template.js +116 -0
  107. package/dist/scripts/generate-web-module/templates/data/interface.template.js.map +1 -0
  108. package/dist/scripts/generate-web-module/templates/data/model.template.d.ts +14 -0
  109. package/dist/scripts/generate-web-module/templates/data/model.template.d.ts.map +1 -0
  110. package/dist/scripts/generate-web-module/templates/data/model.template.js +274 -0
  111. package/dist/scripts/generate-web-module/templates/data/model.template.js.map +1 -0
  112. package/dist/scripts/generate-web-module/templates/data/service.template.d.ts +14 -0
  113. package/dist/scripts/generate-web-module/templates/data/service.template.d.ts.map +1 -0
  114. package/dist/scripts/generate-web-module/templates/data/service.template.js +168 -0
  115. package/dist/scripts/generate-web-module/templates/data/service.template.js.map +1 -0
  116. package/dist/scripts/generate-web-module/templates/index.d.ts +12 -0
  117. package/dist/scripts/generate-web-module/templates/index.d.ts.map +1 -0
  118. package/dist/scripts/generate-web-module/templates/index.js +37 -0
  119. package/dist/scripts/generate-web-module/templates/index.js.map +1 -0
  120. package/dist/scripts/generate-web-module/templates/module.template.d.ts +14 -0
  121. package/dist/scripts/generate-web-module/templates/module.template.d.ts.map +1 -0
  122. package/dist/scripts/generate-web-module/templates/module.template.js +64 -0
  123. package/dist/scripts/generate-web-module/templates/module.template.js.map +1 -0
  124. package/dist/scripts/generate-web-module/templates/pages/detail-page.template.d.ts +14 -0
  125. package/dist/scripts/generate-web-module/templates/pages/detail-page.template.d.ts.map +1 -0
  126. package/dist/scripts/generate-web-module/templates/pages/detail-page.template.js +65 -0
  127. package/dist/scripts/generate-web-module/templates/pages/detail-page.template.js.map +1 -0
  128. package/dist/scripts/generate-web-module/templates/pages/index.d.ts +8 -0
  129. package/dist/scripts/generate-web-module/templates/pages/index.d.ts.map +1 -0
  130. package/dist/scripts/generate-web-module/templates/pages/index.js +13 -0
  131. package/dist/scripts/generate-web-module/templates/pages/index.js.map +1 -0
  132. package/dist/scripts/generate-web-module/templates/pages/list-page.template.d.ts +14 -0
  133. package/dist/scripts/generate-web-module/templates/pages/list-page.template.d.ts.map +1 -0
  134. package/dist/scripts/generate-web-module/templates/pages/list-page.template.js +37 -0
  135. package/dist/scripts/generate-web-module/templates/pages/list-page.template.js.map +1 -0
  136. package/dist/scripts/generate-web-module/templates/table-hook.template.d.ts +14 -0
  137. package/dist/scripts/generate-web-module/templates/table-hook.template.d.ts.map +1 -0
  138. package/dist/scripts/generate-web-module/templates/table-hook.template.js +174 -0
  139. package/dist/scripts/generate-web-module/templates/table-hook.template.js.map +1 -0
  140. package/dist/scripts/generate-web-module/transformers/field-mapper.d.ts +55 -0
  141. package/dist/scripts/generate-web-module/transformers/field-mapper.d.ts.map +1 -0
  142. package/dist/scripts/generate-web-module/transformers/field-mapper.js +179 -0
  143. package/dist/scripts/generate-web-module/transformers/field-mapper.js.map +1 -0
  144. package/dist/scripts/generate-web-module/transformers/i18n-generator.d.ts +78 -0
  145. package/dist/scripts/generate-web-module/transformers/i18n-generator.d.ts.map +1 -0
  146. package/dist/scripts/generate-web-module/transformers/i18n-generator.js +182 -0
  147. package/dist/scripts/generate-web-module/transformers/i18n-generator.js.map +1 -0
  148. package/dist/scripts/generate-web-module/transformers/import-resolver.d.ts +106 -0
  149. package/dist/scripts/generate-web-module/transformers/import-resolver.d.ts.map +1 -0
  150. package/dist/scripts/generate-web-module/transformers/import-resolver.js +193 -0
  151. package/dist/scripts/generate-web-module/transformers/import-resolver.js.map +1 -0
  152. package/dist/scripts/generate-web-module/transformers/index.d.ts +12 -0
  153. package/dist/scripts/generate-web-module/transformers/index.d.ts.map +1 -0
  154. package/dist/scripts/generate-web-module/transformers/index.js +28 -0
  155. package/dist/scripts/generate-web-module/transformers/index.js.map +1 -0
  156. package/dist/scripts/generate-web-module/transformers/name-transformer.d.ts +60 -0
  157. package/dist/scripts/generate-web-module/transformers/name-transformer.d.ts.map +1 -0
  158. package/dist/scripts/generate-web-module/transformers/name-transformer.js +115 -0
  159. package/dist/scripts/generate-web-module/transformers/name-transformer.js.map +1 -0
  160. package/dist/scripts/generate-web-module/transformers/parent-detector.d.ts +57 -0
  161. package/dist/scripts/generate-web-module/transformers/parent-detector.d.ts.map +1 -0
  162. package/dist/scripts/generate-web-module/transformers/parent-detector.js +88 -0
  163. package/dist/scripts/generate-web-module/transformers/parent-detector.js.map +1 -0
  164. package/dist/scripts/generate-web-module/transformers/relationship-resolver.d.ts +68 -0
  165. package/dist/scripts/generate-web-module/transformers/relationship-resolver.d.ts.map +1 -0
  166. package/dist/scripts/generate-web-module/transformers/relationship-resolver.js +219 -0
  167. package/dist/scripts/generate-web-module/transformers/relationship-resolver.js.map +1 -0
  168. package/dist/scripts/generate-web-module/types/field-mapping.types.d.ts +68 -0
  169. package/dist/scripts/generate-web-module/types/field-mapping.types.d.ts.map +1 -0
  170. package/dist/scripts/generate-web-module/types/field-mapping.types.js +129 -0
  171. package/dist/scripts/generate-web-module/types/field-mapping.types.js.map +1 -0
  172. package/dist/scripts/generate-web-module/types/index.d.ts +9 -0
  173. package/dist/scripts/generate-web-module/types/index.d.ts.map +1 -0
  174. package/dist/scripts/generate-web-module/types/index.js +25 -0
  175. package/dist/scripts/generate-web-module/types/index.js.map +1 -0
  176. package/dist/scripts/generate-web-module/types/json-schema.interface.d.ts +40 -0
  177. package/dist/scripts/generate-web-module/types/json-schema.interface.d.ts.map +1 -0
  178. package/dist/scripts/generate-web-module/types/json-schema.interface.js +10 -0
  179. package/dist/scripts/generate-web-module/types/json-schema.interface.js.map +1 -0
  180. package/dist/scripts/generate-web-module/types/template-data.interface.d.ts +128 -0
  181. package/dist/scripts/generate-web-module/types/template-data.interface.d.ts.map +1 -0
  182. package/dist/scripts/generate-web-module/types/template-data.interface.js +9 -0
  183. package/dist/scripts/generate-web-module/types/template-data.interface.js.map +1 -0
  184. package/dist/scripts/generate-web-module/utils/bootstrapper-updater.d.ts +29 -0
  185. package/dist/scripts/generate-web-module/utils/bootstrapper-updater.d.ts.map +1 -0
  186. package/dist/scripts/generate-web-module/utils/bootstrapper-updater.js +153 -0
  187. package/dist/scripts/generate-web-module/utils/bootstrapper-updater.js.map +1 -0
  188. package/dist/scripts/generate-web-module/utils/file-writer.d.ts +38 -0
  189. package/dist/scripts/generate-web-module/utils/file-writer.d.ts.map +1 -0
  190. package/dist/scripts/generate-web-module/utils/file-writer.js +126 -0
  191. package/dist/scripts/generate-web-module/utils/file-writer.js.map +1 -0
  192. package/dist/scripts/generate-web-module/utils/i18n-updater.d.ts +28 -0
  193. package/dist/scripts/generate-web-module/utils/i18n-updater.d.ts.map +1 -0
  194. package/dist/scripts/generate-web-module/utils/i18n-updater.js +122 -0
  195. package/dist/scripts/generate-web-module/utils/i18n-updater.js.map +1 -0
  196. package/dist/scripts/generate-web-module/utils/index.d.ts +9 -0
  197. package/dist/scripts/generate-web-module/utils/index.d.ts.map +1 -0
  198. package/dist/scripts/generate-web-module/utils/index.js +20 -0
  199. package/dist/scripts/generate-web-module/utils/index.js.map +1 -0
  200. package/dist/scripts/generate-web-module/validators/json-schema-validator.d.ts +46 -0
  201. package/dist/scripts/generate-web-module/validators/json-schema-validator.d.ts.map +1 -0
  202. package/dist/scripts/generate-web-module/validators/json-schema-validator.js +265 -0
  203. package/dist/scripts/generate-web-module/validators/json-schema-validator.js.map +1 -0
  204. package/dist/shadcnui/index.js +4 -4
  205. package/dist/shadcnui/index.mjs +3 -3
  206. package/dist/utils/index.js +3 -3
  207. package/dist/utils/index.mjs +2 -2
  208. package/package.json +27 -21
  209. package/scripts/generate-web-module/generator.ts +363 -0
  210. package/scripts/generate-web-module/index.ts +49 -0
  211. package/scripts/generate-web-module/templates/components/container.template.ts +129 -0
  212. package/scripts/generate-web-module/templates/components/content.template.ts +40 -0
  213. package/scripts/generate-web-module/templates/components/deleter.template.ts +51 -0
  214. package/scripts/generate-web-module/templates/components/details.template.ts +115 -0
  215. package/scripts/generate-web-module/templates/components/editor.template.ts +495 -0
  216. package/scripts/generate-web-module/templates/components/index.ts +18 -0
  217. package/scripts/generate-web-module/templates/components/list-container.template.ts +30 -0
  218. package/scripts/generate-web-module/templates/components/list.template.ts +91 -0
  219. package/scripts/generate-web-module/templates/components/multi-selector.template.ts +184 -0
  220. package/scripts/generate-web-module/templates/components/selector.template.ts +199 -0
  221. package/scripts/generate-web-module/templates/context.template.ts +121 -0
  222. package/scripts/generate-web-module/templates/data/fields.template.ts +64 -0
  223. package/scripts/generate-web-module/templates/data/index.ts +10 -0
  224. package/scripts/generate-web-module/templates/data/interface.template.ts +136 -0
  225. package/scripts/generate-web-module/templates/data/model.template.ts +327 -0
  226. package/scripts/generate-web-module/templates/data/service.template.ts +185 -0
  227. package/scripts/generate-web-module/templates/index.ts +34 -0
  228. package/scripts/generate-web-module/templates/module.template.ts +69 -0
  229. package/scripts/generate-web-module/templates/pages/detail-page.template.ts +65 -0
  230. package/scripts/generate-web-module/templates/pages/index.ts +8 -0
  231. package/scripts/generate-web-module/templates/pages/list-page.template.ts +37 -0
  232. package/scripts/generate-web-module/templates/table-hook.template.ts +182 -0
  233. package/scripts/generate-web-module/transformers/field-mapper.ts +201 -0
  234. package/scripts/generate-web-module/transformers/i18n-generator.ts +199 -0
  235. package/scripts/generate-web-module/transformers/import-resolver.ts +250 -0
  236. package/scripts/generate-web-module/transformers/index.ts +12 -0
  237. package/scripts/generate-web-module/transformers/name-transformer.ts +115 -0
  238. package/scripts/generate-web-module/transformers/parent-detector.ts +87 -0
  239. package/scripts/generate-web-module/transformers/relationship-resolver.ts +221 -0
  240. package/scripts/generate-web-module/tsconfig.json +24 -0
  241. package/scripts/generate-web-module/types/field-mapping.types.ts +141 -0
  242. package/scripts/generate-web-module/types/index.ts +9 -0
  243. package/scripts/generate-web-module/types/json-schema.interface.ts +42 -0
  244. package/scripts/generate-web-module/types/template-data.interface.ts +164 -0
  245. package/scripts/generate-web-module/utils/bootstrapper-updater.ts +145 -0
  246. package/scripts/generate-web-module/utils/file-writer.ts +115 -0
  247. package/scripts/generate-web-module/utils/i18n-updater.ts +108 -0
  248. package/scripts/generate-web-module/utils/index.ts +9 -0
  249. package/scripts/generate-web-module/validators/json-schema-validator.ts +306 -0
  250. package/src/components/errors/ErrorDetails.tsx +2 -2
  251. package/src/features/auth/components/containers/AuthContainer.tsx +1 -1
  252. package/src/features/auth/components/details/LandingComponent.tsx +20 -1
  253. package/src/features/auth/components/forms/AcceptInvitation.tsx +1 -1
  254. package/src/features/auth/components/forms/ActivateAccount.tsx +1 -1
  255. package/src/features/auth/components/forms/ForgotPassword.tsx +1 -1
  256. package/src/features/auth/components/forms/Login.tsx +1 -1
  257. package/src/features/auth/components/forms/Register.tsx +1 -1
  258. package/src/features/auth/components/forms/ResetPassword.tsx +1 -1
  259. package/src/features/company/components/forms/CompanyLicense.tsx +1 -8
  260. package/src/unified/JsonApiRequest.ts +2 -2
  261. package/dist/JsonApiRequest-VARLNKAF.js +0 -23
  262. package/dist/JsonApiRequest-VARLNKAF.js.map +0 -1
  263. package/dist/chunk-5ZEADNNP.js.map +0 -1
  264. package/dist/chunk-74F6BBHH.mjs.map +0 -1
  265. package/dist/chunk-KDFDGXCX.js.map +0 -1
  266. package/dist/chunk-Y4XI3AZR.mjs.map +0 -1
  267. /package/dist/{BlockNoteEditor-DC33K4IF.mjs.map → BlockNoteEditor-V625C23O.mjs.map} +0 -0
  268. /package/dist/{JsonApiRequest-O7BGUMFO.mjs.map → JsonApiRequest-6UR7DIAR.mjs.map} +0 -0
  269. /package/dist/{chunk-NPPQNSXN.mjs.map → chunk-FMBQZAIP.mjs.map} +0 -0
  270. /package/dist/{chunk-MHVXFWZY.mjs.map → chunk-HTLEKZND.mjs.map} +0 -0
  271. /package/dist/{chunk-JLN6UWII.mjs.map → chunk-JGFWIT2E.mjs.map} +0 -0
  272. /package/dist/{chunk-X53MF5ZN.mjs.map → chunk-P2F54I7Q.mjs.map} +0 -0
@@ -226,9 +226,9 @@
226
226
 
227
227
 
228
228
 
229
- var _chunkEZK3H6EJjs = require('../chunk-EZK3H6EJ.js');
230
- require('../chunk-LJRD4SRV.js');
231
- require('../chunk-WZJDLITG.js');
229
+ var _chunk5IET37O4js = require('../chunk-5IET37O4.js');
230
+ require('../chunk-DEYKTLA3.js');
231
+ require('../chunk-Q4FXESVT.js');
232
232
  require('../chunk-AGAJMJ4T.js');
233
233
  require('../chunk-7QVYU63E.js');
234
234
 
@@ -464,5 +464,5 @@ require('../chunk-7QVYU63E.js');
464
464
 
465
465
 
466
466
 
467
- exports.Accordion = _chunkEZK3H6EJjs.Accordion; exports.AccordionContent = _chunkEZK3H6EJjs.AccordionContent; exports.AccordionItem = _chunkEZK3H6EJjs.AccordionItem; exports.AccordionTrigger = _chunkEZK3H6EJjs.AccordionTrigger; exports.Alert = _chunkEZK3H6EJjs.Alert; exports.AlertDescription = _chunkEZK3H6EJjs.AlertDescription; exports.AlertDialog = _chunkEZK3H6EJjs.AlertDialog; exports.AlertDialogAction = _chunkEZK3H6EJjs.AlertDialogAction; exports.AlertDialogCancel = _chunkEZK3H6EJjs.AlertDialogCancel; exports.AlertDialogContent = _chunkEZK3H6EJjs.AlertDialogContent; exports.AlertDialogDescription = _chunkEZK3H6EJjs.AlertDialogDescription; exports.AlertDialogFooter = _chunkEZK3H6EJjs.AlertDialogFooter; exports.AlertDialogHeader = _chunkEZK3H6EJjs.AlertDialogHeader; exports.AlertDialogOverlay = _chunkEZK3H6EJjs.AlertDialogOverlay; exports.AlertDialogPortal = _chunkEZK3H6EJjs.AlertDialogPortal; exports.AlertDialogTitle = _chunkEZK3H6EJjs.AlertDialogTitle; exports.AlertDialogTrigger = _chunkEZK3H6EJjs.AlertDialogTrigger; exports.AlertTitle = _chunkEZK3H6EJjs.AlertTitle; exports.Avatar = _chunkEZK3H6EJjs.Avatar; exports.AvatarFallback = _chunkEZK3H6EJjs.AvatarFallback; exports.AvatarImage = _chunkEZK3H6EJjs.AvatarImage; exports.Badge = _chunkEZK3H6EJjs.Badge; exports.Board = _chunkEZK3H6EJjs.KanbanBoard; exports.Breadcrumb = _chunkEZK3H6EJjs.Breadcrumb; exports.BreadcrumbEllipsis = _chunkEZK3H6EJjs.BreadcrumbEllipsis; exports.BreadcrumbItem = _chunkEZK3H6EJjs.BreadcrumbItem; exports.BreadcrumbLink = _chunkEZK3H6EJjs.BreadcrumbLink; exports.BreadcrumbList = _chunkEZK3H6EJjs.BreadcrumbList; exports.BreadcrumbPage = _chunkEZK3H6EJjs.BreadcrumbPage; exports.BreadcrumbSeparator = _chunkEZK3H6EJjs.BreadcrumbSeparator; exports.Button = _chunkEZK3H6EJjs.Button; exports.Calendar = _chunkEZK3H6EJjs.Calendar; exports.Card = _chunkEZK3H6EJjs.Card; exports.CardContent = _chunkEZK3H6EJjs.CardContent; exports.CardDescription = _chunkEZK3H6EJjs.CardDescription; exports.CardFooter = _chunkEZK3H6EJjs.CardFooter; exports.CardHeader = _chunkEZK3H6EJjs.CardHeader; exports.CardTitle = _chunkEZK3H6EJjs.CardTitle; exports.Carousel = _chunkEZK3H6EJjs.Carousel; exports.CarouselContent = _chunkEZK3H6EJjs.CarouselContent; exports.CarouselItem = _chunkEZK3H6EJjs.CarouselItem; exports.CarouselNext = _chunkEZK3H6EJjs.CarouselNext; exports.CarouselPrevious = _chunkEZK3H6EJjs.CarouselPrevious; exports.ChartContainer = _chunkEZK3H6EJjs.ChartContainer; exports.ChartLegend = _chunkEZK3H6EJjs.ChartLegend; exports.ChartLegendContent = _chunkEZK3H6EJjs.ChartLegendContent; exports.ChartStyle = _chunkEZK3H6EJjs.ChartStyle; exports.ChartTooltip = _chunkEZK3H6EJjs.ChartTooltip; exports.ChartTooltipContent = _chunkEZK3H6EJjs.ChartTooltipContent; exports.Checkbox = _chunkEZK3H6EJjs.Checkbox; exports.Collapsible = _chunkEZK3H6EJjs.Collapsible; exports.CollapsibleContent = _chunkEZK3H6EJjs.CollapsibleContent; exports.CollapsibleTrigger = _chunkEZK3H6EJjs.CollapsibleTrigger; exports.Column = _chunkEZK3H6EJjs.KanbanColumn; exports.ColumnHandle = _chunkEZK3H6EJjs.KanbanColumnHandle; exports.Command = _chunkEZK3H6EJjs.Command; exports.CommandDialog = _chunkEZK3H6EJjs.CommandDialog; exports.CommandEmpty = _chunkEZK3H6EJjs.CommandEmpty; exports.CommandGroup = _chunkEZK3H6EJjs.CommandGroup; exports.CommandInput = _chunkEZK3H6EJjs.CommandInput; exports.CommandItem = _chunkEZK3H6EJjs.CommandItem; exports.CommandList = _chunkEZK3H6EJjs.CommandList; exports.CommandSeparator = _chunkEZK3H6EJjs.CommandSeparator; exports.CommandShortcut = _chunkEZK3H6EJjs.CommandShortcut; exports.ContextMenu = _chunkEZK3H6EJjs.ContextMenu; exports.ContextMenuCheckboxItem = _chunkEZK3H6EJjs.ContextMenuCheckboxItem; exports.ContextMenuContent = _chunkEZK3H6EJjs.ContextMenuContent; exports.ContextMenuGroup = _chunkEZK3H6EJjs.ContextMenuGroup; exports.ContextMenuItem = _chunkEZK3H6EJjs.ContextMenuItem; exports.ContextMenuLabel = _chunkEZK3H6EJjs.ContextMenuLabel; exports.ContextMenuPortal = _chunkEZK3H6EJjs.ContextMenuPortal; exports.ContextMenuRadioGroup = _chunkEZK3H6EJjs.ContextMenuRadioGroup; exports.ContextMenuRadioItem = _chunkEZK3H6EJjs.ContextMenuRadioItem; exports.ContextMenuSeparator = _chunkEZK3H6EJjs.ContextMenuSeparator; exports.ContextMenuShortcut = _chunkEZK3H6EJjs.ContextMenuShortcut; exports.ContextMenuSub = _chunkEZK3H6EJjs.ContextMenuSub; exports.ContextMenuSubContent = _chunkEZK3H6EJjs.ContextMenuSubContent; exports.ContextMenuSubTrigger = _chunkEZK3H6EJjs.ContextMenuSubTrigger; exports.ContextMenuTrigger = _chunkEZK3H6EJjs.ContextMenuTrigger; exports.Dialog = _chunkEZK3H6EJjs.Dialog; exports.DialogClose = _chunkEZK3H6EJjs.DialogClose; exports.DialogContent = _chunkEZK3H6EJjs.DialogContent; exports.DialogDescription = _chunkEZK3H6EJjs.DialogDescription; exports.DialogFooter = _chunkEZK3H6EJjs.DialogFooter; exports.DialogHeader = _chunkEZK3H6EJjs.DialogHeader; exports.DialogOverlay = _chunkEZK3H6EJjs.DialogOverlay; exports.DialogPortal = _chunkEZK3H6EJjs.DialogPortal; exports.DialogTitle = _chunkEZK3H6EJjs.DialogTitle; exports.DialogTrigger = _chunkEZK3H6EJjs.DialogTrigger; exports.Drawer = _chunkEZK3H6EJjs.Drawer; exports.DrawerClose = _chunkEZK3H6EJjs.DrawerClose; exports.DrawerContent = _chunkEZK3H6EJjs.DrawerContent; exports.DrawerDescription = _chunkEZK3H6EJjs.DrawerDescription; exports.DrawerFooter = _chunkEZK3H6EJjs.DrawerFooter; exports.DrawerHeader = _chunkEZK3H6EJjs.DrawerHeader; exports.DrawerOverlay = _chunkEZK3H6EJjs.DrawerOverlay; exports.DrawerPortal = _chunkEZK3H6EJjs.DrawerPortal; exports.DrawerTitle = _chunkEZK3H6EJjs.DrawerTitle; exports.DrawerTrigger = _chunkEZK3H6EJjs.DrawerTrigger; exports.DropdownMenu = _chunkEZK3H6EJjs.DropdownMenu; exports.DropdownMenuCheckboxItem = _chunkEZK3H6EJjs.DropdownMenuCheckboxItem; exports.DropdownMenuContent = _chunkEZK3H6EJjs.DropdownMenuContent; exports.DropdownMenuGroup = _chunkEZK3H6EJjs.DropdownMenuGroup; exports.DropdownMenuItem = _chunkEZK3H6EJjs.DropdownMenuItem; exports.DropdownMenuLabel = _chunkEZK3H6EJjs.DropdownMenuLabel; exports.DropdownMenuPortal = _chunkEZK3H6EJjs.DropdownMenuPortal; exports.DropdownMenuRadioGroup = _chunkEZK3H6EJjs.DropdownMenuRadioGroup; exports.DropdownMenuRadioItem = _chunkEZK3H6EJjs.DropdownMenuRadioItem; exports.DropdownMenuSeparator = _chunkEZK3H6EJjs.DropdownMenuSeparator; exports.DropdownMenuShortcut = _chunkEZK3H6EJjs.DropdownMenuShortcut; exports.DropdownMenuSub = _chunkEZK3H6EJjs.DropdownMenuSub; exports.DropdownMenuSubContent = _chunkEZK3H6EJjs.DropdownMenuSubContent; exports.DropdownMenuSubTrigger = _chunkEZK3H6EJjs.DropdownMenuSubTrigger; exports.DropdownMenuTrigger = _chunkEZK3H6EJjs.DropdownMenuTrigger; exports.Form = _chunkEZK3H6EJjs.Form; exports.FormControl = _chunkEZK3H6EJjs.FormControl; exports.FormDescription = _chunkEZK3H6EJjs.FormDescription; exports.FormField = _chunkEZK3H6EJjs.FormField; exports.FormItem = _chunkEZK3H6EJjs.FormItem; exports.FormLabel = _chunkEZK3H6EJjs.FormLabel; exports.FormMessage = _chunkEZK3H6EJjs.FormMessage; exports.HoverCard = _chunkEZK3H6EJjs.HoverCard; exports.HoverCardContent = _chunkEZK3H6EJjs.HoverCardContent; exports.HoverCardTrigger = _chunkEZK3H6EJjs.HoverCardTrigger; exports.Input = _chunkEZK3H6EJjs.Input; exports.Item = _chunkEZK3H6EJjs.KanbanItem; exports.ItemHandle = _chunkEZK3H6EJjs.KanbanItemHandle; exports.Kanban = _chunkEZK3H6EJjs.KanbanRoot; exports.KanbanBoard = _chunkEZK3H6EJjs.KanbanBoard; exports.KanbanColumn = _chunkEZK3H6EJjs.KanbanColumn; exports.KanbanColumnHandle = _chunkEZK3H6EJjs.KanbanColumnHandle; exports.KanbanItem = _chunkEZK3H6EJjs.KanbanItem; exports.KanbanItemHandle = _chunkEZK3H6EJjs.KanbanItemHandle; exports.KanbanOverlay = _chunkEZK3H6EJjs.KanbanOverlay; exports.Label = _chunkEZK3H6EJjs.Label; exports.Link = _chunkEZK3H6EJjs.Link; exports.MultiSelect = _chunkEZK3H6EJjs.MultiSelect; exports.NavigationMenu = _chunkEZK3H6EJjs.NavigationMenu; exports.NavigationMenuContent = _chunkEZK3H6EJjs.NavigationMenuContent; exports.NavigationMenuIndicator = _chunkEZK3H6EJjs.NavigationMenuIndicator; exports.NavigationMenuItem = _chunkEZK3H6EJjs.NavigationMenuItem; exports.NavigationMenuLink = _chunkEZK3H6EJjs.NavigationMenuLink; exports.NavigationMenuList = _chunkEZK3H6EJjs.NavigationMenuList; exports.NavigationMenuTrigger = _chunkEZK3H6EJjs.NavigationMenuTrigger; exports.NavigationMenuViewport = _chunkEZK3H6EJjs.NavigationMenuViewport; exports.Overlay = _chunkEZK3H6EJjs.KanbanOverlay; exports.Popover = _chunkEZK3H6EJjs.Popover; exports.PopoverAnchor = _chunkEZK3H6EJjs.PopoverAnchor; exports.PopoverContent = _chunkEZK3H6EJjs.PopoverContent; exports.PopoverTrigger = _chunkEZK3H6EJjs.PopoverTrigger; exports.Progress = _chunkEZK3H6EJjs.Progress; exports.RadioGroup = _chunkEZK3H6EJjs.RadioGroup; exports.RadioGroupItem = _chunkEZK3H6EJjs.RadioGroupItem; exports.ResizableHandle = _chunkEZK3H6EJjs.ResizableHandle; exports.ResizablePanel = _chunkEZK3H6EJjs.ResizablePanel; exports.ResizablePanelGroup = _chunkEZK3H6EJjs.ResizablePanelGroup; exports.Root = _chunkEZK3H6EJjs.KanbanRoot; exports.SIDEBAR_WIDTH = _chunkEZK3H6EJjs.SIDEBAR_WIDTH; exports.SIDEBAR_WIDTH_ICON = _chunkEZK3H6EJjs.SIDEBAR_WIDTH_ICON; exports.SIDEBAR_WIDTH_MOBILE = _chunkEZK3H6EJjs.SIDEBAR_WIDTH_MOBILE; exports.ScrollArea = _chunkEZK3H6EJjs.ScrollArea; exports.ScrollBar = _chunkEZK3H6EJjs.ScrollBar; exports.Select = _chunkEZK3H6EJjs.Select; exports.SelectContent = _chunkEZK3H6EJjs.SelectContent; exports.SelectGroup = _chunkEZK3H6EJjs.SelectGroup; exports.SelectItem = _chunkEZK3H6EJjs.SelectItem; exports.SelectLabel = _chunkEZK3H6EJjs.SelectLabel; exports.SelectScrollDownButton = _chunkEZK3H6EJjs.SelectScrollDownButton; exports.SelectScrollUpButton = _chunkEZK3H6EJjs.SelectScrollUpButton; exports.SelectSeparator = _chunkEZK3H6EJjs.SelectSeparator; exports.SelectTrigger = _chunkEZK3H6EJjs.SelectTrigger; exports.SelectValue = _chunkEZK3H6EJjs.SelectValue; exports.Separator = _chunkEZK3H6EJjs.Separator; exports.Sheet = _chunkEZK3H6EJjs.Sheet; exports.SheetClose = _chunkEZK3H6EJjs.SheetClose; exports.SheetContent = _chunkEZK3H6EJjs.SheetContent; exports.SheetDescription = _chunkEZK3H6EJjs.SheetDescription; exports.SheetFooter = _chunkEZK3H6EJjs.SheetFooter; exports.SheetHeader = _chunkEZK3H6EJjs.SheetHeader; exports.SheetTitle = _chunkEZK3H6EJjs.SheetTitle; exports.SheetTrigger = _chunkEZK3H6EJjs.SheetTrigger; exports.Sidebar = _chunkEZK3H6EJjs.Sidebar; exports.SidebarContent = _chunkEZK3H6EJjs.SidebarContent; exports.SidebarFooter = _chunkEZK3H6EJjs.SidebarFooter; exports.SidebarGroup = _chunkEZK3H6EJjs.SidebarGroup; exports.SidebarGroupAction = _chunkEZK3H6EJjs.SidebarGroupAction; exports.SidebarGroupContent = _chunkEZK3H6EJjs.SidebarGroupContent; exports.SidebarGroupLabel = _chunkEZK3H6EJjs.SidebarGroupLabel; exports.SidebarHeader = _chunkEZK3H6EJjs.SidebarHeader; exports.SidebarInput = _chunkEZK3H6EJjs.SidebarInput; exports.SidebarInset = _chunkEZK3H6EJjs.SidebarInset; exports.SidebarMenu = _chunkEZK3H6EJjs.SidebarMenu; exports.SidebarMenuAction = _chunkEZK3H6EJjs.SidebarMenuAction; exports.SidebarMenuBadge = _chunkEZK3H6EJjs.SidebarMenuBadge; exports.SidebarMenuButton = _chunkEZK3H6EJjs.SidebarMenuButton; exports.SidebarMenuItem = _chunkEZK3H6EJjs.SidebarMenuItem; exports.SidebarMenuSkeleton = _chunkEZK3H6EJjs.SidebarMenuSkeleton; exports.SidebarMenuSub = _chunkEZK3H6EJjs.SidebarMenuSub; exports.SidebarMenuSubButton = _chunkEZK3H6EJjs.SidebarMenuSubButton; exports.SidebarMenuSubItem = _chunkEZK3H6EJjs.SidebarMenuSubItem; exports.SidebarProvider = _chunkEZK3H6EJjs.SidebarProvider; exports.SidebarRail = _chunkEZK3H6EJjs.SidebarRail; exports.SidebarSeparator = _chunkEZK3H6EJjs.SidebarSeparator; exports.SidebarTrigger = _chunkEZK3H6EJjs.SidebarTrigger; exports.Skeleton = _chunkEZK3H6EJjs.Skeleton; exports.Slider = _chunkEZK3H6EJjs.Slider; exports.Switch = _chunkEZK3H6EJjs.Switch; exports.Table = _chunkEZK3H6EJjs.Table; exports.TableBody = _chunkEZK3H6EJjs.TableBody; exports.TableCaption = _chunkEZK3H6EJjs.TableCaption; exports.TableCell = _chunkEZK3H6EJjs.TableCell; exports.TableFooter = _chunkEZK3H6EJjs.TableFooter; exports.TableHead = _chunkEZK3H6EJjs.TableHead; exports.TableHeader = _chunkEZK3H6EJjs.TableHeader; exports.TableRow = _chunkEZK3H6EJjs.TableRow; exports.Tabs = _chunkEZK3H6EJjs.Tabs; exports.TabsContent = _chunkEZK3H6EJjs.TabsContent; exports.TabsList = _chunkEZK3H6EJjs.TabsList; exports.TabsTrigger = _chunkEZK3H6EJjs.TabsTrigger; exports.Textarea = _chunkEZK3H6EJjs.Textarea; exports.Toaster = _chunkEZK3H6EJjs.Toaster; exports.Toggle = _chunkEZK3H6EJjs.Toggle; exports.Tooltip = _chunkEZK3H6EJjs.Tooltip; exports.TooltipContent = _chunkEZK3H6EJjs.TooltipContent; exports.TooltipProvider = _chunkEZK3H6EJjs.TooltipProvider; exports.TooltipTrigger = _chunkEZK3H6EJjs.TooltipTrigger; exports.badgeVariants = _chunkEZK3H6EJjs.badgeVariants; exports.buttonVariants = _chunkEZK3H6EJjs.buttonVariants; exports.navigationMenuTriggerStyle = _chunkEZK3H6EJjs.navigationMenuTriggerStyle; exports.toggleVariants = _chunkEZK3H6EJjs.toggleVariants; exports.useFormField = _chunkEZK3H6EJjs.useFormField; exports.useSidebar = _chunkEZK3H6EJjs.useSidebar;
467
+ exports.Accordion = _chunk5IET37O4js.Accordion; exports.AccordionContent = _chunk5IET37O4js.AccordionContent; exports.AccordionItem = _chunk5IET37O4js.AccordionItem; exports.AccordionTrigger = _chunk5IET37O4js.AccordionTrigger; exports.Alert = _chunk5IET37O4js.Alert; exports.AlertDescription = _chunk5IET37O4js.AlertDescription; exports.AlertDialog = _chunk5IET37O4js.AlertDialog; exports.AlertDialogAction = _chunk5IET37O4js.AlertDialogAction; exports.AlertDialogCancel = _chunk5IET37O4js.AlertDialogCancel; exports.AlertDialogContent = _chunk5IET37O4js.AlertDialogContent; exports.AlertDialogDescription = _chunk5IET37O4js.AlertDialogDescription; exports.AlertDialogFooter = _chunk5IET37O4js.AlertDialogFooter; exports.AlertDialogHeader = _chunk5IET37O4js.AlertDialogHeader; exports.AlertDialogOverlay = _chunk5IET37O4js.AlertDialogOverlay; exports.AlertDialogPortal = _chunk5IET37O4js.AlertDialogPortal; exports.AlertDialogTitle = _chunk5IET37O4js.AlertDialogTitle; exports.AlertDialogTrigger = _chunk5IET37O4js.AlertDialogTrigger; exports.AlertTitle = _chunk5IET37O4js.AlertTitle; exports.Avatar = _chunk5IET37O4js.Avatar; exports.AvatarFallback = _chunk5IET37O4js.AvatarFallback; exports.AvatarImage = _chunk5IET37O4js.AvatarImage; exports.Badge = _chunk5IET37O4js.Badge; exports.Board = _chunk5IET37O4js.KanbanBoard; exports.Breadcrumb = _chunk5IET37O4js.Breadcrumb; exports.BreadcrumbEllipsis = _chunk5IET37O4js.BreadcrumbEllipsis; exports.BreadcrumbItem = _chunk5IET37O4js.BreadcrumbItem; exports.BreadcrumbLink = _chunk5IET37O4js.BreadcrumbLink; exports.BreadcrumbList = _chunk5IET37O4js.BreadcrumbList; exports.BreadcrumbPage = _chunk5IET37O4js.BreadcrumbPage; exports.BreadcrumbSeparator = _chunk5IET37O4js.BreadcrumbSeparator; exports.Button = _chunk5IET37O4js.Button; exports.Calendar = _chunk5IET37O4js.Calendar; exports.Card = _chunk5IET37O4js.Card; exports.CardContent = _chunk5IET37O4js.CardContent; exports.CardDescription = _chunk5IET37O4js.CardDescription; exports.CardFooter = _chunk5IET37O4js.CardFooter; exports.CardHeader = _chunk5IET37O4js.CardHeader; exports.CardTitle = _chunk5IET37O4js.CardTitle; exports.Carousel = _chunk5IET37O4js.Carousel; exports.CarouselContent = _chunk5IET37O4js.CarouselContent; exports.CarouselItem = _chunk5IET37O4js.CarouselItem; exports.CarouselNext = _chunk5IET37O4js.CarouselNext; exports.CarouselPrevious = _chunk5IET37O4js.CarouselPrevious; exports.ChartContainer = _chunk5IET37O4js.ChartContainer; exports.ChartLegend = _chunk5IET37O4js.ChartLegend; exports.ChartLegendContent = _chunk5IET37O4js.ChartLegendContent; exports.ChartStyle = _chunk5IET37O4js.ChartStyle; exports.ChartTooltip = _chunk5IET37O4js.ChartTooltip; exports.ChartTooltipContent = _chunk5IET37O4js.ChartTooltipContent; exports.Checkbox = _chunk5IET37O4js.Checkbox; exports.Collapsible = _chunk5IET37O4js.Collapsible; exports.CollapsibleContent = _chunk5IET37O4js.CollapsibleContent; exports.CollapsibleTrigger = _chunk5IET37O4js.CollapsibleTrigger; exports.Column = _chunk5IET37O4js.KanbanColumn; exports.ColumnHandle = _chunk5IET37O4js.KanbanColumnHandle; exports.Command = _chunk5IET37O4js.Command; exports.CommandDialog = _chunk5IET37O4js.CommandDialog; exports.CommandEmpty = _chunk5IET37O4js.CommandEmpty; exports.CommandGroup = _chunk5IET37O4js.CommandGroup; exports.CommandInput = _chunk5IET37O4js.CommandInput; exports.CommandItem = _chunk5IET37O4js.CommandItem; exports.CommandList = _chunk5IET37O4js.CommandList; exports.CommandSeparator = _chunk5IET37O4js.CommandSeparator; exports.CommandShortcut = _chunk5IET37O4js.CommandShortcut; exports.ContextMenu = _chunk5IET37O4js.ContextMenu; exports.ContextMenuCheckboxItem = _chunk5IET37O4js.ContextMenuCheckboxItem; exports.ContextMenuContent = _chunk5IET37O4js.ContextMenuContent; exports.ContextMenuGroup = _chunk5IET37O4js.ContextMenuGroup; exports.ContextMenuItem = _chunk5IET37O4js.ContextMenuItem; exports.ContextMenuLabel = _chunk5IET37O4js.ContextMenuLabel; exports.ContextMenuPortal = _chunk5IET37O4js.ContextMenuPortal; exports.ContextMenuRadioGroup = _chunk5IET37O4js.ContextMenuRadioGroup; exports.ContextMenuRadioItem = _chunk5IET37O4js.ContextMenuRadioItem; exports.ContextMenuSeparator = _chunk5IET37O4js.ContextMenuSeparator; exports.ContextMenuShortcut = _chunk5IET37O4js.ContextMenuShortcut; exports.ContextMenuSub = _chunk5IET37O4js.ContextMenuSub; exports.ContextMenuSubContent = _chunk5IET37O4js.ContextMenuSubContent; exports.ContextMenuSubTrigger = _chunk5IET37O4js.ContextMenuSubTrigger; exports.ContextMenuTrigger = _chunk5IET37O4js.ContextMenuTrigger; exports.Dialog = _chunk5IET37O4js.Dialog; exports.DialogClose = _chunk5IET37O4js.DialogClose; exports.DialogContent = _chunk5IET37O4js.DialogContent; exports.DialogDescription = _chunk5IET37O4js.DialogDescription; exports.DialogFooter = _chunk5IET37O4js.DialogFooter; exports.DialogHeader = _chunk5IET37O4js.DialogHeader; exports.DialogOverlay = _chunk5IET37O4js.DialogOverlay; exports.DialogPortal = _chunk5IET37O4js.DialogPortal; exports.DialogTitle = _chunk5IET37O4js.DialogTitle; exports.DialogTrigger = _chunk5IET37O4js.DialogTrigger; exports.Drawer = _chunk5IET37O4js.Drawer; exports.DrawerClose = _chunk5IET37O4js.DrawerClose; exports.DrawerContent = _chunk5IET37O4js.DrawerContent; exports.DrawerDescription = _chunk5IET37O4js.DrawerDescription; exports.DrawerFooter = _chunk5IET37O4js.DrawerFooter; exports.DrawerHeader = _chunk5IET37O4js.DrawerHeader; exports.DrawerOverlay = _chunk5IET37O4js.DrawerOverlay; exports.DrawerPortal = _chunk5IET37O4js.DrawerPortal; exports.DrawerTitle = _chunk5IET37O4js.DrawerTitle; exports.DrawerTrigger = _chunk5IET37O4js.DrawerTrigger; exports.DropdownMenu = _chunk5IET37O4js.DropdownMenu; exports.DropdownMenuCheckboxItem = _chunk5IET37O4js.DropdownMenuCheckboxItem; exports.DropdownMenuContent = _chunk5IET37O4js.DropdownMenuContent; exports.DropdownMenuGroup = _chunk5IET37O4js.DropdownMenuGroup; exports.DropdownMenuItem = _chunk5IET37O4js.DropdownMenuItem; exports.DropdownMenuLabel = _chunk5IET37O4js.DropdownMenuLabel; exports.DropdownMenuPortal = _chunk5IET37O4js.DropdownMenuPortal; exports.DropdownMenuRadioGroup = _chunk5IET37O4js.DropdownMenuRadioGroup; exports.DropdownMenuRadioItem = _chunk5IET37O4js.DropdownMenuRadioItem; exports.DropdownMenuSeparator = _chunk5IET37O4js.DropdownMenuSeparator; exports.DropdownMenuShortcut = _chunk5IET37O4js.DropdownMenuShortcut; exports.DropdownMenuSub = _chunk5IET37O4js.DropdownMenuSub; exports.DropdownMenuSubContent = _chunk5IET37O4js.DropdownMenuSubContent; exports.DropdownMenuSubTrigger = _chunk5IET37O4js.DropdownMenuSubTrigger; exports.DropdownMenuTrigger = _chunk5IET37O4js.DropdownMenuTrigger; exports.Form = _chunk5IET37O4js.Form; exports.FormControl = _chunk5IET37O4js.FormControl; exports.FormDescription = _chunk5IET37O4js.FormDescription; exports.FormField = _chunk5IET37O4js.FormField; exports.FormItem = _chunk5IET37O4js.FormItem; exports.FormLabel = _chunk5IET37O4js.FormLabel; exports.FormMessage = _chunk5IET37O4js.FormMessage; exports.HoverCard = _chunk5IET37O4js.HoverCard; exports.HoverCardContent = _chunk5IET37O4js.HoverCardContent; exports.HoverCardTrigger = _chunk5IET37O4js.HoverCardTrigger; exports.Input = _chunk5IET37O4js.Input; exports.Item = _chunk5IET37O4js.KanbanItem; exports.ItemHandle = _chunk5IET37O4js.KanbanItemHandle; exports.Kanban = _chunk5IET37O4js.KanbanRoot; exports.KanbanBoard = _chunk5IET37O4js.KanbanBoard; exports.KanbanColumn = _chunk5IET37O4js.KanbanColumn; exports.KanbanColumnHandle = _chunk5IET37O4js.KanbanColumnHandle; exports.KanbanItem = _chunk5IET37O4js.KanbanItem; exports.KanbanItemHandle = _chunk5IET37O4js.KanbanItemHandle; exports.KanbanOverlay = _chunk5IET37O4js.KanbanOverlay; exports.Label = _chunk5IET37O4js.Label; exports.Link = _chunk5IET37O4js.Link; exports.MultiSelect = _chunk5IET37O4js.MultiSelect; exports.NavigationMenu = _chunk5IET37O4js.NavigationMenu; exports.NavigationMenuContent = _chunk5IET37O4js.NavigationMenuContent; exports.NavigationMenuIndicator = _chunk5IET37O4js.NavigationMenuIndicator; exports.NavigationMenuItem = _chunk5IET37O4js.NavigationMenuItem; exports.NavigationMenuLink = _chunk5IET37O4js.NavigationMenuLink; exports.NavigationMenuList = _chunk5IET37O4js.NavigationMenuList; exports.NavigationMenuTrigger = _chunk5IET37O4js.NavigationMenuTrigger; exports.NavigationMenuViewport = _chunk5IET37O4js.NavigationMenuViewport; exports.Overlay = _chunk5IET37O4js.KanbanOverlay; exports.Popover = _chunk5IET37O4js.Popover; exports.PopoverAnchor = _chunk5IET37O4js.PopoverAnchor; exports.PopoverContent = _chunk5IET37O4js.PopoverContent; exports.PopoverTrigger = _chunk5IET37O4js.PopoverTrigger; exports.Progress = _chunk5IET37O4js.Progress; exports.RadioGroup = _chunk5IET37O4js.RadioGroup; exports.RadioGroupItem = _chunk5IET37O4js.RadioGroupItem; exports.ResizableHandle = _chunk5IET37O4js.ResizableHandle; exports.ResizablePanel = _chunk5IET37O4js.ResizablePanel; exports.ResizablePanelGroup = _chunk5IET37O4js.ResizablePanelGroup; exports.Root = _chunk5IET37O4js.KanbanRoot; exports.SIDEBAR_WIDTH = _chunk5IET37O4js.SIDEBAR_WIDTH; exports.SIDEBAR_WIDTH_ICON = _chunk5IET37O4js.SIDEBAR_WIDTH_ICON; exports.SIDEBAR_WIDTH_MOBILE = _chunk5IET37O4js.SIDEBAR_WIDTH_MOBILE; exports.ScrollArea = _chunk5IET37O4js.ScrollArea; exports.ScrollBar = _chunk5IET37O4js.ScrollBar; exports.Select = _chunk5IET37O4js.Select; exports.SelectContent = _chunk5IET37O4js.SelectContent; exports.SelectGroup = _chunk5IET37O4js.SelectGroup; exports.SelectItem = _chunk5IET37O4js.SelectItem; exports.SelectLabel = _chunk5IET37O4js.SelectLabel; exports.SelectScrollDownButton = _chunk5IET37O4js.SelectScrollDownButton; exports.SelectScrollUpButton = _chunk5IET37O4js.SelectScrollUpButton; exports.SelectSeparator = _chunk5IET37O4js.SelectSeparator; exports.SelectTrigger = _chunk5IET37O4js.SelectTrigger; exports.SelectValue = _chunk5IET37O4js.SelectValue; exports.Separator = _chunk5IET37O4js.Separator; exports.Sheet = _chunk5IET37O4js.Sheet; exports.SheetClose = _chunk5IET37O4js.SheetClose; exports.SheetContent = _chunk5IET37O4js.SheetContent; exports.SheetDescription = _chunk5IET37O4js.SheetDescription; exports.SheetFooter = _chunk5IET37O4js.SheetFooter; exports.SheetHeader = _chunk5IET37O4js.SheetHeader; exports.SheetTitle = _chunk5IET37O4js.SheetTitle; exports.SheetTrigger = _chunk5IET37O4js.SheetTrigger; exports.Sidebar = _chunk5IET37O4js.Sidebar; exports.SidebarContent = _chunk5IET37O4js.SidebarContent; exports.SidebarFooter = _chunk5IET37O4js.SidebarFooter; exports.SidebarGroup = _chunk5IET37O4js.SidebarGroup; exports.SidebarGroupAction = _chunk5IET37O4js.SidebarGroupAction; exports.SidebarGroupContent = _chunk5IET37O4js.SidebarGroupContent; exports.SidebarGroupLabel = _chunk5IET37O4js.SidebarGroupLabel; exports.SidebarHeader = _chunk5IET37O4js.SidebarHeader; exports.SidebarInput = _chunk5IET37O4js.SidebarInput; exports.SidebarInset = _chunk5IET37O4js.SidebarInset; exports.SidebarMenu = _chunk5IET37O4js.SidebarMenu; exports.SidebarMenuAction = _chunk5IET37O4js.SidebarMenuAction; exports.SidebarMenuBadge = _chunk5IET37O4js.SidebarMenuBadge; exports.SidebarMenuButton = _chunk5IET37O4js.SidebarMenuButton; exports.SidebarMenuItem = _chunk5IET37O4js.SidebarMenuItem; exports.SidebarMenuSkeleton = _chunk5IET37O4js.SidebarMenuSkeleton; exports.SidebarMenuSub = _chunk5IET37O4js.SidebarMenuSub; exports.SidebarMenuSubButton = _chunk5IET37O4js.SidebarMenuSubButton; exports.SidebarMenuSubItem = _chunk5IET37O4js.SidebarMenuSubItem; exports.SidebarProvider = _chunk5IET37O4js.SidebarProvider; exports.SidebarRail = _chunk5IET37O4js.SidebarRail; exports.SidebarSeparator = _chunk5IET37O4js.SidebarSeparator; exports.SidebarTrigger = _chunk5IET37O4js.SidebarTrigger; exports.Skeleton = _chunk5IET37O4js.Skeleton; exports.Slider = _chunk5IET37O4js.Slider; exports.Switch = _chunk5IET37O4js.Switch; exports.Table = _chunk5IET37O4js.Table; exports.TableBody = _chunk5IET37O4js.TableBody; exports.TableCaption = _chunk5IET37O4js.TableCaption; exports.TableCell = _chunk5IET37O4js.TableCell; exports.TableFooter = _chunk5IET37O4js.TableFooter; exports.TableHead = _chunk5IET37O4js.TableHead; exports.TableHeader = _chunk5IET37O4js.TableHeader; exports.TableRow = _chunk5IET37O4js.TableRow; exports.Tabs = _chunk5IET37O4js.Tabs; exports.TabsContent = _chunk5IET37O4js.TabsContent; exports.TabsList = _chunk5IET37O4js.TabsList; exports.TabsTrigger = _chunk5IET37O4js.TabsTrigger; exports.Textarea = _chunk5IET37O4js.Textarea; exports.Toaster = _chunk5IET37O4js.Toaster; exports.Toggle = _chunk5IET37O4js.Toggle; exports.Tooltip = _chunk5IET37O4js.Tooltip; exports.TooltipContent = _chunk5IET37O4js.TooltipContent; exports.TooltipProvider = _chunk5IET37O4js.TooltipProvider; exports.TooltipTrigger = _chunk5IET37O4js.TooltipTrigger; exports.badgeVariants = _chunk5IET37O4js.badgeVariants; exports.buttonVariants = _chunk5IET37O4js.buttonVariants; exports.navigationMenuTriggerStyle = _chunk5IET37O4js.navigationMenuTriggerStyle; exports.toggleVariants = _chunk5IET37O4js.toggleVariants; exports.useFormField = _chunk5IET37O4js.useFormField; exports.useSidebar = _chunk5IET37O4js.useSidebar;
468
468
  //# sourceMappingURL=index.js.map
@@ -225,9 +225,9 @@ import {
225
225
  toggleVariants,
226
226
  useFormField,
227
227
  useSidebar
228
- } from "../chunk-X53MF5ZN.mjs";
229
- import "../chunk-JLN6UWII.mjs";
230
- import "../chunk-NPPQNSXN.mjs";
228
+ } from "../chunk-P2F54I7Q.mjs";
229
+ import "../chunk-JGFWIT2E.mjs";
230
+ import "../chunk-FMBQZAIP.mjs";
231
231
  import "../chunk-RBIVEH2K.mjs";
232
232
  import "../chunk-PAWJFY3S.mjs";
233
233
  export {
@@ -18,8 +18,8 @@
18
18
 
19
19
 
20
20
 
21
- var _chunkLJRD4SRVjs = require('../chunk-LJRD4SRV.js');
22
- require('../chunk-WZJDLITG.js');
21
+ var _chunkDEYKTLA3js = require('../chunk-DEYKTLA3.js');
22
+ require('../chunk-Q4FXESVT.js');
23
23
  require('../chunk-AGAJMJ4T.js');
24
24
  require('../chunk-7QVYU63E.js');
25
25
 
@@ -42,5 +42,5 @@ require('../chunk-7QVYU63E.js');
42
42
 
43
43
 
44
44
 
45
- exports.BlockNoteDiffUtil = _chunkLJRD4SRVjs.BlockNoteDiffUtil; exports.BlockNoteWordDiffRendererUtil = _chunkLJRD4SRVjs.BlockNoteWordDiffRendererUtil; exports.TableOptions = _chunkLJRD4SRVjs.TableOptions; exports.cn = _chunkLJRD4SRVjs.cn; exports.composeRefs = _chunkLJRD4SRVjs.composeRefs; exports.entityObjectSchema = _chunkLJRD4SRVjs.entityObjectSchema; exports.exists = _chunkLJRD4SRVjs.exists; exports.formatDate = _chunkLJRD4SRVjs.formatDate; exports.getIcon = _chunkLJRD4SRVjs.getIcon; exports.getIconByModule = _chunkLJRD4SRVjs.getIconByModule; exports.getIconByModuleName = _chunkLJRD4SRVjs.getIconByModuleName; exports.getLucideIcon = _chunkLJRD4SRVjs.getLucideIcon; exports.getLucideIconByModule = _chunkLJRD4SRVjs.getLucideIconByModule; exports.getLucideIconByModuleName = _chunkLJRD4SRVjs.getLucideIconByModuleName; exports.getTableComponents = _chunkLJRD4SRVjs.getTableComponents; exports.getTableOptions = _chunkLJRD4SRVjs.getTableOptions; exports.useComposedRefs = _chunkLJRD4SRVjs.useComposedRefs; exports.useIsMobile = _chunkLJRD4SRVjs.useIsMobile; exports.userObjectSchema = _chunkLJRD4SRVjs.userObjectSchema;
45
+ exports.BlockNoteDiffUtil = _chunkDEYKTLA3js.BlockNoteDiffUtil; exports.BlockNoteWordDiffRendererUtil = _chunkDEYKTLA3js.BlockNoteWordDiffRendererUtil; exports.TableOptions = _chunkDEYKTLA3js.TableOptions; exports.cn = _chunkDEYKTLA3js.cn; exports.composeRefs = _chunkDEYKTLA3js.composeRefs; exports.entityObjectSchema = _chunkDEYKTLA3js.entityObjectSchema; exports.exists = _chunkDEYKTLA3js.exists; exports.formatDate = _chunkDEYKTLA3js.formatDate; exports.getIcon = _chunkDEYKTLA3js.getIcon; exports.getIconByModule = _chunkDEYKTLA3js.getIconByModule; exports.getIconByModuleName = _chunkDEYKTLA3js.getIconByModuleName; exports.getLucideIcon = _chunkDEYKTLA3js.getLucideIcon; exports.getLucideIconByModule = _chunkDEYKTLA3js.getLucideIconByModule; exports.getLucideIconByModuleName = _chunkDEYKTLA3js.getLucideIconByModuleName; exports.getTableComponents = _chunkDEYKTLA3js.getTableComponents; exports.getTableOptions = _chunkDEYKTLA3js.getTableOptions; exports.useComposedRefs = _chunkDEYKTLA3js.useComposedRefs; exports.useIsMobile = _chunkDEYKTLA3js.useIsMobile; exports.userObjectSchema = _chunkDEYKTLA3js.userObjectSchema;
46
46
  //# sourceMappingURL=index.js.map
@@ -18,8 +18,8 @@ import {
18
18
  useComposedRefs,
19
19
  useIsMobile,
20
20
  userObjectSchema
21
- } from "../chunk-JLN6UWII.mjs";
22
- import "../chunk-NPPQNSXN.mjs";
21
+ } from "../chunk-JGFWIT2E.mjs";
22
+ import "../chunk-FMBQZAIP.mjs";
23
23
  import "../chunk-RBIVEH2K.mjs";
24
24
  import "../chunk-PAWJFY3S.mjs";
25
25
  export {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@carlonicora/nextjs-jsonapi",
3
- "version": "1.2.0",
3
+ "version": "1.3.1",
4
4
  "description": "Next.js JSON:API client with server/client support and caching",
5
5
  "author": "Carlo Nicora",
6
6
  "license": "GPL-3.0-or-later",
@@ -8,6 +8,9 @@
8
8
  "main": "./dist/index.js",
9
9
  "module": "./dist/index.mjs",
10
10
  "types": "./dist/index.d.ts",
11
+ "bin": {
12
+ "generate-web-module": "./dist/scripts/generate-web-module/index.js"
13
+ },
11
14
  "exports": {
12
15
  ".": {
13
16
  "types": "./dist/index.d.ts",
@@ -81,16 +84,18 @@
81
84
  }
82
85
  },
83
86
  "scripts": {
84
- "build": "tsup",
87
+ "build": "tsup && tsc -p scripts/generate-web-module/tsconfig.json",
85
88
  "dev": "tsup --watch",
86
89
  "clean": "rm -rf dist",
87
90
  "lint": "eslint \"src/**/*.ts\" --fix",
88
91
  "format": "prettier --write \"src/**/*.ts\"",
89
- "prepublishOnly": "pnpm build"
92
+ "prepublishOnly": "pnpm build",
93
+ "generate-web-module": "node dist/scripts/generate-web-module/index.js"
90
94
  },
91
95
  "files": [
92
96
  "dist",
93
97
  "src",
98
+ "scripts",
94
99
  "README.md"
95
100
  ],
96
101
  "peerDependencies": {
@@ -113,9 +118,10 @@
113
118
  }
114
119
  },
115
120
  "dependencies": {
116
- "@blocknote/core": "^0.44.0",
117
- "@blocknote/react": "^0.44.0",
118
- "@blocknote/shadcn": "^0.44.0",
121
+ "commander": "^13.1.0",
122
+ "@blocknote/core": "^0.44.2",
123
+ "@blocknote/react": "^0.44.2",
124
+ "@blocknote/shadcn": "^0.44.2",
119
125
  "@dnd-kit/core": "^6.3.1",
120
126
  "@dnd-kit/sortable": "^10.0.0",
121
127
  "@dnd-kit/utilities": "^3.2.2",
@@ -151,10 +157,10 @@
151
157
  "d3": "^7.9.0",
152
158
  "date-fns": "^4.1.0",
153
159
  "embla-carousel-react": "^8.6.0",
154
- "jotai": "^2.15.2",
155
- "lucide-react": "^0.556.0",
160
+ "jotai": "^2.16.0",
161
+ "lucide-react": "^0.561.0",
156
162
  "next-themes": "^0.4.6",
157
- "react-day-picker": "^9.11.3",
163
+ "react-day-picker": "^9.12.0",
158
164
  "react-dropzone": "^14.3.8",
159
165
  "react-hook-form": "^7.68.0",
160
166
  "react-markdown": "^10.1.0",
@@ -165,7 +171,7 @@
165
171
  "sonner": "^2.0.7",
166
172
  "tailwind-merge": "^3.4.0",
167
173
  "uuid": "^13.0.0",
168
- "vaul": "^1.1.0",
174
+ "vaul": "^1.1.2",
169
175
  "zod": "^4.1.13"
170
176
  },
171
177
  "devDependencies": {
@@ -177,22 +183,22 @@
177
183
  "@eslint/js": "^9.39.1",
178
184
  "@tanstack/react-table": "^8.21.3",
179
185
  "@types/d3": "^7.4.3",
180
- "@types/node": "^22.0.0",
181
- "@types/react": "^19.0.0",
182
- "@types/react-dom": "^19.0.0",
183
- "@typescript-eslint/eslint-plugin": "^8.48.1",
184
- "@typescript-eslint/parser": "^8.48.1",
186
+ "@types/node": "^25.0.1",
187
+ "@types/react": "^19.2.7",
188
+ "@types/react-dom": "^19.2.3",
189
+ "@typescript-eslint/eslint-plugin": "^8.49.0",
190
+ "@typescript-eslint/parser": "^8.49.0",
185
191
  "eslint": "^9.39.1",
186
192
  "eslint-config-prettier": "^10.1.8",
187
193
  "eslint-plugin-prettier": "^5.5.4",
188
194
  "globals": "^16.5.0",
189
- "next": "^16.0.0",
190
- "next-intl": "^4.1.0",
195
+ "next": "^16.0.10",
196
+ "next-intl": "^4.5.8",
191
197
  "prettier": "^3.7.4",
192
- "react": "^19.0.0",
193
- "react-dom": "^19.0.0",
194
- "tsup": "^8.5.0",
195
- "typescript": "^5.9.0"
198
+ "react": "^19.2.3",
199
+ "react-dom": "^19.2.3",
200
+ "tsup": "^8.5.1",
201
+ "typescript": "^5.9.3"
196
202
  },
197
203
  "keywords": [
198
204
  "nextjs",
@@ -0,0 +1,363 @@
1
+ /**
2
+ * Frontend Module Generator
3
+ *
4
+ * Main orchestrator for generating frontend modules from JSON schema.
5
+ */
6
+
7
+ import * as fs from "fs";
8
+ import * as path from "path";
9
+ import {
10
+ JsonModuleDefinition,
11
+ FrontendTemplateData,
12
+ GeneratedFile,
13
+ GenerateWebModuleOptions,
14
+ } from "./types";
15
+ import { transformNames, toCamelCase, pluralize, toTitleCase } from "./transformers/name-transformer";
16
+ import { detectExtendsContent } from "./transformers/parent-detector";
17
+ import { mapFields, filterInheritedFields } from "./transformers/field-mapper";
18
+ import { resolveRelationships, generateServiceMethods } from "./transformers/relationship-resolver";
19
+ import { buildImportStatements, buildFilePaths } from "./transformers/import-resolver";
20
+ import { generateI18nKeys } from "./transformers/i18n-generator";
21
+ import { parseAndValidate, validationPassed } from "./validators/json-schema-validator";
22
+ import {
23
+ generateInterfaceTemplate,
24
+ generateModelTemplate,
25
+ generateServiceTemplate,
26
+ generateFieldsTemplate,
27
+ generateEditorTemplate,
28
+ generateDeleterTemplate,
29
+ generateSelectorTemplate,
30
+ generateMultiSelectorTemplate,
31
+ generateListTemplate,
32
+ generateDetailsTemplate,
33
+ generateContentTemplate,
34
+ generateContainerTemplate,
35
+ generateListContainerTemplate,
36
+ generateContextTemplate,
37
+ generateTableHookTemplate,
38
+ generateModuleTemplate,
39
+ generateListPageTemplate,
40
+ generateDetailPageTemplate,
41
+ } from "./templates";
42
+ import { writeFiles, printResults, updateBootstrapper, updateI18n } from "./utils";
43
+
44
+ /**
45
+ * Generate all frontend module files from JSON schema
46
+ *
47
+ * @param options - Generator options
48
+ * @returns True if generation succeeded
49
+ */
50
+ export async function generateWebModule(options: GenerateWebModuleOptions): Promise<boolean> {
51
+ const { jsonPath, dryRun = false, force = false, noRegister = false } = options;
52
+
53
+ console.log(`\n🔧 Frontend Module Generator`);
54
+ console.log(` JSON Schema: ${jsonPath}`);
55
+ console.log(` Dry Run: ${dryRun}`);
56
+ console.log(` Force: ${force}`);
57
+ console.log(` No Register: ${noRegister}`);
58
+
59
+ // Step 1: Validate JSON schema
60
+ console.log("\n📋 Validating JSON schema...");
61
+ const validation = parseAndValidate(jsonPath);
62
+
63
+ if (!validationPassed(validation)) {
64
+ console.error("\n❌ Validation failed:");
65
+ validation.errors.forEach((e) => console.error(` - ${e}`));
66
+ return false;
67
+ }
68
+
69
+ if (validation.warnings.length > 0) {
70
+ console.log("\n⚠️ Validation warnings (non-blocking):");
71
+ validation.warnings.forEach((w) => console.log(` - ${w}`));
72
+ }
73
+
74
+ const schema = validation.data!;
75
+ console.log(` ✅ Schema valid: ${schema.moduleName}`);
76
+
77
+ // Step 2: Build template data
78
+ console.log("\n🔨 Building template data...");
79
+ const templateData = buildTemplateData(schema);
80
+ console.log(` Module: ${templateData.names.pascalCase}`);
81
+ console.log(` Target: ${templateData.targetDir}`);
82
+ console.log(` Extends Content: ${templateData.extendsContent}`);
83
+ console.log(` Fields: ${templateData.fields.length}`);
84
+ console.log(` Relationships: ${templateData.relationships.length}`);
85
+
86
+ // Step 3: Generate all files
87
+ console.log("\n📝 Generating files...");
88
+ const files = generateAllFiles(templateData, schema);
89
+ console.log(` Generated ${files.length} file templates`);
90
+
91
+ // Step 4: Determine web base path
92
+ const webBasePath = findWebBasePath(jsonPath);
93
+ if (!webBasePath) {
94
+ console.error("\n❌ Could not determine web app base path");
95
+ return false;
96
+ }
97
+ console.log(` Web base path: ${webBasePath}`);
98
+
99
+ // Step 5: Write files
100
+ console.log("\n💾 Writing files...");
101
+ const results = writeFiles(files, { dryRun, force });
102
+ printResults(results);
103
+
104
+ // Step 6: Update Bootstrapper (unless --no-register)
105
+ if (!noRegister) {
106
+ console.log("\n🔧 Updating Bootstrapper.ts...");
107
+ const bootstrapResult = updateBootstrapper(templateData, webBasePath, dryRun);
108
+ console.log(` ${bootstrapResult.success ? "✅" : "❌"} ${bootstrapResult.message}`);
109
+ }
110
+
111
+ // Step 7: Update i18n (unless --no-register)
112
+ if (!noRegister) {
113
+ console.log("\n🌐 Updating messages/en.json...");
114
+ const i18nResult = updateI18n(templateData, webBasePath, dryRun);
115
+ console.log(` ${i18nResult.success ? "✅" : "❌"} ${i18nResult.message}`);
116
+ }
117
+
118
+ console.log("\n✅ Generation complete!");
119
+
120
+ if (dryRun) {
121
+ console.log("\n📝 This was a dry run. No files were actually written.");
122
+ console.log(" Remove --dry-run to generate files.");
123
+ }
124
+
125
+ return true;
126
+ }
127
+
128
+ /**
129
+ * Build template data from JSON schema
130
+ */
131
+ function buildTemplateData(schema: JsonModuleDefinition): FrontendTemplateData {
132
+ const names = transformNames(schema.moduleName, schema.endpointName);
133
+ const targetDir = schema.targetDir as "features" | "foundations";
134
+ const extendsContent = detectExtendsContent(schema.fields);
135
+
136
+ // Map fields
137
+ const allFields = mapFields(schema.fields, names.camelCase);
138
+
139
+ // Get inherited fields to filter out for forms (Content fields are handled specially)
140
+ const inheritedFields = extendsContent ? ["name", "tldr", "abstract", "content"] : [];
141
+ const fields = filterInheritedFields(allFields, inheritedFields);
142
+
143
+ // Resolve relationships
144
+ const relationships = resolveRelationships(schema.relationships);
145
+ const relationshipServiceMethods = generateServiceMethods(relationships);
146
+
147
+ // Build imports
148
+ const imports = buildImportStatements(relationships, extendsContent);
149
+
150
+ // Generate i18n keys
151
+ const i18nKeys = generateI18nKeys(names, fields, relationships);
152
+
153
+ // Build table field names
154
+ const tableFieldNames = buildTableFieldNames(schema, extendsContent);
155
+
156
+ return {
157
+ names,
158
+ moduleId: schema.moduleId,
159
+ endpoint: schema.endpointName,
160
+ targetDir,
161
+ extendsContent,
162
+ fields: allFields, // Keep all fields for interface generation
163
+ relationships,
164
+ i18nKeys,
165
+ imports,
166
+ tableFieldNames,
167
+ relationshipServiceMethods,
168
+ };
169
+ }
170
+
171
+ /**
172
+ * Build field names for table display
173
+ */
174
+ function buildTableFieldNames(schema: JsonModuleDefinition, extendsContent: boolean): string[] {
175
+ const fieldNames: string[] = [`${toCamelCase(schema.moduleName)}Id`];
176
+
177
+ // Add name for all modules
178
+ fieldNames.push("name");
179
+
180
+ // Add authors for content modules
181
+ if (extendsContent) {
182
+ fieldNames.push("authors");
183
+ }
184
+
185
+ // Add custom fields (excluding certain ones)
186
+ schema.fields.forEach((f) => {
187
+ if (!["id", "name", "tldr", "abstract", "content", "createdAt", "updatedAt"].includes(f.name)) {
188
+ fieldNames.push(f.name);
189
+ }
190
+ });
191
+
192
+ // Add standard date fields
193
+ fieldNames.push("createdAt", "updatedAt");
194
+
195
+ return fieldNames;
196
+ }
197
+
198
+ /**
199
+ * Generate all module files
200
+ */
201
+ function generateAllFiles(data: FrontendTemplateData, schema: JsonModuleDefinition): GeneratedFile[] {
202
+ const files: GeneratedFile[] = [];
203
+ const paths = buildFilePaths(data, findWebBasePath(""));
204
+
205
+ // Data layer (4 files)
206
+ files.push({
207
+ path: paths.interface,
208
+ content: generateInterfaceTemplate(data),
209
+ type: "data",
210
+ });
211
+
212
+ files.push({
213
+ path: paths.model,
214
+ content: generateModelTemplate(data),
215
+ type: "data",
216
+ });
217
+
218
+ files.push({
219
+ path: paths.service,
220
+ content: generateServiceTemplate(data),
221
+ type: "data",
222
+ });
223
+
224
+ files.push({
225
+ path: paths.fields,
226
+ content: generateFieldsTemplate(data),
227
+ type: "data",
228
+ });
229
+
230
+ // Form components (4 files)
231
+ files.push({
232
+ path: paths.editor,
233
+ content: generateEditorTemplate(data),
234
+ type: "component",
235
+ });
236
+
237
+ files.push({
238
+ path: paths.deleter,
239
+ content: generateDeleterTemplate(data),
240
+ type: "component",
241
+ });
242
+
243
+ files.push({
244
+ path: paths.selector,
245
+ content: generateSelectorTemplate(data),
246
+ type: "component",
247
+ });
248
+
249
+ files.push({
250
+ path: paths.multiSelector,
251
+ content: generateMultiSelectorTemplate(data),
252
+ type: "component",
253
+ });
254
+
255
+ // Display components (4-5 files)
256
+ files.push({
257
+ path: paths.list,
258
+ content: generateListTemplate(data),
259
+ type: "component",
260
+ });
261
+
262
+ files.push({
263
+ path: paths.details,
264
+ content: generateDetailsTemplate(data),
265
+ type: "component",
266
+ });
267
+
268
+ // Content component only for Content-extending modules
269
+ const contentTemplate = generateContentTemplate(data);
270
+ if (contentTemplate) {
271
+ files.push({
272
+ path: paths.content,
273
+ content: contentTemplate,
274
+ type: "component",
275
+ });
276
+ }
277
+
278
+ files.push({
279
+ path: paths.container,
280
+ content: generateContainerTemplate(data),
281
+ type: "component",
282
+ });
283
+
284
+ files.push({
285
+ path: paths.listContainer,
286
+ content: generateListContainerTemplate(data),
287
+ type: "component",
288
+ });
289
+
290
+ // Context & hooks (2 files)
291
+ files.push({
292
+ path: paths.context,
293
+ content: generateContextTemplate(data),
294
+ type: "context",
295
+ });
296
+
297
+ files.push({
298
+ path: paths.tableHook,
299
+ content: generateTableHookTemplate(data),
300
+ type: "hook",
301
+ });
302
+
303
+ // Module (1 file)
304
+ files.push({
305
+ path: paths.module,
306
+ content: generateModuleTemplate(data),
307
+ type: "module",
308
+ });
309
+
310
+ // Pages (2 files)
311
+ files.push({
312
+ path: paths.listPage,
313
+ content: generateListPageTemplate(data),
314
+ type: "page",
315
+ });
316
+
317
+ files.push({
318
+ path: paths.detailPage,
319
+ content: generateDetailPageTemplate(data),
320
+ type: "page",
321
+ });
322
+
323
+ return files;
324
+ }
325
+
326
+ /**
327
+ * Find the web app base path from the JSON path
328
+ * Assumes JSON is in /structure folder and web app is in /apps/web
329
+ */
330
+ function findWebBasePath(jsonPath: string): string {
331
+ // Try to find apps/web relative to current working directory
332
+ const cwd = process.cwd();
333
+
334
+ // Check if we're in the monorepo root
335
+ if (fs.existsSync(path.join(cwd, "apps/web"))) {
336
+ return cwd;
337
+ }
338
+
339
+ // Check if we're in packages/nextjs-jsonapi
340
+ if (fs.existsSync(path.join(cwd, "../../apps/web"))) {
341
+ return path.join(cwd, "../..");
342
+ }
343
+
344
+ // Try to derive from jsonPath
345
+ if (jsonPath) {
346
+ const resolved = path.resolve(jsonPath);
347
+ // Look for monorepo root by finding apps/web
348
+ let current = path.dirname(resolved);
349
+ for (let i = 0; i < 10; i++) {
350
+ if (fs.existsSync(path.join(current, "apps/web"))) {
351
+ return current;
352
+ }
353
+ const parent = path.dirname(current);
354
+ if (parent === current) break;
355
+ current = parent;
356
+ }
357
+ }
358
+
359
+ // Default to current directory
360
+ return cwd;
361
+ }
362
+
363
+ export default generateWebModule;
@@ -0,0 +1,49 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Frontend Module Generator CLI
4
+ *
5
+ * Generates Next.js frontend modules from JSON schema definitions.
6
+ *
7
+ * Usage:
8
+ * pnpm generate-web-module <json-path> [options]
9
+ *
10
+ * Options:
11
+ * --dry-run Preview without writing files
12
+ * --force Overwrite existing files
13
+ * --no-register Skip Bootstrapper and i18n updates
14
+ */
15
+
16
+ import { Command } from "commander";
17
+ import * as path from "path";
18
+ import { generateWebModule } from "./generator";
19
+
20
+ const program = new Command();
21
+
22
+ program
23
+ .name("generate-web-module")
24
+ .description("Generate Next.js frontend module from JSON schema")
25
+ .version("1.0.0")
26
+ .argument("<json-path>", "Path to JSON schema file (relative or absolute)")
27
+ .option("-d, --dry-run", "Preview files without writing them", false)
28
+ .option("-f, --force", "Overwrite existing files", false)
29
+ .option("-n, --no-register", "Skip Bootstrapper.ts and i18n updates", false)
30
+ .action(async (jsonPath: string, options: { dryRun: boolean; force: boolean; register: boolean }) => {
31
+ // Resolve path
32
+ const resolvedPath = path.isAbsolute(jsonPath) ? jsonPath : path.resolve(process.cwd(), jsonPath);
33
+
34
+ try {
35
+ const success = await generateWebModule({
36
+ jsonPath: resolvedPath,
37
+ dryRun: options.dryRun,
38
+ force: options.force,
39
+ noRegister: !options.register,
40
+ });
41
+
42
+ process.exit(success ? 0 : 1);
43
+ } catch (error) {
44
+ console.error("\n❌ Error:", error instanceof Error ? error.message : error);
45
+ process.exit(1);
46
+ }
47
+ });
48
+
49
+ program.parse();