@akanjs/cli 0.0.149 → 0.0.151
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.
- package/cjs/index.js +28 -20
- package/cjs/src/guidelines/componentRule/componentRule.generate.json +131 -0
- package/cjs/src/guidelines/componentRule/componentRule.instruction.md +7 -6
- package/cjs/src/guidelines/cssRule/cssRule.generate.json +93 -0
- package/cjs/src/guidelines/databaseModule/databaseModule.generate.json +51 -0
- package/cjs/src/guidelines/databaseModule/databaseModule.instruction.md +4 -17
- package/cjs/src/guidelines/docPageRule/docPageRule.generate.json +72 -0
- package/cjs/src/guidelines/enumConstant/enumConstant.generate.json +24 -0
- package/cjs/src/guidelines/fieldDecorator/fieldDecorator.generate.json +135 -0
- package/cjs/src/guidelines/framework/framework.generate.json +119 -0
- package/cjs/src/guidelines/howToUseStore/howToUseStore.generate.json +0 -0
- package/cjs/src/guidelines/modelConstant/modelConstant.generate.json +135 -0
- package/cjs/src/guidelines/modelConstant/modelConstant.instruction.md +1 -1
- package/cjs/src/guidelines/modelDictionary/modelDictionary.generate.json +115 -0
- package/cjs/src/guidelines/modelDocument/modelDocument.generate.json +129 -0
- package/cjs/src/guidelines/modelService/modelService.generate.json +179 -0
- package/cjs/src/guidelines/modelSignal/modelSignal.generate.json +202 -0
- package/cjs/src/guidelines/modelStore/modelStore.generate.json +130 -0
- package/cjs/src/guidelines/modelTemplate/modelTemplate.generate.json +104 -0
- package/cjs/src/guidelines/modelUnit/modelUnit.generate.json +92 -0
- package/cjs/src/guidelines/modelUnit/modelUnit.instruction.md +2 -2
- package/cjs/src/guidelines/modelUtil/modelUtil.generate.json +93 -0
- package/cjs/src/guidelines/modelView/modelView.generate.json +80 -0
- package/cjs/src/guidelines/modelView/modelView.instruction.md +1 -1
- package/cjs/src/guidelines/modelZone/modelZone.generate.json +126 -0
- package/cjs/src/guidelines/modelZone/modelZone.instruction.md +3 -3
- package/cjs/src/guidelines/scalarConstant/scalarConstant.generate.json +102 -0
- package/cjs/src/guidelines/scalarDictionary/scalarDictionary.generate.json +83 -0
- package/cjs/src/guidelines/scalarModule/scalarModule.generate.json +35 -0
- package/cjs/src/guidelines/sharedUiUsage/sharedUiUsage.generate.json +115 -0
- package/cjs/src/guidelines/sharedUiUsage/sharedUiUsage.instruction.md +5 -10
- package/cjs/src/guidelines/utilUiUsage/utilUiUsage.generate.json +140 -0
- package/cjs/src/guidelines/utilUiUsage/utilUiUsage.instruction.md +1 -1
- package/cjs/src/templates/app/app/[lang]/(__appName__)/(public)/forgotpassword/page.js +47 -0
- package/cjs/src/templates/app/app/[lang]/(__appName__)/(public)/page.js +128 -0
- package/cjs/src/templates/app/app/[lang]/(__appName__)/(public)/privacy/page.js +42 -0
- package/cjs/src/templates/app/app/[lang]/(__appName__)/(public)/signin/page.js +50 -0
- package/cjs/src/templates/app/app/[lang]/(__appName__)/(public)/termsofservice/page.js +41 -0
- package/cjs/src/templates/app/app/[lang]/(__appName__)/(public)/unknown/page.js +51 -0
- package/cjs/src/templates/app/app/[lang]/(__appName__)/(user)/layout.js +43 -0
- package/cjs/src/templates/app/app/[lang]/(__appName__)/(user)/self/page.js +60 -0
- package/cjs/src/templates/app/app/[lang]/(__appName__)/layout.js +54 -0
- package/cjs/src/templates/app/app/[lang]/admin/layout.js +54 -0
- package/cjs/src/templates/app/app/[lang]/admin/page.js +63 -0
- package/cjs/src/templates/app/app/csr.js +34 -0
- package/cjs/src/templates/app/app/layout.js +38 -0
- package/cjs/src/templates/app/lib/setting/Setting.Template.js +57 -0
- package/cjs/src/templates/app/lib/setting/Setting.Unit.js +38 -0
- package/cjs/src/templates/app/lib/setting/Setting.Util.js +34 -0
- package/cjs/src/templates/app/lib/setting/Setting.View.js +51 -0
- package/cjs/src/templates/app/lib/setting/Setting.Zone.js +80 -0
- package/cjs/src/templates/app/lib/setting/index.js +61 -0
- package/cjs/src/templates/app/lib/summary/Summary.Template.js +43 -0
- package/cjs/src/templates/app/lib/summary/Summary.Unit.js +38 -0
- package/cjs/src/templates/app/lib/summary/Summary.Util.js +33 -0
- package/cjs/src/templates/app/lib/summary/Summary.View.js +51 -0
- package/cjs/src/templates/app/lib/summary/Summary.Zone.js +62 -0
- package/cjs/src/templates/app/lib/summary/index.js +67 -0
- package/cjs/src/templates/app/lib/user/User.Template.js +65 -0
- package/cjs/src/templates/app/lib/user/User.Unit.js +38 -0
- package/cjs/src/templates/app/lib/user/User.Util.js +94 -0
- package/cjs/src/templates/app/lib/user/User.View.js +66 -0
- package/cjs/src/templates/app/lib/user/User.Zone.js +74 -0
- package/cjs/src/templates/app/lib/user/index.js +61 -0
- package/cjs/src/templates/app/main.js +1 -2
- package/cjs/src/templates/app/public/favicon.ico +0 -0
- package/cjs/src/templates/app/public/icons/icon-128x128.png +0 -0
- package/cjs/src/templates/app/public/icons/icon-144x144.png +0 -0
- package/cjs/src/templates/app/public/icons/icon-152x152.png +0 -0
- package/cjs/src/templates/app/public/icons/icon-192x192.png +0 -0
- package/cjs/src/templates/app/public/icons/icon-256x256.png +0 -0
- package/cjs/src/templates/app/public/icons/icon-384x384.png +0 -0
- package/cjs/src/templates/app/public/icons/icon-48x48.png +0 -0
- package/cjs/src/templates/app/public/icons/icon-512x512.png +0 -0
- package/cjs/src/templates/app/public/icons/icon-72x72.png +0 -0
- package/cjs/src/templates/app/public/icons/icon-96x96.png +0 -0
- package/cjs/src/templates/app/public/logo.svg +70 -0
- package/cjs/src/templates/app/ui/Footer.js +67 -0
- package/cjs/src/templates/app/ui/MainHeader.js +131 -0
- package/cjs/src/templates/crudPages/[__model__Id]/edit/page.js +73 -0
- package/cjs/src/templates/crudPages/[__model__Id]/page.js +83 -0
- package/cjs/src/templates/crudPages/new/page.js +70 -0
- package/cjs/src/templates/crudPages/page.js +71 -0
- package/cjs/src/templates/lib/__lib/lib.dictionary.js +2 -2
- package/cjs/src/templates/lib/__lib/lib.signal.js +3 -3
- package/cjs/src/templates/lib/__lib/lib.store.js +2 -1
- package/cjs/src/templates/libRoot/lib/setting/Setting.Template.js +57 -0
- package/cjs/src/templates/libRoot/lib/setting/Setting.Unit.js +38 -0
- package/cjs/src/templates/libRoot/lib/setting/Setting.Util.js +34 -0
- package/cjs/src/templates/libRoot/lib/setting/Setting.View.js +51 -0
- package/cjs/src/templates/libRoot/lib/setting/Setting.Zone.js +80 -0
- package/cjs/src/templates/libRoot/lib/setting/index.js +61 -0
- package/cjs/src/templates/libRoot/lib/summary/Summary.Template.js +43 -0
- package/cjs/src/templates/libRoot/lib/summary/Summary.Unit.js +38 -0
- package/cjs/src/templates/libRoot/lib/summary/Summary.Util.js +33 -0
- package/cjs/src/templates/libRoot/lib/summary/Summary.View.js +51 -0
- package/cjs/src/templates/libRoot/lib/summary/Summary.Zone.js +62 -0
- package/cjs/src/templates/libRoot/lib/summary/index.js +67 -0
- package/cjs/src/templates/libRoot/lib/user/User.Template.js +65 -0
- package/cjs/src/templates/libRoot/lib/user/User.Unit.js +38 -0
- package/cjs/src/templates/libRoot/lib/user/User.Util.js +94 -0
- package/cjs/src/templates/libRoot/lib/user/User.View.js +66 -0
- package/cjs/src/templates/libRoot/lib/user/User.Zone.js +74 -0
- package/cjs/src/templates/libRoot/lib/user/index.js +61 -0
- package/cjs/src/templates/module/__Model__.Template.js +54 -0
- package/cjs/src/templates/module/__Model__.Unit.js +42 -0
- package/cjs/src/templates/module/__Model__.Util.js +70 -0
- package/cjs/src/templates/module/__Model__.View.js +48 -0
- package/cjs/src/templates/module/__Model__.Zone.js +83 -0
- package/cjs/src/templates/module/index.js +61 -0
- package/esm/index.js +28 -20
- package/esm/src/guidelines/componentRule/componentRule.generate.json +131 -0
- package/esm/src/guidelines/componentRule/componentRule.instruction.md +7 -6
- package/esm/src/guidelines/cssRule/cssRule.generate.json +93 -0
- package/esm/src/guidelines/databaseModule/databaseModule.generate.json +51 -0
- package/esm/src/guidelines/databaseModule/databaseModule.instruction.md +4 -17
- package/esm/src/guidelines/docPageRule/docPageRule.generate.json +72 -0
- package/esm/src/guidelines/enumConstant/enumConstant.generate.json +24 -0
- package/esm/src/guidelines/fieldDecorator/fieldDecorator.generate.json +135 -0
- package/esm/src/guidelines/framework/framework.generate.json +119 -0
- package/esm/src/guidelines/howToUseStore/howToUseStore.generate.json +0 -0
- package/esm/src/guidelines/modelConstant/modelConstant.generate.json +135 -0
- package/esm/src/guidelines/modelConstant/modelConstant.instruction.md +1 -1
- package/esm/src/guidelines/modelDictionary/modelDictionary.generate.json +115 -0
- package/esm/src/guidelines/modelDocument/modelDocument.generate.json +129 -0
- package/esm/src/guidelines/modelService/modelService.generate.json +179 -0
- package/esm/src/guidelines/modelSignal/modelSignal.generate.json +202 -0
- package/esm/src/guidelines/modelStore/modelStore.generate.json +130 -0
- package/esm/src/guidelines/modelTemplate/modelTemplate.generate.json +104 -0
- package/esm/src/guidelines/modelUnit/modelUnit.generate.json +92 -0
- package/esm/src/guidelines/modelUnit/modelUnit.instruction.md +2 -2
- package/esm/src/guidelines/modelUtil/modelUtil.generate.json +93 -0
- package/esm/src/guidelines/modelView/modelView.generate.json +80 -0
- package/esm/src/guidelines/modelView/modelView.instruction.md +1 -1
- package/esm/src/guidelines/modelZone/modelZone.generate.json +126 -0
- package/esm/src/guidelines/modelZone/modelZone.instruction.md +3 -3
- package/esm/src/guidelines/scalarConstant/scalarConstant.generate.json +102 -0
- package/esm/src/guidelines/scalarDictionary/scalarDictionary.generate.json +83 -0
- package/esm/src/guidelines/scalarModule/scalarModule.generate.json +35 -0
- package/esm/src/guidelines/sharedUiUsage/sharedUiUsage.generate.json +115 -0
- package/esm/src/guidelines/sharedUiUsage/sharedUiUsage.instruction.md +5 -10
- package/esm/src/guidelines/utilUiUsage/utilUiUsage.generate.json +140 -0
- package/esm/src/guidelines/utilUiUsage/utilUiUsage.instruction.md +1 -1
- package/esm/src/templates/app/app/[lang]/(__appName__)/(public)/forgotpassword/page.js +27 -0
- package/esm/src/templates/app/app/[lang]/(__appName__)/(public)/page.js +108 -0
- package/esm/src/templates/app/app/[lang]/(__appName__)/(public)/privacy/page.js +22 -0
- package/esm/src/templates/app/app/[lang]/(__appName__)/(public)/signin/page.js +30 -0
- package/esm/src/templates/app/app/[lang]/(__appName__)/(public)/termsofservice/page.js +21 -0
- package/esm/src/templates/app/app/[lang]/(__appName__)/(public)/unknown/page.js +31 -0
- package/esm/src/templates/app/app/[lang]/(__appName__)/(user)/layout.js +23 -0
- package/esm/src/templates/app/app/[lang]/(__appName__)/(user)/self/page.js +40 -0
- package/esm/src/templates/app/app/[lang]/(__appName__)/layout.js +34 -0
- package/esm/src/templates/app/app/[lang]/admin/layout.js +34 -0
- package/esm/src/templates/app/app/[lang]/admin/page.js +43 -0
- package/esm/src/templates/app/app/csr.js +14 -0
- package/esm/src/templates/app/app/layout.js +18 -0
- package/esm/src/templates/app/lib/setting/Setting.Template.js +37 -0
- package/esm/src/templates/app/lib/setting/Setting.Unit.js +18 -0
- package/esm/src/templates/app/lib/setting/Setting.Util.js +14 -0
- package/esm/src/templates/app/lib/setting/Setting.View.js +31 -0
- package/esm/src/templates/app/lib/setting/Setting.Zone.js +60 -0
- package/esm/src/templates/app/lib/setting/index.js +41 -0
- package/esm/src/templates/app/lib/summary/Summary.Template.js +23 -0
- package/esm/src/templates/app/lib/summary/Summary.Unit.js +18 -0
- package/esm/src/templates/app/lib/summary/Summary.Util.js +13 -0
- package/esm/src/templates/app/lib/summary/Summary.View.js +31 -0
- package/esm/src/templates/app/lib/summary/Summary.Zone.js +42 -0
- package/esm/src/templates/app/lib/summary/index.js +47 -0
- package/esm/src/templates/app/lib/user/User.Template.js +45 -0
- package/esm/src/templates/app/lib/user/User.Unit.js +18 -0
- package/esm/src/templates/app/lib/user/User.Util.js +74 -0
- package/esm/src/templates/app/lib/user/User.View.js +46 -0
- package/esm/src/templates/app/lib/user/User.Zone.js +54 -0
- package/esm/src/templates/app/lib/user/index.js +41 -0
- package/esm/src/templates/app/main.js +1 -2
- package/esm/src/templates/app/public/favicon.ico +0 -0
- package/esm/src/templates/app/public/icons/icon-128x128.png +0 -0
- package/esm/src/templates/app/public/icons/icon-144x144.png +0 -0
- package/esm/src/templates/app/public/icons/icon-152x152.png +0 -0
- package/esm/src/templates/app/public/icons/icon-192x192.png +0 -0
- package/esm/src/templates/app/public/icons/icon-256x256.png +0 -0
- package/esm/src/templates/app/public/icons/icon-384x384.png +0 -0
- package/esm/src/templates/app/public/icons/icon-48x48.png +0 -0
- package/esm/src/templates/app/public/icons/icon-512x512.png +0 -0
- package/esm/src/templates/app/public/icons/icon-72x72.png +0 -0
- package/esm/src/templates/app/public/icons/icon-96x96.png +0 -0
- package/esm/src/templates/app/public/logo.svg +70 -0
- package/esm/src/templates/app/ui/Footer.js +47 -0
- package/esm/src/templates/app/ui/MainHeader.js +111 -0
- package/esm/src/templates/crudPages/[__model__Id]/edit/page.js +53 -0
- package/esm/src/templates/crudPages/[__model__Id]/page.js +63 -0
- package/esm/src/templates/crudPages/new/page.js +50 -0
- package/esm/src/templates/crudPages/page.js +51 -0
- package/esm/src/templates/lib/__lib/lib.dictionary.js +2 -2
- package/esm/src/templates/lib/__lib/lib.signal.js +3 -3
- package/esm/src/templates/lib/__lib/lib.store.js +2 -1
- package/esm/src/templates/libRoot/lib/setting/Setting.Template.js +37 -0
- package/esm/src/templates/libRoot/lib/setting/Setting.Unit.js +18 -0
- package/esm/src/templates/libRoot/lib/setting/Setting.Util.js +14 -0
- package/esm/src/templates/libRoot/lib/setting/Setting.View.js +31 -0
- package/esm/src/templates/libRoot/lib/setting/Setting.Zone.js +60 -0
- package/esm/src/templates/libRoot/lib/setting/index.js +41 -0
- package/esm/src/templates/libRoot/lib/summary/Summary.Template.js +23 -0
- package/esm/src/templates/libRoot/lib/summary/Summary.Unit.js +18 -0
- package/esm/src/templates/libRoot/lib/summary/Summary.Util.js +13 -0
- package/esm/src/templates/libRoot/lib/summary/Summary.View.js +31 -0
- package/esm/src/templates/libRoot/lib/summary/Summary.Zone.js +42 -0
- package/esm/src/templates/libRoot/lib/summary/index.js +47 -0
- package/esm/src/templates/libRoot/lib/user/User.Template.js +45 -0
- package/esm/src/templates/libRoot/lib/user/User.Unit.js +18 -0
- package/esm/src/templates/libRoot/lib/user/User.Util.js +74 -0
- package/esm/src/templates/libRoot/lib/user/User.View.js +46 -0
- package/esm/src/templates/libRoot/lib/user/User.Zone.js +54 -0
- package/esm/src/templates/libRoot/lib/user/index.js +41 -0
- package/esm/src/templates/module/__Model__.Template.js +34 -0
- package/esm/src/templates/module/__Model__.Unit.js +22 -0
- package/esm/src/templates/module/__Model__.Util.js +50 -0
- package/esm/src/templates/module/__Model__.View.js +28 -0
- package/esm/src/templates/module/__Model__.Zone.js +63 -0
- package/esm/src/templates/module/index.js +41 -0
- package/package.json +1 -1
- package/src/guidelines/componentRule/componentRule.instruction.md +7 -6
- package/src/guidelines/databaseModule/databaseModule.instruction.md +4 -17
- package/src/guidelines/modelConstant/modelConstant.instruction.md +1 -1
- package/src/guidelines/modelUnit/modelUnit.instruction.md +2 -2
- package/src/guidelines/modelView/modelView.instruction.md +1 -1
- package/src/guidelines/modelZone/modelZone.instruction.md +3 -3
- package/src/guidelines/sharedUiUsage/sharedUiUsage.instruction.md +5 -10
- package/src/guidelines/utilUiUsage/utilUiUsage.instruction.md +1 -1
- package/src/templates/app/app/[lang]/(__appName__)/(public)/forgotpassword/page.d.ts +9 -0
- package/src/templates/app/app/[lang]/(__appName__)/(public)/page.d.ts +9 -0
- package/src/templates/app/app/[lang]/(__appName__)/(public)/privacy/page.d.ts +9 -0
- package/src/templates/app/app/[lang]/(__appName__)/(public)/signin/page.d.ts +9 -0
- package/src/templates/app/app/[lang]/(__appName__)/(public)/termsofservice/page.d.ts +10 -0
- package/src/templates/app/app/[lang]/(__appName__)/(public)/unknown/page.d.ts +9 -0
- package/src/templates/app/app/[lang]/(__appName__)/(user)/layout.d.ts +9 -0
- package/src/templates/app/app/[lang]/(__appName__)/(user)/self/page.d.ts +9 -0
- package/src/templates/app/app/[lang]/(__appName__)/layout.d.ts +9 -0
- package/src/templates/app/app/[lang]/admin/layout.d.ts +9 -0
- package/src/templates/app/app/[lang]/admin/page.d.ts +9 -0
- package/src/templates/app/app/csr.d.ts +9 -0
- package/src/templates/app/app/layout.d.ts +9 -0
- package/src/templates/app/lib/setting/Setting.Template.d.ts +9 -0
- package/src/templates/app/lib/setting/Setting.Unit.d.ts +9 -0
- package/src/templates/app/lib/setting/Setting.Util.d.ts +9 -0
- package/src/templates/app/lib/setting/Setting.View.d.ts +9 -0
- package/src/templates/app/lib/setting/Setting.Zone.d.ts +9 -0
- package/src/templates/app/lib/setting/index.d.ts +9 -0
- package/src/templates/app/lib/summary/Summary.Template.d.ts +9 -0
- package/src/templates/app/lib/summary/Summary.Unit.d.ts +9 -0
- package/src/templates/app/lib/summary/Summary.Util.d.ts +9 -0
- package/src/templates/app/lib/summary/Summary.View.d.ts +9 -0
- package/src/templates/app/lib/summary/Summary.Zone.d.ts +9 -0
- package/src/templates/app/lib/summary/index.d.ts +9 -0
- package/src/templates/app/lib/user/User.Template.d.ts +9 -0
- package/src/templates/app/lib/user/User.Unit.d.ts +9 -0
- package/src/templates/app/lib/user/User.Util.d.ts +9 -0
- package/src/templates/app/lib/user/User.View.d.ts +9 -0
- package/src/templates/app/lib/user/User.Zone.d.ts +9 -0
- package/src/templates/app/lib/user/index.d.ts +9 -0
- package/src/templates/app/ui/Footer.d.ts +9 -0
- package/src/templates/app/ui/MainHeader.d.ts +10 -0
- package/src/templates/crudPages/[__model__Id]/edit/page.d.ts +11 -0
- package/src/templates/crudPages/[__model__Id]/page.d.ts +11 -0
- package/src/templates/crudPages/new/page.d.ts +11 -0
- package/src/templates/crudPages/page.d.ts +11 -0
- package/src/templates/libRoot/lib/setting/Setting.Template.d.ts +9 -0
- package/src/templates/libRoot/lib/setting/Setting.Unit.d.ts +9 -0
- package/src/templates/libRoot/lib/setting/Setting.Util.d.ts +9 -0
- package/src/templates/libRoot/lib/setting/Setting.View.d.ts +9 -0
- package/src/templates/libRoot/lib/setting/Setting.Zone.d.ts +9 -0
- package/src/templates/libRoot/lib/setting/index.d.ts +9 -0
- package/src/templates/libRoot/lib/summary/Summary.Template.d.ts +9 -0
- package/src/templates/libRoot/lib/summary/Summary.Unit.d.ts +9 -0
- package/src/templates/libRoot/lib/summary/Summary.Util.d.ts +9 -0
- package/src/templates/libRoot/lib/summary/Summary.View.d.ts +9 -0
- package/src/templates/libRoot/lib/summary/Summary.Zone.d.ts +9 -0
- package/src/templates/libRoot/lib/summary/index.d.ts +9 -0
- package/src/templates/libRoot/lib/user/User.Template.d.ts +9 -0
- package/src/templates/libRoot/lib/user/User.Unit.d.ts +9 -0
- package/src/templates/libRoot/lib/user/User.Util.d.ts +9 -0
- package/src/templates/libRoot/lib/user/User.View.d.ts +9 -0
- package/src/templates/libRoot/lib/user/User.Zone.d.ts +9 -0
- package/src/templates/libRoot/lib/user/index.d.ts +9 -0
- package/src/templates/module/__Model__.Template.d.ts +11 -0
- package/src/templates/module/__Model__.Unit.d.ts +11 -0
- package/src/templates/module/__Model__.Util.d.ts +11 -0
- package/src/templates/module/__Model__.View.d.ts +11 -0
- package/src/templates/module/__Model__.Zone.d.ts +11 -0
- package/src/templates/module/index.d.ts +11 -0
package/cjs/index.js
CHANGED
|
@@ -602,7 +602,7 @@ var withBase = (appName, config, libs, routes = []) => {
|
|
|
602
602
|
eslint: { ...config.eslint, ignoreDuringBuilds: true },
|
|
603
603
|
env: {
|
|
604
604
|
...config.env,
|
|
605
|
-
basePaths: routes.map(({ basePath: basePath2 }) => basePath2).join(",")
|
|
605
|
+
basePaths: [...new Set(routes.map(({ basePath: basePath2 }) => basePath2))].join(",")
|
|
606
606
|
},
|
|
607
607
|
transpilePackages: ["swiper", "ssr-window", "dom7"],
|
|
608
608
|
reactStrictMode: commandType === "start" ? false : true,
|
|
@@ -612,7 +612,8 @@ var withBase = (appName, config, libs, routes = []) => {
|
|
|
612
612
|
...[appName, ...libs].map((lib) => [`@${lib}/ui`, `@${lib}/next`, `@${lib}/common`, `@${lib}/client`]).flat(),
|
|
613
613
|
"@contract",
|
|
614
614
|
"@akanjs/next",
|
|
615
|
-
"@akanjs/common"
|
|
615
|
+
"@akanjs/common",
|
|
616
|
+
"@akanjs/ui"
|
|
616
617
|
]
|
|
617
618
|
},
|
|
618
619
|
// modularizeImports: {
|
|
@@ -768,6 +769,7 @@ CMD ["npm", "start"]`,
|
|
|
768
769
|
config.libs ?? [],
|
|
769
770
|
config.frontend?.routes
|
|
770
771
|
),
|
|
772
|
+
routes: config.frontend?.routes,
|
|
771
773
|
explicitDependencies: config.frontend?.explicitDependencies ?? []
|
|
772
774
|
},
|
|
773
775
|
mobile: {
|
|
@@ -1633,11 +1635,12 @@ var Executor = class _Executor {
|
|
|
1633
1635
|
dict = {},
|
|
1634
1636
|
overwrite = true
|
|
1635
1637
|
}) {
|
|
1636
|
-
const templatePath = `${__dirname}/src/templates${template ? `/${template}` : ""}
|
|
1637
|
-
|
|
1638
|
-
|
|
1638
|
+
const templatePath = `${__dirname}/src/templates${template ? `/${template}` : ""}`;
|
|
1639
|
+
const prefixTemplatePath = templatePath.endsWith(".tsx") ? templatePath : templatePath.replace(".ts", ".js");
|
|
1640
|
+
if (import_fs4.default.statSync(prefixTemplatePath).isFile()) {
|
|
1641
|
+
const filename = import_path3.default.basename(prefixTemplatePath);
|
|
1639
1642
|
const fileContent = await this.#applyTemplateFile(
|
|
1640
|
-
{ templatePath, targetPath: import_path3.default.join(basePath2, filename), scanResult, overwrite },
|
|
1643
|
+
{ templatePath: prefixTemplatePath, targetPath: import_path3.default.join(basePath2, filename), scanResult, overwrite },
|
|
1641
1644
|
dict
|
|
1642
1645
|
);
|
|
1643
1646
|
return fileContent ? [fileContent] : [];
|
|
@@ -3177,6 +3180,8 @@ ${fileCheck.lintResult.message}`
|
|
|
3177
3180
|
var esbuild = __toESM(require("esbuild"));
|
|
3178
3181
|
var import_esbuild_plugin_d = require("esbuild-plugin-d.ts");
|
|
3179
3182
|
var import_fs9 = __toESM(require("fs"));
|
|
3183
|
+
var assetExtensions = [".css", ".md", ".js", ".png", ".ico", ".svg", ".json", ".template"];
|
|
3184
|
+
var assetLoader = Object.fromEntries(assetExtensions.map((ext) => [ext, "copy"]));
|
|
3180
3185
|
var Builder = class {
|
|
3181
3186
|
#executor;
|
|
3182
3187
|
#distExecutor;
|
|
@@ -3201,7 +3206,7 @@ var Builder = class {
|
|
|
3201
3206
|
format,
|
|
3202
3207
|
outdir: `${this.#distExecutor.cwdPath}/${format}`,
|
|
3203
3208
|
logLevel: "error",
|
|
3204
|
-
loader:
|
|
3209
|
+
loader: assetLoader
|
|
3205
3210
|
};
|
|
3206
3211
|
}
|
|
3207
3212
|
#getAssetBuildOptions() {
|
|
@@ -3215,7 +3220,7 @@ var Builder = class {
|
|
|
3215
3220
|
],
|
|
3216
3221
|
outdir: this.#distExecutor.cwdPath,
|
|
3217
3222
|
logLevel: "error",
|
|
3218
|
-
loader:
|
|
3223
|
+
loader: assetLoader
|
|
3219
3224
|
};
|
|
3220
3225
|
}
|
|
3221
3226
|
async build(options = {}) {
|
|
@@ -3614,6 +3619,8 @@ var ApplicationRunner = class {
|
|
|
3614
3619
|
async #getViteConfig(app, command) {
|
|
3615
3620
|
const { env } = await this.#prepareCommand(app, command, "csr");
|
|
3616
3621
|
const tsconfig = app.workspace.getTsConfig();
|
|
3622
|
+
const akanConfig = await app.getConfig();
|
|
3623
|
+
const basePaths = akanConfig.frontend.routes ? [...new Set(akanConfig.frontend.routes.map(({ basePath: basePath2 }) => basePath2))].join(",") : void 0;
|
|
3617
3624
|
const processEnv = env;
|
|
3618
3625
|
const akanjsPrefix = process.env.USE_AKANJS_PKGS === "true" ? `${app.workspace.workspaceRoot}/pkgs/` : "";
|
|
3619
3626
|
const config = vite.defineConfig({
|
|
@@ -3677,7 +3684,8 @@ var ApplicationRunner = class {
|
|
|
3677
3684
|
APP_OPERATION_MODE: processEnv.APP_OPERATION_MODE ?? "local",
|
|
3678
3685
|
AKAN_WORKSPACE_ROOT: app.workspace.workspaceRoot,
|
|
3679
3686
|
AKAN_APP_ROOT: app.cwdPath,
|
|
3680
|
-
RENDER_ENV: "csr"
|
|
3687
|
+
RENDER_ENV: "csr",
|
|
3688
|
+
basePaths
|
|
3681
3689
|
},
|
|
3682
3690
|
"process.platform": JSON.stringify("browser"),
|
|
3683
3691
|
"process.version": JSON.stringify(process.version)
|
|
@@ -3992,7 +4000,11 @@ var ApplicationScript = class {
|
|
|
3992
4000
|
await this.syncApplication(app);
|
|
3993
4001
|
if (app.workspace.getBaseDevEnv().env === "local")
|
|
3994
4002
|
await this.dbup(app.workspace);
|
|
3995
|
-
await Promise.all([
|
|
4003
|
+
await Promise.all([
|
|
4004
|
+
this.startBackend(app, { open: open2, sync: false }),
|
|
4005
|
+
this.startFrontend(app, { open: open2, sync: false }),
|
|
4006
|
+
this.startCsr(app, { open: open2, sync: false })
|
|
4007
|
+
]);
|
|
3996
4008
|
}
|
|
3997
4009
|
async buildBackend(app, { sync = true } = {}) {
|
|
3998
4010
|
if (sync)
|
|
@@ -4389,11 +4401,7 @@ var PackageRunner = class {
|
|
|
4389
4401
|
if (pkg.name === "@akanjs/cli")
|
|
4390
4402
|
await builder.build({
|
|
4391
4403
|
bundle: true,
|
|
4392
|
-
additionalEntryPoints: [
|
|
4393
|
-
`${pkg.cwdPath}/src/templates/**/*.ts`,
|
|
4394
|
-
`${pkg.cwdPath}/src/templates/**/*.template`,
|
|
4395
|
-
`${pkg.cwdPath}/src/guidelines/**/*.md`
|
|
4396
|
-
]
|
|
4404
|
+
additionalEntryPoints: [`${pkg.cwdPath}/src/templates/**/*`, `${pkg.cwdPath}/src/guidelines/**/*`]
|
|
4397
4405
|
});
|
|
4398
4406
|
else
|
|
4399
4407
|
await builder.build();
|
|
@@ -4850,7 +4858,7 @@ var requestTemplate = ({
|
|
|
4850
4858
|
\uCF54\uB529 \uADDC\uCE59
|
|
4851
4859
|
- \uB77C\uC774\uBE0C\uB7EC\uB9AC \uC0AC\uC6A9
|
|
4852
4860
|
- \uC544\uC774\uCF58: react-icons \uB77C\uC774\uBE0C\uB7EC\uB9AC \uC0AC\uC6A9
|
|
4853
|
-
- CSS: tailwind, DaisyUI(
|
|
4861
|
+
- CSS: tailwind, DaisyUI(card/hero \uAC19\uC740 \uBCF5\uC7A1\uD55C \uCEF4\uD3EC\uB10C\uD2B8 \uC0AC\uC6A9 X) \uC0AC\uC6A9
|
|
4854
4862
|
- Ui Component: @util/ui \uB77C\uC774\uBE0C\uB7EC\uB9AC \uC0AC\uC6A9
|
|
4855
4863
|
- \uC870\uAC74\uBD80 \uD074\uB798\uC2A4: clsx \uB77C\uC774\uBE0C\uB7EC\uB9AC \uC0AC\uC6A9
|
|
4856
4864
|
\uCF54\uB4DC \uC2A4\uD0C0\uC77C
|
|
@@ -4908,7 +4916,7 @@ var requestView = ({
|
|
|
4908
4916
|
\uCF54\uB529 \uADDC\uCE59
|
|
4909
4917
|
- \uB77C\uC774\uBE0C\uB7EC\uB9AC \uC0AC\uC6A9
|
|
4910
4918
|
- \uC544\uC774\uCF58: react-icons \uB77C\uC774\uBE0C\uB7EC\uB9AC \uC0AC\uC6A9
|
|
4911
|
-
- CSS: tailwind, DaisyUI(
|
|
4919
|
+
- CSS: tailwind, DaisyUI(card/hero \uAC19\uC740 \uBCF5\uC7A1\uD55C \uCEF4\uD3EC\uB10C\uD2B8 \uC0AC\uC6A9 X) \uC0AC\uC6A9
|
|
4912
4920
|
- Ui Component: @util/ui \uB77C\uC774\uBE0C\uB7EC\uB9AC \uC0AC\uC6A9
|
|
4913
4921
|
- \uC870\uAC74\uBD80 \uD074\uB798\uC2A4: clsx \uB77C\uC774\uBE0C\uB7EC\uB9AC \uC0AC\uC6A9
|
|
4914
4922
|
\uCF54\uB4DC \uC2A4\uD0C0\uC77C
|
|
@@ -4969,7 +4977,7 @@ var requestUnit = ({
|
|
|
4969
4977
|
\uCF54\uB529 \uADDC\uCE59
|
|
4970
4978
|
- \uB77C\uC774\uBE0C\uB7EC\uB9AC \uC0AC\uC6A9
|
|
4971
4979
|
- \uC544\uC774\uCF58: react-icons \uB77C\uC774\uBE0C\uB7EC\uB9AC \uC0AC\uC6A9
|
|
4972
|
-
- CSS: tailwind, DaisyUI(
|
|
4980
|
+
- CSS: tailwind, DaisyUI(card/hero \uAC19\uC740 \uBCF5\uC7A1\uD55C \uCEF4\uD3EC\uB10C\uD2B8 \uC0AC\uC6A9 X) \uC0AC\uC6A9
|
|
4973
4981
|
- Ui Component: @util/ui \uB77C\uC774\uBE0C\uB7EC\uB9AC \uC0AC\uC6A9
|
|
4974
4982
|
- \uC870\uAC74\uBD80 \uD074\uB798\uC2A4: clsx \uB77C\uC774\uBE0C\uB7EC\uB9AC \uC0AC\uC6A9
|
|
4975
4983
|
\uCF54\uB4DC \uC2A4\uD0C0\uC77C
|
|
@@ -5015,7 +5023,7 @@ var ModuleRunner = class {
|
|
|
5015
5023
|
async createComponentTemplate(module2, type) {
|
|
5016
5024
|
await module2.sys.applyTemplate({
|
|
5017
5025
|
basePath: `./lib/${module2.name}`,
|
|
5018
|
-
template: `module/
|
|
5026
|
+
template: `module/__Model__.${capitalize(type)}.tsx`,
|
|
5019
5027
|
dict: { model: module2.name, appName: module2.sys.name }
|
|
5020
5028
|
});
|
|
5021
5029
|
return {
|
|
@@ -5511,7 +5519,7 @@ var WorkspaceCommand = class {
|
|
|
5511
5519
|
__decorateClass([
|
|
5512
5520
|
Target.Public(),
|
|
5513
5521
|
__decorateParam(0, Argument("workspaceName", { desc: "what is the name of your organization?" })),
|
|
5514
|
-
__decorateParam(1, Option("app", { desc: "
|
|
5522
|
+
__decorateParam(1, Option("app", { desc: "what is the codename of your first application? (e.g. myapp)" })),
|
|
5515
5523
|
__decorateParam(2, Option("dir", { desc: "directory of workspace", default: process.env.USE_AKANJS_PKGS === "true" ? "local" : "." }))
|
|
5516
5524
|
], WorkspaceCommand.prototype, "createWorkspace", 1);
|
|
5517
5525
|
__decorateClass([
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
{
|
|
2
|
+
"title": "Component Rule",
|
|
3
|
+
"description": "Comprehensive guidelines for creating React components in the Akan.js framework",
|
|
4
|
+
"scans": [
|
|
5
|
+
{
|
|
6
|
+
"type": "source",
|
|
7
|
+
"description": "Cookie management utilities for web and mobile",
|
|
8
|
+
"path": "pkgs/@akanjs/client/src/cookie.ts"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"type": "source",
|
|
12
|
+
"description": "Storage utilities for persistent data",
|
|
13
|
+
"path": "pkgs/@akanjs/client/src/storage.ts"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"type": "source",
|
|
17
|
+
"description": "Device capabilities and platform detection",
|
|
18
|
+
"path": "pkgs/@akanjs/client/src/device.ts"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"type": "source",
|
|
22
|
+
"description": "Navigation and routing utilities",
|
|
23
|
+
"path": "pkgs/@akanjs/client/src/router.ts"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"type": "source",
|
|
27
|
+
"description": "Type utilities including clsx for class management",
|
|
28
|
+
"path": "pkgs/@akanjs/client/src/types.ts"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"type": "example",
|
|
32
|
+
"description": "Unit components (list items/cards)",
|
|
33
|
+
"path": "{apps,libs}/*/lib/*/*.Unit.tsx",
|
|
34
|
+
"sample": 3
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"type": "example",
|
|
38
|
+
"description": "View components (detailed displays)",
|
|
39
|
+
"path": "{apps,libs}/*/lib/*/*.View.tsx",
|
|
40
|
+
"sample": 3
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"type": "example",
|
|
44
|
+
"description": "Template components (forms/edit screens)",
|
|
45
|
+
"path": "{apps,libs}/*/lib/*/*.Template.tsx",
|
|
46
|
+
"sample": 3
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"type": "example",
|
|
50
|
+
"description": "Utility components (toolbars/helpers)",
|
|
51
|
+
"path": "{apps,libs}/*/lib/*/*.Util.tsx",
|
|
52
|
+
"sample": 3
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"type": "example",
|
|
56
|
+
"description": "Zone components (data containers)",
|
|
57
|
+
"path": "{apps,libs}/*/lib/*/*.Zone.tsx",
|
|
58
|
+
"sample": 3
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"type": "example",
|
|
62
|
+
"description": "Reusable UI components",
|
|
63
|
+
"path": "{libs,apps}/*/ui/**/*.tsx",
|
|
64
|
+
"sample": 5
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"type": "usage",
|
|
68
|
+
"description": "Component composition patterns",
|
|
69
|
+
"path": "{apps,libs}/*/lib/*/*.Zone.tsx",
|
|
70
|
+
"filterText": "renderItem",
|
|
71
|
+
"sample": 3
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"type": "usage",
|
|
75
|
+
"description": "Form state management with stores",
|
|
76
|
+
"path": "{apps,libs}/*/lib/*/*.Template.tsx",
|
|
77
|
+
"filterText": "st.use",
|
|
78
|
+
"sample": 3
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"type": "usage",
|
|
82
|
+
"description": "Conditional rendering with TailwindCSS",
|
|
83
|
+
"path": "{apps,libs}/*/lib/*/*.tsx",
|
|
84
|
+
"filterText": "clsx",
|
|
85
|
+
"sample": 3
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"type": "usage",
|
|
89
|
+
"description": "Data fetching with Load components",
|
|
90
|
+
"path": "{apps,libs}/*/lib/*/*.Zone.tsx",
|
|
91
|
+
"filterText": "<Load.",
|
|
92
|
+
"sample": 3
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"type": "usage",
|
|
96
|
+
"description": "Responsive design patterns",
|
|
97
|
+
"path": "{apps,libs}/*/lib/*/*.tsx",
|
|
98
|
+
"filterText": "md:",
|
|
99
|
+
"sample": 3
|
|
100
|
+
}
|
|
101
|
+
],
|
|
102
|
+
"update": {
|
|
103
|
+
"filePath": "./componentRule.instruction.md",
|
|
104
|
+
"contents": [
|
|
105
|
+
"Component Architecture - Core structure and organization",
|
|
106
|
+
"Component Types - Purpose and responsibility of each component type",
|
|
107
|
+
"File Naming Conventions - Standardized naming patterns",
|
|
108
|
+
"Utility Functions - Core framework utilities",
|
|
109
|
+
"Best Practices - Guidelines for components",
|
|
110
|
+
"State Management - Integration with Zustand store and signals",
|
|
111
|
+
"Responsive Design - Mobile-first approach",
|
|
112
|
+
"Accessibility - Core principles",
|
|
113
|
+
"Performance Optimization - Memoization and lazy loading",
|
|
114
|
+
"Data Fetching - Using Load components",
|
|
115
|
+
"Composition Patterns - Component rendering methods",
|
|
116
|
+
"Complete Examples - Full implementation examples"
|
|
117
|
+
],
|
|
118
|
+
"rules": [
|
|
119
|
+
"Component types (.Unit, .View, .Template, .Util, .Zone) should follow standard patterns and responsibilities",
|
|
120
|
+
"Every component file should maintain a consistent organization pattern with logical sections",
|
|
121
|
+
"Responsive design should use Tailwind's mobile-first approach with sm:, md:, lg: prefixes",
|
|
122
|
+
"Form components should use the framework state management pattern with st.use and st.do",
|
|
123
|
+
"Data containers should follow the Load.Units/Load.View pattern for consistent data fetching",
|
|
124
|
+
"Component files should export named components rather than default exports",
|
|
125
|
+
"Props should use explicit TypeScript interfaces with proper JSDoc comments where helpful",
|
|
126
|
+
"Separate business logic from presentation components",
|
|
127
|
+
"Follow Akan.js project structure and module organization"
|
|
128
|
+
]
|
|
129
|
+
},
|
|
130
|
+
"page": "/[lang]/akanjs/(docs)/docs/codebase/component/page.tsx"
|
|
131
|
+
}
|
|
@@ -374,7 +374,7 @@ Here's a complete example of components for a "Product" feature:
|
|
|
374
374
|
```tsx
|
|
375
375
|
import { clsx, ModelProps } from "@akanjs/client";
|
|
376
376
|
import { cnst } from "@app/client";
|
|
377
|
-
import { Image, Link } from "@
|
|
377
|
+
import { Image, Link } from "@akanjs/ui";
|
|
378
378
|
|
|
379
379
|
export const Card = ({ product, href }: ModelProps<"product", cnst.Product>) => {
|
|
380
380
|
return (
|
|
@@ -395,7 +395,7 @@ export const Card = ({ product, href }: ModelProps<"product", cnst.Product>) =>
|
|
|
395
395
|
```tsx
|
|
396
396
|
import { clsx } from "@akanjs/client";
|
|
397
397
|
import { cnst } from "@app/client";
|
|
398
|
-
import { Button, Image } from "@
|
|
398
|
+
import { Button, Image } from "@akanjs/ui";
|
|
399
399
|
|
|
400
400
|
interface ProductViewProps {
|
|
401
401
|
className?: string;
|
|
@@ -445,7 +445,8 @@ export const General = ({ className, product }: ProductViewProps) => {
|
|
|
445
445
|
"use client";
|
|
446
446
|
import { clsx } from "@akanjs/client";
|
|
447
447
|
import { st } from "@app/client";
|
|
448
|
-
import { Button, Input
|
|
448
|
+
import { Button, Input } from "@akanjs/ui";
|
|
449
|
+
import { Upload } from "@util/ui";
|
|
449
450
|
import { AiOutlinePlus } from "react-icons/ai";
|
|
450
451
|
|
|
451
452
|
export const General = () => {
|
|
@@ -520,8 +521,8 @@ export const General = () => {
|
|
|
520
521
|
import { ModelDashboardProps } from "@akanjs/client";
|
|
521
522
|
import { getQueryMap } from "@akanjs/constant";
|
|
522
523
|
import { cnst, st } from "@app/client";
|
|
523
|
-
import { Data } from "@
|
|
524
|
-
import { Button } from "@
|
|
524
|
+
import { Data } from "@akanjs/ui";
|
|
525
|
+
import { Button } from "@akanjs/ui";
|
|
525
526
|
|
|
526
527
|
export const Stat = ({
|
|
527
528
|
className,
|
|
@@ -591,7 +592,7 @@ export const PriceFilter = ({
|
|
|
591
592
|
import { ModelsProps } from "@akanjs/client";
|
|
592
593
|
import { ClientInit, ClientView } from "@akanjs/signal";
|
|
593
594
|
import { cnst, Product } from "@app/client";
|
|
594
|
-
import { Data, Load } from "@
|
|
595
|
+
import { Data, Load } from "@akanjs/ui";
|
|
595
596
|
|
|
596
597
|
export const Admin = ({ sliceName = "product", init, query }: ModelsProps<cnst.Product>) => {
|
|
597
598
|
return (
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
{
|
|
2
|
+
"title": "CSS Rule with TailwindCSS and DaisyUI",
|
|
3
|
+
"description": "Comprehensive guidelines for creating CSS with TailwindCSS and DaisyUI in the Akan.js framework",
|
|
4
|
+
"scans": [
|
|
5
|
+
{
|
|
6
|
+
"type": "source",
|
|
7
|
+
"description": "clsx utility for class name management",
|
|
8
|
+
"path": "pkgs/@akanjs/client/src/types.ts"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"type": "example",
|
|
12
|
+
"description": "Unit components (list items/cards)",
|
|
13
|
+
"path": "{apps,libs}/*/lib/*/*.Unit.tsx",
|
|
14
|
+
"sample": 3
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"type": "example",
|
|
18
|
+
"description": "View components (detailed displays)",
|
|
19
|
+
"path": "{apps,libs}/*/lib/*/*.View.tsx",
|
|
20
|
+
"sample": 3
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"type": "example",
|
|
24
|
+
"description": "Edit components (forms for data creation/editing)",
|
|
25
|
+
"path": "{apps,libs}/*/lib/*/*.Edit.tsx",
|
|
26
|
+
"sample": 2
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"type": "example",
|
|
30
|
+
"description": "Util components (special function components)",
|
|
31
|
+
"path": "{apps,libs}/*/lib/*/*.Util.tsx",
|
|
32
|
+
"sample": 2
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"type": "example",
|
|
36
|
+
"description": "Zone components (container components)",
|
|
37
|
+
"path": "{apps,libs}/*/lib/*/*.Zone.tsx",
|
|
38
|
+
"sample": 2
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"type": "example",
|
|
42
|
+
"description": "Reusable UI components",
|
|
43
|
+
"path": "{libs,apps}/*/ui/**/*.tsx",
|
|
44
|
+
"sample": 3
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"type": "usage",
|
|
48
|
+
"description": "Conditional rendering with clsx",
|
|
49
|
+
"path": "{apps,libs}/*/lib/*/*.tsx",
|
|
50
|
+
"filterText": "clsx",
|
|
51
|
+
"sample": 3
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"type": "usage",
|
|
55
|
+
"description": "DaisyUI color usage",
|
|
56
|
+
"path": "{apps,libs}/*/lib/*/*.tsx",
|
|
57
|
+
"filterText": "bg-primary|bg-secondary|bg-accent|bg-info|bg-success|bg-warning|bg-error",
|
|
58
|
+
"sample": 3
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"type": "usage",
|
|
62
|
+
"description": "Responsive design patterns",
|
|
63
|
+
"path": "{apps,libs}/*/lib/*/*.tsx",
|
|
64
|
+
"filterText": "sm:|md:|lg:|xl:|2xl:",
|
|
65
|
+
"sample": 3
|
|
66
|
+
}
|
|
67
|
+
],
|
|
68
|
+
"update": {
|
|
69
|
+
"filePath": "./cssRule.instruction.md",
|
|
70
|
+
"contents": [
|
|
71
|
+
"Core Principles - Fundamental styling concepts",
|
|
72
|
+
"Class Management with clsx - How to handle conditional class names",
|
|
73
|
+
"Component Structure Best Practices - Consistent component styling",
|
|
74
|
+
"Component Types in Akan.js - Styling patterns for different component types",
|
|
75
|
+
"Common UI Patterns - Reusable design patterns",
|
|
76
|
+
"Best Practices - Guidelines for maintainable CSS",
|
|
77
|
+
"Common Mistakes to Avoid - What not to do",
|
|
78
|
+
"Troubleshooting - Fixing common issues"
|
|
79
|
+
],
|
|
80
|
+
"rules": [
|
|
81
|
+
"clsx should be used for conditional class names and className composition",
|
|
82
|
+
"Every component should accept and properly handle className prop for composition",
|
|
83
|
+
"Color system of DaisyUI should be used for colors (primary, secondary, accent, etc.) - hardcoded colors should be avoided",
|
|
84
|
+
"Components should follow responsive design principles with mobile-first approach",
|
|
85
|
+
"Use Tailwind's spacing scale consistently for margins and padding",
|
|
86
|
+
"Group related classes together for better readability",
|
|
87
|
+
"DaisyUI components should be used for common UI elements when available",
|
|
88
|
+
"Apply proper focus, hover, and active states for interactive elements",
|
|
89
|
+
"Respect the naming conventions for component types (Unit, View, Edit, Util, Zone)"
|
|
90
|
+
]
|
|
91
|
+
},
|
|
92
|
+
"page": "/[lang]/akanjs/(docs)/docs/codebase/css/page.tsx"
|
|
93
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"title": "Database Module",
|
|
3
|
+
"description": "Structure of database module",
|
|
4
|
+
"scans": [
|
|
5
|
+
{
|
|
6
|
+
"type": "source",
|
|
7
|
+
"description": "core database module source code",
|
|
8
|
+
"path": "pkgs/@akanjs/server/src/module.ts"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"type": "source",
|
|
12
|
+
"description": "how to boot modules in Nest.js server",
|
|
13
|
+
"path": "pkgs/@akanjs/server/src/boot.ts"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"type": "source",
|
|
17
|
+
"description": "constant model decorators, database schema decorators, signal decorators reference",
|
|
18
|
+
"path": "pkgs/@akanjs/constant/src/decorator.ts"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"type": "example",
|
|
22
|
+
"description": "example database module of admin",
|
|
23
|
+
"path": "libs/shared/lib/admin/*"
|
|
24
|
+
}
|
|
25
|
+
],
|
|
26
|
+
"update": {
|
|
27
|
+
"filePath": "./databaseModule.instruction.md",
|
|
28
|
+
"contents": [
|
|
29
|
+
"Purpose of database modules in Akan.js",
|
|
30
|
+
"File structure and location conventions",
|
|
31
|
+
"How to create database modules",
|
|
32
|
+
"How to use database modules in Nest.js server",
|
|
33
|
+
"How to use components, stores, and signals in client side",
|
|
34
|
+
"Real-time features with websockets and subscriptions",
|
|
35
|
+
"Best practices for data modeling and schema design",
|
|
36
|
+
"Authentication and authorization patterns",
|
|
37
|
+
"Performance optimization techniques",
|
|
38
|
+
"Error handling strategies"
|
|
39
|
+
],
|
|
40
|
+
"rules": [
|
|
41
|
+
"Database module is a domain specific module to manage business logic of database",
|
|
42
|
+
"Follow consistent naming conventions with PascalCase for classes and camelCase for files",
|
|
43
|
+
"Keep business logic in service files, not in signals or documents",
|
|
44
|
+
"Use field validation in constant models to ensure data integrity",
|
|
45
|
+
"Create proper indexes in middleware for performance optimization",
|
|
46
|
+
"Apply appropriate authorization guards to protect sensitive operations",
|
|
47
|
+
"Use dictionary files for all UI text to support internationalization"
|
|
48
|
+
]
|
|
49
|
+
},
|
|
50
|
+
"page": "/[lang]/akanjs/(docs)/docs/module/overview/page.tsx"
|
|
51
|
+
}
|
|
@@ -379,29 +379,16 @@ export const registerUserModule = (option: ModulesOptions) =>
|
|
|
379
379
|
#### Template Component (`[ModuleName].Template.tsx`)
|
|
380
380
|
|
|
381
381
|
```tsx
|
|
382
|
-
import { Button
|
|
382
|
+
import { Button } from "@akanjs/ui";
|
|
383
383
|
|
|
384
384
|
import { dict } from "../dict";
|
|
385
385
|
import { st } from "../st";
|
|
386
386
|
|
|
387
387
|
export const General = () => {
|
|
388
|
-
const { userForm } = st.use.
|
|
389
|
-
const { signin, setUserForm } = st.do.user();
|
|
388
|
+
const { userForm } = st.use.userForm();
|
|
390
389
|
|
|
391
390
|
return (
|
|
392
|
-
|
|
393
|
-
<Form.Item label={dict.user.email}>
|
|
394
|
-
<Form.Input type="email" value={userForm.email} onChange={(e) => setUserForm({ email: e.target.value })} />
|
|
395
|
-
</Form.Item>
|
|
396
|
-
<Form.Item label={dict.user.password}>
|
|
397
|
-
<Form.Input
|
|
398
|
-
type="password"
|
|
399
|
-
value={userForm.password || ""}
|
|
400
|
-
onChange={(e) => setUserForm({ password: e.target.value })}
|
|
401
|
-
/>
|
|
402
|
-
</Form.Item>
|
|
403
|
-
<Button type="submit">{dict.user.signin}</Button>
|
|
404
|
-
</Form>
|
|
391
|
+
// WIP
|
|
405
392
|
);
|
|
406
393
|
};
|
|
407
394
|
```
|
|
@@ -473,7 +460,7 @@ export const User = () => (
|
|
|
473
460
|
#### Client Exports (`index.tsx`)
|
|
474
461
|
|
|
475
462
|
```tsx
|
|
476
|
-
import { Signal } from "@
|
|
463
|
+
import { Signal } from "@akanjs/ui";
|
|
477
464
|
import { FaUser } from "react-icons/fa";
|
|
478
465
|
|
|
479
466
|
import * as Template from "./User.Template";
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
{
|
|
2
|
+
"title": "How to create doc page",
|
|
3
|
+
"description": "How to create documentation page of Akan.js framework",
|
|
4
|
+
"scans": [
|
|
5
|
+
{
|
|
6
|
+
"type": "example",
|
|
7
|
+
"description": "Example of a system architecture documentation page",
|
|
8
|
+
"path": "apps/angelo/app/[lang]/akanjs/(docs)/docs/systemArch/frontend/page.tsx"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"type": "example",
|
|
12
|
+
"description": "Example of a module documentation page with API reference",
|
|
13
|
+
"path": "apps/angelo/app/[lang]/akanjs/(docs)/docs/module/signal/page.tsx"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"type": "source",
|
|
17
|
+
"description": "Documentation utility components",
|
|
18
|
+
"path": "apps/angelo/ui/Docs/index.ts"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"type": "source",
|
|
22
|
+
"description": "Code snippet component for syntax highlighting",
|
|
23
|
+
"path": "apps/angelo/ui/Docs/CodeSnippet.tsx"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"type": "source",
|
|
27
|
+
"description": "Title component for main headings",
|
|
28
|
+
"path": "apps/angelo/ui/Docs/Title.tsx"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"type": "source",
|
|
32
|
+
"description": "Description component for explanatory text",
|
|
33
|
+
"path": "apps/angelo/ui/Docs/Description.tsx"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"type": "source",
|
|
37
|
+
"description": "Option table component for displaying parameters",
|
|
38
|
+
"path": "apps/angelo/ui/Docs/OptionTable.tsx"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"type": "source",
|
|
42
|
+
"description": "Introduction table component for listing features",
|
|
43
|
+
"path": "apps/angelo/ui/Docs/IntroTable.tsx"
|
|
44
|
+
}
|
|
45
|
+
],
|
|
46
|
+
"update": {
|
|
47
|
+
"filePath": "./docPageRule.instruction.md",
|
|
48
|
+
"contents": [
|
|
49
|
+
"Purpose of doc page in Akan.js",
|
|
50
|
+
"How to create doc page",
|
|
51
|
+
"Page organization and structure",
|
|
52
|
+
"Utility components",
|
|
53
|
+
"Best practices for documentation",
|
|
54
|
+
"Internationalization guidelines",
|
|
55
|
+
"Code example guidelines",
|
|
56
|
+
"Complete example implementation",
|
|
57
|
+
"Troubleshooting common issues"
|
|
58
|
+
],
|
|
59
|
+
"rules": [
|
|
60
|
+
"Docs.Layout is already set on the top of layout.tsx file in the root of the project, so you don't need to use it in your page",
|
|
61
|
+
"Docs utility should be used with `Docs` prefix, like <Docs.Title>, do not use object destructuring",
|
|
62
|
+
"Always wrap user-facing text in l.trans() with at least English and Korean translations",
|
|
63
|
+
"Use a logical hierarchy of headings (Title → SubTitle → SubSubTitle)",
|
|
64
|
+
"Include a divider (<div className=\"divider\"></div>) between major sections",
|
|
65
|
+
"For long pages, use anchor links with hidden divs for navigation",
|
|
66
|
+
"Code examples should be realistic and include proper comments",
|
|
67
|
+
"Tables should use the appropriate type (OptionTable for parameters, IntroTable for features)",
|
|
68
|
+
"Always specify the correct language for CodeSnippet components"
|
|
69
|
+
]
|
|
70
|
+
},
|
|
71
|
+
"page": "/[lang]/akanjs/(docs)/docs/[category]/[pageName]/page"
|
|
72
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"title": "Enum Constant",
|
|
3
|
+
"description": "how to generate a enumOf usage in constant.ts file",
|
|
4
|
+
"scans": [
|
|
5
|
+
{
|
|
6
|
+
"type": "source",
|
|
7
|
+
"description": "base enum library source code",
|
|
8
|
+
"path": "pkgs/@akanjs/base/src/base.ts"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"type": "example",
|
|
12
|
+
"description": "enumOf usage in constant.ts files",
|
|
13
|
+
"path": "{apps,libs}/*/lib/*/*.constant.ts",
|
|
14
|
+
"filterText": "enumOf",
|
|
15
|
+
"sample": 10
|
|
16
|
+
}
|
|
17
|
+
],
|
|
18
|
+
"update": {
|
|
19
|
+
"filePath": "./enumConstant.instruction.md",
|
|
20
|
+
"contents": ["Structure of enumOf usage in constant.ts file", "How to add enumOf usage in constant.ts file"],
|
|
21
|
+
"rules": []
|
|
22
|
+
},
|
|
23
|
+
"page": "/[lang]/akanjs/(docs)/docs/codebase/enum/page.tsx"
|
|
24
|
+
}
|