@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.
- package/bin/dasi-cli.cjs +30 -38
- package/dist/index.js +11 -0
- package/package.json +9 -1
- package/template/src/App.vue +0 -1
- package/template/src/api/api.ts +2 -2
- package/template/src/components/button/BtnAddOutline.vue +2 -2
- package/template/src/components/button/BtnCircle.vue +1 -1
- package/template/src/components/button/BtnOutline.vue +1 -1
- package/template/src/components/button/BtnPrimary.vue +2 -2
- package/template/src/components/button/BtnSecondary.vue +2 -2
- package/template/src/components/detail/ApprovalInfo.vue +1 -1
- package/template/src/components/detail/DCI2.vue +4 -4
- package/template/src/components/detail/DetailContentHeader.vue +1 -1
- package/template/src/components/detail/DetailContentItem.vue +1 -1
- package/template/src/components/detail/DetailContentItems.vue +3 -4
- package/template/src/components/detail/DetailContentLoading.vue +1 -1
- package/template/src/components/detail/DetailContentTablet.vue +1 -1
- package/template/src/components/detail/DetailSheet.vue +9 -9
- package/template/src/components/detail/DetailTimeline.vue +3 -3
- package/template/src/components/detail/DocViewerContent.vue +21 -21
- package/template/src/components/dialog/ConfirmDialog.vue +4 -4
- package/template/src/components/dialog/DialogBase.vue +2 -2
- package/template/src/components/dialog/DialogSelect.vue +7 -7
- package/template/src/components/dialog/ErrorDialog.vue +1 -1
- package/template/src/components/dialog/FormDialog.vue +7 -7
- package/template/src/components/dialog/FormInputerDialog.vue +5 -5
- package/template/src/components/dialog/InfoDialog.vue +2 -2
- package/template/src/components/dialog/SuccessDialog.vue +3 -4
- package/template/src/components/forms/auth/LoginForm.vue +12 -12
- package/template/src/components/forms/auth/PwdScore.vue +1 -1
- package/template/src/components/helper/ApiTester.vue +3 -3
- package/template/src/components/helper/ChangePwd.vue +7 -8
- package/template/src/components/helper/CheckboxElement.vue +1 -1
- package/template/src/components/helper/Copyright.vue +1 -1
- package/template/src/components/helper/PinInputer.vue +5 -5
- package/template/src/components/layout/PageActivityHeader.vue +2 -2
- package/template/src/components/layout/PageHeader.vue +2 -3
- package/template/src/components/loadings/LoadingDialog.vue +2 -2
- package/template/src/components/loadings/LoadingDialogSpin.vue +2 -2
- package/template/src/components/loadings/LoadingIndicator.vue +1 -1
- package/template/src/components/loadings/LoadingScreen.vue +1 -1
- package/template/src/components/notif/Notif.vue +4 -5
- package/template/src/components/notif/NotifItem.vue +0 -1
- package/template/src/components/pages/Header.vue +25 -25
- package/template/src/components/pages/Leftbar.vue +7 -7
- package/template/src/components/pages/PageActivity.vue +4 -4
- package/template/src/components/pages/PageActivityContent.vue +18 -18
- package/template/src/components/pages/PageContentTable.vue +15 -15
- package/template/src/components/pages/PageTab.vue +4 -4
- package/template/src/components/selector/BaseSelector.vue +9 -9
- package/template/src/components/selector/ConfigDataSelector.vue +3 -3
- package/template/src/components/tab/TabView.vue +1 -1
- package/template/src/components/tab/TabViewItemBar.vue +1 -1
- package/template/src/components/tables/CellHover.vue +1 -1
- package/template/src/components/tables/DashboardDataTable.vue +6 -6
- package/template/src/components/tables/DataStatusTag.vue +1 -1
- package/template/src/components/tables/DataTable.vue +5 -5
- package/template/src/components/tables/DataTableAccordion.vue +11 -11
- package/template/src/components/tables/DataTableActionRow.vue +3 -3
- package/template/src/components/tables/DataTableCell.vue +2 -3
- package/template/src/components/tables/DataTableHeader.vue +4 -4
- package/template/src/components/tables/DataTableRow.vue +5 -5
- package/template/src/components/tables/ExpandedTable.vue +13 -13
- package/template/src/components/tables/PageTable.vue +3 -3
- package/template/src/components/tables/Pagination.vue +3 -3
- package/template/src/components/tables/dropdown/BaseDropdownTable.vue +5 -5
- package/template/src/components/tables/dropdown/DropdownTableActivity.vue +2 -2
- package/template/src/components/tables/dropdown/DropdownTableAsset.vue +2 -2
- package/template/src/components/tables/dropdown/DropdownTableConfig.vue +2 -2
- package/template/src/components/tables/dropdown/DropdownTableDataKonektor.vue +2 -2
- package/template/src/components/tables/dropdown/DropdownTableDataLabel.vue +2 -2
- package/template/src/components/tables/dropdown/DropdownTableDataSchema.vue +2 -2
- package/template/src/components/tables/dropdown/DropdownTableFabaPemanfaat.vue +2 -2
- package/template/src/components/tables/dropdown/DropdownTableGroup.vue +2 -2
- package/template/src/components/tables/dropdown/DropdownTableHalaman.vue +2 -2
- package/template/src/components/tables/dropdown/DropdownTableLevel.vue +1 -1
- package/template/src/components/tables/dropdown/DropdownTableOrganization.vue +3 -3
- package/template/src/components/tables/dropdown/DropdownTablePengelola.vue +2 -2
- package/template/src/components/tables/dropdown/DropdownTableQueryLayer.vue +2 -2
- package/template/src/components/tables/dropdown/DropdownTableSentral.vue +2 -2
- package/template/src/components/tables/dropdown/DropdownTableWarehouse.vue +2 -2
- package/template/src/components/tables/dropdown/TableDropdown.vue +2 -2
- package/template/src/components/ui/accordion/AccordionContent.vue +1 -1
- package/template/src/components/ui/accordion/AccordionItem.vue +1 -1
- package/template/src/components/ui/accordion/AccordionTrigger.vue +1 -2
- package/template/src/components/ui/alert-dialog/AlertDialogAction.vue +2 -2
- package/template/src/components/ui/alert-dialog/AlertDialogCancel.vue +2 -2
- package/template/src/components/ui/alert-dialog/AlertDialogContent.vue +1 -1
- package/template/src/components/ui/alert-dialog/AlertDialogDescription.vue +1 -1
- package/template/src/components/ui/alert-dialog/AlertDialogFooter.vue +1 -1
- package/template/src/components/ui/alert-dialog/AlertDialogHeader.vue +1 -1
- package/template/src/components/ui/alert-dialog/AlertDialogTitle.vue +1 -1
- package/template/src/components/ui/avatar/Avatar.vue +1 -1
- package/template/src/components/ui/avatar/UsersAvatar.vue +1 -2
- package/template/src/components/ui/button/Button.vue +1 -1
- package/template/src/components/ui/calendar/Calendar.vue +3 -3
- package/template/src/components/ui/checkbox/Checkbox.vue +1 -1
- package/template/src/components/ui/command/Command.vue +1 -1
- package/template/src/components/ui/command/CommandDialog.vue +1 -1
- package/template/src/components/ui/command/CommandEmpty.vue +1 -1
- package/template/src/components/ui/command/CommandGroup.vue +1 -1
- package/template/src/components/ui/command/CommandInput.vue +1 -1
- package/template/src/components/ui/command/CommandItem.vue +1 -1
- package/template/src/components/ui/command/CommandList.vue +1 -1
- package/template/src/components/ui/command/CommandSeparator.vue +1 -1
- package/template/src/components/ui/command/CommandShortcut.vue +1 -1
- package/template/src/components/ui/context-menu/ContextMenuCheckboxItem.vue +1 -1
- package/template/src/components/ui/context-menu/ContextMenuContent.vue +1 -1
- package/template/src/components/ui/context-menu/ContextMenuItem.vue +1 -1
- package/template/src/components/ui/context-menu/ContextMenuLabel.vue +1 -1
- package/template/src/components/ui/context-menu/ContextMenuRadioItem.vue +1 -1
- package/template/src/components/ui/context-menu/ContextMenuSeparator.vue +1 -1
- package/template/src/components/ui/context-menu/ContextMenuShortcut.vue +1 -1
- package/template/src/components/ui/context-menu/ContextMenuSubContent.vue +1 -1
- package/template/src/components/ui/context-menu/ContextMenuSubTrigger.vue +1 -1
- package/template/src/components/ui/dialog/DialogContent.vue +1 -1
- package/template/src/components/ui/dialog/DialogDescription.vue +1 -1
- package/template/src/components/ui/dialog/DialogFooter.vue +1 -1
- package/template/src/components/ui/dialog/DialogHeader.vue +1 -1
- package/template/src/components/ui/dialog/DialogScrollContent.vue +3 -3
- package/template/src/components/ui/dialog/DialogTitle.vue +1 -1
- package/template/src/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue +1 -1
- package/template/src/components/ui/dropdown-menu/DropdownMenuContent.vue +1 -1
- package/template/src/components/ui/dropdown-menu/DropdownMenuItem.vue +1 -1
- package/template/src/components/ui/dropdown-menu/DropdownMenuLabel.vue +1 -1
- package/template/src/components/ui/dropdown-menu/DropdownMenuRadioItem.vue +1 -1
- package/template/src/components/ui/dropdown-menu/DropdownMenuSeparator.vue +1 -1
- package/template/src/components/ui/dropdown-menu/DropdownMenuShortcut.vue +1 -1
- package/template/src/components/ui/dropdown-menu/DropdownMenuSubContent.vue +1 -1
- package/template/src/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue +1 -1
- package/template/src/components/ui/form/FormDescription.vue +1 -1
- package/template/src/components/ui/form/FormItem.vue +1 -1
- package/template/src/components/ui/form/FormLabel.vue +2 -2
- package/template/src/components/ui/hover-card/HoverCardContent.vue +1 -1
- package/template/src/components/ui/input/Input.vue +1 -1
- package/template/src/components/ui/label/Label.vue +1 -1
- package/template/src/components/ui/pagination/PaginationEllipsis.vue +1 -1
- package/template/src/components/ui/pagination/PaginationFirst.vue +2 -2
- package/template/src/components/ui/pagination/PaginationLast.vue +2 -2
- package/template/src/components/ui/pagination/PaginationNext.vue +2 -2
- package/template/src/components/ui/pagination/PaginationPrev.vue +2 -2
- package/template/src/components/ui/pin-input/PinInput.vue +1 -1
- package/template/src/components/ui/pin-input/PinInputGroup.vue +1 -1
- package/template/src/components/ui/pin-input/PinInputInput.vue +1 -1
- package/template/src/components/ui/popover/PopoverContent.vue +1 -1
- package/template/src/components/ui/progress/TotalCalories.vue +1 -1
- package/template/src/components/ui/radio-group/RadioGroup.vue +1 -1
- package/template/src/components/ui/radio-group/RadioGroupItem.vue +1 -1
- package/template/src/components/ui/scroll-area/ScrollArea.vue +1 -1
- package/template/src/components/ui/scroll-area/ScrollBar.vue +1 -1
- package/template/src/components/ui/select/SelectContent.vue +1 -1
- package/template/src/components/ui/select/SelectGroup.vue +1 -1
- package/template/src/components/ui/select/SelectInline.vue +1 -1
- package/template/src/components/ui/select/SelectItem.vue +1 -1
- package/template/src/components/ui/select/SelectLabel.vue +1 -1
- package/template/src/components/ui/select/SelectScrollDownButton.vue +1 -1
- package/template/src/components/ui/select/SelectScrollUpButton.vue +1 -1
- package/template/src/components/ui/select/SelectSeparator.vue +1 -1
- package/template/src/components/ui/select/SelectTrigger.vue +1 -1
- package/template/src/components/ui/select/SelectTriggerCustom.vue +1 -1
- package/template/src/components/ui/separator/Separator.vue +1 -1
- package/template/src/components/ui/sheet/SheetContent.vue +1 -1
- package/template/src/components/ui/sheet/SheetDescription.vue +1 -1
- package/template/src/components/ui/sheet/SheetFooter.vue +1 -1
- package/template/src/components/ui/sheet/SheetHeader.vue +1 -1
- package/template/src/components/ui/sheet/SheetTitle.vue +1 -1
- package/template/src/components/ui/skeleton/Skeleton.vue +1 -1
- package/template/src/components/ui/switch/Switch.vue +1 -1
- package/template/src/components/ui/table/Table.vue +1 -1
- package/template/src/components/ui/table/TableBody.vue +1 -1
- package/template/src/components/ui/table/TableCaption.vue +1 -1
- package/template/src/components/ui/table/TableCell.vue +1 -1
- package/template/src/components/ui/table/TableEmpty.vue +1 -1
- package/template/src/components/ui/table/TableFooter.vue +1 -1
- package/template/src/components/ui/table/TableHead.vue +1 -1
- package/template/src/components/ui/table/TableHeader.vue +1 -1
- package/template/src/components/ui/table/TableRow.vue +1 -1
- package/template/src/components/ui/tabs/TabsContent.vue +1 -1
- package/template/src/components/ui/tabs/TabsList.vue +1 -1
- package/template/src/components/ui/tabs/TabsTrigger.vue +1 -1
- package/template/src/components/ui/tags-input/TagsInput.vue +1 -1
- package/template/src/components/ui/tags-input/TagsInputInput.vue +1 -1
- package/template/src/components/ui/tags-input/TagsInputItem.vue +1 -1
- package/template/src/components/ui/tags-input/TagsInputItemDelete.vue +1 -1
- package/template/src/components/ui/tags-input/TagsInputItemText.vue +1 -1
- package/template/src/components/ui/textarea/Textarea.vue +1 -1
- package/template/src/components/ui/tooltip/TooltipContent.vue +1 -1
- package/template/src/composables/useAppConfig.ts +4 -4
- package/template/src/config/test-config.ts +1 -2
- package/template/src/layouts/AuthLayout.vue +3 -3
- package/template/src/layouts/DefaultLayout.vue +7 -7
- package/template/src/layouts/DocsLayout.vue +5 -5
- package/template/src/layouts/FormGlobal.vue +2 -2
- package/template/src/layouts/GlobalDialog.vue +12 -12
- package/template/src/layouts/RakorConfirmDialog.vue +2 -2
- package/template/src/layouts/SettingsLayout.vue +3 -3
- package/template/src/lib/detail.utils.ts +1 -1
- package/template/src/lib/form.utils.ts +4 -4
- package/template/src/lib/page.flow.utils.ts +1 -1
- package/template/src/lib/page.utils.ts +8 -9
- package/template/src/lib/utils.ts +1 -1
- package/template/src/main.scss +1 -1
- package/template/src/router/index.ts +3 -4
- package/template/src/stores/auth.ts +1 -1
- package/template/src/stores/dialog.ts +3 -3
- package/template/src/stores/form.ts +1 -1
- package/template/src/stores/tabs.ts +1 -1
- package/template/src/utils/config.utils.ts +1 -1
- package/template/src/views/NotFound.vue +1 -1
- package/template/src/views/PageActivity.vue +1 -1
- package/template/src/views/auth/LoginView.vue +2 -1
- package/template/src/views/auth/OauthCallback.vue +3 -3
- package/template/src/views/settings/AccountSettingsView.vue +6 -18
- package/template/src/views/settings/AuditLogsSettingsView.vue +4 -4
- package/template/src/views/settings/DeviceSettingsView.vue +1 -1
- package/template/src/views/settings/ProfileSettingsView.vue +5 -5
- package/template/src/vueform/config/informasi-gudang.ts +0 -1
- package/template/src/vueform/config/test-schema.ts +0 -1
- package/template/src/vueform/config/types.ts +1 -1
- package/template/src/vueform/elements/ConfigDataSelectorElement.vue +1 -1
- package/template/src/vueform/elements/DateSelectorElement.vue +2 -2
- package/template/src/vueform/elements/SelectorElement.vue +1 -1
- package/template/src/vueform/schemas/date-selector-test.ts +1 -1
- package/template/src/vueform/schemas/informasi-gudang.ts +3 -5
- package/template/src/vueform/schemas/test-schema.ts +1 -1
- package/template/tsconfig.app.json +28 -0
- package/template/tsconfig.node.json +19 -0
- 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
|
+
.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
|
|
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();
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
},
|
package/template/src/App.vue
CHANGED
package/template/src/api/api.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import axios from "axios";
|
|
2
|
-
import { useAuthStore } from "
|
|
3
|
-
import { useAppConfig } from "
|
|
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 "
|
|
2
|
+
import { cn } from "../../lib/utils";
|
|
3
3
|
import { LucidePlusCircle } from "lucide-vue-next";
|
|
4
|
-
import BtnCircle from "
|
|
4
|
+
import BtnCircle from "../../components/button/BtnCircle.vue";
|
|
5
5
|
|
|
6
6
|
const props = defineProps(["class"]);
|
|
7
7
|
</script>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
import { Button } from '
|
|
3
|
-
import { cn } from '
|
|
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 "
|
|
3
|
-
import { cn } from "
|
|
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 '
|
|
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,
|
|
3
|
-
import DetailContentItem from "./DetailContentItem.vue";
|
|
4
|
-
import {
|
|
5
|
-
import type { ColumnRef } from "
|
|
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 "
|
|
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
|
|
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,
|
|
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
|
|
6
|
+
import { formatNumberIntl } from "../../lib/utils";
|
|
7
7
|
import { onMounted, computed, watch, ref } from "vue";
|
|
8
|
-
import { schemaMaping } from "
|
|
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,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 "
|
|
5
|
-
import ScrollArea from "
|
|
6
|
-
import { cn } from "
|
|
7
|
-
import DetailTimeline from "
|
|
8
|
-
import type { DasiV2FormSchema, FormSchema, FormSchemaHooks } from "
|
|
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 "
|
|
16
|
-
import { getPageDataDetail } from "
|
|
17
|
-
import { useErrorDialog } from "
|
|
18
|
-
import { InternalServerError } from "
|
|
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 "
|
|
2
|
+
import api from "../../api/api";
|
|
3
3
|
import moment from "moment";
|
|
4
4
|
import { onMounted, ref } from "vue";
|
|
5
|
-
import Skeleton from "
|
|
6
|
-
import { LucideEdit, LucideFileClock,
|
|
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 "
|
|
24
|
-
import { cn, isValidValue } from "
|
|
25
|
-
import { type ErrorDialogOptions } from "
|
|
26
|
-
import pdfLogo from "
|
|
27
|
-
import ConfirmDialog from "
|
|
28
|
-
import api from "
|
|
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 "
|
|
31
|
-
import { DialogDescription, DialogTitle } from "
|
|
32
|
-
import PdfViewer from "
|
|
33
|
-
import BtnCircle from "
|
|
34
|
-
import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger } from "
|
|
35
|
-
import LoadingIndicator from "
|
|
36
|
-
import { useConfirmDialog, useErrorDialog, useInfoDialog, useLoadingDialog, useSuccessDialog } from "
|
|
37
|
-
import type { DasiV2FormSchema } from "
|
|
38
|
-
import DetailContentLoading from "
|
|
39
|
-
import DetailContentHeader from "
|
|
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 "
|
|
42
|
-
import type { ColumnRef, PageConfig } from "
|
|
43
|
-
import { getPageDataDetail } from "
|
|
44
|
-
import { ScrollArea } from "
|
|
45
|
-
import DCI2 from "
|
|
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 "
|
|
3
|
-
import Input from "
|
|
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 "
|
|
5
|
+
import LucideIcon from "../../components/helper/LucideIcon.vue";
|
|
6
6
|
import BtnPrimary from "../button/BtnPrimary.vue";
|
|
7
|
-
import { cn } from "
|
|
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 "
|
|
3
|
-
import DialogFooter from "
|
|
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 "
|
|
4
|
+
import DialogClose from "../../components/ui/dialog/DialogClose.vue";
|
|
5
5
|
import { ref, watch } from "vue";
|
|
6
|
-
import ScrollArea from "
|
|
7
|
-
import BtnCircle from "
|
|
8
|
-
import BtnPrimary from "
|
|
9
|
-
import BtnSecondary from "
|
|
10
|
-
import LoadingIndicator from "
|
|
11
|
-
import CheckboxElement from "
|
|
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 "
|
|
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 "
|
|
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 "
|
|
16
|
-
import BtnPrimary from "
|
|
17
|
-
import BtnSecondary from "
|
|
18
|
-
import { cn } from "
|
|
19
|
-
import Skeleton from "
|
|
20
|
-
import BtnCircle from "
|
|
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 "
|
|
3
|
-
import { cn } from "
|
|
4
|
-
import BtnPrimary from "
|
|
5
|
-
import BtnSecondary from "
|
|
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 "
|
|
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 "
|
|
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 "
|
|
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 '
|
|
7
|
-
import BtnSecondary from '
|
|
8
|
-
import DialogClose from '
|
|
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');
|