@dasidev/dasi-ui 1.0.13 → 1.0.15

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 (228) hide show
  1. package/bin/dasi-cli.cjs +30 -38
  2. package/dist/index.js +11 -0
  3. package/package.json +9 -1
  4. package/template/src/App.vue +0 -1
  5. package/template/src/api/api.ts +2 -2
  6. package/template/src/components/button/BtnAddOutline.vue +2 -2
  7. package/template/src/components/button/BtnCircle.vue +1 -1
  8. package/template/src/components/button/BtnOutline.vue +1 -1
  9. package/template/src/components/button/BtnPrimary.vue +2 -2
  10. package/template/src/components/button/BtnSecondary.vue +2 -2
  11. package/template/src/components/detail/ApprovalInfo.vue +1 -1
  12. package/template/src/components/detail/DCI2.vue +4 -4
  13. package/template/src/components/detail/DetailContentHeader.vue +1 -1
  14. package/template/src/components/detail/DetailContentItem.vue +1 -1
  15. package/template/src/components/detail/DetailContentItems.vue +3 -4
  16. package/template/src/components/detail/DetailContentLoading.vue +1 -1
  17. package/template/src/components/detail/DetailContentTablet.vue +1 -1
  18. package/template/src/components/detail/DetailSheet.vue +9 -9
  19. package/template/src/components/detail/DetailTimeline.vue +3 -3
  20. package/template/src/components/detail/DocViewerContent.vue +21 -21
  21. package/template/src/components/dialog/ConfirmDialog.vue +4 -4
  22. package/template/src/components/dialog/DialogBase.vue +2 -2
  23. package/template/src/components/dialog/DialogSelect.vue +7 -7
  24. package/template/src/components/dialog/ErrorDialog.vue +1 -1
  25. package/template/src/components/dialog/FormDialog.vue +7 -7
  26. package/template/src/components/dialog/FormInputerDialog.vue +5 -5
  27. package/template/src/components/dialog/InfoDialog.vue +2 -2
  28. package/template/src/components/dialog/SuccessDialog.vue +3 -4
  29. package/template/src/components/forms/auth/LoginForm.vue +12 -12
  30. package/template/src/components/forms/auth/PwdScore.vue +1 -1
  31. package/template/src/components/helper/ApiTester.vue +3 -3
  32. package/template/src/components/helper/ChangePwd.vue +7 -8
  33. package/template/src/components/helper/CheckboxElement.vue +1 -1
  34. package/template/src/components/helper/Copyright.vue +1 -1
  35. package/template/src/components/helper/PinInputer.vue +5 -5
  36. package/template/src/components/layout/PageActivityHeader.vue +2 -2
  37. package/template/src/components/layout/PageHeader.vue +2 -3
  38. package/template/src/components/loadings/LoadingDialog.vue +2 -2
  39. package/template/src/components/loadings/LoadingDialogSpin.vue +2 -2
  40. package/template/src/components/loadings/LoadingIndicator.vue +1 -1
  41. package/template/src/components/loadings/LoadingScreen.vue +1 -1
  42. package/template/src/components/notif/Notif.vue +4 -5
  43. package/template/src/components/notif/NotifItem.vue +0 -1
  44. package/template/src/components/pages/Header.vue +25 -25
  45. package/template/src/components/pages/Leftbar.vue +7 -7
  46. package/template/src/components/pages/PageActivity.vue +4 -4
  47. package/template/src/components/pages/PageActivityContent.vue +18 -18
  48. package/template/src/components/pages/PageContentTable.vue +15 -15
  49. package/template/src/components/pages/PageTab.vue +4 -4
  50. package/template/src/components/selector/BaseSelector.vue +9 -9
  51. package/template/src/components/selector/ConfigDataSelector.vue +3 -3
  52. package/template/src/components/tab/TabView.vue +1 -1
  53. package/template/src/components/tab/TabViewItemBar.vue +1 -1
  54. package/template/src/components/tables/CellHover.vue +1 -1
  55. package/template/src/components/tables/DashboardDataTable.vue +6 -6
  56. package/template/src/components/tables/DataStatusTag.vue +1 -1
  57. package/template/src/components/tables/DataTable.vue +5 -5
  58. package/template/src/components/tables/DataTableAccordion.vue +11 -11
  59. package/template/src/components/tables/DataTableActionRow.vue +3 -3
  60. package/template/src/components/tables/DataTableCell.vue +2 -3
  61. package/template/src/components/tables/DataTableHeader.vue +4 -4
  62. package/template/src/components/tables/DataTableRow.vue +5 -5
  63. package/template/src/components/tables/ExpandedTable.vue +13 -13
  64. package/template/src/components/tables/PageTable.vue +3 -3
  65. package/template/src/components/tables/Pagination.vue +3 -3
  66. package/template/src/components/tables/dropdown/BaseDropdownTable.vue +5 -5
  67. package/template/src/components/tables/dropdown/DropdownTableActivity.vue +2 -2
  68. package/template/src/components/tables/dropdown/DropdownTableAsset.vue +2 -2
  69. package/template/src/components/tables/dropdown/DropdownTableConfig.vue +2 -2
  70. package/template/src/components/tables/dropdown/DropdownTableDataKonektor.vue +2 -2
  71. package/template/src/components/tables/dropdown/DropdownTableDataLabel.vue +2 -2
  72. package/template/src/components/tables/dropdown/DropdownTableDataSchema.vue +2 -2
  73. package/template/src/components/tables/dropdown/DropdownTableFabaPemanfaat.vue +2 -2
  74. package/template/src/components/tables/dropdown/DropdownTableGroup.vue +2 -2
  75. package/template/src/components/tables/dropdown/DropdownTableHalaman.vue +2 -2
  76. package/template/src/components/tables/dropdown/DropdownTableLevel.vue +1 -1
  77. package/template/src/components/tables/dropdown/DropdownTableOrganization.vue +3 -3
  78. package/template/src/components/tables/dropdown/DropdownTablePengelola.vue +2 -2
  79. package/template/src/components/tables/dropdown/DropdownTableQueryLayer.vue +2 -2
  80. package/template/src/components/tables/dropdown/DropdownTableSentral.vue +2 -2
  81. package/template/src/components/tables/dropdown/DropdownTableWarehouse.vue +2 -2
  82. package/template/src/components/tables/dropdown/TableDropdown.vue +2 -2
  83. package/template/src/components/ui/accordion/AccordionContent.vue +1 -1
  84. package/template/src/components/ui/accordion/AccordionItem.vue +1 -1
  85. package/template/src/components/ui/accordion/AccordionTrigger.vue +1 -2
  86. package/template/src/components/ui/alert-dialog/AlertDialogAction.vue +2 -2
  87. package/template/src/components/ui/alert-dialog/AlertDialogCancel.vue +2 -2
  88. package/template/src/components/ui/alert-dialog/AlertDialogContent.vue +1 -1
  89. package/template/src/components/ui/alert-dialog/AlertDialogDescription.vue +1 -1
  90. package/template/src/components/ui/alert-dialog/AlertDialogFooter.vue +1 -1
  91. package/template/src/components/ui/alert-dialog/AlertDialogHeader.vue +1 -1
  92. package/template/src/components/ui/alert-dialog/AlertDialogTitle.vue +1 -1
  93. package/template/src/components/ui/avatar/Avatar.vue +1 -1
  94. package/template/src/components/ui/avatar/UsersAvatar.vue +1 -2
  95. package/template/src/components/ui/button/Button.vue +1 -1
  96. package/template/src/components/ui/calendar/Calendar.vue +3 -3
  97. package/template/src/components/ui/checkbox/Checkbox.vue +1 -1
  98. package/template/src/components/ui/command/Command.vue +1 -1
  99. package/template/src/components/ui/command/CommandDialog.vue +1 -1
  100. package/template/src/components/ui/command/CommandEmpty.vue +1 -1
  101. package/template/src/components/ui/command/CommandGroup.vue +1 -1
  102. package/template/src/components/ui/command/CommandInput.vue +1 -1
  103. package/template/src/components/ui/command/CommandItem.vue +1 -1
  104. package/template/src/components/ui/command/CommandList.vue +1 -1
  105. package/template/src/components/ui/command/CommandSeparator.vue +1 -1
  106. package/template/src/components/ui/command/CommandShortcut.vue +1 -1
  107. package/template/src/components/ui/context-menu/ContextMenuCheckboxItem.vue +1 -1
  108. package/template/src/components/ui/context-menu/ContextMenuContent.vue +1 -1
  109. package/template/src/components/ui/context-menu/ContextMenuItem.vue +1 -1
  110. package/template/src/components/ui/context-menu/ContextMenuLabel.vue +1 -1
  111. package/template/src/components/ui/context-menu/ContextMenuRadioItem.vue +1 -1
  112. package/template/src/components/ui/context-menu/ContextMenuSeparator.vue +1 -1
  113. package/template/src/components/ui/context-menu/ContextMenuShortcut.vue +1 -1
  114. package/template/src/components/ui/context-menu/ContextMenuSubContent.vue +1 -1
  115. package/template/src/components/ui/context-menu/ContextMenuSubTrigger.vue +1 -1
  116. package/template/src/components/ui/dialog/DialogContent.vue +1 -1
  117. package/template/src/components/ui/dialog/DialogDescription.vue +1 -1
  118. package/template/src/components/ui/dialog/DialogFooter.vue +1 -1
  119. package/template/src/components/ui/dialog/DialogHeader.vue +1 -1
  120. package/template/src/components/ui/dialog/DialogScrollContent.vue +3 -3
  121. package/template/src/components/ui/dialog/DialogTitle.vue +1 -1
  122. package/template/src/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue +1 -1
  123. package/template/src/components/ui/dropdown-menu/DropdownMenuContent.vue +1 -1
  124. package/template/src/components/ui/dropdown-menu/DropdownMenuItem.vue +1 -1
  125. package/template/src/components/ui/dropdown-menu/DropdownMenuLabel.vue +1 -1
  126. package/template/src/components/ui/dropdown-menu/DropdownMenuRadioItem.vue +1 -1
  127. package/template/src/components/ui/dropdown-menu/DropdownMenuSeparator.vue +1 -1
  128. package/template/src/components/ui/dropdown-menu/DropdownMenuShortcut.vue +1 -1
  129. package/template/src/components/ui/dropdown-menu/DropdownMenuSubContent.vue +1 -1
  130. package/template/src/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue +1 -1
  131. package/template/src/components/ui/form/FormDescription.vue +1 -1
  132. package/template/src/components/ui/form/FormItem.vue +1 -1
  133. package/template/src/components/ui/form/FormLabel.vue +2 -2
  134. package/template/src/components/ui/hover-card/HoverCardContent.vue +1 -1
  135. package/template/src/components/ui/input/Input.vue +1 -1
  136. package/template/src/components/ui/label/Label.vue +1 -1
  137. package/template/src/components/ui/pagination/PaginationEllipsis.vue +1 -1
  138. package/template/src/components/ui/pagination/PaginationFirst.vue +2 -2
  139. package/template/src/components/ui/pagination/PaginationLast.vue +2 -2
  140. package/template/src/components/ui/pagination/PaginationNext.vue +2 -2
  141. package/template/src/components/ui/pagination/PaginationPrev.vue +2 -2
  142. package/template/src/components/ui/pin-input/PinInput.vue +1 -1
  143. package/template/src/components/ui/pin-input/PinInputGroup.vue +1 -1
  144. package/template/src/components/ui/pin-input/PinInputInput.vue +1 -1
  145. package/template/src/components/ui/popover/PopoverContent.vue +1 -1
  146. package/template/src/components/ui/progress/TotalCalories.vue +1 -1
  147. package/template/src/components/ui/radio-group/RadioGroup.vue +1 -1
  148. package/template/src/components/ui/radio-group/RadioGroupItem.vue +1 -1
  149. package/template/src/components/ui/scroll-area/ScrollArea.vue +1 -1
  150. package/template/src/components/ui/scroll-area/ScrollBar.vue +1 -1
  151. package/template/src/components/ui/select/SelectContent.vue +1 -1
  152. package/template/src/components/ui/select/SelectGroup.vue +1 -1
  153. package/template/src/components/ui/select/SelectInline.vue +1 -1
  154. package/template/src/components/ui/select/SelectItem.vue +1 -1
  155. package/template/src/components/ui/select/SelectLabel.vue +1 -1
  156. package/template/src/components/ui/select/SelectScrollDownButton.vue +1 -1
  157. package/template/src/components/ui/select/SelectScrollUpButton.vue +1 -1
  158. package/template/src/components/ui/select/SelectSeparator.vue +1 -1
  159. package/template/src/components/ui/select/SelectTrigger.vue +1 -1
  160. package/template/src/components/ui/select/SelectTriggerCustom.vue +1 -1
  161. package/template/src/components/ui/separator/Separator.vue +1 -1
  162. package/template/src/components/ui/sheet/SheetContent.vue +1 -1
  163. package/template/src/components/ui/sheet/SheetDescription.vue +1 -1
  164. package/template/src/components/ui/sheet/SheetFooter.vue +1 -1
  165. package/template/src/components/ui/sheet/SheetHeader.vue +1 -1
  166. package/template/src/components/ui/sheet/SheetTitle.vue +1 -1
  167. package/template/src/components/ui/skeleton/Skeleton.vue +1 -1
  168. package/template/src/components/ui/switch/Switch.vue +1 -1
  169. package/template/src/components/ui/table/Table.vue +1 -1
  170. package/template/src/components/ui/table/TableBody.vue +1 -1
  171. package/template/src/components/ui/table/TableCaption.vue +1 -1
  172. package/template/src/components/ui/table/TableCell.vue +1 -1
  173. package/template/src/components/ui/table/TableEmpty.vue +1 -1
  174. package/template/src/components/ui/table/TableFooter.vue +1 -1
  175. package/template/src/components/ui/table/TableHead.vue +1 -1
  176. package/template/src/components/ui/table/TableHeader.vue +1 -1
  177. package/template/src/components/ui/table/TableRow.vue +1 -1
  178. package/template/src/components/ui/tabs/TabsContent.vue +1 -1
  179. package/template/src/components/ui/tabs/TabsList.vue +1 -1
  180. package/template/src/components/ui/tabs/TabsTrigger.vue +1 -1
  181. package/template/src/components/ui/tags-input/TagsInput.vue +1 -1
  182. package/template/src/components/ui/tags-input/TagsInputInput.vue +1 -1
  183. package/template/src/components/ui/tags-input/TagsInputItem.vue +1 -1
  184. package/template/src/components/ui/tags-input/TagsInputItemDelete.vue +1 -1
  185. package/template/src/components/ui/tags-input/TagsInputItemText.vue +1 -1
  186. package/template/src/components/ui/textarea/Textarea.vue +1 -1
  187. package/template/src/components/ui/tooltip/TooltipContent.vue +1 -1
  188. package/template/src/composables/useAppConfig.ts +4 -4
  189. package/template/src/config/test-config.ts +1 -2
  190. package/template/src/layouts/AuthLayout.vue +3 -3
  191. package/template/src/layouts/DefaultLayout.vue +7 -7
  192. package/template/src/layouts/DocsLayout.vue +5 -5
  193. package/template/src/layouts/FormGlobal.vue +2 -2
  194. package/template/src/layouts/GlobalDialog.vue +12 -12
  195. package/template/src/layouts/RakorConfirmDialog.vue +2 -2
  196. package/template/src/layouts/SettingsLayout.vue +3 -3
  197. package/template/src/lib/detail.utils.ts +1 -1
  198. package/template/src/lib/form.utils.ts +4 -4
  199. package/template/src/lib/page.flow.utils.ts +1 -1
  200. package/template/src/lib/page.utils.ts +8 -9
  201. package/template/src/lib/utils.ts +1 -1
  202. package/template/src/main.scss +1 -1
  203. package/template/src/router/index.ts +3 -4
  204. package/template/src/stores/auth.ts +1 -1
  205. package/template/src/stores/dialog.ts +3 -3
  206. package/template/src/stores/form.ts +1 -1
  207. package/template/src/stores/tabs.ts +1 -1
  208. package/template/src/utils/config.utils.ts +1 -1
  209. package/template/src/views/NotFound.vue +1 -1
  210. package/template/src/views/PageActivity.vue +1 -1
  211. package/template/src/views/auth/LoginView.vue +2 -1
  212. package/template/src/views/auth/OauthCallback.vue +3 -3
  213. package/template/src/views/settings/AccountSettingsView.vue +6 -18
  214. package/template/src/views/settings/AuditLogsSettingsView.vue +4 -4
  215. package/template/src/views/settings/DeviceSettingsView.vue +1 -1
  216. package/template/src/views/settings/ProfileSettingsView.vue +5 -5
  217. package/template/src/vueform/config/informasi-gudang.ts +0 -1
  218. package/template/src/vueform/config/test-schema.ts +0 -1
  219. package/template/src/vueform/config/types.ts +1 -1
  220. package/template/src/vueform/elements/ConfigDataSelectorElement.vue +1 -1
  221. package/template/src/vueform/elements/DateSelectorElement.vue +2 -2
  222. package/template/src/vueform/elements/SelectorElement.vue +1 -1
  223. package/template/src/vueform/schemas/date-selector-test.ts +1 -1
  224. package/template/src/vueform/schemas/informasi-gudang.ts +3 -5
  225. package/template/src/vueform/schemas/test-schema.ts +1 -1
  226. package/template/tsconfig.app.json +28 -0
  227. package/template/tsconfig.node.json +19 -0
  228. package/template/tsconfig.vitest.json +11 -0
package/bin/dasi-cli.cjs CHANGED
@@ -10,7 +10,7 @@ const { execSync } = require('child_process');
10
10
  program
11
11
  .name('dasi-ui')
12
12
  .description('🚀 DASI UI - Admin Dashboard Template')
13
- .version('1.0.13');
13
+ .version('1.0.14');
14
14
 
15
15
  program
16
16
  .command('create [project-name]')
@@ -90,13 +90,12 @@ program
90
90
 
91
91
  const answers = await inquirer.prompt(questions);
92
92
 
93
- // 🎯 Enhanced spinner configuration
94
93
  const spinner = ora({
95
94
  text: '🏗️ Building your admin dashboard...',
96
95
  spinner: 'dots',
97
96
  color: 'cyan',
98
97
  hideCursor: true,
99
- interval: 100 // Faster animation
98
+ interval: 100
100
99
  }).start();
101
100
 
102
101
  try {
@@ -107,14 +106,12 @@ program
107
106
  return;
108
107
  }
109
108
 
110
- // 🎯 Step 1: Create directory with animated spinner
111
109
  spinner.text = '📁 Creating project directory...';
112
110
  await new Promise(resolve => setTimeout(resolve, 300));
113
111
  fs.mkdirSync(projectPath, { recursive: true });
114
112
  console.log(chalk.green(`\n✅ Directory created: ${projectPath}`));
115
- spinner.start(); // Restart spinner
113
+ spinner.start();
116
114
 
117
- // 🎯 Step 2: Copy template with progress and continuous animation
118
115
  spinner.text = '📋 Copying template files...';
119
116
  let copiedFiles = 0;
120
117
  const templatePath = path.join(__dirname, '../template');
@@ -123,10 +120,8 @@ program
123
120
  throw new Error('Template folder not found. Please ensure this package is installed correctly.');
124
121
  }
125
122
 
126
- // Count files for progress
127
123
  const totalFiles = await countFiles(templatePath);
128
124
 
129
- // 🎯 Keep spinner active during copy
130
125
  const copyInterval = setInterval(() => {
131
126
  spinner.render();
132
127
  }, 100);
@@ -134,8 +129,6 @@ program
134
129
  await fs.copy(templatePath, projectPath, {
135
130
  filter: (src) => {
136
131
  const relativePath = path.relative(templatePath, src);
137
-
138
- // Exclude unnecessary files
139
132
  const excludePatterns = [
140
133
  'node_modules',
141
134
  'dist',
@@ -161,8 +154,12 @@ program
161
154
 
162
155
  clearInterval(copyInterval);
163
156
 
164
- // 🎯 Step 3: Configuration updates with smooth transitions
165
157
  spinner.text = '⚙️ Updating configuration...';
158
+
159
+ const configInterval = setInterval(() => {
160
+ spinner.render();
161
+ }, 100);
162
+
166
163
  await new Promise(resolve => setTimeout(resolve, 500));
167
164
 
168
165
  const templatePackageJsonPath = path.join(projectPath, 'package.json.template');
@@ -174,7 +171,6 @@ program
174
171
  await fs.move(templatePackageJsonPath, packageJsonPath);
175
172
  }
176
173
 
177
- // Update package.json
178
174
  spinner.text = '🔧 Configuring project settings...';
179
175
  await new Promise(resolve => setTimeout(resolve, 300));
180
176
  let packageJson = await fs.readJson(packageJsonPath);
@@ -186,27 +182,28 @@ program
186
182
 
187
183
  await fs.writeJson(packageJsonPath, packageJson, { spaces: 2 });
188
184
 
189
- // Create environment file
190
185
  spinner.text = '🌍 Setting up environment variables...';
191
186
  await new Promise(resolve => setTimeout(resolve, 300));
192
187
  const envContent = `VITE_APP_TITLE=${answers.appTitle}
193
- VITE_APP_DESCRIPTION=${answers.appDescription}
194
- VITE_APP_AUTHOR=${answers.author}
195
- VITE_API_URL=${answers.apiUrl}
196
- VITE_DARK_MODE=${answers.darkMode}`;
188
+ VITE_APP_DESCRIPTION=${answers.appDescription}
189
+ VITE_APP_AUTHOR=${answers.author}
190
+ VITE_API_URL=${answers.apiUrl}
191
+ VITE_DARK_MODE=${answers.darkMode}`;
197
192
 
198
193
  await fs.writeFile(path.join(projectPath, '.env.example'), envContent);
199
194
  await fs.copyFile(path.join(projectPath, '.env.example'), path.join(projectPath, '.env'));
200
195
 
201
- // 🎯 Step 4: Git initialization with continuous animation
196
+ clearInterval(configInterval);
197
+
202
198
  if (answers.gitInit) {
203
199
  spinner.text = '📚 Initializing git repository...';
200
+
201
+ const gitInterval = setInterval(() => {
202
+ spinner.render();
203
+ }, 100);
204
+
204
205
  await new Promise(resolve => setTimeout(resolve, 500));
205
206
  try {
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
207
  execSync('git init', { cwd: projectPath, stdio: 'ignore' });
211
208
 
212
209
  spinner.text = '📝 Adding files to git...';
@@ -216,11 +213,6 @@ VITE_DARK_MODE=${answers.darkMode}`;
216
213
  spinner.text = '💾 Creating initial commit...';
217
214
  await new Promise(resolve => setTimeout(resolve, 400));
218
215
 
219
- // 🎯 Keep spinner active during git commit
220
- const gitInterval = setInterval(() => {
221
- spinner.render();
222
- }, 100);
223
-
224
216
  try {
225
217
  execSync('git commit -m "🚀 Initial commit: DASI UI Admin Template"', {
226
218
  cwd: projectPath,
@@ -231,20 +223,18 @@ VITE_DARK_MODE=${answers.darkMode}`;
231
223
  console.log(chalk.yellow('\n⚠️ Git commit skipped, continuing...'));
232
224
  }
233
225
 
234
- clearInterval(gitInterval);
235
-
236
226
  } catch (error) {
237
227
  console.log(chalk.yellow('\n⚠️ Git initialization failed, continuing...'));
238
228
  spinner.start();
239
229
  }
230
+
231
+ clearInterval(gitInterval);
240
232
  }
241
233
 
242
- // 🎯 Step 5: Install dependencies with continuous spinner
243
234
  if (answers.installDeps) {
244
235
  spinner.text = '📦 Installing dependencies...';
245
236
  spinner.color = 'yellow';
246
237
 
247
- // 🎯 Keep spinner active during npm install
248
238
  const installInterval = setInterval(() => {
249
239
  spinner.render();
250
240
  }, 100);
@@ -264,15 +254,18 @@ VITE_DARK_MODE=${answers.darkMode}`;
264
254
  clearInterval(installInterval);
265
255
  }
266
256
 
267
- // 🎯 Success with celebration
257
+ spinner.text = '🎉 Finalizing setup...';
258
+ spinner.color = 'green';
259
+ await new Promise(resolve => setTimeout(resolve, 500));
260
+
268
261
  spinner.succeed('✅ Admin dashboard created successfully!');
269
262
 
270
263
  console.log(chalk.green(`
271
- ╔══════════════════════════════════════════════════════════════╗
272
- ║ ║
273
- ║ 🎉 Success! Your admin dashboard is ready! ║
274
- ║ ║
275
- ╚══════════════════════════════════════════════════════════════╝
264
+ ╔══════════════════════════════════════════════════════════════╗
265
+ ║ ║
266
+ ║ 🎉 Success! Your admin dashboard is ready! ║
267
+ ║ ║
268
+ ╚══════════════════════════════════════════════════════════════╝
276
269
  `));
277
270
 
278
271
  console.log(chalk.cyan('\n📋 Project Summary:'));
@@ -300,7 +293,6 @@ VITE_DARK_MODE=${answers.darkMode}`;
300
293
  }
301
294
  });
302
295
 
303
- // Helper function to count files
304
296
  async function countFiles(dir) {
305
297
  let count = 0;
306
298
  const items = await fs.readdir(dir);
package/dist/index.js ADDED
@@ -0,0 +1,11 @@
1
+ import { e as s, D as t, a as l, d as o, h as r, H as D, b as p, u as b } from "./index-CyDesxb4.js";
2
+ export {
3
+ s as BaseSelector,
4
+ t as DashboardDataTable,
5
+ l as DasiApp,
6
+ o as DataTableCell,
7
+ r as DateSelectorElement,
8
+ D as Header,
9
+ p as PageActivity,
10
+ b as useAppConfig
11
+ };
package/package.json CHANGED
@@ -1,10 +1,18 @@
1
1
  {
2
2
  "name": "@dasidev/dasi-ui",
3
- "version": "1.0.13",
3
+ "version": "1.0.15",
4
4
  "description": "Complete Vue 3 Admin Template Generator",
5
5
  "private": false,
6
6
  "type": "module",
7
7
  "main": "dist/index.js",
8
+ "module": "dist/index.js",
9
+ "exports": {
10
+ ".": {
11
+ "import": "./dist/index.js",
12
+ "require": "./dist/index.cjs"
13
+ },
14
+ "./style.css": "./dist/style.css"
15
+ },
8
16
  "bin": {
9
17
  "dasi-ui": "./bin/dasi-cli.cjs"
10
18
  },
@@ -1,7 +1,6 @@
1
1
  <script setup lang="ts">
2
2
  import { RouterView } from 'vue-router'
3
3
  import { onMounted } from 'vue'
4
- import Header from '@/components/pages/Header.vue'
5
4
  import { useDarkMode } from './composables/useDarkMode'
6
5
 
7
6
  const { initializeDarkMode } = useDarkMode()
@@ -1,6 +1,6 @@
1
1
  import axios from "axios";
2
- import { useAuthStore } from "@/stores/auth";
3
- import { useAppConfig } from "@/composables/useAppConfig";
2
+ import { useAuthStore } from "../stores/auth";
3
+ import { useAppConfig } from "../composables/useAppConfig";
4
4
 
5
5
  // Get configuration values
6
6
  const { tokenKey, apiBaseUrl, apiEndpoints } = useAppConfig();
@@ -1,7 +1,7 @@
1
1
  <script setup>
2
- import { cn } from "@/lib/utils";
2
+ import { cn } from "../../lib/utils";
3
3
  import { LucidePlusCircle } from "lucide-vue-next";
4
- import BtnCircle from "@/components/button/BtnCircle.vue";
4
+ import BtnCircle from "../../components/button/BtnCircle.vue";
5
5
 
6
6
  const props = defineProps(["class"]);
7
7
  </script>
@@ -1,5 +1,5 @@
1
1
  <script setup lang="ts">
2
- import { cn } from '@/lib/utils';
2
+ import { cn } from '../../lib/utils';
3
3
  const props = defineProps(['class'])
4
4
  </script>
5
5
 
@@ -1,5 +1,5 @@
1
1
  <script setup lang="ts">
2
- import { cn } from "@/lib/utils";
2
+ import { cn } from "../../lib/utils";
3
3
  import { type HTMLAttributes } from "vue";
4
4
 
5
5
  interface Props {
@@ -1,6 +1,6 @@
1
1
  <script setup lang="ts">
2
- import { Button } from '@/components/ui/button'
3
- import { cn } from '@/lib/utils';
2
+ import { Button } from '../../components/ui/button'
3
+ import { cn } from '../../lib/utils';
4
4
  const props = defineProps(['class', 'loading', 'disabled', 'disabledClass'])
5
5
  </script>
6
6
 
@@ -1,6 +1,6 @@
1
1
  <script setup lang="ts">
2
- import { Button } from "@/components/ui/button";
3
- import { cn } from "@/lib/utils";
2
+ import { Button } from "../../components/ui/button";
3
+ import { cn } from "../../lib/utils";
4
4
  const props = defineProps(["class", "disabled", "loading", "disabledClass"]);
5
5
  </script>
6
6
 
@@ -1,5 +1,5 @@
1
1
  <script setup lang="ts">
2
- import { getMenuItemByUrl, isValidValue } from '@/lib/utils';
2
+ import { getMenuItemByUrl, isValidValue } from '../../lib/utils';
3
3
  import { FileCheck2, LucideCheckCheck, LucideCircleX, LucideCornerRightUp, LucideSend, LucideSettings, LucideX, LucideXCircle } from 'lucide-vue-next';
4
4
  import moment from 'moment';
5
5
  import { RouterLink } from 'vue-router';
@@ -1,8 +1,8 @@
1
1
  <script lang="ts" setup>
2
- import type { DasiV2FormSchema, FormSchema, FormSchemaItem } from "@/types/form.types";
3
- import DetailContentItem from "./DetailContentItem.vue";
4
- import { nextTick, onMounted, ref, watch } from "vue";
5
- import type { ColumnRef } from "@/vueform/config/types";
2
+ import type { DasiV2FormSchema, FormSchemaItem } from "../../types/form.types";
3
+ import DetailContentItem from "./DetailContentItem.vue";
4
+ import { onMounted, ref, watch } from "vue";
5
+ import type { ColumnRef } from "../../vueform/config/types";
6
6
 
7
7
  interface DetailItemProps {
8
8
  columns?: ColumnRef[];
@@ -4,7 +4,7 @@ import { LucideCalendarClock, LucideCircleUserRound, LucideDatabase } from "luci
4
4
  import moment from "moment";
5
5
  import DetailContentTablet from "./DetailContentTablet.vue";
6
6
  import DataStatusTag from "../tables/DataStatusTag.vue";
7
- import type { PageConfig } from "@/vueform/config/types";
7
+ import type { PageConfig } from "../../vueform/config/types";
8
8
 
9
9
  const props = defineProps<{
10
10
  data: any;
@@ -2,7 +2,7 @@
2
2
  import { LucideBuilding, LucideCheck, LucideFile } from "lucide-vue-next";
3
3
  import moment from "moment";
4
4
  import DetailContentTablet from "./DetailContentTablet.vue";
5
- import { formatNumberIntl, getNestedValue, numberToMonth, displayNumberFormatedIntl } from "@/lib/utils";
5
+ import { formatNumberIntl, getNestedValue } from "../../lib/utils";
6
6
 
7
7
  const props = defineProps(["item", "data"]);
8
8
  </script>
@@ -1,12 +1,11 @@
1
1
  <script setup lang="ts">
2
- import type { DasiV2FormSchema, FormSchema, FormSchemaHooks } from "@/types/form.types";
2
+ import type { DasiV2FormSchema, FormSchemaHooks } from "../../types/form.types";
3
3
  import { LucideBuilding, LucideCheck, LucideFile } from "lucide-vue-next";
4
4
  import moment from "moment";
5
5
  import DetailContentTablet from "./DetailContentTablet.vue";
6
- import { formatNumberIntl, numberToMonth } from "@/lib/utils";
6
+ import { formatNumberIntl } from "../../lib/utils";
7
7
  import { onMounted, computed, watch, ref } from "vue";
8
- import { schemaMaping } from "@/lib/detail.utils";
9
- import api from "@/api/api";
8
+ import { schemaMaping } from "../../lib/detail.utils";
10
9
 
11
10
  interface DetailItemProps {
12
11
  schema: DasiV2FormSchema; // Support both old and new formats
@@ -1,5 +1,5 @@
1
1
  <script setup lang="ts">
2
- import Skeleton from '../ui/skeleton/Skeleton.vue';
2
+ import Skeleton from "../ui/skeleton/Skeleton.vue";
3
3
  </script>
4
4
 
5
5
  <template>
@@ -1,5 +1,5 @@
1
1
  <script setup lang="ts">
2
- import { cn } from '@/lib/utils';
2
+ import { cn } from "../../lib/utils";
3
3
  const props = defineProps(['class'])
4
4
  </script>
5
5
 
@@ -1,21 +1,21 @@
1
1
  <script setup lang="ts">
2
2
  import { ref } from "vue";
3
3
  import { ArrowLeftToLine, LucideFileClock, LucideX } from "lucide-vue-next";
4
- import { Sheet, SheetClose, SheetContent, SheetHeader, SheetTitle } from "@/components/ui/sheet";
5
- import ScrollArea from "@/components/ui/scroll-area/ScrollArea.vue";
6
- import { cn } from "@/lib/utils";
7
- import DetailTimeline from "@/components/detail/DetailTimeline.vue";
8
- import type { DasiV2FormSchema, FormSchema, FormSchemaHooks } from "@/types/form.types";
4
+ import { Sheet, SheetClose, SheetContent, SheetHeader, SheetTitle } from "../ui/sheet";
5
+ import ScrollArea from "../ui/scroll-area/ScrollArea.vue";
6
+ import { cn } from "../../lib/utils";
7
+ import DetailTimeline from "./DetailTimeline.vue";
8
+ import type { DasiV2FormSchema, FormSchema, FormSchemaHooks } from "../../types/form.types";
9
9
  import DetailContentLoading from "./DetailContentLoading.vue";
10
10
  import DetailContentHeader from "./DetailContentHeader.vue";
11
11
  import DetailContentItems from "./DetailContentItems.vue";
12
12
  import DCI2 from "./DCI2.vue";
13
13
  import moment from "moment";
14
14
  import BtnCircle from "../button/BtnCircle.vue";
15
- import type { ColumnRef, PageConfig } from "@/vueform/config/types";
16
- import { getPageDataDetail } from "@/lib/page.utils";
17
- import { useErrorDialog } from "@/stores/dialog";
18
- import { InternalServerError } from "@/lib/constants";
15
+ import type { ColumnRef, PageConfig } from "../../vueform/config/types";
16
+ import { getPageDataDetail } from "../../lib/page.utils";
17
+ import { useErrorDialog } from "../../stores/dialog";
18
+ import { InternalServerError } from "../../lib/constants";
19
19
 
20
20
  interface Props {
21
21
  title?: string;
@@ -1,9 +1,9 @@
1
1
  <script setup lang="ts">
2
- import api from "@/api/api";
2
+ import api from "../../api/api";
3
3
  import moment from "moment";
4
4
  import { onMounted, ref } from "vue";
5
- import Skeleton from "@/components/ui/skeleton/Skeleton.vue";
6
- import { LucideEdit, LucideFileClock, LucideSquareSplitHorizontal, LucideTrash2, LucideUndo2 } from "lucide-vue-next";
5
+ import Skeleton from "../ui/skeleton/Skeleton.vue";
6
+ import { LucideEdit, LucideFileClock, LucideTrash2, LucideUndo2 } from "lucide-vue-next";
7
7
 
8
8
  moment.updateLocale("en", {
9
9
  relativeTime: {
@@ -20,29 +20,29 @@ import {
20
20
  LucideLoaderCircle,
21
21
  LucideRotateCcw
22
22
  } from "lucide-vue-next";
23
- import { Sheet, SheetContent, SheetHeader, SheetTitle, SheetFooter } from "@/components/ui/sheet";
24
- import { cn, isValidValue } from "@/lib/utils";
25
- import { type ErrorDialogOptions } from "@/components/dialog/ErrorDialog.vue";
26
- import pdfLogo from "@/assets/pdf-logo.svg";
27
- import ConfirmDialog from "@/components/dialog/ConfirmDialog.vue";
28
- import api from "@/api/api";
23
+ import { Sheet, SheetContent, SheetHeader, SheetTitle, SheetFooter } from "../../components/ui/sheet";
24
+ import { cn, isValidValue } from "../../lib/utils";
25
+ import { type ErrorDialogOptions } from "../../components/dialog/ErrorDialog.vue";
26
+ import pdfLogo from "../../assets/pdf-logo.svg";
27
+ import ConfirmDialog from "../../components/dialog/ConfirmDialog.vue";
28
+ import api from "../../api/api";
29
29
  import moment from "moment";
30
- import FormInputerDialog from "@/components/dialog/FormInputerDialog.vue";
31
- import { DialogDescription, DialogTitle } from "@/components/ui/dialog";
32
- import PdfViewer from "@/components/helper/PdfViewer.vue";
33
- import BtnCircle from "@/components/button/BtnCircle.vue";
34
- import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger } from "@/components/ui/dropdown-menu";
35
- import LoadingIndicator from "@/components/loadings/LoadingIndicator.vue";
36
- import { useConfirmDialog, useErrorDialog, useInfoDialog, useLoadingDialog, useSuccessDialog } from "@/stores/dialog";
37
- import type { DasiV2FormSchema } from "@/types/form.types";
38
- import DetailContentLoading from "@/components/detail/DetailContentLoading.vue";
39
- import DetailContentHeader from "@/components/detail/DetailContentHeader.vue";
30
+ import FormInputerDialog from "../../components/dialog/FormInputerDialog.vue";
31
+ import { DialogDescription, DialogTitle } from "../../components/ui/dialog";
32
+ import PdfViewer from "../../components/helper/PdfViewer.vue";
33
+ import BtnCircle from "../../components/button/BtnCircle.vue";
34
+ import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger } from "../../components/ui/dropdown-menu";
35
+ import LoadingIndicator from "../../components/loadings/LoadingIndicator.vue";
36
+ import { useConfirmDialog, useErrorDialog, useInfoDialog, useLoadingDialog, useSuccessDialog } from "../../stores/dialog";
37
+ import type { DasiV2FormSchema } from "../../types/form.types";
38
+ import DetailContentLoading from "../../components/detail/DetailContentLoading.vue";
39
+ import DetailContentHeader from "../../components/detail/DetailContentHeader.vue";
40
40
  import ApprovalInfo from "./ApprovalInfo.vue";
41
- import { InternalServerError } from "@/lib/constants";
42
- import type { ColumnRef, PageConfig } from "@/vueform/config/types";
43
- import { getPageDataDetail } from "@/lib/page.utils";
44
- import { ScrollArea } from "@/components/ui/scroll-area";
45
- import DCI2 from "@/components/detail/DCI2.vue";
41
+ import { InternalServerError } from "../../lib/constants";
42
+ import type { ColumnRef, PageConfig } from "../../vueform/config/types";
43
+ import { getPageDataDetail } from "../../lib/page.utils";
44
+ import { ScrollArea } from "../../components/ui/scroll-area";
45
+ import DCI2 from "../../components/detail/DCI2.vue";
46
46
 
47
47
  export interface DocViewerOptions {
48
48
  title?: string;
@@ -1,10 +1,10 @@
1
1
  <script setup lang="ts">
2
- import { AlertDialog, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle } from "@/components/ui/alert-dialog";
3
- import Input from "@/components/ui/input/Input.vue";
2
+ import { AlertDialog, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle } from "../../components/ui/alert-dialog";
3
+ import Input from "../../components/ui/input/Input.vue";
4
4
  import { ref } from "vue";
5
- import LucideIcon from "@/components/helper/LucideIcon.vue";
5
+ import LucideIcon from "../../components/helper/LucideIcon.vue";
6
6
  import BtnPrimary from "../button/BtnPrimary.vue";
7
- import { cn } from "@/lib/utils";
7
+ import { cn } from "../../lib/utils";
8
8
 
9
9
  export interface ConfirmDialogOptions {
10
10
  title: string;
@@ -1,6 +1,6 @@
1
1
  <script setup lang="ts">
2
- import { Dialog, DialogContent, DialogTitle, DialogTrigger } from "@/components/ui/dialog";
3
- import DialogFooter from "@/components/ui/dialog/DialogFooter.vue";
2
+ import { Dialog, DialogContent, DialogTitle, DialogTrigger } from "../../components/ui/dialog";
3
+ import DialogFooter from "../../components/ui/dialog/DialogFooter.vue";
4
4
  import { DialogOverlay, DialogPortal } from "radix-vue";
5
5
 
6
6
  const props = defineProps({
@@ -1,14 +1,14 @@
1
1
  <script setup lang="ts">
2
2
  import DialogBase from "./DialogBase.vue";
3
3
  import { LucideChevronFirst, LucideChevronLast, LucideChevronLeft, LucideChevronRight, Search } from "lucide-vue-next";
4
- import DialogClose from "@/components/ui/dialog/DialogClose.vue";
4
+ import DialogClose from "../../components/ui/dialog/DialogClose.vue";
5
5
  import { ref, watch } from "vue";
6
- import ScrollArea from "@/components/ui/scroll-area/ScrollArea.vue";
7
- import BtnCircle from "@/components/button/BtnCircle.vue";
8
- import BtnPrimary from "@/components/button/BtnPrimary.vue";
9
- import BtnSecondary from "@/components/button/BtnSecondary.vue";
10
- import LoadingIndicator from "@/components/loadings/LoadingIndicator.vue";
11
- import CheckboxElement from "@/components/helper/CheckboxElement.vue";
6
+ import ScrollArea from "../../components/ui/scroll-area/ScrollArea.vue";
7
+ import BtnCircle from "../../components/button/BtnCircle.vue";
8
+ import BtnPrimary from "../../components/button/BtnPrimary.vue";
9
+ import BtnSecondary from "../../components/button/BtnSecondary.vue";
10
+ import LoadingIndicator from "../../components/loadings/LoadingIndicator.vue";
11
+ import CheckboxElement from "../../components/helper/CheckboxElement.vue";
12
12
 
13
13
  export interface PageMeta {
14
14
  total: number;
@@ -1,5 +1,5 @@
1
1
  <script setup lang="ts">
2
- import { AlertDialog, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle } from "@/components/ui/alert-dialog";
2
+ import { AlertDialog, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle } from "../../components/ui/alert-dialog";
3
3
  import { ref, watch } from "vue";
4
4
 
5
5
  export interface ErrorDialogOptions {
@@ -1,7 +1,7 @@
1
1
  <script setup lang="ts">
2
2
  import type { HTMLAttributes } from "vue";
3
3
  import { LucideFileText, LucideSave, LucideX } from "lucide-vue-next";
4
- import { Sheet, SheetContent, SheetFooter, SheetHeader, SheetTitle } from "@/components/ui/sheet";
4
+ import { Sheet, SheetContent, SheetFooter, SheetHeader, SheetTitle } from "../../components/ui/sheet";
5
5
  import {
6
6
  AlertDialog,
7
7
  AlertDialogAction,
@@ -12,12 +12,12 @@ import {
12
12
  AlertDialogHeader,
13
13
  AlertDialogTitle,
14
14
  AlertDialogTrigger
15
- } from "@/components/ui/alert-dialog";
16
- import BtnPrimary from "@/components/button/BtnPrimary.vue";
17
- import BtnSecondary from "@/components/button/BtnSecondary.vue";
18
- import { cn } from "@/lib/utils";
19
- import Skeleton from "@/components/ui/skeleton/Skeleton.vue";
20
- import BtnCircle from "../button/BtnCircle.vue";
15
+ } from "../../components/ui/alert-dialog";
16
+ import BtnPrimary from "../../components/button/BtnPrimary.vue";
17
+ import BtnSecondary from "../../components/button/BtnSecondary.vue";
18
+ import { cn } from "../../lib/utils";
19
+ import Skeleton from "../../components/ui/skeleton/Skeleton.vue";
20
+ import BtnCircle from "../../components/button/BtnCircle.vue";
21
21
 
22
22
  interface Props {
23
23
  title?: string;
@@ -1,11 +1,11 @@
1
1
  <script setup lang="ts">
2
- import { Dialog, DialogDescription, DialogHeader, DialogTitle, DialogFooter } from "@/components/ui/dialog";
3
- import { cn } from "@/lib/utils";
4
- import BtnPrimary from "@/components/button/BtnPrimary.vue";
5
- import BtnSecondary from "@/components/button/BtnSecondary.vue";
2
+ import { Dialog, DialogDescription, DialogHeader, DialogTitle, DialogFooter } from "../../components/ui/dialog";
3
+ import { cn } from "../../lib/utils";
4
+ import BtnPrimary from "../../components/button/BtnPrimary.vue";
5
+ import BtnSecondary from "../../components/button/BtnSecondary.vue";
6
6
  import { ref } from "vue";
7
7
  import { LucideX } from "lucide-vue-next";
8
- import BtnCircle from "../button/BtnCircle.vue";
8
+ import BtnCircle from "../../components/button/BtnCircle.vue";
9
9
  import { DialogOverlay, DialogContent } from "radix-vue";
10
10
 
11
11
  const props = defineProps(["class", "classOverlay", "classContent", "secondaryBtnClass", "primaryBtnClass", "saveDisabled", "closeOnSubmit"]);
@@ -1,7 +1,7 @@
1
1
  <script setup lang="ts">
2
- import { AlertDialog, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle } from "@/components/ui/alert-dialog";
2
+ import { AlertDialog, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle } from "../../components/ui/alert-dialog";
3
3
  import { ref, watch } from "vue";
4
- import { cn } from "@/lib/utils";
4
+ import { cn } from "../../lib/utils";
5
5
  import { AlertDialogOverlay } from "radix-vue";
6
6
 
7
7
  export interface InfoDialogOptions {
@@ -1,11 +1,10 @@
1
1
  <script setup lang="ts">
2
- import { defineModel } from 'vue'
3
2
  import {
4
3
  Dialog,
5
4
  DialogContent,
6
- } from '@/components/ui/dialog'
7
- import BtnSecondary from '@/components/button/BtnSecondary.vue';
8
- import DialogClose from '@/components/ui/dialog/DialogClose.vue';
5
+ } from '../../components/ui/dialog'
6
+ import BtnSecondary from '../../components/button/BtnSecondary.vue';
7
+ import DialogClose from '../../components/ui/dialog/DialogClose.vue';
9
8
  import { DialogOverlay } from 'radix-vue';
10
9
 
11
10
  const model = defineModel<boolean | undefined>('open');