@dasidev/dasi-ui 1.0.19 → 1.0.21

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 (447) hide show
  1. package/README.md +6 -6
  2. package/dist/index.js +1 -1
  3. package/dist/types.js +1766 -1764
  4. package/package.json +2 -3
  5. package/template/index.html +0 -18
  6. package/template/package.json.template +0 -100
  7. package/template/postcss.config.js +0 -0
  8. package/template/public/favicon.ico +0 -0
  9. package/template/public/img/brand/ic_pln.svg +0 -12
  10. package/template/public/img/brand/mapp_power_logo.svg +0 -21
  11. package/template/public/img/common/pltu_ulumbu_flores_ntt.jpeg +0 -0
  12. package/template/public/scripts/pdf.worker.min.js +0 -29
  13. package/template/public/scripts/pdf.worker.min.mjs +0 -29
  14. package/template/public/scripts/pdf.worker.mjs +0 -57722
  15. package/template/public/scripts/pdf.worker.mjs.map +0 -1
  16. package/template/src/App.vue +0 -17
  17. package/template/src/__tests__/index.test.ts +0 -9
  18. package/template/src/api/api.ts +0 -117
  19. package/template/src/assets/app-selector.svg +0 -3
  20. package/template/src/assets/dasi.png +0 -0
  21. package/template/src/assets/foto_ss.svg +0 -21
  22. package/template/src/assets/icons/circle-blue.svg +0 -4
  23. package/template/src/assets/icons/circle-gray.svg +0 -15
  24. package/template/src/assets/icons/circle-green.svg +0 -4
  25. package/template/src/assets/icons/circle-orange.svg +0 -4
  26. package/template/src/assets/icons/circle-purple.svg +0 -4
  27. package/template/src/assets/icons/circle-red.svg +0 -15
  28. package/template/src/assets/icons/harbor.svg +0 -12
  29. package/template/src/assets/icons/ic-box-red.svg +0 -8
  30. package/template/src/assets/icons/ic-chevron-right.svg +0 -1
  31. package/template/src/assets/icons/ic-loading.svg +0 -9
  32. package/template/src/assets/icons/ic-reset.svg +0 -16
  33. package/template/src/assets/icons/ic-sailing.svg +0 -5
  34. package/template/src/assets/icons/icon-app-selector.svg +0 -3
  35. package/template/src/assets/icons/icon-browser-check.svg +0 -4
  36. package/template/src/assets/icons/icon-calendar.svg +0 -3
  37. package/template/src/assets/icons/icon-chart-bar.svg +0 -3
  38. package/template/src/assets/icons/icon-chart-doc.svg +0 -16
  39. package/template/src/assets/icons/icon-chart-line.svg +0 -10
  40. package/template/src/assets/icons/icon-chart-mix.svg +0 -15
  41. package/template/src/assets/icons/icon-chart-pie.svg +0 -11
  42. package/template/src/assets/icons/icon-continue.svg +0 -12
  43. package/template/src/assets/icons/icon-dashboard-2.svg +0 -17
  44. package/template/src/assets/icons/icon-dashboard.svg +0 -3
  45. package/template/src/assets/icons/icon-data-kelistrikan.svg +0 -19
  46. package/template/src/assets/icons/icon-data-sentral.svg +0 -11
  47. package/template/src/assets/icons/icon-database.svg +0 -5
  48. package/template/src/assets/icons/icon-desktop.svg +0 -3
  49. package/template/src/assets/icons/icon-download.svg +0 -13
  50. package/template/src/assets/icons/icon-energi-primer.svg +0 -12
  51. package/template/src/assets/icons/icon-faba-apk2.svg +0 -11
  52. package/template/src/assets/icons/icon-faba.svg +0 -11
  53. package/template/src/assets/icons/icon-factory.svg +0 -14
  54. package/template/src/assets/icons/icon-globe-doc.svg +0 -19
  55. package/template/src/assets/icons/icon-ikk.svg +0 -10
  56. package/template/src/assets/icons/icon-kbb.svg +0 -13
  57. package/template/src/assets/icons/icon-kos.svg +0 -16
  58. package/template/src/assets/icons/icon-kpi-bod.svg +0 -15
  59. package/template/src/assets/icons/icon-kss.svg +0 -14
  60. package/template/src/assets/icons/icon-map.svg +0 -12
  61. package/template/src/assets/icons/icon-monitoring-harian.svg +0 -13
  62. package/template/src/assets/icons/icon-notification.svg +0 -4
  63. package/template/src/assets/icons/icon-overview.svg +0 -17
  64. package/template/src/assets/icons/icon-pltu.svg +0 -13
  65. package/template/src/assets/icons/icon-sebaran-sentral.svg +0 -12
  66. package/template/src/assets/icons/icon-select-data-kelistrikan.svg +0 -19
  67. package/template/src/assets/icons/icon-select-data-sentral.svg +0 -11
  68. package/template/src/assets/icons/icon-select-energi-primer.svg +0 -12
  69. package/template/src/assets/icons/icon-select-faba-apk2.svg +0 -11
  70. package/template/src/assets/icons/icon-select-ikk.svg +0 -10
  71. package/template/src/assets/icons/icon-select-kbb.svg +0 -13
  72. package/template/src/assets/icons/icon-select-kos.svg +0 -16
  73. package/template/src/assets/icons/icon-select-kpi-bod.svg +0 -15
  74. package/template/src/assets/icons/icon-select-kss.svg +0 -14
  75. package/template/src/assets/icons/icon-select-monitoring-harian.svg +0 -13
  76. package/template/src/assets/icons/icon-select-overview.svg +0 -17
  77. package/template/src/assets/icons/icon-select-sebaran-sentral.svg +0 -12
  78. package/template/src/assets/icons/icon-sentral-white.svg +0 -13
  79. package/template/src/assets/icons/icon-shipping.svg +0 -5
  80. package/template/src/assets/icons/icon-sort.svg +0 -5
  81. package/template/src/assets/icons/icon-tree-box.svg +0 -14
  82. package/template/src/assets/icons/icon-warehouse.svg +0 -12
  83. package/template/src/assets/icons/pin-green.svg +0 -3
  84. package/template/src/assets/icons/pin-orange.svg +0 -3
  85. package/template/src/assets/icons/pin-purple.svg +0 -3
  86. package/template/src/assets/icons/ship.svg +0 -3
  87. package/template/src/assets/icons/shipment/icon-antri.svg +0 -15
  88. package/template/src/assets/icons/shipment/icon-bongkar.svg +0 -4
  89. package/template/src/assets/icons/shipment/icon-invoice.svg +0 -6
  90. package/template/src/assets/icons/shipment/icon-loading.svg +0 -8
  91. package/template/src/assets/icons/shipment/icon-pembayaran.svg +0 -13
  92. package/template/src/assets/icons/shipment/icon-pengiriman.svg +0 -4
  93. package/template/src/assets/icons/shipment/icon-sailing.svg +0 -4
  94. package/template/src/assets/icons/shipment/icon-shipment-completed.svg +0 -6
  95. package/template/src/assets/icons/shipment/icon-shipment-in-progress.svg +0 -6
  96. package/template/src/assets/icons/shipment/icon-shipment-over-sla.svg +0 -6
  97. package/template/src/assets/icons/shipment/icon-spt.svg +0 -4
  98. package/template/src/assets/icons/shipment/icon-total-shipment.svg +0 -4
  99. package/template/src/assets/icons/upload_doc_icon.svg +0 -42
  100. package/template/src/assets/icons/upload_icon_blue.svg +0 -14
  101. package/template/src/assets/login-bg-day-min.jpg +0 -0
  102. package/template/src/assets/login-bg-night-min.jpg +0 -0
  103. package/template/src/assets/login-bg.jpg +0 -0
  104. package/template/src/assets/login-day.png +0 -0
  105. package/template/src/assets/login-night.png +0 -0
  106. package/template/src/assets/lucide-circle-plus-blue.svg +0 -1
  107. package/template/src/assets/pdf-logo.svg +0 -11
  108. package/template/src/assets/pemasok-card-bg.svg +0 -6
  109. package/template/src/assets/success_animation.gif +0 -0
  110. package/template/src/assets/success_animation.mp4 +0 -0
  111. package/template/src/assets/success_animation.webm +0 -0
  112. package/template/src/components/button/BtnAddOutline.vue +0 -14
  113. package/template/src/components/button/BtnCircle.vue +0 -10
  114. package/template/src/components/button/BtnOutline.vue +0 -15
  115. package/template/src/components/button/BtnPrimary.vue +0 -25
  116. package/template/src/components/button/BtnSecondary.vue +0 -26
  117. package/template/src/components/detail/AccountDetailTimeline.vue +0 -144
  118. package/template/src/components/detail/ApprovalInfo.vue +0 -288
  119. package/template/src/components/detail/DCI2.vue +0 -164
  120. package/template/src/components/detail/DetailContentHeader.vue +0 -83
  121. package/template/src/components/detail/DetailContentItem.vue +0 -186
  122. package/template/src/components/detail/DetailContentItems.vue +0 -387
  123. package/template/src/components/detail/DetailContentLoading.vue +0 -12
  124. package/template/src/components/detail/DetailContentTablet.vue +0 -10
  125. package/template/src/components/detail/DetailSheet.vue +0 -294
  126. package/template/src/components/detail/DetailTimeline.vue +0 -191
  127. package/template/src/components/detail/DocApprovalDialog.vue +0 -29
  128. package/template/src/components/detail/DocViewerContent.vue +0 -991
  129. package/template/src/components/dialog/ConfirmDialog.vue +0 -96
  130. package/template/src/components/dialog/DialogBase.vue +0 -53
  131. package/template/src/components/dialog/DialogSelect.vue +0 -212
  132. package/template/src/components/dialog/ErrorDialog.vue +0 -63
  133. package/template/src/components/dialog/FormDialog.vue +0 -141
  134. package/template/src/components/dialog/FormInputerDialog.vue +0 -91
  135. package/template/src/components/dialog/InfoDialog.vue +0 -74
  136. package/template/src/components/dialog/SuccessDialog.vue +0 -50
  137. package/template/src/components/examples/TestSchemaExample.vue +0 -288
  138. package/template/src/components/forms/auth/LoginForm.vue +0 -806
  139. package/template/src/components/forms/auth/PwdScore.vue +0 -68
  140. package/template/src/components/helper/ApiTester.vue +0 -153
  141. package/template/src/components/helper/ChangePwd.vue +0 -149
  142. package/template/src/components/helper/CheckboxElement.vue +0 -43
  143. package/template/src/components/helper/ConfigSwitcher.vue +0 -54
  144. package/template/src/components/helper/Copyright.vue +0 -10
  145. package/template/src/components/helper/ErrorScreen.vue +0 -40
  146. package/template/src/components/helper/LucideIcon.vue +0 -27
  147. package/template/src/components/helper/PdfViewer.vue +0 -103
  148. package/template/src/components/helper/PinInputer.vue +0 -205
  149. package/template/src/components/helper/PrivacyPolicy.vue +0 -122
  150. package/template/src/components/layout/PageActivityHeader.vue +0 -48
  151. package/template/src/components/layout/PageHeader.vue +0 -69
  152. package/template/src/components/loadings/LoadingDialog.vue +0 -29
  153. package/template/src/components/loadings/LoadingDialogSpin.vue +0 -25
  154. package/template/src/components/loadings/LoadingIndicator.vue +0 -38
  155. package/template/src/components/loadings/LoadingScreen.vue +0 -23
  156. package/template/src/components/notif/Notif.vue +0 -102
  157. package/template/src/components/notif/NotifItem.vue +0 -40
  158. package/template/src/components/pages/Header.vue +0 -431
  159. package/template/src/components/pages/Leftbar.vue +0 -417
  160. package/template/src/components/pages/PageActivity.vue +0 -108
  161. package/template/src/components/pages/PageActivityContent.vue +0 -597
  162. package/template/src/components/pages/PageContentTable.vue +0 -589
  163. package/template/src/components/pages/PageTab.vue +0 -84
  164. package/template/src/components/selector/BaseSelector.vue +0 -1136
  165. package/template/src/components/selector/ConfigDataSelector.vue +0 -136
  166. package/template/src/components/settings/SettingsItem.vue +0 -38
  167. package/template/src/components/tab/TabView.vue +0 -11
  168. package/template/src/components/tab/TabViewItem.vue +0 -18
  169. package/template/src/components/tab/TabViewItemBar.vue +0 -9
  170. package/template/src/components/tables/CellHover.vue +0 -65
  171. package/template/src/components/tables/DashboardDataTable.vue +0 -707
  172. package/template/src/components/tables/DataStatusTag.vue +0 -52
  173. package/template/src/components/tables/DataTable.vue +0 -156
  174. package/template/src/components/tables/DataTableAccordion.vue +0 -249
  175. package/template/src/components/tables/DataTableActionRow.vue +0 -64
  176. package/template/src/components/tables/DataTableCell.vue +0 -271
  177. package/template/src/components/tables/DataTableHeader.vue +0 -60
  178. package/template/src/components/tables/DataTableRow.vue +0 -213
  179. package/template/src/components/tables/ExpandedTable.vue +0 -259
  180. package/template/src/components/tables/PageTable.vue +0 -73
  181. package/template/src/components/tables/Pagination.vue +0 -98
  182. package/template/src/components/tables/dropdown/BaseDropdownTable.vue +0 -140
  183. package/template/src/components/tables/dropdown/DropdownTableActivity.vue +0 -33
  184. package/template/src/components/tables/dropdown/DropdownTableAsset.vue +0 -30
  185. package/template/src/components/tables/dropdown/DropdownTableConfig.vue +0 -30
  186. package/template/src/components/tables/dropdown/DropdownTableDataKonektor.vue +0 -31
  187. package/template/src/components/tables/dropdown/DropdownTableDataLabel.vue +0 -30
  188. package/template/src/components/tables/dropdown/DropdownTableDataSchema.vue +0 -31
  189. package/template/src/components/tables/dropdown/DropdownTableFabaPemanfaat.vue +0 -30
  190. package/template/src/components/tables/dropdown/DropdownTableGroup.vue +0 -36
  191. package/template/src/components/tables/dropdown/DropdownTableHalaman.vue +0 -33
  192. package/template/src/components/tables/dropdown/DropdownTableLevel.vue +0 -66
  193. package/template/src/components/tables/dropdown/DropdownTableOrganization.vue +0 -47
  194. package/template/src/components/tables/dropdown/DropdownTablePengelola.vue +0 -28
  195. package/template/src/components/tables/dropdown/DropdownTableQueryLayer.vue +0 -29
  196. package/template/src/components/tables/dropdown/DropdownTableSentral.vue +0 -33
  197. package/template/src/components/tables/dropdown/DropdownTableWarehouse.vue +0 -30
  198. package/template/src/components/tables/dropdown/TableDropdown.vue +0 -52
  199. package/template/src/components/ui/accordion/Accordion.vue +0 -19
  200. package/template/src/components/ui/accordion/AccordionContent.vue +0 -24
  201. package/template/src/components/ui/accordion/AccordionItem.vue +0 -24
  202. package/template/src/components/ui/accordion/AccordionTrigger.vue +0 -41
  203. package/template/src/components/ui/accordion/index.ts +0 -4
  204. package/template/src/components/ui/alert-dialog/AlertDialog.vue +0 -14
  205. package/template/src/components/ui/alert-dialog/AlertDialogAction.vue +0 -20
  206. package/template/src/components/ui/alert-dialog/AlertDialogCancel.vue +0 -20
  207. package/template/src/components/ui/alert-dialog/AlertDialogContent.vue +0 -42
  208. package/template/src/components/ui/alert-dialog/AlertDialogDescription.vue +0 -25
  209. package/template/src/components/ui/alert-dialog/AlertDialogFooter.vue +0 -21
  210. package/template/src/components/ui/alert-dialog/AlertDialogHeader.vue +0 -16
  211. package/template/src/components/ui/alert-dialog/AlertDialogTitle.vue +0 -22
  212. package/template/src/components/ui/alert-dialog/AlertDialogTrigger.vue +0 -11
  213. package/template/src/components/ui/alert-dialog/index.ts +0 -9
  214. package/template/src/components/ui/avatar/Avatar.vue +0 -24
  215. package/template/src/components/ui/avatar/AvatarFallback.vue +0 -11
  216. package/template/src/components/ui/avatar/AvatarImage.vue +0 -9
  217. package/template/src/components/ui/avatar/UsersAvatar.vue +0 -27
  218. package/template/src/components/ui/avatar/index.ts +0 -24
  219. package/template/src/components/ui/button/Button.vue +0 -27
  220. package/template/src/components/ui/button/index.ts +0 -34
  221. package/template/src/components/ui/calendar/Calendar.vue +0 -325
  222. package/template/src/components/ui/calendar/index.ts +0 -22
  223. package/template/src/components/ui/checkbox/Checkbox.vue +0 -33
  224. package/template/src/components/ui/checkbox/index.ts +0 -1
  225. package/template/src/components/ui/command/Command.vue +0 -30
  226. package/template/src/components/ui/command/CommandDialog.vue +0 -21
  227. package/template/src/components/ui/command/CommandEmpty.vue +0 -20
  228. package/template/src/components/ui/command/CommandGroup.vue +0 -29
  229. package/template/src/components/ui/command/CommandInput.vue +0 -33
  230. package/template/src/components/ui/command/CommandItem.vue +0 -26
  231. package/template/src/components/ui/command/CommandList.vue +0 -27
  232. package/template/src/components/ui/command/CommandSeparator.vue +0 -23
  233. package/template/src/components/ui/command/CommandShortcut.vue +0 -14
  234. package/template/src/components/ui/command/index.ts +0 -9
  235. package/template/src/components/ui/context-menu/ContextMenu.vue +0 -15
  236. package/template/src/components/ui/context-menu/ContextMenuCheckboxItem.vue +0 -40
  237. package/template/src/components/ui/context-menu/ContextMenuContent.vue +0 -36
  238. package/template/src/components/ui/context-menu/ContextMenuGroup.vue +0 -11
  239. package/template/src/components/ui/context-menu/ContextMenuItem.vue +0 -34
  240. package/template/src/components/ui/context-menu/ContextMenuLabel.vue +0 -25
  241. package/template/src/components/ui/context-menu/ContextMenuPortal.vue +0 -11
  242. package/template/src/components/ui/context-menu/ContextMenuRadioGroup.vue +0 -19
  243. package/template/src/components/ui/context-menu/ContextMenuRadioItem.vue +0 -40
  244. package/template/src/components/ui/context-menu/ContextMenuSeparator.vue +0 -20
  245. package/template/src/components/ui/context-menu/ContextMenuShortcut.vue +0 -14
  246. package/template/src/components/ui/context-menu/ContextMenuSub.vue +0 -19
  247. package/template/src/components/ui/context-menu/ContextMenuSubContent.vue +0 -35
  248. package/template/src/components/ui/context-menu/ContextMenuSubTrigger.vue +0 -34
  249. package/template/src/components/ui/context-menu/ContextMenuTrigger.vue +0 -13
  250. package/template/src/components/ui/context-menu/index.ts +0 -14
  251. package/template/src/components/ui/datetime/DatetimeRangeComponent.vue +0 -52
  252. package/template/src/components/ui/dialog/Dialog.vue +0 -14
  253. package/template/src/components/ui/dialog/DialogClose.vue +0 -11
  254. package/template/src/components/ui/dialog/DialogContent.vue +0 -53
  255. package/template/src/components/ui/dialog/DialogDescription.vue +0 -24
  256. package/template/src/components/ui/dialog/DialogFooter.vue +0 -19
  257. package/template/src/components/ui/dialog/DialogHeader.vue +0 -16
  258. package/template/src/components/ui/dialog/DialogScrollContent.vue +0 -59
  259. package/template/src/components/ui/dialog/DialogTitle.vue +0 -29
  260. package/template/src/components/ui/dialog/DialogTrigger.vue +0 -11
  261. package/template/src/components/ui/dialog/index.ts +0 -9
  262. package/template/src/components/ui/dropdown-menu/DropdownMenu.vue +0 -14
  263. package/template/src/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue +0 -40
  264. package/template/src/components/ui/dropdown-menu/DropdownMenuContent.vue +0 -38
  265. package/template/src/components/ui/dropdown-menu/DropdownMenuGroup.vue +0 -11
  266. package/template/src/components/ui/dropdown-menu/DropdownMenuItem.vue +0 -28
  267. package/template/src/components/ui/dropdown-menu/DropdownMenuLabel.vue +0 -24
  268. package/template/src/components/ui/dropdown-menu/DropdownMenuRadioGroup.vue +0 -19
  269. package/template/src/components/ui/dropdown-menu/DropdownMenuRadioItem.vue +0 -41
  270. package/template/src/components/ui/dropdown-menu/DropdownMenuSeparator.vue +0 -22
  271. package/template/src/components/ui/dropdown-menu/DropdownMenuShortcut.vue +0 -14
  272. package/template/src/components/ui/dropdown-menu/DropdownMenuSub.vue +0 -19
  273. package/template/src/components/ui/dropdown-menu/DropdownMenuSubContent.vue +0 -30
  274. package/template/src/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue +0 -33
  275. package/template/src/components/ui/dropdown-menu/DropdownMenuTrigger.vue +0 -13
  276. package/template/src/components/ui/dropdown-menu/index.ts +0 -16
  277. package/template/src/components/ui/form/FormControl.vue +0 -16
  278. package/template/src/components/ui/form/FormDescription.vue +0 -20
  279. package/template/src/components/ui/form/FormItem.vue +0 -25
  280. package/template/src/components/ui/form/FormLabel.vue +0 -23
  281. package/template/src/components/ui/form/FormMessage.vue +0 -16
  282. package/template/src/components/ui/form/index.ts +0 -6
  283. package/template/src/components/ui/form/useFormField.ts +0 -30
  284. package/template/src/components/ui/hover-card/HoverCard.vue +0 -14
  285. package/template/src/components/ui/hover-card/HoverCardContent.vue +0 -41
  286. package/template/src/components/ui/hover-card/HoverCardTrigger.vue +0 -11
  287. package/template/src/components/ui/hover-card/index.ts +0 -3
  288. package/template/src/components/ui/input/Input.vue +0 -24
  289. package/template/src/components/ui/input/index.ts +0 -1
  290. package/template/src/components/ui/label/Label.vue +0 -27
  291. package/template/src/components/ui/label/index.ts +0 -1
  292. package/template/src/components/ui/pagination/PaginationEllipsis.vue +0 -22
  293. package/template/src/components/ui/pagination/PaginationFirst.vue +0 -29
  294. package/template/src/components/ui/pagination/PaginationLast.vue +0 -29
  295. package/template/src/components/ui/pagination/PaginationNext.vue +0 -29
  296. package/template/src/components/ui/pagination/PaginationPrev.vue +0 -29
  297. package/template/src/components/ui/pagination/index.ts +0 -10
  298. package/template/src/components/ui/pin-input/PinInput.vue +0 -23
  299. package/template/src/components/ui/pin-input/PinInputGroup.vue +0 -18
  300. package/template/src/components/ui/pin-input/PinInputInput.vue +0 -18
  301. package/template/src/components/ui/pin-input/PinInputSeparator.vue +0 -15
  302. package/template/src/components/ui/pin-input/index.ts +0 -4
  303. package/template/src/components/ui/popover/Popover.vue +0 -15
  304. package/template/src/components/ui/popover/PopoverContent.vue +0 -48
  305. package/template/src/components/ui/popover/PopoverTrigger.vue +0 -11
  306. package/template/src/components/ui/popover/index.ts +0 -4
  307. package/template/src/components/ui/preview/PreviewPdf.vue +0 -118
  308. package/template/src/components/ui/progress/ProgressCircle.vue +0 -27
  309. package/template/src/components/ui/progress/SemiCircularProgressBar.vue +0 -83
  310. package/template/src/components/ui/progress/TotalCalories.vue +0 -31
  311. package/template/src/components/ui/radio-group/RadioGroup.vue +0 -25
  312. package/template/src/components/ui/radio-group/RadioGroupItem.vue +0 -37
  313. package/template/src/components/ui/radio-group/index.ts +0 -2
  314. package/template/src/components/ui/scroll-area/ScrollArea.vue +0 -29
  315. package/template/src/components/ui/scroll-area/ScrollBar.vue +0 -30
  316. package/template/src/components/ui/scroll-area/index.ts +0 -2
  317. package/template/src/components/ui/select/Select.vue +0 -15
  318. package/template/src/components/ui/select/SelectContent.vue +0 -52
  319. package/template/src/components/ui/select/SelectGroup.vue +0 -19
  320. package/template/src/components/ui/select/SelectInline.vue +0 -84
  321. package/template/src/components/ui/select/SelectItem.vue +0 -44
  322. package/template/src/components/ui/select/SelectItemText.vue +0 -11
  323. package/template/src/components/ui/select/SelectLabel.vue +0 -13
  324. package/template/src/components/ui/select/SelectScrollDownButton.vue +0 -24
  325. package/template/src/components/ui/select/SelectScrollUpButton.vue +0 -24
  326. package/template/src/components/ui/select/SelectSeparator.vue +0 -17
  327. package/template/src/components/ui/select/SelectTrigger.vue +0 -31
  328. package/template/src/components/ui/select/SelectTriggerCustom.vue +0 -23
  329. package/template/src/components/ui/select/SelectValue.vue +0 -11
  330. package/template/src/components/ui/select/index.ts +0 -12
  331. package/template/src/components/ui/separator/Separator.vue +0 -20
  332. package/template/src/components/ui/separator/index.ts +0 -1
  333. package/template/src/components/ui/sheet/Sheet.vue +0 -14
  334. package/template/src/components/ui/sheet/SheetClose.vue +0 -11
  335. package/template/src/components/ui/sheet/SheetContent.vue +0 -48
  336. package/template/src/components/ui/sheet/SheetDescription.vue +0 -22
  337. package/template/src/components/ui/sheet/SheetFooter.vue +0 -19
  338. package/template/src/components/ui/sheet/SheetHeader.vue +0 -16
  339. package/template/src/components/ui/sheet/SheetTitle.vue +0 -22
  340. package/template/src/components/ui/sheet/SheetTrigger.vue +0 -11
  341. package/template/src/components/ui/sheet/index.ts +0 -31
  342. package/template/src/components/ui/skeleton/Skeleton.vue +0 -28
  343. package/template/src/components/ui/skeleton/index.ts +0 -1
  344. package/template/src/components/ui/sonner/Sonner.vue +0 -22
  345. package/template/src/components/ui/sonner/index.ts +0 -1
  346. package/template/src/components/ui/star/StarRating.vue +0 -19
  347. package/template/src/components/ui/switch/Switch.vue +0 -37
  348. package/template/src/components/ui/switch/index.ts +0 -1
  349. package/template/src/components/ui/table/Table.vue +0 -16
  350. package/template/src/components/ui/table/TableBody.vue +0 -14
  351. package/template/src/components/ui/table/TableCaption.vue +0 -14
  352. package/template/src/components/ui/table/TableCell.vue +0 -21
  353. package/template/src/components/ui/table/TableEmpty.vue +0 -37
  354. package/template/src/components/ui/table/TableFooter.vue +0 -14
  355. package/template/src/components/ui/table/TableHead.vue +0 -14
  356. package/template/src/components/ui/table/TableHeader.vue +0 -14
  357. package/template/src/components/ui/table/TableRow.vue +0 -14
  358. package/template/src/components/ui/table/index.ts +0 -8
  359. package/template/src/components/ui/tabs/Tabs.vue +0 -15
  360. package/template/src/components/ui/tabs/TabsContent.vue +0 -22
  361. package/template/src/components/ui/tabs/TabsList.vue +0 -25
  362. package/template/src/components/ui/tabs/TabsTrigger.vue +0 -27
  363. package/template/src/components/ui/tabs/index.ts +0 -4
  364. package/template/src/components/ui/tags-input/TagsInput.vue +0 -22
  365. package/template/src/components/ui/tags-input/TagsInputInput.vue +0 -19
  366. package/template/src/components/ui/tags-input/TagsInputItem.vue +0 -22
  367. package/template/src/components/ui/tags-input/TagsInputItemDelete.vue +0 -24
  368. package/template/src/components/ui/tags-input/TagsInputItemText.vue +0 -19
  369. package/template/src/components/ui/tags-input/index.ts +0 -5
  370. package/template/src/components/ui/textarea/Textarea.vue +0 -24
  371. package/template/src/components/ui/textarea/index.ts +0 -1
  372. package/template/src/components/ui/tooltip/Tooltip.vue +0 -14
  373. package/template/src/components/ui/tooltip/TooltipContent.vue +0 -31
  374. package/template/src/components/ui/tooltip/TooltipProvider.vue +0 -11
  375. package/template/src/components/ui/tooltip/TooltipTrigger.vue +0 -11
  376. package/template/src/components/ui/tooltip/index.ts +0 -4
  377. package/template/src/composables/useAppConfig.ts +0 -332
  378. package/template/src/composables/useDarkMode.ts +0 -71
  379. package/template/src/config/app.config.ts +0 -318
  380. package/template/src/config/examples/ecommerce.config.ts +0 -132
  381. package/template/src/config/examples/generic.config.ts +0 -132
  382. package/template/src/config/menu.config.ts +0 -149
  383. package/template/src/config/my-app.config.ts +0 -134
  384. package/template/src/config/test-config.ts +0 -31
  385. package/template/src/config/theme.config.ts +0 -250
  386. package/template/src/docs/index.ts +0 -21
  387. package/template/src/docs.scss +0 -403
  388. package/template/src/index.d.ts +0 -5
  389. package/template/src/index.ts +0 -20
  390. package/template/src/layouts/AuthLayout.vue +0 -68
  391. package/template/src/layouts/DefaultLayout.vue +0 -119
  392. package/template/src/layouts/DocsLayout.vue +0 -681
  393. package/template/src/layouts/FormGlobal.vue +0 -50
  394. package/template/src/layouts/GlobalDialog.vue +0 -122
  395. package/template/src/layouts/RakorConfirmDialog.vue +0 -95
  396. package/template/src/layouts/SettingsLayout.vue +0 -115
  397. package/template/src/lib/constants.ts +0 -2
  398. package/template/src/lib/detail.utils.ts +0 -213
  399. package/template/src/lib/form.utils.ts +0 -1009
  400. package/template/src/lib/page.flow.utils.ts +0 -81
  401. package/template/src/lib/page.utils.ts +0 -864
  402. package/template/src/lib/performance.utils.ts +0 -302
  403. package/template/src/lib/tablerow.utils.ts +0 -51
  404. package/template/src/lib/utils.ts +0 -643
  405. package/template/src/main.scss +0 -717
  406. package/template/src/main.ts +0 -74
  407. package/template/src/menu.ts +0 -78
  408. package/template/src/nestedlist_color.scss +0 -161
  409. package/template/src/router/index.ts +0 -91
  410. package/template/src/stores/auth.ts +0 -117
  411. package/template/src/stores/counter.ts +0 -12
  412. package/template/src/stores/dialog.ts +0 -168
  413. package/template/src/stores/form.ts +0 -103
  414. package/template/src/stores/tabs.ts +0 -52
  415. package/template/src/tw.scss +0 -419
  416. package/template/src/types/form.types.ts +0 -348
  417. package/template/src/types/types.ts +0 -7
  418. package/template/src/utils/config.utils.ts +0 -149
  419. package/template/src/views/NotFound.vue +0 -30
  420. package/template/src/views/PageActivity.vue +0 -15
  421. package/template/src/views/auth/LoginView.vue +0 -8
  422. package/template/src/views/auth/OauthCallback.vue +0 -101
  423. package/template/src/views/dashboard/index.vue +0 -16
  424. package/template/src/views/settings/AccountSettingsView.vue +0 -58
  425. package/template/src/views/settings/AuditLogsSettingsView.vue +0 -116
  426. package/template/src/views/settings/DeviceSettingsView.vue +0 -70
  427. package/template/src/views/settings/MainSettingsView.vue +0 -12
  428. package/template/src/views/settings/ProfileSettingsView.vue +0 -104
  429. package/template/src/vueform/config/informasi-gudang.ts +0 -46
  430. package/template/src/vueform/config/test-schema.ts +0 -7
  431. package/template/src/vueform/config/types.ts +0 -768
  432. package/template/src/vueform/customization/classes.js +0 -46
  433. package/template/src/vueform/customization/tailwind.classes.js +0 -2117
  434. package/template/src/vueform/elements/ConfigDataSelectorElement.vue +0 -50
  435. package/template/src/vueform/elements/DateSelectorElement.vue +0 -323
  436. package/template/src/vueform/elements/SelectorElement.vue +0 -153
  437. package/template/src/vueform/schemas/date-selector-test.ts +0 -103
  438. package/template/src/vueform/schemas/informasi-gudang.ts +0 -158
  439. package/template/src/vueform/schemas/test-schema.ts +0 -483
  440. package/template/src/vueform.config.js +0 -77
  441. package/template/src/vueform.validator.ts +0 -77
  442. package/template/tailwind.config.js +0 -137
  443. package/template/tsconfig.app.json +0 -28
  444. package/template/tsconfig.json +0 -14
  445. package/template/tsconfig.node.json +0 -19
  446. package/template/tsconfig.vitest.json +0 -11
  447. package/template/vite.config.ts +0 -33
@@ -1,68 +0,0 @@
1
- <script setup>
2
- import { cn } from '../../../lib/utils';
3
- import { ref } from 'vue';
4
- import { watch } from 'vue';
5
-
6
- const props = defineProps(['class', 'password']);
7
- const pwdStrength = ref('Very Weak');
8
- const model = defineModel({ default: 0 });
9
- const score = ref(0)
10
-
11
- watch(() => props.password, (pwd) => {
12
- score.value = 0;
13
- // Check the length of the password
14
- if (pwd.length >= 8) {
15
- score.value += 1;
16
- if (pwd.length >= 12) score.value += 1;
17
- // Check for lowercase letters
18
- if (/[a-z]/.test(pwd)) score.value += 1;
19
- // Check for uppercase letters
20
- if (/[A-Z]/.test(pwd)) score.value += 1;
21
- // Check for numbers
22
- if (/\d/.test(pwd)) score.value += 1;
23
- // Check for special characters
24
- if (/[\W_]/.test(pwd)) score.value += 1;
25
- }
26
-
27
- // Determine password strength
28
- switch (score.value) {
29
- case 0:
30
- case 1:
31
- pwdStrength.value = 'Very Weak';
32
- break;
33
- case 2:
34
- pwdStrength.value = 'Weak';
35
- break;
36
- case 3:
37
- case 4:
38
- pwdStrength.value = 'Moderate';
39
- break;
40
- case 5:
41
- pwdStrength.value = 'Strong';
42
- break;
43
- default:
44
- pwdStrength.value = 'Very Strong';
45
- break;
46
- }
47
- model.value = score.value;
48
- })
49
- </script>
50
-
51
- <template>
52
- <main :class="cn('bg-gray-300 rounded-full overflow-hidden', props.class)">
53
- <div class="h-1 bg-gray-400 transition-all rounded-full"
54
- :class="{'bg-green-500': score > 4,
55
- 'bg-orange-400': score === 3 || score === 4,
56
- 'bg-red-500': score < 3}"
57
- :style="{width: `${Math.ceil(score / 6 * 100) || 5}%`}"></div>
58
- </main>
59
- <div class="flex text-[12px] mt-1 leading-tight">
60
- <div class="text-gray-500">
61
- Password minimal 8 karakter
62
- </div>
63
- <div class="font-semibold text-gray-500 ml-auto text-[11px]"
64
- :class="{'text-green-500': score > 4,
65
- 'text-orange-400': score === 3 || score === 4,
66
- 'text-red-500': score < 3}">{{ pwdStrength }}</div>
67
- </div>
68
- </template>
@@ -1,153 +0,0 @@
1
- <script setup lang="ts">
2
- import { Dialog, DialogContent } from "../../components/ui/dialog";
3
- import { LucideLoader2, LucideSend } from "lucide-vue-next";
4
- import { cn } from "../../lib/utils";
5
- import { ref } from "vue";
6
- import api from "../../api/api";
7
-
8
- const props = defineProps(["class", "secondaryBtnClass", "primaryBtnClass"]);
9
- const dialogOpen = ref<boolean>(false);
10
- const loading = ref<boolean>(false);
11
- const error = ref<string | null>(null);
12
- const next: any = ref(null);
13
- const item: any = ref(null);
14
- const headerStr = ref("");
15
- const bodyStr = ref("");
16
- const sendBtnEL: any = ref(null);
17
- const response: any = ref(null);
18
- const method = ref("get");
19
- const respStatus = ref(200);
20
-
21
- function open(d: any, n: any) {
22
- dialogOpen.value = true;
23
- next.value = n;
24
- loading.value = false;
25
- response.value = null;
26
- respStatus.value = 200;
27
- error.value = null;
28
- item.value = d;
29
- method.value = d.method;
30
- headerStr.value = d.headers && Object.keys(d.headers).length > 0 ? JSON.stringify(d.headers, null, 2) : "";
31
- bodyStr.value = d.requestBodyExample && Object.keys(d.requestBodyExample).length > 0 ? JSON.stringify(d.requestBodyExample, null, 2) : "";
32
- setTimeout(() => {
33
- if (sendBtnEL.value) sendBtnEL.value.focus();
34
- });
35
- console.log(d);
36
- }
37
-
38
- function sendRequest() {
39
- let apiReq = null;
40
- switch (method.value) {
41
- case "get":
42
- apiReq = api.get(`${import.meta.env.VITE_API_URL}${item.value.endpointExample}`, { headers: headerStr.value ? JSON.parse(headerStr.value) : {} });
43
- break;
44
- case "post":
45
- apiReq = api.post(`${import.meta.env.VITE_API_URL}${item.value.endpointExample}`, bodyStr.value ? JSON.parse(bodyStr.value) : null, {
46
- headers: headerStr.value ? JSON.parse(headerStr.value) : {}
47
- });
48
- break;
49
- case "put":
50
- apiReq = api.put(`${import.meta.env.VITE_API_URL}${item.value.endpointExample}`, bodyStr.value ? JSON.parse(bodyStr.value) : null, {
51
- headers: headerStr.value ? JSON.parse(headerStr.value) : {}
52
- });
53
- break;
54
- case "patch":
55
- apiReq = api.patch(`${import.meta.env.VITE_API_URL}${item.value.endpointExample}`, bodyStr.value ? JSON.parse(bodyStr.value) : null, {
56
- headers: headerStr.value ? JSON.parse(headerStr.value) : {}
57
- });
58
- break;
59
- case "delete":
60
- apiReq = api.delete(`${import.meta.env.VITE_API_URL}${item.value.endpointExample}`, bodyStr.value ? JSON.parse(bodyStr.value) : null);
61
- break;
62
- default:
63
- break;
64
- }
65
- if (!apiReq) return;
66
- loading.value = true;
67
- apiReq
68
- .then(r => {
69
- respStatus.value = 200;
70
- response.value = r.data;
71
- error.value = null;
72
- })
73
- .catch(err => {
74
- respStatus.value = err.response && err.response.status ? err.response.status : 500;
75
- response.value = err.response && err.response.data ? err.response.data : null;
76
- error.value = err.message;
77
- })
78
- .finally(() => {
79
- loading.value = false;
80
- });
81
- }
82
-
83
- function close(b: boolean) {
84
- dialogOpen.value = false;
85
- if (next.value) next.value(b);
86
- }
87
-
88
- defineExpose({ open });
89
- </script>
90
-
91
- <template>
92
- <Dialog v-model:open="dialogOpen">
93
- <DialogContent :class="cn('max-w-[640px]', props.class)">
94
- <div class="-mx-6 px-6 pb-1.5">
95
- <h4 class="m-0 font-semibold">
96
- Try API Endpoint
97
- <span class="mx-1.5">&bull;</span>
98
- {{ item.summary }}
99
- {{ item.endpoint.split("/")[1].replace(/-/g, " ") }}
100
- </h4>
101
- </div>
102
- <div class="-mt-3 flex">
103
- <select class="flex-none rounded-l-sm border-r-0 border-gray-300" v-model="method">
104
- <option value="get">GET</option>
105
- <option value="post">POST</option>
106
- <option value="put">PUT</option>
107
- <option value="patch">PATCH</option>
108
- <option value="delete">DELETE</option>
109
- </select>
110
- <div class="w-full">
111
- <input type="text" class="w-full border-gray-300" placeholder="https://..." v-model="item.endpointExample" />
112
- </div>
113
- <div class="flex-none">
114
- <button
115
- class="flex h-full items-center rounded-r-sm bg-primary_main px-4 font-medium text-white"
116
- :class="{ '!bg-gray-300 !text-gray-400': loading }"
117
- v-on:click="sendRequest"
118
- ref="sendBtnEL">
119
- <LucideLoader2 :size="22" class="-ml-1 mr-2 animate-spin" v-if="loading" />
120
- <LucideSend :size="18" class="mr-2" v-else />
121
- Send
122
- </button>
123
- </div>
124
- </div>
125
- <div class="-mx-6 -mb-4 max-h-[60vh] overflow-auto border-b border-t px-6 pb-5 pt-3">
126
- <div class="mb-3">
127
- <label class="mb-1 block text-sm font-medium text-gray-500">Header</label>
128
- <textarea class="w-full rounded-sm border-slate-600 bg-slate-600 px-2 py-1.5 text-sm text-white" rows="4" placeholder="Header in JSON format..." v-model="headerStr"></textarea>
129
- </div>
130
-
131
- <div class="mb-3" v-if="method !== 'get' && method !== 'delete'">
132
- <label class="mb-1 block text-sm font-medium text-gray-500">Request Body</label>
133
- <textarea class="w-full rounded-sm border-slate-600 bg-slate-600 px-2 py-1.5 text-sm text-white" rows="8" placeholder="Request body in JSON format..." v-model="bodyStr"></textarea>
134
- </div>
135
-
136
- <div class="" v-if="response || error">
137
- <div class="mb-1 flex items-center">
138
- <span class="text-sm font-medium text-gray-500">Response</span>
139
- <div class="ml-auto flex-none text-sm font-medium">
140
- <span class="text-green-500" v-if="respStatus === 200">200 - OK</span>
141
- <span class="text-red-500" v-else>
142
- {{ respStatus }}
143
- -
144
- {{ error?.substring(0, 26) }}{{ String(error).length > 26 ? "..." : "" }}
145
- </span>
146
- </div>
147
- </div>
148
- <pre class="w-full overflow-auto rounded-sm border-slate-600 bg-slate-600 px-2 py-1.5 text-sm text-white" :class="{ '!bg-red-700': error }">{{ response }}</pre>
149
- </div>
150
- </div>
151
- </DialogContent>
152
- </Dialog>
153
- </template>
@@ -1,149 +0,0 @@
1
- <script setup lang="ts">
2
- import FormInputerDialog from "../../components/dialog/FormInputerDialog.vue";
3
- import DialogTrigger from "../../components/ui/dialog/DialogTrigger.vue";
4
- import { Eye, EyeOff } from "lucide-vue-next";
5
- import { cn } from "../../lib/utils";
6
- import { ref, computed } from "vue";
7
- import api from "../../api/api";
8
- import { toast } from "vue-sonner";
9
- import PwdScore from "../../components/forms/auth/PwdScore.vue";
10
-
11
- // Use correct dialog imports (assume alias is ../../components/ui/dialog)
12
- import { DialogTitle, DialogDescription } from "../../components/ui/dialog";
13
-
14
- const props = defineProps<{ class?: string }>();
15
- const emits = defineEmits(["finish"]);
16
-
17
- const formError = ref<null | string>(null);
18
- const formLoading = ref(false);
19
- const dialogOpen = ref(false);
20
-
21
- // State for password visibility toggles
22
- const showPwd = ref(false);
23
- const showPwd1 = ref(false);
24
- const showPwd2 = ref(false);
25
-
26
- // State for password fields and score
27
- const pwdStr = ref("");
28
- const pwd1Str = ref("");
29
- const pwdScore = ref(0);
30
- const changePwdErr = ref<string | null>(null);
31
-
32
- // For loading spinner on submit
33
- const isLoadingChangePwd = computed(() => formLoading.value);
34
-
35
- // Handler for password input
36
- const pwd1Inputed = (e: Event) => {
37
- const target = e.target as HTMLInputElement;
38
- pwd1Str.value = target.value;
39
- changePwdErr.value = null;
40
- };
41
-
42
- const pwdInputed = (e: Event) => {
43
- const target = e.target as HTMLInputElement;
44
- pwdStr.value = target.value;
45
- changePwdErr.value = null;
46
- };
47
-
48
- function changePwd(_: FormData, form$: any) {
49
- console.log(form$.data)
50
- if (form$.data.password !== form$.data.password2) {
51
- formError.value = "Ulangi password tidak sama";
52
- return;
53
- }
54
- if (pwdScore.value < 4) {
55
- formError.value = "Mohon gunakan password yang lebih sulit untuk ditebak";
56
- return;
57
- }
58
- formError.value = null;
59
- formLoading.value = true;
60
- api
61
- .post("/auth/changepassword", {
62
- currentPassword: form$.data.currentPassword,
63
- password: form$.data.password
64
- })
65
- .then(() => {
66
- dialogOpen.value = false;
67
- toast("Password sukses diubah");
68
- emits("finish");
69
- })
70
- .catch((err: { message: string }) => {
71
- formError.value = err.message;
72
- })
73
- .finally(() => {
74
- formLoading.value = false;
75
- });
76
- }
77
- </script>
78
-
79
- <template>
80
- <FormInputerDialog @submit="changePwd" v-model:error="formError" v-model:saving="formLoading" v-model:show="dialogOpen">
81
- <template #trigger>
82
- <DialogTrigger :class="cn('', props.class)">
83
- <slot></slot>
84
- </DialogTrigger>
85
- </template>
86
- <template #body>
87
- <Vueform :endpoint="changePwd">
88
- <TextElement
89
- name="currentPassword"
90
- :input-type="showPwd ? 'text' : 'password'"
91
- label="Kata Sandi saat ini"
92
- placeholder="Masukkan kata sandi..."
93
- :floating="false"
94
- :rules="['required']"
95
- @input="pwdInputed"
96
- onpaste="return false;">
97
- <template #addon-after>
98
- <EyeOff :size="22" v-if="showPwd" class="cursor-pointer text-slate-400" @click="showPwd = false" />
99
- <Eye :size="22" v-else class="cursor-pointer text-slate-400" @click="showPwd = true" />
100
- </template>
101
- </TextElement>
102
- <TextElement
103
- name="password"
104
- :input-type="showPwd1 ? 'text' : 'password'"
105
- label="Kata Sandi Baru"
106
- placeholder="Masukkan kata sandi..."
107
- :floating="false"
108
- :rules="['required']"
109
- @input="pwd1Inputed"
110
- onpaste="return false;">
111
- <template #addon-after>
112
- <EyeOff :size="22" v-if="showPwd1" class="cursor-pointer text-slate-400" @click="showPwd1 = false" />
113
- <Eye :size="22" v-else class="cursor-pointer text-slate-400" @click="showPwd1 = true" />
114
- </template>
115
- </TextElement>
116
- <div class="col-span-12 -mt-2.5 mb-4 px-1">
117
- <PwdScore v-model="pwdScore" :password="pwd1Str" />
118
- </div>
119
- <TextElement
120
- name="password2"
121
- :input-type="showPwd2 ? 'text' : 'password'"
122
- label="Ulangi Kata Sandi"
123
- placeholder="Masukkan kata sandi..."
124
- :floating="false"
125
- :rules="['required']"
126
- @input="changePwdErr = null"
127
- onpaste="return false;">
128
- <template #addon-after>
129
- <EyeOff :size="22" v-if="showPwd2" class="cursor-pointer text-slate-400" @click="showPwd2 = false" />
130
- <Eye :size="22" v-else class="cursor-pointer text-slate-400" @click="showPwd2 = true" />
131
- </template>
132
- </TextElement>
133
- <div class="relative col-span-12 mt-1 h-12 cursor-default overflow-hidden rounded-md !border-gray-300 !bg-gray-300 px-6 !text-gray-300 transition" v-if="isLoadingChangePwd">
134
- <div class="bottom-0 left-0 right-0 top-0 bg-gray-300">
135
- <svg class="absolute bottom-0 left-0 right-0 top-0 m-auto h-7 w-7 animate-spin text-black" fill="none" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
136
- <circle class="opacity-15" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="2" />
137
- <path class="opacity-15" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z" />
138
- </svg>
139
- </div>
140
- </div>
141
- <ButtonElement size="lg" name="submit" button-class="mt-1 font-medium h-12 text-md" button-label="Tetapkan Kata Sandi" :submits="true" :full="true" v-else />
142
- </Vueform>
143
- </template>
144
- <template #header>
145
- <DialogTitle>Ganti Password</DialogTitle>
146
- <DialogDescription class="text-sm">Masukkan password lama dan password baru Anda di bawah ini</DialogDescription>
147
- </template>
148
- </FormInputerDialog>
149
- </template>
@@ -1,43 +0,0 @@
1
- <script setup lang="ts">
2
- import { cn } from '../../lib/utils';
3
- import { LucideCheck, LucideMinus } from 'lucide-vue-next';
4
- import { onMounted, watch } from 'vue';
5
-
6
- const model = defineModel();
7
- const emits = defineEmits(['change']);
8
- const props = defineProps(['checked', 'disabled', 'class', 'ignoreModel', 'indeterminate']);
9
-
10
- function toggleCheckbox() {
11
- if (props.disabled) return;
12
- if (!props.ignoreModel) model.value = !model.value;
13
- emits('change', model.value);
14
- }
15
-
16
- watch(() => props.checked, (checked) => {
17
- if (props.ignoreModel) return;
18
- model.value = checked;
19
- })
20
-
21
- onMounted(() => {
22
- if (props.checked && !props.ignoreModel) model.value = props.checked;
23
- })
24
- </script>
25
-
26
- <template>
27
- <div class="size-8 hover:bg-blue-100 rounded-full flex items-center justify-center cursor-pointer -my-[5px] -mx-1.5 group"
28
- :class="{'!cursor-default hover:bg-transparent': props.disabled}"
29
- v-on:click="toggleCheckbox">
30
- <div :class="[
31
- cn('size-[18px] border-2 border-gray-400 rounded-sm flex items-center justify-center text-transparent group-hover:border-blue-500 transition', props.class),
32
- {
33
- '!border-blue-500 bg-blue-500 !text-white': (model || props.checked || props.indeterminate) && !props.disabled,
34
- 'bg-gray-100 !border-gray-100': props.disabled,
35
- '!text-gray-300': (model || props.checked) && props.disabled,
36
- '!text-transparent': !model && !props.checked && props.disabled,
37
- },
38
- ]">
39
- <LucideCheck :stroke-width="3" v-if="model || props.checked"/>
40
- <LucideMinus :stroke-width="3" v-else-if="props.indeterminate"/>
41
- </div>
42
- </div>
43
- </template>
@@ -1,54 +0,0 @@
1
- <template>
2
- <div v-if="isConfigLoaded" class="fixed bottom-4 right-4 z-50">
3
- <div class="rounded-lg border bg-white p-4 shadow-lg dark:bg-gray-800">
4
- <h3 class="mb-2 text-sm font-semibold">Configuration Test</h3>
5
- <div class="space-y-2 text-xs">
6
- <div><strong>App:</strong> {{ appName }}</div>
7
- <div><strong>Company:</strong> {{ companyName }}</div>
8
- <div>
9
- <strong>Color:</strong>
10
- <span class="inline-block h-4 w-4 rounded" :style="{ backgroundColor: primaryColor }"></span>
11
- {{ primaryColor }}
12
- </div>
13
- <div><strong>API:</strong> {{ apiBaseUrl }}</div>
14
- <div><strong>Token Key:</strong> {{ tokenKey }}</div>
15
- <div><strong>Org Levels:</strong> {{ organizationLevels.join(", ") }}</div>
16
- </div>
17
- <div class="mt-3 space-x-2">
18
- <button @click="switchToConfig('myApp')" class="rounded bg-blue-500 px-2 py-1 text-xs text-white hover:bg-blue-600">My App</button>
19
- <button @click="switchToConfig('generic')" class="rounded bg-purple-500 px-2 py-1 text-xs text-white hover:bg-purple-600">Generic</button>
20
- </div>
21
- </div>
22
- </div>
23
- </template>
24
-
25
- <script setup lang="ts">
26
- import { useAppConfig } from "@/composables/useAppConfig";
27
- import { myAppConfig } from "@/config/my-app.config";
28
- import { genericConfig } from "@/config/examples/generic.config";
29
-
30
- const { appName, companyName, primaryColor, apiBaseUrl, tokenKey, organizationLevels, isConfigLoaded, initializeConfig } = useAppConfig();
31
-
32
- const switchToConfig = async (configName: string) => {
33
- console.log(`🔄 Switching to ${configName} configuration...`);
34
-
35
- let config;
36
- switch (configName) {
37
- case "myApp":
38
- config = myAppConfig;
39
- break;
40
- case "generic":
41
- config = genericConfig;
42
- break;
43
- default:
44
- return;
45
- }
46
-
47
- try {
48
- await initializeConfig(config);
49
- console.log(`✅ Switched to ${configName} configuration`);
50
- } catch (error) {
51
- console.error(`❌ Failed to switch to ${configName} configuration:`, error);
52
- }
53
- };
54
- </script>
@@ -1,10 +0,0 @@
1
- <script setup lang="ts">
2
- import { useAppConfig } from '../../composables/useAppConfig'
3
-
4
- const { companyName, appVersion } = useAppConfig()
5
- </script>
6
-
7
- <template>
8
- &copy; Copyright {{ new Date().getFullYear() }} {{ companyName }}
9
- &bull; Version {{ appVersion }}
10
- </template>
@@ -1,40 +0,0 @@
1
- <script setup lang="ts">
2
- interface Props {
3
- errorMessage: string;
4
- }
5
-
6
- defineProps<Props>();
7
-
8
- const emit = defineEmits<{
9
- retry: [];
10
- }>();
11
-
12
- function handleRetry() {
13
- emit('retry');
14
- }
15
- </script>
16
-
17
- <template>
18
- <div class="fixed inset-0 z-50 bg-white dark:bg-dark_bg flex items-center justify-center">
19
- <div class="text-center max-w-md mx-auto px-6">
20
- <div class="mb-8">
21
- <div class="w-16 h-16 mx-auto mb-4 bg-red-100 dark:bg-red-900/20 rounded-full flex items-center justify-center">
22
- <svg class="w-8 h-8 text-red-600 dark:text-red-400" fill="none" stroke="currentColor" viewBox="0 0 24 24">
23
- <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.964-.833-2.732 0L4.082 16.5c-.77.833.192 2.5 1.732 2.5z" />
24
- </svg>
25
- </div>
26
- <h2 class="text-2xl font-semibold text-gray-800 dark:text-white mb-2">Koneksi Gagal</h2>
27
- <p class="text-gray-600 dark:text-gray-300 mb-6">{{ errorMessage }}</p>
28
- <button
29
- @click="handleRetry"
30
- class="inline-flex items-center px-6 py-3 border border-transparent text-base font-medium rounded-md text-white bg-blue-600 hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 dark:focus:ring-offset-gray-900 transition-colors duration-200"
31
- >
32
- <svg class="w-5 h-5 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
33
- <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15" />
34
- </svg>
35
- Muat Ulang
36
- </button>
37
- </div>
38
- </div>
39
- </div>
40
- </template>
@@ -1,27 +0,0 @@
1
- <script setup>
2
- import { computed } from 'vue';
3
- import * as icons from "lucide-vue-next";
4
-
5
- const props = defineProps({
6
- name: {
7
- type: String,
8
- required: true
9
- },
10
- size: Number,
11
- color: String,
12
- strokeWidth: Number,
13
- defaultClass: String,
14
- })
15
-
16
- const icon = computed(() => icons[props.name]);
17
- </script>
18
-
19
- <template>
20
- <component
21
- :is="icon"
22
- :size="size"
23
- :color="color"
24
- :stroke-width="strokeWidth"
25
- :default-class="defaultClass"
26
- />
27
- </template>
@@ -1,103 +0,0 @@
1
- <script setup lang="ts">
2
- import { onMounted, ref, watch } from 'vue';
3
- import * as pdfjsLib from 'pdfjs-dist';
4
- import { nanoid } from 'nanoid';
5
-
6
- const props = defineProps(['url', 'index', 'scale', 'zoomType']);
7
- const pages = ref<any[]>([]);
8
- let pdfDoc: any;
9
- let canvas: any;
10
-
11
- async function renderPages() {
12
- if (!pdfDoc) return;
13
- console.log('render page with zoom', props.zoomType);
14
- for (let i = 1; i <= pdfDoc.numPages; i++) {
15
- pdfDoc.getPage(i).then(function(page: any) {
16
- let scale = 1;
17
- switch (props.zoomType) {
18
- case 'page-width':
19
- scale = getPageWidthScale();
20
- break;
21
- case 'page-fit':
22
- scale = getPageFitScale();
23
- break;
24
- default:
25
- scale = props.scale ? Number(props.scale) : 1;
26
- break;
27
- }
28
-
29
- const viewport = page.getViewport({ scale });
30
- const canvasElement = document.getElementById(`page-${props.index}-${i}`) as HTMLCanvasElement;
31
- const context = canvasElement.getContext('2d');
32
-
33
- // Set canvas dimensions based on the viewport and device pixel ratio
34
- const devicePixelRatio = window.devicePixelRatio || 1;
35
- canvasElement.width = viewport.width * devicePixelRatio;
36
- canvasElement.height = viewport.height * devicePixelRatio;
37
- canvasElement.style.width = `${viewport.width}px`;
38
- canvasElement.style.height = `${viewport.height}px`;
39
-
40
- // Scale the context to ensure correct drawing
41
- context?.scale(devicePixelRatio, devicePixelRatio);
42
-
43
- // Render PDF page into canvas context
44
- var renderContext = {
45
- canvasContext: context,
46
- viewport: viewport
47
- };
48
- var renderTask = page.render(renderContext);
49
- renderTask.promise.then(function () {
50
- console.log('Page rendered');
51
- });
52
- });
53
- }
54
- }
55
-
56
- // Function to calculate scale for page width
57
- function getPageWidthScale() {
58
- let containerWidth = document.getElementById('pdf-viewer-container')?.clientWidth;
59
- return containerWidth || 0 / canvas?.width || 0;
60
- }
61
-
62
- // Function to calculate scale for page fit
63
- function getPageFitScale() {
64
- let containerWidth = document.getElementById('pdf-viewer-container')?.clientWidth;
65
- let containerHeight = document.getElementById('pdf-viewer-container')?.clientHeight;
66
- return Math.min(containerWidth || 0 / canvas.width, containerHeight || 0 / canvas.height);
67
- }
68
-
69
- watch(() => props.scale, () => {
70
- renderPages();
71
- })
72
-
73
- watch(() => props.zoomType, () => {
74
- renderPages();
75
- })
76
-
77
-
78
- onMounted(async () => {
79
- // Set the worker path
80
- pdfjsLib.GlobalWorkerOptions.workerSrc = '/scripts/pdf.worker.min.js';
81
-
82
- // Load the PDF document
83
- pdfjsLib.getDocument({
84
- // url: `${props.url}?v=${nanoid()}`,
85
- url: props.url,
86
- withCredentials: true,
87
- }).promise.then((pdf) => {
88
- for (let i = 1; i <= pdf.numPages; i++) {
89
- pages.value.push(i);
90
- }
91
- pdfDoc = pdf;
92
- renderPages();
93
- });
94
- })
95
- </script>
96
-
97
- <template>
98
- <div class="space-y-4" :id="`pdf-${index}-container`">
99
- <div class="rounded-md shadow-sm overflow-hidden" v-for="page in pages">
100
- <canvas :key="page" :id="`page-${index}-${page}`"></canvas>
101
- </div>
102
- </div>
103
- </template>