@dasidev/dasi-ui 1.0.9 → 1.0.12

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 (443) hide show
  1. package/bin/dasi-cli old2.cjs +225 -0
  2. package/bin/dasi-cli.cjs +193 -69
  3. package/package.json +29 -136
  4. package/template/package.json.template +100 -0
  5. /package/{index.html → template/index.html} +0 -0
  6. /package/{postcss.config.js → template/postcss.config.js} +0 -0
  7. /package/{public → template/public}/favicon.ico +0 -0
  8. /package/{public → template/public}/img/brand/ic_pln.svg +0 -0
  9. /package/{public → template/public}/img/brand/mapp_power_logo.svg +0 -0
  10. /package/{public → template/public}/img/common/pltu_ulumbu_flores_ntt.jpeg +0 -0
  11. /package/{public → template/public}/scripts/pdf.worker.min.js +0 -0
  12. /package/{public → template/public}/scripts/pdf.worker.min.mjs +0 -0
  13. /package/{public → template/public}/scripts/pdf.worker.mjs +0 -0
  14. /package/{public → template/public}/scripts/pdf.worker.mjs.map +0 -0
  15. /package/{src → template/src}/App.vue +0 -0
  16. /package/{src → template/src}/__tests__/index.test.ts +0 -0
  17. /package/{src → template/src}/api/api.ts +0 -0
  18. /package/{src → template/src}/assets/app-selector.svg +0 -0
  19. /package/{src → template/src}/assets/dasi.png +0 -0
  20. /package/{src → template/src}/assets/foto_ss.svg +0 -0
  21. /package/{src → template/src}/assets/icons/circle-blue.svg +0 -0
  22. /package/{src → template/src}/assets/icons/circle-gray.svg +0 -0
  23. /package/{src → template/src}/assets/icons/circle-green.svg +0 -0
  24. /package/{src → template/src}/assets/icons/circle-orange.svg +0 -0
  25. /package/{src → template/src}/assets/icons/circle-purple.svg +0 -0
  26. /package/{src → template/src}/assets/icons/circle-red.svg +0 -0
  27. /package/{src → template/src}/assets/icons/harbor.svg +0 -0
  28. /package/{src → template/src}/assets/icons/ic-box-red.svg +0 -0
  29. /package/{src → template/src}/assets/icons/ic-chevron-right.svg +0 -0
  30. /package/{src → template/src}/assets/icons/ic-loading.svg +0 -0
  31. /package/{src → template/src}/assets/icons/ic-reset.svg +0 -0
  32. /package/{src → template/src}/assets/icons/ic-sailing.svg +0 -0
  33. /package/{src → template/src}/assets/icons/icon-app-selector.svg +0 -0
  34. /package/{src → template/src}/assets/icons/icon-browser-check.svg +0 -0
  35. /package/{src → template/src}/assets/icons/icon-calendar.svg +0 -0
  36. /package/{src → template/src}/assets/icons/icon-chart-bar.svg +0 -0
  37. /package/{src → template/src}/assets/icons/icon-chart-doc.svg +0 -0
  38. /package/{src → template/src}/assets/icons/icon-chart-line.svg +0 -0
  39. /package/{src → template/src}/assets/icons/icon-chart-mix.svg +0 -0
  40. /package/{src → template/src}/assets/icons/icon-chart-pie.svg +0 -0
  41. /package/{src → template/src}/assets/icons/icon-continue.svg +0 -0
  42. /package/{src → template/src}/assets/icons/icon-dashboard-2.svg +0 -0
  43. /package/{src → template/src}/assets/icons/icon-dashboard.svg +0 -0
  44. /package/{src → template/src}/assets/icons/icon-data-kelistrikan.svg +0 -0
  45. /package/{src → template/src}/assets/icons/icon-data-sentral.svg +0 -0
  46. /package/{src → template/src}/assets/icons/icon-database.svg +0 -0
  47. /package/{src → template/src}/assets/icons/icon-desktop.svg +0 -0
  48. /package/{src → template/src}/assets/icons/icon-download.svg +0 -0
  49. /package/{src → template/src}/assets/icons/icon-energi-primer.svg +0 -0
  50. /package/{src → template/src}/assets/icons/icon-faba-apk2.svg +0 -0
  51. /package/{src → template/src}/assets/icons/icon-faba.svg +0 -0
  52. /package/{src → template/src}/assets/icons/icon-factory.svg +0 -0
  53. /package/{src → template/src}/assets/icons/icon-globe-doc.svg +0 -0
  54. /package/{src → template/src}/assets/icons/icon-ikk.svg +0 -0
  55. /package/{src → template/src}/assets/icons/icon-kbb.svg +0 -0
  56. /package/{src → template/src}/assets/icons/icon-kos.svg +0 -0
  57. /package/{src → template/src}/assets/icons/icon-kpi-bod.svg +0 -0
  58. /package/{src → template/src}/assets/icons/icon-kss.svg +0 -0
  59. /package/{src → template/src}/assets/icons/icon-map.svg +0 -0
  60. /package/{src → template/src}/assets/icons/icon-monitoring-harian.svg +0 -0
  61. /package/{src → template/src}/assets/icons/icon-notification.svg +0 -0
  62. /package/{src → template/src}/assets/icons/icon-overview.svg +0 -0
  63. /package/{src → template/src}/assets/icons/icon-pltu.svg +0 -0
  64. /package/{src → template/src}/assets/icons/icon-sebaran-sentral.svg +0 -0
  65. /package/{src → template/src}/assets/icons/icon-select-data-kelistrikan.svg +0 -0
  66. /package/{src → template/src}/assets/icons/icon-select-data-sentral.svg +0 -0
  67. /package/{src → template/src}/assets/icons/icon-select-energi-primer.svg +0 -0
  68. /package/{src → template/src}/assets/icons/icon-select-faba-apk2.svg +0 -0
  69. /package/{src → template/src}/assets/icons/icon-select-ikk.svg +0 -0
  70. /package/{src → template/src}/assets/icons/icon-select-kbb.svg +0 -0
  71. /package/{src → template/src}/assets/icons/icon-select-kos.svg +0 -0
  72. /package/{src → template/src}/assets/icons/icon-select-kpi-bod.svg +0 -0
  73. /package/{src → template/src}/assets/icons/icon-select-kss.svg +0 -0
  74. /package/{src → template/src}/assets/icons/icon-select-monitoring-harian.svg +0 -0
  75. /package/{src → template/src}/assets/icons/icon-select-overview.svg +0 -0
  76. /package/{src → template/src}/assets/icons/icon-select-sebaran-sentral.svg +0 -0
  77. /package/{src → template/src}/assets/icons/icon-sentral-white.svg +0 -0
  78. /package/{src → template/src}/assets/icons/icon-shipping.svg +0 -0
  79. /package/{src → template/src}/assets/icons/icon-sort.svg +0 -0
  80. /package/{src → template/src}/assets/icons/icon-tree-box.svg +0 -0
  81. /package/{src → template/src}/assets/icons/icon-warehouse.svg +0 -0
  82. /package/{src → template/src}/assets/icons/pin-green.svg +0 -0
  83. /package/{src → template/src}/assets/icons/pin-orange.svg +0 -0
  84. /package/{src → template/src}/assets/icons/pin-purple.svg +0 -0
  85. /package/{src → template/src}/assets/icons/ship.svg +0 -0
  86. /package/{src → template/src}/assets/icons/shipment/icon-antri.svg +0 -0
  87. /package/{src → template/src}/assets/icons/shipment/icon-bongkar.svg +0 -0
  88. /package/{src → template/src}/assets/icons/shipment/icon-invoice.svg +0 -0
  89. /package/{src → template/src}/assets/icons/shipment/icon-loading.svg +0 -0
  90. /package/{src → template/src}/assets/icons/shipment/icon-pembayaran.svg +0 -0
  91. /package/{src → template/src}/assets/icons/shipment/icon-pengiriman.svg +0 -0
  92. /package/{src → template/src}/assets/icons/shipment/icon-sailing.svg +0 -0
  93. /package/{src → template/src}/assets/icons/shipment/icon-shipment-completed.svg +0 -0
  94. /package/{src → template/src}/assets/icons/shipment/icon-shipment-in-progress.svg +0 -0
  95. /package/{src → template/src}/assets/icons/shipment/icon-shipment-over-sla.svg +0 -0
  96. /package/{src → template/src}/assets/icons/shipment/icon-spt.svg +0 -0
  97. /package/{src → template/src}/assets/icons/shipment/icon-total-shipment.svg +0 -0
  98. /package/{src → template/src}/assets/icons/upload_doc_icon.svg +0 -0
  99. /package/{src → template/src}/assets/icons/upload_icon_blue.svg +0 -0
  100. /package/{src → template/src}/assets/login-bg-day-min.jpg +0 -0
  101. /package/{src → template/src}/assets/login-bg-night-min.jpg +0 -0
  102. /package/{src → template/src}/assets/login-bg.jpg +0 -0
  103. /package/{src → template/src}/assets/login-day.png +0 -0
  104. /package/{src → template/src}/assets/login-night.png +0 -0
  105. /package/{src → template/src}/assets/lucide-circle-plus-blue.svg +0 -0
  106. /package/{src → template/src}/assets/pdf-logo.svg +0 -0
  107. /package/{src → template/src}/assets/pemasok-card-bg.svg +0 -0
  108. /package/{src → template/src}/assets/success_animation.gif +0 -0
  109. /package/{src → template/src}/assets/success_animation.mp4 +0 -0
  110. /package/{src → template/src}/assets/success_animation.webm +0 -0
  111. /package/{src → template/src}/components/button/BtnAddOutline.vue +0 -0
  112. /package/{src → template/src}/components/button/BtnCircle.vue +0 -0
  113. /package/{src → template/src}/components/button/BtnOutline.vue +0 -0
  114. /package/{src → template/src}/components/button/BtnPrimary.vue +0 -0
  115. /package/{src → template/src}/components/button/BtnSecondary.vue +0 -0
  116. /package/{src → template/src}/components/detail/AccountDetailTimeline.vue +0 -0
  117. /package/{src → template/src}/components/detail/ApprovalInfo.vue +0 -0
  118. /package/{src → template/src}/components/detail/DCI2.vue +0 -0
  119. /package/{src → template/src}/components/detail/DetailContentHeader.vue +0 -0
  120. /package/{src → template/src}/components/detail/DetailContentItem.vue +0 -0
  121. /package/{src → template/src}/components/detail/DetailContentItems.vue +0 -0
  122. /package/{src → template/src}/components/detail/DetailContentLoading.vue +0 -0
  123. /package/{src → template/src}/components/detail/DetailContentTablet.vue +0 -0
  124. /package/{src → template/src}/components/detail/DetailSheet.vue +0 -0
  125. /package/{src → template/src}/components/detail/DetailTimeline.vue +0 -0
  126. /package/{src → template/src}/components/detail/DocApprovalDialog.vue +0 -0
  127. /package/{src → template/src}/components/detail/DocViewerContent.vue +0 -0
  128. /package/{src → template/src}/components/dialog/ConfirmDialog.vue +0 -0
  129. /package/{src → template/src}/components/dialog/DialogBase.vue +0 -0
  130. /package/{src → template/src}/components/dialog/DialogSelect.vue +0 -0
  131. /package/{src → template/src}/components/dialog/ErrorDialog.vue +0 -0
  132. /package/{src → template/src}/components/dialog/FormDialog.vue +0 -0
  133. /package/{src → template/src}/components/dialog/FormInputerDialog.vue +0 -0
  134. /package/{src → template/src}/components/dialog/InfoDialog.vue +0 -0
  135. /package/{src → template/src}/components/dialog/SuccessDialog.vue +0 -0
  136. /package/{src → template/src}/components/examples/TestSchemaExample.vue +0 -0
  137. /package/{src → template/src}/components/forms/auth/LoginForm.vue +0 -0
  138. /package/{src → template/src}/components/forms/auth/PwdScore.vue +0 -0
  139. /package/{src → template/src}/components/helper/ApiTester.vue +0 -0
  140. /package/{src → template/src}/components/helper/ChangePwd.vue +0 -0
  141. /package/{src → template/src}/components/helper/CheckboxElement.vue +0 -0
  142. /package/{src → template/src}/components/helper/ConfigSwitcher.vue +0 -0
  143. /package/{src → template/src}/components/helper/Copyright.vue +0 -0
  144. /package/{src → template/src}/components/helper/ErrorScreen.vue +0 -0
  145. /package/{src → template/src}/components/helper/LucideIcon.vue +0 -0
  146. /package/{src → template/src}/components/helper/PdfViewer.vue +0 -0
  147. /package/{src → template/src}/components/helper/PinInputer.vue +0 -0
  148. /package/{src → template/src}/components/helper/PrivacyPolicy.vue +0 -0
  149. /package/{src → template/src}/components/layout/PageActivityHeader.vue +0 -0
  150. /package/{src → template/src}/components/layout/PageHeader.vue +0 -0
  151. /package/{src → template/src}/components/loadings/LoadingDialog.vue +0 -0
  152. /package/{src → template/src}/components/loadings/LoadingDialogSpin.vue +0 -0
  153. /package/{src → template/src}/components/loadings/LoadingIndicator.vue +0 -0
  154. /package/{src → template/src}/components/loadings/LoadingScreen.vue +0 -0
  155. /package/{src → template/src}/components/notif/Notif.vue +0 -0
  156. /package/{src → template/src}/components/notif/NotifItem.vue +0 -0
  157. /package/{src → template/src}/components/pages/Header.vue +0 -0
  158. /package/{src → template/src}/components/pages/Leftbar.vue +0 -0
  159. /package/{src → template/src}/components/pages/PageActivity.vue +0 -0
  160. /package/{src → template/src}/components/pages/PageActivityContent.vue +0 -0
  161. /package/{src → template/src}/components/pages/PageContentTable.vue +0 -0
  162. /package/{src → template/src}/components/pages/PageTab.vue +0 -0
  163. /package/{src → template/src}/components/selector/BaseSelector.vue +0 -0
  164. /package/{src → template/src}/components/selector/ConfigDataSelector.vue +0 -0
  165. /package/{src → template/src}/components/settings/SettingsItem.vue +0 -0
  166. /package/{src → template/src}/components/tab/TabView.vue +0 -0
  167. /package/{src → template/src}/components/tab/TabViewItem.vue +0 -0
  168. /package/{src → template/src}/components/tab/TabViewItemBar.vue +0 -0
  169. /package/{src → template/src}/components/tables/CellHover.vue +0 -0
  170. /package/{src → template/src}/components/tables/DashboardDataTable.vue +0 -0
  171. /package/{src → template/src}/components/tables/DataStatusTag.vue +0 -0
  172. /package/{src → template/src}/components/tables/DataTable.vue +0 -0
  173. /package/{src → template/src}/components/tables/DataTableAccordion.vue +0 -0
  174. /package/{src → template/src}/components/tables/DataTableActionRow.vue +0 -0
  175. /package/{src → template/src}/components/tables/DataTableCell.vue +0 -0
  176. /package/{src → template/src}/components/tables/DataTableHeader.vue +0 -0
  177. /package/{src → template/src}/components/tables/DataTableRow.vue +0 -0
  178. /package/{src → template/src}/components/tables/ExpandedTable.vue +0 -0
  179. /package/{src → template/src}/components/tables/PageTable.vue +0 -0
  180. /package/{src → template/src}/components/tables/Pagination.vue +0 -0
  181. /package/{src → template/src}/components/tables/dropdown/BaseDropdownTable.vue +0 -0
  182. /package/{src → template/src}/components/tables/dropdown/DropdownTableActivity.vue +0 -0
  183. /package/{src → template/src}/components/tables/dropdown/DropdownTableAsset.vue +0 -0
  184. /package/{src → template/src}/components/tables/dropdown/DropdownTableConfig.vue +0 -0
  185. /package/{src → template/src}/components/tables/dropdown/DropdownTableDataKonektor.vue +0 -0
  186. /package/{src → template/src}/components/tables/dropdown/DropdownTableDataLabel.vue +0 -0
  187. /package/{src → template/src}/components/tables/dropdown/DropdownTableDataSchema.vue +0 -0
  188. /package/{src → template/src}/components/tables/dropdown/DropdownTableFabaPemanfaat.vue +0 -0
  189. /package/{src → template/src}/components/tables/dropdown/DropdownTableGroup.vue +0 -0
  190. /package/{src → template/src}/components/tables/dropdown/DropdownTableHalaman.vue +0 -0
  191. /package/{src → template/src}/components/tables/dropdown/DropdownTableLevel.vue +0 -0
  192. /package/{src → template/src}/components/tables/dropdown/DropdownTableOrganization.vue +0 -0
  193. /package/{src → template/src}/components/tables/dropdown/DropdownTablePengelola.vue +0 -0
  194. /package/{src → template/src}/components/tables/dropdown/DropdownTableQueryLayer.vue +0 -0
  195. /package/{src → template/src}/components/tables/dropdown/DropdownTableSentral.vue +0 -0
  196. /package/{src → template/src}/components/tables/dropdown/DropdownTableWarehouse.vue +0 -0
  197. /package/{src → template/src}/components/tables/dropdown/TableDropdown.vue +0 -0
  198. /package/{src → template/src}/components/ui/accordion/Accordion.vue +0 -0
  199. /package/{src → template/src}/components/ui/accordion/AccordionContent.vue +0 -0
  200. /package/{src → template/src}/components/ui/accordion/AccordionItem.vue +0 -0
  201. /package/{src → template/src}/components/ui/accordion/AccordionTrigger.vue +0 -0
  202. /package/{src → template/src}/components/ui/accordion/index.ts +0 -0
  203. /package/{src → template/src}/components/ui/alert-dialog/AlertDialog.vue +0 -0
  204. /package/{src → template/src}/components/ui/alert-dialog/AlertDialogAction.vue +0 -0
  205. /package/{src → template/src}/components/ui/alert-dialog/AlertDialogCancel.vue +0 -0
  206. /package/{src → template/src}/components/ui/alert-dialog/AlertDialogContent.vue +0 -0
  207. /package/{src → template/src}/components/ui/alert-dialog/AlertDialogDescription.vue +0 -0
  208. /package/{src → template/src}/components/ui/alert-dialog/AlertDialogFooter.vue +0 -0
  209. /package/{src → template/src}/components/ui/alert-dialog/AlertDialogHeader.vue +0 -0
  210. /package/{src → template/src}/components/ui/alert-dialog/AlertDialogTitle.vue +0 -0
  211. /package/{src → template/src}/components/ui/alert-dialog/AlertDialogTrigger.vue +0 -0
  212. /package/{src → template/src}/components/ui/alert-dialog/index.ts +0 -0
  213. /package/{src → template/src}/components/ui/avatar/Avatar.vue +0 -0
  214. /package/{src → template/src}/components/ui/avatar/AvatarFallback.vue +0 -0
  215. /package/{src → template/src}/components/ui/avatar/AvatarImage.vue +0 -0
  216. /package/{src → template/src}/components/ui/avatar/UsersAvatar.vue +0 -0
  217. /package/{src → template/src}/components/ui/avatar/index.ts +0 -0
  218. /package/{src → template/src}/components/ui/button/Button.vue +0 -0
  219. /package/{src → template/src}/components/ui/button/index.ts +0 -0
  220. /package/{src → template/src}/components/ui/calendar/Calendar.vue +0 -0
  221. /package/{src → template/src}/components/ui/calendar/index.ts +0 -0
  222. /package/{src → template/src}/components/ui/checkbox/Checkbox.vue +0 -0
  223. /package/{src → template/src}/components/ui/checkbox/index.ts +0 -0
  224. /package/{src → template/src}/components/ui/command/Command.vue +0 -0
  225. /package/{src → template/src}/components/ui/command/CommandDialog.vue +0 -0
  226. /package/{src → template/src}/components/ui/command/CommandEmpty.vue +0 -0
  227. /package/{src → template/src}/components/ui/command/CommandGroup.vue +0 -0
  228. /package/{src → template/src}/components/ui/command/CommandInput.vue +0 -0
  229. /package/{src → template/src}/components/ui/command/CommandItem.vue +0 -0
  230. /package/{src → template/src}/components/ui/command/CommandList.vue +0 -0
  231. /package/{src → template/src}/components/ui/command/CommandSeparator.vue +0 -0
  232. /package/{src → template/src}/components/ui/command/CommandShortcut.vue +0 -0
  233. /package/{src → template/src}/components/ui/command/index.ts +0 -0
  234. /package/{src → template/src}/components/ui/context-menu/ContextMenu.vue +0 -0
  235. /package/{src → template/src}/components/ui/context-menu/ContextMenuCheckboxItem.vue +0 -0
  236. /package/{src → template/src}/components/ui/context-menu/ContextMenuContent.vue +0 -0
  237. /package/{src → template/src}/components/ui/context-menu/ContextMenuGroup.vue +0 -0
  238. /package/{src → template/src}/components/ui/context-menu/ContextMenuItem.vue +0 -0
  239. /package/{src → template/src}/components/ui/context-menu/ContextMenuLabel.vue +0 -0
  240. /package/{src → template/src}/components/ui/context-menu/ContextMenuPortal.vue +0 -0
  241. /package/{src → template/src}/components/ui/context-menu/ContextMenuRadioGroup.vue +0 -0
  242. /package/{src → template/src}/components/ui/context-menu/ContextMenuRadioItem.vue +0 -0
  243. /package/{src → template/src}/components/ui/context-menu/ContextMenuSeparator.vue +0 -0
  244. /package/{src → template/src}/components/ui/context-menu/ContextMenuShortcut.vue +0 -0
  245. /package/{src → template/src}/components/ui/context-menu/ContextMenuSub.vue +0 -0
  246. /package/{src → template/src}/components/ui/context-menu/ContextMenuSubContent.vue +0 -0
  247. /package/{src → template/src}/components/ui/context-menu/ContextMenuSubTrigger.vue +0 -0
  248. /package/{src → template/src}/components/ui/context-menu/ContextMenuTrigger.vue +0 -0
  249. /package/{src → template/src}/components/ui/context-menu/index.ts +0 -0
  250. /package/{src → template/src}/components/ui/datetime/DatetimeRangeComponent.vue +0 -0
  251. /package/{src → template/src}/components/ui/dialog/Dialog.vue +0 -0
  252. /package/{src → template/src}/components/ui/dialog/DialogClose.vue +0 -0
  253. /package/{src → template/src}/components/ui/dialog/DialogContent.vue +0 -0
  254. /package/{src → template/src}/components/ui/dialog/DialogDescription.vue +0 -0
  255. /package/{src → template/src}/components/ui/dialog/DialogFooter.vue +0 -0
  256. /package/{src → template/src}/components/ui/dialog/DialogHeader.vue +0 -0
  257. /package/{src → template/src}/components/ui/dialog/DialogScrollContent.vue +0 -0
  258. /package/{src → template/src}/components/ui/dialog/DialogTitle.vue +0 -0
  259. /package/{src → template/src}/components/ui/dialog/DialogTrigger.vue +0 -0
  260. /package/{src → template/src}/components/ui/dialog/index.ts +0 -0
  261. /package/{src → template/src}/components/ui/dropdown-menu/DropdownMenu.vue +0 -0
  262. /package/{src → template/src}/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue +0 -0
  263. /package/{src → template/src}/components/ui/dropdown-menu/DropdownMenuContent.vue +0 -0
  264. /package/{src → template/src}/components/ui/dropdown-menu/DropdownMenuGroup.vue +0 -0
  265. /package/{src → template/src}/components/ui/dropdown-menu/DropdownMenuItem.vue +0 -0
  266. /package/{src → template/src}/components/ui/dropdown-menu/DropdownMenuLabel.vue +0 -0
  267. /package/{src → template/src}/components/ui/dropdown-menu/DropdownMenuRadioGroup.vue +0 -0
  268. /package/{src → template/src}/components/ui/dropdown-menu/DropdownMenuRadioItem.vue +0 -0
  269. /package/{src → template/src}/components/ui/dropdown-menu/DropdownMenuSeparator.vue +0 -0
  270. /package/{src → template/src}/components/ui/dropdown-menu/DropdownMenuShortcut.vue +0 -0
  271. /package/{src → template/src}/components/ui/dropdown-menu/DropdownMenuSub.vue +0 -0
  272. /package/{src → template/src}/components/ui/dropdown-menu/DropdownMenuSubContent.vue +0 -0
  273. /package/{src → template/src}/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue +0 -0
  274. /package/{src → template/src}/components/ui/dropdown-menu/DropdownMenuTrigger.vue +0 -0
  275. /package/{src → template/src}/components/ui/dropdown-menu/index.ts +0 -0
  276. /package/{src → template/src}/components/ui/form/FormControl.vue +0 -0
  277. /package/{src → template/src}/components/ui/form/FormDescription.vue +0 -0
  278. /package/{src → template/src}/components/ui/form/FormItem.vue +0 -0
  279. /package/{src → template/src}/components/ui/form/FormLabel.vue +0 -0
  280. /package/{src → template/src}/components/ui/form/FormMessage.vue +0 -0
  281. /package/{src → template/src}/components/ui/form/index.ts +0 -0
  282. /package/{src → template/src}/components/ui/form/useFormField.ts +0 -0
  283. /package/{src → template/src}/components/ui/hover-card/HoverCard.vue +0 -0
  284. /package/{src → template/src}/components/ui/hover-card/HoverCardContent.vue +0 -0
  285. /package/{src → template/src}/components/ui/hover-card/HoverCardTrigger.vue +0 -0
  286. /package/{src → template/src}/components/ui/hover-card/index.ts +0 -0
  287. /package/{src → template/src}/components/ui/input/Input.vue +0 -0
  288. /package/{src → template/src}/components/ui/input/index.ts +0 -0
  289. /package/{src → template/src}/components/ui/label/Label.vue +0 -0
  290. /package/{src → template/src}/components/ui/label/index.ts +0 -0
  291. /package/{src → template/src}/components/ui/pagination/PaginationEllipsis.vue +0 -0
  292. /package/{src → template/src}/components/ui/pagination/PaginationFirst.vue +0 -0
  293. /package/{src → template/src}/components/ui/pagination/PaginationLast.vue +0 -0
  294. /package/{src → template/src}/components/ui/pagination/PaginationNext.vue +0 -0
  295. /package/{src → template/src}/components/ui/pagination/PaginationPrev.vue +0 -0
  296. /package/{src → template/src}/components/ui/pagination/index.ts +0 -0
  297. /package/{src → template/src}/components/ui/pin-input/PinInput.vue +0 -0
  298. /package/{src → template/src}/components/ui/pin-input/PinInputGroup.vue +0 -0
  299. /package/{src → template/src}/components/ui/pin-input/PinInputInput.vue +0 -0
  300. /package/{src → template/src}/components/ui/pin-input/PinInputSeparator.vue +0 -0
  301. /package/{src → template/src}/components/ui/pin-input/index.ts +0 -0
  302. /package/{src → template/src}/components/ui/popover/Popover.vue +0 -0
  303. /package/{src → template/src}/components/ui/popover/PopoverContent.vue +0 -0
  304. /package/{src → template/src}/components/ui/popover/PopoverTrigger.vue +0 -0
  305. /package/{src → template/src}/components/ui/popover/index.ts +0 -0
  306. /package/{src → template/src}/components/ui/preview/PreviewPdf.vue +0 -0
  307. /package/{src → template/src}/components/ui/progress/ProgressCircle.vue +0 -0
  308. /package/{src → template/src}/components/ui/progress/SemiCircularProgressBar.vue +0 -0
  309. /package/{src → template/src}/components/ui/progress/TotalCalories.vue +0 -0
  310. /package/{src → template/src}/components/ui/radio-group/RadioGroup.vue +0 -0
  311. /package/{src → template/src}/components/ui/radio-group/RadioGroupItem.vue +0 -0
  312. /package/{src → template/src}/components/ui/radio-group/index.ts +0 -0
  313. /package/{src → template/src}/components/ui/scroll-area/ScrollArea.vue +0 -0
  314. /package/{src → template/src}/components/ui/scroll-area/ScrollBar.vue +0 -0
  315. /package/{src → template/src}/components/ui/scroll-area/index.ts +0 -0
  316. /package/{src → template/src}/components/ui/select/Select.vue +0 -0
  317. /package/{src → template/src}/components/ui/select/SelectContent.vue +0 -0
  318. /package/{src → template/src}/components/ui/select/SelectGroup.vue +0 -0
  319. /package/{src → template/src}/components/ui/select/SelectInline.vue +0 -0
  320. /package/{src → template/src}/components/ui/select/SelectItem.vue +0 -0
  321. /package/{src → template/src}/components/ui/select/SelectItemText.vue +0 -0
  322. /package/{src → template/src}/components/ui/select/SelectLabel.vue +0 -0
  323. /package/{src → template/src}/components/ui/select/SelectScrollDownButton.vue +0 -0
  324. /package/{src → template/src}/components/ui/select/SelectScrollUpButton.vue +0 -0
  325. /package/{src → template/src}/components/ui/select/SelectSeparator.vue +0 -0
  326. /package/{src → template/src}/components/ui/select/SelectTrigger.vue +0 -0
  327. /package/{src → template/src}/components/ui/select/SelectTriggerCustom.vue +0 -0
  328. /package/{src → template/src}/components/ui/select/SelectValue.vue +0 -0
  329. /package/{src → template/src}/components/ui/select/index.ts +0 -0
  330. /package/{src → template/src}/components/ui/separator/Separator.vue +0 -0
  331. /package/{src → template/src}/components/ui/separator/index.ts +0 -0
  332. /package/{src → template/src}/components/ui/sheet/Sheet.vue +0 -0
  333. /package/{src → template/src}/components/ui/sheet/SheetClose.vue +0 -0
  334. /package/{src → template/src}/components/ui/sheet/SheetContent.vue +0 -0
  335. /package/{src → template/src}/components/ui/sheet/SheetDescription.vue +0 -0
  336. /package/{src → template/src}/components/ui/sheet/SheetFooter.vue +0 -0
  337. /package/{src → template/src}/components/ui/sheet/SheetHeader.vue +0 -0
  338. /package/{src → template/src}/components/ui/sheet/SheetTitle.vue +0 -0
  339. /package/{src → template/src}/components/ui/sheet/SheetTrigger.vue +0 -0
  340. /package/{src → template/src}/components/ui/sheet/index.ts +0 -0
  341. /package/{src → template/src}/components/ui/skeleton/Skeleton.vue +0 -0
  342. /package/{src → template/src}/components/ui/skeleton/index.ts +0 -0
  343. /package/{src → template/src}/components/ui/sonner/Sonner.vue +0 -0
  344. /package/{src → template/src}/components/ui/sonner/index.ts +0 -0
  345. /package/{src → template/src}/components/ui/star/StarRating.vue +0 -0
  346. /package/{src → template/src}/components/ui/switch/Switch.vue +0 -0
  347. /package/{src → template/src}/components/ui/switch/index.ts +0 -0
  348. /package/{src → template/src}/components/ui/table/Table.vue +0 -0
  349. /package/{src → template/src}/components/ui/table/TableBody.vue +0 -0
  350. /package/{src → template/src}/components/ui/table/TableCaption.vue +0 -0
  351. /package/{src → template/src}/components/ui/table/TableCell.vue +0 -0
  352. /package/{src → template/src}/components/ui/table/TableEmpty.vue +0 -0
  353. /package/{src → template/src}/components/ui/table/TableFooter.vue +0 -0
  354. /package/{src → template/src}/components/ui/table/TableHead.vue +0 -0
  355. /package/{src → template/src}/components/ui/table/TableHeader.vue +0 -0
  356. /package/{src → template/src}/components/ui/table/TableRow.vue +0 -0
  357. /package/{src → template/src}/components/ui/table/index.ts +0 -0
  358. /package/{src → template/src}/components/ui/tabs/Tabs.vue +0 -0
  359. /package/{src → template/src}/components/ui/tabs/TabsContent.vue +0 -0
  360. /package/{src → template/src}/components/ui/tabs/TabsList.vue +0 -0
  361. /package/{src → template/src}/components/ui/tabs/TabsTrigger.vue +0 -0
  362. /package/{src → template/src}/components/ui/tabs/index.ts +0 -0
  363. /package/{src → template/src}/components/ui/tags-input/TagsInput.vue +0 -0
  364. /package/{src → template/src}/components/ui/tags-input/TagsInputInput.vue +0 -0
  365. /package/{src → template/src}/components/ui/tags-input/TagsInputItem.vue +0 -0
  366. /package/{src → template/src}/components/ui/tags-input/TagsInputItemDelete.vue +0 -0
  367. /package/{src → template/src}/components/ui/tags-input/TagsInputItemText.vue +0 -0
  368. /package/{src → template/src}/components/ui/tags-input/index.ts +0 -0
  369. /package/{src → template/src}/components/ui/textarea/Textarea.vue +0 -0
  370. /package/{src → template/src}/components/ui/textarea/index.ts +0 -0
  371. /package/{src → template/src}/components/ui/tooltip/Tooltip.vue +0 -0
  372. /package/{src → template/src}/components/ui/tooltip/TooltipContent.vue +0 -0
  373. /package/{src → template/src}/components/ui/tooltip/TooltipProvider.vue +0 -0
  374. /package/{src → template/src}/components/ui/tooltip/TooltipTrigger.vue +0 -0
  375. /package/{src → template/src}/components/ui/tooltip/index.ts +0 -0
  376. /package/{src → template/src}/composables/useAppConfig.ts +0 -0
  377. /package/{src → template/src}/composables/useDarkMode.ts +0 -0
  378. /package/{src → template/src}/config/app.config.ts +0 -0
  379. /package/{src → template/src}/config/examples/ecommerce.config.ts +0 -0
  380. /package/{src → template/src}/config/examples/generic.config.ts +0 -0
  381. /package/{src → template/src}/config/menu.config.ts +0 -0
  382. /package/{src → template/src}/config/my-app.config.ts +0 -0
  383. /package/{src → template/src}/config/test-config.ts +0 -0
  384. /package/{src → template/src}/config/theme.config.ts +0 -0
  385. /package/{src → template/src}/docs/index.ts +0 -0
  386. /package/{src → template/src}/docs.scss +0 -0
  387. /package/{src → template/src}/index.d.ts +0 -0
  388. /package/{src → template/src}/index.ts +0 -0
  389. /package/{src → template/src}/layouts/AuthLayout.vue +0 -0
  390. /package/{src → template/src}/layouts/DefaultLayout.vue +0 -0
  391. /package/{src → template/src}/layouts/DocsLayout.vue +0 -0
  392. /package/{src → template/src}/layouts/FormGlobal.vue +0 -0
  393. /package/{src → template/src}/layouts/GlobalDialog.vue +0 -0
  394. /package/{src → template/src}/layouts/RakorConfirmDialog.vue +0 -0
  395. /package/{src → template/src}/layouts/SettingsLayout.vue +0 -0
  396. /package/{src → template/src}/lib/constants.ts +0 -0
  397. /package/{src → template/src}/lib/detail.utils.ts +0 -0
  398. /package/{src → template/src}/lib/form.utils.ts +0 -0
  399. /package/{src → template/src}/lib/page.flow.utils.ts +0 -0
  400. /package/{src → template/src}/lib/page.utils.ts +0 -0
  401. /package/{src → template/src}/lib/performance.utils.ts +0 -0
  402. /package/{src → template/src}/lib/tablerow.utils.ts +0 -0
  403. /package/{src → template/src}/lib/utils.ts +0 -0
  404. /package/{src → template/src}/main.scss +0 -0
  405. /package/{src → template/src}/main.ts +0 -0
  406. /package/{src → template/src}/menu.ts +0 -0
  407. /package/{src → template/src}/nestedlist_color.scss +0 -0
  408. /package/{src → template/src}/router/index.ts +0 -0
  409. /package/{src → template/src}/stores/auth.ts +0 -0
  410. /package/{src → template/src}/stores/counter.ts +0 -0
  411. /package/{src → template/src}/stores/dialog.ts +0 -0
  412. /package/{src → template/src}/stores/form.ts +0 -0
  413. /package/{src → template/src}/stores/tabs.ts +0 -0
  414. /package/{src → template/src}/tw.scss +0 -0
  415. /package/{src → template/src}/types/form.types.ts +0 -0
  416. /package/{src → template/src}/types/types.ts +0 -0
  417. /package/{src → template/src}/utils/config.utils.ts +0 -0
  418. /package/{src → template/src}/views/NotFound.vue +0 -0
  419. /package/{src → template/src}/views/PageActivity.vue +0 -0
  420. /package/{src → template/src}/views/auth/LoginView.vue +0 -0
  421. /package/{src → template/src}/views/auth/OauthCallback.vue +0 -0
  422. /package/{src → template/src}/views/dashboard/index.vue +0 -0
  423. /package/{src → template/src}/views/settings/AccountSettingsView.vue +0 -0
  424. /package/{src → template/src}/views/settings/AuditLogsSettingsView.vue +0 -0
  425. /package/{src → template/src}/views/settings/DeviceSettingsView.vue +0 -0
  426. /package/{src → template/src}/views/settings/MainSettingsView.vue +0 -0
  427. /package/{src → template/src}/views/settings/ProfileSettingsView.vue +0 -0
  428. /package/{src → template/src}/vueform/config/informasi-gudang.ts +0 -0
  429. /package/{src → template/src}/vueform/config/test-schema.ts +0 -0
  430. /package/{src → template/src}/vueform/config/types.ts +0 -0
  431. /package/{src → template/src}/vueform/customization/classes.js +0 -0
  432. /package/{src → template/src}/vueform/customization/tailwind.classes.js +0 -0
  433. /package/{src → template/src}/vueform/elements/ConfigDataSelectorElement.vue +0 -0
  434. /package/{src → template/src}/vueform/elements/DateSelectorElement.vue +0 -0
  435. /package/{src → template/src}/vueform/elements/SelectorElement.vue +0 -0
  436. /package/{src → template/src}/vueform/schemas/date-selector-test.ts +0 -0
  437. /package/{src → template/src}/vueform/schemas/informasi-gudang.ts +0 -0
  438. /package/{src → template/src}/vueform/schemas/test-schema.ts +0 -0
  439. /package/{src → template/src}/vueform.config.js +0 -0
  440. /package/{src → template/src}/vueform.validator.ts +0 -0
  441. /package/{tailwind.config.js → template/tailwind.config.js} +0 -0
  442. /package/{tsconfig.json → template/tsconfig.json} +0 -0
  443. /package/{vite.config.ts → template/vite.config.ts} +0 -0
@@ -0,0 +1,225 @@
1
+ #!/usr/bin/env node
2
+ const { program } = require('commander');
3
+ const inquirer = require('inquirer');
4
+ const fs = require('fs-extra');
5
+ const path = require('path');
6
+ const chalk = require('chalk');
7
+ const ora = require('ora');
8
+
9
+ program
10
+ .name('dasi-ui')
11
+ .description('DASI UI - Complete Admin Template Setup')
12
+ .version('1.0.10');
13
+
14
+ program
15
+ .command('create [project-name]')
16
+ .description('Initialize DASI UI admin template')
17
+ .action(async (projectName) => {
18
+ console.log(chalk.blue.bold('🚀 Welcome to DASI UI Admin Template Setup'));
19
+ console.log(chalk.gray('This will set up a complete admin dashboard in your current directory\n'));
20
+
21
+ console.log(chalk.blue.bold(`
22
+ ╔══════════════════════════════════════════════════════════════╗
23
+ ║ ║
24
+ ║ 🚀 DASI UI - Complete Admin Template Generator ║
25
+ ║ ║
26
+ ║ Creating: ${chalk.cyan(projectName.padEnd(35))} ║
27
+ ║ ║
28
+ ╚══════════════════════════════════════════════════════════════╝
29
+ `));
30
+
31
+ const questions = [
32
+ {
33
+ type: 'input',
34
+ name: 'projectName',
35
+ message: '📦 Project name:',
36
+ default: projectName,
37
+ validate: (input) => input.length > 0 || 'Project name is required'
38
+ },
39
+ {
40
+ type: 'input',
41
+ name: 'appTitle',
42
+ message: '📱 App title:',
43
+ default: 'DASI Admin Dashboard'
44
+ },
45
+ {
46
+ type: 'input',
47
+ name: 'appDescription',
48
+ message: '📝 App description:',
49
+ default: 'Complete admin dashboard built with DASI UI'
50
+ },
51
+ {
52
+ type: 'input',
53
+ name: 'author',
54
+ message: '👤 Author name:',
55
+ default: 'DASI Developer'
56
+ },
57
+ {
58
+ type: 'list',
59
+ name: 'packageManager',
60
+ message: '📦 Choose package manager:',
61
+ choices: ['npm', 'yarn', 'pnpm'],
62
+ default: 'npm'
63
+ },
64
+ {
65
+ type: 'input',
66
+ name: 'apiUrl',
67
+ message: '🔗 API base URL:',
68
+ default: 'http://localhost:8080/api'
69
+ },
70
+ {
71
+ type: 'confirm',
72
+ name: 'darkMode',
73
+ message: '🌙 Enable dark mode?',
74
+ default: true
75
+ },
76
+ {
77
+ type: 'confirm',
78
+ name: 'gitInit',
79
+ message: '📚 Initialize git repository?',
80
+ default: true
81
+ },
82
+ {
83
+ type: 'confirm',
84
+ name: 'installDeps',
85
+ message: '📥 Install dependencies now?',
86
+ default: true
87
+ }
88
+ ];
89
+
90
+ const answers = await inquirer.prompt(questions);
91
+ const spinner = ora('Setting up DASI UI Admin Template...').start();
92
+
93
+ try {
94
+ const projectPath = path.join(process.cwd(), projectName);
95
+ const templatePath = path.join(__dirname, '../');
96
+
97
+ if (fs.existsSync(projectPath)) {
98
+ spinner.fail('Project directory already exists');
99
+ return;
100
+ }
101
+
102
+ spinner.text = '📁 Creating project directory...';
103
+ fs.mkdirSync(projectPath, { recursive: true });
104
+ console.log(chalk.green(`✅ Directory created: ${projectPath}`));
105
+
106
+ spinner.text = '📋 Copying template files...';
107
+
108
+ const templatePackageJson = path.join(templatePath, 'package.json');
109
+ console.log(chalk.white(` Template package.json exists: ${fs.existsSync(templatePackageJson)}`));
110
+
111
+ await fs.copy(templatePath, projectPath, {
112
+ filter: (src) => {
113
+ const relativePath = path.relative(templatePath, src);
114
+
115
+ const excludePatterns = [
116
+ 'node_modules',
117
+ 'dist',
118
+ '.git',
119
+ 'package-lock.json',
120
+ 'yarn.lock',
121
+ '.DS_Store'
122
+ ];
123
+
124
+ const shouldExclude = excludePatterns.some(pattern =>
125
+ relativePath.includes(pattern) || src.includes(pattern)
126
+ );
127
+
128
+ if (!shouldExclude) {
129
+ console.log(chalk.gray(` Copying: ${relativePath}`));
130
+ }
131
+
132
+ return !shouldExclude;
133
+ }
134
+ });
135
+
136
+ const copiedPackageJson = path.join(projectPath, 'package.json');
137
+ console.log(chalk.white(` Copied package.json exists: ${fs.existsSync(copiedPackageJson)}`));
138
+
139
+ if (!fs.existsSync(copiedPackageJson)) {
140
+ throw new Error('Template copy failed - package.json not found');
141
+ }
142
+
143
+ spinner.text = '⚙️ Updating configuration...';
144
+ const packageJsonPath = path.join(projectPath, 'package.json');
145
+ let packageJson = await fs.readJson(packageJsonPath);
146
+
147
+ packageJson.name = answers.projectName;
148
+ packageJson.description = answers.appDescription;
149
+ packageJson.author = answers.author;
150
+ packageJson.version = '0.1.0';
151
+
152
+ const envContent = `VITE_APP_TITLE=${answers.appTitle}
153
+ VITE_APP_DESCRIPTION=${answers.appDescription}
154
+ VITE_APP_AUTHOR=${answers.author}
155
+ VITE_API_URL=${answers.apiUrl}
156
+ VITE_DARK_MODE=${answers.darkMode}
157
+ VITE_INCLUDE_AUTH=${answers.includeAuth}
158
+ VITE_INCLUDE_CHARTS=${answers.includeCharts}
159
+ VITE_INCLUDE_MAPS=${answers.includeMaps}`;
160
+
161
+ await fs.writeFile(path.join(projectPath, '.env.example'), envContent);
162
+ await fs.copyFile(path.join(projectPath, '.env.example'), path.join(projectPath, '.env'));
163
+
164
+ await fs.writeJson(packageJsonPath, packageJson, { spaces: 2 });
165
+
166
+ if (answers.gitInit) {
167
+ spinner.text = '📚 Initializing git repository...';
168
+ try {
169
+ const { execSync } = require('child_process');
170
+ execSync('git init', { stdio: 'ignore' });
171
+ execSync('git add .', { stdio: 'ignore' });
172
+ execSync('git commit -m "Initial commit: DASI UI Admin Template"', { stdio: 'ignore' });
173
+ } catch (error) {
174
+ console.log(chalk.yellow('⚠️ Git initialization failed, continuing...'));
175
+ }
176
+ }
177
+
178
+ if (answers.installDeps) {
179
+ spinner.text = '📦 Installing dependencies...';
180
+ try {
181
+ const { execSync } = require('child_process');
182
+ execSync(`${answers.packageManager} install`, { stdio: 'pipe' });
183
+ } catch (error) {
184
+ spinner.warn('⚠️ Dependencies installation failed');
185
+ console.log(chalk.yellow(`Please run manually: ${answers.packageManager} install`));
186
+ }
187
+ }
188
+
189
+ console.log(chalk.green(`
190
+ ╔══════════════════════════════════════════════════════════════╗
191
+ ║ ║
192
+ ║ 🎉 Success! Your admin dashboard is ready! ║
193
+ ║ ║
194
+ ╚══════════════════════════════════════════════════════════════╝
195
+ `));
196
+
197
+ console.log(chalk.green('\n🎉 Setup Complete! Your admin dashboard is ready.'));
198
+ console.log(chalk.green('\n📋 What you get:'));
199
+ console.log(chalk.white(' • Complete admin dashboard'));
200
+ console.log(chalk.white(' • Authentication system' + (answers.includeAuth ? ' ✅' : ' ❌')));
201
+ console.log(chalk.white(' • Chart components' + (answers.includeCharts ? ' ✅' : ' ❌')));
202
+ console.log(chalk.white(' • Map components' + (answers.includeMaps ? ' ✅' : ' ❌')));
203
+ console.log(chalk.white(' • Dark mode' + (answers.darkMode ? ' ✅' : ' ❌')));
204
+ console.log(chalk.white(' • TypeScript support'));
205
+ console.log(chalk.white(' • Tailwind CSS styling'));
206
+ console.log(chalk.white(' • Vue 3 + Pinia + Vue Router'));
207
+
208
+ console.log(chalk.green('\n🚀 Next steps:'));
209
+ console.log(chalk.white(` ${answers.packageManager} run dev`));
210
+ console.log(chalk.gray(' Open http://localhost:3000 to view your admin dashboard'));
211
+
212
+ console.log(chalk.green('\n📚 Documentation:'));
213
+ console.log(chalk.white(' • README.md for detailed setup'));
214
+ console.log(chalk.white(' • src/ folder for all components'));
215
+ console.log(chalk.white(' • .env file for configuration'));
216
+
217
+ } catch (error) {
218
+ spinner.fail('❌ Setup failed!');
219
+ console.error(chalk.red('Error Details:'));
220
+ console.error(chalk.red(error.message));
221
+ process.exit(1);
222
+ }
223
+ });
224
+
225
+ program.parse();
package/bin/dasi-cli.cjs CHANGED
@@ -5,42 +5,43 @@ const fs = require('fs-extra');
5
5
  const path = require('path');
6
6
  const chalk = require('chalk');
7
7
  const ora = require('ora');
8
+ const { execSync } = require('child_process');
8
9
 
9
10
  program
10
11
  .name('dasi-ui')
11
- .description('DASI UI - Complete Admin Template Setup')
12
- .version('1.0.9');
12
+ .description('🚀 DASI UI - Complete Admin Template Generator')
13
+ .version('1.0.12');
13
14
 
14
15
  program
15
16
  .command('create [project-name]')
16
- .description('Initialize DASI UI admin template')
17
+ .description('Create a new DASI UI admin dashboard')
17
18
  .action(async (projectName) => {
18
19
  console.log(chalk.blue.bold('🚀 Welcome to DASI UI Admin Template Setup'));
19
20
  console.log(chalk.gray('This will set up a complete admin dashboard in your current directory\n'));
20
21
 
21
22
  console.log(chalk.blue.bold(`
22
- ╔══════════════════════════════════════════════════════════════╗
23
- ║ ║
24
- ║ 🚀 DASI UI - Complete Admin Template Generator ║
25
- ║ ║
26
- ║ Creating: ${chalk.cyan(projectName.padEnd(35))} ║
27
- ║ ║
28
- ╚══════════════════════════════════════════════════════════════╝
23
+ ╔══════════════════════════════════════════════════════════════╗
24
+ ║ ║
25
+ ║ 🚀 DASI UI - Complete Admin Template Generator ║
26
+ ║ ║
27
+ ║ Creating: ${chalk.cyan(projectName.padEnd(35))} ║
28
+ ║ ║
29
+ ╚══════════════════════════════════════════════════════════════╝
29
30
  `));
30
31
 
31
32
  const questions = [
32
- {
33
- type: 'input',
34
- name: 'projectName',
35
- message: '📦 Project name:',
36
- default: projectName,
37
- validate: (input) => input.length > 0 || 'Project name is required'
38
- },
33
+ // {
34
+ // type: 'input',
35
+ // name: 'projectName',
36
+ // message: '📦 Project name:',
37
+ // default: projectName,
38
+ // validate: (input) => input.length > 0 || 'Project name is required'
39
+ // },
39
40
  {
40
41
  type: 'input',
41
42
  name: 'appTitle',
42
43
  message: '📱 App title:',
43
- default: 'DASI Admin Dashboard'
44
+ default: projectName ? projectName.charAt(0).toUpperCase() + projectName.slice(1).replace(/-/g, ' ') : 'DASI Admin Dashboard'
44
45
  },
45
46
  {
46
47
  type: 'input',
@@ -88,111 +89,234 @@ program
88
89
  ];
89
90
 
90
91
  const answers = await inquirer.prompt(questions);
91
- const spinner = ora('Setting up DASI UI Admin Template...').start();
92
+
93
+ // 🎯 Enhanced spinner configuration
94
+ const spinner = ora({
95
+ text: '🏗️ Building your admin dashboard...',
96
+ spinner: 'dots',
97
+ color: 'cyan',
98
+ hideCursor: true,
99
+ interval: 100 // Faster animation
100
+ }).start();
92
101
 
93
102
  try {
94
- const projectPath = path.join(process.cwd(), projectName);
103
+ const projectPath = path.join(process.cwd(), answers.projectName);
95
104
 
96
105
  if (fs.existsSync(projectPath)) {
97
- spinner.fail('Project directory already exists');
106
+ spinner.fail('Project directory already exists');
98
107
  return;
99
108
  }
100
109
 
110
+ // 🎯 Step 1: Create directory with animated spinner
101
111
  spinner.text = '📁 Creating project directory...';
112
+ await new Promise(resolve => setTimeout(resolve, 300));
102
113
  fs.mkdirSync(projectPath, { recursive: true });
114
+ console.log(chalk.green(`\n✅ Directory created: ${projectPath}`));
115
+ spinner.start(); // Restart spinner
116
+
117
+ // 🎯 Step 2: Copy template with progress and continuous animation
118
+ spinner.text = '📋 Copying template files...';
119
+ let copiedFiles = 0;
120
+ const templatePath = path.join(__dirname, '../template');
121
+
122
+ if (!fs.existsSync(templatePath)) {
123
+ throw new Error('Template folder not found. Please ensure this package is installed correctly.');
124
+ }
125
+
126
+ // Count files for progress
127
+ const totalFiles = await countFiles(templatePath);
103
128
 
104
- const templatePath = path.join(__dirname, '../');
129
+ // 🎯 Keep spinner active during copy
130
+ const copyInterval = setInterval(() => {
131
+ spinner.render();
132
+ }, 100);
105
133
 
106
134
  await fs.copy(templatePath, projectPath, {
107
135
  filter: (src) => {
108
- return !src.includes('node_modules') &&
109
- !src.includes('dist') &&
110
- !src.includes('.git') &&
111
- !src.includes('package-lock.json') &&
112
- !src.includes('yarn.lock');
136
+ const relativePath = path.relative(templatePath, src);
137
+
138
+ // Exclude unnecessary files
139
+ const excludePatterns = [
140
+ 'node_modules',
141
+ 'dist',
142
+ '.git',
143
+ 'package-lock.json',
144
+ 'yarn.lock',
145
+ '.DS_Store'
146
+ ];
147
+
148
+ const shouldExclude = excludePatterns.some(pattern =>
149
+ relativePath.includes(pattern)
150
+ );
151
+
152
+ if (!shouldExclude) {
153
+ copiedFiles++;
154
+ const progress = Math.round((copiedFiles / totalFiles) * 100);
155
+ spinner.text = `📋 Copying template files... ${progress}% (${copiedFiles}/${totalFiles})`;
156
+ }
157
+
158
+ return !shouldExclude;
113
159
  }
114
160
  });
115
161
 
162
+ clearInterval(copyInterval);
163
+
164
+ // 🎯 Step 3: Configuration updates with smooth transitions
116
165
  spinner.text = '⚙️ Updating configuration...';
166
+ await new Promise(resolve => setTimeout(resolve, 500));
167
+
168
+ const templatePackageJsonPath = path.join(projectPath, 'package.json.template');
117
169
  const packageJsonPath = path.join(projectPath, 'package.json');
170
+
171
+ if (fs.existsSync(templatePackageJsonPath)) {
172
+ spinner.text = '📝 Setting up package.json...';
173
+ await new Promise(resolve => setTimeout(resolve, 300));
174
+ await fs.move(templatePackageJsonPath, packageJsonPath);
175
+ }
176
+
177
+ // Update package.json
178
+ spinner.text = '🔧 Configuring project settings...';
179
+ await new Promise(resolve => setTimeout(resolve, 300));
118
180
  let packageJson = await fs.readJson(packageJsonPath);
119
181
 
120
182
  packageJson.name = answers.projectName;
121
183
  packageJson.description = answers.appDescription;
122
184
  packageJson.author = answers.author;
123
- packageJson.version = '0.1.0';
185
+ packageJson.version = '0.1.0';
186
+
187
+ await fs.writeJson(packageJsonPath, packageJson, { spaces: 2 });
124
188
 
189
+ // Create environment file
190
+ spinner.text = '🌍 Setting up environment variables...';
191
+ await new Promise(resolve => setTimeout(resolve, 300));
125
192
  const envContent = `VITE_APP_TITLE=${answers.appTitle}
126
- VITE_APP_DESCRIPTION=${answers.appDescription}
127
- VITE_APP_AUTHOR=${answers.author}
128
- VITE_API_URL=${answers.apiUrl}
129
- VITE_DARK_MODE=${answers.darkMode}
130
- VITE_INCLUDE_AUTH=${answers.includeAuth}
131
- VITE_INCLUDE_CHARTS=${answers.includeCharts}
132
- VITE_INCLUDE_MAPS=${answers.includeMaps}`;
193
+ VITE_APP_DESCRIPTION=${answers.appDescription}
194
+ VITE_APP_AUTHOR=${answers.author}
195
+ VITE_API_URL=${answers.apiUrl}
196
+ VITE_DARK_MODE=${answers.darkMode}`;
133
197
 
134
198
  await fs.writeFile(path.join(projectPath, '.env.example'), envContent);
135
199
  await fs.copyFile(path.join(projectPath, '.env.example'), path.join(projectPath, '.env'));
136
200
 
137
- await fs.writeJson(packageJsonPath, packageJson, { spaces: 2 });
138
-
201
+ // 🎯 Step 4: Git initialization with continuous animation
139
202
  if (answers.gitInit) {
140
203
  spinner.text = '📚 Initializing git repository...';
204
+ await new Promise(resolve => setTimeout(resolve, 500));
141
205
  try {
142
- const { execSync } = require('child_process');
143
- execSync('git init', { stdio: 'ignore' });
144
- execSync('git add .', { stdio: 'ignore' });
145
- execSync('git commit -m "Initial commit: DASI UI Admin Template"', { stdio: 'ignore' });
206
+ // Set git config untuk menghindari prompt
207
+ execSync('git config user.name "DASI Developer"', { cwd: projectPath, stdio: 'ignore' });
208
+ execSync('git config user.email "dev@dasi.id"', { cwd: projectPath, stdio: 'ignore' });
209
+
210
+ execSync('git init', { cwd: projectPath, stdio: 'ignore' });
211
+
212
+ spinner.text = '📝 Adding files to git...';
213
+ await new Promise(resolve => setTimeout(resolve, 400));
214
+ execSync('git add .', { cwd: projectPath, stdio: 'ignore' });
215
+
216
+ spinner.text = '💾 Creating initial commit...';
217
+ await new Promise(resolve => setTimeout(resolve, 400));
218
+
219
+ // 🎯 Keep spinner active during git commit
220
+ const gitInterval = setInterval(() => {
221
+ spinner.render();
222
+ }, 100);
223
+
224
+ try {
225
+ execSync('git commit -m "🚀 Initial commit: DASI UI Admin Template"', {
226
+ cwd: projectPath,
227
+ stdio: 'ignore',
228
+ timeout: 10000
229
+ });
230
+ } catch (commitError) {
231
+ console.log(chalk.yellow('\n⚠️ Git commit skipped, continuing...'));
232
+ }
233
+
234
+ clearInterval(gitInterval);
235
+
146
236
  } catch (error) {
147
- console.log(chalk.yellow('⚠️ Git initialization failed, continuing...'));
237
+ console.log(chalk.yellow('\n⚠️ Git initialization failed, continuing...'));
238
+ spinner.start();
148
239
  }
149
240
  }
150
241
 
242
+ // 🎯 Step 5: Install dependencies with continuous spinner
151
243
  if (answers.installDeps) {
152
244
  spinner.text = '📦 Installing dependencies...';
245
+ spinner.color = 'yellow';
246
+
247
+ // 🎯 Keep spinner active during npm install
248
+ const installInterval = setInterval(() => {
249
+ spinner.render();
250
+ }, 100);
251
+
153
252
  try {
154
- const { execSync } = require('child_process');
155
- execSync(`${answers.packageManager} install`, { stdio: 'pipe' });
253
+ execSync(`${answers.packageManager} install`, {
254
+ cwd: projectPath,
255
+ stdio: 'pipe'
256
+ });
257
+ spinner.color = 'green';
156
258
  } catch (error) {
259
+ spinner.color = 'red';
157
260
  spinner.warn('⚠️ Dependencies installation failed');
158
- console.log(chalk.yellow(`Please run manually: ${answers.packageManager} install`));
261
+ console.log(chalk.yellow(`Please run manually: cd ${answers.projectName} && ${answers.packageManager} install`));
159
262
  }
263
+
264
+ clearInterval(installInterval);
160
265
  }
161
266
 
267
+ // 🎯 Success with celebration
268
+ spinner.succeed('✅ Admin dashboard created successfully!');
269
+
162
270
  console.log(chalk.green(`
163
- ╔══════════════════════════════════════════════════════════════╗
164
- ║ ║
165
- ║ 🎉 Success! Your admin dashboard is ready! ║
166
- ║ ║
167
- ╚══════════════════════════════════════════════════════════════╝
271
+ ╔══════════════════════════════════════════════════════════════╗
272
+ ║ ║
273
+ ║ 🎉 Success! Your admin dashboard is ready! ║
274
+ ║ ║
275
+ ╚══════════════════════════════════════════════════════════════╝
168
276
  `));
169
277
 
170
- console.log(chalk.green('\n🎉 Setup Complete! Your admin dashboard is ready.'));
171
- console.log(chalk.green('\n📋 What you get:'));
172
- console.log(chalk.white(' Complete admin dashboard'));
173
- console.log(chalk.white(' Authentication system' + (answers.includeAuth ? ' ✅' : ' ❌')));
174
- console.log(chalk.white(' Chart components' + (answers.includeCharts ? ' ✅' : ' ❌')));
175
- console.log(chalk.white(' • Map components' + (answers.includeMaps ? ' ✅' : ' ❌')));
176
- console.log(chalk.white(' Dark mode' + (answers.darkMode ? ' ✅' : ' ❌')));
177
- console.log(chalk.white(' TypeScript support'));
178
- console.log(chalk.white(' • Tailwind CSS styling'));
179
- console.log(chalk.white(' Vue 3 + Pinia + Vue Router'));
180
-
181
- console.log(chalk.green('\n🚀 Next steps:'));
182
- console.log(chalk.white(` ${answers.packageManager} run dev`));
183
- console.log(chalk.gray(' Open http://localhost:3000 to view your admin dashboard'));
184
-
185
- console.log(chalk.green('\n📚 Documentation:'));
186
- console.log(chalk.white(' • README.md for detailed setup'));
187
- console.log(chalk.white(' • src/ folder for all components'));
188
- console.log(chalk.white(' • .env file for configuration'));
278
+ console.log(chalk.cyan('\n📋 Project Summary:'));
279
+ console.log(chalk.white(` 📁 Location: ${projectPath}`));
280
+ console.log(chalk.white(` 📱 Title: ${answers.appTitle}`));
281
+ console.log(chalk.white(` 📦 Package Manager: ${answers.packageManager}`));
282
+ console.log(chalk.white(` 🌙 Dark Mode: ${answers.darkMode ? '✅' : '❌'}`));
283
+
284
+ console.log(chalk.green('\n🚀 Next Steps:'));
285
+ console.log(chalk.white(` 1️⃣ cd ${answers.projectName}`));
286
+ if (!answers.installDeps) {
287
+ console.log(chalk.white(` 2️⃣ ${answers.packageManager} install`));
288
+ console.log(chalk.white(` 3️⃣ ${answers.packageManager} run dev`));
289
+ } else {
290
+ console.log(chalk.white(` 2️⃣ ${answers.packageManager} run dev`));
291
+ }
292
+ console.log(chalk.gray(` 🌐 Open http://localhost:3000`));
189
293
 
190
294
  } catch (error) {
191
295
  spinner.fail('❌ Setup failed!');
192
296
  console.error(chalk.red('Error Details:'));
193
297
  console.error(chalk.red(error.message));
298
+ console.error(chalk.red(error.stack));
194
299
  process.exit(1);
195
300
  }
196
301
  });
197
302
 
303
+ // Helper function to count files
304
+ async function countFiles(dir) {
305
+ let count = 0;
306
+ const items = await fs.readdir(dir);
307
+
308
+ for (const item of items) {
309
+ const fullPath = path.join(dir, item);
310
+ const stat = await fs.stat(fullPath);
311
+
312
+ if (stat.isDirectory()) {
313
+ count += await countFiles(fullPath);
314
+ } else {
315
+ count++;
316
+ }
317
+ }
318
+
319
+ return count;
320
+ }
321
+
198
322
  program.parse();