@svadmin/ui 0.68.1 → 0.69.1

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 +13 -8
@@ -44,25 +44,25 @@
44
44
  {#if variant === 'floating'}
45
45
  <div
46
46
  class={cn(
47
- 'fixed bottom-6 left-1/2 -translate-x-1/2 z-40 flex items-center gap-3 rounded-lg border border-border/80 bg-background/95 px-4 py-2.5 shadow-2xl backdrop-blur-md transition-all duration-200 animate-in fade-in-0 slide-in-from-bottom-4 motion-reduce:animate-none',
47
+ 'svadmin-batch-action-bar svadmin-batch-action-bar--floating',
48
48
  className
49
49
  )}
50
50
  role="region"
51
51
  aria-label="Batch Actions"
52
52
  >
53
- <div class="flex items-center gap-2 pr-2 border-r border-border/60">
54
- <CheckCircle2 class="h-4 w-4 text-primary" aria-hidden="true" />
55
- <span class="text-xs font-medium text-foreground tabular-nums">{displayText}</span>
53
+ <div class="svadmin-batch-action-bar__selection">
54
+ <CheckCircle2 class="svadmin-batch-action-bar__icon" aria-hidden="true" />
55
+ <span class="svadmin-batch-action-bar__label">{displayText}</span>
56
56
  </div>
57
57
 
58
58
  {#if actions}
59
- <div class="flex items-center gap-1.5">
59
+ <div class="svadmin-batch-action-bar__actions">
60
60
  {@render actions()}
61
61
  </div>
62
62
  {/if}
63
63
 
64
64
  {#if children}
65
- <div class="flex items-center gap-1.5">
65
+ <div class="svadmin-batch-action-bar__actions">
66
66
  {@render children()}
67
67
  </div>
68
68
  {/if}
@@ -71,11 +71,11 @@
71
71
  <Button
72
72
  variant="ghost"
73
73
  size="sm"
74
- class="h-7 px-2 text-xs text-muted-foreground hover:text-foreground"
74
+ class="svadmin-batch-action-bar__clear"
75
75
  onclick={onclear}
76
76
  aria-label={clearLabel}
77
77
  >
78
- <X class="h-3.5 w-3.5 mr-1" aria-hidden="true" />
78
+ <X class="svadmin-batch-action-bar__clear-icon" aria-hidden="true" />
79
79
  {clearLabel}
80
80
  </Button>
81
81
  {/if}
@@ -83,22 +83,22 @@
83
83
  {:else}
84
84
  <div
85
85
  class={cn(
86
- 'flex flex-wrap items-center justify-between gap-2 rounded-md border border-primary/20 bg-primary/5 px-3 py-2 text-xs transition-all duration-150',
87
- variant === 'subtle' ? 'border-border/60 bg-muted/40' : '',
86
+ 'svadmin-batch-action-bar',
87
+ variant === 'subtle' ? 'svadmin-batch-action-bar--subtle' : '',
88
88
  className
89
89
  )}
90
90
  role="region"
91
91
  aria-label="Batch Actions"
92
92
  >
93
- <div class="flex items-center gap-2">
94
- <Badge variant="secondary" class="h-5 px-1.5 font-semibold text-[11px] tabular-nums bg-primary/15 text-primary border-primary/20">
93
+ <div class="svadmin-batch-action-bar__selection">
94
+ <Badge variant="secondary" class="svadmin-batch-action-bar__count">
95
95
  {selectedCount}
96
96
  </Badge>
97
- <span class="font-medium text-foreground tabular-nums">{displayText}</span>
97
+ <span class="svadmin-batch-action-bar__label">{displayText}</span>
98
98
  {#if onclear}
99
99
  <button
100
100
  type="button"
101
- class="text-muted-foreground hover:text-foreground underline underline-offset-2 ml-1 text-xs cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 rounded-xs"
101
+ class="svadmin-batch-action-bar__clear"
102
102
  onclick={onclear}
103
103
  >
104
104
  {clearLabel}
@@ -106,7 +106,7 @@
106
106
  {/if}
107
107
  </div>
108
108
 
109
- <div class="flex items-center gap-2">
109
+ <div class="svadmin-batch-action-bar__actions">
110
110
  {#if actions}
111
111
  {@render actions()}
112
112
  {/if}
@@ -11,7 +11,7 @@
11
11
  const adminContext = captureAdminContext();
12
12
  const resources = $derived((() => { try { return getResources(); } catch { return []; } })());
13
13
 
14
- let { menu, class: className = 'mb-4' }: { menu?: MenuItem[]; class?: string } = $props();
14
+ let { menu, class: className = 'svadmin-breadcrumbs--spaced' }: { menu?: MenuItem[]; class?: string } = $props();
15
15
 
16
16
  interface Crumb { label: string; href?: string; }
17
17
 
@@ -84,20 +84,20 @@
84
84
  </script>
85
85
 
86
86
  {#if crumbs.length > 1}
87
- <Breadcrumb.Root class={cn(className)}>
87
+ <Breadcrumb.Root class={cn('svadmin-breadcrumbs', className)}>
88
88
  <Breadcrumb.List>
89
89
  {#each crumbs as crumb, i (`${crumb.label}-${i}`)}
90
90
  {#if i > 0}
91
91
  <Breadcrumb.Separator />
92
92
  {/if}
93
93
  <Breadcrumb.Item>
94
- <span class="inline-flex svadmin-page-enter" style="animation-duration: 0.2s;">
94
+ <span class="svadmin-breadcrumbs__item svadmin-page-enter" style="animation-duration: 0.2s;">
95
95
  {#if i === crumbs.length - 1}
96
96
  <Breadcrumb.Page>{crumb.label}</Breadcrumb.Page>
97
97
  {:else if crumb.href}
98
98
  <Breadcrumb.Link href={crumb.href}>{crumb.label}</Breadcrumb.Link>
99
99
  {:else}
100
- <span class="text-muted-foreground">{crumb.label}</span>
100
+ <span class="svadmin-breadcrumbs__label">{crumb.label}</span>
101
101
  {/if}
102
102
  </span>
103
103
  </Breadcrumb.Item>
@@ -65,9 +65,9 @@
65
65
 
66
66
  <Button {variant} {size} onclick={handleCancel} disabled={disabled || pending || !taskProvider?.cancel}>
67
67
  {#if pending}
68
- <Loader2 class="mr-1.5 h-3.5 w-3.5 animate-spin" />
68
+ <Loader2 class="svadmin-u-82cc6c6581cd svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c svadmin-u-afbdd13a380e" />
69
69
  {:else}
70
- <Ban class="mr-1.5 h-3.5 w-3.5" />
70
+ <Ban class="svadmin-u-82cc6c6581cd svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c" />
71
71
  {/if}
72
72
  {#if children}
73
73
  {@render children()}
@@ -252,112 +252,112 @@
252
252
  });
253
253
  </script>
254
254
 
255
- <div class={cn('rounded-xl border border-border bg-card p-4 shadow-xs text-xs space-y-3', className)}>
255
+ <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)}>
256
256
  <!-- Header & Toolbar -->
257
- <div class="flex flex-wrap items-center justify-between gap-2 pb-2 border-b border-border/60">
258
- <div class="flex items-center gap-1 bg-muted/40 p-1 rounded-lg border border-border/60">
257
+ <div class="svadmin-u-60fbb7713999 svadmin-u-1eb5c6df38c1 svadmin-u-3960ffc248d9 svadmin-u-8ef2268efbbc svadmin-u-77a2a20e90d4 svadmin-u-f4cc511ff0c1 svadmin-u-65fdbade2025 svadmin-u-05faf5c801ff">
258
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-44ee8ba0a421 svadmin-u-b00f43c30c2b svadmin-u-eb6a3cef9686 svadmin-u-5f22e64f2282 svadmin-u-ca6bcd4b6f3f svadmin-u-05faf5c801ff">
259
259
  <Button
260
260
  variant={activeTool === 'pen' ? 'default' : 'ghost'}
261
261
  size="sm"
262
- class="h-7 w-7 p-0"
262
+ class="svadmin-u-d0a52b312f7d svadmin-u-cbbf90f9a828 svadmin-u-8a539c7fe216"
263
263
  onclick={() => { activeTool = 'pen'; }}
264
264
  title="Pen"
265
265
  >
266
- <Pencil class="h-3.5 w-3.5" />
266
+ <Pencil class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c" />
267
267
  </Button>
268
268
 
269
269
  <Button
270
270
  variant={activeTool === 'rect' ? 'default' : 'ghost'}
271
271
  size="sm"
272
- class="h-7 w-7 p-0"
272
+ class="svadmin-u-d0a52b312f7d svadmin-u-cbbf90f9a828 svadmin-u-8a539c7fe216"
273
273
  onclick={() => { activeTool = 'rect'; }}
274
274
  title="Rectangle"
275
275
  >
276
- <Square class="h-3.5 w-3.5" />
276
+ <Square class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c" />
277
277
  </Button>
278
278
 
279
279
  <Button
280
280
  variant={activeTool === 'circle' ? 'default' : 'ghost'}
281
281
  size="sm"
282
- class="h-7 w-7 p-0"
282
+ class="svadmin-u-d0a52b312f7d svadmin-u-cbbf90f9a828 svadmin-u-8a539c7fe216"
283
283
  onclick={() => { activeTool = 'circle'; }}
284
284
  title="Circle"
285
285
  >
286
- <Circle class="h-3.5 w-3.5" />
286
+ <Circle class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c" />
287
287
  </Button>
288
288
 
289
289
  <Button
290
290
  variant={activeTool === 'arrow' ? 'default' : 'ghost'}
291
291
  size="sm"
292
- class="h-7 w-7 p-0"
292
+ class="svadmin-u-d0a52b312f7d svadmin-u-cbbf90f9a828 svadmin-u-8a539c7fe216"
293
293
  onclick={() => { activeTool = 'arrow'; }}
294
294
  title="Arrow"
295
295
  >
296
- <MoveUpRight class="h-3.5 w-3.5" />
296
+ <MoveUpRight class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c" />
297
297
  </Button>
298
298
 
299
299
  <Button
300
300
  variant={activeTool === 'text' ? 'default' : 'ghost'}
301
301
  size="sm"
302
- class="h-7 w-7 p-0"
302
+ class="svadmin-u-d0a52b312f7d svadmin-u-cbbf90f9a828 svadmin-u-8a539c7fe216"
303
303
  onclick={() => { activeTool = 'text'; }}
304
304
  title="Text Note"
305
305
  >
306
- <Type class="h-3.5 w-3.5" />
306
+ <Type class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c" />
307
307
  </Button>
308
308
 
309
309
  <Button
310
310
  variant={activeTool === 'eraser' ? 'default' : 'ghost'}
311
311
  size="sm"
312
- class="h-7 w-7 p-0"
312
+ class="svadmin-u-d0a52b312f7d svadmin-u-cbbf90f9a828 svadmin-u-8a539c7fe216"
313
313
  onclick={() => { activeTool = 'eraser'; }}
314
314
  title="Eraser"
315
315
  >
316
- <Eraser class="h-3.5 w-3.5" />
316
+ <Eraser class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c" />
317
317
  </Button>
318
318
  </div>
319
319
 
320
- <div class="flex items-center gap-1.5">
320
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-58284b4ea568">
321
321
  <Button
322
322
  variant="ghost"
323
323
  size="sm"
324
- class="h-7 text-xs gap-1 text-muted-foreground hover:text-foreground"
324
+ class="svadmin-u-d0a52b312f7d svadmin-u-359090c2d529 svadmin-u-44ee8ba0a421 svadmin-u-bfa603190748 svadmin-u-ea7b2e9e070e"
325
325
  disabled={history.length === 0}
326
326
  onclick={undo}
327
327
  >
328
- <RotateCcw class="h-3 w-3" />
328
+ <RotateCcw class="svadmin-u-6a60c09e6aaa svadmin-u-9cea05671a29" />
329
329
  Undo
330
330
  </Button>
331
331
 
332
332
  <Button
333
333
  variant="ghost"
334
334
  size="sm"
335
- class="h-7 text-xs gap-1 text-muted-foreground hover:text-destructive hover:bg-destructive/10"
335
+ class="svadmin-u-d0a52b312f7d svadmin-u-359090c2d529 svadmin-u-44ee8ba0a421 svadmin-u-bfa603190748 svadmin-u-51e95020d6f2 svadmin-u-8db899b4e072"
336
336
  onclick={clear}
337
337
  >
338
- <Trash2 class="h-3 w-3" />
338
+ <Trash2 class="svadmin-u-6a60c09e6aaa svadmin-u-9cea05671a29" />
339
339
  Clear
340
340
  </Button>
341
341
 
342
342
  <Button
343
343
  variant="outline"
344
344
  size="sm"
345
- class="h-7 text-xs gap-1"
345
+ class="svadmin-u-d0a52b312f7d svadmin-u-359090c2d529 svadmin-u-44ee8ba0a421"
346
346
  onclick={handleExport}
347
347
  >
348
- <Download class="h-3 w-3" />
348
+ <Download class="svadmin-u-6a60c09e6aaa svadmin-u-9cea05671a29" />
349
349
  Export
350
350
  </Button>
351
351
  </div>
352
352
  </div>
353
353
 
354
354
  <!-- Canvas Container -->
355
- <div class="relative w-full rounded-lg border border-border/80 bg-muted/20 overflow-hidden flex items-center justify-center">
355
+ <div class="svadmin-u-d89972fe17d6 svadmin-u-6da6a3c3f741 svadmin-u-5f22e64f2282 svadmin-u-ca6bcd4b6f3f svadmin-u-c9ed8c5f79ae svadmin-u-967d113a1451 svadmin-u-2cd02d11d1af svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-86843cf1e227">
356
356
  <canvas
357
357
  bind:this={canvasEl}
358
358
  {width}
359
359
  {height}
360
- class="touch-none cursor-crosshair max-w-full h-auto block bg-card"
360
+ class="touch-none svadmin-u-92b7f35f04c0 svadmin-u-c0980a65a70d svadmin-u-b8f0a08ece1e svadmin-u-0214b4b355d1 svadmin-u-cd0ad9a56558"
361
361
  onmousedown={startAction}
362
362
  onmousemove={handleMove}
363
363
  onmouseup={stopAction}
@@ -369,20 +369,20 @@
369
369
 
370
370
  {#if showTextPrompt}
371
371
  <div
372
- class="absolute z-50 p-2 rounded-lg border border-border bg-popover shadow-md flex items-center gap-1.5"
372
+ class="svadmin-u-da4dbfbc4fdc svadmin-u-181b286668b5 svadmin-u-7660b450905a svadmin-u-5f22e64f2282 svadmin-u-ca6bcd4b6f3f svadmin-u-18049387f0af svadmin-u-e541d86d1ec8 svadmin-u-febc34e471df svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-58284b4ea568"
373
373
  style={`left: ${Math.min(textPos.x, width - 180)}px; top: ${Math.min(textPos.y, height - 50)}px;`}
374
374
  >
375
375
  <input
376
376
  type="text"
377
377
  bind:value={textInputPrompt}
378
378
  placeholder="Annotation text..."
379
- class="h-7 w-36 rounded border border-input bg-background px-2 text-xs text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring"
379
+ class="svadmin-u-d0a52b312f7d svadmin-u-df403bbae8fc svadmin-u-07389a777c1f svadmin-u-ca6bcd4b6f3f svadmin-u-e5795dad4d22 svadmin-u-e6f9e383a762 svadmin-u-d5eab218aa34 svadmin-u-359090c2d529 svadmin-u-d4108abe6359 svadmin-u-f10f771f87e9 svadmin-u-3e94a98e1466 svadmin-u-9c1295a6914a"
380
380
  onkeydown={(e) => {
381
381
  if (e.key === 'Enter') submitText();
382
382
  else if (e.key === 'Escape') showTextPrompt = false;
383
383
  }}
384
384
  />
385
- <Button size="sm" class="h-7 text-xs px-2" onclick={submitText}>Add</Button>
385
+ <Button size="sm" class="svadmin-u-d0a52b312f7d svadmin-u-359090c2d529 svadmin-u-d5eab218aa34" onclick={submitText}>Add</Button>
386
386
  </div>
387
387
  {/if}
388
388
  </div>
@@ -130,70 +130,70 @@
130
130
  }
131
131
  </script>
132
132
 
133
- <div class={cn('relative w-full', className)} data-testid="cascader">
133
+ <div class={cn('svadmin-u-d89972fe17d6 svadmin-u-6da6a3c3f741', className)} data-testid="cascader">
134
134
  <Popover.Root bind:open>
135
- <Popover.Trigger class="w-full">
135
+ <Popover.Trigger class="svadmin-u-6da6a3c3f741">
136
136
  {#snippet child({ props })}
137
137
  <button
138
138
  type="button"
139
139
  {...props}
140
140
  {disabled}
141
141
  class={cn(
142
- 'flex min-h-9 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-1.5 text-xs ring-offset-background placeholder:text-muted-foreground focus:outline-hidden focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 text-left',
143
- open && 'ring-2 ring-ring ring-offset-2'
142
+ 'svadmin-u-60fbb7713999 svadmin-u-968a1e649bad svadmin-u-6da6a3c3f741 svadmin-u-3960ffc248d9 svadmin-u-8ef2268efbbc svadmin-u-421ac2be5045 svadmin-u-ca6bcd4b6f3f svadmin-u-e5795dad4d22 svadmin-u-e6f9e383a762 svadmin-u-0e17f2bd9074 svadmin-u-ec0091ee009b svadmin-u-359090c2d529 svadmin-u-582e6ef4b245 svadmin-u-9c24ab70af61 svadmin-u-674ec2b09890 svadmin-u-608dd26cd5ba svadmin-u-80b9d0ae125f svadmin-u-6b22a22a9752 svadmin-u-5f533b3a7de7 svadmin-u-b29d8adbad2e svadmin-u-2eba0d65d059',
143
+ open && 'svadmin-u-16b1efa5875e svadmin-u-3e1868fc53e2 svadmin-u-0c15f6cff5a0'
144
144
  )}
145
145
  >
146
- <span class={cn('truncate', displayLabel ? 'text-foreground' : 'text-muted-foreground')}>
146
+ <span class={cn('svadmin-u-f283ea9bea0e', displayLabel ? 'svadmin-u-d4108abe6359' : 'svadmin-u-bfa603190748')}>
147
147
  {displayLabel || (placeholder ?? (i18n.t('field.selectPlaceholder', undefined) ?? '请选择...'))}
148
148
  </span>
149
149
 
150
- <div class="flex items-center gap-1 shrink-0 ml-1 text-muted-foreground">
150
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-44ee8ba0a421 svadmin-u-012fbd121f37 svadmin-u-f58b02572ab2 svadmin-u-bfa603190748">
151
151
  {#if allowClear && displayLabel && !disabled}
152
152
  <span
153
153
  role="button"
154
154
  tabindex="0"
155
- class="hover:text-foreground cursor-pointer p-0.5"
155
+ class="svadmin-u-ea7b2e9e070e svadmin-u-34516836730d svadmin-u-de8350a3bbad"
156
156
  onclick={clearAll}
157
157
  onkeydown={(e) => {
158
158
  if (e.key === 'Enter') clearAll(e as never);
159
159
  }}
160
160
  >
161
- <X class="h-3.5 w-3.5" />
161
+ <X class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c" />
162
162
  </span>
163
163
  {/if}
164
- <ChevronsUpDown class="h-3.5 w-3.5 opacity-50" />
164
+ <ChevronsUpDown class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c svadmin-u-0b8c506a0596" />
165
165
  </div>
166
166
  </button>
167
167
  {/snippet}
168
168
  </Popover.Trigger>
169
169
 
170
- <Popover.Content class="w-auto min-w-[180px] p-0 shadow-lg border border-border" align="start">
171
- <div class="flex divide-x divide-border max-h-64 overflow-x-auto">
170
+ <Popover.Content class="svadmin-u-23e1f628d033 svadmin-u-68fe531347b9 svadmin-u-8a539c7fe216 svadmin-u-06bbb43166db svadmin-u-ca6bcd4b6f3f svadmin-u-18049387f0af" align="start">
171
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3746131ec018 svadmin-u-e783642739e3 svadmin-u-8aee2b07b47d svadmin-u-1384f66f41d0">
172
172
  {#each columns as columnOptions, colIndex (colIndex)}
173
- <div class="w-40 min-w-[140px] max-h-64 overflow-y-auto p-1 space-y-0.5">
173
+ <div class="svadmin-u-84789e8a20cd svadmin-u-1734f23deafe svadmin-u-8aee2b07b47d svadmin-u-92bf82f493b1 svadmin-u-eb6a3cef9686 svadmin-u-e2eedc5718f0">
174
174
  {#each columnOptions as option (option.value)}
175
175
  {@const isSelectedInPath = activePath[colIndex] === option.value}
176
176
  {@const hasChildren = Boolean(option.children && option.children.length > 0 && !option.isLeaf)}
177
177
  <button
178
178
  type="button"
179
179
  class={cn(
180
- 'flex w-full items-center justify-between rounded-md px-2.5 py-1.5 text-xs text-left transition-colors',
180
+ 'svadmin-u-60fbb7713999 svadmin-u-6da6a3c3f741 svadmin-u-3960ffc248d9 svadmin-u-8ef2268efbbc svadmin-u-421ac2be5045 svadmin-u-0b91436debbd svadmin-u-ec0091ee009b svadmin-u-359090c2d529 svadmin-u-2eba0d65d059 svadmin-u-ceb69a6b0e5f',
181
181
  isSelectedInPath
182
- ? 'bg-primary/10 text-primary font-medium'
183
- : 'hover:bg-muted/60 text-foreground',
184
- option.disabled && 'opacity-50 cursor-not-allowed pointer-events-none'
182
+ ? 'svadmin-u-375dc44df6e9 svadmin-u-20aaf08a7ed1 svadmin-u-2689f3958069'
183
+ : 'svadmin-u-68646cdcc246 svadmin-u-d4108abe6359',
184
+ option.disabled && 'svadmin-u-0b8c506a0596 svadmin-u-29b733e4c162 svadmin-u-a4326536b8f5'
185
185
  )}
186
186
  onclick={() => handleSelectOption(colIndex, option)}
187
187
  >
188
- <span class="truncate flex-1">{option.label}</span>
188
+ <span class="svadmin-u-f283ea9bea0e svadmin-u-36e579c0b41c">{option.label}</span>
189
189
  {#if hasChildren}
190
- <ChevronRight class="h-3.5 w-3.5 shrink-0 opacity-60 ml-1" />
190
+ <ChevronRight class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c svadmin-u-012fbd121f37 svadmin-u-f2868c227fcd svadmin-u-f58b02572ab2" />
191
191
  {:else if isSelectedInPath && value && value[colIndex] === option.value}
192
- <Check class="h-3.5 w-3.5 shrink-0 text-primary ml-1" />
192
+ <Check class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c svadmin-u-012fbd121f37 svadmin-u-20aaf08a7ed1 svadmin-u-f58b02572ab2" />
193
193
  {/if}
194
194
  </button>
195
195
  {:else}
196
- <div class="py-4 text-center text-xs text-muted-foreground">
196
+ <div class="svadmin-u-cb11fec3bb46 svadmin-u-ca6bf63030aa svadmin-u-359090c2d529 svadmin-u-bfa603190748">
197
197
  {i18n.t('common.noData', undefined) ?? '无数据'}
198
198
  </div>
199
199
  {/each}
@@ -13,8 +13,8 @@
13
13
  </script>
14
14
 
15
15
  {#if auth.isLoading}
16
- <div class="flex h-screen w-screen items-center justify-center">
17
- <div class="h-8 w-8 animate-spin rounded-full border-4 border-primary border-r-transparent"></div>
16
+ <div class="svadmin-u-60fbb7713999 svadmin-u-ef114b5f5ad1 svadmin-u-71ec51c9997d svadmin-u-3960ffc248d9 svadmin-u-86843cf1e227">
17
+ <div class="svadmin-u-ed8a5df7b2fb svadmin-u-2bbcfc3b5179 svadmin-u-afbdd13a380e svadmin-u-ac204c108886 svadmin-u-b485ae1c3b47 svadmin-u-6cbc84dd9e1a svadmin-u-980d09f1c472"></div>
18
18
  </div>
19
19
  {:else if auth.isAuthenticated}
20
20
  <NavigateToResource />
@@ -86,30 +86,30 @@
86
86
  {...props}
87
87
  type="button"
88
88
  class={cn(
89
- 'inline-flex items-center justify-center h-6 w-6 rounded-md transition-colors cursor-pointer',
89
+ 'svadmin-u-52083e7da442 svadmin-u-3960ffc248d9 svadmin-u-86843cf1e227 svadmin-u-f6fe902450dc svadmin-u-7ec10f86d9b1 svadmin-u-421ac2be5045 svadmin-u-ceb69a6b0e5f svadmin-u-34516836730d',
90
90
  hasActiveFilter
91
- ? 'bg-primary/15 text-primary'
92
- : 'text-muted-foreground/60 hover:text-foreground hover:bg-muted/50',
91
+ ? 'svadmin-u-30f13f694038 svadmin-u-20aaf08a7ed1'
92
+ : 'svadmin-u-7be4d67a6256 svadmin-u-ea7b2e9e070e svadmin-u-39f703dbe296',
93
93
  className
94
94
  )}
95
95
  aria-label="Filter {field.label}"
96
96
  >
97
- <Filter class="h-3 w-3" />
97
+ <Filter class="svadmin-u-6a60c09e6aaa svadmin-u-9cea05671a29" />
98
98
  </button>
99
99
  {/snippet}
100
100
  </Popover.Trigger>
101
- <Popover.Content class="w-64 p-3 text-xs" align="start">
102
- <div class="space-y-3">
103
- <div class="font-medium text-foreground pb-1 border-b border-border/50">
101
+ <Popover.Content class="svadmin-u-6ca625288b1e svadmin-u-eb6e8b881acd svadmin-u-359090c2d529" align="start">
102
+ <div class="svadmin-u-6ed543e2fbbb">
103
+ <div class="svadmin-u-2689f3958069 svadmin-u-d4108abe6359 svadmin-u-569eb16216dd svadmin-u-65fdbade2025 svadmin-u-591f378e24a1">
104
104
  Filter {field.label}
105
105
  </div>
106
106
 
107
- <div class="space-y-1">
108
- <label class="block text-[11px] text-muted-foreground" for="header_filter_op_{field.key}">Operator</label>
107
+ <div class="svadmin-u-da7c36cd8867">
108
+ <label class="svadmin-u-0214b4b355d1 svadmin-u-d058ca6de60f svadmin-u-bfa603190748" for="header_filter_op_{field.key}">Operator</label>
109
109
  <select
110
110
  id="header_filter_op_{field.key}"
111
111
  bind:value={operator}
112
- class="h-7.5 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"
112
+ class="svadmin-u-d1c57777d8b6 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"
113
113
  >
114
114
  {#each applicableOperators as op (op.value)}
115
115
  <option value={op.value}>{op.label}</option>
@@ -117,13 +117,13 @@
117
117
  </select>
118
118
  </div>
119
119
 
120
- <div class="space-y-1">
121
- <label class="block text-[11px] text-muted-foreground" for="header_filter_val_{field.key}">Value</label>
120
+ <div class="svadmin-u-da7c36cd8867">
121
+ <label class="svadmin-u-0214b4b355d1 svadmin-u-d058ca6de60f svadmin-u-bfa603190748" for="header_filter_val_{field.key}">Value</label>
122
122
  {#if field.type === 'select' && field.options}
123
123
  <select
124
124
  id="header_filter_val_{field.key}"
125
125
  bind:value={filterVal}
126
- class="h-7.5 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"
126
+ class="svadmin-u-d1c57777d8b6 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"
127
127
  >
128
128
  <option value="">All</option>
129
129
  {#each field.options as opt (opt.value)}
@@ -134,7 +134,7 @@
134
134
  <select
135
135
  id="header_filter_val_{field.key}"
136
136
  bind:value={filterVal}
137
- class="h-7.5 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"
137
+ class="svadmin-u-d1c57777d8b6 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"
138
138
  >
139
139
  <option value="">All</option>
140
140
  <option value="true">Yes / True</option>
@@ -145,7 +145,7 @@
145
145
  id="header_filter_val_{field.key}"
146
146
  type="date"
147
147
  bind:value={filterVal}
148
- class="h-7.5 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"
148
+ class="svadmin-u-d1c57777d8b6 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"
149
149
  />
150
150
  {:else}
151
151
  <input
@@ -153,23 +153,23 @@
153
153
  type="text"
154
154
  bind:value={filterVal}
155
155
  placeholder="Search {field.label}..."
156
- class="h-7.5 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"
156
+ class="svadmin-u-d1c57777d8b6 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"
157
157
  />
158
158
  {/if}
159
159
  </div>
160
160
 
161
- <div class="flex items-center justify-between pt-1 border-t border-border/50">
161
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-8ef2268efbbc svadmin-u-6b7d6e21ccbd svadmin-u-b950dda299d3 svadmin-u-591f378e24a1">
162
162
  <Button
163
163
  variant="ghost"
164
164
  size="sm"
165
- class="h-7 px-2 text-xs text-muted-foreground hover:text-foreground gap-1"
165
+ class="svadmin-u-d0a52b312f7d svadmin-u-d5eab218aa34 svadmin-u-359090c2d529 svadmin-u-bfa603190748 svadmin-u-ea7b2e9e070e svadmin-u-44ee8ba0a421"
166
166
  onclick={handleClear}
167
167
  >
168
- <RotateCcw class="h-3 w-3" />
168
+ <RotateCcw class="svadmin-u-6a60c09e6aaa svadmin-u-9cea05671a29" />
169
169
  {i18n.t('common.clear', { defaultValue: 'Clear' })}
170
170
  </Button>
171
- <Button size="sm" class="h-7 px-2.5 text-xs gap-1" onclick={handleApply}>
172
- <Check class="h-3 w-3" />
171
+ <Button size="sm" class="svadmin-u-d0a52b312f7d svadmin-u-0b91436debbd svadmin-u-359090c2d529 svadmin-u-44ee8ba0a421" onclick={handleApply}>
172
+ <Check class="svadmin-u-6a60c09e6aaa svadmin-u-9cea05671a29" />
173
173
  {i18n.t('common.apply', { defaultValue: 'Apply' })}
174
174
  </Button>
175
175
  </div>