akanjs 0.0.1 → 2.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (682) hide show
  1. package/CODE_OF_CONDUCT.md +54 -0
  2. package/CONTRIBUTING.md +83 -0
  3. package/LICENSE +21 -0
  4. package/README.ko.md +244 -0
  5. package/README.md +237 -6
  6. package/base/base.ts +194 -0
  7. package/base/baseEnv.ts +162 -0
  8. package/base/index.ts +6 -0
  9. package/base/primitiveRegistry.ts +342 -0
  10. package/base/symbols.ts +11 -0
  11. package/base/types.ts +137 -0
  12. package/base/utils.ts +30 -0
  13. package/cli/application/application.command.ts +213 -0
  14. package/cli/application/application.interface.tsx +225 -0
  15. package/cli/application/application.runner.ts +359 -0
  16. package/cli/application/application.script.ts +244 -0
  17. package/cli/build.ts +25 -0
  18. package/cli/cloud/cloud.command.ts +48 -0
  19. package/cli/cloud/cloud.runner.ts +158 -0
  20. package/cli/cloud/cloud.script.ts +40 -0
  21. package/cli/guideline/guideline.command.ts +31 -0
  22. package/cli/guideline/guideline.prompt.ts +212 -0
  23. package/cli/guideline/guideline.runner.ts +53 -0
  24. package/cli/guideline/guideline.script.ts +33 -0
  25. package/cli/guidelines/___library/sharedUiStructureDescription.en.md +767 -0
  26. package/cli/guidelines/___library/utilUiStructureDescription.en.md +395 -0
  27. package/cli/guidelines/___lint/lintRuleDescription.en.md +64 -0
  28. package/cli/guidelines/___module/moduleStructureDescription.en.md +80 -0
  29. package/cli/guidelines/componentRule/componentRule.generate.json +131 -0
  30. package/cli/guidelines/componentRule/componentRule.instruction.md +637 -0
  31. package/cli/guidelines/cssRule/cssRule.generate.json +93 -0
  32. package/cli/guidelines/cssRule/cssRule.instruction.md +435 -0
  33. package/cli/guidelines/databaseModule/databaseModule.generate.json +51 -0
  34. package/cli/guidelines/databaseModule/databaseModule.instruction.md +612 -0
  35. package/cli/guidelines/docPageRule/docPageRule.generate.json +72 -0
  36. package/cli/guidelines/docPageRule/docPageRule.instruction.md +389 -0
  37. package/cli/guidelines/enumConstant/enumConstant.generate.json +24 -0
  38. package/cli/guidelines/enumConstant/enumConstant.instruction.md +232 -0
  39. package/cli/guidelines/framework/framework.generate.json +119 -0
  40. package/cli/guidelines/framework/framework.instruction.md +1110 -0
  41. package/cli/guidelines/howToUseStore/howToUseStore.generate.json +0 -0
  42. package/cli/guidelines/modelConstant/modelConstant.generate.json +128 -0
  43. package/cli/guidelines/modelConstant/modelConstant.instruction.md +506 -0
  44. package/cli/guidelines/modelDictionary/modelDictionary.generate.json +108 -0
  45. package/cli/guidelines/modelDictionary/modelDictionary.instruction.md +547 -0
  46. package/cli/guidelines/modelDocument/modelDocument.generate.json +129 -0
  47. package/cli/guidelines/modelDocument/modelDocument.instruction.md +536 -0
  48. package/cli/guidelines/modelService/modelService.generate.json +135 -0
  49. package/cli/guidelines/modelService/modelService.instruction.md +708 -0
  50. package/cli/guidelines/modelSignal/modelSignal.generate.json +201 -0
  51. package/cli/guidelines/modelSignal/modelSignal.instruction.md +552 -0
  52. package/cli/guidelines/modelStore/modelStore.generate.json +130 -0
  53. package/cli/guidelines/modelStore/modelStore.instruction.md +585 -0
  54. package/cli/guidelines/modelTemplate/modelTemplate.generate.json +104 -0
  55. package/cli/guidelines/modelTemplate/modelTemplate.instruction.md +604 -0
  56. package/cli/guidelines/modelUnit/modelUnit.generate.json +92 -0
  57. package/cli/guidelines/modelUnit/modelUnit.instruction.md +541 -0
  58. package/cli/guidelines/modelUtil/modelUtil.generate.json +93 -0
  59. package/cli/guidelines/modelUtil/modelUtil.instruction.md +752 -0
  60. package/cli/guidelines/modelView/modelView.generate.json +80 -0
  61. package/cli/guidelines/modelView/modelView.instruction.md +1005 -0
  62. package/cli/guidelines/modelZone/modelZone.generate.json +126 -0
  63. package/cli/guidelines/modelZone/modelZone.instruction.md +528 -0
  64. package/cli/guidelines/scalarConstant/scalarConstant.generate.json +106 -0
  65. package/cli/guidelines/scalarConstant/scalarConstant.instruction.md +442 -0
  66. package/cli/guidelines/scalarDictionary/scalarDictionary.generate.json +83 -0
  67. package/cli/guidelines/scalarDictionary/scalarDictionary.instruction.md +273 -0
  68. package/cli/guidelines/scalarModule/scalarModule.generate.json +35 -0
  69. package/cli/guidelines/scalarModule/scalarModule.instruction.md +81 -0
  70. package/cli/guidelines/sharedUiUsage/sharedUiUsage.generate.json +108 -0
  71. package/cli/guidelines/sharedUiUsage/sharedUiUsage.instruction.md +310 -0
  72. package/cli/guidelines/utilUiUsage/utilUiUsage.generate.json +140 -0
  73. package/cli/guidelines/utilUiUsage/utilUiUsage.instruction.md +339 -0
  74. package/cli/index.js +11399 -0
  75. package/cli/index.ts +24 -0
  76. package/cli/library/library.command.ts +28 -0
  77. package/cli/library/library.runner.ts +69 -0
  78. package/cli/library/library.script.ts +39 -0
  79. package/cli/module/module.command.ts +35 -0
  80. package/cli/module/module.prompt.ts +18 -0
  81. package/cli/module/module.request.ts +319 -0
  82. package/cli/module/module.runner.ts +76 -0
  83. package/cli/module/module.script.ts +161 -0
  84. package/cli/package/package.command.ts +32 -0
  85. package/cli/package/package.runner.ts +64 -0
  86. package/cli/package/package.script.ts +35 -0
  87. package/cli/page/page.command.ts +14 -0
  88. package/cli/page/page.runner.ts +14 -0
  89. package/cli/page/page.script.ts +12 -0
  90. package/cli/scalar/scalar.command.ts +21 -0
  91. package/cli/scalar/scalar.prompt.ts +131 -0
  92. package/cli/scalar/scalar.runner.ts +38 -0
  93. package/cli/scalar/scalar.script.ts +16 -0
  94. package/cli/templates/__scalar/__model__/__model__.constant.ts +15 -0
  95. package/cli/templates/__scalar/__model__/__model__.dictionary.ts +19 -0
  96. package/cli/templates/__scalar/__model__/__model__.document.ts +15 -0
  97. package/cli/templates/app/akan.config.ts +14 -0
  98. package/cli/templates/app/capacitor.config.ts.template +8 -0
  99. package/cli/templates/app/common/commonLogic.ts +12 -0
  100. package/cli/templates/app/common/index.ts +10 -0
  101. package/cli/templates/app/env/env.client.debug.ts.template +7 -0
  102. package/cli/templates/app/env/env.client.develop.ts.template +7 -0
  103. package/cli/templates/app/env/env.client.local.ts.template +7 -0
  104. package/cli/templates/app/env/env.client.main.ts.template +7 -0
  105. package/cli/templates/app/env/env.client.testing.ts.template +7 -0
  106. package/cli/templates/app/env/env.client.ts +21 -0
  107. package/cli/templates/app/env/env.client.type.ts +16 -0
  108. package/cli/templates/app/env/env.server.debug.ts.template +7 -0
  109. package/cli/templates/app/env/env.server.develop.ts.template +9 -0
  110. package/cli/templates/app/env/env.server.local.ts.template +14 -0
  111. package/cli/templates/app/env/env.server.main.ts.template +9 -0
  112. package/cli/templates/app/env/env.server.testing.ts.template +6 -0
  113. package/cli/templates/app/env/env.server.ts +20 -0
  114. package/cli/templates/app/lib/___appName__/__appName__.dictionary.ts +17 -0
  115. package/cli/templates/app/lib/___appName__/__appName__.service.ts +13 -0
  116. package/cli/templates/app/lib/___appName__/__appName__.signal.ts +17 -0
  117. package/cli/templates/app/lib/___appName__/__appName__.store.ts +15 -0
  118. package/cli/templates/app/lib/option.ts +17 -0
  119. package/cli/templates/app/main.ts +16 -0
  120. package/cli/templates/app/package.json.template +5 -0
  121. package/cli/templates/app/page/_index.tsx +172 -0
  122. package/cli/templates/app/page/_layout.tsx +32 -0
  123. package/cli/templates/app/page/styles.css.template +53 -0
  124. package/cli/templates/app/public/favicon.ico +0 -0
  125. package/cli/templates/app/public/logo.png +0 -0
  126. package/cli/templates/app/srvkit/backendLogic.ts +12 -0
  127. package/cli/templates/app/srvkit/index.ts +10 -0
  128. package/cli/templates/app/tsconfig.json.template +21 -0
  129. package/cli/templates/app/ui/UiComponent.ts +16 -0
  130. package/cli/templates/app/ui/index.ts +10 -0
  131. package/cli/templates/app/webkit/frontendLogic.ts +12 -0
  132. package/cli/templates/app/webkit/index.ts +10 -0
  133. package/cli/templates/client.ts +46 -0
  134. package/cli/templates/crudPages/[__model__Id]/edit/page.tsx +47 -0
  135. package/cli/templates/crudPages/[__model__Id]/page.tsx +52 -0
  136. package/cli/templates/crudPages/new/page.tsx +42 -0
  137. package/cli/templates/crudPages/page.tsx +43 -0
  138. package/cli/templates/crudSinglePage/page.tsx +37 -0
  139. package/cli/templates/env/_env.server.type.ts +16 -0
  140. package/cli/templates/facetIndex/index.ts +32 -0
  141. package/cli/templates/index.ts +10 -0
  142. package/cli/templates/lib/__lib/lib.constant.ts +38 -0
  143. package/cli/templates/lib/__lib/lib.dictionary.ts +33 -0
  144. package/cli/templates/lib/__lib/lib.document.ts +35 -0
  145. package/cli/templates/lib/__lib/lib.service.ts +33 -0
  146. package/cli/templates/lib/__lib/lib.signal.ts +34 -0
  147. package/cli/templates/lib/__lib/lib.store.ts +33 -0
  148. package/cli/templates/lib/cnst.ts +29 -0
  149. package/cli/templates/lib/db.ts +32 -0
  150. package/cli/templates/lib/dict.ts +49 -0
  151. package/cli/templates/lib/sig.ts +60 -0
  152. package/cli/templates/lib/srv.ts +34 -0
  153. package/cli/templates/lib/st.ts +31 -0
  154. package/cli/templates/lib/useClient.ts +19 -0
  155. package/cli/templates/lib/useServer.ts +7 -0
  156. package/cli/templates/libRoot/.gitignore.template +16 -0
  157. package/cli/templates/libRoot/akan.config.ts +12 -0
  158. package/cli/templates/libRoot/base/baseLogic.ts +10 -0
  159. package/cli/templates/libRoot/base/index.ts +8 -0
  160. package/cli/templates/libRoot/common/commonLogic.ts +10 -0
  161. package/cli/templates/libRoot/common/index.ts +8 -0
  162. package/cli/templates/libRoot/env/env.server.example.ts.template +6 -0
  163. package/cli/templates/libRoot/env/env.server.testing.ts.template +6 -0
  164. package/cli/templates/libRoot/lib/___libName__/__libName__.dictionary.ts +15 -0
  165. package/cli/templates/libRoot/lib/___libName__/__libName__.service.ts +11 -0
  166. package/cli/templates/libRoot/lib/___libName__/__libName__.store.ts +13 -0
  167. package/cli/templates/libRoot/lib/option.ts +17 -0
  168. package/cli/templates/libRoot/package.json.template +5 -0
  169. package/cli/templates/libRoot/srvkit/backendLogic.ts +10 -0
  170. package/cli/templates/libRoot/srvkit/index.ts +8 -0
  171. package/cli/templates/libRoot/tsconfig.json.template +11 -0
  172. package/cli/templates/libRoot/ui/index.ts +7 -0
  173. package/cli/templates/libRoot/webkit/frontendLogic.ts +10 -0
  174. package/cli/templates/libRoot/webkit/index.ts +8 -0
  175. package/cli/templates/localDev/docker-compose.yaml.template +37 -0
  176. package/cli/templates/module/__Model__.Template.tsx +36 -0
  177. package/cli/templates/module/__Model__.Unit.tsx +26 -0
  178. package/cli/templates/module/__Model__.Util.tsx +30 -0
  179. package/cli/templates/module/__Model__.View.tsx +29 -0
  180. package/cli/templates/module/__Model__.Zone.tsx +43 -0
  181. package/cli/templates/module/__model__.constant.ts +24 -0
  182. package/cli/templates/module/__model__.dictionary.ts +30 -0
  183. package/cli/templates/module/__model__.document.ts +23 -0
  184. package/cli/templates/module/__model__.service.ts +16 -0
  185. package/cli/templates/module/__model__.signal.ts +27 -0
  186. package/cli/templates/module/__model__.store.ts +19 -0
  187. package/cli/templates/module/index.tsx +44 -0
  188. package/cli/templates/moduleRoot/index.tsx +31 -0
  189. package/cli/templates/pkgRoot/tsconfig.json.template +10 -0
  190. package/cli/templates/server.ts +45 -0
  191. package/cli/templates/workspaceRoot/.env.template +14 -0
  192. package/cli/templates/workspaceRoot/.gitignore.template +130 -0
  193. package/cli/templates/workspaceRoot/.vscode/settings.json.template +23 -0
  194. package/cli/templates/workspaceRoot/biome.json.template +175 -0
  195. package/cli/templates/workspaceRoot/bunfig.toml +4 -0
  196. package/cli/templates/workspaceRoot/infra/app/Chart.yaml.template +6 -0
  197. package/cli/templates/workspaceRoot/infra/app/templates/frontend.yaml.template +182 -0
  198. package/cli/templates/workspaceRoot/infra/app/values/_common-values.yaml.template +183 -0
  199. package/cli/templates/workspaceRoot/package.json.template +7 -0
  200. package/cli/templates/workspaceRoot/tsconfig.json.template +26 -0
  201. package/cli/testHelpers.ts +171 -0
  202. package/cli/workspace/workspace.command.ts +59 -0
  203. package/cli/workspace/workspace.runner.ts +57 -0
  204. package/cli/workspace/workspace.script.ts +68 -0
  205. package/client/capacitor.ts +68 -0
  206. package/client/clientRuntime.ts +141 -0
  207. package/client/cookie.ts +121 -0
  208. package/client/createFont.ts +8 -0
  209. package/client/csrTypes.ts +259 -0
  210. package/client/decorators.ts +25 -0
  211. package/client/device.ts +147 -0
  212. package/client/fetch.ts +1 -0
  213. package/client/index.ts +15 -0
  214. package/client/locale.ts +4 -0
  215. package/client/makePageProto.tsx +178 -0
  216. package/client/router.ts +286 -0
  217. package/client/rscNavigation.ts +19 -0
  218. package/client/storage.ts +33 -0
  219. package/client/translator.ts +43 -0
  220. package/client/types.ts +228 -0
  221. package/client/useClient.ts +1 -0
  222. package/common/Logger.ts +177 -0
  223. package/common/applyMixins.ts +14 -0
  224. package/common/capitalize.ts +4 -0
  225. package/common/deepObjectify.ts +27 -0
  226. package/common/formatNumber.ts +14 -0
  227. package/common/formatPhone.ts +7 -0
  228. package/common/getAllPropertyDescriptors.ts +13 -0
  229. package/common/hmrPhase.ts +17 -0
  230. package/common/httpClient.ts +101 -0
  231. package/common/index.ts +50 -0
  232. package/common/isDayjs.ts +3 -0
  233. package/common/isEmail.ts +2 -0
  234. package/common/isPhoneNumber.ts +8 -0
  235. package/common/isQueryEqual.ts +23 -0
  236. package/common/isValidDate.ts +14 -0
  237. package/common/localeConfig.ts +41 -0
  238. package/common/lowerlize.ts +4 -0
  239. package/common/mergeVersion.ts +10 -0
  240. package/common/objectify.ts +7 -0
  241. package/common/pathGet.ts +13 -0
  242. package/common/pathSet.ts +16 -0
  243. package/common/randomPick.ts +1 -0
  244. package/common/randomPicks.ts +12 -0
  245. package/common/routeConvention.ts +203 -0
  246. package/common/sleep.ts +8 -0
  247. package/common/splitVersion.ts +11 -0
  248. package/common/subRoute.ts +34 -0
  249. package/common/types.ts +15 -0
  250. package/constant/constantRegistry.ts +334 -0
  251. package/constant/crystalize.ts +45 -0
  252. package/constant/deserialize.ts +70 -0
  253. package/constant/fieldInfo.ts +415 -0
  254. package/constant/getDefault.ts +18 -0
  255. package/constant/immerify.ts +16 -0
  256. package/constant/index.ts +10 -0
  257. package/constant/purify.ts +118 -0
  258. package/constant/serialize.ts +87 -0
  259. package/constant/types.ts +105 -0
  260. package/constant/via.ts +360 -0
  261. package/devkit/aiEditor.ts +299 -0
  262. package/devkit/akanApp/akanApp.host.ts +356 -0
  263. package/devkit/akanApp/index.ts +1 -0
  264. package/devkit/akanConfig/akanConfig.ts +332 -0
  265. package/devkit/akanConfig/index.ts +2 -0
  266. package/devkit/akanConfig/types.ts +187 -0
  267. package/devkit/applicationBuildReporter.ts +69 -0
  268. package/devkit/applicationBuildRunner.ts +302 -0
  269. package/devkit/applicationReleasePackager.ts +205 -0
  270. package/devkit/artifact/implicitRootLayout.ts +155 -0
  271. package/devkit/artifact/index.ts +1 -0
  272. package/devkit/artifact/routeSeedIndex.ts +128 -0
  273. package/devkit/auth.ts +41 -0
  274. package/devkit/builder.ts +164 -0
  275. package/devkit/capacitor.base.config.ts +74 -0
  276. package/devkit/capacitorApp.ts +385 -0
  277. package/devkit/commandDecorators/argMeta.ts +88 -0
  278. package/devkit/commandDecorators/command.ts +314 -0
  279. package/devkit/commandDecorators/commandBuilder.ts +188 -0
  280. package/devkit/commandDecorators/commandMeta.ts +6 -0
  281. package/devkit/commandDecorators/dependencyBuilder.ts +100 -0
  282. package/devkit/commandDecorators/helpFormatter.ts +217 -0
  283. package/devkit/commandDecorators/index.ts +8 -0
  284. package/devkit/commandDecorators/targetMeta.ts +31 -0
  285. package/devkit/commandDecorators/types.ts +10 -0
  286. package/devkit/constants.ts +25 -0
  287. package/devkit/createTunnel.ts +36 -0
  288. package/devkit/dependencyScanner.ts +339 -0
  289. package/devkit/executors.ts +1325 -0
  290. package/devkit/extractDeps.ts +85 -0
  291. package/devkit/fileEditor.ts +106 -0
  292. package/devkit/fileSys.ts +39 -0
  293. package/devkit/frontendBuild/allRoutesBuilder.ts +103 -0
  294. package/devkit/frontendBuild/clientBuildTypes.ts +114 -0
  295. package/devkit/frontendBuild/clientEntriesBundler.ts +300 -0
  296. package/devkit/frontendBuild/clientEntryDiscovery.ts +196 -0
  297. package/devkit/frontendBuild/csrArtifactBuilder.ts +237 -0
  298. package/devkit/frontendBuild/cssCompiler.ts +279 -0
  299. package/devkit/frontendBuild/cssImportResolver.ts +116 -0
  300. package/devkit/frontendBuild/fontOptimizer.ts +427 -0
  301. package/devkit/frontendBuild/hmrChangeClassifier.ts +28 -0
  302. package/devkit/frontendBuild/hmrWatcher.ts +101 -0
  303. package/devkit/frontendBuild/index.ts +18 -0
  304. package/devkit/frontendBuild/pagesBundleBuilder.ts +137 -0
  305. package/devkit/frontendBuild/pagesEntrySourceGenerator.ts +37 -0
  306. package/devkit/frontendBuild/precompressArtifacts.ts +59 -0
  307. package/devkit/frontendBuild/routeClientBuilder.ts +290 -0
  308. package/devkit/frontendBuild/routesManifestArtifactSerializer.ts +62 -0
  309. package/devkit/frontendBuild/ssrBaseArtifactBuilder.ts +139 -0
  310. package/devkit/frontendBuild/vendorSpecifiers.ts +16 -0
  311. package/devkit/frontendBuild/watchRootResolver.ts +28 -0
  312. package/devkit/getCredentials.ts +19 -0
  313. package/devkit/getDirname.ts +3 -0
  314. package/devkit/getModelFileData.ts +59 -0
  315. package/devkit/getRelatedCnsts.ts +300 -0
  316. package/devkit/guideline.ts +19 -0
  317. package/devkit/incrementalBuilder/incrementalBuilder.host.ts +78 -0
  318. package/devkit/incrementalBuilder/incrementalBuilder.proc.ts +330 -0
  319. package/devkit/incrementalBuilder/index.ts +1 -0
  320. package/devkit/index.ts +36 -0
  321. package/devkit/lint/no-import-client-functions.grit +32 -0
  322. package/devkit/lint/no-import-external-library.grit +21 -0
  323. package/devkit/lint/no-js-private-class-method.grit +42 -0
  324. package/devkit/lint/no-use-client-in-server.grit +7 -0
  325. package/devkit/lint/non-scalar-props-restricted.grit +13 -0
  326. package/devkit/linter.ts +248 -0
  327. package/devkit/mobile/index.ts +1 -0
  328. package/devkit/mobile/mobileTarget.ts +47 -0
  329. package/devkit/prompter.ts +71 -0
  330. package/devkit/scanInfo.ts +605 -0
  331. package/devkit/selectModel.ts +11 -0
  332. package/devkit/spinner.ts +54 -0
  333. package/devkit/sshTunnel.ts +151 -0
  334. package/devkit/streamAi.ts +45 -0
  335. package/devkit/transforms/barrelAnalyzer.ts +249 -0
  336. package/devkit/transforms/barrelImportsPlugin.ts +451 -0
  337. package/devkit/transforms/externalizeFrameworkPlugin.ts +159 -0
  338. package/devkit/transforms/index.ts +5 -0
  339. package/devkit/transforms/rscUseClientTransform.ts +52 -0
  340. package/devkit/transforms/useClientBundlePlugin.ts +47 -0
  341. package/devkit/typeChecker.ts +260 -0
  342. package/devkit/types.ts +42 -0
  343. package/devkit/ui/MultiScrollList.tsx +228 -0
  344. package/devkit/ui/ScrollList.tsx +106 -0
  345. package/devkit/ui/index.ts +2 -0
  346. package/devkit/uploadRelease.ts +95 -0
  347. package/devkit/useStdoutDimensions.ts +20 -0
  348. package/dictionary/base.dictionary.ts +91 -0
  349. package/dictionary/dictInfo.ts +1079 -0
  350. package/dictionary/dictionary.ts +10 -0
  351. package/dictionary/index.ts +12 -0
  352. package/dictionary/locale.ts +230 -0
  353. package/dictionary/trans.ts +196 -0
  354. package/document/by.ts +39 -0
  355. package/document/dataLoader.ts +91 -0
  356. package/document/database.ts +168 -0
  357. package/document/databaseRegistry.ts +113 -0
  358. package/document/documentQuery.ts +143 -0
  359. package/document/documentSchema.ts +91 -0
  360. package/document/filterMeta.ts +210 -0
  361. package/document/index.ts +11 -0
  362. package/document/into.ts +169 -0
  363. package/document/loaderInfo.ts +50 -0
  364. package/document/schema.ts +24 -0
  365. package/document/types.ts +41 -0
  366. package/fetch/client/fetchClient.ts +600 -0
  367. package/fetch/client/httpClient.ts +157 -0
  368. package/fetch/client/index.ts +3 -0
  369. package/fetch/client/wsClient.ts +246 -0
  370. package/fetch/fetchType/appliedReturn.type.ts +108 -0
  371. package/fetch/fetchType/buildFetch.type.ts +24 -0
  372. package/fetch/fetchType/clientSignal.type.ts +22 -0
  373. package/fetch/fetchType/endpointFetch.type.ts +56 -0
  374. package/fetch/fetchType/index.ts +5 -0
  375. package/fetch/fetchType/sliceFetch.type.ts +173 -0
  376. package/fetch/index.ts +4 -0
  377. package/fetch/requestStorage.ts +127 -0
  378. package/fetch/serializer/fetch.serializer.ts +131 -0
  379. package/fetch/serializer/index.ts +1 -0
  380. package/fetch/types.ts +28 -0
  381. package/package.json +202 -5
  382. package/server/SSR_MEMORY_DIAGNOSIS.md +107 -0
  383. package/server/akanApp.ts +855 -0
  384. package/server/akanLib.ts +43 -0
  385. package/server/akanOption.ts +42 -0
  386. package/server/akanServer.ts +369 -0
  387. package/server/artifact/builderRpc.ts +124 -0
  388. package/server/artifact/index.ts +6 -0
  389. package/server/artifact/ipcTypes.ts +46 -0
  390. package/server/artifact/manifestTypes.ts +19 -0
  391. package/server/artifact/routeClientCache.ts +224 -0
  392. package/server/artifact/routeSeedIndexStore.ts +89 -0
  393. package/server/artifact/routesManifestStore.ts +120 -0
  394. package/server/decorators.ts +95 -0
  395. package/server/di/diLifecycle.ts +520 -0
  396. package/server/di/index.ts +4 -0
  397. package/server/di/predefinedAdaptor.ts +77 -0
  398. package/server/di/resolveAdaptorHierarchy.ts +82 -0
  399. package/server/di/resolveHierarchy.ts +89 -0
  400. package/server/di/resolveServiceHierarchy.ts +47 -0
  401. package/server/di/utils.ts +40 -0
  402. package/server/hmr/changeBatch.ts +14 -0
  403. package/server/hmr/clientScript.ts +310 -0
  404. package/server/hmr/devHmrController.ts +395 -0
  405. package/server/hmr/index.ts +4 -0
  406. package/server/hmr/wsHub.ts +56 -0
  407. package/server/imageOptimizer.ts +427 -0
  408. package/server/imageOptimizerError.ts +8 -0
  409. package/server/index.ts +14 -0
  410. package/server/lifecycle/shutdownManager.ts +52 -0
  411. package/server/logging/rotatingLogWriter.ts +190 -0
  412. package/server/processMetricsCollector.ts +78 -0
  413. package/server/proxy/akanResponse.ts +16 -0
  414. package/server/proxy/bunRequestFields.ts +12 -0
  415. package/server/proxy/hostBasePathWebProxy.ts +112 -0
  416. package/server/proxy/index.ts +15 -0
  417. package/server/proxy/localeWebProxy.ts +71 -0
  418. package/server/proxy/types.ts +41 -0
  419. package/server/proxy/webProxyRunner.ts +90 -0
  420. package/server/resolver/database.resolver.ts +340 -0
  421. package/server/resolver/index.ts +3 -0
  422. package/server/resolver/resolver.contract.fixture.ts +222 -0
  423. package/server/resolver/service.resolver.ts +176 -0
  424. package/server/resolver/signal.resolver.ts +386 -0
  425. package/server/robots.ts +32 -0
  426. package/server/routeElementComposer.tsx +91 -0
  427. package/server/routeTreeBuilder.ts +279 -0
  428. package/server/routing/apiRouter.ts +226 -0
  429. package/server/rscClient.tsx +140 -0
  430. package/server/rscWorker.tsx +625 -0
  431. package/server/rscWorkerHost.ts +616 -0
  432. package/server/sitemap.ts +90 -0
  433. package/server/ssrFromRscRenderer.tsx +285 -0
  434. package/server/ssrTypes.ts +48 -0
  435. package/server/types/react-server-dom-webpack.d.ts +91 -0
  436. package/server/types.tsx +109 -0
  437. package/server/vendor/akanjs-base.ts +1 -0
  438. package/server/vendor/akanjs-common.ts +1 -0
  439. package/server/vendor/akanjs-constant.ts +1 -0
  440. package/server/vendor/akanjs-store.ts +1 -0
  441. package/server/vendor/react-dom-client.ts +5 -0
  442. package/server/vendor/react-dom.ts +21 -0
  443. package/server/vendor/react-jsx-dev-runtime.ts +5 -0
  444. package/server/vendor/react-jsx-runtime.ts +5 -0
  445. package/server/vendor/react-refresh-runtime.ts +6 -0
  446. package/server/vendor/react-server-dom-webpack-client-browser.ts +12 -0
  447. package/server/vendor/react.ts +51 -0
  448. package/server/vendor/scheduler.ts +23 -0
  449. package/server/webRouter.ts +712 -0
  450. package/service/adapt.ts +47 -0
  451. package/service/base.service.ts +18 -0
  452. package/service/index.ts +10 -0
  453. package/service/injectInfo.ts +393 -0
  454. package/service/ipcTypes.ts +127 -0
  455. package/service/predefinedAdaptor/cache.adaptor.ts +105 -0
  456. package/service/predefinedAdaptor/compress.adaptor.ts +357 -0
  457. package/service/predefinedAdaptor/database.adaptor.ts +1310 -0
  458. package/service/predefinedAdaptor/index.ts +13 -0
  459. package/service/predefinedAdaptor/logging.adaptor.ts +36 -0
  460. package/service/predefinedAdaptor/queue.adaptor.ts +42 -0
  461. package/service/predefinedAdaptor/role.adaptor.ts +18 -0
  462. package/service/predefinedAdaptor/schedule.adaptor.ts +188 -0
  463. package/service/predefinedAdaptor/solidCache.adaptor.ts +143 -0
  464. package/service/predefinedAdaptor/solidPubsub.adaptor.ts +98 -0
  465. package/service/predefinedAdaptor/solidQueue.adaptor.ts +203 -0
  466. package/service/predefinedAdaptor/solidSqlite.ts +85 -0
  467. package/service/predefinedAdaptor/sqlitePath.ts +20 -0
  468. package/service/predefinedAdaptor/storage.adaptor.ts +121 -0
  469. package/service/predefinedAdaptor/websocket.adaptor.ts +313 -0
  470. package/service/serve.ts +223 -0
  471. package/service/serviceModule.ts +221 -0
  472. package/service/serviceRegistry.ts +26 -0
  473. package/service/types.ts +113 -0
  474. package/signal/base.signal.ts +46 -0
  475. package/signal/endpoint.ts +122 -0
  476. package/signal/endpointInfo.ts +374 -0
  477. package/signal/exception.ts +50 -0
  478. package/signal/guard.ts +18 -0
  479. package/signal/guards.ts +16 -0
  480. package/signal/index.ts +18 -0
  481. package/signal/intercept.ts +39 -0
  482. package/signal/internal.ts +56 -0
  483. package/signal/internalArg.ts +38 -0
  484. package/signal/internalInfo.ts +208 -0
  485. package/signal/middleware.ts +108 -0
  486. package/signal/serializer/fetch.serializer.ts +128 -0
  487. package/signal/serializer/index.ts +1 -0
  488. package/signal/serverSignal.ts +114 -0
  489. package/signal/signalContext.ts +446 -0
  490. package/signal/signalRegistry.ts +82 -0
  491. package/signal/slice.ts +158 -0
  492. package/signal/sliceInfo.ts +254 -0
  493. package/signal/types.ts +131 -0
  494. package/store/action.ts +1067 -0
  495. package/store/baseSt.ts +81 -0
  496. package/store/hooks.ts +2 -0
  497. package/store/index.ts +8 -0
  498. package/store/rootStore.ts +26 -0
  499. package/store/state.ts +226 -0
  500. package/store/stateBuilder.ts +429 -0
  501. package/store/stateInfo.ts +66 -0
  502. package/store/store.ts +194 -0
  503. package/store/storeInstance.ts +382 -0
  504. package/store/storeRegistry.ts +84 -0
  505. package/store/types.ts +69 -0
  506. package/store/withSelector.ts +62 -0
  507. package/test/index.ts +16 -0
  508. package/test/playwright.config.base.ts +48 -0
  509. package/test/playwright.pageAgent.ts +41 -0
  510. package/test/sample.ts +19 -0
  511. package/test/sampleOf.ts +70 -0
  512. package/test/signalTest.preload.ts +10 -0
  513. package/test/signalTestRuntime.ts +126 -0
  514. package/test/testServer.ts +187 -0
  515. package/ui/BottomSheet.tsx +103 -0
  516. package/ui/Button.tsx +70 -0
  517. package/ui/ClientSide.tsx +11 -0
  518. package/ui/Clipboard.tsx +49 -0
  519. package/ui/Constant/Doc.tsx +696 -0
  520. package/ui/Constant/Mermaid.tsx +149 -0
  521. package/ui/Constant/index.ts +6 -0
  522. package/ui/Constant/schemaDoc.ts +324 -0
  523. package/ui/Copy.tsx +27 -0
  524. package/ui/CsrImage.tsx +38 -0
  525. package/ui/Data/CardList.tsx +141 -0
  526. package/ui/Data/Dashboard.tsx +72 -0
  527. package/ui/Data/Insight.tsx +35 -0
  528. package/ui/Data/Item.tsx +285 -0
  529. package/ui/Data/ListContainer.tsx +320 -0
  530. package/ui/Data/Pagination.tsx +54 -0
  531. package/ui/Data/QueryMaker.tsx +21 -0
  532. package/ui/Data/TableList.tsx +161 -0
  533. package/ui/Data/index.ts +11 -0
  534. package/ui/Data/index_.tsx +11 -0
  535. package/ui/DatePicker.tsx +184 -0
  536. package/ui/Dialog/Action.tsx +15 -0
  537. package/ui/Dialog/Close.tsx +22 -0
  538. package/ui/Dialog/Content.tsx +11 -0
  539. package/ui/Dialog/Modal.tsx +137 -0
  540. package/ui/Dialog/Provider.tsx +33 -0
  541. package/ui/Dialog/Title.tsx +15 -0
  542. package/ui/Dialog/Trigger.tsx +22 -0
  543. package/ui/Dialog/context.ts +20 -0
  544. package/ui/Dialog/index.tsx +15 -0
  545. package/ui/DragAction.tsx +129 -0
  546. package/ui/DraggableList.tsx +230 -0
  547. package/ui/Dropdown.tsx +51 -0
  548. package/ui/Empty.tsx +32 -0
  549. package/ui/Field.tsx +1556 -0
  550. package/ui/FontFace.tsx +26 -0
  551. package/ui/Image.tsx +185 -0
  552. package/ui/InfiniteScroll.tsx +67 -0
  553. package/ui/Input.tsx +636 -0
  554. package/ui/KeyboardAvoiding.tsx +62 -0
  555. package/ui/Layout/BottomAction.tsx +15 -0
  556. package/ui/Layout/BottomInset.tsx +42 -0
  557. package/ui/Layout/BottomTab.tsx +71 -0
  558. package/ui/Layout/Header.tsx +38 -0
  559. package/ui/Layout/LeftSider.tsx +34 -0
  560. package/ui/Layout/Navbar.tsx +46 -0
  561. package/ui/Layout/RightSider.tsx +41 -0
  562. package/ui/Layout/Sider.tsx +69 -0
  563. package/ui/Layout/Template.tsx +11 -0
  564. package/ui/Layout/TopLeftAction.tsx +28 -0
  565. package/ui/Layout/Unit.tsx +19 -0
  566. package/ui/Layout/View.tsx +12 -0
  567. package/ui/Layout/Zone.tsx +10 -0
  568. package/ui/Layout/index.ts +27 -0
  569. package/ui/Link/Back.tsx +15 -0
  570. package/ui/Link/Close.tsx +20 -0
  571. package/ui/Link/CsrLink.tsx +41 -0
  572. package/ui/Link/Lang.tsx +16 -0
  573. package/ui/Link/SsrLink.tsx +68 -0
  574. package/ui/Link/index.tsx +32 -0
  575. package/ui/Link/types.ts +47 -0
  576. package/ui/Load/Edit.tsx +19 -0
  577. package/ui/Load/Edit_Client.tsx +120 -0
  578. package/ui/Load/Page.tsx +40 -0
  579. package/ui/Load/PageCSR.tsx +39 -0
  580. package/ui/Load/Pagination.tsx +89 -0
  581. package/ui/Load/Units.tsx +330 -0
  582. package/ui/Load/View.tsx +115 -0
  583. package/ui/Load/index.ts +11 -0
  584. package/ui/Load/index_.tsx +6 -0
  585. package/ui/Loading/Area.tsx +10 -0
  586. package/ui/Loading/Button.tsx +17 -0
  587. package/ui/Loading/Input.tsx +17 -0
  588. package/ui/Loading/ProgressBar.tsx +14 -0
  589. package/ui/Loading/Skeleton.tsx +22 -0
  590. package/ui/Loading/Spin.tsx +22 -0
  591. package/ui/Loading/index.tsx +8 -0
  592. package/ui/Menu.tsx +273 -0
  593. package/ui/Modal.tsx +87 -0
  594. package/ui/Model/AdminPanel.tsx +51 -0
  595. package/ui/Model/Edit.tsx +46 -0
  596. package/ui/Model/EditModal.tsx +301 -0
  597. package/ui/Model/EditWrapper.tsx +48 -0
  598. package/ui/Model/LoadInit.tsx +11 -0
  599. package/ui/Model/New.tsx +46 -0
  600. package/ui/Model/NewWrapper.tsx +20 -0
  601. package/ui/Model/NewWrapper_Client.tsx +57 -0
  602. package/ui/Model/Remove.tsx +75 -0
  603. package/ui/Model/RemoveWrapper.tsx +38 -0
  604. package/ui/Model/SureToRemove.tsx +108 -0
  605. package/ui/Model/View.tsx +65 -0
  606. package/ui/Model/ViewEditModal.tsx +125 -0
  607. package/ui/Model/ViewModal.tsx +71 -0
  608. package/ui/Model/ViewWrapper.tsx +38 -0
  609. package/ui/Model/index.ts +33 -0
  610. package/ui/Model/index_.tsx +16 -0
  611. package/ui/More.tsx +56 -0
  612. package/ui/ObjectId.tsx +29 -0
  613. package/ui/Pagination.tsx +120 -0
  614. package/ui/Popconfirm.tsx +135 -0
  615. package/ui/Portal.tsx +10 -0
  616. package/ui/Radio.tsx +53 -0
  617. package/ui/RecentTime.tsx +123 -0
  618. package/ui/Refresh.tsx +24 -0
  619. package/ui/ScreenNavigator.tsx +129 -0
  620. package/ui/Select.tsx +322 -0
  621. package/ui/Signal/Arg.tsx +352 -0
  622. package/ui/Signal/Doc.tsx +231 -0
  623. package/ui/Signal/Listener.tsx +74 -0
  624. package/ui/Signal/Message.tsx +267 -0
  625. package/ui/Signal/Object.tsx +131 -0
  626. package/ui/Signal/PubSub.tsx +247 -0
  627. package/ui/Signal/Request.tsx +30 -0
  628. package/ui/Signal/Response.tsx +76 -0
  629. package/ui/Signal/RestApi.tsx +390 -0
  630. package/ui/Signal/WebSocket.tsx +47 -0
  631. package/ui/Signal/index.ts +10 -0
  632. package/ui/Signal/makeExample.ts +75 -0
  633. package/ui/System/CSR.tsx +420 -0
  634. package/ui/System/Client.tsx +296 -0
  635. package/ui/System/Common.tsx +83 -0
  636. package/ui/System/DevModeToggle.tsx +21 -0
  637. package/ui/System/Gtag.tsx +69 -0
  638. package/ui/System/Messages.tsx +175 -0
  639. package/ui/System/Reconnect.tsx +156 -0
  640. package/ui/System/Root.tsx +10 -0
  641. package/ui/System/SSR.tsx +163 -0
  642. package/ui/System/SelectLanguage.tsx +47 -0
  643. package/ui/System/ThemeToggle.tsx +98 -0
  644. package/ui/System/index.tsx +23 -0
  645. package/ui/Tab/Menu.tsx +56 -0
  646. package/ui/Tab/Menus.tsx +10 -0
  647. package/ui/Tab/Panel.tsx +25 -0
  648. package/ui/Tab/Provider.tsx +25 -0
  649. package/ui/Tab/context.ts +16 -0
  650. package/ui/Tab/index.tsx +11 -0
  651. package/ui/Table.tsx +131 -0
  652. package/ui/ToggleSelect.tsx +144 -0
  653. package/ui/Unauthorized.tsx +29 -0
  654. package/ui/animated.tsx +8 -0
  655. package/ui/fontCss.ts +86 -0
  656. package/ui/index.ts +44 -0
  657. package/ui/styles.css +617 -0
  658. package/webkit/bootCsr.tsx +275 -0
  659. package/webkit/createRobotPage.ts +15 -0
  660. package/webkit/createSitemapPage.ts +4 -0
  661. package/webkit/index.ts +19 -0
  662. package/webkit/lazy.tsx +37 -0
  663. package/webkit/types.ts +7 -0
  664. package/webkit/useCamera.tsx +99 -0
  665. package/webkit/useCodepush.tsx +99 -0
  666. package/webkit/useContact.tsx +48 -0
  667. package/webkit/useCsrValues.ts +661 -0
  668. package/webkit/useDebounce.ts +24 -0
  669. package/webkit/useFetch.ts +48 -0
  670. package/webkit/useGeoLocation.tsx +24 -0
  671. package/webkit/useHistory.ts +76 -0
  672. package/webkit/useInterval.ts +21 -0
  673. package/webkit/useLocation.ts +69 -0
  674. package/webkit/usePurchase.tsx +156 -0
  675. package/webkit/usePushNoti.tsx +48 -0
  676. package/webkit/useThrottle.ts +22 -0
  677. package/src/index.js +0 -2
  678. package/src/index.js.map +0 -1
  679. package/src/lib/akan2.js +0 -4
  680. package/src/lib/akan2.js.map +0 -1
  681. package/src/run.js +0 -4
  682. package/src/run.js.map +0 -1
@@ -0,0 +1,767 @@
1
+ Shared UI Library Analysis
2
+
3
+ Library Overview
4
+
5
+ The shared UI library in the akansoft project is a comprehensive React component collection designed for building data-driven
6
+ applications. It provides a complete toolkit with consistent patterns, extensive customization options, and deep integration with the
7
+ application's store system.
8
+
9
+ Key Characteristics
10
+
11
+ - Store-Centric Architecture: Deep integration with standardized store slices and naming conventions
12
+ - Type-Safe Components: Extensive TypeScript generic usage for compile-time safety
13
+ - Internationalization Ready: Built-in multi-language support throughout all components
14
+ - Responsive Design: Mobile-first approach with adaptive breakpoints
15
+ - Performance Optimized: Memoization, lazy loading, and efficient re-rendering
16
+ - Accessibility Compliant: Proper ARIA attributes and keyboard navigation
17
+ - Extensible Architecture: Plugin systems and customizable renderers
18
+ - Unidirectional Data Flow: Predictable state management patterns
19
+
20
+ Component Categories
21
+
22
+ 1. Field Components (Field.tsx)
23
+
24
+ Field.tsx is a core form component library for the akansoft project, providing more than 25 specialized input fields.
25
+
26
+ ## Basic Structure and Common Features
27
+
28
+ ### Label Component
29
+
30
+ \`\`\`typescript
31
+ interface LabelProps {
32
+ className?: string;
33
+ label: string;
34
+ desc?: string;
35
+ unit?: string;
36
+ nullable?: boolean;
37
+ mode?: "view" | "edit";
38
+ }
39
+ \`\`\`
40
+
41
+ - Purpose: Consistent label display for all fields
42
+ - Features:
43
+ - Help tooltip support (desc)
44
+ - Unit display (unit)
45
+ - Optional field display (nullable)
46
+ - Required indicator is commented out (design decision)
47
+
48
+ ## Text Input Components
49
+
50
+ ### 1. Field.Text
51
+
52
+ \`\`\`typescript
53
+ interface TextProps {
54
+ label?: string;
55
+ desc?: string;
56
+ value: string | null;
57
+ onChange: (value: string) => void;
58
+ placeholder?: string;
59
+ nullable?: boolean;
60
+ disabled?: boolean;
61
+ minlength?: number; // Default: nullable ? 0 : 2
62
+ maxlength?: number; // Default: 200
63
+ transform?: (value: string) => string;
64
+ validate?: (text: string) => boolean | string;
65
+ cache?: boolean; // Form caching support
66
+ onPressEnter?: () => void;
67
+ inputStyleType?: "bordered" | "borderless" | "underline";
68
+ }
69
+ \`\`\`
70
+ Key features:
71
+
72
+ - Real-time transformation (transform)
73
+ - Automatic cache key generation: \${label}-\${desc}-text
74
+ - Length validation and custom validation
75
+ - Various input styles supported
76
+
77
+ ### 2. Field.TextArea
78
+
79
+ \`\`\`typescript
80
+ interface TextAreaProps {
81
+ // Same basic props as Text +
82
+ rows?: number; // Default: 3
83
+ maxlength?: number; // Default: 1000
84
+ }
85
+ \`\`\`
86
+ Key features:
87
+
88
+ - Multi-line text input
89
+ - Adjustable height (rows)
90
+ - Longer maximum length than Text
91
+
92
+ ### 3. Field.Price (to be deprecated)
93
+
94
+ \`\`\`typescript
95
+ interface PriceProps {
96
+ // Similar to Text but specialized for prices
97
+ maxlength?: number; // Default: 80
98
+ placeholder?: string; // Default: "~ \${l('base.priceUnit')}"
99
+ }
100
+ \`\`\`
101
+ Key features:
102
+
103
+ - Automatic removal of commas and spaces
104
+ - Automatic price unit placeholder
105
+ - Marked as "delete" in comments - legacy component
106
+
107
+ ## List Management Components
108
+
109
+ ### 4. Field.List
110
+
111
+ \`\`\`typescript
112
+ interface ListProps<Item> {
113
+ label?: string;
114
+ value: Item[];
115
+ onChange: (value: Item[]) => void;
116
+ onAdd: () => void;
117
+ renderItem: (item: Item, idx: number) => ReactNode;
118
+ }
119
+ \`\`\`
120
+ Key features:
121
+
122
+ - Generic type supporting all item types
123
+ - Custom rendering for each item
124
+ - Automatic delete button addition
125
+ - Automatic divider insertion
126
+
127
+ ### 5. Field.TextList
128
+
129
+ \`\`\`typescript
130
+ interface TextListProps {
131
+ value: string[];
132
+ onChange: (value: string[]) => void;
133
+ minlength?: number; // Minimum array length, Default: 0
134
+ maxlength?: number; // Maximum array length, Default: 50
135
+ minTextlength?: number; // Minimum individual text length, Default: 2
136
+ maxTextlength?: number; // Maximum individual text length, Default: 200
137
+ transform?: (value: string) => string;
138
+ validate?: (text: string) => boolean | string;
139
+ cache?: boolean;
140
+ }
141
+ \`\`\`
142
+ Key features:
143
+
144
+ - Drag and drop for order changes
145
+ - Individual text input validation
146
+ - Cache key: \${label}-\${desc}-textList-[\${idx}]
147
+ - Conditional "New" button display based on maximum length limit
148
+
149
+ ### 6. Field.Tags
150
+
151
+ \`\`\`typescript
152
+ interface TagsProps {
153
+ value: string[];
154
+ onChange: (value: string[]) => void;
155
+ minlength?: number; // Default: 0
156
+ maxlength?: number; // Default: 50
157
+ minTextlength?: number; // Default: 2
158
+ maxTextlength?: number; // Default: 10 (tags are shorter)
159
+ transform?: (value: string) => string;
160
+ validate?: (text: string) => boolean | string;
161
+ }
162
+ \`\`\`
163
+ Key features:
164
+
165
+ - Tag style UI (includes # prefix)
166
+ - Inline editing mode
167
+ - Creates additional input field when clicked
168
+ - Cancel editing with ESC key
169
+ - Complete tag addition with Enter/Blur
170
+
171
+ ## Numeric Input Components
172
+
173
+ ### 7. Field.Number
174
+
175
+ \`\`\`typescript
176
+ interface NumberProps {
177
+ value: number | null;
178
+ onChange: (value: number) => void;
179
+ min?: number;
180
+ max?: number;
181
+ unit?: string;
182
+ transform?: (value: number) => number;
183
+ validate?: (text: number) => boolean | string;
184
+ formatter?: (value: string) => string; // Display format
185
+ parser?: (value: string) => string; // Parsing format
186
+ cache?: boolean;
187
+ }
188
+ \`\`\`
189
+ Key features:
190
+
191
+ - Automatic number validation and min/max checks
192
+ - Customizable display format with formatter/parser
193
+ - Unit display support
194
+ - Cache key: \${label}-\${desc}-number
195
+
196
+ ### 8. Field.DoubleNumber
197
+
198
+ \`\`\`typescript
199
+ interface DoubleNumberProps {
200
+ value: [number, number] | null;
201
+ onChange: (value: [number, number]) => void;
202
+ min?: [number, number] | null;
203
+ max?: [number, number] | null;
204
+ separator?: ReactNode | string; // Separator between inputs
205
+ }
206
+ \`\`\`
207
+ Key features:
208
+
209
+ - Range input (start-end values)
210
+ - Independent min/max validation for each
211
+ - Custom separator (e.g., "~", "-")
212
+ - Cache keys: \${label}-\${desc}-number-[0], \${label}-\${desc}-number-[1]
213
+
214
+ ## Selection Components
215
+
216
+ ### 9. Field.Switch
217
+
218
+ \`\`\`typescript
219
+ interface SwitchProps {
220
+ value: boolean;
221
+ onChange: (value: boolean) => void;
222
+ onDesc?: string; // Description when true
223
+ offDesc?: string; // Description when false
224
+ disabled?: boolean;
225
+ }
226
+ \`\`\`
227
+ Key features:
228
+
229
+ - DaisyUI toggle style
230
+ - State-specific description text
231
+ - Uses toggle-accent class
232
+
233
+ ### 10. Field.ToggleSelect
234
+
235
+ \`\`\`typescript
236
+ interface ToggleSelectProps<I> {
237
+ items: { label: string; value: I }[] | readonly I[] | I[] | Enum<I>;
238
+ value: I | null;
239
+ onChange: (value: I) => void;
240
+ model?: string; // Model name for internationalization
241
+ field?: string; // Field name for internationalization
242
+ validate?: (value: I) => boolean | string;
243
+ btnClassName?: string;
244
+ }
245
+ \`\`\`
246
+ Key features:
247
+
248
+ - Button-style single selection
249
+ - Direct Enum type support
250
+ - Automatic internationalization (l.enum(model, field, item))
251
+ - Custom button styling
252
+
253
+ ### 11. Field.MultiToggleSelect
254
+
255
+ \`\`\`typescript
256
+ interface MultiToggleSelectProps<I> {
257
+ items: Enum<I> | { label: string; value: I }[] | readonly I[] | I[];
258
+ value: I[];
259
+ onChange: (value: I[]) => void;
260
+ minlength?: number;
261
+ maxlength?: number;
262
+ validate?: (value: I[]) => boolean | string;
263
+ }
264
+ \`\`\`
265
+ Key features:
266
+
267
+ - Multiple selection button UI
268
+ - Minimum/maximum selection limit
269
+ - Array length validation
270
+
271
+ ## Relational Data Selection Components
272
+
273
+ ### 12. Field.Parent & Field.ParentId
274
+
275
+ \`\`\`typescript
276
+ interface ParentProps<T, State, Input, Full, Light, Sort, QueryArgs> {
277
+ sliceName: string; // Target slice name
278
+ value: Light | null; // Parent returns object
279
+ onChange: (value?: Light | null) => void;
280
+ initArgs?: any[]; // Initialization arguments
281
+ sortOption?: (a: Light, b: Light) => number;
282
+ renderOption: (model: Light) => ReactNode; // Option renderer
283
+ renderSelected?: (value: Light) => ReactNode; // Selected item renderer
284
+ onSearch?: (text: string) => void; // Search handler
285
+ }
286
+
287
+ interface ParentIdProps extends ParentProps {
288
+ value: string | null; // ParentId returns only ID
289
+ onChange: (id?: string | null, model?: Light | null) => void;
290
+ }
291
+ \`\`\`
292
+ Key features:
293
+
294
+ - Dynamic store slice integration
295
+ - Automatic naming convention: \${modelName}List, init\${ModelName}, etc.
296
+ - Searchable dropdown
297
+ - Lazy loading (data fetched on onOpen)
298
+ - Parent: returns full object, ParentId: returns only ID
299
+
300
+ ### 13. Field.Children & Field.ChildrenId
301
+
302
+ \`\`\`typescript
303
+ interface ChildrenProps extends ParentProps {
304
+ value: Light[]; // Multiple selection
305
+ onChange: (value?: Light[] | null) => void;
306
+ }
307
+
308
+ interface ChildrenIdProps extends ChildrenProps {
309
+ value: string[]; // ID array
310
+ onChange: (value: string[]) => void;
311
+ }
312
+ \`\`\`
313
+ Key features:
314
+
315
+ - Multiple relationship selection
316
+ - Same store integration logic as Parent
317
+ - Automatic initialization (useEffect)
318
+
319
+ ## Date/Time Components
320
+
321
+ ### 14. Field.Date
322
+
323
+ \`\`\`typescript
324
+ interface DateProps<Nullable extends boolean> {
325
+ value: Nullable extends true ? Dayjs | null : Dayjs;
326
+ onChange: (value: Dayjs) => void;
327
+ min?: Dayjs;
328
+ max?: Dayjs;
329
+ showTime?: boolean; // datetime-local vs date
330
+ nullable?: boolean;
331
+ }
332
+ \`\`\`
333
+ Key features:
334
+
335
+ - Uses Dayjs objects
336
+ - Conditional nullable type (using TypeScript generics)
337
+ - Automatic format change based on showTime
338
+ - Uses HTML5 date/datetime-local inputs
339
+ - Includes comment about DaisyUI max value bug
340
+
341
+ ### 15. Field.DateRange
342
+
343
+ \`\`\`typescript
344
+ interface DateRangeProps<Nullable extends boolean> {
345
+ from: Nullable extends true ? Dayjs | null : Dayjs;
346
+ to: Nullable extends true ? Dayjs | null : Dayjs;
347
+ onChangeFrom: (value: Dayjs) => void;
348
+ onChangeTo: (value: Dayjs) => void;
349
+ onChange?: (from: Dayjs, to: Dayjs) => void; // Optional unified handler
350
+ showTime?: boolean;
351
+ }
352
+ \`\`\`
353
+ Key features:
354
+
355
+ - Individual management of start/end dates
356
+ - Optional unified change handler
357
+ - Automatic "From"/"To" label display
358
+ - Responsive layout (vertical on mobile)
359
+
360
+ ## File Upload Components
361
+
362
+ ### 16. Field.Img
363
+
364
+ \`\`\`typescript
365
+ interface ImageProps {
366
+ sliceName: string; // Determines file upload API
367
+ value: cnst.File | null;
368
+ onChange: (file: cnst.File | null) => void;
369
+ styleType?: "circle" | "square"; // Default: "circle"
370
+ aspectRatio?: number[]; // Aspect ratio restriction
371
+ render?: (file: cnst.File) => ReactNode;
372
+ disabled?: boolean;
373
+ }
374
+ \`\`\`
375
+ Key features:
376
+
377
+ - Dynamic upload API: add\${capitalize(sliceName)}Files
378
+ - Upload status polling (1-second interval)
379
+ - Aspect ratio restriction support
380
+ - Circular/square preview
381
+
382
+ ### 17. Field.Imgs
383
+
384
+ \`\`\`typescript
385
+ interface ImagesProps {
386
+ sliceName: string;
387
+ value: cnst.File[];
388
+ onChange: (files: cnst.File[]) => void;
389
+ minlength?: number; // Default: 1
390
+ maxlength?: number; // Default: 30
391
+ render?: (file: cnst.File) => ReactNode;
392
+ }
393
+ \`\`\`
394
+ Key features:
395
+
396
+ - Multiple image upload
397
+ - Batch polling of upload status
398
+ - Minimum/maximum file count limit
399
+ - Fixed square style
400
+
401
+ ### 18. Field.File & Field.Files
402
+
403
+ \`\`\`typescript
404
+ interface FileProps {
405
+ sliceName: string;
406
+ value: cnst.File | null; // File is single
407
+ onChange: (file: cnst.File | null) => void;
408
+ render?: (file: cnst.File) => ReactNode;
409
+ }
410
+
411
+ interface FilesProps {
412
+ sliceName: string;
413
+ value: cnst.File[]; // Files is multiple
414
+ onChange: (files: cnst.File[]) => void;
415
+ minlength?: number; // Default: 1
416
+ maxlength?: number; // Default: 30
417
+ }
418
+ \`\`\`
419
+ Key features:
420
+
421
+ - Support for all file types (beyond images)
422
+ - Same upload logic as Img/Imgs
423
+ - Custom file renderer support
424
+
425
+ ## Rich Text Editor
426
+
427
+ ### 19. Field.Slate
428
+
429
+ \`\`\`typescript
430
+ interface SlateProps {
431
+ sliceName: string; // Determines file upload API
432
+ valuePath: string; // Store path
433
+ onChange: (value: unknown) => void;
434
+ addFile: (file: cnst.File | cnst.File[], options?) => void;
435
+ placeholder?: string;
436
+ disabled?: boolean;
437
+ editorHeight?: string;
438
+ }
439
+ \`\`\`
440
+ Key features:
441
+
442
+ - Slate.js-based rich text editor
443
+ - File drag and drop support
444
+ - Dynamic store path access
445
+ - Adjustable height
446
+
447
+ ### 20. Field.Yoopta
448
+
449
+ \`\`\`typescript
450
+ interface YooptaProps {
451
+ value: JSON;
452
+ onChange: (value: JSON) => void;
453
+ readonly?: boolean;
454
+ }
455
+ \`\`\`
456
+ Key features:
457
+
458
+ - Yoopta editor integration
459
+ - JSON data format
460
+ - Read-only mode support
461
+
462
+ ## Authentication and Contact Components
463
+
464
+ ### 21. Field.Email
465
+
466
+ \`\`\`typescript
467
+ interface EmailProps {
468
+ value: string | null;
469
+ onChange: (value: string) => void;
470
+ placeholder?: string; // Default: "example@email.com"
471
+ minlength?: number; // Default: nullable ? 0 : 2
472
+ maxlength?: number; // Default: 80
473
+ inputStyleType?: "bordered" | "borderless" | "underline";
474
+ cache?: boolean;
475
+ }
476
+ \`\`\`
477
+ Key features:
478
+
479
+ - Automatic email format validation
480
+ - Uses Input.Email component
481
+ - Cache key: \${label}-\${desc}-email
482
+
483
+ ### 22. Field.Phone
484
+
485
+ \`\`\`typescript
486
+ interface PhoneProps {
487
+ value: string | null;
488
+ onChange: (value: string) => void;
489
+ maxlength?: number; // Default: 13
490
+ transform?: (value: string) => string; // Default: formatPhone
491
+ cache?: boolean;
492
+ }
493
+ \`\`\`
494
+ Key features:
495
+
496
+ - Automatic phone number formatting (formatPhone)
497
+ - isPhoneNumber validation
498
+ - Cache key: \${label}-\${desc}-phone
499
+
500
+ ### 23. Field.Password
501
+
502
+ \`\`\`typescript
503
+ interface PasswordProps {
504
+ value: string | null;
505
+ onChange: (value: string) => void;
506
+ confirmValue?: string | null; // Confirmation input
507
+ onChangeConfirm?: (value: string) => void;
508
+ showConfirm?: boolean; // Show confirmation input
509
+ minlength?: number; // Default: nullable ? 0 : 8
510
+ maxlength?: number; // Default: 20
511
+ cache?: boolean;
512
+ }
513
+ \`\`\`
514
+ Key features:
515
+
516
+ - Optional password confirmation input
517
+ - Automatic match validation
518
+ - Secure input (masking)
519
+ - Cache key: \${label}-\${desc}-password
520
+
521
+ ## Geographic Location Components
522
+
523
+ ### 24. Field.Coordinate
524
+
525
+ \`\`\`typescript
526
+ interface CoordinateProps {
527
+ coordinate: cnst.util.Coordinate | null;
528
+ onChange: (coordinate: cnst.util.Coordinate) => void;
529
+ mapKey: string; // Google Maps API key
530
+ mapClassName?: string;
531
+ disabled?: boolean;
532
+ }
533
+ \`\`\`
534
+ Key features:
535
+
536
+ - Google Maps integration
537
+ - Coordinate selection by clicking
538
+ - Automatic marker display (AiTwotoneEnvironment icon)
539
+ - Default zoom level 3
540
+
541
+ ### 25. Field.Postcode
542
+
543
+ \`\`\`typescript
544
+ interface PostcodeProps {
545
+ kakaoKey: string; // Kakao API key
546
+ address: string | null;
547
+ onChange: ({
548
+ address: string;
549
+ addressEn: string;
550
+ zipcode: string;
551
+ coordinate: cnst.util.Coordinate;
552
+ }) => void;
553
+ }
554
+ \`\`\`
555
+ Key features:
556
+
557
+ - Daum postcode service (react-daum-postcode)
558
+ - Coordinate conversion using Kakao Maps API
559
+ - Simultaneous Korean/English address provision
560
+ - Modal address search
561
+
562
+ ## Common Patterns and Features
563
+
564
+ ### 1. Caching System
565
+
566
+ Most input components support form data persistence with the cache prop:
567
+ cacheKey={cache ? \`\${label}-\${desc}-\${componentType}\` : undefined}
568
+
569
+ ### 2. Validation System
570
+
571
+ All components support multi-layer validation:
572
+
573
+ - Basic validation (length, type, format)
574
+ - Custom validation functions
575
+ - Internationalized error messages
576
+
577
+ ### 3. Internationalization
578
+
579
+ - Labels, placeholders, error messages all use l() function
580
+ - Automatic translation for Enum types
581
+ - Multi-language error message templates
582
+
583
+ ### 4. Store Integration
584
+
585
+ Relational components automatically connect to the store through naming conventions:
586
+ \`\`\`javascript
587
+ const names = {
588
+ model: modelName,
589
+ modelList: \`\${modelName}List\`,
590
+ initModel: \`init\${ModelName}\`,
591
+ };
592
+ \`\`\`
593
+
594
+ ### 5. Type Safety
595
+
596
+ - Type safety ensured with TypeScript generics
597
+ - Conditional types for handling nullable properties
598
+ - Strict props interface definitions
599
+
600
+ This comprehensive field library provides a consistent user experience and developer convenience, designed to make complex form compositions simple and safe. 2. Data Components (/Data/)
601
+
602
+ Purpose: Complete data visualization and management interfaces
603
+
604
+ ListContainer
605
+
606
+ - type?: "card" | "list" - Display mode selection
607
+ - columns?: DataColumn<any>[] - Column configuration
608
+ - tools?: DataTool[] - Toolbar actions
609
+ - renderDashboard?: (props) => ReactNode - Dashboard customization
610
+ - renderItem?: (props) => ReactNode - Item renderer
611
+
612
+ CardList
613
+
614
+ - sliceName: string - Store slice identifier
615
+ - columns: DataColumn<any>[] - Data column definitions
616
+ - actions?: DataAction<Light>[] - Item actions
617
+ - renderItem: (args) => ReactNode - Card renderer
618
+ - renderLoading?: () => ReactNode - Loading state
619
+
620
+ Dashboard
621
+
622
+ - summary: { [key: string]: any } - Statistics data
623
+ - queryMap: { [key: string]: any } - Filter mappings
624
+ - columns?: string[] - Clickable statistics
625
+ - hidePresents?: boolean - Display control
626
+
627
+ 3. Load Components (/Load/)
628
+
629
+ Purpose: Data loading and state management with SSR/CSR support
630
+
631
+ Page
632
+
633
+ - loader: () => Promise<Return> - Data fetching function
634
+ - render: (data: Return) => ReactNode - Content renderer
635
+ - loading?: () => ReactNode - Loading state
636
+
637
+ Edit
638
+
639
+ - edit: ClientEdit<T, Full> | Partial<Full> - Edit data
640
+ - type?: "modal" | "form" | "empty" - Display mode
641
+ - sliceName: string - Store slice
642
+ - onSubmit?: string | ((model: Full) => void) - Submit handler
643
+
644
+ Units
645
+
646
+ - init: ClientInit<T, L> - Initial data
647
+ - filter?: (item: L, idx: number) => boolean - Item filtering
648
+ - sort?: (a: L, b: L) => number - Sorting function
649
+ - renderItem?: (item: L, idx: number) => ReactNode - Item renderer
650
+ - pagination?: boolean - Pagination control
651
+
652
+ 4. Model Components (/Model/)
653
+
654
+ Purpose: CRUD operations with modal and inline editing
655
+
656
+ EditModal
657
+
658
+ - sliceName: string - Store slice identifier
659
+ - id?: string - Model ID for editing
660
+ - renderTitle?: ((model: Full) => ReactNode) | string - Title customization
661
+ - onSubmit?: string | ((model: Full) => void) - Submit handler
662
+ - onCancel?: string | ((form?: any) => any) - Cancel handler
663
+
664
+ ViewModal
665
+
666
+ - id: string - Model identifier
667
+ - renderView: (model: any) => ReactNode - View content renderer
668
+ - renderAction?: (model: any) => ReactNode - Action buttons
669
+
670
+ NewWrapper
671
+
672
+ - sliceName: string - Store slice
673
+ - partial?: Partial<Full> - Default values
674
+ - modal?: string | null - Modal type
675
+
676
+ 5. System Components (/System/)
677
+
678
+ Purpose: Application-level providers and system utilities
679
+
680
+ Provider (CSR)
681
+
682
+ - fonts: ReactFont[] - Font configurations
683
+ - gaTrackingId?: string - Analytics tracking
684
+ - layoutStyle?: "mobile" | "web" - Layout mode
685
+
686
+ Provider (SSR)
687
+
688
+ - fonts?: NextFont[] - Next.js font configurations
689
+
690
+ SelectLanguage
691
+
692
+ - languages?: string[] - Available languages
693
+
694
+ 6. Only Components (/Only/)
695
+
696
+ Purpose: Conditional rendering based on user state and device
697
+
698
+ Admin
699
+
700
+ - roles?: cnst.AdminRole[] - Required admin roles
701
+
702
+ User
703
+
704
+ - roles?: cnst.UserRole[] - Required user roles
705
+
706
+ Show
707
+
708
+ - show?: boolean | cnst.util.Responsive[] - Show conditions
709
+
710
+ Mobile/Web
711
+
712
+ - No props - Device-based rendering
713
+
714
+ 7. Editor Components (/Editor/)
715
+
716
+ Purpose: Rich text editing capabilities
717
+
718
+ Slate
719
+
720
+ - addFilesGql: (fileList: FileList, id?: string) => Promise<File[]> - File upload
721
+ - addFile: (file: cnst.File | cnst.File[], options?) => void - File management
722
+ - onChange: (value: unknown) => void - Content change handler
723
+ - defaultValue?: unknown - Initial content
724
+ - placeholder?: string - Placeholder text
725
+ - disabled?: boolean - Read-only mode
726
+
727
+ SlateContent
728
+
729
+ - content: unknown - Slate content to display
730
+
731
+ 8. Property Component (Property.tsx)
732
+
733
+ Purpose: Metadata-driven property editing
734
+
735
+ - prop: string - Property name
736
+ - renderTemplate?: (form: any) => ReactNode - Custom edit renderer
737
+ - renderView?: (model: any) => ReactNode - Custom view renderer
738
+ - modelPath?: string - Model path in store
739
+
740
+ Integration Patterns
741
+
742
+ Store Integration
743
+
744
+ - Components use standardized naming conventions for store slices
745
+ - Automatic state management through slice integration
746
+ - Consistent error handling and loading states
747
+
748
+ Validation System
749
+
750
+ - Built-in validation for all field types
751
+ - Custom validation function support
752
+ - Internationalized error messages
753
+
754
+ File Management
755
+
756
+ - Integrated file upload system
757
+ - Progress tracking and status management
758
+ - Multiple file type support with preview
759
+
760
+ Responsive Behavior
761
+
762
+ - Mobile-first design approach
763
+ - Adaptive layouts based on screen size
764
+ - Touch-friendly interactions
765
+
766
+ This comprehensive UI library provides everything needed to build sophisticated data management interfaces with consistent user
767
+ experience and maintainable code architecture.