@nathapp/na-cli 1.0.1-rc.1 → 1.0.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 (387) hide show
  1. package/README.md +7 -5
  2. package/dist/templates/k8s-cert-manager/README.md +60 -0
  3. package/dist/templates/k8s-cert-manager/cloudflare-cert-manager-issuer.yaml +26 -0
  4. package/dist/templates/k8s-deployment/templates/_deployment.tpl +1 -1
  5. package/dist/templates/k8s-deployment/templates/_endpointslice.tpl +42 -0
  6. package/dist/templates/k8s-deployment/templates/_gateway.tpl +94 -0
  7. package/dist/templates/k8s-deployment/templates/_grpcroute.tpl +186 -0
  8. package/dist/templates/k8s-deployment/templates/_httproute.tpl +209 -0
  9. package/dist/templates/k8s-deployment/templates/_ingressroute.tpl +178 -0
  10. package/dist/templates/k8s-deployment/templates/_middleware.tpl +553 -0
  11. package/dist/templates/k8s-deployment/templates/_serverstransport.tpl +73 -0
  12. package/dist/templates/k8s-deployment/templates/_service.tpl +4 -1
  13. package/dist/templates/k8s-helm-chart/templates/endpointslice.yaml +1 -0
  14. package/dist/templates/k8s-helm-chart/templates/gateway.yaml +1 -0
  15. package/dist/templates/k8s-helm-chart/templates/grpcroute.yaml +1 -0
  16. package/dist/templates/k8s-helm-chart/templates/httproute.yaml +1 -0
  17. package/dist/templates/k8s-helm-chart/templates/ingressroute.yaml +1 -0
  18. package/dist/templates/k8s-helm-chart/templates/middleware.yaml +1 -0
  19. package/dist/templates/k8s-helm-chart/templates/serverstransport.yaml +1 -0
  20. package/dist/templates/k8s-helm-chart/values.yaml +3 -5
  21. package/dist/templates/nestjs-api/{.env → .env.local} +5 -0
  22. package/dist/templates/nestjs-api/.gitignore-rename +2 -1
  23. package/dist/templates/nestjs-api/Dockerfile +33 -13
  24. package/dist/templates/nestjs-api/package.json +31 -17
  25. package/dist/templates/nestjs-api/src/i18n/en_US/date.json +7 -0
  26. package/dist/templates/nestjs-api/src/i18n/en_US/exception.json +1 -1
  27. package/dist/templates/nestjs-api/src/i18n/en_US/validation.json +16 -0
  28. package/dist/templates/nestjs-api/src/i18n/zh_CN/date.json +7 -0
  29. package/dist/templates/nestjs-api/src/i18n/zh_CN/validation.json +16 -0
  30. package/dist/templates/nestjs-api/src/i18n/zh_TW/date.json +7 -0
  31. package/dist/templates/nestjs-api/src/i18n/zh_TW/validation.json +16 -0
  32. package/dist/templates/nestjs-api/test/jest-e2e.json +4 -1
  33. package/dist/templates/nestjs-library/.npmignore-rename +4 -0
  34. package/dist/templates/nestjs-library/package.json +3 -3
  35. package/dist/templates/ts-library/.npmignore-rename +4 -0
  36. package/dist/templates/ts-library/package.json +1 -1
  37. package/dist/templates/turbo-nestjs-vuexy/README.md +3 -0
  38. package/dist/templates/turbo-nestjs-vuexy/package.json +49 -0
  39. package/dist/templates/turbo-nestjs-vuexy/packages/eslint-config/README.md +3 -0
  40. package/dist/templates/turbo-nestjs-vuexy/packages/eslint-config/library.js +43 -0
  41. package/dist/templates/turbo-nestjs-vuexy/packages/eslint-config/package.json +18 -0
  42. package/dist/templates/turbo-nestjs-vuexy/packages/eslint-config/vue.js +236 -0
  43. package/dist/templates/{ts-library/tsconfig.json → turbo-nestjs-vuexy/packages/typescript-config/base.json} +4 -6
  44. package/dist/templates/turbo-nestjs-vuexy/packages/typescript-config/nestjs.json +12 -0
  45. package/dist/templates/turbo-nestjs-vuexy/packages/typescript-config/package.json +9 -0
  46. package/dist/templates/turbo-nestjs-vuexy/packages/typescript-config/vue.json +82 -0
  47. package/dist/templates/turbo-nestjs-vuexy/turbo.json +24 -0
  48. package/dist/templates/vuexy-portal/.editorconfig +1 -0
  49. package/dist/templates/vuexy-portal/.eslintrc.cjs +237 -0
  50. package/dist/templates/vuexy-portal/.gitignore-rename +42 -0
  51. package/dist/templates/vuexy-portal/.stylelintrc.json +46 -0
  52. package/dist/templates/vuexy-portal/Dockerfile +43 -0
  53. package/dist/templates/vuexy-portal/README.md +35 -0
  54. package/dist/templates/vuexy-portal/auto-imports.d.ts +1131 -0
  55. package/dist/templates/vuexy-portal/components.d.ts +68 -0
  56. package/dist/templates/vuexy-portal/dev.Dockerfile +25 -0
  57. package/dist/templates/vuexy-portal/docker-compose.dev.yml +14 -0
  58. package/dist/templates/vuexy-portal/docker-compose.prod.yml +13 -0
  59. package/dist/templates/vuexy-portal/entrypoint.sh +6 -0
  60. package/dist/templates/vuexy-portal/env.d.ts +12 -0
  61. package/dist/templates/vuexy-portal/index.html +57 -0
  62. package/dist/templates/vuexy-portal/nginx.conf +14 -0
  63. package/dist/templates/vuexy-portal/package.json +140 -0
  64. package/dist/templates/vuexy-portal/pnpm-lock.yaml +7963 -0
  65. package/dist/templates/vuexy-portal/prod.Dockerfile +41 -0
  66. package/dist/templates/vuexy-portal/public/favicon.ico +0 -0
  67. package/dist/templates/vuexy-portal/public/images/avatars/avatar-1.png +0 -0
  68. package/dist/templates/vuexy-portal/public/images/avatars/avatar-2.png +0 -0
  69. package/dist/templates/vuexy-portal/public/images/svg/discord.svg +10 -0
  70. package/dist/templates/vuexy-portal/public/images/svg/gift.svg +8 -0
  71. package/dist/templates/vuexy-portal/public/images/svg/keyboard.svg +8 -0
  72. package/dist/templates/vuexy-portal/public/images/svg/laptop.svg +8 -0
  73. package/dist/templates/vuexy-portal/public/images/svg/lightbulb.svg +8 -0
  74. package/dist/templates/vuexy-portal/public/images/svg/rocket.svg +8 -0
  75. package/dist/templates/vuexy-portal/public/loader.css +79 -0
  76. package/dist/templates/vuexy-portal/public/mockServiceWorker.js +287 -0
  77. package/dist/templates/vuexy-portal/shims.d.ts +15 -0
  78. package/dist/templates/vuexy-portal/src/@core/components/AppBarSearch.vue +278 -0
  79. package/dist/templates/vuexy-portal/src/@core/components/AppDrawerHeaderSection.vue +30 -0
  80. package/dist/templates/vuexy-portal/src/@core/components/AppStepper.vue +371 -0
  81. package/dist/templates/vuexy-portal/src/@core/components/BuyNow.vue +92 -0
  82. package/dist/templates/vuexy-portal/src/@core/components/CardStatisticsVerticalSimple.vue +35 -0
  83. package/dist/templates/vuexy-portal/src/@core/components/CustomizerSection.vue +27 -0
  84. package/dist/templates/vuexy-portal/src/@core/components/DialogCloseBtn.vue +25 -0
  85. package/dist/templates/vuexy-portal/src/@core/components/DropZone.vue +135 -0
  86. package/dist/templates/vuexy-portal/src/@core/components/I18n.vue +48 -0
  87. package/dist/templates/vuexy-portal/src/@core/components/MoreBtn.vue +24 -0
  88. package/dist/templates/vuexy-portal/src/@core/components/Notifications.vue +245 -0
  89. package/dist/templates/vuexy-portal/src/@core/components/ProductDescriptionEditor.vue +198 -0
  90. package/dist/templates/vuexy-portal/src/@core/components/ScrollToTop.vue +41 -0
  91. package/dist/templates/vuexy-portal/src/@core/components/Shortcuts.vue +99 -0
  92. package/dist/templates/vuexy-portal/src/@core/components/TablePagination.vue +39 -0
  93. package/dist/templates/vuexy-portal/src/@core/components/TheCustomizer.vue +618 -0
  94. package/dist/templates/vuexy-portal/src/@core/components/ThemeSwitcher.vue +61 -0
  95. package/dist/templates/vuexy-portal/src/@core/components/TiptapEditor.vue +166 -0
  96. package/dist/templates/vuexy-portal/src/@core/components/app-form-elements/AppAutocomplete.vue +57 -0
  97. package/dist/templates/vuexy-portal/src/@core/components/app-form-elements/AppCombobox.vue +57 -0
  98. package/dist/templates/vuexy-portal/src/@core/components/app-form-elements/AppDateTimePicker.vue +543 -0
  99. package/dist/templates/vuexy-portal/src/@core/components/app-form-elements/AppSelect.vue +50 -0
  100. package/dist/templates/vuexy-portal/src/@core/components/app-form-elements/AppTextField.vue +78 -0
  101. package/dist/templates/vuexy-portal/src/@core/components/app-form-elements/AppTextarea.vue +50 -0
  102. package/dist/templates/vuexy-portal/src/@core/components/app-form-elements/CustomCheckboxes.vue +81 -0
  103. package/dist/templates/vuexy-portal/src/@core/components/app-form-elements/CustomCheckboxesWithIcon.vue +95 -0
  104. package/dist/templates/vuexy-portal/src/@core/components/app-form-elements/CustomCheckboxesWithImage.vue +93 -0
  105. package/dist/templates/vuexy-portal/src/@core/components/app-form-elements/CustomRadios.vue +81 -0
  106. package/dist/templates/vuexy-portal/src/@core/components/app-form-elements/CustomRadiosWithIcon.vue +88 -0
  107. package/dist/templates/vuexy-portal/src/@core/components/app-form-elements/CustomRadiosWithImage.vue +99 -0
  108. package/dist/templates/vuexy-portal/src/@core/components/cards/AppCardActions.vue +167 -0
  109. package/dist/templates/vuexy-portal/src/@core/components/cards/AppCardCode.vue +152 -0
  110. package/dist/templates/vuexy-portal/src/@core/components/cards/CardStatisticsHorizontal.vue +41 -0
  111. package/dist/templates/vuexy-portal/src/@core/components/cards/CardStatisticsVertical.vue +48 -0
  112. package/dist/templates/vuexy-portal/src/@core/scss/base/_components.scss +185 -0
  113. package/dist/templates/vuexy-portal/src/@core/scss/base/_dark.scss +16 -0
  114. package/dist/templates/vuexy-portal/src/@core/scss/base/_default-layout-w-horizontal-nav.scss +45 -0
  115. package/dist/templates/vuexy-portal/src/@core/scss/base/_default-layout-w-vertical-nav.scss +103 -0
  116. package/dist/templates/vuexy-portal/src/@core/scss/base/_default-layout.scss +16 -0
  117. package/dist/templates/vuexy-portal/src/@core/scss/base/_horizontal-nav.scss +194 -0
  118. package/dist/templates/vuexy-portal/src/@core/scss/base/_index.scss +48 -0
  119. package/dist/templates/vuexy-portal/src/@core/scss/base/_layouts.scss +63 -0
  120. package/dist/templates/vuexy-portal/src/@core/scss/base/_misc.scss +20 -0
  121. package/dist/templates/vuexy-portal/src/@core/scss/base/_mixins.scss +63 -0
  122. package/dist/templates/vuexy-portal/src/@core/scss/base/_route-transitions.scss +70 -0
  123. package/dist/templates/vuexy-portal/src/@core/scss/base/_utilities.scss +181 -0
  124. package/dist/templates/vuexy-portal/src/@core/scss/base/_utils.scss +90 -0
  125. package/dist/templates/vuexy-portal/src/@core/scss/base/_variables.scss +198 -0
  126. package/dist/templates/vuexy-portal/src/@core/scss/base/_vertical-nav.scss +255 -0
  127. package/dist/templates/vuexy-portal/src/@core/scss/base/libs/_perfect-scrollbar.scss +35 -0
  128. package/dist/templates/vuexy-portal/src/@core/scss/base/libs/vuetify/_index.scss +1 -0
  129. package/dist/templates/vuexy-portal/src/@core/scss/base/libs/vuetify/_overrides.scss +264 -0
  130. package/dist/templates/vuexy-portal/src/@core/scss/base/libs/vuetify/_variables.scss +62 -0
  131. package/dist/templates/vuexy-portal/src/@core/scss/base/placeholders/_default-layout-horizontal-nav.scss +27 -0
  132. package/dist/templates/vuexy-portal/src/@core/scss/base/placeholders/_default-layout-vertical-nav.scss +45 -0
  133. package/dist/templates/vuexy-portal/src/@core/scss/base/placeholders/_default-layout.scss +3 -0
  134. package/dist/templates/vuexy-portal/src/@core/scss/base/placeholders/_horizontal-nav.scss +98 -0
  135. package/dist/templates/vuexy-portal/src/@core/scss/base/placeholders/_index.scss +7 -0
  136. package/dist/templates/vuexy-portal/src/@core/scss/base/placeholders/_misc.scss +7 -0
  137. package/dist/templates/vuexy-portal/src/@core/scss/base/placeholders/_nav.scss +33 -0
  138. package/dist/templates/vuexy-portal/src/@core/scss/base/placeholders/_vertical-nav.scss +80 -0
  139. package/dist/templates/vuexy-portal/src/@core/scss/base/skins/_bordered.scss +72 -0
  140. package/dist/templates/vuexy-portal/src/@core/scss/base/skins/_index.scss +1 -0
  141. package/dist/templates/vuexy-portal/src/@core/scss/template/_default-layout-w-horizontal-nav.scss +9 -0
  142. package/dist/templates/vuexy-portal/src/@core/scss/template/_default-layout-w-vertical-nav.scss +20 -0
  143. package/dist/templates/vuexy-portal/src/@core/scss/template/_horizontal-nav.scss +40 -0
  144. package/dist/templates/vuexy-portal/src/@core/scss/template/_mixins.scss +6 -0
  145. package/dist/templates/vuexy-portal/src/@core/scss/template/_utilities.scss +49 -0
  146. package/dist/templates/vuexy-portal/src/@core/scss/template/_variables.scss +102 -0
  147. package/dist/templates/vuexy-portal/src/@core/scss/template/_vertical-nav.scss +47 -0
  148. package/dist/templates/vuexy-portal/src/@core/scss/template/index.scss +17 -0
  149. package/dist/templates/vuexy-portal/src/@core/scss/template/libs/apex-chart.scss +108 -0
  150. package/dist/templates/vuexy-portal/src/@core/scss/template/libs/full-calendar.scss +351 -0
  151. package/dist/templates/vuexy-portal/src/@core/scss/template/libs/shepherd.scss +94 -0
  152. package/dist/templates/vuexy-portal/src/@core/scss/template/libs/swiper.scss +5 -0
  153. package/dist/templates/vuexy-portal/src/@core/scss/template/libs/vuetify/_variables.scss +351 -0
  154. package/dist/templates/vuexy-portal/src/@core/scss/template/libs/vuetify/components/_alert.scss +114 -0
  155. package/dist/templates/vuexy-portal/src/@core/scss/template/libs/vuetify/components/_avatar.scss +27 -0
  156. package/dist/templates/vuexy-portal/src/@core/scss/template/libs/vuetify/components/_badge.scss +25 -0
  157. package/dist/templates/vuexy-portal/src/@core/scss/template/libs/vuetify/components/_button.scss +280 -0
  158. package/dist/templates/vuexy-portal/src/@core/scss/template/libs/vuetify/components/_cards.scss +3 -0
  159. package/dist/templates/vuexy-portal/src/@core/scss/template/libs/vuetify/components/_checkbox.scss +57 -0
  160. package/dist/templates/vuexy-portal/src/@core/scss/template/libs/vuetify/components/_chip.scss +102 -0
  161. package/dist/templates/vuexy-portal/src/@core/scss/template/libs/vuetify/components/_dialog.scss +27 -0
  162. package/dist/templates/vuexy-portal/src/@core/scss/template/libs/vuetify/components/_expansion-panels.scss +106 -0
  163. package/dist/templates/vuexy-portal/src/@core/scss/template/libs/vuetify/components/_field.scss +308 -0
  164. package/dist/templates/vuexy-portal/src/@core/scss/template/libs/vuetify/components/_list.scss +30 -0
  165. package/dist/templates/vuexy-portal/src/@core/scss/template/libs/vuetify/components/_menu.scss +35 -0
  166. package/dist/templates/vuexy-portal/src/@core/scss/template/libs/vuetify/components/_otp-input.scss +17 -0
  167. package/dist/templates/vuexy-portal/src/@core/scss/template/libs/vuetify/components/_pagination.scss +140 -0
  168. package/dist/templates/vuexy-portal/src/@core/scss/template/libs/vuetify/components/_progress.scss +13 -0
  169. package/dist/templates/vuexy-portal/src/@core/scss/template/libs/vuetify/components/_radio.scss +46 -0
  170. package/dist/templates/vuexy-portal/src/@core/scss/template/libs/vuetify/components/_rating.scss +20 -0
  171. package/dist/templates/vuexy-portal/src/@core/scss/template/libs/vuetify/components/_slider.scss +27 -0
  172. package/dist/templates/vuexy-portal/src/@core/scss/template/libs/vuetify/components/_snackbar.scss +10 -0
  173. package/dist/templates/vuexy-portal/src/@core/scss/template/libs/vuetify/components/_switch.scss +58 -0
  174. package/dist/templates/vuexy-portal/src/@core/scss/template/libs/vuetify/components/_table.scss +48 -0
  175. package/dist/templates/vuexy-portal/src/@core/scss/template/libs/vuetify/components/_tabs.scss +91 -0
  176. package/dist/templates/vuexy-portal/src/@core/scss/template/libs/vuetify/components/_textarea.scss +9 -0
  177. package/dist/templates/vuexy-portal/src/@core/scss/template/libs/vuetify/components/_timeline.scss +99 -0
  178. package/dist/templates/vuexy-portal/src/@core/scss/template/libs/vuetify/components/_tooltip.scss +6 -0
  179. package/dist/templates/vuexy-portal/src/@core/scss/template/libs/vuetify/components/index.scss +25 -0
  180. package/dist/templates/vuexy-portal/src/@core/scss/template/libs/vuetify/index.scss +3 -0
  181. package/dist/templates/vuexy-portal/src/@core/scss/template/libs/vuetify/overrides.scss +18 -0
  182. package/dist/templates/vuexy-portal/src/@core/scss/template/pages/misc.scss +20 -0
  183. package/dist/templates/vuexy-portal/src/@core/scss/template/pages/page-auth.scss +63 -0
  184. package/dist/templates/vuexy-portal/src/@core/scss/template/placeholders/_default-layout-horizontal-nav.scss +7 -0
  185. package/dist/templates/vuexy-portal/src/@core/scss/template/placeholders/_default-layout-vertical-nav.scss +8 -0
  186. package/dist/templates/vuexy-portal/src/@core/scss/template/placeholders/_horizontal-nav.scss +47 -0
  187. package/dist/templates/vuexy-portal/src/@core/scss/template/placeholders/_index.scss +6 -0
  188. package/dist/templates/vuexy-portal/src/@core/scss/template/placeholders/_misc.scss +3 -0
  189. package/dist/templates/vuexy-portal/src/@core/scss/template/placeholders/_nav.scss +27 -0
  190. package/dist/templates/vuexy-portal/src/@core/scss/template/placeholders/_vertical-nav.scss +35 -0
  191. package/dist/templates/vuexy-portal/src/@core/scss/template/skins/_bordered.scss +82 -0
  192. package/dist/templates/vuexy-portal/src/@core/scss/template/skins/_index.scss +1 -0
  193. package/dist/templates/vuexy-portal/src/@custom/assets/images/user-profile-header.png +0 -0
  194. package/dist/templates/vuexy-portal/src/@custom/components/ConfirmationDialog.vue +155 -0
  195. package/dist/templates/vuexy-portal/src/@layouts/components/HorizontalNav.vue +35 -0
  196. package/dist/templates/vuexy-portal/src/@layouts/components/HorizontalNavGroup.vue +110 -0
  197. package/dist/templates/vuexy-portal/src/@layouts/components/HorizontalNavLayout.vue +150 -0
  198. package/dist/templates/vuexy-portal/src/@layouts/components/HorizontalNavLink.vue +56 -0
  199. package/dist/templates/vuexy-portal/src/@layouts/components/HorizontalNavPopper.vue +175 -0
  200. package/dist/templates/vuexy-portal/src/@layouts/components/TransitionExpand.vue +92 -0
  201. package/dist/templates/vuexy-portal/src/@layouts/components/VNodeRenderer.tsx +17 -0
  202. package/dist/templates/vuexy-portal/src/@layouts/components/VerticalNav.vue +236 -0
  203. package/dist/templates/vuexy-portal/src/@layouts/components/VerticalNavGroup.vue +267 -0
  204. package/dist/templates/vuexy-portal/src/@layouts/components/VerticalNavLayout.vue +232 -0
  205. package/dist/templates/vuexy-portal/src/@layouts/components/VerticalNavLink.vue +68 -0
  206. package/dist/templates/vuexy-portal/src/@layouts/components/VerticalNavSectionTitle.vue +37 -0
  207. package/dist/templates/vuexy-portal/src/@layouts/styles/_classes.scss +3 -0
  208. package/dist/templates/vuexy-portal/src/@layouts/styles/_default-layout.scss +35 -0
  209. package/dist/templates/vuexy-portal/src/@layouts/styles/_global.scss +10 -0
  210. package/dist/templates/vuexy-portal/src/@layouts/styles/_mixins.scss +30 -0
  211. package/dist/templates/vuexy-portal/src/@layouts/styles/_placeholders.scss +53 -0
  212. package/dist/templates/vuexy-portal/src/@layouts/styles/_rtl.scss +7 -0
  213. package/dist/templates/vuexy-portal/src/@layouts/styles/_variables.scss +29 -0
  214. package/dist/templates/vuexy-portal/src/@layouts/styles/index.scss +3 -0
  215. package/dist/templates/vuexy-portal/src/App.vue +26 -0
  216. package/dist/templates/vuexy-portal/src/assets/images/avatars/avatar-1.png +0 -0
  217. package/dist/templates/vuexy-portal/src/assets/images/customizer-icons/border-light.svg +16 -0
  218. package/dist/templates/vuexy-portal/src/assets/images/customizer-icons/collapsed-light.svg +17 -0
  219. package/dist/templates/vuexy-portal/src/assets/images/customizer-icons/compact-light.svg +11 -0
  220. package/dist/templates/vuexy-portal/src/assets/images/customizer-icons/default-light.svg +17 -0
  221. package/dist/templates/vuexy-portal/src/assets/images/customizer-icons/horizontal-light.svg +12 -0
  222. package/dist/templates/vuexy-portal/src/assets/images/customizer-icons/ltr-light.svg +15 -0
  223. package/dist/templates/vuexy-portal/src/assets/images/customizer-icons/rtl-light.svg +15 -0
  224. package/dist/templates/vuexy-portal/src/assets/images/customizer-icons/wide-light.svg +11 -0
  225. package/dist/templates/vuexy-portal/src/assets/images/logo.svg +6 -0
  226. package/dist/templates/vuexy-portal/src/assets/images/misc/3d-safe-box-with-golden-dollar-coins.png +0 -0
  227. package/dist/templates/vuexy-portal/src/assets/images/misc/3d-space-rocket-with-smoke.png +0 -0
  228. package/dist/templates/vuexy-portal/src/assets/images/misc/dollar-coins-flying-pink-piggy-bank.png +0 -0
  229. package/dist/templates/vuexy-portal/src/assets/images/misc/fleet-car.png +0 -0
  230. package/dist/templates/vuexy-portal/src/assets/images/pages/misc-mask-dark.png +0 -0
  231. package/dist/templates/vuexy-portal/src/assets/images/pages/misc-mask-light.png +0 -0
  232. package/dist/templates/vuexy-portal/src/assets/images/svg/Card.svg +8 -0
  233. package/dist/templates/vuexy-portal/src/assets/images/svg/Check.svg +4 -0
  234. package/dist/templates/vuexy-portal/src/assets/images/svg/Diamond.svg +12 -0
  235. package/dist/templates/vuexy-portal/src/assets/images/svg/Suitcase.svg +4 -0
  236. package/dist/templates/vuexy-portal/src/assets/images/svg/Wallet.svg +10 -0
  237. package/dist/templates/vuexy-portal/src/assets/images/svg/address.svg +25 -0
  238. package/dist/templates/vuexy-portal/src/assets/images/svg/auth-v1-bottom-shape.svg +4 -0
  239. package/dist/templates/vuexy-portal/src/assets/images/svg/auth-v1-top-shape.svg +4 -0
  240. package/dist/templates/vuexy-portal/src/assets/images/svg/cart.svg +5 -0
  241. package/dist/templates/vuexy-portal/src/assets/images/svg/checkbox-checked.svg +4 -0
  242. package/dist/templates/vuexy-portal/src/assets/images/svg/checkbox-indeterminate.svg +4 -0
  243. package/dist/templates/vuexy-portal/src/assets/images/svg/checkbox-unchecked.svg +10 -0
  244. package/dist/templates/vuexy-portal/src/assets/images/svg/discord.svg +10 -0
  245. package/dist/templates/vuexy-portal/src/assets/images/svg/gift.svg +8 -0
  246. package/dist/templates/vuexy-portal/src/assets/images/svg/home.svg +5 -0
  247. package/dist/templates/vuexy-portal/src/assets/images/svg/keyboard.svg +4 -0
  248. package/dist/templates/vuexy-portal/src/assets/images/svg/laptop.svg +4 -0
  249. package/dist/templates/vuexy-portal/src/assets/images/svg/lightbulb.svg +8 -0
  250. package/dist/templates/vuexy-portal/src/assets/images/svg/office.svg +4 -0
  251. package/dist/templates/vuexy-portal/src/assets/images/svg/paper-send.svg +4 -0
  252. package/dist/templates/vuexy-portal/src/assets/images/svg/payment.svg +21 -0
  253. package/dist/templates/vuexy-portal/src/assets/images/svg/radio-checked.svg +3 -0
  254. package/dist/templates/vuexy-portal/src/assets/images/svg/radio-unchecked.svg +3 -0
  255. package/dist/templates/vuexy-portal/src/assets/images/svg/rocket.svg +4 -0
  256. package/dist/templates/vuexy-portal/src/assets/images/svg/trending.svg +14 -0
  257. package/dist/templates/vuexy-portal/src/assets/images/svg/user-info.svg +4 -0
  258. package/dist/templates/vuexy-portal/src/assets/images/svg/user.svg +6 -0
  259. package/dist/templates/vuexy-portal/src/assets/images/svg/wizard-account.svg +6 -0
  260. package/dist/templates/vuexy-portal/src/assets/images/svg/wizard-address.svg +18 -0
  261. package/dist/templates/vuexy-portal/src/assets/images/svg/wizard-personal.svg +6 -0
  262. package/dist/templates/vuexy-portal/src/assets/images/svg/wizard-social-link.svg +6 -0
  263. package/dist/templates/vuexy-portal/src/assets/images/svg/wizard-submit.svg +6 -0
  264. package/dist/templates/vuexy-portal/src/assets/styles/styles.scss +1 -0
  265. package/dist/templates/vuexy-portal/src/assets/styles/variables/_template.scss +6 -0
  266. package/dist/templates/vuexy-portal/src/assets/styles/variables/_vuetify.scss +7 -0
  267. package/dist/templates/vuexy-portal/src/components/AppLoadingIndicator.vue +63 -0
  268. package/dist/templates/vuexy-portal/src/components/AppPricing.vue +247 -0
  269. package/dist/templates/vuexy-portal/src/components/AppSearchHeader.vue +77 -0
  270. package/dist/templates/vuexy-portal/src/components/ErrorHeader.vue +40 -0
  271. package/dist/templates/vuexy-portal/src/components/dialogs/AddAuthenticatorAppDialog.vue +101 -0
  272. package/dist/templates/vuexy-portal/src/components/dialogs/AddEditAddressDialog.vue +238 -0
  273. package/dist/templates/vuexy-portal/src/components/dialogs/AddEditPermissionDialog.vue +93 -0
  274. package/dist/templates/vuexy-portal/src/components/dialogs/AddEditRoleDialog.vue +302 -0
  275. package/dist/templates/vuexy-portal/src/components/dialogs/AddPaymentMethodDialog.vue +120 -0
  276. package/dist/templates/vuexy-portal/src/components/dialogs/CardAddEditDialog.vue +153 -0
  277. package/dist/templates/vuexy-portal/src/components/dialogs/ConfirmDialog.vue +151 -0
  278. package/dist/templates/vuexy-portal/src/components/dialogs/CreateAppDialog.vue +459 -0
  279. package/dist/templates/vuexy-portal/src/components/dialogs/EnableOneTimePasswordDialog.vue +85 -0
  280. package/dist/templates/vuexy-portal/src/components/dialogs/PaymentProvidersDialog.vue +123 -0
  281. package/dist/templates/vuexy-portal/src/components/dialogs/PricingPlanDialog.vue +34 -0
  282. package/dist/templates/vuexy-portal/src/components/dialogs/ReferAndEarnDialog.vue +181 -0
  283. package/dist/templates/vuexy-portal/src/components/dialogs/ShareProjectDialog.vue +198 -0
  284. package/dist/templates/vuexy-portal/src/components/dialogs/TwoFactorAuthDialog.vue +120 -0
  285. package/dist/templates/vuexy-portal/src/components/dialogs/UserInfoEditDialog.vue +246 -0
  286. package/dist/templates/vuexy-portal/src/components/dialogs/UserUpgradePlanDialog.vue +101 -0
  287. package/dist/templates/vuexy-portal/src/layouts/blank.vue +42 -0
  288. package/dist/templates/vuexy-portal/src/layouts/components/DefaultLayoutWithHorizontalNav.vue +75 -0
  289. package/dist/templates/vuexy-portal/src/layouts/components/DefaultLayoutWithVerticalNav.vue +79 -0
  290. package/dist/templates/vuexy-portal/src/layouts/components/Footer.vue +17 -0
  291. package/dist/templates/vuexy-portal/src/layouts/components/NavSearchBar.vue +266 -0
  292. package/dist/templates/vuexy-portal/src/layouts/components/NavbarShortcuts.vue +45 -0
  293. package/dist/templates/vuexy-portal/src/layouts/components/NavbarThemeSwitcher.vue +22 -0
  294. package/dist/templates/vuexy-portal/src/layouts/components/UserProfile.vue +114 -0
  295. package/dist/templates/vuexy-portal/src/layouts/default.vue +30 -0
  296. package/dist/templates/vuexy-portal/src/pages/[...error].vue +46 -0
  297. package/dist/templates/vuexy-portal/src/pages/account-settings/[tab].vue +57 -0
  298. package/dist/templates/vuexy-portal/src/pages/index.vue +32 -0
  299. package/dist/templates/vuexy-portal/src/pages/login.vue +178 -0
  300. package/dist/templates/vuexy-portal/src/pages/not-authorized.vue +47 -0
  301. package/dist/templates/vuexy-portal/src/pages/second-page.vue +13 -0
  302. package/dist/templates/vuexy-portal/src/plugins/casl/shims-ability.d.ts +8 -0
  303. package/dist/templates/vuexy-portal/src/plugins/i18n/locales/en_US.json +88 -0
  304. package/dist/templates/vuexy-portal/src/plugins/i18n/locales/zh_CN.json +88 -0
  305. package/dist/templates/vuexy-portal/src/plugins/i18n/vue-i18n.d.ts +17 -0
  306. package/dist/templates/vuexy-portal/src/plugins/iconify/icons.css +21039 -0
  307. package/dist/templates/vuexy-portal/src/plugins/iconify/package.json +3 -0
  308. package/dist/templates/vuexy-portal/src/views/account-settings/AccountSettingsSecurity.vue +179 -0
  309. package/dist/templates/vuexy-portal/typed-router.d.ts +146 -0
  310. package/dist/utils/template.js +1 -0
  311. package/dist/utils/template.js.map +1 -1
  312. package/package.json +1 -1
  313. package/.gitlab-ci.yml +0 -145
  314. package/Makefile +0 -62
  315. package/dist/templates/db-schema/.gitlab-ci.yml +0 -139
  316. package/dist/templates/db-schema/Makefile +0 -885
  317. package/dist/templates/k8s-deployment/.gitlab-ci.yml +0 -128
  318. package/dist/templates/k8s-deployment/Makefile +0 -196
  319. package/dist/templates/k8s-deployment/resources/charts/mysql/charts/mysql-install/script/Makefile +0 -12
  320. package/dist/templates/k8s-deployment/resources/charts/redis/charts/redis-install/script/Makefile +0 -8
  321. package/dist/templates/k8s-deployment/services/charts/hooks/charts/pre-delete-rsc/script/Makefile +0 -49
  322. package/dist/templates/k8s-deployment/services/charts/tests/charts/e2e-test-cypress/Makefile +0 -9
  323. package/dist/templates/k8s-deployment/services/charts/tests/charts/e2e-test-js/script/Makefile +0 -14
  324. package/dist/templates/k8s-deployment/services/charts/tests/charts/e2e-test-js/tests/_t-0100-readiness-liveness.ts +0 -84
  325. package/dist/templates/k8s-deployment/services/charts/tests/charts/e2e-test-js/tests/hub.ts +0 -372
  326. package/dist/templates/k8s-deployment/services/charts/tests/charts/e2e-test-js/tests/individual-contact.ts +0 -158
  327. package/dist/templates/k8s-deployment/services/charts/tests/charts/e2e-test-js/tests/individual-contract.ts +0 -328
  328. package/dist/templates/k8s-deployment/services/charts/tests/charts/e2e-test-js/tests/individual-kyc.ts +0 -304
  329. package/dist/templates/k8s-deployment/services/charts/tests/charts/e2e-test-js/tests/individual-onboard-app.ts +0 -823
  330. package/dist/templates/k8s-deployment/services/charts/tests/charts/e2e-test-js/tests/individual-onboard-web.ts +0 -493
  331. package/dist/templates/k8s-deployment/services/charts/tests/charts/e2e-test-js/tests/individual-profile.ts +0 -277
  332. package/dist/templates/k8s-deployment/services/charts/tests/charts/e2e-test-js/tests/individual-whitelist.ts +0 -133
  333. package/dist/templates/k8s-deployment/services/charts/tests/charts/e2e-test-js/tests/t-0200-start.ts +0 -172
  334. package/dist/templates/mxw-base-api-express/.dockerignore +0 -2
  335. package/dist/templates/mxw-base-api-express/.env +0 -10
  336. package/dist/templates/mxw-base-api-express/.gitlab-ci.yml +0 -174
  337. package/dist/templates/mxw-base-api-express/.nvmrc +0 -1
  338. package/dist/templates/mxw-base-api-express/Makefile +0 -84
  339. package/dist/templates/mxw-base-api-express/src/app-service.test.ts +0 -94
  340. package/dist/templates/mxw-base-api-express/src/app-service.ts +0 -498
  341. package/dist/templates/mxw-base-api-express/src/auth/auth-user.test.ts +0 -215
  342. package/dist/templates/mxw-base-api-express/src/auth/auth-user.ts +0 -86
  343. package/dist/templates/mxw-base-api-express/src/auth/auth.ts +0 -81
  344. package/dist/templates/mxw-base-api-express/src/core-service.ts +0 -72
  345. package/dist/templates/mxw-base-api-express/src/crud.ts +0 -84
  346. package/dist/templates/mxw-base-api-express/src/http-handler.ts +0 -71
  347. package/dist/templates/mxw-base-api-express/src/server.ts +0 -54
  348. package/dist/templates/mxw-base-api-express/src/test.ts +0 -38
  349. package/dist/templates/mxw-base-api-express/src/utils/api-utilities.ts +0 -52
  350. package/dist/templates/mxw-base-api-express/src/utils/file-utilities.ts +0 -55
  351. package/dist/templates/mxw-base-api-express/tsconfig.json +0 -32
  352. package/dist/templates/nestjs-api/.dockerignore +0 -6
  353. package/dist/templates/nestjs-api/.gitlab-ci.yml +0 -174
  354. package/dist/templates/nestjs-api/.nvmrc +0 -1
  355. package/dist/templates/nestjs-api/.prettierrc +0 -4
  356. package/dist/templates/nestjs-api/Makefile +0 -95
  357. package/dist/templates/nestjs-api/nest-cli.json +0 -11
  358. package/dist/templates/nestjs-api/src/app.controller.spec.ts +0 -22
  359. package/dist/templates/nestjs-api/src/app.controller.ts +0 -27
  360. package/dist/templates/nestjs-api/src/app.module.ts +0 -32
  361. package/dist/templates/nestjs-api/src/app.service.ts +0 -27
  362. package/dist/templates/nestjs-api/src/main.ts +0 -26
  363. package/dist/templates/nestjs-api/test/app.e2e-spec.ts +0 -24
  364. package/dist/templates/nestjs-api/tsconfig.build.json +0 -4
  365. package/dist/templates/nestjs-api/tsconfig.json +0 -21
  366. package/dist/templates/nestjs-library/.eslintrc.js +0 -24
  367. package/dist/templates/nestjs-library/.gitlab-ci.yml +0 -138
  368. package/dist/templates/nestjs-library/.prettierrc +0 -6
  369. package/dist/templates/nestjs-library/Makefile +0 -60
  370. package/dist/templates/nestjs-library/index.ts +0 -1
  371. package/dist/templates/nestjs-library/lib/index.ts +0 -2
  372. package/dist/templates/nestjs-library/test/app/controller/hello.controller.ts +0 -7
  373. package/dist/templates/nestjs-library/tsconfig.build.json +0 -7
  374. package/dist/templates/nestjs-library/tsconfig.json +0 -18
  375. package/dist/templates/ts-library/.dockerignore +0 -2
  376. package/dist/templates/ts-library/.eslintrc.js +0 -24
  377. package/dist/templates/ts-library/.gitlab-ci.yml +0 -136
  378. package/dist/templates/ts-library/.prettierrc +0 -6
  379. package/dist/templates/ts-library/Makefile +0 -58
  380. package/dist/templates/ts-library/index.ts +0 -1
  381. package/dist/templates/ts-library/lib/index.ts +0 -1
  382. package/dist/templates/ts-library/lib/samples/index.ts +0 -5
  383. package/dist/templates/ts-library/lib/samples/samples-function.ts +0 -3
  384. package/dist/templates/ts-library/test/sample.e2e-spec.ts +0 -10
  385. package/dist/templates/ts-library/tsconfig.build.json +0 -4
  386. package/tsconfig.json +0 -24
  387. /package/dist/templates/{nestjs-api/.eslintrc.js → turbo-nestjs-vuexy/packages/eslint-config/nest.js} +0 -0
@@ -0,0 +1,232 @@
1
+ <script lang="ts">
2
+ import type { PropType } from 'vue'
3
+ import { VerticalNav } from '@layouts/components'
4
+ import { useLayoutConfigStore } from '@layouts/stores/config'
5
+ import type { VerticalNavItems } from '@layouts/types'
6
+
7
+ export default defineComponent({
8
+ props: {
9
+ navItems: {
10
+ type: Array as PropType<VerticalNavItems>,
11
+ required: true,
12
+ },
13
+ verticalNavAttrs: {
14
+ type: Object as PropType<Record<string, null>>,
15
+ default: () => ({}),
16
+ },
17
+ },
18
+ setup(props, { slots }) {
19
+ const { width: windowWidth } = useWindowSize()
20
+ const configStore = useLayoutConfigStore()
21
+
22
+ const isOverlayNavActive = ref(false)
23
+ const isLayoutOverlayVisible = ref(false)
24
+ const toggleIsOverlayNavActive = useToggle(isOverlayNavActive)
25
+
26
+ // ℹ️ This is alternative to below two commented watcher
27
+ // We want to show overlay if overlay nav is visible and want to hide overlay if overlay is hidden and vice versa.
28
+ syncRef(isOverlayNavActive, isLayoutOverlayVisible)
29
+
30
+ // watch(isOverlayNavActive, value => {
31
+ // // Sync layout overlay with overlay nav
32
+ // isLayoutOverlayVisible.value = value
33
+ // })
34
+
35
+ // watch(isLayoutOverlayVisible, value => {
36
+ // // If overlay is closed via click, close hide overlay nav
37
+ // if (!value) isOverlayNavActive.value = false
38
+ // })
39
+
40
+ // ℹ️ Hide overlay if user open overlay nav in <md and increase the window width without closing overlay nav
41
+ watch(windowWidth, () => {
42
+ if (!configStore.isLessThanOverlayNavBreakpoint && isLayoutOverlayVisible.value)
43
+ isLayoutOverlayVisible.value = false
44
+ })
45
+
46
+ return () => {
47
+ const verticalNavAttrs = toRef(props, 'verticalNavAttrs')
48
+
49
+ const { wrapper: verticalNavWrapper, wrapperProps: verticalNavWrapperProps, ...additionalVerticalNavAttrs } = verticalNavAttrs.value
50
+
51
+ // 👉 Vertical nav
52
+ const verticalNav = h(
53
+ VerticalNav,
54
+ { isOverlayNavActive: isOverlayNavActive.value, toggleIsOverlayNavActive, navItems: props.navItems, ...additionalVerticalNavAttrs },
55
+ {
56
+ 'nav-header': () => slots['vertical-nav-header']?.(),
57
+ 'before-nav-items': () => slots['before-vertical-nav-items']?.(),
58
+ },
59
+ )
60
+
61
+ // 👉 Navbar
62
+ const navbar = h(
63
+ 'header',
64
+ { class: ['layout-navbar', { 'navbar-blur': configStore.isNavbarBlurEnabled }] },
65
+ [
66
+ h(
67
+ 'div',
68
+ { class: 'navbar-content-container' },
69
+ slots.navbar?.({
70
+ toggleVerticalOverlayNavActive: toggleIsOverlayNavActive,
71
+ }),
72
+ ),
73
+ ],
74
+ )
75
+
76
+ // 👉 Content area
77
+ const main = h(
78
+ 'main',
79
+ { class: 'layout-page-content' },
80
+ h('div', { class: 'page-content-container' }, slots.default?.()),
81
+ )
82
+
83
+ // 👉 Footer
84
+ const footer = h(
85
+ 'footer',
86
+ { class: 'layout-footer' },
87
+ [
88
+ h(
89
+ 'div',
90
+ { class: 'footer-content-container' },
91
+ slots.footer?.(),
92
+ ),
93
+ ],
94
+ )
95
+
96
+ // 👉 Overlay
97
+ const layoutOverlay = h(
98
+ 'div',
99
+ {
100
+ class: ['layout-overlay', { visible: isLayoutOverlayVisible.value }],
101
+ onClick: () => { isLayoutOverlayVisible.value = !isLayoutOverlayVisible.value },
102
+ },
103
+ )
104
+
105
+ return h(
106
+ 'div',
107
+ { class: ['layout-wrapper', ...configStore._layoutClasses] },
108
+ [
109
+ verticalNavWrapper ? h(verticalNavWrapper, verticalNavWrapperProps, { default: () => verticalNav }) : verticalNav,
110
+ h(
111
+ 'div',
112
+ { class: 'layout-content-wrapper' },
113
+ [
114
+ navbar,
115
+ main,
116
+ footer,
117
+ ],
118
+ ),
119
+ layoutOverlay,
120
+ ],
121
+ )
122
+ }
123
+ },
124
+ })
125
+ </script>
126
+
127
+ <style lang="scss">
128
+ @use "@configured-variables" as variables;
129
+ @use "@layouts/styles/placeholders";
130
+ @use "@layouts/styles/mixins";
131
+
132
+ .layout-wrapper.layout-nav-type-vertical {
133
+ // TODO(v2): Check why we need height in vertical nav & min-height in horizontal nav
134
+ block-size: 100%;
135
+
136
+ .layout-content-wrapper {
137
+ display: flex;
138
+ flex-direction: column;
139
+ flex-grow: 1;
140
+ min-block-size: 100dvh;
141
+ transition: padding-inline-start 0.2s ease-in-out;
142
+ will-change: padding-inline-start;
143
+
144
+ @media screen and (min-width: 1280px) {
145
+ padding-inline-start: variables.$layout-vertical-nav-width;
146
+ }
147
+ }
148
+
149
+ .layout-navbar {
150
+ z-index: variables.$layout-vertical-nav-layout-navbar-z-index;
151
+
152
+ .navbar-content-container {
153
+ block-size: variables.$layout-vertical-nav-navbar-height;
154
+ }
155
+
156
+ @at-root {
157
+ .layout-wrapper.layout-nav-type-vertical {
158
+ .layout-navbar {
159
+ @if variables.$layout-vertical-nav-navbar-is-contained {
160
+ @include mixins.boxed-content;
161
+ }
162
+ /* stylelint-disable-next-line @stylistic/indentation */
163
+ @else {
164
+ .navbar-content-container {
165
+ @include mixins.boxed-content;
166
+ }
167
+ }
168
+ }
169
+ }
170
+ }
171
+ }
172
+
173
+ &.layout-navbar-sticky .layout-navbar {
174
+ @extend %layout-navbar-sticky;
175
+ }
176
+
177
+ &.layout-navbar-hidden .layout-navbar {
178
+ @extend %layout-navbar-hidden;
179
+ }
180
+
181
+ // 👉 Footer
182
+ .layout-footer {
183
+ @include mixins.boxed-content;
184
+ }
185
+
186
+ // 👉 Layout overlay
187
+ .layout-overlay {
188
+ position: fixed;
189
+ z-index: variables.$layout-overlay-z-index;
190
+ background-color: rgb(0 0 0 / 60%);
191
+ cursor: pointer;
192
+ inset: 0;
193
+ opacity: 0;
194
+ pointer-events: none;
195
+ transition: opacity 0.25s ease-in-out;
196
+ will-change: transform;
197
+
198
+ &.visible {
199
+ opacity: 1;
200
+ pointer-events: auto;
201
+ }
202
+ }
203
+
204
+ // Adjust right column pl when vertical nav is collapsed
205
+ &.layout-vertical-nav-collapsed .layout-content-wrapper {
206
+ @media screen and (min-width: 1280px) {
207
+ padding-inline-start: variables.$layout-vertical-nav-collapsed-width;
208
+ }
209
+ }
210
+
211
+ // 👉 Content height fixed
212
+ &.layout-content-height-fixed {
213
+ .layout-content-wrapper {
214
+ max-block-size: 100dvh;
215
+ }
216
+
217
+ .layout-page-content {
218
+ display: flex;
219
+ overflow: hidden;
220
+
221
+ .page-content-container {
222
+ inline-size: 100%;
223
+
224
+ > :first-child {
225
+ max-block-size: 100%;
226
+ overflow-y: auto;
227
+ }
228
+ }
229
+ }
230
+ }
231
+ }
232
+ </style>
@@ -0,0 +1,68 @@
1
+ <script lang="ts" setup>
2
+ import { layoutConfig } from '@layouts'
3
+ import { can } from '@layouts/plugins/casl'
4
+ import { useLayoutConfigStore } from '@layouts/stores/config'
5
+ import type { NavLink } from '@layouts/types'
6
+ import { getComputedNavLinkToProp, getDynamicI18nProps, isNavLinkActive } from '@layouts/utils'
7
+
8
+ defineProps<{
9
+ item: NavLink
10
+ }>()
11
+
12
+ const configStore = useLayoutConfigStore()
13
+ const hideTitleAndBadge = configStore.isVerticalNavMini()
14
+ </script>
15
+
16
+ <template>
17
+ <li
18
+ v-if="can(item.action, item.subject)"
19
+ class="nav-link"
20
+ :class="{ disabled: item.disable }"
21
+ >
22
+ <Component
23
+ :is="item.to ? 'RouterLink' : 'a'"
24
+ v-bind="getComputedNavLinkToProp(item)"
25
+ :class="{ 'router-link-active router-link-exact-active': isNavLinkActive(item, $router) }"
26
+ >
27
+ <Component
28
+ :is="layoutConfig.app.iconRenderer || 'div'"
29
+ v-bind="item.icon || layoutConfig.verticalNav.defaultNavItemIconProps"
30
+ class="nav-item-icon"
31
+ />
32
+ <TransitionGroup name="transition-slide-x">
33
+ <!-- 👉 Title -->
34
+ <Component
35
+ :is="layoutConfig.app.i18n.enable ? 'i18n-t' : 'span'"
36
+ v-show="!hideTitleAndBadge"
37
+ key="title"
38
+ class="nav-item-title"
39
+ v-bind="getDynamicI18nProps(item.title, 'span')"
40
+ >
41
+ {{ item.title }}
42
+ </Component>
43
+
44
+ <!-- 👉 Badge -->
45
+ <Component
46
+ :is="layoutConfig.app.i18n.enable ? 'i18n-t' : 'span'"
47
+ v-if="item.badgeContent"
48
+ v-show="!hideTitleAndBadge"
49
+ key="badge"
50
+ class="nav-item-badge"
51
+ :class="item.badgeClass"
52
+ v-bind="getDynamicI18nProps(item.badgeContent, 'span')"
53
+ >
54
+ {{ item.badgeContent }}
55
+ </Component>
56
+ </TransitionGroup>
57
+ </Component>
58
+ </li>
59
+ </template>
60
+
61
+ <style lang="scss">
62
+ .layout-vertical-nav {
63
+ .nav-link a {
64
+ display: flex;
65
+ align-items: center;
66
+ }
67
+ }
68
+ </style>
@@ -0,0 +1,37 @@
1
+ <script lang="ts" setup>
2
+ import { layoutConfig } from '@layouts'
3
+ import { can } from '@layouts/plugins/casl'
4
+ import { useLayoutConfigStore } from '@layouts/stores/config'
5
+ import type { NavSectionTitle } from '@layouts/types'
6
+ import { getDynamicI18nProps } from '@layouts/utils'
7
+
8
+ defineProps<{
9
+ item: NavSectionTitle
10
+ }>()
11
+
12
+ const configStore = useLayoutConfigStore()
13
+ const shallRenderIcon = configStore.isVerticalNavMini()
14
+ </script>
15
+
16
+ <template>
17
+ <li
18
+ v-if="can(item.action, item.subject)"
19
+ class="nav-section-title"
20
+ >
21
+ <div class="title-wrapper">
22
+ <Transition
23
+ name="vertical-nav-section-title"
24
+ mode="out-in"
25
+ >
26
+ <Component
27
+ :is="shallRenderIcon ? layoutConfig.app.iconRenderer : layoutConfig.app.i18n.enable ? 'i18n-t' : 'span'"
28
+ :key="shallRenderIcon"
29
+ :class="shallRenderIcon ? 'placeholder-icon' : 'title-text'"
30
+ v-bind="{ ...layoutConfig.icons.sectionTitlePlaceholder, ...getDynamicI18nProps(item.heading, 'span') }"
31
+ >
32
+ {{ !shallRenderIcon ? item.heading : null }}
33
+ </Component>
34
+ </Transition>
35
+ </div>
36
+ </li>
37
+ </template>
@@ -0,0 +1,3 @@
1
+ .cursor-pointer {
2
+ cursor: pointer;
3
+ }
@@ -0,0 +1,35 @@
1
+ // These are styles which are both common in layout w/ vertical nav & horizontal nav
2
+ @use "@layouts/styles/rtl";
3
+ @use "@layouts/styles/placeholders";
4
+ @use "@layouts/styles/mixins";
5
+ @use "@configured-variables" as variables;
6
+
7
+ html,
8
+ body {
9
+ min-block-size: 100%;
10
+ }
11
+
12
+ .layout-page-content {
13
+ @include mixins.boxed-content(true);
14
+
15
+ flex-grow: 1;
16
+
17
+ // TODO: Use grid gutter variable here
18
+ padding-block: 1.5rem;
19
+ }
20
+
21
+ .layout-footer {
22
+ .footer-content-container {
23
+ block-size: variables.$layout-vertical-nav-footer-height;
24
+ }
25
+
26
+ .layout-footer-sticky & {
27
+ position: sticky;
28
+ inset-block-end: 0;
29
+ will-change: transform;
30
+ }
31
+
32
+ .layout-footer-hidden & {
33
+ display: none;
34
+ }
35
+ }
@@ -0,0 +1,10 @@
1
+ *,
2
+ ::before,
3
+ ::after {
4
+ box-sizing: inherit;
5
+ background-repeat: no-repeat;
6
+ }
7
+
8
+ html {
9
+ box-sizing: border-box;
10
+ }
@@ -0,0 +1,30 @@
1
+ @use "placeholders";
2
+ @use "@configured-variables" as variables;
3
+
4
+ @mixin rtl {
5
+ @if variables.$enable-rtl-styles {
6
+ [dir="rtl"] & {
7
+ @content;
8
+ }
9
+ }
10
+ }
11
+
12
+ @mixin boxed-content($nest-selector: false) {
13
+ & {
14
+ @extend %boxed-content-spacing;
15
+
16
+ @at-root {
17
+ @if $nest-selector == false {
18
+ .layout-content-width-boxed#{&} {
19
+ @extend %boxed-content;
20
+ }
21
+ }
22
+ // stylelint-disable-next-line @stylistic/indentation
23
+ @else {
24
+ .layout-content-width-boxed & {
25
+ @extend %boxed-content;
26
+ }
27
+ }
28
+ }
29
+ }
30
+ }
@@ -0,0 +1,53 @@
1
+ // placeholders
2
+ @use "@configured-variables" as variables;
3
+
4
+ %boxed-content {
5
+ @at-root #{&}-spacing {
6
+ // TODO: Use grid gutter variable here
7
+ padding-inline: 1.5rem;
8
+ }
9
+
10
+ inline-size: 100%;
11
+ margin-inline: auto;
12
+ max-inline-size: variables.$layout-boxed-content-width;
13
+ }
14
+
15
+ %layout-navbar-hidden {
16
+ display: none;
17
+ }
18
+
19
+ // ℹ️ We created this placeholder even it is being used in just layout w/ vertical nav because in future we might apply style to both navbar & horizontal nav separately
20
+ %layout-navbar-sticky {
21
+ position: sticky;
22
+ inset-block-start: 0;
23
+
24
+ // will-change: transform;
25
+ // inline-size: 100%;
26
+ }
27
+
28
+ %style-scroll-bar {
29
+ /* width */
30
+
31
+ &::-webkit-scrollbar {
32
+ background: rgb(var(--v-theme-surface));
33
+ block-size: 8px;
34
+ border-end-end-radius: 14px;
35
+ border-start-end-radius: 14px;
36
+ inline-size: 4px;
37
+ }
38
+
39
+ /* Track */
40
+ &::-webkit-scrollbar-track {
41
+ background: transparent;
42
+ }
43
+
44
+ /* Handle */
45
+ &::-webkit-scrollbar-thumb {
46
+ border-radius: 0.5rem;
47
+ background: rgb(var(--v-theme-perfect-scrollbar-thumb));
48
+ }
49
+
50
+ &::-webkit-scrollbar-corner {
51
+ display: none;
52
+ }
53
+ }
@@ -0,0 +1,7 @@
1
+ @use "./mixins";
2
+
3
+ .layout-vertical-nav .nav-group-arrow {
4
+ @include mixins.rtl {
5
+ transform: rotate(180deg);
6
+ }
7
+ }
@@ -0,0 +1,29 @@
1
+ // @use "@styles/style.scss";
2
+
3
+ // 👉 Vertical nav
4
+ $layout-vertical-nav-z-index: 12 !default;
5
+ $layout-vertical-nav-width: 260px !default;
6
+ $layout-vertical-nav-collapsed-width: 80px !default;
7
+ $selector-vertical-nav-mini: ".layout-vertical-nav-collapsed .layout-vertical-nav:not(:hover)";
8
+
9
+ // 👉 Horizontal nav
10
+ $layout-horizontal-nav-z-index: 11 !default;
11
+ $layout-horizontal-nav-navbar-height: 64px !default;
12
+
13
+ // 👉 Navbar
14
+ $layout-vertical-nav-navbar-height: 64px !default;
15
+ $layout-vertical-nav-navbar-is-contained: true !default;
16
+ $layout-vertical-nav-layout-navbar-z-index: 11 !default;
17
+ $layout-horizontal-nav-layout-navbar-z-index: 11 !default;
18
+
19
+ // 👉 Main content
20
+ $layout-boxed-content-width: 1440px !default;
21
+
22
+ // 👉Footer
23
+ $layout-vertical-nav-footer-height: 56px !default;
24
+
25
+ // 👉 Layout overlay
26
+ $layout-overlay-z-index: 11 !default;
27
+
28
+ // 👉 RTL
29
+ $enable-rtl-styles: true !default;
@@ -0,0 +1,3 @@
1
+ @use "global";
2
+ @use "vue3-perfect-scrollbar/dist/vue3-perfect-scrollbar.min.css";
3
+ @use "classes";
@@ -0,0 +1,26 @@
1
+ <script setup lang="ts">
2
+ import { useTheme } from 'vuetify'
3
+ import ScrollToTop from '@core/components/ScrollToTop.vue'
4
+ import initCore from '@core/initCore'
5
+ import { initConfigStore, useConfigStore } from '@core/stores/config'
6
+ import { hexToRgb } from '@layouts/utils'
7
+
8
+ const { global } = useTheme()
9
+
10
+ // ℹ️ Sync current theme with initial loader theme
11
+ initCore()
12
+ initConfigStore()
13
+
14
+ const configStore = useConfigStore()
15
+ </script>
16
+
17
+ <template>
18
+ <VLocaleProvider :rtl="configStore.isAppRTL">
19
+ <!-- ℹ️ This is required to set the background color of active nav link based on currently active global theme's primary -->
20
+ <VApp :style="`--v-global-theme-primary: ${hexToRgb(global.current.value.colors.primary)}`">
21
+ <RouterView />
22
+
23
+ <ScrollToTop />
24
+ </VApp>
25
+ </VLocaleProvider>
26
+ </template>
@@ -0,0 +1,16 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="104" height="66" viewBox="0 0 104 66" fill="none">
2
+ <rect width="104" height="66" rx="4" fill="currentColor" fill-opacity="0.02"/>
3
+ <rect x="4.90625" y="23.8839" width="17.6604" height="2.78946" rx="1.39473" fill="currentColor" fill-opacity="0.3"/>
4
+ <rect x="8.83008" y="5.88135" width="9.81132" height="9.70588" rx="2" fill="currentColor" fill-opacity="0.3"/>
5
+ <rect x="4.90625" y="34.4381" width="17.6604" height="2.78946" rx="1.39473" fill="currentColor" fill-opacity="0.3"/>
6
+ <rect x="4.90625" y="44.9923" width="17.6604" height="2.78946" rx="1.39473" fill="currentColor" fill-opacity="0.3"/>
7
+ <rect x="4.90625" y="55.5462" width="17.6604" height="2.78946" rx="1.39473" fill="currentColor" fill-opacity="0.3"/>
8
+ <rect x="34.6152" y="5.17166" width="63.7547" height="7.8" rx="1.5" stroke="currentColor" stroke-opacity="0.12"/>
9
+ <rect x="37.0391" y="6.87158" width="3.92453" height="4.4" rx="1" fill="currentColor" fill-opacity="0.3"/>
10
+ <rect x="80.21" y="6.87158" width="3.92453" height="4.4" rx="1" fill="currentColor" fill-opacity="0.3"/>
11
+ <rect x="86.0957" y="6.87158" width="3.92453" height="4.4" rx="1" fill="currentColor" fill-opacity="0.3"/>
12
+ <rect x="91.002" y="6.87158" width="3.92453" height="4.4" rx="1" fill="currentColor" fill-opacity="0.3"/>
13
+ <rect x="58.9844" y="20.1134" width="39.2264" height="16.6" rx="1.5" stroke="currentColor" stroke-opacity="0.12"/>
14
+ <rect x="34.6152" y="20.1134" width="18.0455" height="16.6" rx="1.5" stroke="currentColor" stroke-opacity="0.12"/>
15
+ <rect x="34.6152" y="42.9545" width="63.7547" height="16.6" rx="1.5" stroke="currentColor" stroke-opacity="0.12"/>
16
+ </svg>
@@ -0,0 +1,17 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="104" height="66" viewBox="0 0 104 66" fill="none">
2
+ <rect width="104" height="66" rx="4" fill="currentColor" fill-opacity="0.02"/>
3
+ <path d="M0 4C0 1.79086 1.79086 0 4 0H13.7359V66H4C1.79086 66 0 64.2091 0 62V4Z" fill="currentColor" fill-opacity="0.04"/>
4
+ <rect x="2.94336" y="23.8839" width="7.84906" height="2.78946" rx="1.39473" fill="currentColor" fill-opacity="0.3"/>
5
+ <rect x="3.43359" y="5.88135" width="6.86793" height="6.79412" rx="2" fill="currentColor" fill-opacity="0.3"/>
6
+ <rect x="2.94336" y="34.4382" width="7.84906" height="2.78946" rx="1.39473" fill="currentColor" fill-opacity="0.3"/>
7
+ <rect x="2.94336" y="44.9923" width="7.84906" height="2.78946" rx="1.39473" fill="currentColor" fill-opacity="0.3"/>
8
+ <rect x="2.94336" y="55.5463" width="7.84906" height="2.78946" rx="1.39473" fill="currentColor" fill-opacity="0.3"/>
9
+ <rect x="21.4717" y="4.67169" width="75.437" height="8.8" rx="2" fill="currentColor" fill-opacity="0.08"/>
10
+ <rect x="25.6172" y="6.87158" width="3.92453" height="4.4" rx="1" fill="currentColor" fill-opacity="0.3"/>
11
+ <rect x="78.248" y="6.87158" width="3.92453" height="4.4" rx="1" fill="currentColor" fill-opacity="0.3"/>
12
+ <rect x="84.1348" y="6.87158" width="3.92453" height="4.4" rx="1" fill="currentColor" fill-opacity="0.3"/>
13
+ <rect x="90.0215" y="6.87158" width="3.92453" height="4.4" rx="1" fill="currentColor" fill-opacity="0.3"/>
14
+ <rect x="50.4912" y="19.6134" width="46.8212" height="17.6" rx="2" fill="currentColor" fill-opacity="0.08"/>
15
+ <rect x="21.4717" y="19.6134" width="22.1679" height="17.6" rx="2" fill="currentColor" fill-opacity="0.08"/>
16
+ <rect x="21.4717" y="42.4545" width="75.8413" height="17.6" rx="2" fill="currentColor" fill-opacity="0.08"/>
17
+ </svg>
@@ -0,0 +1,11 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="104" height="66" viewBox="0 0 104 66" fill="none">
2
+ <rect width="104" height="66" rx="4" fill="currentColor" fill-opacity="0.02"/>
3
+ <rect x="19.4209" y="4.67169" width="64.7547" height="8.8" rx="2" fill="currentColor" fill-opacity="0.08"/>
4
+ <rect x="22.3447" y="6.87164" width="3.92453" height="4.4" rx="1" fill="currentColor" fill-opacity="0.3"/>
5
+ <rect x="65.5146" y="6.87164" width="3.92453" height="4.4" rx="1" fill="currentColor" fill-opacity="0.3"/>
6
+ <rect x="71.4014" y="6.87164" width="3.92453" height="4.4" rx="1" fill="currentColor" fill-opacity="0.3"/>
7
+ <rect x="77.2881" y="6.87164" width="3.92453" height="4.4" rx="1" fill="currentColor" fill-opacity="0.3"/>
8
+ <rect x="44.3525" y="19.6135" width="40.2264" height="17.6" rx="2" fill="currentColor" fill-opacity="0.08"/>
9
+ <rect x="19.4209" y="19.6135" width="19.0455" height="17.6" rx="2" fill="currentColor" fill-opacity="0.08"/>
10
+ <rect x="19.4209" y="42.4545" width="65.1591" height="17.6" rx="2" fill="currentColor" fill-opacity="0.08"/>
11
+ </svg>
@@ -0,0 +1,17 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="104" height="66" viewBox="0 0 104 66" fill="none">
2
+ <rect width="104" height="66" rx="4" fill="currentColor" fill-opacity="0.02"/>
3
+ <path d="M0 4C0 1.79086 1.79086 0 4 0H27.4717V66H4C1.79086 66 0 64.2091 0 62V4Z" fill="currentColor" fill-opacity="0.08"/>
4
+ <rect x="4.90625" y="23.8839" width="17.6604" height="2.78946" rx="1.39473" fill="currentColor" fill-opacity="0.3"/>
5
+ <rect x="8.83008" y="5.88135" width="9.81132" height="9.70588" rx="2" fill="currentColor" fill-opacity="0.3"/>
6
+ <rect x="4.90625" y="34.4381" width="17.6604" height="2.78946" rx="1.39473" fill="currentColor" fill-opacity="0.3"/>
7
+ <rect x="4.90625" y="44.9923" width="17.6604" height="2.78946" rx="1.39473" fill="currentColor" fill-opacity="0.3"/>
8
+ <rect x="4.90625" y="55.5462" width="17.6604" height="2.78946" rx="1.39473" fill="currentColor" fill-opacity="0.3"/>
9
+ <rect x="34.1152" y="4.67166" width="64.7547" height="8.8" rx="2" fill="currentColor" fill-opacity="0.08"/>
10
+ <rect x="37.0391" y="6.87158" width="3.92453" height="4.4" rx="1" fill="currentColor" fill-opacity="0.3"/>
11
+ <rect x="80.21" y="6.87158" width="3.92453" height="4.4" rx="1" fill="currentColor" fill-opacity="0.3"/>
12
+ <rect x="86.0957" y="6.87158" width="3.92453" height="4.4" rx="1" fill="currentColor" fill-opacity="0.3"/>
13
+ <rect x="91.9824" y="6.87158" width="3.92453" height="4.4" rx="1" fill="currentColor" fill-opacity="0.3"/>
14
+ <rect x="58.4844" y="19.6134" width="40.2264" height="17.6" rx="2" fill="currentColor" fill-opacity="0.08"/>
15
+ <rect x="34.1152" y="19.6134" width="19.0455" height="17.6" rx="2" fill="currentColor" fill-opacity="0.08"/>
16
+ <rect x="34.1152" y="42.4545" width="64.7547" height="17.6" rx="2" fill="currentColor" fill-opacity="0.08"/>
17
+ </svg>
@@ -0,0 +1,12 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="104" height="66" viewBox="0 0 104 66" fill="none">
2
+ <rect width="104" height="66" rx="4" fill="currentColor" fill-opacity="0.02"/>
3
+ <rect x="44.0068" y="19.6136" width="46.8212" height="17.6" rx="2" fill="currentColor" fill-opacity="0.08"/>
4
+ <rect x="14.9854" y="19.6136" width="22.1679" height="17.6" rx="2" fill="currentColor" fill-opacity="0.08"/>
5
+ <rect x="14.9854" y="42.4547" width="75.8413" height="17.6" rx="2" fill="currentColor" fill-opacity="0.08"/>
6
+ <rect x="14.9248" y="4.68896" width="74.1506" height="9.00999" rx="2" fill="currentColor" fill-opacity="0.08"/>
7
+ <rect x="20.0264" y="6.50403" width="6.00327" height="5.38019" rx="1" fill="currentColor" fill-opacity="0.3"/>
8
+ <rect x="33.877" y="7.96356" width="6.6372" height="2.46129" rx="1.23064" fill="currentColor" fill-opacity="0.3"/>
9
+ <rect x="48.3652" y="7.96356" width="6.6372" height="2.46129" rx="1.23064" fill="currentColor" fill-opacity="0.3"/>
10
+ <rect x="62.8506" y="7.96356" width="6.6372" height="2.46129" rx="1.23064" fill="currentColor" fill-opacity="0.3"/>
11
+ <rect x="77.3379" y="7.96356" width="6.6372" height="2.46129" rx="1.23064" fill="currentColor" fill-opacity="0.3"/>
12
+ </svg>
@@ -0,0 +1,15 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="104" height="66" viewBox="0 0 104 66" fill="none">
2
+ <rect width="104" height="66" rx="4" fill="currentColor" fill-opacity="0.02"/>
3
+ <rect x="5.20215" y="4.12146" width="24.0976" height="57.5885" rx="2" fill="currentColor" fill-opacity="0.08"/>
4
+ <rect x="10.3232" y="16.8697" width="13.8545" height="2.0921" rx="1.04605" fill="currentColor" fill-opacity="0.3"/>
5
+ <rect x="10.3232" y="25.5618" width="9.87943" height="2.0921" rx="1.04605" fill="currentColor" fill-opacity="0.3"/>
6
+ <rect x="10.3232" y="34.2538" width="12.3826" height="2.0921" rx="1.04605" fill="currentColor" fill-opacity="0.3"/>
7
+ <rect x="10.3232" y="42.946" width="6.08818" height="2.0921" rx="1.04605" fill="currentColor" fill-opacity="0.3"/>
8
+ <rect x="10.3232" y="51.6384" width="8.09094" height="2.0921" rx="1.04605" fill="currentColor" fill-opacity="0.3"/>
9
+ <rect x="35.5137" y="4.12134" width="62.3885" height="57.5885" rx="2" fill="currentColor" fill-opacity="0.08"/>
10
+ <rect x="43.7578" y="14.1833" width="13.8545" height="2.0921" rx="1.04605" fill="currentColor" fill-opacity="0.3"/>
11
+ <rect x="43.7578" y="22.8753" width="32.8013" height="2.0921" rx="1.04605" fill="currentColor" fill-opacity="0.3"/>
12
+ <rect x="43.7578" y="31.5674" width="41.2076" height="2.0921" rx="1.04605" fill="currentColor" fill-opacity="0.3"/>
13
+ <rect x="43.7578" y="40.2593" width="32.8013" height="2.0921" rx="1.04605" fill="currentColor" fill-opacity="0.3"/>
14
+ <rect x="43.7578" y="48.9517" width="5.77482" height="2.0921" rx="1.04605" fill="currentColor" fill-opacity="0.3"/>
15
+ </svg>