@svadmin/ui 0.68.0 → 0.69.0

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 (315) hide show
  1. package/README.md +52 -0
  2. package/dist/app.css +7627 -853
  3. package/dist/app.theme.css +7676 -850
  4. package/dist/components/AboutSettings.svelte +8 -8
  5. package/dist/components/ActivityFeed.svelte +25 -40
  6. package/dist/components/AdminApp.svelte +14 -14
  7. package/dist/components/AnomalyBadge.svelte +6 -5
  8. package/dist/components/ApiSettings.svelte +8 -8
  9. package/dist/components/AppearanceSettings.svelte +13 -13
  10. package/dist/components/ApprovalActionCard.svelte +35 -35
  11. package/dist/components/AuditLogDrawer.svelte +17 -17
  12. package/dist/components/AuditLogViewer.svelte +42 -42
  13. package/dist/components/AuthPageShell.svelte +11 -11
  14. package/dist/components/AutoForm.svelte +28 -28
  15. package/dist/components/AutoSaveIndicator.svelte +8 -8
  16. package/dist/components/AutoTable.svelte +141 -141
  17. package/dist/components/BatchActionBar.svelte +15 -15
  18. package/dist/components/Breadcrumbs.svelte +4 -4
  19. package/dist/components/CancelTaskButton.svelte +2 -2
  20. package/dist/components/CanvasAnnotation.svelte +27 -27
  21. package/dist/components/Cascader.svelte +20 -20
  22. package/dist/components/CatchAllNavigate.svelte +2 -2
  23. package/dist/components/ColumnHeaderFilter.svelte +21 -21
  24. package/dist/components/ColumnSettings.svelte +20 -20
  25. package/dist/components/ComboboxField.svelte +17 -17
  26. package/dist/components/CommandPalette.svelte +23 -23
  27. package/dist/components/ConfigErrorScreen.svelte +27 -27
  28. package/dist/components/ConfirmDialog.svelte +1 -1
  29. package/dist/components/CreateInferencer.svelte +1 -1
  30. package/dist/components/CreatePage.svelte +1 -1
  31. package/dist/components/DecisionTable.svelte +39 -39
  32. package/dist/components/DetailDrawer.svelte +9 -9
  33. package/dist/components/DevTools.svelte +96 -96
  34. package/dist/components/DraggableGrid.svelte +6 -6
  35. package/dist/components/DraggableHeader.svelte +1 -1
  36. package/dist/components/DraggableRowTable.svelte +13 -13
  37. package/dist/components/DrawerForm.svelte +10 -10
  38. package/dist/components/DynamicFormList.svelte +19 -19
  39. package/dist/components/EditInferencer.svelte +3 -3
  40. package/dist/components/EditInferencer.svelte.d.ts +1 -1
  41. package/dist/components/EditPage.svelte +1 -1
  42. package/dist/components/EditableTable.svelte +30 -30
  43. package/dist/components/EmptyState.svelte +6 -6
  44. package/dist/components/ErrorBoundary.svelte +8 -8
  45. package/dist/components/ErrorComponent.svelte +5 -5
  46. package/dist/components/FieldRenderer.svelte +30 -30
  47. package/dist/components/FilterBuilder.svelte +31 -31
  48. package/dist/components/FilterDropdown.svelte +26 -26
  49. package/dist/components/ForgotPasswordPage.svelte +14 -14
  50. package/dist/components/GanttChart.svelte +30 -30
  51. package/dist/components/Header.svelte +13 -13
  52. package/dist/components/ImageCropper.svelte +21 -21
  53. package/dist/components/ImportWizard.svelte +49 -49
  54. package/dist/components/InferencerPanel.svelte +35 -35
  55. package/dist/components/InfiniteList.svelte +8 -8
  56. package/dist/components/InlineEdit.svelte +5 -5
  57. package/dist/components/IntegrationsSettings.svelte +5 -5
  58. package/dist/components/JsonSchemaForm.svelte +18 -18
  59. package/dist/components/KanbanBoard.svelte +30 -30
  60. package/dist/components/KeyboardShortcuts.svelte +8 -8
  61. package/dist/components/Layout.svelte +22 -22
  62. package/dist/components/LazyPage.svelte +4 -4
  63. package/dist/components/ListInferencer.svelte +2 -2
  64. package/dist/components/ListPage.svelte +1 -1
  65. package/dist/components/LiveIndicator.svelte +11 -11
  66. package/dist/components/LoginPage.svelte +27 -27
  67. package/dist/components/MasterDetailView.svelte +24 -24
  68. package/dist/components/MediaLibraryModal.svelte +37 -37
  69. package/dist/components/MentionsInput.svelte +11 -11
  70. package/dist/components/MetricStrip.svelte +18 -58
  71. package/dist/components/ModalForm.svelte +8 -8
  72. package/dist/components/MultiTabKeepAlive.svelte +14 -14
  73. package/dist/components/NavigateToResource.svelte +3 -3
  74. package/dist/components/NotificationsSettings.svelte +4 -4
  75. package/dist/components/OfflineSyncBanner.svelte +28 -28
  76. package/dist/components/PageHeader.svelte +12 -13
  77. package/dist/components/PageSkeleton.svelte +26 -26
  78. package/dist/components/PasswordInput.svelte +11 -11
  79. package/dist/components/PdfDocumentViewer.svelte +45 -45
  80. package/dist/components/PermissionMatrix.svelte +48 -48
  81. package/dist/components/PivotTable.svelte +21 -21
  82. package/dist/components/PresenceAvatarGroup.svelte +11 -11
  83. package/dist/components/PrintableBill.svelte +43 -43
  84. package/dist/components/ProfilePage.svelte +34 -34
  85. package/dist/components/RecordDetailDrawer.svelte +15 -15
  86. package/dist/components/RegisterPage.svelte +9 -9
  87. package/dist/components/ResourceInferencer.svelte +3 -3
  88. package/dist/components/ResourceOperationsPage.svelte +44 -44
  89. package/dist/components/RetryTaskButton.svelte +2 -2
  90. package/dist/components/RolesSettings.svelte +4 -4
  91. package/dist/components/RowActions.svelte +10 -10
  92. package/dist/components/SecuritySettings.svelte +8 -8
  93. package/dist/components/SensitiveDataMask.svelte +8 -8
  94. package/dist/components/SettingsPage.svelte +17 -17
  95. package/dist/components/ShowInferencer.svelte +3 -3
  96. package/dist/components/ShowInferencer.svelte.d.ts +1 -1
  97. package/dist/components/ShowPage.svelte +24 -24
  98. package/dist/components/Sidebar.svelte +63 -63
  99. package/dist/components/SidebarItem.svelte +35 -35
  100. package/dist/components/SignaturePad.svelte +16 -16
  101. package/dist/components/SplitPaneLayout.svelte +10 -10
  102. package/dist/components/SpreadsheetView.svelte +35 -35
  103. package/dist/components/StatsCard.svelte +12 -25
  104. package/dist/components/StepForm.svelte +23 -23
  105. package/dist/components/StepsForm.svelte +17 -17
  106. package/dist/components/SvadminLogo.svelte +1 -1
  107. package/dist/components/SystemPageShell.svelte +6 -6
  108. package/dist/components/TableSummary.svelte +8 -8
  109. package/dist/components/TaskDetails.svelte +29 -29
  110. package/dist/components/TaskList.svelte +17 -17
  111. package/dist/components/TaskProgressBar.svelte +4 -4
  112. package/dist/components/TaskQueueDrawer.svelte +44 -44
  113. package/dist/components/TaskStatusBadge.svelte +5 -5
  114. package/dist/components/TenantSwitcher.svelte +17 -17
  115. package/dist/components/ThemedTitle.svelte +4 -4
  116. package/dist/components/Toast.svelte +2 -2
  117. package/dist/components/Transfer.svelte +40 -40
  118. package/dist/components/TreeSelect.svelte +32 -32
  119. package/dist/components/TreeTable.svelte +28 -28
  120. package/dist/components/TwoFactorAuthPage.svelte +15 -15
  121. package/dist/components/UndoableNotification.svelte +10 -10
  122. package/dist/components/UpdatePasswordPage.svelte +6 -6
  123. package/dist/components/VersionDiffViewer.svelte +38 -38
  124. package/dist/components/VirtualTable.svelte +9 -9
  125. package/dist/components/Watermark.svelte +2 -2
  126. package/dist/components/account/CompanyProfilePage.svelte +4 -4
  127. package/dist/components/account/GetStartedPage.svelte +19 -19
  128. package/dist/components/account/ImportMembersPage.svelte +42 -42
  129. package/dist/components/account/MembersStarterPage.svelte +18 -18
  130. package/dist/components/account/SecurityLogPage.svelte +1 -1
  131. package/dist/components/account/SettingsEnterprisePage.svelte +7 -7
  132. package/dist/components/account/SettingsPlainPage.svelte +3 -3
  133. package/dist/components/account/SettingsSidebarPage.svelte +5 -5
  134. package/dist/components/account/TeamMembersPage.svelte +2 -2
  135. package/dist/components/account/UserProfilePage.svelte +3 -3
  136. package/dist/components/buttons/CloneButton.svelte +2 -2
  137. package/dist/components/buttons/CreateButton.svelte +2 -2
  138. package/dist/components/buttons/DeleteButton.svelte +4 -4
  139. package/dist/components/buttons/EditButton.svelte +2 -2
  140. package/dist/components/buttons/ExportButton.svelte +2 -2
  141. package/dist/components/buttons/ImportButton.svelte +3 -3
  142. package/dist/components/buttons/ListButton.svelte +2 -2
  143. package/dist/components/buttons/RefreshButton.svelte +2 -2
  144. package/dist/components/buttons/SaveButton.svelte +3 -3
  145. package/dist/components/buttons/ShowButton.svelte +2 -2
  146. package/dist/components/charts/BarChart.svelte +3 -3
  147. package/dist/components/charts/LineChart.svelte +3 -3
  148. package/dist/components/charts/PieChart.svelte +7 -7
  149. package/dist/components/content/ApiKeyList.svelte +12 -12
  150. package/dist/components/content/AuditTimeline.svelte +18 -18
  151. package/dist/components/content/ContentPageHeader.svelte +9 -9
  152. package/dist/components/content/ContentPageShell.svelte +2 -2
  153. package/dist/components/content/DataState.svelte +8 -8
  154. package/dist/components/content/DescriptionList.svelte +25 -25
  155. package/dist/components/content/FeedbackNotice.svelte +11 -11
  156. package/dist/components/content/FileList.svelte +2 -2
  157. package/dist/components/content/FilterToolbar.svelte +15 -15
  158. package/dist/components/content/ImportDropzone.svelte +6 -6
  159. package/dist/components/content/IntegrationCard.svelte +4 -4
  160. package/dist/components/content/MediaThumbnail.svelte +16 -16
  161. package/dist/components/content/MemberList.svelte +2 -2
  162. package/dist/components/content/MetricBlock.svelte +7 -7
  163. package/dist/components/content/NetworkTable.svelte +1 -1
  164. package/dist/components/content/NetworkUserCard.svelte +12 -12
  165. package/dist/components/content/OtpInput.svelte +2 -2
  166. package/dist/components/content/PageToolbar.svelte +3 -3
  167. package/dist/components/content/ProjectCard.svelte +11 -11
  168. package/dist/components/content/SectionHeader.svelte +5 -5
  169. package/dist/components/content/SecurityEventTable.svelte +2 -2
  170. package/dist/components/content/SettingsFieldRow.svelte +5 -5
  171. package/dist/components/content/SettingsGroup.svelte +7 -7
  172. package/dist/components/content/StatusBadge.svelte +6 -6
  173. package/dist/components/content/StatusTabs.svelte +28 -28
  174. package/dist/components/content/SystemErrorState.svelte +2 -2
  175. package/dist/components/content/TeamCard.svelte +6 -6
  176. package/dist/components/content/TwoFactorStepper.svelte +3 -3
  177. package/dist/components/content/WorkspaceActionBar.svelte +12 -12
  178. package/dist/components/content/WorkspaceInspector.svelte +11 -11
  179. package/dist/components/content/WorkspaceLayout.svelte +5 -5
  180. package/dist/components/content/WorkspaceSplitPane.svelte +4 -4
  181. package/dist/components/content/WorkspaceStageStepper.svelte +16 -16
  182. package/dist/components/content/WorkspaceTabBar.svelte +16 -16
  183. package/dist/components/fields/ArrayField.svelte +12 -12
  184. package/dist/components/fields/AvatarField.svelte +15 -15
  185. package/dist/components/fields/BooleanField.svelte +14 -14
  186. package/dist/components/fields/CodeField.svelte +10 -10
  187. package/dist/components/fields/CopyField.svelte +6 -6
  188. package/dist/components/fields/CurrencyField.svelte +6 -6
  189. package/dist/components/fields/DateField.svelte +1 -1
  190. package/dist/components/fields/DateRangeField.svelte +2 -2
  191. package/dist/components/fields/EmailField.svelte +2 -2
  192. package/dist/components/fields/FileField.svelte +3 -3
  193. package/dist/components/fields/ImageField.svelte +1 -1
  194. package/dist/components/fields/JsonField.svelte +11 -11
  195. package/dist/components/fields/MarkdownField.svelte +2 -2
  196. package/dist/components/fields/MultiSelectField.svelte +3 -3
  197. package/dist/components/fields/NumberField.svelte +1 -1
  198. package/dist/components/fields/PercentField.svelte +9 -9
  199. package/dist/components/fields/PhoneField.svelte +8 -8
  200. package/dist/components/fields/RatingField.svelte +10 -10
  201. package/dist/components/fields/RelationField.svelte +3 -3
  202. package/dist/components/fields/RichTextField.svelte +4 -4
  203. package/dist/components/fields/TagField.svelte +11 -11
  204. package/dist/components/fields/TextField.svelte +2 -2
  205. package/dist/components/fields/UrlField.svelte +3 -3
  206. package/dist/components/network/TeamCrewTablePage.svelte +2 -2
  207. package/dist/components/network/UserCardsNFTPage.svelte +1 -1
  208. package/dist/components/profile/ActivityTimeline.svelte +8 -8
  209. package/dist/components/profile/ProfileCard.svelte +47 -47
  210. package/dist/components/profile/ProfileVariantSections.svelte +158 -158
  211. package/dist/components/profile/ProjectsGrid.svelte +6 -6
  212. package/dist/components/profile/PublicProfilePage.svelte +6 -6
  213. package/dist/components/profile/TeamsShowcase.svelte +3 -3
  214. package/dist/components/ui/alert/alert-description.svelte +1 -1
  215. package/dist/components/ui/alert/alert-title.svelte +1 -1
  216. package/dist/components/ui/alert/alert-variants.d.ts +7 -0
  217. package/dist/components/ui/alert/alert-variants.js +2 -0
  218. package/dist/components/ui/alert/alert.svelte +4 -15
  219. package/dist/components/ui/alert/alert.svelte.d.ts +7 -24
  220. package/dist/components/ui/alert-dialog/alert-dialog-content.svelte +2 -2
  221. package/dist/components/ui/alert-dialog/alert-dialog-description.svelte +1 -1
  222. package/dist/components/ui/alert-dialog/alert-dialog-footer.svelte +1 -1
  223. package/dist/components/ui/alert-dialog/alert-dialog-header.svelte +1 -1
  224. package/dist/components/ui/alert-dialog/alert-dialog-overlay.svelte +1 -1
  225. package/dist/components/ui/alert-dialog/alert-dialog-title.svelte +1 -1
  226. package/dist/components/ui/avatar/avatar-variants.d.ts +7 -0
  227. package/dist/components/ui/avatar/avatar-variants.js +2 -0
  228. package/dist/components/ui/avatar/avatar.svelte +11 -20
  229. package/dist/components/ui/avatar/avatar.svelte.d.ts +12 -28
  230. package/dist/components/ui/badge/badge-variants.d.ts +7 -0
  231. package/dist/components/ui/badge/badge-variants.js +2 -0
  232. package/dist/components/ui/badge/badge.svelte +4 -24
  233. package/dist/components/ui/badge/badge.svelte.d.ts +7 -45
  234. package/dist/components/ui/breadcrumb/breadcrumb-ellipsis.svelte +3 -3
  235. package/dist/components/ui/breadcrumb/breadcrumb-item.svelte +1 -1
  236. package/dist/components/ui/breadcrumb/breadcrumb-link.svelte +1 -1
  237. package/dist/components/ui/breadcrumb/breadcrumb-list.svelte +1 -1
  238. package/dist/components/ui/breadcrumb/breadcrumb-page.svelte +1 -1
  239. package/dist/components/ui/breadcrumb/breadcrumb-separator.svelte +2 -2
  240. package/dist/components/ui/button/button-variants.d.ts +9 -0
  241. package/dist/components/ui/button/button-variants.js +3 -0
  242. package/dist/components/ui/button/button.svelte +12 -31
  243. package/dist/components/ui/button/button.svelte.d.ts +9 -61
  244. package/dist/components/ui/card/card-action.svelte +1 -4
  245. package/dist/components/ui/card/card-content.svelte +1 -1
  246. package/dist/components/ui/card/card-description.svelte +1 -1
  247. package/dist/components/ui/card/card-footer.svelte +1 -1
  248. package/dist/components/ui/card/card-header.svelte +1 -4
  249. package/dist/components/ui/card/card-title.svelte +1 -1
  250. package/dist/components/ui/card/card.svelte +1 -1
  251. package/dist/components/ui/checkbox/checkbox.svelte +2 -5
  252. package/dist/components/ui/command/command-dialog.svelte +3 -3
  253. package/dist/components/ui/command/command-empty.svelte +1 -1
  254. package/dist/components/ui/command/command-group.svelte +2 -2
  255. package/dist/components/ui/command/command-input.svelte +1 -4
  256. package/dist/components/ui/command/command-item.svelte +1 -4
  257. package/dist/components/ui/command/command-list.svelte +1 -1
  258. package/dist/components/ui/command/command-separator.svelte +1 -1
  259. package/dist/components/ui/command/command.svelte +1 -4
  260. package/dist/components/ui/dialog/dialog-content.svelte +3 -3
  261. package/dist/components/ui/dialog/dialog-description.svelte +1 -1
  262. package/dist/components/ui/dialog/dialog-footer.svelte +1 -1
  263. package/dist/components/ui/dialog/dialog-header.svelte +1 -1
  264. package/dist/components/ui/dialog/dialog-overlay.svelte +1 -1
  265. package/dist/components/ui/dialog/dialog-title.svelte +1 -1
  266. package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte +2 -5
  267. package/dist/components/ui/dropdown-menu/dropdown-menu-content.svelte +1 -6
  268. package/dist/components/ui/dropdown-menu/dropdown-menu-item.svelte +3 -9
  269. package/dist/components/ui/dropdown-menu/dropdown-menu-separator.svelte +1 -1
  270. package/dist/components/ui/dropdown-menu/dropdown-menu.svelte +1 -1
  271. package/dist/components/ui/input/input.svelte +3 -2
  272. package/dist/components/ui/label/label.svelte +1 -4
  273. package/dist/components/ui/navigation-menu/navigation-menu-content.svelte +1 -5
  274. package/dist/components/ui/navigation-menu/navigation-menu-indicator.svelte +2 -5
  275. package/dist/components/ui/navigation-menu/navigation-menu-item.svelte +1 -1
  276. package/dist/components/ui/navigation-menu/navigation-menu-link.svelte +1 -4
  277. package/dist/components/ui/navigation-menu/navigation-menu-list.svelte +1 -1
  278. package/dist/components/ui/navigation-menu/navigation-menu-trigger.svelte +2 -5
  279. package/dist/components/ui/navigation-menu/navigation-menu-viewport.svelte +2 -5
  280. package/dist/components/ui/navigation-menu/navigation-menu.svelte +1 -1
  281. package/dist/components/ui/pagination/pagination-content.svelte +1 -1
  282. package/dist/components/ui/pagination/pagination-ellipsis.svelte +3 -3
  283. package/dist/components/ui/pagination/pagination-link.svelte +3 -0
  284. package/dist/components/ui/pagination/pagination-next.svelte +5 -2
  285. package/dist/components/ui/pagination/pagination-previous.svelte +5 -2
  286. package/dist/components/ui/pagination/pagination.svelte +1 -1
  287. package/dist/components/ui/popover/popover-content.svelte +1 -4
  288. package/dist/components/ui/progress/progress.svelte +2 -2
  289. package/dist/components/ui/scroll-area/scroll-area.svelte +3 -4
  290. package/dist/components/ui/select/select.svelte +1 -2
  291. package/dist/components/ui/separator/separator.svelte +1 -6
  292. package/dist/components/ui/sheet/sheet-content.svelte +1 -4
  293. package/dist/components/ui/sheet/sheet-description.svelte +1 -1
  294. package/dist/components/ui/sheet/sheet-footer.svelte +1 -1
  295. package/dist/components/ui/sheet/sheet-header.svelte +1 -1
  296. package/dist/components/ui/sheet/sheet-title.svelte +1 -1
  297. package/dist/components/ui/sheet/sheet.svelte +5 -10
  298. package/dist/components/ui/skeleton/skeleton.svelte +1 -1
  299. package/dist/components/ui/switch/switch.svelte +2 -9
  300. package/dist/components/ui/table/table-caption.svelte +1 -1
  301. package/dist/components/ui/table/table-cell.svelte +8 -11
  302. package/dist/components/ui/table/table-footer.svelte +1 -1
  303. package/dist/components/ui/table/table-head.svelte +1 -11
  304. package/dist/components/ui/table/table-header.svelte +1 -1
  305. package/dist/components/ui/table/table-row.svelte +2 -2
  306. package/dist/components/ui/table/table-row.svelte.d.ts +1 -1
  307. package/dist/components/ui/table/table.svelte +2 -2
  308. package/dist/components/ui/tabs/tabs-content.svelte +1 -1
  309. package/dist/components/ui/tabs/tabs-list.svelte +1 -4
  310. package/dist/components/ui/tabs/tabs-trigger.svelte +1 -7
  311. package/dist/components/ui/tabs/tabs.svelte +1 -1
  312. package/dist/components/ui/textarea/textarea.svelte +1 -4
  313. package/dist/components/ui/tooltip/tooltip-content.svelte +1 -1
  314. package/dist/page-chrome.css +228 -0
  315. package/package.json +14 -9
@@ -36,43 +36,43 @@
36
36
  function getStatusBadgeVariant(status?: string) {
37
37
  switch (status) {
38
38
  case 'completed':
39
- return 'bg-success/15 text-success border-success/30';
39
+ return 'svadmin-u-4cf5af8d25d3 svadmin-u-76747e5e02ff svadmin-u-18a6e7a36f29';
40
40
  case 'delayed':
41
- return 'bg-destructive/15 text-destructive border-destructive/30';
41
+ return 'svadmin-u-c698f77c9ba5 svadmin-u-811148b13d1e svadmin-u-9d5d8b4711b4';
42
42
  case 'in_progress':
43
- return 'bg-primary/15 text-primary border-primary/30';
43
+ return 'svadmin-u-30f13f694038 svadmin-u-20aaf08a7ed1 svadmin-u-05f954a846d6';
44
44
  default:
45
- return 'bg-muted text-muted-foreground border-border/40';
45
+ return 'svadmin-u-2ef11f1cb219 svadmin-u-bfa603190748 svadmin-u-6ee2d41e2d2d';
46
46
  }
47
47
  }
48
48
 
49
49
  function getBarColor(status?: string) {
50
50
  switch (status) {
51
51
  case 'completed':
52
- return 'bg-success text-success-foreground';
52
+ return 'svadmin-u-3355648fe22b svadmin-u-5a1ab9dd55a5';
53
53
  case 'delayed':
54
- return 'bg-destructive text-destructive-foreground';
54
+ return 'svadmin-u-fb1b0d05046d svadmin-u-00e05b9a87d5';
55
55
  default:
56
- return 'bg-primary text-primary-foreground';
56
+ return 'svadmin-u-75b1bec3ea0e svadmin-u-30ca335ae9c2';
57
57
  }
58
58
  }
59
59
  </script>
60
60
 
61
- <div class={cn('rounded-xl border border-border bg-card p-4 shadow-xs text-xs space-y-3', className)}>
62
- <div class="flex items-center justify-between pb-2 border-b border-border/60">
63
- <div class="font-semibold text-foreground">
64
- Project Gantt Schedule <span class="text-muted-foreground font-normal">({tasks.length} tasks / {totalDays} days)</span>
61
+ <div class={cn('svadmin-u-a217b4eaa918 svadmin-u-ca6bcd4b6f3f svadmin-u-18049387f0af svadmin-u-cd0ad9a56558 svadmin-u-8e63407b5ceb svadmin-u-cef5b893cf23 svadmin-u-359090c2d529 svadmin-u-6ed543e2fbbb', className)}>
62
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-8ef2268efbbc svadmin-u-f4cc511ff0c1 svadmin-u-65fdbade2025 svadmin-u-05faf5c801ff">
63
+ <div class="svadmin-u-e83a7042bc91 svadmin-u-d4108abe6359">
64
+ Project Gantt Schedule <span class="svadmin-u-bfa603190748 svadmin-u-8ecebc9f80e6">({tasks.length} tasks / {totalDays} days)</span>
65
65
  </div>
66
66
  </div>
67
67
 
68
- <div class="overflow-x-auto rounded-lg border border-border/60">
69
- <div class="min-w-[700px]">
68
+ <div class="svadmin-u-1384f66f41d0 svadmin-u-5f22e64f2282 svadmin-u-ca6bcd4b6f3f svadmin-u-05faf5c801ff">
69
+ <div class="svadmin-u-c05fcc7c4caa">
70
70
  <!-- Timeline Header -->
71
- <div class="flex border-b border-border/60 bg-muted/40 font-semibold text-muted-foreground">
72
- <div class="w-56 p-2.5 border-r border-border/60 text-left shrink-0">Task Name</div>
73
- <div class="flex-1 flex">
71
+ <div class="svadmin-u-60fbb7713999 svadmin-u-65fdbade2025 svadmin-u-05faf5c801ff svadmin-u-b00f43c30c2b svadmin-u-e83a7042bc91 svadmin-u-bfa603190748">
72
+ <div class="svadmin-u-d16aae848835 svadmin-u-9fe52d5d506c svadmin-u-5ceb636bd9f3 svadmin-u-05faf5c801ff svadmin-u-2eba0d65d059 svadmin-u-012fbd121f37">Task Name</div>
73
+ <div class="svadmin-u-36e579c0b41c svadmin-u-60fbb7713999">
74
74
  {#each days as day (day)}
75
- <div class="flex-1 p-2 text-center border-r border-border/40 text-[11px] font-mono last:border-r-0">
75
+ <div class="svadmin-u-36e579c0b41c svadmin-u-7660b450905a svadmin-u-ca6bf63030aa svadmin-u-5ceb636bd9f3 svadmin-u-6ee2d41e2d2d svadmin-u-d058ca6de60f svadmin-u-0e65706bcccd svadmin-u-bb5b5fc23bd9">
76
76
  {day}
77
77
  </div>
78
78
  {/each}
@@ -80,40 +80,40 @@
80
80
  </div>
81
81
 
82
82
  <!-- Task Rows -->
83
- <div class="divide-y divide-border/40">
83
+ <div class="svadmin-u-fa6acbf81d74 svadmin-u-08b5607c7258">
84
84
  {#each tasks as task (task.id)}
85
85
  {@const leftPct = (task.startDay / totalDays) * 100}
86
86
  {@const widthPct = (task.durationDays / totalDays) * 100}
87
87
  <div
88
88
  role="button"
89
89
  tabindex="0"
90
- class="flex items-center hover:bg-muted/20 transition-colors cursor-pointer"
90
+ class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-c4b5eaba40e3 svadmin-u-ceb69a6b0e5f svadmin-u-34516836730d"
91
91
  onclick={() => onselecttask?.(task)}
92
92
  onkeydown={(e) => { if (e.key === 'Enter') onselecttask?.(task); }}
93
93
  >
94
94
  <!-- Task Info Column -->
95
- <div class="w-56 p-2.5 border-r border-border/60 flex items-center justify-between gap-2 shrink-0">
96
- <div class="truncate font-medium text-foreground">{task.title}</div>
95
+ <div class="svadmin-u-d16aae848835 svadmin-u-9fe52d5d506c svadmin-u-5ceb636bd9f3 svadmin-u-05faf5c801ff svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-8ef2268efbbc svadmin-u-77a2a20e90d4 svadmin-u-012fbd121f37">
96
+ <div class="svadmin-u-f283ea9bea0e svadmin-u-2689f3958069 svadmin-u-d4108abe6359">{task.title}</div>
97
97
  {#if task.status}
98
- <Badge variant="outline" class={cn('text-[9px] px-1 py-0 uppercase', getStatusBadgeVariant(task.status))}>
98
+ <Badge variant="outline" class={cn('svadmin-u-e09880869d1f svadmin-u-d8e0e382c67b svadmin-u-68ecb30dbec6 uppercase', getStatusBadgeVariant(task.status))}>
99
99
  {task.status}
100
100
  </Badge>
101
101
  {/if}
102
102
  </div>
103
103
 
104
104
  <!-- Task Bar Grid Area -->
105
- <div class="flex-1 relative h-10 flex items-center px-1">
105
+ <div class="svadmin-u-36e579c0b41c svadmin-u-d89972fe17d6 svadmin-u-426b8b75185b svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-d8e0e382c67b">
106
106
  <!-- Grid vertical guideline background -->
107
- <div class="absolute inset-0 flex pointer-events-none">
107
+ <div class="svadmin-u-da4dbfbc4fdc svadmin-u-7b7df0449b80 svadmin-u-60fbb7713999 svadmin-u-a4326536b8f5">
108
108
  {#each days as _, idx (idx)}
109
- <div class="flex-1 border-r border-border/20 last:border-r-0"></div>
109
+ <div class="svadmin-u-36e579c0b41c svadmin-u-5ceb636bd9f3 svadmin-u-d528c7381898 svadmin-u-bb5b5fc23bd9"></div>
110
110
  {/each}
111
111
  </div>
112
112
 
113
113
  <!-- Bar element -->
114
114
  <div
115
115
  class={cn(
116
- 'relative h-6 rounded-md shadow-xs flex items-center justify-between px-2 text-[10px] font-medium overflow-hidden transition-all group hover:brightness-110',
116
+ 'svadmin-u-d89972fe17d6 svadmin-u-f6fe902450dc svadmin-u-421ac2be5045 svadmin-u-cef5b893cf23 svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-8ef2268efbbc svadmin-u-d5eab218aa34 svadmin-u-1dc571a3609f svadmin-u-2689f3958069 svadmin-u-2cd02d11d1af svadmin-u-0fe7d7d814d0 group svadmin-u-7703298183eb',
117
117
  getBarColor(task.status)
118
118
  )}
119
119
  style={`margin-left: ${leftPct}%; width: ${Math.max(widthPct, 4)}%;`}
@@ -121,14 +121,14 @@
121
121
  <!-- Inner progress fill -->
122
122
  {#if task.progress !== undefined}
123
123
  <div
124
- class="absolute inset-y-0 left-0 bg-foreground/20 pointer-events-none"
124
+ class="svadmin-u-da4dbfbc4fdc svadmin-u-5f89f14a26db svadmin-u-c78facc7a0a6 svadmin-u-99d459b1015d svadmin-u-a4326536b8f5"
125
125
  style={`width: ${task.progress}%;`}
126
126
  ></div>
127
127
  {/if}
128
128
 
129
- <span class="truncate relative z-10">{task.title}</span>
129
+ <span class="svadmin-u-f283ea9bea0e svadmin-u-d89972fe17d6 svadmin-u-236812d64c82">{task.title}</span>
130
130
  {#if task.progress !== undefined}
131
- <span class="relative z-10 text-[9px] opacity-90 font-mono">{task.progress}%</span>
131
+ <span class="svadmin-u-d89972fe17d6 svadmin-u-236812d64c82 svadmin-u-e09880869d1f svadmin-u-4f5874c554b6 svadmin-u-0e65706bcccd">{task.progress}%</span>
132
132
  {/if}
133
133
  </div>
134
134
  </div>
@@ -136,7 +136,7 @@
136
136
  {/each}
137
137
 
138
138
  {#if tasks.length === 0}
139
- <div class="py-8 text-center text-muted-foreground">No schedule tasks available</div>
139
+ <div class="svadmin-u-a1f611f027dd svadmin-u-ca6bf63030aa svadmin-u-bfa603190748">No schedule tasks available</div>
140
140
  {/if}
141
141
  </div>
142
142
  </div>
@@ -40,8 +40,8 @@
40
40
  const CustomNotificationPanel = registry.NotificationPanel;
41
41
  </script>
42
42
 
43
- <header class="sticky top-0 z-30 flex h-[70px] w-full shrink-0 items-center justify-between border-b border-border/40 bg-background/95 backdrop-blur-sm px-4 md:px-6">
44
- <div class="flex items-center gap-4">
43
+ <header class="svadmin-u-3e0fd166d494 svadmin-u-2167406b24d7 svadmin-u-0f2fff0ae96e svadmin-u-60fbb7713999 svadmin-u-07017cde3e97 svadmin-u-6da6a3c3f741 svadmin-u-012fbd121f37 svadmin-u-3960ffc248d9 svadmin-u-8ef2268efbbc svadmin-u-65fdbade2025 svadmin-u-6ee2d41e2d2d svadmin-u-16d6f96aa157 svadmin-u-1ca6dd1e47c4 svadmin-u-f0faeb26d656 svadmin-u-8a3831239aa5">
44
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-0c3bc98565dd">
45
45
  {#if children}
46
46
  {@render children()}
47
47
  {/if}
@@ -53,14 +53,14 @@
53
53
  {/if}
54
54
  {/if}
55
55
  </div>
56
- <div class="ml-auto flex items-center gap-2">
56
+ <div class="svadmin-u-fb56d9cff341 svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-77a2a20e90d4">
57
57
  {#if rightActions}
58
58
  {@render rightActions()}
59
59
  {/if}
60
60
 
61
61
  {#if siteUrl}
62
- <TooltipButton tooltip={i18n.t('common.goToSite') || 'Site'} href={siteUrl} target="_blank" rel="noopener noreferrer" class="rounded-full flex items-center justify-center">
63
- <MonitorUp class="h-4 w-4 text-muted-foreground transition-colors hover:text-foreground" />
62
+ <TooltipButton tooltip={i18n.t('common.goToSite') || 'Site'} href={siteUrl} target="_blank" rel="noopener noreferrer" class="svadmin-u-ac204c108886 svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-86843cf1e227">
63
+ <MonitorUp class="svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3 svadmin-u-bfa603190748 svadmin-u-ceb69a6b0e5f svadmin-u-ea7b2e9e070e" />
64
64
  </TooltipButton>
65
65
  {/if}
66
66
 
@@ -69,11 +69,11 @@
69
69
  {/if}
70
70
 
71
71
  {#if showSearch && onSearchClick}
72
- <Button variant="outline" size="sm" onclick={onSearchClick} class="gap-2 text-muted-foreground h-9 px-3 rounded-lg border-border/60">
73
- <Search class="h-3.5 w-3.5" />
74
- <span class="hidden sm:inline text-xs">{i18n.t('common.search')}</span>
75
- <kbd class="hidden sm:inline-flex items-center gap-0.5 rounded border bg-muted/60 px-1.5 py-0.5 text-[10px] font-medium font-mono text-muted-foreground">
76
- <span class="text-xs">⌘</span>K
72
+ <Button variant="outline" size="sm" onclick={onSearchClick} class="svadmin-u-77a2a20e90d4 svadmin-u-bfa603190748 svadmin-u-e7a768f922d2 svadmin-u-0e17f2bd9074 svadmin-u-5f22e64f2282 svadmin-u-05faf5c801ff">
73
+ <Search class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c" />
74
+ <span class="svadmin-u-99d72c7fc3e2 svadmin-u-ee3c1259a368 svadmin-u-359090c2d529">{i18n.t('common.search')}</span>
75
+ <kbd class="svadmin-u-99d72c7fc3e2 svadmin-u-e3fd07f96126 svadmin-u-3960ffc248d9 svadmin-u-a3899220f90e svadmin-u-07389a777c1f svadmin-u-ca6bcd4b6f3f svadmin-u-706701550477 svadmin-u-45d828117213 svadmin-u-465609a240a8 svadmin-u-1dc571a3609f svadmin-u-2689f3958069 svadmin-u-0e65706bcccd svadmin-u-bfa603190748">
76
+ <span class="svadmin-u-359090c2d529">⌘</span>K
77
77
  </kbd>
78
78
  </Button>
79
79
  {/if}
@@ -82,11 +82,11 @@
82
82
  {#if CustomThemeToggle}
83
83
  <CustomThemeToggle />
84
84
  {:else}
85
- <TooltipButton tooltip={i18n.t('common.toggleTheme')} onclick={() => toggleTheme()} class="rounded-full">
85
+ <TooltipButton tooltip={i18n.t('common.toggleTheme')} onclick={() => toggleTheme()} class="svadmin-u-ac204c108886">
86
86
  {#if getResolvedTheme() === 'dark'}
87
- <Moon class="h-4 w-4 transition-all" />
87
+ <Moon class="svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3 svadmin-u-0fe7d7d814d0" />
88
88
  {:else}
89
- <Sun class="h-4 w-4 transition-all" />
89
+ <Sun class="svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3 svadmin-u-0fe7d7d814d0" />
90
90
  {/if}
91
91
  </TooltipButton>
92
92
  {/if}
@@ -56,67 +56,67 @@
56
56
  }
57
57
  </script>
58
58
 
59
- <div class={cn('rounded-xl border border-border bg-card p-4 shadow-xs space-y-4 text-xs', className)}>
60
- <div class="flex items-center justify-between pb-2 border-b border-border/60">
61
- <h4 class="font-semibold text-foreground flex items-center gap-1.5">
62
- <Crop class="h-4 w-4 text-primary" />
59
+ <div class={cn('svadmin-u-a217b4eaa918 svadmin-u-ca6bcd4b6f3f svadmin-u-18049387f0af svadmin-u-cd0ad9a56558 svadmin-u-8e63407b5ceb svadmin-u-cef5b893cf23 svadmin-u-3e7ce58d64fa svadmin-u-359090c2d529', className)}>
60
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-8ef2268efbbc svadmin-u-f4cc511ff0c1 svadmin-u-65fdbade2025 svadmin-u-05faf5c801ff">
61
+ <h4 class="svadmin-u-e83a7042bc91 svadmin-u-d4108abe6359 svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-58284b4ea568">
62
+ <Crop class="svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3 svadmin-u-20aaf08a7ed1" />
63
63
  Image Cropper
64
64
  </h4>
65
65
  </div>
66
66
 
67
67
  <!-- Crop Viewport -->
68
- <div class="relative flex items-center justify-center h-64 w-full rounded-lg bg-muted/40 border border-border/60 overflow-hidden select-none">
68
+ <div class="svadmin-u-d89972fe17d6 svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-86843cf1e227 svadmin-u-14ce684b980b svadmin-u-6da6a3c3f741 svadmin-u-5f22e64f2282 svadmin-u-b00f43c30c2b svadmin-u-ca6bcd4b6f3f svadmin-u-05faf5c801ff svadmin-u-2cd02d11d1af svadmin-u-7f6912283f11">
69
69
  <div
70
70
  style="transform: scale({zoom}) rotate({rotation}deg); transition: transform 150ms ease;"
71
- class="max-h-56 max-w-56 flex items-center justify-center"
71
+ class="svadmin-u-520bb7118c41 svadmin-u-0497cfa907ee svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-86843cf1e227"
72
72
  >
73
- <img src={imageUrl} alt="Crop Preview" class="object-contain max-h-56 max-w-56 rounded pointer-events-none" />
73
+ <img src={imageUrl} alt="Crop Preview" class="svadmin-u-b1104f41444a svadmin-u-520bb7118c41 svadmin-u-0497cfa907ee svadmin-u-07389a777c1f svadmin-u-a4326536b8f5" />
74
74
  </div>
75
75
 
76
76
  <!-- Aspect Ratio Overlay Grid -->
77
77
  <div
78
78
  style="aspect-ratio: {aspectRatio};"
79
- class="absolute w-48 border-2 border-primary/80 rounded pointer-events-none shadow-[0_0_0_9999px_rgba(0,0,0,0.45)]"
79
+ class="svadmin-u-da4dbfbc4fdc svadmin-u-74b2435a1d40 svadmin-u-65935df577ba svadmin-u-a127a4f41a7d svadmin-u-07389a777c1f svadmin-u-a4326536b8f5 svadmin-u-09deafdfd7f5"
80
80
  ></div>
81
81
  </div>
82
82
 
83
83
  <!-- Controls Bar -->
84
- <div class="flex items-center justify-between gap-3 pt-2">
85
- <div class="flex items-center gap-2">
84
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-8ef2268efbbc svadmin-u-1004c0c3954c svadmin-u-f46b61a9b310">
85
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-77a2a20e90d4">
86
86
  <Button
87
87
  variant="outline"
88
88
  size="sm"
89
- class="h-7 text-xs gap-1"
89
+ class="svadmin-u-d0a52b312f7d svadmin-u-359090c2d529 svadmin-u-44ee8ba0a421"
90
90
  onclick={() => { zoom = Math.max(0.5, Number((zoom - 0.1).toFixed(1))); }}
91
91
  >
92
- <ZoomOut class="h-3 w-3" />
92
+ <ZoomOut class="svadmin-u-6a60c09e6aaa svadmin-u-9cea05671a29" />
93
93
  </Button>
94
- <span class="tabular-nums font-mono text-[11px] text-muted-foreground w-10 text-center">{Math.round(zoom * 100)}%</span>
94
+ <span class="svadmin-u-3032cae0badb svadmin-u-0e65706bcccd svadmin-u-d058ca6de60f svadmin-u-bfa603190748 svadmin-u-d854e5698b57 svadmin-u-ca6bf63030aa">{Math.round(zoom * 100)}%</span>
95
95
  <Button
96
96
  variant="outline"
97
97
  size="sm"
98
- class="h-7 text-xs gap-1"
98
+ class="svadmin-u-d0a52b312f7d svadmin-u-359090c2d529 svadmin-u-44ee8ba0a421"
99
99
  onclick={() => { zoom = Math.min(3, Number((zoom + 0.1).toFixed(1))); }}
100
100
  >
101
- <ZoomIn class="h-3 w-3" />
101
+ <ZoomIn class="svadmin-u-6a60c09e6aaa svadmin-u-9cea05671a29" />
102
102
  </Button>
103
103
 
104
- <Button variant="outline" size="sm" class="h-7 text-xs gap-1 ml-2" onclick={handleRotate}>
105
- <RotateCw class="h-3 w-3" />
104
+ <Button variant="outline" size="sm" class="svadmin-u-d0a52b312f7d svadmin-u-359090c2d529 svadmin-u-44ee8ba0a421 svadmin-u-c68af9986751" onclick={handleRotate}>
105
+ <RotateCw class="svadmin-u-6a60c09e6aaa svadmin-u-9cea05671a29" />
106
106
  Rotate
107
107
  </Button>
108
108
  </div>
109
109
 
110
- <div class="flex items-center gap-2">
110
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-77a2a20e90d4">
111
111
  {#if oncancel}
112
- <Button variant="outline" size="sm" class="h-7 text-xs" onclick={oncancel}>Cancel</Button>
112
+ <Button variant="outline" size="sm" class="svadmin-u-d0a52b312f7d svadmin-u-359090c2d529" onclick={oncancel}>Cancel</Button>
113
113
  {/if}
114
- <Button size="sm" class="h-7 text-xs gap-1" onclick={handleCrop}>
114
+ <Button size="sm" class="svadmin-u-d0a52b312f7d svadmin-u-359090c2d529 svadmin-u-44ee8ba0a421" onclick={handleCrop}>
115
115
  Apply Crop
116
116
  </Button>
117
117
  </div>
118
118
  </div>
119
119
 
120
120
  <!-- Hidden Working Canvas -->
121
- <canvas bind:this={canvasEl} class="hidden"></canvas>
121
+ <canvas bind:this={canvasEl} class="svadmin-u-99d72c7fc3e2"></canvas>
122
122
  </div>
@@ -180,50 +180,50 @@
180
180
 
181
181
  {#if open}
182
182
  <Dialog.Dialog bind:open>
183
- <Dialog.DialogContent class="sm:max-w-2xl max-h-[85vh] overflow-y-auto">
183
+ <Dialog.DialogContent class="svadmin-u-fde8b650ab2d svadmin-u-c3c9f24b386b svadmin-u-92bf82f493b1">
184
184
  <Dialog.DialogHeader>
185
- <Dialog.DialogTitle class="flex items-center gap-2">
186
- <FileSpreadsheet class="h-5 w-5 text-primary" />
185
+ <Dialog.DialogTitle class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-77a2a20e90d4">
186
+ <FileSpreadsheet class="svadmin-u-cd0d9c512cdc svadmin-u-72470489ff4e svadmin-u-20aaf08a7ed1" />
187
187
  <span>{i18n.t('common.import', { defaultValue: 'Import' })} {resource.label}</span>
188
188
  </Dialog.DialogTitle>
189
189
  </Dialog.DialogHeader>
190
190
 
191
191
  <!-- Step Indicator -->
192
- <div class="flex items-center justify-between text-xs font-medium text-muted-foreground pb-2 border-b border-border/50">
193
- <span class={currentStep === 1 ? 'text-primary font-semibold' : ''}>1. {i18n.t('common.uploadFile', { defaultValue: 'Upload File' })}</span>
192
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-8ef2268efbbc svadmin-u-359090c2d529 svadmin-u-2689f3958069 svadmin-u-bfa603190748 svadmin-u-f4cc511ff0c1 svadmin-u-65fdbade2025 svadmin-u-591f378e24a1">
193
+ <span class={currentStep === 1 ? 'svadmin-u-20aaf08a7ed1 svadmin-u-e83a7042bc91' : ''}>1. {i18n.t('common.uploadFile', { defaultValue: 'Upload File' })}</span>
194
194
  <span>→</span>
195
- <span class={currentStep === 2 ? 'text-primary font-semibold' : ''}>2. {i18n.t('common.mapColumns', { defaultValue: 'Map Columns' })}</span>
195
+ <span class={currentStep === 2 ? 'svadmin-u-20aaf08a7ed1 svadmin-u-e83a7042bc91' : ''}>2. {i18n.t('common.mapColumns', { defaultValue: 'Map Columns' })}</span>
196
196
  <span>→</span>
197
- <span class={currentStep === 3 ? 'text-primary font-semibold' : ''}>3. {i18n.t('common.importProgress', { defaultValue: 'Import & Verify' })}</span>
197
+ <span class={currentStep === 3 ? 'svadmin-u-20aaf08a7ed1 svadmin-u-e83a7042bc91' : ''}>3. {i18n.t('common.importProgress', { defaultValue: 'Import & Verify' })}</span>
198
198
  </div>
199
199
 
200
200
  <!-- Step 1: Upload -->
201
201
  {#if currentStep === 1}
202
202
  <div
203
- class="border-2 border-dashed border-border/80 hover:border-primary/60 rounded-xl p-8 text-center transition-colors cursor-pointer bg-muted/20"
203
+ class="svadmin-u-65935df577ba svadmin-u-a29b7a649c77 svadmin-u-c9ed8c5f79ae svadmin-u-8b9d5d768973 svadmin-u-a217b4eaa918 svadmin-u-845f53365c8d svadmin-u-ca6bf63030aa svadmin-u-ceb69a6b0e5f svadmin-u-34516836730d svadmin-u-967d113a1451"
204
204
  ondragover={(e) => e.preventDefault()}
205
205
  ondrop={handleDrop}
206
206
  role="region"
207
207
  aria-label="Upload Dropzone"
208
208
  >
209
- <Upload class="h-10 w-10 mx-auto text-muted-foreground/60 mb-3" />
210
- <p class="text-sm font-medium text-foreground mb-1">
209
+ <Upload class="svadmin-u-426b8b75185b svadmin-u-d854e5698b57 svadmin-u-0e12dc7de920 svadmin-u-7be4d67a6256 svadmin-u-1bb883263ed2" />
210
+ <p class="svadmin-u-fc7473ca09eb svadmin-u-2689f3958069 svadmin-u-d4108abe6359 svadmin-u-65281709dacf">
211
211
  {i18n.t('common.dropFileHere', { defaultValue: 'Drag and drop CSV or JSON file here' })}
212
212
  </p>
213
- <p class="text-xs text-muted-foreground mb-4">
213
+ <p class="svadmin-u-359090c2d529 svadmin-u-bfa603190748 svadmin-u-da019856f2cc">
214
214
  {i18n.t('common.fileFormatHint', { defaultValue: 'Supports .csv, .json with UTF-8 encoding' })}
215
215
  </p>
216
- <label class="inline-flex">
216
+ <label class="svadmin-u-52083e7da442">
217
217
  <input
218
218
  type="file"
219
219
  accept=".csv,.json"
220
- class="hidden"
220
+ class="svadmin-u-99d72c7fc3e2"
221
221
  onchange={(e) => {
222
222
  const target = e.currentTarget;
223
223
  if (target.files?.[0]) handleFileSelect(target.files[0]);
224
224
  }}
225
225
  />
226
- <span class="inline-flex items-center justify-center rounded-md bg-primary px-4 py-2 text-xs font-medium text-primary-foreground shadow hover:bg-primary/90 cursor-pointer">
226
+ <span class="svadmin-u-52083e7da442 svadmin-u-3960ffc248d9 svadmin-u-86843cf1e227 svadmin-u-421ac2be5045 svadmin-u-75b1bec3ea0e svadmin-u-f0faeb26d656 svadmin-u-03b4dd7f172b svadmin-u-359090c2d529 svadmin-u-2689f3958069 svadmin-u-30ca335ae9c2 svadmin-u-ed9d3d832af8 svadmin-u-7bfcf1d0e0fa svadmin-u-34516836730d">
227
227
  {i18n.t('common.selectFile', { defaultValue: 'Browse File' })}
228
228
  </span>
229
229
  </label>
@@ -232,26 +232,26 @@
232
232
 
233
233
  <!-- Step 2: Column Mapping -->
234
234
  {#if currentStep === 2}
235
- <div class="space-y-4">
236
- <div class="flex items-center justify-between text-xs text-muted-foreground bg-muted/30 p-2.5 rounded-lg border border-border/60">
237
- <span>{i18n.t('common.detectedRows', { defaultValue: 'Detected' })}: <strong class="text-foreground">{rawRows.length}</strong> {i18n.t('common.records', { defaultValue: 'records' })}</span>
238
- <Badge variant="secondary" class="text-[11px] font-mono">{fileName}</Badge>
235
+ <div class="svadmin-u-3e7ce58d64fa">
236
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-8ef2268efbbc svadmin-u-359090c2d529 svadmin-u-bfa603190748 svadmin-u-2859c861d7de svadmin-u-9fe52d5d506c svadmin-u-5f22e64f2282 svadmin-u-ca6bcd4b6f3f svadmin-u-05faf5c801ff">
237
+ <span>{i18n.t('common.detectedRows', { defaultValue: 'Detected' })}: <strong class="svadmin-u-d4108abe6359">{rawRows.length}</strong> {i18n.t('common.records', { defaultValue: 'records' })}</span>
238
+ <Badge variant="secondary" class="svadmin-u-d058ca6de60f svadmin-u-0e65706bcccd">{fileName}</Badge>
239
239
  </div>
240
240
 
241
- <div class="max-h-72 overflow-y-auto space-y-2 pr-1 border border-border/40 rounded-lg p-2">
241
+ <div class="svadmin-u-ff4d2db0e22a svadmin-u-92bf82f493b1 svadmin-u-6f7e013d6499 svadmin-u-eda955402ba6 svadmin-u-ca6bcd4b6f3f svadmin-u-6ee2d41e2d2d svadmin-u-5f22e64f2282 svadmin-u-7660b450905a">
242
242
  {#each rawHeaders as header (header)}
243
- <div class="flex items-center justify-between gap-3 p-2 rounded-md bg-card border border-border/40 text-xs">
244
- <div class="flex-1 truncate">
245
- <span class="font-medium text-foreground">{header}</span>
243
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-8ef2268efbbc svadmin-u-1004c0c3954c svadmin-u-7660b450905a svadmin-u-421ac2be5045 svadmin-u-cd0ad9a56558 svadmin-u-ca6bcd4b6f3f svadmin-u-6ee2d41e2d2d svadmin-u-359090c2d529">
244
+ <div class="svadmin-u-36e579c0b41c svadmin-u-f283ea9bea0e">
245
+ <span class="svadmin-u-2689f3958069 svadmin-u-d4108abe6359">{header}</span>
246
246
  {#if rawRows[0]}
247
- <span class="block text-[11px] text-muted-foreground truncate opacity-70">
247
+ <span class="svadmin-u-0214b4b355d1 svadmin-u-d058ca6de60f svadmin-u-bfa603190748 svadmin-u-f283ea9bea0e svadmin-u-0c67ca474a69">
248
248
  Sample: {rawRows[0][rawHeaders.indexOf(header)] ?? '—'}
249
249
  </span>
250
250
  {/if}
251
251
  </div>
252
- <div class="w-48 shrink-0">
252
+ <div class="svadmin-u-74b2435a1d40 svadmin-u-012fbd121f37">
253
253
  <select
254
- class="h-8 w-full rounded-md border border-input bg-background px-2 text-xs focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring"
254
+ class="svadmin-u-ed8a5df7b2fb svadmin-u-6da6a3c3f741 svadmin-u-421ac2be5045 svadmin-u-ca6bcd4b6f3f svadmin-u-e5795dad4d22 svadmin-u-e6f9e383a762 svadmin-u-d5eab218aa34 svadmin-u-359090c2d529 svadmin-u-f10f771f87e9 svadmin-u-3e94a98e1466 svadmin-u-9c1295a6914a"
255
255
  bind:value={columnMapping[header]}
256
256
  >
257
257
  <option value="">— {i18n.t('common.ignoreColumn', { defaultValue: 'Ignore' })} —</option>
@@ -266,14 +266,14 @@
266
266
  {/each}
267
267
  </div>
268
268
 
269
- <div class="flex items-center justify-between pt-2">
269
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-8ef2268efbbc svadmin-u-f46b61a9b310">
270
270
  <Button variant="outline" size="sm" onclick={() => { currentStep = 1; }}>
271
- <ArrowLeft class="h-3.5 w-3.5 mr-1" />
271
+ <ArrowLeft class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c svadmin-u-618162408e7a" />
272
272
  {i18n.t('common.back', { defaultValue: 'Back' })}
273
273
  </Button>
274
274
  <Button size="sm" onclick={startImport}>
275
275
  {i18n.t('common.startImport', { defaultValue: 'Start Import' })}
276
- <ArrowRight class="h-3.5 w-3.5 ml-1" />
276
+ <ArrowRight class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c svadmin-u-f58b02572ab2" />
277
277
  </Button>
278
278
  </div>
279
279
  </div>
@@ -281,40 +281,40 @@
281
281
 
282
282
  <!-- Step 3: Progress & Summary -->
283
283
  {#if currentStep === 3}
284
- <div class="space-y-5 py-2">
285
- <div class="space-y-2">
286
- <div class="flex items-center justify-between text-xs">
287
- <span class="text-muted-foreground">{isImporting ? i18n.t('common.importing', { defaultValue: 'Importing...' }) : i18n.t('common.completed', { defaultValue: 'Completed' })}</span>
288
- <span class="font-semibold text-foreground tabular-nums">{progressPercent}%</span>
284
+ <div class="svadmin-u-b43b4c086d9a svadmin-u-03b4dd7f172b">
285
+ <div class="svadmin-u-6f7e013d6499">
286
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-8ef2268efbbc svadmin-u-359090c2d529">
287
+ <span class="svadmin-u-bfa603190748">{isImporting ? i18n.t('common.importing', { defaultValue: 'Importing...' }) : i18n.t('common.completed', { defaultValue: 'Completed' })}</span>
288
+ <span class="svadmin-u-e83a7042bc91 svadmin-u-d4108abe6359 svadmin-u-3032cae0badb">{progressPercent}%</span>
289
289
  </div>
290
- <Progress value={progressPercent} class="h-2" />
290
+ <Progress value={progressPercent} class="svadmin-u-2f2a842e50fa" />
291
291
  </div>
292
292
 
293
- <div class="grid grid-cols-2 gap-3 text-center">
294
- <div class="p-3 rounded-lg bg-success/10 border border-success/20">
295
- <span class="text-xs text-muted-foreground block">{i18n.t('common.succeeded', { defaultValue: 'Succeeded' })}</span>
296
- <span class="text-xl font-bold text-success tabular-nums">{succeededCount}</span>
293
+ <div class="svadmin-u-f3c543ad5fe9 svadmin-u-8e75e3db482b svadmin-u-1004c0c3954c svadmin-u-ca6bf63030aa">
294
+ <div class="svadmin-u-eb6e8b881acd svadmin-u-5f22e64f2282 svadmin-u-17a9f7af2265 svadmin-u-ca6bcd4b6f3f svadmin-u-95b7dea5a67f">
295
+ <span class="svadmin-u-359090c2d529 svadmin-u-bfa603190748 svadmin-u-0214b4b355d1">{i18n.t('common.succeeded', { defaultValue: 'Succeeded' })}</span>
296
+ <span class="svadmin-u-d5c9b0001e7e svadmin-u-69450ef1487e svadmin-u-76747e5e02ff svadmin-u-3032cae0badb">{succeededCount}</span>
297
297
  </div>
298
- <div class="p-3 rounded-lg bg-destructive/10 border border-destructive/20">
299
- <span class="text-xs text-muted-foreground block">{i18n.t('common.failed', { defaultValue: 'Failed' })}</span>
300
- <span class="text-xl font-bold text-destructive tabular-nums">{failedRecords.length}</span>
298
+ <div class="svadmin-u-eb6e8b881acd svadmin-u-5f22e64f2282 svadmin-u-43928fcc832f svadmin-u-ca6bcd4b6f3f svadmin-u-f0c1e65bd6f2">
299
+ <span class="svadmin-u-359090c2d529 svadmin-u-bfa603190748 svadmin-u-0214b4b355d1">{i18n.t('common.failed', { defaultValue: 'Failed' })}</span>
300
+ <span class="svadmin-u-d5c9b0001e7e svadmin-u-69450ef1487e svadmin-u-811148b13d1e svadmin-u-3032cae0badb">{failedRecords.length}</span>
301
301
  </div>
302
302
  </div>
303
303
 
304
304
  {#if failedRecords.length > 0}
305
- <div class="flex items-center justify-between p-3 rounded-lg bg-destructive/5 border border-destructive/15 text-xs">
306
- <div class="flex items-center gap-2 text-destructive">
307
- <AlertCircle class="h-4 w-4" />
305
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-8ef2268efbbc svadmin-u-eb6e8b881acd svadmin-u-5f22e64f2282 svadmin-u-7a0854fdbc30 svadmin-u-ca6bcd4b6f3f svadmin-u-e09a917c4c3b svadmin-u-359090c2d529">
306
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-77a2a20e90d4 svadmin-u-811148b13d1e">
307
+ <AlertCircle class="svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3" />
308
308
  <span>{failedRecords.length} {i18n.t('common.failedRowsHint', { defaultValue: 'records failed to import.' })}</span>
309
309
  </div>
310
- <Button variant="outline" size="sm" class="h-7 text-xs gap-1" onclick={downloadErrors}>
311
- <Download class="h-3.5 w-3.5" />
310
+ <Button variant="outline" size="sm" class="svadmin-u-d0a52b312f7d svadmin-u-359090c2d529 svadmin-u-44ee8ba0a421" onclick={downloadErrors}>
311
+ <Download class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c" />
312
312
  {i18n.t('common.downloadErrors', { defaultValue: 'Download Failed CSV' })}
313
313
  </Button>
314
314
  </div>
315
315
  {/if}
316
316
 
317
- <div class="flex items-center justify-end gap-2 pt-3 border-t border-border/50">
317
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-77c08e015d14 svadmin-u-77a2a20e90d4 svadmin-u-ce335a8e4f56 svadmin-u-b950dda299d3 svadmin-u-591f378e24a1">
318
318
  {#if !isImporting}
319
319
  <Button variant="outline" size="sm" onclick={reset}>
320
320
  {i18n.t('common.importAnother', { defaultValue: 'Import Another' })}
@@ -323,8 +323,8 @@
323
323
  {i18n.t('common.close', { defaultValue: 'Close' })}
324
324
  </Button>
325
325
  {:else}
326
- <Button size="sm" disabled class="gap-2">
327
- <Loader2 class="h-3.5 w-3.5 animate-spin" />
326
+ <Button size="sm" disabled class="svadmin-u-77a2a20e90d4">
327
+ <Loader2 class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c svadmin-u-afbdd13a380e" />
328
328
  {i18n.t('common.processing', { defaultValue: 'Processing...' })}
329
329
  </Button>
330
330
  {/if}