@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
@@ -99,8 +99,8 @@
99
99
 
100
100
  <div
101
101
  class={cn(
102
- 'space-y-1.5',
103
- isCompact && 'space-y-1 [&_[data-slot=input]]:h-8 [&_[data-slot=input]]:px-2.5 [&_[data-slot=input]]:py-1 [&_[data-slot=input]]:text-xs [&_[data-slot=select]]:h-8 [&_[data-slot=select]]:px-2.5 [&_[data-slot=select]]:py-1 [&_[data-slot=select]]:text-xs [&_[data-slot=textarea]]:min-h-16 [&_[data-slot=textarea]]:px-2.5 [&_[data-slot=textarea]]:py-1.5 [&_[data-slot=textarea]]:text-xs [&_[data-slot=button]]:h-8 [&_[data-slot=button]]:text-xs'
102
+ 'svadmin-u-5a2508227c6a',
103
+ isCompact && 'svadmin-u-da7c36cd8867 svadmin-u-01e043b9ca05 svadmin-u-5e375759a547 svadmin-u-0144d38a6921 svadmin-u-910198b850a8 svadmin-u-220cd47c030c svadmin-u-84a68a4bfa38 svadmin-u-2b201b2c12c7 svadmin-u-334c9da7fe2b svadmin-u-f7194f86de09 svadmin-u-a281d7e98ab9 svadmin-u-6cddb40447d9 svadmin-u-150c3670da1d svadmin-u-f01a063e8052 svadmin-u-3e2aa4ec6454'
104
104
  )}
105
105
  data-svadmin-field
106
106
  data-svadmin-field-key={field.key}
@@ -109,7 +109,7 @@
109
109
  <Label for={field.key} id="label-{field.key}" data-svadmin-field-label>
110
110
  {field.label}
111
111
  {#if field.required}
112
- <span class="text-destructive">*</span>
112
+ <span class="svadmin-u-811148b13d1e">*</span>
113
113
  {/if}
114
114
  </Label>
115
115
 
@@ -177,14 +177,14 @@
177
177
  />
178
178
 
179
179
  {:else if field.type === 'color'}
180
- <div class="flex items-center gap-3">
180
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-1004c0c3954c">
181
181
  <input
182
182
  id={field.key}
183
183
  name={field.key}
184
184
  type="color"
185
185
  value={strVal || '#000000'}
186
186
  oninput={(e) => onchange((e.target as HTMLInputElement).value)}
187
- class="h-10 w-14 cursor-pointer rounded-md border border-input bg-background p-1"
187
+ class="svadmin-u-426b8b75185b svadmin-u-7e74e5fe798a svadmin-u-34516836730d svadmin-u-421ac2be5045 svadmin-u-ca6bcd4b6f3f svadmin-u-e5795dad4d22 svadmin-u-e6f9e383a762 svadmin-u-eb6a3cef9686"
188
188
  disabled={disabled}
189
189
  aria-invalid={invalid || undefined}
190
190
  aria-describedby={errorId}
@@ -194,12 +194,12 @@
194
194
  value={strVal}
195
195
  oninput={(e) => onchange((e.target as HTMLInputElement).value)}
196
196
  placeholder="#000000"
197
- class="max-w-32 font-mono text-sm"
197
+ class="svadmin-u-1d274d2422d8 svadmin-u-0e65706bcccd svadmin-u-fc7473ca09eb"
198
198
  {disabled}
199
199
  />
200
200
  {#if strVal}
201
201
  <span
202
- class="h-8 w-8 rounded-full border border-border shadow-sm"
202
+ class="svadmin-u-ed8a5df7b2fb svadmin-u-2bbcfc3b5179 svadmin-u-ac204c108886 svadmin-u-ca6bcd4b6f3f svadmin-u-18049387f0af svadmin-u-438b2237b8d6"
203
203
  style="background-color: {strVal}"
204
204
  ></span>
205
205
  {/if}
@@ -247,7 +247,7 @@
247
247
  {disabled}
248
248
  rows={10}
249
249
  placeholder={i18n.t('field.enterValue', { label: field.label })}
250
- class="resize-y"
250
+ class="svadmin-u-5bd7b080992c"
251
251
  />
252
252
  {/if}
253
253
 
@@ -263,7 +263,7 @@
263
263
  {disabled}
264
264
  rows={4}
265
265
  placeholder={i18n.t('field.enterValue', { label: field.label })}
266
- class="resize-y"
266
+ class="svadmin-u-5bd7b080992c"
267
267
  />
268
268
 
269
269
  {:else if field.type === 'tree-select' || field.type === 'treeselect'}
@@ -316,7 +316,7 @@
316
316
  id={field.key}
317
317
  name={field.key}
318
318
  data-slot="select"
319
- class="flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50"
319
+ class="svadmin-u-60fbb7713999 svadmin-u-426b8b75185b 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-03b4dd7f172b svadmin-u-fc7473ca09eb svadmin-u-582e6ef4b245 svadmin-u-9c24ab70af61 svadmin-u-55d048ebfb1c svadmin-u-608dd26cd5ba svadmin-u-80b9d0ae125f svadmin-u-6b22a22a9752 svadmin-u-5f533b3a7de7 svadmin-u-b29d8adbad2e"
320
320
  value={strVal}
321
321
  onchange={(e) => onchange((e.target as HTMLSelectElement).value)}
322
322
  required={field.required}
@@ -352,14 +352,14 @@
352
352
  <input type="hidden" name={`${field.key}[]`} value={String(selectedValue)} />
353
353
  {/each}
354
354
  <div
355
- class="space-y-2 rounded-lg border border-input p-3 max-h-48 overflow-y-auto"
355
+ class="svadmin-u-6f7e013d6499 svadmin-u-5f22e64f2282 svadmin-u-ca6bcd4b6f3f svadmin-u-e5795dad4d22 svadmin-u-eb6e8b881acd svadmin-u-558f64349245 svadmin-u-92bf82f493b1"
356
356
  role="group"
357
357
  aria-labelledby="label-{field.key}"
358
358
  aria-describedby={errorId}
359
359
  data-invalid={invalid || undefined}
360
360
  >
361
361
  {#each field.options ?? [] as opt, _i (_i)}
362
- <label class="flex items-center gap-2 text-sm cursor-pointer hover:bg-muted/50 rounded px-1 py-0.5 transition-colors">
362
+ <label class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-77a2a20e90d4 svadmin-u-fc7473ca09eb svadmin-u-34516836730d svadmin-u-39f703dbe296 svadmin-u-07389a777c1f svadmin-u-d8e0e382c67b svadmin-u-465609a240a8 svadmin-u-ceb69a6b0e5f">
363
363
  <Checkbox
364
364
  id={`${field.key}-${opt.value}`}
365
365
  checked={multiVal.includes(opt.value)}
@@ -372,16 +372,16 @@
372
372
  </label>
373
373
  {/each}
374
374
  {#if !(field.options?.length)}
375
- <p class="text-xs text-muted-foreground">{i18n.t('field.noOptions')}</p>
375
+ <p class="svadmin-u-359090c2d529 svadmin-u-bfa603190748">{i18n.t('field.noOptions')}</p>
376
376
  {/if}
377
377
  </div>
378
378
  {#if multiVal.length > 0}
379
- <div class="flex flex-wrap gap-1 mt-1">
379
+ <div class="svadmin-u-60fbb7713999 svadmin-u-1eb5c6df38c1 svadmin-u-44ee8ba0a421 svadmin-u-b6b02c0ebef6">
380
380
  {#each multiVal as v, _i (_i)}
381
381
  {@const label = field.options?.find((o: { label: string; value: string | number }) => o.value === v)?.label ?? String(v)}
382
- <Badge variant="secondary" class="gap-1">
382
+ <Badge variant="secondary" class="svadmin-u-44ee8ba0a421">
383
383
  {label}
384
- <button type="button" onclick={() => toggleMulti(v)} class="ml-0.5 rounded-sm hover:text-destructive hover:bg-destructive/10 transition-colors" aria-label={i18n.t('common.clear')}>×</button>
384
+ <button type="button" onclick={() => toggleMulti(v)} class="svadmin-u-b45ce4b65d53 svadmin-u-36d4469299aa svadmin-u-51e95020d6f2 svadmin-u-8db899b4e072 svadmin-u-ceb69a6b0e5f" aria-label={i18n.t('common.clear')}>×</button>
385
385
  </Badge>
386
386
  {/each}
387
387
  </div>
@@ -389,7 +389,7 @@
389
389
 
390
390
  {:else if field.type === 'boolean'}
391
391
  <input type="hidden" name={field.key} value={String(boolVal)} />
392
- <div class="flex items-center gap-2 pt-1">
392
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-77a2a20e90d4 svadmin-u-6b7d6e21ccbd">
393
393
  <Switch
394
394
  id={field.key}
395
395
  checked={boolVal}
@@ -398,22 +398,22 @@
398
398
  aria-describedby={errorId}
399
399
  disabled={disabled}
400
400
  />
401
- <span class="text-sm text-muted-foreground">{boolVal ? i18n.t('common.yes') : i18n.t('common.no')}</span>
401
+ <span class="svadmin-u-fc7473ca09eb svadmin-u-bfa603190748">{boolVal ? i18n.t('common.yes') : i18n.t('common.no')}</span>
402
402
  </div>
403
403
 
404
404
  {:else if field.type === 'tags'}
405
405
  {#each tagsVal as tag, tagIndex (`${tag}-${tagIndex}`)}
406
406
  <input type="hidden" name={`${field.key}[]`} value={tag} />
407
407
  {/each}
408
- <div class="space-y-2">
409
- <div class="flex flex-wrap gap-1.5">
408
+ <div class="svadmin-u-6f7e013d6499">
409
+ <div class="svadmin-u-60fbb7713999 svadmin-u-1eb5c6df38c1 svadmin-u-58284b4ea568">
410
410
  {#each tagsVal as tag, i (i)}
411
- <Badge variant="secondary" class="gap-1">
411
+ <Badge variant="secondary" class="svadmin-u-44ee8ba0a421">
412
412
  {tag}
413
413
  <button
414
414
  type="button"
415
415
  onclick={() => removeTag(i)}
416
- class="ml-0.5 rounded-sm hover:text-destructive hover:bg-destructive/10 transition-colors"
416
+ class="svadmin-u-b45ce4b65d53 svadmin-u-36d4469299aa svadmin-u-51e95020d6f2 svadmin-u-8db899b4e072 svadmin-u-ceb69a6b0e5f"
417
417
  aria-label={i18n.t('common.clear')}
418
418
  >×</button>
419
419
  </Badge>
@@ -447,30 +447,30 @@
447
447
  {#each imagesVal as url, imageIndex (imageIndex)}
448
448
  <input type="hidden" name={`${field.key}[]`} value={url} />
449
449
  {/each}
450
- <div class="space-y-2">
450
+ <div class="svadmin-u-6f7e013d6499">
451
451
  {#each imagesVal as url, i (i)}
452
- <div class="flex items-center gap-2">
452
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-77a2a20e90d4">
453
453
  <Input
454
454
  id={i === 0 ? field.key : undefined}
455
455
  type="text"
456
456
  value={url}
457
457
  oninput={(e) => updateImage(i, (e.target as HTMLInputElement).value)}
458
458
  placeholder="https://example.com/image.jpg"
459
- class="flex-1"
459
+ class="svadmin-u-36e579c0b41c"
460
460
  aria-invalid={invalid || undefined}
461
461
  aria-describedby={errorId}
462
462
  {disabled}
463
463
  />
464
464
  {#if url}
465
- <div class="size-9 shrink-0"><MediaThumbnail src={url} alt="preview" size="full" fit="cover" showOverlay={false} /></div>
465
+ <div class="svadmin-u-665f07fe73cc svadmin-u-012fbd121f37"><MediaThumbnail src={url} alt="preview" size="full" fit="cover" showOverlay={false} /></div>
466
466
  {/if}
467
- <TooltipButton tooltip={i18n.t('common.removeImage')} variant="ghost" size="icon" class="h-8 w-8 shrink-0" onclick={() => removeImage(i)}>
468
- <X class="h-3.5 w-3.5" />
467
+ <TooltipButton tooltip={i18n.t('common.removeImage')} variant="ghost" size="icon" class="svadmin-u-ed8a5df7b2fb svadmin-u-2bbcfc3b5179 svadmin-u-012fbd121f37" onclick={() => removeImage(i)}>
468
+ <X class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c" />
469
469
  </TooltipButton>
470
470
  </div>
471
471
  {/each}
472
472
  <Button variant="outline" size="sm" type="button" onclick={addImage}>
473
- <Plus class="h-3.5 w-3.5 mr-1" /> {i18n.t('field.addImage')}
473
+ <Plus class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c svadmin-u-618162408e7a" /> {i18n.t('field.addImage')}
474
474
  </Button>
475
475
  </div>
476
476
 
@@ -497,7 +497,7 @@
497
497
  aria-invalid={invalid || undefined}
498
498
  aria-describedby={errorId}
499
499
  rows={6}
500
- class="resize-y font-mono text-xs"
500
+ class="svadmin-u-5bd7b080992c svadmin-u-0e65706bcccd svadmin-u-359090c2d529"
501
501
  />
502
502
 
503
503
  {:else}
@@ -141,20 +141,20 @@
141
141
  }
142
142
  </script>
143
143
 
144
- <div class={cn('w-full rounded-lg border border-border bg-card p-4 shadow-xs space-y-3', className)} data-testid="filter-builder">
145
- <div class="flex items-center justify-between gap-2 border-b border-border/60 pb-3">
146
- <div class="flex items-center gap-2">
147
- <FilterIcon class="h-4 w-4 text-muted-foreground" />
148
- <span class="text-sm font-medium text-foreground">
144
+ <div class={cn('svadmin-u-6da6a3c3f741 svadmin-u-5f22e64f2282 svadmin-u-ca6bcd4b6f3f svadmin-u-18049387f0af svadmin-u-cd0ad9a56558 svadmin-u-8e63407b5ceb svadmin-u-cef5b893cf23 svadmin-u-6ed543e2fbbb', className)} data-testid="filter-builder">
145
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-8ef2268efbbc svadmin-u-77a2a20e90d4 svadmin-u-65fdbade2025 svadmin-u-05faf5c801ff svadmin-u-7fcf9124b5df">
146
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-77a2a20e90d4">
147
+ <FilterIcon class="svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3 svadmin-u-bfa603190748" />
148
+ <span class="svadmin-u-fc7473ca09eb svadmin-u-2689f3958069 svadmin-u-d4108abe6359">
149
149
  {i18n.t('common.filterBuilder', undefined) ?? '高级筛选'}
150
150
  </span>
151
151
  {#if rules.length > 1}
152
- <div class="flex items-center rounded-md border border-border bg-muted/40 p-0.5 text-xs">
152
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-421ac2be5045 svadmin-u-ca6bcd4b6f3f svadmin-u-18049387f0af svadmin-u-b00f43c30c2b svadmin-u-de8350a3bbad svadmin-u-359090c2d529">
153
153
  <button
154
154
  type="button"
155
155
  class={cn(
156
- 'rounded px-2 py-0.5 text-xs transition-colors',
157
- logicalOperator === 'and' ? 'bg-background font-semibold text-foreground shadow-xs' : 'text-muted-foreground hover:text-foreground'
156
+ 'svadmin-u-07389a777c1f svadmin-u-d5eab218aa34 svadmin-u-465609a240a8 svadmin-u-359090c2d529 svadmin-u-ceb69a6b0e5f',
157
+ logicalOperator === 'and' ? 'svadmin-u-e6f9e383a762 svadmin-u-e83a7042bc91 svadmin-u-d4108abe6359 svadmin-u-cef5b893cf23' : 'svadmin-u-bfa603190748 svadmin-u-ea7b2e9e070e'
158
158
  )}
159
159
  onclick={() => (logicalOperator = 'and')}
160
160
  >
@@ -163,8 +163,8 @@
163
163
  <button
164
164
  type="button"
165
165
  class={cn(
166
- 'rounded px-2 py-0.5 text-xs transition-colors',
167
- logicalOperator === 'or' ? 'bg-background font-semibold text-foreground shadow-xs' : 'text-muted-foreground hover:text-foreground'
166
+ 'svadmin-u-07389a777c1f svadmin-u-d5eab218aa34 svadmin-u-465609a240a8 svadmin-u-359090c2d529 svadmin-u-ceb69a6b0e5f',
167
+ logicalOperator === 'or' ? 'svadmin-u-e6f9e383a762 svadmin-u-e83a7042bc91 svadmin-u-d4108abe6359 svadmin-u-cef5b893cf23' : 'svadmin-u-bfa603190748 svadmin-u-ea7b2e9e070e'
168
168
  )}
169
169
  onclick={() => (logicalOperator = 'or')}
170
170
  >
@@ -174,38 +174,38 @@
174
174
  {/if}
175
175
  </div>
176
176
 
177
- <div class="flex items-center gap-1.5">
177
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-58284b4ea568">
178
178
  <Button
179
179
  variant="ghost"
180
180
  size="sm"
181
- class="h-8 gap-1 text-xs"
181
+ class="svadmin-u-ed8a5df7b2fb svadmin-u-44ee8ba0a421 svadmin-u-359090c2d529"
182
182
  data-testid="filter-builder-reset"
183
183
  onclick={reset}
184
184
  >
185
- <RotateCcw class="h-3.5 w-3.5" />
185
+ <RotateCcw class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c" />
186
186
  {i18n.t('common.reset', undefined) ?? '重置'}
187
187
  </Button>
188
188
  <Button
189
189
  variant="default"
190
190
  size="sm"
191
- class="h-8 gap-1 text-xs"
191
+ class="svadmin-u-ed8a5df7b2fb svadmin-u-44ee8ba0a421 svadmin-u-359090c2d529"
192
192
  data-testid="filter-builder-apply"
193
193
  onclick={apply}
194
194
  >
195
- <Check class="h-3.5 w-3.5" />
195
+ <Check class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c" />
196
196
  {i18n.t('common.confirm', undefined) ?? '应用'}
197
197
  </Button>
198
198
  </div>
199
199
  </div>
200
200
 
201
- <div class="space-y-2">
201
+ <div class="svadmin-u-6f7e013d6499">
202
202
  {#each rules as rule, index (rule.id)}
203
203
  {@const fieldDef = availableFields.find((f) => f.key === rule.field)}
204
- <div class="flex flex-wrap sm:flex-nowrap items-center gap-2 rounded-md bg-muted/20 p-2 border border-border/40">
204
+ <div class="svadmin-u-60fbb7713999 svadmin-u-1eb5c6df38c1 svadmin-u-3fd0f778c8d9 svadmin-u-3960ffc248d9 svadmin-u-77a2a20e90d4 svadmin-u-421ac2be5045 svadmin-u-967d113a1451 svadmin-u-7660b450905a svadmin-u-ca6bcd4b6f3f svadmin-u-6ee2d41e2d2d">
205
205
  <!-- Field select -->
206
- <div class="w-36 shrink-0">
206
+ <div class="svadmin-u-df403bbae8fc svadmin-u-012fbd121f37">
207
207
  <Select
208
- class="h-8 text-xs"
208
+ class="svadmin-u-ed8a5df7b2fb svadmin-u-359090c2d529"
209
209
  value={rule.field}
210
210
  onchange={(e: Event) => {
211
211
  rule.field = (e.currentTarget as HTMLSelectElement).value;
@@ -218,9 +218,9 @@
218
218
  </div>
219
219
 
220
220
  <!-- Operator select -->
221
- <div class="w-36 shrink-0">
221
+ <div class="svadmin-u-df403bbae8fc svadmin-u-012fbd121f37">
222
222
  <Select
223
- class="h-8 text-xs"
223
+ class="svadmin-u-ed8a5df7b2fb svadmin-u-359090c2d529"
224
224
  value={rule.operator}
225
225
  onchange={(e: Event) => {
226
226
  rule.operator = (e.currentTarget as HTMLSelectElement).value as CrudOperator;
@@ -233,14 +233,14 @@
233
233
  </div>
234
234
 
235
235
  <!-- Value input -->
236
- <div class="flex-1 min-w-[120px]">
236
+ <div class="svadmin-u-36e579c0b41c svadmin-u-a9ef791a0777">
237
237
  {#if rule.operator === 'null' || rule.operator === 'nnull'}
238
- <div class="h-8 flex items-center px-3 text-xs text-muted-foreground italic bg-muted/30 rounded-md">
238
+ <div class="svadmin-u-ed8a5df7b2fb svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-0e17f2bd9074 svadmin-u-359090c2d529 svadmin-u-bfa603190748 italic svadmin-u-2859c861d7de svadmin-u-421ac2be5045">
239
239
  无需填值
240
240
  </div>
241
241
  {:else if fieldDef?.type === 'select' && fieldDef.options}
242
242
  <Select
243
- class="h-8 text-xs"
243
+ class="svadmin-u-ed8a5df7b2fb svadmin-u-359090c2d529"
244
244
  value={String(rule.value ?? '')}
245
245
  onchange={(e: Event) => {
246
246
  rule.value = (e.currentTarget as HTMLSelectElement).value;
@@ -253,7 +253,7 @@
253
253
  </Select>
254
254
  {:else if fieldDef?.type === 'boolean'}
255
255
  <Select
256
- class="h-8 text-xs"
256
+ class="svadmin-u-ed8a5df7b2fb svadmin-u-359090c2d529"
257
257
  value={String(rule.value ?? '')}
258
258
  onchange={(e: Event) => {
259
259
  const val = (e.currentTarget as HTMLSelectElement).value;
@@ -267,7 +267,7 @@
267
267
  {:else}
268
268
  <Input
269
269
  type={fieldDef?.type === 'number' ? 'number' : 'text'}
270
- class="h-8 text-xs"
270
+ class="svadmin-u-ed8a5df7b2fb svadmin-u-359090c2d529"
271
271
  placeholder="输入筛选值..."
272
272
  value={String(rule.value ?? '')}
273
273
  oninput={(e: Event) => {
@@ -283,14 +283,14 @@
283
283
  type="button"
284
284
  variant="ghost"
285
285
  size="icon-sm"
286
- class="shrink-0 text-muted-foreground hover:text-destructive"
286
+ class="svadmin-u-012fbd121f37 svadmin-u-bfa603190748 svadmin-u-51e95020d6f2"
287
287
  onclick={() => removeRule(index)}
288
288
  >
289
- <Trash2 class="h-3.5 w-3.5" />
289
+ <Trash2 class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c" />
290
290
  </Button>
291
291
  </div>
292
292
  {:else}
293
- <div class="rounded-md border border-dashed border-border/80 py-4 text-center text-xs text-muted-foreground">
293
+ <div class="svadmin-u-421ac2be5045 svadmin-u-ca6bcd4b6f3f svadmin-u-a29b7a649c77 svadmin-u-c9ed8c5f79ae svadmin-u-cb11fec3bb46 svadmin-u-ca6bf63030aa svadmin-u-359090c2d529 svadmin-u-bfa603190748">
294
294
  暂无筛选条件,点击下方按钮添加规则
295
295
  </div>
296
296
  {/each}
@@ -301,10 +301,10 @@
301
301
  variant="outline"
302
302
  size="sm"
303
303
  data-testid="filter-builder-add-rule"
304
- class="w-full gap-1.5 border-dashed text-xs h-8"
304
+ class="svadmin-u-6da6a3c3f741 svadmin-u-58284b4ea568 svadmin-u-a29b7a649c77 svadmin-u-359090c2d529 svadmin-u-ed8a5df7b2fb"
305
305
  onclick={addRule}
306
306
  >
307
- <Plus class="h-3.5 w-3.5" />
307
+ <Plus class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c" />
308
308
  {i18n.t('common.addRule', undefined) ?? '添加筛选条件'}
309
309
  </Button>
310
310
  </div>
@@ -142,7 +142,7 @@
142
142
  }
143
143
  </script>
144
144
 
145
- <div class={cn('relative inline-block text-left', className)} use:clickOutside={handleClickOutside}>
145
+ <div class={cn('svadmin-u-d89972fe17d6 svadmin-u-bb0c4bfc52bd svadmin-u-2eba0d65d059', className)} use:clickOutside={handleClickOutside}>
146
146
  {#if trigger}
147
147
  {@render trigger()}
148
148
  {:else}
@@ -150,8 +150,8 @@
150
150
  variant={isFilterActive ? 'secondary' : 'ghost'}
151
151
  size="icon-sm"
152
152
  class={cn(
153
- 'relative h-7 w-7 rounded-sm p-0 transition-colors',
154
- isFilterActive ? 'text-primary bg-primary/10 border border-primary/20 hover:bg-primary/20' : 'text-muted-foreground hover:text-foreground'
153
+ 'svadmin-u-d89972fe17d6 svadmin-u-d0a52b312f7d svadmin-u-cbbf90f9a828 svadmin-u-36d4469299aa svadmin-u-8a539c7fe216 svadmin-u-ceb69a6b0e5f',
154
+ isFilterActive ? 'svadmin-u-20aaf08a7ed1 svadmin-u-375dc44df6e9 svadmin-u-ca6bcd4b6f3f svadmin-u-a6afccfc915b svadmin-u-7f9a026b5897' : 'svadmin-u-bfa603190748 svadmin-u-ea7b2e9e070e'
155
155
  )}
156
156
  onclick={handleTriggerClick}
157
157
  aria-label={title}
@@ -159,11 +159,11 @@
159
159
  aria-haspopup="dialog"
160
160
  title={title}
161
161
  >
162
- <Filter class="h-3.5 w-3.5" />
162
+ <Filter class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c" />
163
163
  {#if isFilterActive}
164
- <span class="absolute -top-0.5 -right-0.5 flex h-2 w-2">
165
- <span class="animate-ping absolute inline-flex h-full w-full rounded-full bg-primary opacity-75"></span>
166
- <span class="relative inline-flex rounded-full h-2 w-2 bg-primary"></span>
164
+ <span class="svadmin-u-da4dbfbc4fdc svadmin-u-2a95a5f480f7 svadmin-u-4c15f4f8c5ab svadmin-u-60fbb7713999 svadmin-u-2f2a842e50fa svadmin-u-940924b6e2d9">
165
+ <span class="svadmin-u-e9963c2ac628 svadmin-u-da4dbfbc4fdc svadmin-u-52083e7da442 svadmin-u-668b21aa5409 svadmin-u-6da6a3c3f741 svadmin-u-ac204c108886 svadmin-u-75b1bec3ea0e svadmin-u-f854738e0622"></span>
166
+ <span class="svadmin-u-d89972fe17d6 svadmin-u-52083e7da442 svadmin-u-ac204c108886 svadmin-u-2f2a842e50fa svadmin-u-940924b6e2d9 svadmin-u-75b1bec3ea0e"></span>
167
167
  </span>
168
168
  {/if}
169
169
  </Button>
@@ -172,68 +172,68 @@
172
172
  {#if open}
173
173
  <div
174
174
  class={cn(
175
- 'absolute z-50 mt-1.5 w-64 rounded-md border border-border bg-popover text-popover-foreground shadow-lg outline-none animate-in fade-in-0 zoom-in-95',
176
- align === 'right' ? 'right-0 origin-top-right' : 'left-0 origin-top-left'
175
+ 'svadmin-u-da4dbfbc4fdc svadmin-u-181b286668b5 svadmin-u-aac62f0e854f svadmin-u-6ca625288b1e svadmin-u-421ac2be5045 svadmin-u-ca6bcd4b6f3f svadmin-u-18049387f0af svadmin-u-e541d86d1ec8 svadmin-u-9b13e8ae5c9c svadmin-u-06bbb43166db svadmin-u-df37b1fd9495 svadmin-u-40137e897961 fade-in-0 zoom-in-95',
176
+ align === 'right' ? 'svadmin-u-d8cdcad240d1 svadmin-u-3c63a476b257' : 'svadmin-u-c78facc7a0a6 svadmin-u-2e479b8dbbd7'
177
177
  )}
178
178
  role="dialog"
179
179
  aria-label={title}
180
180
  >
181
- <div class="flex items-center justify-between border-b border-border/60 px-3 py-2">
182
- <span class="text-xs font-semibold text-foreground">{title}</span>
181
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-8ef2268efbbc svadmin-u-65fdbade2025 svadmin-u-05faf5c801ff svadmin-u-0e17f2bd9074 svadmin-u-03b4dd7f172b">
182
+ <span class="svadmin-u-359090c2d529 svadmin-u-e83a7042bc91 svadmin-u-d4108abe6359">{title}</span>
183
183
  <button
184
184
  type="button"
185
- class="rounded p-0.5 text-muted-foreground hover:bg-accent hover:text-foreground"
185
+ class="svadmin-u-07389a777c1f svadmin-u-de8350a3bbad svadmin-u-bfa603190748 svadmin-u-0557b88819cd svadmin-u-ea7b2e9e070e"
186
186
  onclick={handleClose}
187
187
  aria-label="Close"
188
188
  >
189
- <X class="h-3.5 w-3.5" />
189
+ <X class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c" />
190
190
  </button>
191
191
  </div>
192
192
 
193
- <div class="p-3">
193
+ <div class="svadmin-u-eb6e8b881acd">
194
194
  {#if children}
195
195
  {@render children()}
196
196
  {:else if options && options.length > 0}
197
197
  {#if options.length > 5}
198
- <div class="relative mb-2">
199
- <Search class="absolute left-2 top-1/2 -translate-y-1/2 h-3.5 w-3.5 text-muted-foreground" />
198
+ <div class="svadmin-u-d89972fe17d6 svadmin-u-a77ed4d908c0">
199
+ <Search class="svadmin-u-da4dbfbc4fdc svadmin-u-d83be576442b svadmin-u-d694ba66e322 svadmin-u-36b381be4df3 svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c svadmin-u-bfa603190748" />
200
200
  <Input
201
201
  bind:value={optionSearch}
202
202
  placeholder="Search options..."
203
- class="h-7 pl-7 text-xs"
203
+ class="svadmin-u-d0a52b312f7d svadmin-u-20ebde75765d svadmin-u-359090c2d529"
204
204
  />
205
205
  </div>
206
206
  {/if}
207
- <div class="max-h-44 overflow-y-auto space-y-1.5 pr-1">
207
+ <div class="svadmin-u-f81ede24db81 svadmin-u-92bf82f493b1 svadmin-u-5a2508227c6a svadmin-u-eda955402ba6">
208
208
  {#each filteredOptions as opt (opt.value)}
209
- <label class="flex items-center gap-2 rounded px-1.5 py-1 text-xs hover:bg-accent cursor-pointer">
209
+ <label class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-77a2a20e90d4 svadmin-u-07389a777c1f svadmin-u-45d828117213 svadmin-u-660d2effb880 svadmin-u-359090c2d529 svadmin-u-0557b88819cd svadmin-u-34516836730d">
210
210
  <input
211
211
  type="checkbox"
212
212
  checked={internalSelectedValues.includes(opt.value)}
213
213
  onchange={() => toggleOption(opt.value)}
214
- class="h-3.5 w-3.5 rounded border-muted-foreground text-primary focus:ring-primary"
214
+ class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c svadmin-u-07389a777c1f svadmin-u-6ffcd84c45e5 svadmin-u-20aaf08a7ed1 svadmin-u-1a5f9520d7fa"
215
215
  />
216
- <span class="flex-1 truncate">{opt.label}</span>
216
+ <span class="svadmin-u-36e579c0b41c svadmin-u-f283ea9bea0e">{opt.label}</span>
217
217
  </label>
218
218
  {:else}
219
- <div class="py-2 text-center text-xs text-muted-foreground">No options match</div>
219
+ <div class="svadmin-u-03b4dd7f172b svadmin-u-ca6bf63030aa svadmin-u-359090c2d529 svadmin-u-bfa603190748">No options match</div>
220
220
  {/each}
221
221
  </div>
222
222
  {:else}
223
223
  <Input
224
224
  bind:value={internalTextValue}
225
225
  {placeholder}
226
- class="h-8 text-xs"
226
+ class="svadmin-u-ed8a5df7b2fb svadmin-u-359090c2d529"
227
227
  onkeydown={(e) => { if (e.key === 'Enter') handleApply(); }}
228
228
  />
229
229
  {/if}
230
230
  </div>
231
231
 
232
- <div class="flex items-center justify-between border-t border-border/60 bg-muted/30 px-3 py-2">
232
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-8ef2268efbbc svadmin-u-b950dda299d3 svadmin-u-05faf5c801ff svadmin-u-2859c861d7de svadmin-u-0e17f2bd9074 svadmin-u-03b4dd7f172b">
233
233
  <Button
234
234
  variant="ghost"
235
235
  size="sm"
236
- class="h-7 px-2 text-xs text-muted-foreground hover:text-foreground"
236
+ class="svadmin-u-d0a52b312f7d svadmin-u-d5eab218aa34 svadmin-u-359090c2d529 svadmin-u-bfa603190748 svadmin-u-ea7b2e9e070e"
237
237
  onclick={handleReset}
238
238
  >
239
239
  {resetLabel}
@@ -241,7 +241,7 @@
241
241
  <Button
242
242
  variant="default"
243
243
  size="sm"
244
- class="h-7 px-3 text-xs"
244
+ class="svadmin-u-d0a52b312f7d svadmin-u-0e17f2bd9074 svadmin-u-359090c2d529"
245
245
  onclick={handleApply}
246
246
  >
247
247
  {applyLabel}
@@ -39,47 +39,47 @@
39
39
 
40
40
  <AuthPageShell brand={title} title={sent ? i18n.t('auth.resetLinkSentTitle') : i18n.t('auth.forgotPassword')} description={sent ? i18n.t('auth.resetLinkSentDescription') : i18n.t('auth.forgotPasswordDescription')}>
41
41
  {#if sent}
42
- <div class="space-y-4">
43
- <Button variant="outline" class="w-full" onclick={() => adminContext.navigate('/login')}>
44
- <ArrowLeft class="h-4 w-4 mr-2" />
42
+ <div class="svadmin-u-3e7ce58d64fa">
43
+ <Button variant="outline" class="svadmin-u-6da6a3c3f741" onclick={() => adminContext.navigate('/login')}>
44
+ <ArrowLeft class="svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3 svadmin-u-d2347e8497a9" />
45
45
  {i18n.t('auth.backToLogin')}
46
46
  </Button>
47
47
  </div>
48
48
  {:else}
49
- <form onsubmit={handleSubmit} class="space-y-5">
49
+ <form onsubmit={handleSubmit} class="svadmin-u-b43b4c086d9a">
50
50
  {#if error}
51
51
  <Alert.Root variant="destructive">
52
- <AlertCircle class="h-4 w-4" />
52
+ <AlertCircle class="svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3" />
53
53
  <Alert.Description>{error}</Alert.Description>
54
54
  </Alert.Root>
55
55
  {/if}
56
56
 
57
- <div class="space-y-2">
57
+ <div class="svadmin-u-6f7e013d6499">
58
58
  <Label for="forgot-identifier">{i18n.t('auth.usernameOrEmail')}</Label>
59
- <div class="relative">
60
- <User class="absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground pointer-events-none z-[1]" />
59
+ <div class="svadmin-u-d89972fe17d6">
60
+ <User class="svadmin-u-da4dbfbc4fdc svadmin-u-22e59b722111 svadmin-u-d694ba66e322 svadmin-u-36b381be4df3 svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3 svadmin-u-bfa603190748 svadmin-u-a4326536b8f5 svadmin-u-536a7530a44f" />
61
61
  <Input
62
62
  id="forgot-identifier"
63
63
  type="text"
64
64
  placeholder={i18n.t('auth.identifierPlaceholder')}
65
65
  bind:value={identifier}
66
- class="pl-9"
66
+ class="svadmin-u-9e83b2412bc9"
67
67
  autocomplete="username"
68
68
  />
69
69
  </div>
70
70
  </div>
71
71
 
72
- <Button type="submit" class="w-full h-10" disabled={forgot.isLoading}>
72
+ <Button type="submit" class="svadmin-u-6da6a3c3f741 svadmin-u-426b8b75185b" disabled={forgot.isLoading}>
73
73
  {#if forgot.isLoading}
74
- <Loader2 class="h-4 w-4 animate-spin mr-2" />
74
+ <Loader2 class="svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3 svadmin-u-afbdd13a380e svadmin-u-d2347e8497a9" />
75
75
  {/if}
76
76
  {i18n.t('auth.sendResetLink')}
77
77
  </Button>
78
78
  </form>
79
79
 
80
- <div class="mt-6 flex items-center justify-center border-t pt-5">
81
- <Button variant="link" class="text-sm h-auto p-0 font-medium inline-flex items-center gap-1" onclick={() => adminContext.navigate('/login')}>
82
- <ArrowLeft class="h-3 w-3" />
80
+ <div class="svadmin-u-31f2553311b6 svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-86843cf1e227 svadmin-u-b950dda299d3 svadmin-u-52be28846b5f">
81
+ <Button variant="link" class="svadmin-u-fc7473ca09eb svadmin-u-b8f0a08ece1e svadmin-u-8a539c7fe216 svadmin-u-2689f3958069 svadmin-u-52083e7da442 svadmin-u-3960ffc248d9 svadmin-u-44ee8ba0a421" onclick={() => adminContext.navigate('/login')}>
82
+ <ArrowLeft class="svadmin-u-6a60c09e6aaa svadmin-u-9cea05671a29" />
83
83
  {i18n.t('auth.backToLogin')}
84
84
  </Button>
85
85
  </div>