@svadmin/ui 0.68.1 → 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 +12 -7
@@ -215,13 +215,13 @@
215
215
  <Button
216
216
  variant="ghost"
217
217
  size="icon"
218
- class="relative"
218
+ class="svadmin-u-d89972fe17d6"
219
219
  onclick={() => open = !open}
220
220
  aria-label={resolvedTitle}
221
221
  >
222
- <ListTodo class="h-4 w-4" />
222
+ <ListTodo class="svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3" />
223
223
  {#if runningCount > 0}
224
- <span class="absolute -top-0.5 -right-0.5 flex h-4 w-4 items-center justify-center rounded-full bg-primary text-[10px] font-bold text-primary-foreground">
224
+ <span class="svadmin-u-da4dbfbc4fdc svadmin-u-2a95a5f480f7 svadmin-u-4c15f4f8c5ab svadmin-u-60fbb7713999 svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3 svadmin-u-3960ffc248d9 svadmin-u-86843cf1e227 svadmin-u-ac204c108886 svadmin-u-75b1bec3ea0e svadmin-u-1dc571a3609f svadmin-u-69450ef1487e svadmin-u-30ca335ae9c2">
225
225
  {runningCount}
226
226
  </span>
227
227
  {/if}
@@ -230,65 +230,65 @@
230
230
  <Sheet.Root
231
231
  bind:open
232
232
  side="right"
233
- class="w-full max-w-6xl border-l border-border bg-card p-0"
233
+ class="svadmin-u-6da6a3c3f741 svadmin-u-1d4402dfae51 svadmin-u-d4f78465b34d svadmin-u-18049387f0af svadmin-u-cd0ad9a56558 svadmin-u-8a539c7fe216"
234
234
  role="dialog"
235
235
  aria-modal="true"
236
236
  aria-labelledby="svadmin-task-queue-title"
237
237
  onClose={() => open = false}
238
238
  >
239
- <Sheet.Content class="h-full gap-0 p-0">
240
- <div class="flex h-full flex-col">
241
- <div class="border-b border-border bg-muted/30 px-4 py-3">
242
- <Sheet.Title id="svadmin-task-queue-title" class="sr-only">{resolvedTitle}</Sheet.Title>
243
- <div class="flex flex-wrap items-center gap-2">
244
- <ListTodo class="h-5 w-5 text-muted-foreground" />
245
- <h2 class="text-sm font-semibold">{resolvedTitle}</h2>
246
- <Badge variant="secondary" class="text-xs">{i18n.t('task.activeCount', { count: runningCount })}</Badge>
239
+ <Sheet.Content class="svadmin-u-668b21aa5409 svadmin-u-63a285be6490 svadmin-u-8a539c7fe216">
240
+ <div class="svadmin-u-60fbb7713999 svadmin-u-668b21aa5409 svadmin-u-8dddea0773ed">
241
+ <div class="svadmin-u-65fdbade2025 svadmin-u-18049387f0af svadmin-u-2859c861d7de svadmin-u-f0faeb26d656 svadmin-u-1b2d54a3fd12">
242
+ <Sheet.Title id="svadmin-task-queue-title" class="svadmin-u-2daa8e5e2f2e">{resolvedTitle}</Sheet.Title>
243
+ <div class="svadmin-u-60fbb7713999 svadmin-u-1eb5c6df38c1 svadmin-u-3960ffc248d9 svadmin-u-77a2a20e90d4">
244
+ <ListTodo class="svadmin-u-cd0d9c512cdc svadmin-u-72470489ff4e svadmin-u-bfa603190748" />
245
+ <h2 class="svadmin-u-fc7473ca09eb svadmin-u-e83a7042bc91">{resolvedTitle}</h2>
246
+ <Badge variant="secondary" class="svadmin-u-359090c2d529">{i18n.t('task.activeCount', { count: runningCount })}</Badge>
247
247
  {#if allTasks[0] && resolveTaskCreatedAt(allTasks[0])}
248
- <span class="text-xs text-muted-foreground">{i18n.t('task.lastQueuedAt', { time: formatTime(resolveTaskCreatedAt(allTasks[0])) })}</span>
248
+ <span class="svadmin-u-359090c2d529 svadmin-u-bfa603190748">{i18n.t('task.lastQueuedAt', { time: formatTime(resolveTaskCreatedAt(allTasks[0])) })}</span>
249
249
  {/if}
250
250
  </div>
251
251
  </div>
252
252
 
253
253
  {#if !taskProvider}
254
- <div class="flex flex-1 items-center justify-center p-6 text-sm text-muted-foreground">
254
+ <div class="svadmin-u-60fbb7713999 svadmin-u-36e579c0b41c svadmin-u-3960ffc248d9 svadmin-u-86843cf1e227 svadmin-u-0478c89a150f svadmin-u-fc7473ca09eb svadmin-u-bfa603190748">
255
255
  {i18n.t('common.configRequired')}
256
256
  </div>
257
257
  {:else}
258
- <div class="grid min-h-0 flex-1 gap-0 lg:grid-cols-[minmax(0,1.2fr)_minmax(340px,0.8fr)]">
259
- <div class="min-h-0 overflow-auto border-b border-border lg:border-b-0 lg:border-r">
260
- <div class="space-y-4 p-4">
261
- <div class="flex flex-col gap-3">
262
- <div class="flex flex-wrap items-center gap-2">
263
- <Tabs.Root value={activeTab} class="w-full">
264
- <Tabs.List class="inline-flex rounded-lg border border-border bg-muted/40 p-1">
258
+ <div class="svadmin-u-f3c543ad5fe9 svadmin-u-fb7302e5364d svadmin-u-36e579c0b41c svadmin-u-63a285be6490 svadmin-u-bac517ea5f0f">
259
+ <div class="svadmin-u-fb7302e5364d svadmin-u-73fc3fb18ceb svadmin-u-65fdbade2025 svadmin-u-18049387f0af svadmin-u-e2f2b4a69d35 svadmin-u-64a6e3fce6e0">
260
+ <div class="svadmin-u-3e7ce58d64fa svadmin-u-8e63407b5ceb">
261
+ <div class="svadmin-u-60fbb7713999 svadmin-u-8dddea0773ed svadmin-u-1004c0c3954c">
262
+ <div class="svadmin-u-60fbb7713999 svadmin-u-1eb5c6df38c1 svadmin-u-3960ffc248d9 svadmin-u-77a2a20e90d4">
263
+ <Tabs.Root value={activeTab} class="svadmin-u-6da6a3c3f741">
264
+ <Tabs.List class="svadmin-u-52083e7da442 svadmin-u-5f22e64f2282 svadmin-u-ca6bcd4b6f3f svadmin-u-18049387f0af svadmin-u-b00f43c30c2b svadmin-u-eb6a3cef9686">
265
265
  <Tabs.Trigger value="tasks" active={activeTab === 'tasks'} onclick={() => activeTab = 'tasks'}>
266
266
  {i18n.t('task.tabTasks')}
267
- <Badge variant="outline" class="ml-1 text-[10px]">{taskQuery.data?.total ?? allTasks.length}</Badge>
267
+ <Badge variant="outline" class="svadmin-u-f58b02572ab2 svadmin-u-1dc571a3609f">{taskQuery.data?.total ?? allTasks.length}</Badge>
268
268
  </Tabs.Trigger>
269
269
  <Tabs.Trigger value="dlq" active={activeTab === 'dlq'} onclick={() => activeTab = 'dlq'}>
270
270
  {i18n.t('task.tabDlq')}
271
- <Badge variant="outline" class="ml-1 text-[10px]">{dlqQuery.data?.total ?? dlqTasks.length}</Badge>
271
+ <Badge variant="outline" class="svadmin-u-f58b02572ab2 svadmin-u-1dc571a3609f">{dlqQuery.data?.total ?? dlqTasks.length}</Badge>
272
272
  </Tabs.Trigger>
273
273
  </Tabs.List>
274
274
  </Tabs.Root>
275
- <div class="ml-auto flex items-center gap-2">
275
+ <div class="svadmin-u-fb56d9cff341 svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-77a2a20e90d4">
276
276
  <Button variant="outline" size="sm" onclick={() => void refreshCurrentTab()}>
277
- <RefreshCw class="mr-1.5 h-3.5 w-3.5" />
277
+ <RefreshCw class="svadmin-u-82cc6c6581cd svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c" />
278
278
  {i18n.t('common.refresh')}
279
279
  </Button>
280
280
  <Button size="sm" onclick={() => submitOpen = !submitOpen}>
281
- <Plus class="mr-1.5 h-3.5 w-3.5" />
281
+ <Plus class="svadmin-u-82cc6c6581cd svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c" />
282
282
  {i18n.t('task.submitAction')}
283
283
  </Button>
284
284
  </div>
285
285
  </div>
286
286
 
287
- <div class="grid gap-3 md:grid-cols-[minmax(0,1fr)_180px_160px]">
288
- <div class="relative">
289
- <Search class="pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground" />
287
+ <div class="svadmin-u-f3c543ad5fe9 svadmin-u-1004c0c3954c svadmin-u-d05bf7110c88">
288
+ <div class="svadmin-u-d89972fe17d6">
289
+ <Search class="svadmin-u-a4326536b8f5 svadmin-u-da4dbfbc4fdc svadmin-u-22e59b722111 svadmin-u-d694ba66e322 svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3 svadmin-u-36b381be4df3 svadmin-u-bfa603190748" />
290
290
  <Input
291
- class="pl-9"
291
+ class="svadmin-u-9e83b2412bc9"
292
292
  placeholder={i18n.t('task.searchPlaceholder')}
293
293
  bind:value={searchQuery}
294
294
  />
@@ -309,34 +309,34 @@
309
309
  </div>
310
310
 
311
311
  {#if submitOpen}
312
- <Card.Root class="border-border/60 shadow-none">
313
- <Card.Header class="pb-3">
314
- <Card.Title class="text-base">{i18n.t('task.submitTitle')}</Card.Title>
312
+ <Card.Root class="svadmin-u-05faf5c801ff svadmin-u-ad47d17e603c">
313
+ <Card.Header class="svadmin-u-7fcf9124b5df">
314
+ <Card.Title class="svadmin-u-4ee734926ff6">{i18n.t('task.submitTitle')}</Card.Title>
315
315
  <Card.Description>{i18n.t('task.submitDescription')}</Card.Description>
316
316
  </Card.Header>
317
- <Card.Content class="space-y-4 pt-0">
318
- <div class="space-y-2">
317
+ <Card.Content class="svadmin-u-3e7ce58d64fa svadmin-u-9335c39f6eff">
318
+ <div class="svadmin-u-6f7e013d6499">
319
319
  <Label for="task-name">{i18n.t('task.taskNameLabel')}</Label>
320
320
  <Input id="task-name" bind:value={submitTaskName} placeholder="image.generate" />
321
321
  </div>
322
- <div class="space-y-2">
322
+ <div class="svadmin-u-6f7e013d6499">
323
323
  <Label for="task-idempotency-key">{i18n.t('task.idempotencyKeyLabel')}</Label>
324
324
  <Input id="task-idempotency-key" bind:value={submitIdempotencyKey} placeholder="poster-2026-04-19" />
325
325
  </div>
326
- <div class="space-y-2">
326
+ <div class="svadmin-u-6f7e013d6499">
327
327
  <Label for="task-body">{i18n.t('task.bodyLabel')}</Label>
328
- <Textarea id="task-body" bind:value={submitBodyText} class="min-h-[140px] font-mono text-xs" />
328
+ <Textarea id="task-body" bind:value={submitBodyText} class="svadmin-u-ee15a477cd9c svadmin-u-0e65706bcccd svadmin-u-359090c2d529" />
329
329
  </div>
330
330
  {#if submitError}
331
- <p class="text-sm text-destructive">{submitError}</p>
331
+ <p class="svadmin-u-fc7473ca09eb svadmin-u-811148b13d1e">{submitError}</p>
332
332
  {/if}
333
- <div class="flex flex-wrap justify-end gap-2">
333
+ <div class="svadmin-u-60fbb7713999 svadmin-u-1eb5c6df38c1 svadmin-u-77c08e015d14 svadmin-u-77a2a20e90d4">
334
334
  <Button variant="ghost" onclick={() => { submitOpen = false; submitError = null; }}>
335
335
  {i18n.t('common.cancel')}
336
336
  </Button>
337
337
  <Button onclick={() => void handleSubmitTask()} disabled={submitTask.mutation.isPending}>
338
338
  {#if submitTask.mutation.isPending}
339
- <Loader2 class="mr-1.5 h-3.5 w-3.5 animate-spin" />
339
+ <Loader2 class="svadmin-u-82cc6c6581cd svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c svadmin-u-afbdd13a380e" />
340
340
  {/if}
341
341
  {i18n.t('task.submitAction')}
342
342
  </Button>
@@ -358,8 +358,8 @@
358
358
  </div>
359
359
  </div>
360
360
 
361
- <div class="min-h-0 overflow-auto bg-muted/10">
362
- <div class="p-4">
361
+ <div class="svadmin-u-fb7302e5364d svadmin-u-73fc3fb18ceb svadmin-u-8a25a995eb8e">
362
+ <div class="svadmin-u-8e63407b5ceb">
363
363
  {#if selectedTaskId}
364
364
  <TaskDetails
365
365
  taskId={selectedTaskId}
@@ -371,7 +371,7 @@
371
371
  }}
372
372
  />
373
373
  {:else}
374
- <div class="flex h-full items-center justify-center rounded-lg border border-dashed border-border/60 bg-background/70 p-8 text-center text-sm text-muted-foreground">
374
+ <div class="svadmin-u-60fbb7713999 svadmin-u-668b21aa5409 svadmin-u-3960ffc248d9 svadmin-u-86843cf1e227 svadmin-u-5f22e64f2282 svadmin-u-ca6bcd4b6f3f svadmin-u-a29b7a649c77 svadmin-u-05faf5c801ff svadmin-u-8417db9333ae svadmin-u-845f53365c8d svadmin-u-ca6bf63030aa svadmin-u-fc7473ca09eb svadmin-u-bfa603190748">
375
375
  {i18n.t('task.selectHint')}
376
376
  </div>
377
377
  {/if}
@@ -34,14 +34,14 @@
34
34
  label: translateStatus(normalizedStatus),
35
35
  variant: 'default' as const,
36
36
  icon: Loader2,
37
- iconClass: 'animate-spin',
37
+ iconClass: 'svadmin-u-afbdd13a380e',
38
38
  };
39
39
  case 'completed':
40
40
  return {
41
41
  label: translateStatus(normalizedStatus),
42
42
  variant: 'secondary' as const,
43
43
  icon: CheckCircle2,
44
- iconClass: 'text-success',
44
+ iconClass: 'svadmin-u-76747e5e02ff',
45
45
  };
46
46
  case 'failed':
47
47
  return {
@@ -55,7 +55,7 @@
55
55
  label: translateStatus(normalizedStatus),
56
56
  variant: 'outline' as const,
57
57
  icon: Ban,
58
- iconClass: 'text-muted-foreground',
58
+ iconClass: 'svadmin-u-bfa603190748',
59
59
  };
60
60
  case 'queued':
61
61
  return {
@@ -77,9 +77,9 @@
77
77
  const Icon = $derived(config.icon);
78
78
  </script>
79
79
 
80
- <Badge variant={config.variant} class={`gap-1.5 ${className}`.trim()}>
80
+ <Badge variant={config.variant} class={`svadmin-u-58284b4ea568 ${className}`.trim()}>
81
81
  {#if showIcon}
82
- <Icon class={`h-3.5 w-3.5 ${config.iconClass}`.trim()} />
82
+ <Icon class={`svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c ${config.iconClass}`.trim()} />
83
83
  {/if}
84
84
  <span>{config.label}</span>
85
85
  </Badge>
@@ -33,49 +33,49 @@
33
33
  <button
34
34
  type="button"
35
35
  {...props}
36
- class="flex w-full items-center gap-3 rounded-lg px-3 py-2 text-left transition-colors hover:bg-sidebar-accent/50
37
- {collapsed ? 'justify-center' : ''}"
36
+ class="svadmin-u-60fbb7713999 svadmin-u-6da6a3c3f741 svadmin-u-3960ffc248d9 svadmin-u-1004c0c3954c svadmin-u-5f22e64f2282 svadmin-u-0e17f2bd9074 svadmin-u-03b4dd7f172b svadmin-u-2eba0d65d059 svadmin-u-ceb69a6b0e5f svadmin-u-55d1f8b9d318
37
+ {collapsed ? 'svadmin-u-86843cf1e227' : ''}"
38
38
  >
39
- <div class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-primary/10 text-primary text-sm font-bold">
39
+ <div class="svadmin-u-60fbb7713999 svadmin-u-ed8a5df7b2fb svadmin-u-2bbcfc3b5179 svadmin-u-012fbd121f37 svadmin-u-3960ffc248d9 svadmin-u-86843cf1e227 svadmin-u-5f22e64f2282 svadmin-u-375dc44df6e9 svadmin-u-20aaf08a7ed1 svadmin-u-fc7473ca09eb svadmin-u-69450ef1487e">
40
40
  {#if currentTenant?.logo}
41
- <img src={currentTenant.logo} alt={currentTenant.name} class="h-full w-full rounded-lg object-cover" />
41
+ <img src={currentTenant.logo} alt={currentTenant.name} class="svadmin-u-668b21aa5409 svadmin-u-6da6a3c3f741 svadmin-u-5f22e64f2282 svadmin-u-7d85d0c21a32" />
42
42
  {:else}
43
- <Building2 class="h-4 w-4" />
43
+ <Building2 class="svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3" />
44
44
  {/if}
45
45
  </div>
46
46
  {#if !collapsed}
47
- <div class="flex-1 min-w-0">
48
- <p class="truncate text-sm font-semibold text-sidebar-foreground">{currentTenant?.name ?? 'Select'}</p>
49
- <p class="truncate text-[10px] text-sidebar-foreground/50">Workspace</p>
47
+ <div class="svadmin-u-36e579c0b41c svadmin-u-7e0b7cdf1a94">
48
+ <p class="svadmin-u-f283ea9bea0e svadmin-u-fc7473ca09eb svadmin-u-e83a7042bc91 svadmin-u-a7a63217e098">{currentTenant?.name ?? 'Select'}</p>
49
+ <p class="svadmin-u-f283ea9bea0e svadmin-u-1dc571a3609f svadmin-u-68d55a736ff4">Workspace</p>
50
50
  </div>
51
- <ChevronsUpDown class="h-4 w-4 shrink-0 text-sidebar-foreground/40" />
51
+ <ChevronsUpDown class="svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3 svadmin-u-012fbd121f37 svadmin-u-3e3534b4c5df" />
52
52
  {/if}
53
53
  </button>
54
54
  {/snippet}
55
55
  </DropdownMenu.Trigger>
56
- <DropdownMenu.Content class="w-56">
56
+ <DropdownMenu.Content class="svadmin-u-d16aae848835">
57
57
  {#if headerSnippet}
58
- <div class="px-2 py-1.5">
58
+ <div class="svadmin-u-d5eab218aa34 svadmin-u-ec0091ee009b">
59
59
  {@render headerSnippet()}
60
60
  </div>
61
61
  <DropdownMenu.Separator />
62
62
  {/if}
63
- <div class="px-2 py-1.5 text-xs text-muted-foreground">Workspaces</div>
63
+ <div class="svadmin-u-d5eab218aa34 svadmin-u-ec0091ee009b svadmin-u-359090c2d529 svadmin-u-bfa603190748">Workspaces</div>
64
64
  {#each tenants as tenant, _i (_i)}
65
65
  <DropdownMenu.Item
66
- class="flex items-center gap-3 cursor-pointer"
66
+ class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-1004c0c3954c svadmin-u-34516836730d"
67
67
  onclick={() => selectTenant(tenant.id)}
68
68
  >
69
- <div class="flex h-6 w-6 shrink-0 items-center justify-center rounded bg-primary/10 text-primary text-xs font-bold">
69
+ <div class="svadmin-u-60fbb7713999 svadmin-u-f6fe902450dc svadmin-u-7ec10f86d9b1 svadmin-u-012fbd121f37 svadmin-u-3960ffc248d9 svadmin-u-86843cf1e227 svadmin-u-07389a777c1f svadmin-u-375dc44df6e9 svadmin-u-20aaf08a7ed1 svadmin-u-359090c2d529 svadmin-u-69450ef1487e">
70
70
  {#if tenant.logo}
71
- <img src={tenant.logo} alt={tenant.name} class="h-full w-full rounded object-cover" />
71
+ <img src={tenant.logo} alt={tenant.name} class="svadmin-u-668b21aa5409 svadmin-u-6da6a3c3f741 svadmin-u-07389a777c1f svadmin-u-7d85d0c21a32" />
72
72
  {:else}
73
73
  {tenant.name.charAt(0).toUpperCase()}
74
74
  {/if}
75
75
  </div>
76
- <span class="flex-1 truncate">{tenant.name}</span>
76
+ <span class="svadmin-u-36e579c0b41c svadmin-u-f283ea9bea0e">{tenant.name}</span>
77
77
  {#if tenant.id === currentTenant?.id}
78
- <Check class="h-4 w-4 text-primary" />
78
+ <Check class="svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3 svadmin-u-20aaf08a7ed1" />
79
79
  {/if}
80
80
  </DropdownMenu.Item>
81
81
  {/each}
@@ -18,15 +18,15 @@
18
18
  const titleIcon = $derived(icon ?? adminOptions.title?.icon);
19
19
  </script>
20
20
 
21
- <div class="flex items-center gap-2 {wrapperStyles}">
21
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-77a2a20e90d4 {wrapperStyles}">
22
22
  {#if titleIcon}
23
- <img src={titleIcon} alt="" class="h-6 w-6 shrink-0" />
23
+ <img src={titleIcon} alt="" class="svadmin-u-f6fe902450dc svadmin-u-7ec10f86d9b1 svadmin-u-012fbd121f37" />
24
24
  {:else}
25
- <div class="flex h-7 w-7 items-center justify-center rounded-lg bg-primary text-primary-foreground text-sm font-bold">
25
+ <div class="svadmin-u-60fbb7713999 svadmin-u-d0a52b312f7d svadmin-u-cbbf90f9a828 svadmin-u-3960ffc248d9 svadmin-u-86843cf1e227 svadmin-u-5f22e64f2282 svadmin-u-75b1bec3ea0e svadmin-u-30ca335ae9c2 svadmin-u-fc7473ca09eb svadmin-u-69450ef1487e">
26
26
  {titleText.charAt(0).toUpperCase()}
27
27
  </div>
28
28
  {/if}
29
29
  {#if !collapsed}
30
- <span class="text-lg font-semibold text-foreground truncate">{titleText}</span>
30
+ <span class="svadmin-u-42536e69e639 svadmin-u-e83a7042bc91 svadmin-u-d4108abe6359 svadmin-u-f283ea9bea0e">{titleText}</span>
31
31
  {/if}
32
32
  </div>
@@ -61,7 +61,7 @@
61
61
  theme,
62
62
  toastOptions: {
63
63
  classes: {
64
- toast: 'font-sans',
64
+ toast: 'svadmin-u-79bf1259388b',
65
65
  },
66
66
  }
67
67
  } satisfies ToasterProps);
@@ -80,7 +80,7 @@
80
80
  {#if isActiveHost}
81
81
  <Toaster {...toasterProps} />
82
82
  <div
83
- class="pointer-events-none fixed bottom-4 left-4 right-4 z-[100] flex flex-col-reverse gap-2 sm:bottom-6 sm:left-1/2 sm:right-auto sm:w-[min(32rem,calc(100vw-3rem))] sm:-translate-x-1/2"
83
+ class="svadmin-u-a4326536b8f5 svadmin-u-7bc555991dba svadmin-u-c1b9bd611950 svadmin-u-b2e7cc55921c svadmin-u-5a438c30beec svadmin-u-db5a366a0e21 svadmin-u-60fbb7713999 svadmin-u-aa6c1169cd77 svadmin-u-77a2a20e90d4 svadmin-u-6dfb687ea917 svadmin-u-5540f3495030 svadmin-u-9673d11dbf8a svadmin-u-dd317c20a8aa svadmin-u-8bd891360308"
84
84
  data-svadmin-undo-stack
85
85
  >
86
86
  {#each getToasts().slice(-3) as item (item.id)}
@@ -154,48 +154,48 @@
154
154
  }
155
155
  </script>
156
156
 
157
- <div class={cn('flex flex-col sm:flex-row items-center gap-3 w-full', className)} data-testid="transfer">
157
+ <div class={cn('svadmin-u-60fbb7713999 svadmin-u-8dddea0773ed svadmin-u-020ba687fa12 svadmin-u-3960ffc248d9 svadmin-u-1004c0c3954c svadmin-u-6da6a3c3f741', className)} data-testid="transfer">
158
158
  <!-- Left Panel -->
159
- <div class="flex-1 w-full rounded-lg border border-border bg-card shadow-xs flex flex-col h-72">
160
- <div class="flex items-center justify-between border-b border-border/80 px-3 py-2 bg-muted/30">
161
- <div class="flex items-center gap-2">
159
+ <div class="svadmin-u-36e579c0b41c svadmin-u-6da6a3c3f741 svadmin-u-5f22e64f2282 svadmin-u-ca6bcd4b6f3f svadmin-u-18049387f0af svadmin-u-cd0ad9a56558 svadmin-u-cef5b893cf23 svadmin-u-60fbb7713999 svadmin-u-8dddea0773ed svadmin-u-ff4a6777f1bc">
160
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-8ef2268efbbc svadmin-u-65fdbade2025 svadmin-u-c9ed8c5f79ae svadmin-u-0e17f2bd9074 svadmin-u-03b4dd7f172b svadmin-u-2859c861d7de">
161
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-77a2a20e90d4">
162
162
  <Checkbox
163
163
  checked={filteredLeft.length > 0 && filteredLeft.filter((i) => !i.disabled).every((i) => leftSelected.has(i.key))}
164
164
  disabled={disabled || filteredLeft.filter((i) => !i.disabled).length === 0}
165
165
  onCheckedChange={toggleAllLeft}
166
166
  />
167
- <span class="text-xs font-medium text-foreground">{titles[0]}</span>
167
+ <span class="svadmin-u-359090c2d529 svadmin-u-2689f3958069 svadmin-u-d4108abe6359">{titles[0]}</span>
168
168
  </div>
169
- <span class="text-[11px] text-muted-foreground tabular-nums">
169
+ <span class="svadmin-u-d058ca6de60f svadmin-u-bfa603190748 svadmin-u-3032cae0badb">
170
170
  {leftSelected.size} / {leftDataSource.length}
171
171
  </span>
172
172
  </div>
173
173
 
174
174
  {#if searchable}
175
- <div class="p-2 border-b border-border/40">
176
- <div class="relative">
177
- <Search class="absolute left-2.5 top-2.5 h-3.5 w-3.5 text-muted-foreground" />
175
+ <div class="svadmin-u-7660b450905a svadmin-u-65fdbade2025 svadmin-u-6ee2d41e2d2d">
176
+ <div class="svadmin-u-d89972fe17d6">
177
+ <Search class="svadmin-u-da4dbfbc4fdc svadmin-u-ecfeb742a3f3 svadmin-u-7a470f4c9b28 svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c svadmin-u-bfa603190748" />
178
178
  <Input
179
179
  type="text"
180
180
  bind:value={leftSearch}
181
181
  placeholder={i18n.t('common.search', undefined) ?? '搜索...'}
182
- class="h-8 pl-8 pr-2 text-xs"
182
+ class="svadmin-u-ed8a5df7b2fb svadmin-u-e4af885410fe svadmin-u-aa2c13a5e1b4 svadmin-u-359090c2d529"
183
183
  {disabled}
184
184
  />
185
185
  </div>
186
186
  </div>
187
187
  {/if}
188
188
 
189
- <div class="flex-1 overflow-y-auto p-1 space-y-0.5">
189
+ <div class="svadmin-u-36e579c0b41c svadmin-u-92bf82f493b1 svadmin-u-eb6a3cef9686 svadmin-u-e2eedc5718f0">
190
190
  {#each filteredLeft as item (item.key)}
191
191
  {@const selected = leftSelected.has(item.key)}
192
192
  <div
193
193
  role="button"
194
194
  tabindex="0"
195
195
  class={cn(
196
- 'flex items-center gap-2 rounded-md px-2.5 py-1.5 text-xs transition-colors cursor-pointer select-none',
197
- selected ? 'bg-primary/10 text-primary font-medium' : 'hover:bg-muted/50 text-foreground',
198
- item.disabled && 'opacity-50 cursor-not-allowed pointer-events-none'
196
+ 'svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-77a2a20e90d4 svadmin-u-421ac2be5045 svadmin-u-0b91436debbd svadmin-u-ec0091ee009b svadmin-u-359090c2d529 svadmin-u-ceb69a6b0e5f svadmin-u-34516836730d svadmin-u-7f6912283f11',
197
+ selected ? 'svadmin-u-375dc44df6e9 svadmin-u-20aaf08a7ed1 svadmin-u-2689f3958069' : 'svadmin-u-39f703dbe296 svadmin-u-d4108abe6359',
198
+ item.disabled && 'svadmin-u-0b8c506a0596 svadmin-u-29b733e4c162 svadmin-u-a4326536b8f5'
199
199
  )}
200
200
  onclick={() => toggleLeftSelect(item.key)}
201
201
  onkeydown={(e) => {
@@ -210,19 +210,19 @@
210
210
  disabled={disabled || item.disabled}
211
211
  onCheckedChange={() => toggleLeftSelect(item.key)}
212
212
  />
213
- <div class="min-w-0 flex-1">
213
+ <div class="svadmin-u-7e0b7cdf1a94 svadmin-u-36e579c0b41c">
214
214
  {#if renderItem}
215
215
  {@render renderItem({ item, direction: 'left' })}
216
216
  {:else}
217
- <div class="truncate">{item.title}</div>
217
+ <div class="svadmin-u-f283ea9bea0e">{item.title}</div>
218
218
  {#if item.description}
219
- <div class="truncate text-[10px] text-muted-foreground">{item.description}</div>
219
+ <div class="svadmin-u-f283ea9bea0e svadmin-u-1dc571a3609f svadmin-u-bfa603190748">{item.description}</div>
220
220
  {/if}
221
221
  {/if}
222
222
  </div>
223
223
  </div>
224
224
  {:else}
225
- <div class="py-10 text-center text-xs text-muted-foreground">
225
+ <div class="svadmin-u-1100bef66e60 svadmin-u-ca6bf63030aa svadmin-u-359090c2d529 svadmin-u-bfa603190748">
226
226
  {i18n.t('common.noData', undefined) ?? '无项目'}
227
227
  </div>
228
228
  {/each}
@@ -230,7 +230,7 @@
230
230
  </div>
231
231
 
232
232
  <!-- Middle Action Buttons -->
233
- <div class="flex sm:flex-col gap-1.5 shrink-0 justify-center">
233
+ <div class="svadmin-u-60fbb7713999 svadmin-u-9c4dae6452a4 svadmin-u-58284b4ea568 svadmin-u-012fbd121f37 svadmin-u-86843cf1e227">
234
234
  <Button
235
235
  type="button"
236
236
  variant="outline"
@@ -239,7 +239,7 @@
239
239
  onclick={moveToRight}
240
240
  title="转移所选项"
241
241
  >
242
- <ChevronRight class="h-4 w-4" />
242
+ <ChevronRight class="svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3" />
243
243
  </Button>
244
244
 
245
245
  <Button
@@ -250,7 +250,7 @@
250
250
  onclick={moveToLeft}
251
251
  title="移除所选项"
252
252
  >
253
- <ChevronLeft class="h-4 w-4" />
253
+ <ChevronLeft class="svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3" />
254
254
  </Button>
255
255
 
256
256
  <Button
@@ -261,7 +261,7 @@
261
261
  onclick={moveAllToRight}
262
262
  title="全部转移"
263
263
  >
264
- <ChevronsRight class="h-4 w-4" />
264
+ <ChevronsRight class="svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3" />
265
265
  </Button>
266
266
 
267
267
  <Button
@@ -272,51 +272,51 @@
272
272
  onclick={moveAllToLeft}
273
273
  title="全部移除"
274
274
  >
275
- <ChevronsLeft class="h-4 w-4" />
275
+ <ChevronsLeft class="svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3" />
276
276
  </Button>
277
277
  </div>
278
278
 
279
279
  <!-- Right Panel -->
280
- <div class="flex-1 w-full rounded-lg border border-border bg-card shadow-xs flex flex-col h-72">
281
- <div class="flex items-center justify-between border-b border-border/80 px-3 py-2 bg-muted/30">
282
- <div class="flex items-center gap-2">
280
+ <div class="svadmin-u-36e579c0b41c svadmin-u-6da6a3c3f741 svadmin-u-5f22e64f2282 svadmin-u-ca6bcd4b6f3f svadmin-u-18049387f0af svadmin-u-cd0ad9a56558 svadmin-u-cef5b893cf23 svadmin-u-60fbb7713999 svadmin-u-8dddea0773ed svadmin-u-ff4a6777f1bc">
281
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-8ef2268efbbc svadmin-u-65fdbade2025 svadmin-u-c9ed8c5f79ae svadmin-u-0e17f2bd9074 svadmin-u-03b4dd7f172b svadmin-u-2859c861d7de">
282
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-77a2a20e90d4">
283
283
  <Checkbox
284
284
  checked={filteredRight.length > 0 && filteredRight.filter((i) => !i.disabled).every((i) => rightSelected.has(i.key))}
285
285
  disabled={disabled || filteredRight.filter((i) => !i.disabled).length === 0}
286
286
  onCheckedChange={toggleAllRight}
287
287
  />
288
- <span class="text-xs font-medium text-foreground">{titles[1]}</span>
288
+ <span class="svadmin-u-359090c2d529 svadmin-u-2689f3958069 svadmin-u-d4108abe6359">{titles[1]}</span>
289
289
  </div>
290
- <span class="text-[11px] text-muted-foreground tabular-nums">
290
+ <span class="svadmin-u-d058ca6de60f svadmin-u-bfa603190748 svadmin-u-3032cae0badb">
291
291
  {rightSelected.size} / {rightDataSource.length}
292
292
  </span>
293
293
  </div>
294
294
 
295
295
  {#if searchable}
296
- <div class="p-2 border-b border-border/40">
297
- <div class="relative">
298
- <Search class="absolute left-2.5 top-2.5 h-3.5 w-3.5 text-muted-foreground" />
296
+ <div class="svadmin-u-7660b450905a svadmin-u-65fdbade2025 svadmin-u-6ee2d41e2d2d">
297
+ <div class="svadmin-u-d89972fe17d6">
298
+ <Search class="svadmin-u-da4dbfbc4fdc svadmin-u-ecfeb742a3f3 svadmin-u-7a470f4c9b28 svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c svadmin-u-bfa603190748" />
299
299
  <Input
300
300
  type="text"
301
301
  bind:value={rightSearch}
302
302
  placeholder={i18n.t('common.search', undefined) ?? '搜索...'}
303
- class="h-8 pl-8 pr-2 text-xs"
303
+ class="svadmin-u-ed8a5df7b2fb svadmin-u-e4af885410fe svadmin-u-aa2c13a5e1b4 svadmin-u-359090c2d529"
304
304
  {disabled}
305
305
  />
306
306
  </div>
307
307
  </div>
308
308
  {/if}
309
309
 
310
- <div class="flex-1 overflow-y-auto p-1 space-y-0.5">
310
+ <div class="svadmin-u-36e579c0b41c svadmin-u-92bf82f493b1 svadmin-u-eb6a3cef9686 svadmin-u-e2eedc5718f0">
311
311
  {#each filteredRight as item (item.key)}
312
312
  {@const selected = rightSelected.has(item.key)}
313
313
  <div
314
314
  role="button"
315
315
  tabindex="0"
316
316
  class={cn(
317
- 'flex items-center gap-2 rounded-md px-2.5 py-1.5 text-xs transition-colors cursor-pointer select-none',
318
- selected ? 'bg-primary/10 text-primary font-medium' : 'hover:bg-muted/50 text-foreground',
319
- item.disabled && 'opacity-50 cursor-not-allowed pointer-events-none'
317
+ 'svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-77a2a20e90d4 svadmin-u-421ac2be5045 svadmin-u-0b91436debbd svadmin-u-ec0091ee009b svadmin-u-359090c2d529 svadmin-u-ceb69a6b0e5f svadmin-u-34516836730d svadmin-u-7f6912283f11',
318
+ selected ? 'svadmin-u-375dc44df6e9 svadmin-u-20aaf08a7ed1 svadmin-u-2689f3958069' : 'svadmin-u-39f703dbe296 svadmin-u-d4108abe6359',
319
+ item.disabled && 'svadmin-u-0b8c506a0596 svadmin-u-29b733e4c162 svadmin-u-a4326536b8f5'
320
320
  )}
321
321
  onclick={() => toggleRightSelect(item.key)}
322
322
  onkeydown={(e) => {
@@ -331,19 +331,19 @@
331
331
  disabled={disabled || item.disabled}
332
332
  onCheckedChange={() => toggleRightSelect(item.key)}
333
333
  />
334
- <div class="min-w-0 flex-1">
334
+ <div class="svadmin-u-7e0b7cdf1a94 svadmin-u-36e579c0b41c">
335
335
  {#if renderItem}
336
336
  {@render renderItem({ item, direction: 'right' })}
337
337
  {:else}
338
- <div class="truncate">{item.title}</div>
338
+ <div class="svadmin-u-f283ea9bea0e">{item.title}</div>
339
339
  {#if item.description}
340
- <div class="truncate text-[10px] text-muted-foreground">{item.description}</div>
340
+ <div class="svadmin-u-f283ea9bea0e svadmin-u-1dc571a3609f svadmin-u-bfa603190748">{item.description}</div>
341
341
  {/if}
342
342
  {/if}
343
343
  </div>
344
344
  </div>
345
345
  {:else}
346
- <div class="py-10 text-center text-xs text-muted-foreground">
346
+ <div class="svadmin-u-1100bef66e60 svadmin-u-ca6bf63030aa svadmin-u-359090c2d529 svadmin-u-bfa603190748">
347
347
  {i18n.t('common.noData', undefined) ?? '无项目'}
348
348
  </div>
349
349
  {/each}