@kosdev-code/kos-nx-plugin 0.1.0-dev.5053

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 (416) hide show
  1. package/README.md +11 -0
  2. package/generators.json +80 -0
  3. package/migrations.json +86 -0
  4. package/package.json +25 -0
  5. package/src/generators/kos-add-future-to-model/README.md +106 -0
  6. package/src/generators/kos-add-future-to-model/generator.d.ts +5 -0
  7. package/src/generators/kos-add-future-to-model/generator.d.ts.map +1 -0
  8. package/src/generators/kos-add-future-to-model/generator.js +63 -0
  9. package/src/generators/kos-add-future-to-model/generator.js.map +1 -0
  10. package/src/generators/kos-add-future-to-model/lib/model-transformer.d.ts +22 -0
  11. package/src/generators/kos-add-future-to-model/lib/model-transformer.d.ts.map +1 -0
  12. package/src/generators/kos-add-future-to-model/lib/model-transformer.js +313 -0
  13. package/src/generators/kos-add-future-to-model/lib/model-transformer.js.map +1 -0
  14. package/src/generators/kos-add-future-to-model/lib/normalize-options.d.ts +4 -0
  15. package/src/generators/kos-add-future-to-model/lib/normalize-options.d.ts.map +1 -0
  16. package/src/generators/kos-add-future-to-model/lib/normalize-options.js +54 -0
  17. package/src/generators/kos-add-future-to-model/lib/normalize-options.js.map +1 -0
  18. package/src/generators/kos-add-future-to-model/lib/registration-transformer.d.ts +11 -0
  19. package/src/generators/kos-add-future-to-model/lib/registration-transformer.d.ts.map +1 -0
  20. package/src/generators/kos-add-future-to-model/lib/registration-transformer.js +73 -0
  21. package/src/generators/kos-add-future-to-model/lib/registration-transformer.js.map +1 -0
  22. package/src/generators/kos-add-future-to-model/lib/service-transformer.d.ts +13 -0
  23. package/src/generators/kos-add-future-to-model/lib/service-transformer.d.ts.map +1 -0
  24. package/src/generators/kos-add-future-to-model/lib/service-transformer.js +178 -0
  25. package/src/generators/kos-add-future-to-model/lib/service-transformer.js.map +1 -0
  26. package/src/generators/kos-add-future-to-model/schema.d.ts +24 -0
  27. package/src/generators/kos-add-future-to-model/schema.json +59 -0
  28. package/src/generators/kos-companion-model/files/types/index.d.ts.template +11 -0
  29. package/src/generators/kos-companion-model/generator.d.ts +5 -0
  30. package/src/generators/kos-companion-model/generator.d.ts.map +1 -0
  31. package/src/generators/kos-companion-model/generator.js +45 -0
  32. package/src/generators/kos-companion-model/generator.js.map +1 -0
  33. package/src/generators/kos-companion-model/schema.d.ts +7 -0
  34. package/src/generators/kos-companion-model/schema.json +36 -0
  35. package/src/generators/kos-component/README.md +474 -0
  36. package/src/generators/kos-component/control-pour/__nameDashCase__.stories.tsx__template__ +30 -0
  37. package/src/generators/kos-component/control-pour/__nameDashCase__.tsx__template__ +35 -0
  38. package/src/generators/kos-component/control-pour/index.ts__template__ +1 -0
  39. package/src/generators/kos-component/cui/__nameDashCase__.stories.tsx__template__ +30 -0
  40. package/src/generators/kos-component/cui/__nameDashCase__.tsx__template__ +35 -0
  41. package/src/generators/kos-component/cui/index.ts__template__ +1 -0
  42. package/src/generators/kos-component/custom/__nameDashCase__.stories.tsx__template__ +31 -0
  43. package/src/generators/kos-component/custom/__nameDashCase__.tsx__template__ +53 -0
  44. package/src/generators/kos-component/custom/index.ts__template__ +1 -0
  45. package/src/generators/kos-component/files/__nameDashCase__.css__template__ +2 -0
  46. package/src/generators/kos-component/files/__nameDashCase__.tsx__template__ +26 -0
  47. package/src/generators/kos-component/files/index.ts__template__ +1 -0
  48. package/src/generators/kos-component/generator.d.ts +8 -0
  49. package/src/generators/kos-component/generator.d.ts.map +1 -0
  50. package/src/generators/kos-component/generator.js +100 -0
  51. package/src/generators/kos-component/generator.js.map +1 -0
  52. package/src/generators/kos-component/index.d.ts +5 -0
  53. package/src/generators/kos-component/index.d.ts.map +1 -0
  54. package/src/generators/kos-component/index.js +12 -0
  55. package/src/generators/kos-component/index.js.map +1 -0
  56. package/src/generators/kos-component/nav/__nameDashCase__.stories.tsx__template__ +30 -0
  57. package/src/generators/kos-component/nav/__nameDashCase__.tsx__template__ +27 -0
  58. package/src/generators/kos-component/nav/index.ts__template__ +1 -0
  59. package/src/generators/kos-component/plugin-handlers/base.d.ts +47 -0
  60. package/src/generators/kos-component/plugin-handlers/base.d.ts.map +1 -0
  61. package/src/generators/kos-component/plugin-handlers/base.js +42 -0
  62. package/src/generators/kos-component/plugin-handlers/base.js.map +1 -0
  63. package/src/generators/kos-component/plugin-handlers/control-pour-handler.d.ts +9 -0
  64. package/src/generators/kos-component/plugin-handlers/control-pour-handler.d.ts.map +1 -0
  65. package/src/generators/kos-component/plugin-handlers/control-pour-handler.js +31 -0
  66. package/src/generators/kos-component/plugin-handlers/control-pour-handler.js.map +1 -0
  67. package/src/generators/kos-component/plugin-handlers/cui-handler.d.ts +9 -0
  68. package/src/generators/kos-component/plugin-handlers/cui-handler.d.ts.map +1 -0
  69. package/src/generators/kos-component/plugin-handlers/cui-handler.js +31 -0
  70. package/src/generators/kos-component/plugin-handlers/cui-handler.js.map +1 -0
  71. package/src/generators/kos-component/plugin-handlers/custom-handler.d.ts +11 -0
  72. package/src/generators/kos-component/plugin-handlers/custom-handler.d.ts.map +1 -0
  73. package/src/generators/kos-component/plugin-handlers/custom-handler.js +45 -0
  74. package/src/generators/kos-component/plugin-handlers/custom-handler.js.map +1 -0
  75. package/src/generators/kos-component/plugin-handlers/default-handler.d.ts +14 -0
  76. package/src/generators/kos-component/plugin-handlers/default-handler.d.ts.map +1 -0
  77. package/src/generators/kos-component/plugin-handlers/default-handler.js +37 -0
  78. package/src/generators/kos-component/plugin-handlers/default-handler.js.map +1 -0
  79. package/src/generators/kos-component/plugin-handlers/factory.d.ts +10 -0
  80. package/src/generators/kos-component/plugin-handlers/factory.d.ts.map +1 -0
  81. package/src/generators/kos-component/plugin-handlers/factory.js +44 -0
  82. package/src/generators/kos-component/plugin-handlers/factory.js.map +1 -0
  83. package/src/generators/kos-component/plugin-handlers/nav-handler.d.ts +9 -0
  84. package/src/generators/kos-component/plugin-handlers/nav-handler.d.ts.map +1 -0
  85. package/src/generators/kos-component/plugin-handlers/nav-handler.js +32 -0
  86. package/src/generators/kos-component/plugin-handlers/nav-handler.js.map +1 -0
  87. package/src/generators/kos-component/plugin-handlers/setting-handler.d.ts +9 -0
  88. package/src/generators/kos-component/plugin-handlers/setting-handler.d.ts.map +1 -0
  89. package/src/generators/kos-component/plugin-handlers/setting-handler.js +32 -0
  90. package/src/generators/kos-component/plugin-handlers/setting-handler.js.map +1 -0
  91. package/src/generators/kos-component/plugin-handlers/setup-handler.d.ts +9 -0
  92. package/src/generators/kos-component/plugin-handlers/setup-handler.d.ts.map +1 -0
  93. package/src/generators/kos-component/plugin-handlers/setup-handler.js +32 -0
  94. package/src/generators/kos-component/plugin-handlers/setup-handler.js.map +1 -0
  95. package/src/generators/kos-component/plugin-handlers/trouble-action-handler.d.ts +9 -0
  96. package/src/generators/kos-component/plugin-handlers/trouble-action-handler.d.ts.map +1 -0
  97. package/src/generators/kos-component/plugin-handlers/trouble-action-handler.js +32 -0
  98. package/src/generators/kos-component/plugin-handlers/trouble-action-handler.js.map +1 -0
  99. package/src/generators/kos-component/plugin-handlers/utility-handler.d.ts +9 -0
  100. package/src/generators/kos-component/plugin-handlers/utility-handler.d.ts.map +1 -0
  101. package/src/generators/kos-component/plugin-handlers/utility-handler.js +32 -0
  102. package/src/generators/kos-component/plugin-handlers/utility-handler.js.map +1 -0
  103. package/src/generators/kos-component/schema.d.ts +21 -0
  104. package/src/generators/kos-component/schema.json +100 -0
  105. package/src/generators/kos-component/setting/__nameDashCase__.stories.tsx__template__ +30 -0
  106. package/src/generators/kos-component/setting/__nameDashCase__.tsx__template__ +27 -0
  107. package/src/generators/kos-component/setting/index.ts__template__ +1 -0
  108. package/src/generators/kos-component/setup/__nameDashCase__.stories.tsx__template__ +30 -0
  109. package/src/generators/kos-component/setup/__nameDashCase__.tsx__template__ +33 -0
  110. package/src/generators/kos-component/setup/index.ts__template__ +1 -0
  111. package/src/generators/kos-component/trouble-action/__nameDashCase__.stories.tsx__template__ +30 -0
  112. package/src/generators/kos-component/trouble-action/__nameDashCase__.tsx__template__ +58 -0
  113. package/src/generators/kos-component/trouble-action/index.ts__template__ +1 -0
  114. package/src/generators/kos-component/types.d.ts +55 -0
  115. package/src/generators/kos-component/types.d.ts.map +1 -0
  116. package/src/generators/kos-component/types.js +48 -0
  117. package/src/generators/kos-component/types.js.map +1 -0
  118. package/src/generators/kos-component/utility/__nameDashCase__.stories.tsx__template__ +30 -0
  119. package/src/generators/kos-component/utility/__nameDashCase__.tsx__template__ +47 -0
  120. package/src/generators/kos-component/utility/index.ts__template__ +1 -0
  121. package/src/generators/kos-component/utils/file-generator.d.ts +7 -0
  122. package/src/generators/kos-component/utils/file-generator.d.ts.map +1 -0
  123. package/src/generators/kos-component/utils/file-generator.js +26 -0
  124. package/src/generators/kos-component/utils/file-generator.js.map +1 -0
  125. package/src/generators/kos-component/utils/kos-config-builder.d.ts +27 -0
  126. package/src/generators/kos-component/utils/kos-config-builder.d.ts.map +1 -0
  127. package/src/generators/kos-component/utils/kos-config-builder.js +82 -0
  128. package/src/generators/kos-component/utils/kos-config-builder.js.map +1 -0
  129. package/src/generators/kos-component/utils/localization.d.ts +7 -0
  130. package/src/generators/kos-component/utils/localization.d.ts.map +1 -0
  131. package/src/generators/kos-component/utils/localization.js +29 -0
  132. package/src/generators/kos-component/utils/localization.js.map +1 -0
  133. package/src/generators/kos-component/utils/validation.d.ts +18 -0
  134. package/src/generators/kos-component/utils/validation.d.ts.map +1 -0
  135. package/src/generators/kos-component/utils/validation.js +65 -0
  136. package/src/generators/kos-component/utils/validation.js.map +1 -0
  137. package/src/generators/kos-container-model/files/model/__nameDashCase__-model.ts.template +68 -0
  138. package/src/generators/kos-container-model/files/model/index.ts.template +13 -0
  139. package/src/generators/kos-container-model/files/model/types/index.d.ts.template +24 -0
  140. package/src/generators/kos-container-model/files/services/__modelNameDashCase__-services.ts.template +22 -0
  141. package/src/generators/kos-container-model/files/services/index.ts.template +1 -0
  142. package/src/generators/kos-container-model/generator.d.ts +5 -0
  143. package/src/generators/kos-container-model/generator.d.ts.map +1 -0
  144. package/src/generators/kos-container-model/generator.js +74 -0
  145. package/src/generators/kos-container-model/generator.js.map +1 -0
  146. package/src/generators/kos-container-model/lib/normalize-options.d.ts +4 -0
  147. package/src/generators/kos-container-model/lib/normalize-options.d.ts.map +1 -0
  148. package/src/generators/kos-container-model/lib/normalize-options.js +32 -0
  149. package/src/generators/kos-container-model/lib/normalize-options.js.map +1 -0
  150. package/src/generators/kos-container-model/lib/normalize-value.d.ts +7 -0
  151. package/src/generators/kos-container-model/lib/normalize-value.d.ts.map +1 -0
  152. package/src/generators/kos-container-model/lib/normalize-value.js +28 -0
  153. package/src/generators/kos-container-model/lib/normalize-value.js.map +1 -0
  154. package/src/generators/kos-container-model/lib/utils/name-utils.d.ts +6 -0
  155. package/src/generators/kos-container-model/lib/utils/name-utils.d.ts.map +1 -0
  156. package/src/generators/kos-container-model/lib/utils/name-utils.js +53 -0
  157. package/src/generators/kos-container-model/lib/utils/name-utils.js.map +1 -0
  158. package/src/generators/kos-container-model/lib/utils/ts-visitor.d.ts +8 -0
  159. package/src/generators/kos-container-model/lib/utils/ts-visitor.d.ts.map +1 -0
  160. package/src/generators/kos-container-model/lib/utils/ts-visitor.js +122 -0
  161. package/src/generators/kos-container-model/lib/utils/ts-visitor.js.map +1 -0
  162. package/src/generators/kos-container-model/schema.d.ts +35 -0
  163. package/src/generators/kos-container-model/schema.json +50 -0
  164. package/src/generators/kos-content-project/files/assets/.gitkeep +2 -0
  165. package/src/generators/kos-content-project/files/vite.config.ts.template +48 -0
  166. package/src/generators/kos-content-project/generator.d.ts +5 -0
  167. package/src/generators/kos-content-project/generator.d.ts.map +1 -0
  168. package/src/generators/kos-content-project/generator.js +55 -0
  169. package/src/generators/kos-content-project/generator.js.map +1 -0
  170. package/src/generators/kos-content-project/schema.d.ts +3 -0
  171. package/src/generators/kos-content-project/schema.json +18 -0
  172. package/src/generators/kos-context/files/__nameDashCase__-provider.tsx.template +40 -0
  173. package/src/generators/kos-context/files/index.ts.template +1 -0
  174. package/src/generators/kos-context/generator.d.ts +5 -0
  175. package/src/generators/kos-context/generator.d.ts.map +1 -0
  176. package/src/generators/kos-context/generator.js +56 -0
  177. package/src/generators/kos-context/generator.js.map +1 -0
  178. package/src/generators/kos-context/schema.d.ts +14 -0
  179. package/src/generators/kos-context/schema.json +36 -0
  180. package/src/generators/kos-hook/files/index.ts.template +2 -0
  181. package/src/generators/kos-hook/files/use-__nameDashCase__.ts.template +13 -0
  182. package/src/generators/kos-hook/files/with-__nameDashCase__.tsx.template +28 -0
  183. package/src/generators/kos-hook/generator.d.ts +5 -0
  184. package/src/generators/kos-hook/generator.d.ts.map +1 -0
  185. package/src/generators/kos-hook/generator.js +56 -0
  186. package/src/generators/kos-hook/generator.js.map +1 -0
  187. package/src/generators/kos-hook/schema.d.ts +21 -0
  188. package/src/generators/kos-hook/schema.json +36 -0
  189. package/src/generators/kos-i18n-project/files/.kos.json.template +8 -0
  190. package/src/generators/kos-i18n-project/files/src/assets/locales/en/__nameDashCase__.json.template +3 -0
  191. package/src/generators/kos-i18n-project/generator.d.ts +5 -0
  192. package/src/generators/kos-i18n-project/generator.d.ts.map +1 -0
  193. package/src/generators/kos-i18n-project/generator.js +82 -0
  194. package/src/generators/kos-i18n-project/generator.js.map +1 -0
  195. package/src/generators/kos-i18n-project/schema.d.ts +3 -0
  196. package/src/generators/kos-i18n-project/schema.json +18 -0
  197. package/src/generators/kos-init/generator.d.ts +5 -0
  198. package/src/generators/kos-init/generator.d.ts.map +1 -0
  199. package/src/generators/kos-init/generator.js +43 -0
  200. package/src/generators/kos-init/generator.js.map +1 -0
  201. package/src/generators/kos-init/schema.d.ts +5 -0
  202. package/src/generators/kos-init/schema.json +29 -0
  203. package/src/generators/kos-model/files/model/__nameDashCase__-model.ts.template +135 -0
  204. package/src/generators/kos-model/files/model/index.ts__template__ +9 -0
  205. package/src/generators/kos-model/files/model/types/index.d.ts.template +7 -0
  206. package/src/generators/kos-model/files/services/__nameDashCase__-services.ts.template +58 -0
  207. package/src/generators/kos-model/files/services/index.ts.template +1 -0
  208. package/src/generators/kos-model/generator.d.ts +5 -0
  209. package/src/generators/kos-model/generator.d.ts.map +1 -0
  210. package/src/generators/kos-model/generator.js +117 -0
  211. package/src/generators/kos-model/generator.js.map +1 -0
  212. package/src/generators/kos-model/lib/normalize-options.d.ts +4 -0
  213. package/src/generators/kos-model/lib/normalize-options.d.ts.map +1 -0
  214. package/src/generators/kos-model/lib/normalize-options.js +35 -0
  215. package/src/generators/kos-model/lib/normalize-options.js.map +1 -0
  216. package/src/generators/kos-model/lib/normalize-value.d.ts +7 -0
  217. package/src/generators/kos-model/lib/normalize-value.d.ts.map +1 -0
  218. package/src/generators/kos-model/lib/normalize-value.js +28 -0
  219. package/src/generators/kos-model/lib/normalize-value.js.map +1 -0
  220. package/src/generators/kos-model/lib/utils/name-utils.d.ts +6 -0
  221. package/src/generators/kos-model/lib/utils/name-utils.d.ts.map +1 -0
  222. package/src/generators/kos-model/lib/utils/name-utils.js +42 -0
  223. package/src/generators/kos-model/lib/utils/name-utils.js.map +1 -0
  224. package/src/generators/kos-model/lib/utils/ts-visitor.d.ts +8 -0
  225. package/src/generators/kos-model/lib/utils/ts-visitor.d.ts.map +1 -0
  226. package/src/generators/kos-model/lib/utils/ts-visitor.js +126 -0
  227. package/src/generators/kos-model/lib/utils/ts-visitor.js.map +1 -0
  228. package/src/generators/kos-model/schema.d.ts +44 -0
  229. package/src/generators/kos-model/schema.json +137 -0
  230. package/src/generators/kos-plugin-project/files/.env.template +7 -0
  231. package/src/generators/kos-plugin-project/files/.kos.json.template +41 -0
  232. package/src/generators/kos-plugin-project/files/.storybook/main.ts.template +45 -0
  233. package/src/generators/kos-plugin-project/files/.storybook/preview.tsx.template +80 -0
  234. package/src/generators/kos-plugin-project/files/.storybook/registration.ts.template +40 -0
  235. package/src/generators/kos-plugin-project/files/index.html.template +15 -0
  236. package/src/generators/kos-plugin-project/files/module-federation.config.ts.template +1 -0
  237. package/src/generators/kos-plugin-project/files/src/app/app.css.template +2 -0
  238. package/src/generators/kos-plugin-project/files/src/app/app.tsx.template +54 -0
  239. package/src/generators/kos-plugin-project/files/src/app/components/main-view/index.ts.template +1 -0
  240. package/src/generators/kos-plugin-project/files/src/app/components/main-view/main-view.tsx.template +14 -0
  241. package/src/generators/kos-plugin-project/files/src/app/tools/experience-resolver.ts.template +10 -0
  242. package/src/generators/kos-plugin-project/files/src/app/tools/index.ts.template +2 -0
  243. package/src/generators/kos-plugin-project/files/src/app/tools/kOSJSON.ts.template +1 -0
  244. package/src/generators/kos-plugin-project/files/src/assets/kos-logo.svg.template +4 -0
  245. package/src/generators/kos-plugin-project/files/src/assets/locales/en/__nameDashCase__.json.template +3 -0
  246. package/src/generators/kos-plugin-project/files/src/registration.ts.template +13 -0
  247. package/src/generators/kos-plugin-project/files/webpack.config.prod.ts.template +24 -0
  248. package/src/generators/kos-plugin-project/files/webpack.config.ts.template +7 -0
  249. package/src/generators/kos-plugin-project/generator.d.ts +5 -0
  250. package/src/generators/kos-plugin-project/generator.d.ts.map +1 -0
  251. package/src/generators/kos-plugin-project/generator.js +108 -0
  252. package/src/generators/kos-plugin-project/generator.js.map +1 -0
  253. package/src/generators/kos-plugin-project/schema.d.ts +5 -0
  254. package/src/generators/kos-plugin-project/schema.json +33 -0
  255. package/src/generators/kos-splash-project/files/project/.kos.json.template +8 -0
  256. package/src/generators/kos-splash-project/files/project/project.json.template +17 -0
  257. package/src/generators/kos-splash-project/files/project/src/start.html.template +13 -0
  258. package/src/generators/kos-splash-project/files/tools/splashtool.mjs.template +247 -0
  259. package/src/generators/kos-splash-project/generator.d.ts +5 -0
  260. package/src/generators/kos-splash-project/generator.d.ts.map +1 -0
  261. package/src/generators/kos-splash-project/generator.js +17 -0
  262. package/src/generators/kos-splash-project/generator.js.map +1 -0
  263. package/src/generators/kos-splash-project/schema.d.ts +3 -0
  264. package/src/generators/kos-splash-project/schema.json +18 -0
  265. package/src/generators/kos-theme-project/files/.kos.json.template +8 -0
  266. package/src/generators/kos-theme-project/files/theme/component.css.template +2 -0
  267. package/src/generators/kos-theme-project/files/theme/generic.css.template +2 -0
  268. package/src/generators/kos-theme-project/files/theme/semantic.css.template +2 -0
  269. package/src/generators/kos-theme-project/files/theme/theme-overlay.css.template +7 -0
  270. package/src/generators/kos-theme-project/files/vite.config.ts.template +48 -0
  271. package/src/generators/kos-theme-project/generator.d.ts +5 -0
  272. package/src/generators/kos-theme-project/generator.d.ts.map +1 -0
  273. package/src/generators/kos-theme-project/generator.js +54 -0
  274. package/src/generators/kos-theme-project/generator.js.map +1 -0
  275. package/src/generators/kos-theme-project/schema.d.ts +3 -0
  276. package/src/generators/kos-theme-project/schema.json +18 -0
  277. package/src/generators/kos-ui-project/files/.env.template +7 -0
  278. package/src/generators/kos-ui-project/files/.kos.json.template +8 -0
  279. package/src/generators/kos-ui-project/files/bootstrap.tsx.template +13 -0
  280. package/src/generators/kos-ui-project/files/main.ts.template +18 -0
  281. package/src/generators/kos-ui-project/files/src/app/app.css.template +129 -0
  282. package/src/generators/kos-ui-project/files/src/app/app.tsx.template +45 -0
  283. package/src/generators/kos-ui-project/files/src/app/components/main-view/index.ts.template +1 -0
  284. package/src/generators/kos-ui-project/files/src/app/components/main-view/main-view.tsx.template +79 -0
  285. package/src/generators/kos-ui-project/files/src/app/registration.ts.template +17 -0
  286. package/src/generators/kos-ui-project/files/src/assets/graphics.png.template +0 -0
  287. package/src/generators/kos-ui-project/files/src/assets/kos-logo.svg.template +4 -0
  288. package/src/generators/kos-ui-project/files/src/assets/locales/en/__nameDashCase__.json.template +4 -0
  289. package/src/generators/kos-ui-project/files/src/bootstrap.tsx.template +13 -0
  290. package/src/generators/kos-ui-project/files/src/index.html.template +14 -0
  291. package/src/generators/kos-ui-project/files/webpack.config.ts.template +45 -0
  292. package/src/generators/kos-ui-project/generator.d.ts +5 -0
  293. package/src/generators/kos-ui-project/generator.d.ts.map +1 -0
  294. package/src/generators/kos-ui-project/generator.js +135 -0
  295. package/src/generators/kos-ui-project/generator.js.map +1 -0
  296. package/src/generators/kos-ui-project/internal/vite.config.ts.template +49 -0
  297. package/src/generators/kos-ui-project/schema.d.ts +7 -0
  298. package/src/generators/kos-ui-project/schema.json +34 -0
  299. package/src/generators/preset/api/utils/service.ts.template +20 -0
  300. package/src/generators/preset/files/.env.template +7 -0
  301. package/src/generators/preset/files/.kos.json.template +8 -0
  302. package/src/generators/preset/files/src/app/app.css.template +128 -0
  303. package/src/generators/preset/files/src/app/app.tsx.template +38 -0
  304. package/src/generators/preset/files/src/app/components/main-view/index.ts.template +1 -0
  305. package/src/generators/preset/files/src/app/components/main-view/main-view.tsx.template +79 -0
  306. package/src/generators/preset/files/src/app/registration.ts.template +20 -0
  307. package/src/generators/preset/files/src/assets/graphics.png +0 -0
  308. package/src/generators/preset/files/src/assets/kos-logo.svg.template +30 -0
  309. package/src/generators/preset/files/src/assets/locales/en/__nameDashCase__.json.template +4 -0
  310. package/src/generators/preset/files/src/bootstrap.tsx.template +13 -0
  311. package/src/generators/preset/files/src/index.html.template +15 -0
  312. package/src/generators/preset/files/src/main.ts.template +6 -0
  313. package/src/generators/preset/files/webpack.config.ts.template +45 -0
  314. package/src/generators/preset/generator.d.ts +5 -0
  315. package/src/generators/preset/generator.d.ts.map +1 -0
  316. package/src/generators/preset/generator.js +275 -0
  317. package/src/generators/preset/generator.js.map +1 -0
  318. package/src/generators/preset/local/.env.local.template +5 -0
  319. package/src/generators/preset/local/README.md.template +88 -0
  320. package/src/generators/preset/model/.kos.json.template +15 -0
  321. package/src/generators/preset/model-components/.kos.json.template +8 -0
  322. package/src/generators/preset/root/.kos.json.template +10 -0
  323. package/src/generators/preset/schema.d.ts +8 -0
  324. package/src/generators/preset/schema.json +14 -0
  325. package/src/generators/preset/tools/tools/scripts/archiver.js.template +79 -0
  326. package/src/generators/preset/tools/tools/scripts/descriptor.mjs.template +114 -0
  327. package/src/generators/preset/tools/tools/scripts/generate-api-types.mjs.template +25 -0
  328. package/src/generators/preset/tools/tools/scripts/kabtool.mjs.template +87 -0
  329. package/src/generators/preset/tools/tools/scripts/update.mjs.template +88 -0
  330. package/src/generators/preset/tools/tools/tsconfig.tools.json.template +12 -0
  331. package/src/index.d.ts +1 -0
  332. package/src/index.d.ts.map +1 -0
  333. package/src/index.js +2 -0
  334. package/src/index.js.map +1 -0
  335. package/src/migrations/add-overrides/add-overrides.d.ts +3 -0
  336. package/src/migrations/add-overrides/add-overrides.d.ts.map +1 -0
  337. package/src/migrations/add-overrides/add-overrides.js +85 -0
  338. package/src/migrations/add-overrides/add-overrides.js.map +1 -0
  339. package/src/migrations/add-overrides/files/.env.local__template__ +5 -0
  340. package/src/migrations/add-overrides/files/tools/scripts/archiver.js__template__ +79 -0
  341. package/src/migrations/add-overrides/files/tools/scripts/kabtool.mjs__template__ +85 -0
  342. package/src/migrations/add-overrides/projectFiles/.kos.json__template__ +5 -0
  343. package/src/migrations/add-update-tool/files/tools/scripts/update.mjs.template +67 -0
  344. package/src/migrations/add-update-tool/migrate.d.ts +3 -0
  345. package/src/migrations/add-update-tool/migrate.d.ts.map +1 -0
  346. package/src/migrations/add-update-tool/migrate.js +24 -0
  347. package/src/migrations/add-update-tool/migrate.js.map +1 -0
  348. package/src/migrations/cms-sdk/cms-sdk.d.ts +3 -0
  349. package/src/migrations/cms-sdk/cms-sdk.d.ts.map +1 -0
  350. package/src/migrations/cms-sdk/cms-sdk.js +22 -0
  351. package/src/migrations/cms-sdk/cms-sdk.js.map +1 -0
  352. package/src/migrations/consolidate-sdk/api/utils/service.ts.template +15 -0
  353. package/src/migrations/consolidate-sdk/consolidate-sdk.d.ts +3 -0
  354. package/src/migrations/consolidate-sdk/consolidate-sdk.d.ts.map +1 -0
  355. package/src/migrations/consolidate-sdk/consolidate-sdk.js +100 -0
  356. package/src/migrations/consolidate-sdk/consolidate-sdk.js.map +1 -0
  357. package/src/migrations/consolidate-sdk/files/tools/scripts/generate-api-types.mjs.template +25 -0
  358. package/src/migrations/default-projects/default-projects.d.ts +3 -0
  359. package/src/migrations/default-projects/default-projects.d.ts.map +1 -0
  360. package/src/migrations/default-projects/default-projects.js +45 -0
  361. package/src/migrations/default-projects/default-projects.js.map +1 -0
  362. package/src/migrations/default-projects/files/index.ts__template__ +2 -0
  363. package/src/migrations/freestyle-sdk/freestyle-sdk.d.ts +3 -0
  364. package/src/migrations/freestyle-sdk/freestyle-sdk.d.ts.map +1 -0
  365. package/src/migrations/freestyle-sdk/freestyle-sdk.js +18 -0
  366. package/src/migrations/freestyle-sdk/freestyle-sdk.js.map +1 -0
  367. package/src/migrations/kabtool-env/migrate.d.ts +3 -0
  368. package/src/migrations/kabtool-env/migrate.d.ts.map +1 -0
  369. package/src/migrations/kabtool-env/migrate.js +11 -0
  370. package/src/migrations/kabtool-env/migrate.js.map +1 -0
  371. package/src/migrations/migrate-extensions/migrate-extensions.d.ts +3 -0
  372. package/src/migrations/migrate-extensions/migrate-extensions.d.ts.map +1 -0
  373. package/src/migrations/migrate-extensions/migrate-extensions.js +77 -0
  374. package/src/migrations/migrate-extensions/migrate-extensions.js.map +1 -0
  375. package/src/migrations/translation-format/translation-format.d.ts +3 -0
  376. package/src/migrations/translation-format/translation-format.d.ts.map +1 -0
  377. package/src/migrations/translation-format/translation-format.js +56 -0
  378. package/src/migrations/translation-format/translation-format.js.map +1 -0
  379. package/src/migrations/translations/add-descriptor.d.ts +3 -0
  380. package/src/migrations/translations/add-descriptor.d.ts.map +1 -0
  381. package/src/migrations/translations/add-descriptor.js +48 -0
  382. package/src/migrations/translations/add-descriptor.js.map +1 -0
  383. package/src/migrations/translations/files/tools/scripts/descriptor.mjs.template +114 -0
  384. package/src/migrations/update-kabtool/files/tools/scripts/kabtool.mjs.template +87 -0
  385. package/src/migrations/update-kabtool/update-kabtool.d.ts +3 -0
  386. package/src/migrations/update-kabtool/update-kabtool.d.ts.map +1 -0
  387. package/src/migrations/update-kabtool/update-kabtool.js +11 -0
  388. package/src/migrations/update-kabtool/update-kabtool.js.map +1 -0
  389. package/src/migrations/update-sdk/update-sdk.d.ts +3 -0
  390. package/src/migrations/update-sdk/update-sdk.d.ts.map +1 -0
  391. package/src/migrations/update-sdk/update-sdk.js +17 -0
  392. package/src/migrations/update-sdk/update-sdk.js.map +1 -0
  393. package/src/migrations/update-sdk-2.0/update.d.ts +3 -0
  394. package/src/migrations/update-sdk-2.0/update.d.ts.map +1 -0
  395. package/src/migrations/update-sdk-2.0/update.js +37 -0
  396. package/src/migrations/update-sdk-2.0/update.js.map +1 -0
  397. package/src/utils/java-home.d.ts +2 -0
  398. package/src/utils/java-home.d.ts.map +1 -0
  399. package/src/utils/java-home.js +44 -0
  400. package/src/utils/java-home.js.map +1 -0
  401. package/src/utils/logger.d.ts +9 -0
  402. package/src/utils/logger.d.ts.map +1 -0
  403. package/src/utils/logger.js +46 -0
  404. package/src/utils/logger.js.map +1 -0
  405. package/src/utils/name-utils.d.ts +6 -0
  406. package/src/utils/name-utils.d.ts.map +1 -0
  407. package/src/utils/name-utils.js +60 -0
  408. package/src/utils/name-utils.js.map +1 -0
  409. package/src/utils/normalize-value.d.ts +7 -0
  410. package/src/utils/normalize-value.d.ts.map +1 -0
  411. package/src/utils/normalize-value.js +33 -0
  412. package/src/utils/normalize-value.js.map +1 -0
  413. package/src/utils/project-utils.d.ts +36 -0
  414. package/src/utils/project-utils.d.ts.map +1 -0
  415. package/src/utils/project-utils.js +102 -0
  416. package/src/utils/project-utils.js.map +1 -0
@@ -0,0 +1,474 @@
1
+ # Adding New Plugin Component Types
2
+
3
+ This guide explains how to extend the KOS component generator to support new plugin types for KOS UI applications.
4
+
5
+ ## Overview
6
+
7
+ The KOS component generator uses a modular architecture where each plugin type is handled by a dedicated handler class. This makes it easy to add new plugin types without modifying the core generator logic.
8
+
9
+ ## Architecture
10
+
11
+ ```
12
+ kos-component/
13
+ ├── generator.ts # Main generator (orchestrates the process)
14
+ ├── types.ts # Type definitions and constants
15
+ ├── plugin-handlers/ # Plugin-specific logic
16
+ │ ├── base.ts # Base handler interface and common functionality
17
+ │ ├── [type]-handler.ts # Individual plugin handlers
18
+ │ └── factory.ts # Handler factory and registry
19
+ └── utils/ # Shared utilities
20
+ ├── file-generator.ts # File generation logic
21
+ ├── localization.ts # i18n updates
22
+ ├── kos-config-builder.ts # .kos.json configuration builder
23
+ └── validation.ts # Input validation
24
+ ```
25
+
26
+ ## Step-by-Step Guide
27
+
28
+ ### 1. Define Plugin Type Constants
29
+
30
+ Add your new plugin type to `types.ts`:
31
+
32
+ ```typescript
33
+ // types.ts
34
+ export const PLUGIN_TYPES = {
35
+ // ... existing types
36
+ MY_NEW_PLUGIN: "myNewPlugin",
37
+ } as const;
38
+
39
+ export const CONTRIBUTION_TYPE_MAP: Record<string, string> = {
40
+ // ... existing mappings
41
+ [PLUGIN_TYPES.MY_NEW_PLUGIN]: "my-new-contribution",
42
+ };
43
+
44
+ // Add to localized types if your plugin needs i18n
45
+ export const LOCALIZED_PLUGIN_TYPES: ReadonlySet<string> = new Set([
46
+ // ... existing types
47
+ PLUGIN_TYPES.MY_NEW_PLUGIN, // if localization is needed
48
+ ]);
49
+ ```
50
+
51
+ ### 2. Create Plugin Handler
52
+
53
+ Create a new handler file `plugin-handlers/my-new-plugin-handler.ts`:
54
+
55
+ ```typescript
56
+ import { NormalizedOptions, PluginConfiguration, PLUGIN_TYPES } from "../types";
57
+ import { BasePluginHandler } from "./base";
58
+
59
+ export class MyNewPluginHandler extends BasePluginHandler {
60
+ protected pluginType = PLUGIN_TYPES.MY_NEW_PLUGIN;
61
+ protected contributionKey = "my-new-contribution";
62
+ protected requiresI18n = true; // or false if no localization needed
63
+
64
+ createConfiguration(options: NormalizedOptions): PluginConfiguration {
65
+ const configPrefix = this.getConfigPrefix(options);
66
+ const experienceId = `${configPrefix}.myNewPlugin.experience`;
67
+
68
+ const contribution = {
69
+ id: `${configPrefix}.myNewPlugin`,
70
+ title: `${configPrefix}.myNewPlugin.title`,
71
+ namespace: options.appProject,
72
+ // Add plugin-specific properties here
73
+ myCustomProperty: options.nameCamelCase,
74
+ experienceId,
75
+ };
76
+
77
+ const experience = this.createExperience(options, experienceId);
78
+
79
+ return {
80
+ contributions: {
81
+ myNewContributions: [contribution], // Use appropriate contribution key
82
+ },
83
+ experiences: {
84
+ [experienceId]: experience,
85
+ },
86
+ };
87
+ }
88
+ }
89
+ ```
90
+
91
+ #### Handler Customization Options
92
+
93
+ **Override template path** if your plugin uses custom templates:
94
+
95
+ ```typescript
96
+ getTemplatePath(): string {
97
+ return 'my-custom-template-folder';
98
+ }
99
+ ```
100
+
101
+ **Custom component path** if needed:
102
+
103
+ ```typescript
104
+ protected getComponentPath(options: NormalizedOptions): string {
105
+ return `${options.appDirectory}/custom-path/${options.nameDashCase}/${options.nameDashCase}.tsx`;
106
+ }
107
+ ```
108
+
109
+ ### 3. Register Handler in Factory
110
+
111
+ Update `plugin-handlers/factory.ts`:
112
+
113
+ ```typescript
114
+ // Add import
115
+ import { MyNewPluginHandler } from './my-new-plugin-handler';
116
+
117
+ // Add to handlers map
118
+ private static handlers: Map<string, new () => PluginHandler> = new Map<
119
+ string,
120
+ new () => PluginHandler
121
+ >([
122
+ // ... existing handlers
123
+ [PLUGIN_TYPES.MY_NEW_PLUGIN, MyNewPluginHandler],
124
+ ]);
125
+ ```
126
+
127
+ ### 4. Register CLI Command (Required for kosui plugin:\* syntax)
128
+
129
+ To make your plugin available via `kosui plugin:myNewPlugin`, update the CLI metadata in `/packages/sdk/kos-ui-cli/src/lib/generators/plugin/index.mjs`:
130
+
131
+ ```javascript
132
+ export const metadata = [
133
+ // ... existing metadata
134
+ {
135
+ key: "plugin:myNewPlugin",
136
+ name: "KOS UI Plugin My New Plugin",
137
+ namedArguments: {
138
+ name: "componentName",
139
+ componentName: "componentName",
140
+ project: "componentProject",
141
+ componentProject: "componentProject",
142
+ // Add any plugin-specific arguments
143
+ customOption: "customOption",
144
+ },
145
+ },
146
+ ];
147
+
148
+ // Add to pluginTypes array
149
+ const pluginTypes = [
150
+ // ... existing types
151
+ { key: "plugin:myNewPlugin", name: "myNewPlugin" },
152
+ ];
153
+ ```
154
+
155
+ **Important:** The `name` field in pluginTypes must match the `pluginType` value used in the NX generator!
156
+
157
+ ### 5. Create Template Files (Optional)
158
+
159
+ If your plugin needs custom templates, create a template directory:
160
+
161
+ ```
162
+ kos-component/
163
+ └── my-new-contribution/ # Template folder (matches contributionKey)
164
+ ├── __nameDashCase__.tsx__template__
165
+ ├── __nameDashCase__.stories.tsx__template__
166
+ ├── index.ts__template__
167
+ └── __nameDashCase__.css__template__ (optional)
168
+ ```
169
+
170
+ **Component Template** (`__nameDashCase__.tsx__template__`):
171
+
172
+ ```typescript
173
+ import React from 'react';
174
+
175
+ interface <%= namePascalCase %>Props {
176
+ // Add your plugin-specific props
177
+ }
178
+
179
+ export const <%= namePascalCase %>: React.FC<<%= namePascalCase %>Props> = (props) => {
180
+ return (
181
+ <div className="<%= nameDashCase %>">
182
+ <h2><%= namePascalCase %> Plugin</h2>
183
+ {/* Your plugin-specific UI */}
184
+ </div>
185
+ );
186
+ };
187
+
188
+ export default <%= namePascalCase %>;
189
+ ```
190
+
191
+ **Storybook Template** (`__nameDashCase__.stories.tsx__template__`):
192
+
193
+ ```typescript
194
+ /**
195
+ * Note: The plugin project Storybook configuration requires that the Studio
196
+ * Simulator is running in order to retrieve model data...
197
+ */
198
+ import { MyNewPluginStoryContainer } from "@kosdev-code/kos-ui-plugin-dev";
199
+ import type { Meta, StoryObj } from "@storybook/react";
200
+ import { <%= namePascalCase %> } from "./<%= nameDashCase %>";
201
+
202
+ const meta: Meta<typeof <%= namePascalCase %>> = {
203
+ args: {},
204
+ component: <%= namePascalCase %>,
205
+ decorators: [
206
+ (Story, context) => (
207
+ <MyNewPluginStoryContainer>
208
+ <Story args={{ ...context.args }} />
209
+ </MyNewPluginStoryContainer>
210
+ ),
211
+ ],
212
+ tags: ["!autodocs"],
213
+ title: "my-new-plugin/<%= namePascalCase %>",
214
+ };
215
+
216
+ export default meta;
217
+
218
+ type Story = StoryObj<typeof <%= namePascalCase %>>;
219
+
220
+ export const Default: Story = {
221
+ render: (props) => <<%= namePascalCase %> {...props} />,
222
+ };
223
+ ```
224
+
225
+ **Available Story Containers:**
226
+
227
+ - `CUIStoryContainer` - For CUI plugins
228
+ - `UtilityStoryContainer` - For utility plugins
229
+ - `SetupStoryContainer` - For setup plugins
230
+ - `SettingStoryContainer` - For setting plugins
231
+ - `NavStoryContainer` - For navigation plugins
232
+ - `ControlPourStoryContainer` - For control pour plugins
233
+ - `TroubleActionStoryContainer` - For trouble action plugins
234
+
235
+ ### 6. Add Schema Support (Optional)
236
+
237
+ If your plugin needs additional CLI parameters, update `schema.json`:
238
+
239
+ ```json
240
+ {
241
+ "properties": {
242
+ "myCustomOption": {
243
+ "type": "string",
244
+ "description": "Custom option for my new plugin type"
245
+ }
246
+ }
247
+ }
248
+ ```
249
+
250
+ And update `schema.d.ts`:
251
+
252
+ ```typescript
253
+ export interface KosComponentGeneratorSchema {
254
+ // ... existing properties
255
+ myCustomOption?: string;
256
+ }
257
+ ```
258
+
259
+ ### 7. Add Validation (Optional)
260
+
261
+ If your plugin has specific validation requirements, update `utils/validation.ts`:
262
+
263
+ ```typescript
264
+ export function validateOptions(
265
+ tree: Tree,
266
+ options: KosComponentGeneratorSchema
267
+ ): void {
268
+ // ... existing validation
269
+
270
+ // Add custom validation for your plugin
271
+ if (options.pluginType === "myNewPlugin" && !options.myCustomOption) {
272
+ throw new ValidationError(
273
+ "myCustomOption is required for myNewPlugin type"
274
+ );
275
+ }
276
+ }
277
+ ```
278
+
279
+ ## Testing Your New Plugin Type
280
+
281
+ ### 1. Build the Plugin
282
+
283
+ ```bash
284
+ nx build kos-nx-plugin
285
+ ```
286
+
287
+ ### 2. Test Generation
288
+
289
+ ```bash
290
+ # Test your new plugin type using the specific plugin generator
291
+ kosui plugin:myNewPlugin --name test-component --project my-test-project
292
+
293
+ # Or use the generic pluginComponent generator
294
+ kosui pluginComponent --name test-component --project my-test-project
295
+ # (This will prompt you to select from existing plugin types)
296
+ ```
297
+
298
+ ### 3. Verify Output
299
+
300
+ Check that the generated files include:
301
+
302
+ - Component files in the correct location (`.tsx`)
303
+ - Storybook stories (`.stories.tsx`)
304
+ - Index files (`index.ts`)
305
+ - Updated .kos.json with your contribution
306
+ - Localization entries (if applicable)
307
+ - Proper template rendering with correct variable substitution
308
+
309
+ ## Best Practices
310
+
311
+ ### 1. **Naming Conventions**
312
+
313
+ - Plugin type: `camelCase` (e.g., `myNewPlugin`)
314
+ - Contribution key: `kebab-case` (e.g., `my-new-contribution`)
315
+ - Handler class: `PascalCase` + `Handler` (e.g., `MyNewPluginHandler`)
316
+
317
+ ### 2. **Configuration Structure**
318
+
319
+ Follow existing patterns for contribution objects:
320
+
321
+ ```typescript
322
+ {
323
+ id: `${configPrefix}.${pluginType}`,
324
+ title: `${configPrefix}.${pluginType}.title`,
325
+ namespace: options.appProject,
326
+ experienceId, // if using experiences
327
+ // Plugin-specific properties
328
+ }
329
+ ```
330
+
331
+ ### 3. **Template Organization**
332
+
333
+ - Use meaningful template folder names
334
+ - Include index.ts for clean imports
335
+ - Follow existing template variable patterns
336
+
337
+ ### 4. **Documentation**
338
+
339
+ - Update CLI help text if needed
340
+ - Add examples to this README
341
+ - Document any special requirements
342
+
343
+ ## Extending Base Functionality
344
+
345
+ ### Custom Experience Creation
346
+
347
+ ```typescript
348
+ protected createExperience(
349
+ options: NormalizedOptions,
350
+ experienceId: string
351
+ ): ExperienceConfig {
352
+ const compPath = this.getCustomComponentPath(options);
353
+
354
+ return {
355
+ id: experienceId,
356
+ component: options.namePascalCase,
357
+ location: `./src/${compPath}`,
358
+ // Add custom experience properties
359
+ customProperty: 'value',
360
+ };
361
+ }
362
+ ```
363
+
364
+ ### Custom Contribution Logic
365
+
366
+ ```typescript
367
+ createConfiguration(options: NormalizedOptions): PluginConfiguration {
368
+ // Create multiple contributions if needed
369
+ const contributions = this.createMultipleContributions(options);
370
+
371
+ return {
372
+ contributions: {
373
+ contribution1: contributions.first,
374
+ contribution2: contributions.second,
375
+ },
376
+ experiences: { /* ... */ },
377
+ };
378
+ }
379
+ ```
380
+
381
+ ## Example: Complete Plugin Implementation
382
+
383
+ Here's a complete example for a "dashboard" plugin type:
384
+
385
+ ```typescript
386
+ // plugin-handlers/dashboard-handler.ts
387
+ export class DashboardPluginHandler extends BasePluginHandler {
388
+ protected pluginType = PLUGIN_TYPES.DASHBOARD;
389
+ protected contributionKey = "dashboard";
390
+ protected requiresI18n = true;
391
+
392
+ createConfiguration(options: NormalizedOptions): PluginConfiguration {
393
+ const configPrefix = this.getConfigPrefix(options);
394
+ const experienceId = `${configPrefix}.dashboard.experience`;
395
+
396
+ const contribution = {
397
+ id: `${configPrefix}.dashboard`,
398
+ title: `${configPrefix}.dashboard.title`,
399
+ namespace: options.appProject,
400
+ dashboardType: options.nameCamelCase,
401
+ layout: "grid", // Dashboard-specific property
402
+ experienceId,
403
+ };
404
+
405
+ const experience = this.createExperience(options, experienceId);
406
+
407
+ return {
408
+ contributions: {
409
+ dashboards: [contribution],
410
+ },
411
+ experiences: {
412
+ [experienceId]: experience,
413
+ },
414
+ };
415
+ }
416
+ }
417
+ ```
418
+
419
+ ## CLI Usage
420
+
421
+ Once implemented, your new plugin type will be available via the CLI:
422
+
423
+ ```bash
424
+ # Generate utility plugin component using specific plugin generator
425
+ kosui plugin:utility --name data-export --project admin-ui
426
+
427
+ # Generate setting plugin with additional group option
428
+ kosui plugin:setting --name user-preferences --project admin-ui --group appearance
429
+
430
+ # Generate navigation plugin
431
+ kosui plugin:nav --name system-status --project admin-ui
432
+
433
+ # Alternative: Using generic plugin component generator
434
+ kosui pluginComponent --name data-export --project admin-ui
435
+ # (Will prompt to select from: cui, setup, utility, setting, nav, controlPour)
436
+ ```
437
+
438
+ ## Troubleshooting
439
+
440
+ **Plugin not recognized:**
441
+
442
+ - Verify handler is registered in factory.ts
443
+ - Check PLUGIN_TYPES constant is exported
444
+ - Ensure plugin type matches exactly
445
+
446
+ **Template not found:**
447
+
448
+ - Check template folder name matches contributionKey
449
+ - Verify template files exist and have correct extensions
450
+ - Use `getTemplatePath()` if using custom path
451
+
452
+ **Configuration not applied:**
453
+
454
+ - Check .kos.json structure matches expected format
455
+ - Verify contribution keys are correct
456
+ - Test KosConfigBuilder logic with debug output
457
+
458
+ **Localization not working:**
459
+
460
+ - Ensure plugin type is in LOCALIZED_PLUGIN_TYPES
461
+ - Check locale file exists at expected path
462
+ - Verify updateLocalization is called for your handler
463
+
464
+ ## Contributing
465
+
466
+ When contributing new plugin types to the KOS framework:
467
+
468
+ 1. Follow this guide for implementation
469
+ 2. Add comprehensive tests
470
+ 3. Update documentation
471
+ 4. Submit PR with clear description of the plugin's purpose
472
+ 5. Include usage examples
473
+
474
+ For questions or support, refer to the KOS development team or create an issue in the project repository.
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Note: The plugin project Storybook configuration requires that the Studio
3
+ * Simulator is running in order to retrieve model data...
4
+ */
5
+ import { ControlPourStoryContainer } from "@kosdev-code/kos-ui-plugin-dev";
6
+ import type { Meta, StoryObj } from "@storybook/react";
7
+ import { <%= namePascalCase %> } from "./<%= nameDashCase %>";
8
+
9
+ const meta: Meta<typeof <%= namePascalCase %>> = {
10
+ args: {},
11
+ component: <%= namePascalCase %>,
12
+ decorators: [
13
+ (Story, context) => (
14
+ <ControlPourStoryContainer>
15
+ <Story args={{ ...context.args }} />
16
+ </ControlPourStoryContainer>
17
+ ),
18
+ ],
19
+ tags: ["!autodocs"],
20
+ title: "ControlPour/<%= namePascalCase %>",
21
+ };
22
+
23
+ export default meta;
24
+
25
+ type Story = StoryObj<typeof <%= namePascalCase %>>;
26
+
27
+ export const Default: Story = {
28
+ render: (props) => <<%= namePascalCase %> {...props} />,
29
+ };
30
+
@@ -0,0 +1,35 @@
1
+ import styled from '@emotion/styled';
2
+ import {
3
+ Button,
4
+ Footer,
5
+ type Experience,
6
+ } from '@kosdev-code/kos-ddk-components';
7
+ import {
8
+ KosLog,
9
+ kosComponent,
10
+ useKosTranslation,
11
+ } from '@kosdev-code/kos-ui-sdk';
12
+
13
+ const log = KosLog.createLogger({name: "<%= nameDashCase %>"})
14
+ log.debug("<%= nameDashCase %> component loaded");
15
+
16
+ const <%= namePascalCase %>Container = styled.div`
17
+ align-items: center;
18
+ display: flex;
19
+ flex-direction: column;
20
+ width: 100%;
21
+ `;
22
+
23
+ export const <%= namePascalCase %>: Experience = kosComponent(({ onComplete }) => {
24
+ const { t } = useKosTranslation('<%= appProject %>');
25
+ return (
26
+ <<%= namePascalCase %>Container onClick={onComplete}>
27
+ Hello from <%= namePascalCase %> CUI Configuration
28
+ <Footer>
29
+ <Button onClick={onComplete}>{t('proceed')}</Button>
30
+ </Footer>
31
+ </<%= namePascalCase %>Container>
32
+ );
33
+ });
34
+
35
+ export default <%= namePascalCase %>
@@ -0,0 +1 @@
1
+ export * from "./<%= nameDashCase %>";
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Note: The plugin project Storybook configuration requires that the Studio
3
+ * Simulator is running in order to retrieve model data...
4
+ */
5
+ import { CUIStoryContainer } from "@kosdev-code/kos-ui-plugin-dev";
6
+ import type { Meta, StoryObj } from "@storybook/react";
7
+ import { <%= namePascalCase %> } from "./<%= nameDashCase %>";
8
+
9
+ const meta: Meta<typeof <%= namePascalCase %>> = {
10
+ args: {},
11
+ component: <%= namePascalCase %>,
12
+ decorators: [
13
+ (Story, context) => (
14
+ <CUIStoryContainer>
15
+ <Story args={{ ...context.args }} />
16
+ </CUIStoryContainer>
17
+ ),
18
+ ],
19
+ tags: ["!autodocs"],
20
+ title: "CUI/<%= namePascalCase %>",
21
+ };
22
+
23
+ export default meta;
24
+
25
+ type Story = StoryObj<typeof <%= namePascalCase %>>;
26
+
27
+ export const Default: Story = {
28
+ render: (props) => <<%= namePascalCase %> {...props} />,
29
+ };
30
+
@@ -0,0 +1,35 @@
1
+ import styled from '@emotion/styled';
2
+ import {
3
+ Button,
4
+ Footer,
5
+ type Experience,
6
+ } from '@kosdev-code/kos-ddk-components';
7
+ import {
8
+ KosLog,
9
+ kosComponent,
10
+ useKosTranslation,
11
+ } from '@kosdev-code/kos-ui-sdk';
12
+
13
+ const log = KosLog.createLogger({name: "<%= nameDashCase %>"})
14
+ log.debug("<%= nameDashCase %> component loaded");
15
+
16
+ const <%= namePascalCase %>Container = styled.div`
17
+ align-items: center;
18
+ display: flex;
19
+ flex-direction: column;
20
+ width: 100%;
21
+ `;
22
+
23
+ export const <%= namePascalCase %>: Experience = kosComponent(({ onComplete }) => {
24
+ const { t } = useKosTranslation('<%= appProject %>');
25
+ return (
26
+ <<%= namePascalCase %>Container onClick={onComplete}>
27
+ Hello from <%= namePascalCase %> CUI Configuration
28
+ <Footer>
29
+ <Button onClick={onComplete}>{t('proceed')}</Button>
30
+ </Footer>
31
+ </<%= namePascalCase %>Container>
32
+ );
33
+ });
34
+
35
+ export default <%= namePascalCase %>
@@ -0,0 +1 @@
1
+ export * from "./<%= nameDashCase %>";
@@ -0,0 +1,31 @@
1
+ import { Button } from '@kosdev-code/kos-ddk-components';
2
+ import { StoryObj } from '@storybook/react';
3
+ import { <%= namePascalCase %> } from './<%= nameDashCase %>';
4
+
5
+ const meta = {
6
+ title: '<%= appProject %>/<%= namePascalCase %> Custom Plugin',
7
+ component: <%= namePascalCase %>,
8
+ };
9
+
10
+ export default meta;
11
+
12
+ type Story = StoryObj<typeof meta>;
13
+
14
+ export const Default: Story = {
15
+ args: {
16
+ onComplete: () => console.log('Custom plugin completed'),
17
+ },
18
+ decorators: [
19
+ (Story) => (
20
+ <div style={{ padding: '20px' }}>
21
+ <Story />
22
+ </div>
23
+ ),
24
+ ],
25
+ };
26
+
27
+ export const WithCustomAction: Story = {
28
+ args: {
29
+ onComplete: () => alert('Custom action triggered!'),
30
+ },
31
+ };
@@ -0,0 +1,53 @@
1
+ import styled from '@emotion/styled';
2
+ import {
3
+ Button,
4
+ Footer,
5
+ type Experience,
6
+ } from '@kosdev-code/kos-ddk-components';
7
+ import {
8
+ KosLog,
9
+ kosComponent,
10
+ useKosTranslation,
11
+ } from '@kosdev-code/kos-ui-sdk';
12
+
13
+ const log = KosLog.createLogger({name: "<%= nameDashCase %>"})
14
+ log.debug("<%= nameDashCase %> component loaded");
15
+
16
+ const <%= namePascalCase %>Container = styled.div`
17
+ align-items: center;
18
+ display: flex;
19
+ flex-direction: column;
20
+ width: 100%;
21
+ `;
22
+
23
+ /**
24
+ * Custom plugin component for <%= contributionKey || 'custom' %> contribution
25
+ *
26
+ * TODO: Add additional fields to your .kos.json contribution as required by the plugin-explorer specification.
27
+ * Refer to the plugin-explorer documentation for your specific contribution type.
28
+ *
29
+ * The basic contribution structure has been created, but you may need to add fields such as:
30
+ * - icon: The icon to display for this contribution
31
+ * - order: The display order relative to other contributions
32
+ * - when: Conditional visibility expressions
33
+ * - category: The category this contribution belongs to
34
+ * - etc.
35
+ */
36
+ export const <%= namePascalCase %>: Experience = kosComponent(({ onComplete }) => {
37
+ const { t } = useKosTranslation('<%= appProject %>');
38
+
39
+ return (
40
+ <<%= namePascalCase %>Container>
41
+ <h2><%= namePascalCase %> Custom Plugin</h2>
42
+ <p>This is a custom plugin component with contribution key: <%= contributionKey || 'custom' %></p>
43
+
44
+ {/* TODO: Implement your custom plugin functionality here */}
45
+
46
+ <Footer>
47
+ <Button onClick={onComplete}>{t('proceed')}</Button>
48
+ </Footer>
49
+ </<%= namePascalCase %>Container>
50
+ );
51
+ });
52
+
53
+ export default <%= namePascalCase %>
@@ -0,0 +1 @@
1
+ export * from './<%= nameDashCase %>';
@@ -0,0 +1,2 @@
1
+ .<%= nameDashCase %> {
2
+ }