@carlonicora/nextjs-jsonapi 1.1.1 → 1.3.0

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 (230) hide show
  1. package/dist/{BlockNoteEditor-6NVBI7XL.js → BlockNoteEditor-CNXQ3WL3.js} +7 -7
  2. package/dist/{BlockNoteEditor-6NVBI7XL.js.map → BlockNoteEditor-CNXQ3WL3.js.map} +1 -1
  3. package/dist/{BlockNoteEditor-4VOBTXWC.mjs → BlockNoteEditor-DC33K4IF.mjs} +3 -3
  4. package/dist/{chunk-KPRHIJO6.js → chunk-KDFDGXCX.js} +53 -53
  5. package/dist/{chunk-KPRHIJO6.js.map → chunk-KDFDGXCX.js.map} +1 -1
  6. package/dist/{chunk-FYRFMABS.js → chunk-L6LH7WA4.js} +21 -2
  7. package/dist/chunk-L6LH7WA4.js.map +1 -0
  8. package/dist/{chunk-MA2L2PL2.mjs → chunk-MHVXFWZY.mjs} +20 -1
  9. package/dist/chunk-MHVXFWZY.mjs.map +1 -0
  10. package/dist/{chunk-HP4Q5ZVG.mjs → chunk-Y4XI3AZR.mjs} +3 -3
  11. package/dist/client/index.js +3 -3
  12. package/dist/client/index.mjs +2 -2
  13. package/dist/components/index.js +3 -3
  14. package/dist/components/index.mjs +2 -2
  15. package/dist/contexts/index.js +3 -3
  16. package/dist/contexts/index.mjs +2 -2
  17. package/dist/features/index.d.mts +3 -1
  18. package/dist/features/index.d.ts +3 -1
  19. package/dist/features/index.js +4 -2
  20. package/dist/features/index.js.map +1 -1
  21. package/dist/features/index.mjs +3 -1
  22. package/dist/hooks/index.js +3 -3
  23. package/dist/hooks/index.mjs +2 -2
  24. package/dist/scripts/generate-web-module/generator.d.ts +15 -0
  25. package/dist/scripts/generate-web-module/generator.d.ts.map +1 -0
  26. package/dist/scripts/generate-web-module/generator.js +320 -0
  27. package/dist/scripts/generate-web-module/generator.js.map +1 -0
  28. package/dist/scripts/generate-web-module/index.d.ts +16 -0
  29. package/dist/scripts/generate-web-module/index.d.ts.map +1 -0
  30. package/dist/scripts/generate-web-module/index.js +80 -0
  31. package/dist/scripts/generate-web-module/index.js.map +1 -0
  32. package/dist/scripts/generate-web-module/templates/components/container.template.d.ts +14 -0
  33. package/dist/scripts/generate-web-module/templates/components/container.template.d.ts.map +1 -0
  34. package/dist/scripts/generate-web-module/templates/components/container.template.js +124 -0
  35. package/dist/scripts/generate-web-module/templates/components/container.template.js.map +1 -0
  36. package/dist/scripts/generate-web-module/templates/components/content.template.d.ts +15 -0
  37. package/dist/scripts/generate-web-module/templates/components/content.template.d.ts.map +1 -0
  38. package/dist/scripts/generate-web-module/templates/components/content.template.js +39 -0
  39. package/dist/scripts/generate-web-module/templates/components/content.template.js.map +1 -0
  40. package/dist/scripts/generate-web-module/templates/components/deleter.template.d.ts +14 -0
  41. package/dist/scripts/generate-web-module/templates/components/deleter.template.d.ts.map +1 -0
  42. package/dist/scripts/generate-web-module/templates/components/deleter.template.js +51 -0
  43. package/dist/scripts/generate-web-module/templates/components/deleter.template.js.map +1 -0
  44. package/dist/scripts/generate-web-module/templates/components/details.template.d.ts +14 -0
  45. package/dist/scripts/generate-web-module/templates/components/details.template.d.ts.map +1 -0
  46. package/dist/scripts/generate-web-module/templates/components/details.template.js +109 -0
  47. package/dist/scripts/generate-web-module/templates/components/details.template.js.map +1 -0
  48. package/dist/scripts/generate-web-module/templates/components/editor.template.d.ts +14 -0
  49. package/dist/scripts/generate-web-module/templates/components/editor.template.d.ts.map +1 -0
  50. package/dist/scripts/generate-web-module/templates/components/editor.template.js +459 -0
  51. package/dist/scripts/generate-web-module/templates/components/editor.template.js.map +1 -0
  52. package/dist/scripts/generate-web-module/templates/components/index.d.ts +15 -0
  53. package/dist/scripts/generate-web-module/templates/components/index.d.ts.map +1 -0
  54. package/dist/scripts/generate-web-module/templates/components/index.js +29 -0
  55. package/dist/scripts/generate-web-module/templates/components/index.js.map +1 -0
  56. package/dist/scripts/generate-web-module/templates/components/list-container.template.d.ts +14 -0
  57. package/dist/scripts/generate-web-module/templates/components/list-container.template.d.ts.map +1 -0
  58. package/dist/scripts/generate-web-module/templates/components/list-container.template.js +30 -0
  59. package/dist/scripts/generate-web-module/templates/components/list-container.template.js.map +1 -0
  60. package/dist/scripts/generate-web-module/templates/components/list.template.d.ts +14 -0
  61. package/dist/scripts/generate-web-module/templates/components/list.template.d.ts.map +1 -0
  62. package/dist/scripts/generate-web-module/templates/components/list.template.js +84 -0
  63. package/dist/scripts/generate-web-module/templates/components/list.template.js.map +1 -0
  64. package/dist/scripts/generate-web-module/templates/components/multi-selector.template.d.ts +14 -0
  65. package/dist/scripts/generate-web-module/templates/components/multi-selector.template.d.ts.map +1 -0
  66. package/dist/scripts/generate-web-module/templates/components/multi-selector.template.js +184 -0
  67. package/dist/scripts/generate-web-module/templates/components/multi-selector.template.js.map +1 -0
  68. package/dist/scripts/generate-web-module/templates/components/selector.template.d.ts +14 -0
  69. package/dist/scripts/generate-web-module/templates/components/selector.template.d.ts.map +1 -0
  70. package/dist/scripts/generate-web-module/templates/components/selector.template.js +199 -0
  71. package/dist/scripts/generate-web-module/templates/components/selector.template.js.map +1 -0
  72. package/dist/scripts/generate-web-module/templates/context.template.d.ts +14 -0
  73. package/dist/scripts/generate-web-module/templates/context.template.d.ts.map +1 -0
  74. package/dist/scripts/generate-web-module/templates/context.template.js +121 -0
  75. package/dist/scripts/generate-web-module/templates/context.template.js.map +1 -0
  76. package/dist/scripts/generate-web-module/templates/data/fields.template.d.ts +14 -0
  77. package/dist/scripts/generate-web-module/templates/data/fields.template.d.ts.map +1 -0
  78. package/dist/scripts/generate-web-module/templates/data/fields.template.js +55 -0
  79. package/dist/scripts/generate-web-module/templates/data/fields.template.js.map +1 -0
  80. package/dist/scripts/generate-web-module/templates/data/index.d.ts +10 -0
  81. package/dist/scripts/generate-web-module/templates/data/index.d.ts.map +1 -0
  82. package/dist/scripts/generate-web-module/templates/data/index.js +26 -0
  83. package/dist/scripts/generate-web-module/templates/data/index.js.map +1 -0
  84. package/dist/scripts/generate-web-module/templates/data/interface.template.d.ts +14 -0
  85. package/dist/scripts/generate-web-module/templates/data/interface.template.d.ts.map +1 -0
  86. package/dist/scripts/generate-web-module/templates/data/interface.template.js +116 -0
  87. package/dist/scripts/generate-web-module/templates/data/interface.template.js.map +1 -0
  88. package/dist/scripts/generate-web-module/templates/data/model.template.d.ts +14 -0
  89. package/dist/scripts/generate-web-module/templates/data/model.template.d.ts.map +1 -0
  90. package/dist/scripts/generate-web-module/templates/data/model.template.js +274 -0
  91. package/dist/scripts/generate-web-module/templates/data/model.template.js.map +1 -0
  92. package/dist/scripts/generate-web-module/templates/data/service.template.d.ts +14 -0
  93. package/dist/scripts/generate-web-module/templates/data/service.template.d.ts.map +1 -0
  94. package/dist/scripts/generate-web-module/templates/data/service.template.js +168 -0
  95. package/dist/scripts/generate-web-module/templates/data/service.template.js.map +1 -0
  96. package/dist/scripts/generate-web-module/templates/index.d.ts +12 -0
  97. package/dist/scripts/generate-web-module/templates/index.d.ts.map +1 -0
  98. package/dist/scripts/generate-web-module/templates/index.js +37 -0
  99. package/dist/scripts/generate-web-module/templates/index.js.map +1 -0
  100. package/dist/scripts/generate-web-module/templates/module.template.d.ts +14 -0
  101. package/dist/scripts/generate-web-module/templates/module.template.d.ts.map +1 -0
  102. package/dist/scripts/generate-web-module/templates/module.template.js +64 -0
  103. package/dist/scripts/generate-web-module/templates/module.template.js.map +1 -0
  104. package/dist/scripts/generate-web-module/templates/pages/detail-page.template.d.ts +14 -0
  105. package/dist/scripts/generate-web-module/templates/pages/detail-page.template.d.ts.map +1 -0
  106. package/dist/scripts/generate-web-module/templates/pages/detail-page.template.js +65 -0
  107. package/dist/scripts/generate-web-module/templates/pages/detail-page.template.js.map +1 -0
  108. package/dist/scripts/generate-web-module/templates/pages/index.d.ts +8 -0
  109. package/dist/scripts/generate-web-module/templates/pages/index.d.ts.map +1 -0
  110. package/dist/scripts/generate-web-module/templates/pages/index.js +13 -0
  111. package/dist/scripts/generate-web-module/templates/pages/index.js.map +1 -0
  112. package/dist/scripts/generate-web-module/templates/pages/list-page.template.d.ts +14 -0
  113. package/dist/scripts/generate-web-module/templates/pages/list-page.template.d.ts.map +1 -0
  114. package/dist/scripts/generate-web-module/templates/pages/list-page.template.js +37 -0
  115. package/dist/scripts/generate-web-module/templates/pages/list-page.template.js.map +1 -0
  116. package/dist/scripts/generate-web-module/templates/table-hook.template.d.ts +14 -0
  117. package/dist/scripts/generate-web-module/templates/table-hook.template.d.ts.map +1 -0
  118. package/dist/scripts/generate-web-module/templates/table-hook.template.js +174 -0
  119. package/dist/scripts/generate-web-module/templates/table-hook.template.js.map +1 -0
  120. package/dist/scripts/generate-web-module/transformers/field-mapper.d.ts +55 -0
  121. package/dist/scripts/generate-web-module/transformers/field-mapper.d.ts.map +1 -0
  122. package/dist/scripts/generate-web-module/transformers/field-mapper.js +179 -0
  123. package/dist/scripts/generate-web-module/transformers/field-mapper.js.map +1 -0
  124. package/dist/scripts/generate-web-module/transformers/i18n-generator.d.ts +78 -0
  125. package/dist/scripts/generate-web-module/transformers/i18n-generator.d.ts.map +1 -0
  126. package/dist/scripts/generate-web-module/transformers/i18n-generator.js +182 -0
  127. package/dist/scripts/generate-web-module/transformers/i18n-generator.js.map +1 -0
  128. package/dist/scripts/generate-web-module/transformers/import-resolver.d.ts +106 -0
  129. package/dist/scripts/generate-web-module/transformers/import-resolver.d.ts.map +1 -0
  130. package/dist/scripts/generate-web-module/transformers/import-resolver.js +193 -0
  131. package/dist/scripts/generate-web-module/transformers/import-resolver.js.map +1 -0
  132. package/dist/scripts/generate-web-module/transformers/index.d.ts +12 -0
  133. package/dist/scripts/generate-web-module/transformers/index.d.ts.map +1 -0
  134. package/dist/scripts/generate-web-module/transformers/index.js +28 -0
  135. package/dist/scripts/generate-web-module/transformers/index.js.map +1 -0
  136. package/dist/scripts/generate-web-module/transformers/name-transformer.d.ts +60 -0
  137. package/dist/scripts/generate-web-module/transformers/name-transformer.d.ts.map +1 -0
  138. package/dist/scripts/generate-web-module/transformers/name-transformer.js +115 -0
  139. package/dist/scripts/generate-web-module/transformers/name-transformer.js.map +1 -0
  140. package/dist/scripts/generate-web-module/transformers/parent-detector.d.ts +57 -0
  141. package/dist/scripts/generate-web-module/transformers/parent-detector.d.ts.map +1 -0
  142. package/dist/scripts/generate-web-module/transformers/parent-detector.js +88 -0
  143. package/dist/scripts/generate-web-module/transformers/parent-detector.js.map +1 -0
  144. package/dist/scripts/generate-web-module/transformers/relationship-resolver.d.ts +68 -0
  145. package/dist/scripts/generate-web-module/transformers/relationship-resolver.d.ts.map +1 -0
  146. package/dist/scripts/generate-web-module/transformers/relationship-resolver.js +219 -0
  147. package/dist/scripts/generate-web-module/transformers/relationship-resolver.js.map +1 -0
  148. package/dist/scripts/generate-web-module/types/field-mapping.types.d.ts +68 -0
  149. package/dist/scripts/generate-web-module/types/field-mapping.types.d.ts.map +1 -0
  150. package/dist/scripts/generate-web-module/types/field-mapping.types.js +129 -0
  151. package/dist/scripts/generate-web-module/types/field-mapping.types.js.map +1 -0
  152. package/dist/scripts/generate-web-module/types/index.d.ts +9 -0
  153. package/dist/scripts/generate-web-module/types/index.d.ts.map +1 -0
  154. package/dist/scripts/generate-web-module/types/index.js +25 -0
  155. package/dist/scripts/generate-web-module/types/index.js.map +1 -0
  156. package/dist/scripts/generate-web-module/types/json-schema.interface.d.ts +40 -0
  157. package/dist/scripts/generate-web-module/types/json-schema.interface.d.ts.map +1 -0
  158. package/dist/scripts/generate-web-module/types/json-schema.interface.js +10 -0
  159. package/dist/scripts/generate-web-module/types/json-schema.interface.js.map +1 -0
  160. package/dist/scripts/generate-web-module/types/template-data.interface.d.ts +128 -0
  161. package/dist/scripts/generate-web-module/types/template-data.interface.d.ts.map +1 -0
  162. package/dist/scripts/generate-web-module/types/template-data.interface.js +9 -0
  163. package/dist/scripts/generate-web-module/types/template-data.interface.js.map +1 -0
  164. package/dist/scripts/generate-web-module/utils/bootstrapper-updater.d.ts +29 -0
  165. package/dist/scripts/generate-web-module/utils/bootstrapper-updater.d.ts.map +1 -0
  166. package/dist/scripts/generate-web-module/utils/bootstrapper-updater.js +153 -0
  167. package/dist/scripts/generate-web-module/utils/bootstrapper-updater.js.map +1 -0
  168. package/dist/scripts/generate-web-module/utils/file-writer.d.ts +38 -0
  169. package/dist/scripts/generate-web-module/utils/file-writer.d.ts.map +1 -0
  170. package/dist/scripts/generate-web-module/utils/file-writer.js +126 -0
  171. package/dist/scripts/generate-web-module/utils/file-writer.js.map +1 -0
  172. package/dist/scripts/generate-web-module/utils/i18n-updater.d.ts +28 -0
  173. package/dist/scripts/generate-web-module/utils/i18n-updater.d.ts.map +1 -0
  174. package/dist/scripts/generate-web-module/utils/i18n-updater.js +122 -0
  175. package/dist/scripts/generate-web-module/utils/i18n-updater.js.map +1 -0
  176. package/dist/scripts/generate-web-module/utils/index.d.ts +9 -0
  177. package/dist/scripts/generate-web-module/utils/index.d.ts.map +1 -0
  178. package/dist/scripts/generate-web-module/utils/index.js +20 -0
  179. package/dist/scripts/generate-web-module/utils/index.js.map +1 -0
  180. package/dist/scripts/generate-web-module/validators/json-schema-validator.d.ts +46 -0
  181. package/dist/scripts/generate-web-module/validators/json-schema-validator.d.ts.map +1 -0
  182. package/dist/scripts/generate-web-module/validators/json-schema-validator.js +265 -0
  183. package/dist/scripts/generate-web-module/validators/json-schema-validator.js.map +1 -0
  184. package/package.json +27 -21
  185. package/scripts/generate-web-module/generator.ts +363 -0
  186. package/scripts/generate-web-module/index.ts +49 -0
  187. package/scripts/generate-web-module/templates/components/container.template.ts +129 -0
  188. package/scripts/generate-web-module/templates/components/content.template.ts +40 -0
  189. package/scripts/generate-web-module/templates/components/deleter.template.ts +51 -0
  190. package/scripts/generate-web-module/templates/components/details.template.ts +115 -0
  191. package/scripts/generate-web-module/templates/components/editor.template.ts +495 -0
  192. package/scripts/generate-web-module/templates/components/index.ts +18 -0
  193. package/scripts/generate-web-module/templates/components/list-container.template.ts +30 -0
  194. package/scripts/generate-web-module/templates/components/list.template.ts +91 -0
  195. package/scripts/generate-web-module/templates/components/multi-selector.template.ts +184 -0
  196. package/scripts/generate-web-module/templates/components/selector.template.ts +199 -0
  197. package/scripts/generate-web-module/templates/context.template.ts +121 -0
  198. package/scripts/generate-web-module/templates/data/fields.template.ts +64 -0
  199. package/scripts/generate-web-module/templates/data/index.ts +10 -0
  200. package/scripts/generate-web-module/templates/data/interface.template.ts +136 -0
  201. package/scripts/generate-web-module/templates/data/model.template.ts +327 -0
  202. package/scripts/generate-web-module/templates/data/service.template.ts +185 -0
  203. package/scripts/generate-web-module/templates/index.ts +34 -0
  204. package/scripts/generate-web-module/templates/module.template.ts +69 -0
  205. package/scripts/generate-web-module/templates/pages/detail-page.template.ts +65 -0
  206. package/scripts/generate-web-module/templates/pages/index.ts +8 -0
  207. package/scripts/generate-web-module/templates/pages/list-page.template.ts +37 -0
  208. package/scripts/generate-web-module/templates/table-hook.template.ts +182 -0
  209. package/scripts/generate-web-module/transformers/field-mapper.ts +201 -0
  210. package/scripts/generate-web-module/transformers/i18n-generator.ts +199 -0
  211. package/scripts/generate-web-module/transformers/import-resolver.ts +250 -0
  212. package/scripts/generate-web-module/transformers/index.ts +12 -0
  213. package/scripts/generate-web-module/transformers/name-transformer.ts +115 -0
  214. package/scripts/generate-web-module/transformers/parent-detector.ts +87 -0
  215. package/scripts/generate-web-module/transformers/relationship-resolver.ts +221 -0
  216. package/scripts/generate-web-module/tsconfig.json +24 -0
  217. package/scripts/generate-web-module/types/field-mapping.types.ts +141 -0
  218. package/scripts/generate-web-module/types/index.ts +9 -0
  219. package/scripts/generate-web-module/types/json-schema.interface.ts +42 -0
  220. package/scripts/generate-web-module/types/template-data.interface.ts +164 -0
  221. package/scripts/generate-web-module/utils/bootstrapper-updater.ts +145 -0
  222. package/scripts/generate-web-module/utils/file-writer.ts +115 -0
  223. package/scripts/generate-web-module/utils/i18n-updater.ts +108 -0
  224. package/scripts/generate-web-module/utils/index.ts +9 -0
  225. package/scripts/generate-web-module/validators/json-schema-validator.ts +306 -0
  226. package/src/features/user/index.ts +1 -1
  227. package/dist/chunk-FYRFMABS.js.map +0 -1
  228. package/dist/chunk-MA2L2PL2.mjs.map +0 -1
  229. /package/dist/{BlockNoteEditor-4VOBTXWC.mjs.map → BlockNoteEditor-DC33K4IF.mjs.map} +0 -0
  230. /package/dist/{chunk-HP4Q5ZVG.mjs.map → chunk-Y4XI3AZR.mjs.map} +0 -0
@@ -0,0 +1,80 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * Frontend Module Generator CLI
5
+ *
6
+ * Generates Next.js frontend modules from JSON schema definitions.
7
+ *
8
+ * Usage:
9
+ * pnpm generate-web-module <json-path> [options]
10
+ *
11
+ * Options:
12
+ * --dry-run Preview without writing files
13
+ * --force Overwrite existing files
14
+ * --no-register Skip Bootstrapper and i18n updates
15
+ */
16
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ var desc = Object.getOwnPropertyDescriptor(m, k);
19
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
20
+ desc = { enumerable: true, get: function() { return m[k]; } };
21
+ }
22
+ Object.defineProperty(o, k2, desc);
23
+ }) : (function(o, m, k, k2) {
24
+ if (k2 === undefined) k2 = k;
25
+ o[k2] = m[k];
26
+ }));
27
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
28
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
29
+ }) : function(o, v) {
30
+ o["default"] = v;
31
+ });
32
+ var __importStar = (this && this.__importStar) || (function () {
33
+ var ownKeys = function(o) {
34
+ ownKeys = Object.getOwnPropertyNames || function (o) {
35
+ var ar = [];
36
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
37
+ return ar;
38
+ };
39
+ return ownKeys(o);
40
+ };
41
+ return function (mod) {
42
+ if (mod && mod.__esModule) return mod;
43
+ var result = {};
44
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
45
+ __setModuleDefault(result, mod);
46
+ return result;
47
+ };
48
+ })();
49
+ Object.defineProperty(exports, "__esModule", { value: true });
50
+ const commander_1 = require("commander");
51
+ const path = __importStar(require("path"));
52
+ const generator_1 = require("./generator");
53
+ const program = new commander_1.Command();
54
+ program
55
+ .name("generate-web-module")
56
+ .description("Generate Next.js frontend module from JSON schema")
57
+ .version("1.0.0")
58
+ .argument("<json-path>", "Path to JSON schema file (relative or absolute)")
59
+ .option("-d, --dry-run", "Preview files without writing them", false)
60
+ .option("-f, --force", "Overwrite existing files", false)
61
+ .option("-n, --no-register", "Skip Bootstrapper.ts and i18n updates", false)
62
+ .action(async (jsonPath, options) => {
63
+ // Resolve path
64
+ const resolvedPath = path.isAbsolute(jsonPath) ? jsonPath : path.resolve(process.cwd(), jsonPath);
65
+ try {
66
+ const success = await (0, generator_1.generateWebModule)({
67
+ jsonPath: resolvedPath,
68
+ dryRun: options.dryRun,
69
+ force: options.force,
70
+ noRegister: !options.register,
71
+ });
72
+ process.exit(success ? 0 : 1);
73
+ }
74
+ catch (error) {
75
+ console.error("\n❌ Error:", error instanceof Error ? error.message : error);
76
+ process.exit(1);
77
+ }
78
+ });
79
+ program.parse();
80
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../scripts/generate-web-module/index.ts"],"names":[],"mappings":";;AACA;;;;;;;;;;;;GAYG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,yCAAoC;AACpC,2CAA6B;AAC7B,2CAAgD;AAEhD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,qBAAqB,CAAC;KAC3B,WAAW,CAAC,mDAAmD,CAAC;KAChE,OAAO,CAAC,OAAO,CAAC;KAChB,QAAQ,CAAC,aAAa,EAAE,iDAAiD,CAAC;KAC1E,MAAM,CAAC,eAAe,EAAE,oCAAoC,EAAE,KAAK,CAAC;KACpE,MAAM,CAAC,aAAa,EAAE,0BAA0B,EAAE,KAAK,CAAC;KACxD,MAAM,CAAC,mBAAmB,EAAE,uCAAuC,EAAE,KAAK,CAAC;KAC3E,MAAM,CAAC,KAAK,EAAE,QAAgB,EAAE,OAA+D,EAAE,EAAE;IAClG,eAAe;IACf,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;IAElG,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,IAAA,6BAAiB,EAAC;YACtC,QAAQ,EAAE,YAAY;YACtB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,UAAU,EAAE,CAAC,OAAO,CAAC,QAAQ;SAC9B,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC5E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Container Template
3
+ *
4
+ * Generates {Module}Container.tsx component for displaying item detail page.
5
+ */
6
+ import { FrontendTemplateData } from "../../types/template-data.interface";
7
+ /**
8
+ * Generate the container component file content
9
+ *
10
+ * @param data - Frontend template data
11
+ * @returns Generated file content
12
+ */
13
+ export declare function generateContainerTemplate(data: FrontendTemplateData): string;
14
+ //# sourceMappingURL=container.template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"container.template.d.ts","sourceRoot":"","sources":["../../../../../scripts/generate-web-module/templates/components/container.template.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAE3E;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,CAU5E"}
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+ /**
3
+ * Container Template
4
+ *
5
+ * Generates {Module}Container.tsx component for displaying item detail page.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.generateContainerTemplate = generateContainerTemplate;
9
+ /**
10
+ * Generate the container component file content
11
+ *
12
+ * @param data - Frontend template data
13
+ * @returns Generated file content
14
+ */
15
+ function generateContainerTemplate(data) {
16
+ const { names, extendsContent } = data;
17
+ // Content-extending modules get full tabs with relevant content/users
18
+ if (extendsContent) {
19
+ return generateContentContainerTemplate(data);
20
+ }
21
+ // Non-content modules get simpler container
22
+ return generateSimpleContainerTemplate(data);
23
+ }
24
+ /**
25
+ * Generate container for Content-extending modules
26
+ */
27
+ function generateContentContainerTemplate(data) {
28
+ const { names } = data;
29
+ return `"use client";
30
+
31
+ import ${names.pascalCase}Content from "@/features/${data.targetDir}/${names.kebabCase}/components/details/${names.pascalCase}Content";
32
+ import ${names.pascalCase}Details from "@/features/${data.targetDir}/${names.kebabCase}/components/details/${names.pascalCase}Details";
33
+ import { use${names.pascalCase}Context } from "@/features/${data.targetDir}/${names.kebabCase}/contexts/${names.pascalCase}Context";
34
+ import { ${names.pascalCase}Interface } from "@/features/${data.targetDir}/${names.kebabCase}/data/${names.pascalCase}Interface";
35
+ import {
36
+ AllowedUsersDetails,
37
+ PageContentContainer,
38
+ RelevantContentsList,
39
+ RelevantUsersList,
40
+ } from "@carlonicora/nextjs-jsonapi/components";
41
+ import { Tabs, TabsContent, TabsList, TabsTrigger } from "@carlonicora/nextjs-jsonapi/shadcnui";
42
+ import { useTranslations } from "next-intl";
43
+
44
+ type ${names.pascalCase}ContainerProps = {
45
+ ${names.camelCase}: ${names.pascalCase}Interface;
46
+ };
47
+
48
+ function ${names.pascalCase}ContainerInternal({ ${names.camelCase} }: ${names.pascalCase}ContainerProps) {
49
+ const t = useTranslations();
50
+
51
+ return (
52
+ <PageContentContainer
53
+ details={<${names.pascalCase}Details />}
54
+ footer={
55
+ <AllowedUsersDetails showTitle content={${names.camelCase}} />
56
+ }
57
+ content={
58
+ <Tabs defaultValue={\`${names.camelCase}\`}>
59
+ <TabsList className="mb-4">
60
+ <TabsTrigger value="${names.camelCase}">{t(\`types.${names.pluralCamel}\`, { count: 1 })}</TabsTrigger>
61
+ <TabsTrigger value="contents">{t(\`generic.relevant\`)}</TabsTrigger>
62
+ <TabsTrigger value="users">{t(\`generic.relevant_users\`)}</TabsTrigger>
63
+ </TabsList>
64
+ <TabsContent value="${names.camelCase}">
65
+ <${names.pascalCase}Content />
66
+ </TabsContent>
67
+ <TabsContent value="contents">
68
+ <RelevantContentsList id={${names.camelCase}.id} />
69
+ </TabsContent>
70
+ <TabsContent value="users">
71
+ <RelevantUsersList id={${names.camelCase}.id} />
72
+ </TabsContent>
73
+ </Tabs>
74
+ }
75
+ />
76
+ );
77
+ }
78
+
79
+ export default function ${names.pascalCase}Container() {
80
+ const { ${names.camelCase} } = use${names.pascalCase}Context();
81
+ if (!${names.camelCase}) return null;
82
+
83
+ return <${names.pascalCase}ContainerInternal ${names.camelCase}={${names.camelCase}} />;
84
+ }
85
+ `;
86
+ }
87
+ /**
88
+ * Generate container for non-Content modules
89
+ */
90
+ function generateSimpleContainerTemplate(data) {
91
+ const { names } = data;
92
+ return `"use client";
93
+
94
+ import ${names.pascalCase}Details from "@/features/${data.targetDir}/${names.kebabCase}/components/details/${names.pascalCase}Details";
95
+ import { use${names.pascalCase}Context } from "@/features/${data.targetDir}/${names.kebabCase}/contexts/${names.pascalCase}Context";
96
+ import { ${names.pascalCase}Interface } from "@/features/${data.targetDir}/${names.kebabCase}/data/${names.pascalCase}Interface";
97
+ import { PageContentContainer } from "@carlonicora/nextjs-jsonapi/components";
98
+
99
+ type ${names.pascalCase}ContainerProps = {
100
+ ${names.camelCase}: ${names.pascalCase}Interface;
101
+ };
102
+
103
+ function ${names.pascalCase}ContainerInternal({ ${names.camelCase} }: ${names.pascalCase}ContainerProps) {
104
+ return (
105
+ <PageContentContainer
106
+ details={<${names.pascalCase}Details />}
107
+ content={
108
+ <div className="flex w-full flex-col gap-y-4">
109
+ {/* Add custom content sections here */}
110
+ </div>
111
+ }
112
+ />
113
+ );
114
+ }
115
+
116
+ export default function ${names.pascalCase}Container() {
117
+ const { ${names.camelCase} } = use${names.pascalCase}Context();
118
+ if (!${names.camelCase}) return null;
119
+
120
+ return <${names.pascalCase}ContainerInternal ${names.camelCase}={${names.camelCase}} />;
121
+ }
122
+ `;
123
+ }
124
+ //# sourceMappingURL=container.template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"container.template.js","sourceRoot":"","sources":["../../../../../scripts/generate-web-module/templates/components/container.template.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAUH,8DAUC;AAhBD;;;;;GAKG;AACH,SAAgB,yBAAyB,CAAC,IAA0B;IAClE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;IAEvC,sEAAsE;IACtE,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,gCAAgC,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;IAED,4CAA4C;IAC5C,OAAO,+BAA+B,CAAC,IAAI,CAAC,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,SAAS,gCAAgC,CAAC,IAA0B;IAClE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAEvB,OAAO;;SAEA,KAAK,CAAC,UAAU,4BAA4B,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,uBAAuB,KAAK,CAAC,UAAU;SACpH,KAAK,CAAC,UAAU,4BAA4B,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,uBAAuB,KAAK,CAAC,UAAU;cAC/G,KAAK,CAAC,UAAU,8BAA8B,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,aAAa,KAAK,CAAC,UAAU;WAC/G,KAAK,CAAC,UAAU,gCAAgC,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,SAAS,KAAK,CAAC,UAAU;;;;;;;;;;OAU9G,KAAK,CAAC,UAAU;IACnB,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,UAAU;;;WAG7B,KAAK,CAAC,UAAU,uBAAuB,KAAK,CAAC,SAAS,OAAO,KAAK,CAAC,UAAU;;;;;kBAKtE,KAAK,CAAC,UAAU;;kDAEgB,KAAK,CAAC,SAAS;;;gCAGjC,KAAK,CAAC,SAAS;;kCAEb,KAAK,CAAC,SAAS,gBAAgB,KAAK,CAAC,WAAW;;;;gCAIlD,KAAK,CAAC,SAAS;eAChC,KAAK,CAAC,UAAU;;;wCAGS,KAAK,CAAC,SAAS;;;qCAGlB,KAAK,CAAC,SAAS;;;;;;;;0BAQ1B,KAAK,CAAC,UAAU;YAC9B,KAAK,CAAC,SAAS,WAAW,KAAK,CAAC,UAAU;SAC7C,KAAK,CAAC,SAAS;;YAEZ,KAAK,CAAC,UAAU,qBAAqB,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS;;CAEnF,CAAC;AACF,CAAC;AAED;;GAEG;AACH,SAAS,+BAA+B,CAAC,IAA0B;IACjE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAEvB,OAAO;;SAEA,KAAK,CAAC,UAAU,4BAA4B,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,uBAAuB,KAAK,CAAC,UAAU;cAC/G,KAAK,CAAC,UAAU,8BAA8B,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,aAAa,KAAK,CAAC,UAAU;WAC/G,KAAK,CAAC,UAAU,gCAAgC,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,SAAS,KAAK,CAAC,UAAU;;;OAG9G,KAAK,CAAC,UAAU;IACnB,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,UAAU;;;WAG7B,KAAK,CAAC,UAAU,uBAAuB,KAAK,CAAC,SAAS,OAAO,KAAK,CAAC,UAAU;;;kBAGtE,KAAK,CAAC,UAAU;;;;;;;;;;0BAUR,KAAK,CAAC,UAAU;YAC9B,KAAK,CAAC,SAAS,WAAW,KAAK,CAAC,UAAU;SAC7C,KAAK,CAAC,SAAS;;YAEZ,KAAK,CAAC,UAAU,qBAAqB,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS;;CAEnF,CAAC;AACF,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Content Template
3
+ *
4
+ * Generates {Module}Content.tsx component for displaying BlockNote content.
5
+ * Only generated for Content-extending modules.
6
+ */
7
+ import { FrontendTemplateData } from "../../types/template-data.interface";
8
+ /**
9
+ * Generate the content display component file content
10
+ *
11
+ * @param data - Frontend template data
12
+ * @returns Generated file content or null if not Content-extending
13
+ */
14
+ export declare function generateContentTemplate(data: FrontendTemplateData): string | null;
15
+ //# sourceMappingURL=content.template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content.template.d.ts","sourceRoot":"","sources":["../../../../../scripts/generate-web-module/templates/components/content.template.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAE3E;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,GAAG,IAAI,CAwBjF"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ /**
3
+ * Content Template
4
+ *
5
+ * Generates {Module}Content.tsx component for displaying BlockNote content.
6
+ * Only generated for Content-extending modules.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.generateContentTemplate = generateContentTemplate;
10
+ /**
11
+ * Generate the content display component file content
12
+ *
13
+ * @param data - Frontend template data
14
+ * @returns Generated file content or null if not Content-extending
15
+ */
16
+ function generateContentTemplate(data) {
17
+ const { names, extendsContent } = data;
18
+ // Only generate for Content-extending modules
19
+ if (!extendsContent) {
20
+ return null;
21
+ }
22
+ return `"use client";
23
+
24
+ import { use${names.pascalCase}Context } from "@/features/${data.targetDir}/${names.kebabCase}/contexts/${names.pascalCase}Context";
25
+ import { BlockNoteEditorContainer } from "@carlonicora/nextjs-jsonapi/components";
26
+ import { Card } from "@carlonicora/nextjs-jsonapi/shadcnui";
27
+
28
+ export default function ${names.pascalCase}Content() {
29
+ const { ${names.camelCase} } = use${names.pascalCase}Context();
30
+
31
+ return (
32
+ <Card className="flex w-full flex-col p-4">
33
+ <BlockNoteEditorContainer id={${names.camelCase}.id} type="${names.camelCase}" initialContent={${names.camelCase}.content} />
34
+ </Card>
35
+ );
36
+ }
37
+ `;
38
+ }
39
+ //# sourceMappingURL=content.template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content.template.js","sourceRoot":"","sources":["../../../../../scripts/generate-web-module/templates/components/content.template.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAUH,0DAwBC;AA9BD;;;;;GAKG;AACH,SAAgB,uBAAuB,CAAC,IAA0B;IAChE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;IAEvC,8CAA8C;IAC9C,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;;cAEK,KAAK,CAAC,UAAU,8BAA8B,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,aAAa,KAAK,CAAC,UAAU;;;;0BAIhG,KAAK,CAAC,UAAU;YAC9B,KAAK,CAAC,SAAS,WAAW,KAAK,CAAC,UAAU;;;;sCAIhB,KAAK,CAAC,SAAS,cAAc,KAAK,CAAC,SAAS,qBAAqB,KAAK,CAAC,SAAS;;;;CAIrH,CAAC;AACF,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Deleter Template
3
+ *
4
+ * Generates {Module}Deleter.tsx component for delete confirmation.
5
+ */
6
+ import { FrontendTemplateData } from "../../types/template-data.interface";
7
+ /**
8
+ * Generate the deleter component file content
9
+ *
10
+ * @param data - Frontend template data
11
+ * @returns Generated file content
12
+ */
13
+ export declare function generateDeleterTemplate(data: FrontendTemplateData): string;
14
+ //# sourceMappingURL=deleter.template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deleter.template.d.ts","sourceRoot":"","sources":["../../../../../scripts/generate-web-module/templates/components/deleter.template.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAE3E;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,CAoC1E"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ /**
3
+ * Deleter Template
4
+ *
5
+ * Generates {Module}Deleter.tsx component for delete confirmation.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.generateDeleterTemplate = generateDeleterTemplate;
9
+ /**
10
+ * Generate the deleter component file content
11
+ *
12
+ * @param data - Frontend template data
13
+ * @returns Generated file content
14
+ */
15
+ function generateDeleterTemplate(data) {
16
+ const { names } = data;
17
+ return `"use client";
18
+
19
+ import { ${names.pascalCase}Interface } from "@/features/${data.targetDir}/${names.kebabCase}/data/${names.pascalCase}Interface";
20
+ import { ${names.pascalCase}Service } from "@/features/${data.targetDir}/${names.kebabCase}/data/${names.pascalCase}Service";
21
+ import { CommonDeleter } from "@carlonicora/nextjs-jsonapi/components";
22
+ import { usePageUrlGenerator } from "@carlonicora/nextjs-jsonapi/hooks";
23
+
24
+ import { Modules } from "@carlonicora/nextjs-jsonapi/core";
25
+ import { useTranslations } from "next-intl";
26
+
27
+ type ${names.pascalCase}DeleterProps = {
28
+ ${names.camelCase}: ${names.pascalCase}Interface;
29
+ };
30
+
31
+ function ${names.pascalCase}DeleterInternal({ ${names.camelCase} }: ${names.pascalCase}DeleterProps) {
32
+ const t = useTranslations();
33
+ const generateUrl = usePageUrlGenerator();
34
+
35
+ if (!${names.camelCase}) return null;
36
+
37
+ return (
38
+ <CommonDeleter
39
+ type={\`${names.pluralKebab}\`}
40
+ deleteFunction={() => ${names.pascalCase}Service.delete({ ${names.camelCase}Id: ${names.camelCase}.id })}
41
+ redirectTo={generateUrl({ page: Modules.${names.pascalCase} })}
42
+ />
43
+ );
44
+ }
45
+
46
+ export default function ${names.pascalCase}Deleter(props: ${names.pascalCase}DeleterProps) {
47
+ return <${names.pascalCase}DeleterInternal {...props} />;
48
+ }
49
+ `;
50
+ }
51
+ //# sourceMappingURL=deleter.template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deleter.template.js","sourceRoot":"","sources":["../../../../../scripts/generate-web-module/templates/components/deleter.template.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAUH,0DAoCC;AA1CD;;;;;GAKG;AACH,SAAgB,uBAAuB,CAAC,IAA0B;IAChE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAEvB,OAAO;;WAEE,KAAK,CAAC,UAAU,gCAAgC,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,SAAS,KAAK,CAAC,UAAU;WAC1G,KAAK,CAAC,UAAU,8BAA8B,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,SAAS,KAAK,CAAC,UAAU;;;;;;;OAO5G,KAAK,CAAC,UAAU;IACnB,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,UAAU;;;WAG7B,KAAK,CAAC,UAAU,qBAAqB,KAAK,CAAC,SAAS,OAAO,KAAK,CAAC,UAAU;;;;SAI7E,KAAK,CAAC,SAAS;;;;gBAIR,KAAK,CAAC,WAAW;8BACH,KAAK,CAAC,UAAU,oBAAoB,KAAK,CAAC,SAAS,OAAO,KAAK,CAAC,SAAS;gDACvD,KAAK,CAAC,UAAU;;;;;0BAKtC,KAAK,CAAC,UAAU,kBAAkB,KAAK,CAAC,UAAU;YAChE,KAAK,CAAC,UAAU;;CAE3B,CAAC;AACF,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Details Template
3
+ *
4
+ * Generates {Module}Details.tsx component for displaying item details.
5
+ */
6
+ import { FrontendTemplateData } from "../../types/template-data.interface";
7
+ /**
8
+ * Generate the details component file content
9
+ *
10
+ * @param data - Frontend template data
11
+ * @returns Generated file content
12
+ */
13
+ export declare function generateDetailsTemplate(data: FrontendTemplateData): string;
14
+ //# sourceMappingURL=details.template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"details.template.d.ts","sourceRoot":"","sources":["../../../../../scripts/generate-web-module/templates/components/details.template.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAG3E;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,CAkC1E"}
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ /**
3
+ * Details Template
4
+ *
5
+ * Generates {Module}Details.tsx component for displaying item details.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.generateDetailsTemplate = generateDetailsTemplate;
9
+ const name_transformer_1 = require("../../transformers/name-transformer");
10
+ /**
11
+ * Generate the details component file content
12
+ *
13
+ * @param data - Frontend template data
14
+ * @returns Generated file content
15
+ */
16
+ function generateDetailsTemplate(data) {
17
+ const { names, fields, relationships, extendsContent } = data;
18
+ const attributeElements = generateAttributeElements(data);
19
+ return `"use client";
20
+
21
+ import { use${names.pascalCase}Context } from "@/features/${data.targetDir}/${names.kebabCase}/contexts/${names.pascalCase}Context";
22
+ import { AttributeElement, ContentTitle, ReactMarkdownContainer } from "@carlonicora/nextjs-jsonapi/components";
23
+ import { useSharedContext } from "@carlonicora/nextjs-jsonapi/contexts";
24
+ import { useTranslations } from "next-intl";
25
+
26
+ function ${names.pascalCase}DetailsInternal() {
27
+ const { ${names.camelCase}, reload${names.pascalCase} } = use${names.pascalCase}Context();
28
+ const t = useTranslations();
29
+ const { title } = useSharedContext();
30
+
31
+ if (!${names.camelCase}) return null;
32
+
33
+ return (
34
+ <div className="flex w-full flex-col gap-y-2">
35
+ <ContentTitle type={title.type} element={title.element} functions={title.functions} />
36
+ ${attributeElements}
37
+ </div>
38
+ );
39
+ }
40
+
41
+ export default function ${names.pascalCase}Details() {
42
+ const { ${names.camelCase} } = use${names.pascalCase}Context();
43
+ if (!${names.camelCase}) return null;
44
+
45
+ return <${names.pascalCase}DetailsInternal />;
46
+ }
47
+ `;
48
+ }
49
+ /**
50
+ * Generate attribute elements for display fields
51
+ */
52
+ function generateAttributeElements(data) {
53
+ const { names, fields, relationships, extendsContent } = data;
54
+ const elements = [];
55
+ // Show abstract if Content-extending
56
+ if (extendsContent) {
57
+ elements.push(` <AttributeElement
58
+ title={t(\`generic.abstract\`)}
59
+ value={<ReactMarkdownContainer size="small" content={${names.camelCase}.abstract} />}
60
+ />`);
61
+ }
62
+ // Add custom fields (excluding name, tldr, abstract, content which are handled elsewhere)
63
+ const displayableFields = fields.filter((f) => !["name", "tldr", "abstract", "content", "id"].includes(f.name));
64
+ displayableFields.forEach((field) => {
65
+ if (field.type === "string") {
66
+ elements.push(` <AttributeElement
67
+ title={t(\`features.${names.camelCase}.fields.${field.name}.label\`)}
68
+ value={${names.camelCase}.${field.name}}
69
+ />`);
70
+ }
71
+ else if (field.type === "boolean") {
72
+ elements.push(` <AttributeElement
73
+ title={t(\`features.${names.camelCase}.fields.${field.name}.label\`)}
74
+ value={${names.camelCase}.${field.name} ? t(\`generic.yes\`) : t(\`generic.no\`)}
75
+ />`);
76
+ }
77
+ else if (field.type === "number") {
78
+ elements.push(` <AttributeElement
79
+ title={t(\`features.${names.camelCase}.fields.${field.name}.label\`)}
80
+ value={${names.camelCase}.${field.name}?.toString()}
81
+ />`);
82
+ }
83
+ });
84
+ // Add relationship displays (basic - can be enhanced manually)
85
+ relationships
86
+ .filter((rel) => rel.variant !== "Author") // Skip author, usually shown in title
87
+ .forEach((rel) => {
88
+ if (rel.single) {
89
+ const propName = (0, name_transformer_1.toCamelCase)(rel.variant || rel.name);
90
+ elements.push(` {${names.camelCase}.${propName} && (
91
+ <AttributeElement
92
+ title={t(\`generic.relationships.${propName}.label\`)}
93
+ value={${names.camelCase}.${propName}.name}
94
+ />
95
+ )}`);
96
+ }
97
+ else {
98
+ const propName = (0, name_transformer_1.pluralize)((0, name_transformer_1.toCamelCase)(rel.name));
99
+ elements.push(` {${names.camelCase}.${propName} && ${names.camelCase}.${propName}.length > 0 && (
100
+ <AttributeElement
101
+ title={t(\`types.${(0, name_transformer_1.pluralize)(rel.name.toLowerCase())}\`, { count: 2 })}
102
+ value={${names.camelCase}.${propName}.map((item) => item.name).join(", ")}
103
+ />
104
+ )}`);
105
+ }
106
+ });
107
+ return elements.join("\n");
108
+ }
109
+ //# sourceMappingURL=details.template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"details.template.js","sourceRoot":"","sources":["../../../../../scripts/generate-web-module/templates/components/details.template.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Editor Template
3
+ *
4
+ * Generates {Module}Editor.tsx dialog-based form component.
5
+ */
6
+ import { FrontendTemplateData } from "../../types/template-data.interface";
7
+ /**
8
+ * Generate the editor component file content
9
+ *
10
+ * @param data - Frontend template data
11
+ * @returns Generated file content
12
+ */
13
+ export declare function generateEditorTemplate(data: FrontendTemplateData): string;
14
+ //# sourceMappingURL=editor.template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editor.template.d.ts","sourceRoot":"","sources":["../../../../../scripts/generate-web-module/templates/components/editor.template.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,oBAAoB,EAAuC,MAAM,qCAAqC,CAAC;AAMhH;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,CAqHzE"}