@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
@@ -133,20 +133,20 @@
133
133
  });
134
134
  </script>
135
135
 
136
- <div class="flex flex-col lg:flex-row gap-0 min-h-full">
136
+ <div class="svadmin-u-60fbb7713999 svadmin-u-8dddea0773ed svadmin-u-2adea12c41f3 svadmin-u-63a285be6490 svadmin-u-7a09f4b2d159">
137
137
  <!-- Left sidebar navigation -->
138
- <nav class="w-full lg:w-56 shrink-0 bg-muted/10 shadow-[inset_0_-1px_0_rgba(0,0,0,0.05)] lg:shadow-[inset_-1px_0_0_rgba(0,0,0,0.05)] dark:shadow-[inset_-1px_0_0_rgba(255,255,255,0.05)]">
138
+ <nav class="svadmin-u-6da6a3c3f741 svadmin-u-de96100841e6 svadmin-u-012fbd121f37 svadmin-u-8a25a995eb8e svadmin-u-7f044b149379 svadmin-u-2b64ecb90ede svadmin-u-18f4ce4080f9">
139
139
  <!-- Mobile: horizontal scroll tabs -->
140
- <div class="flex lg:hidden overflow-x-auto px-4 py-2 gap-1">
140
+ <div class="svadmin-u-60fbb7713999 svadmin-u-a327049cac5b svadmin-u-1384f66f41d0 svadmin-u-f0faeb26d656 svadmin-u-03b4dd7f172b svadmin-u-44ee8ba0a421">
141
141
  {#each resolvedSections as section, _i (_i)}
142
142
  {#each section.items as item, _j (_j)}
143
143
  {@const active = activeKey === item.key}
144
144
  <button
145
- class="flex items-center gap-2 px-3 py-2 text-sm font-medium rounded-md whitespace-nowrap transition-colors
146
- {active ? 'bg-background text-foreground shadow-sm' : 'text-muted-foreground hover:text-foreground hover:bg-background/50'}"
145
+ class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-77a2a20e90d4 svadmin-u-0e17f2bd9074 svadmin-u-03b4dd7f172b svadmin-u-fc7473ca09eb svadmin-u-2689f3958069 svadmin-u-421ac2be5045 svadmin-u-e82ae8be04aa svadmin-u-ceb69a6b0e5f
146
+ {active ? 'svadmin-u-e6f9e383a762 svadmin-u-d4108abe6359 svadmin-u-438b2237b8d6' : 'svadmin-u-bfa603190748 svadmin-u-ea7b2e9e070e svadmin-u-d01723c1dc46'}"
147
147
  onclick={() => adminContext.navigate(item.path)}
148
148
  >
149
- <item.icon class="h-4 w-4" />
149
+ <item.icon class="svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3" />
150
150
  {i18n.t(item.label)}
151
151
  </button>
152
152
  {/each}
@@ -154,27 +154,27 @@
154
154
  </div>
155
155
 
156
156
  <!-- Desktop: vertical nav with groups -->
157
- <div class="hidden lg:block py-6 px-3 space-y-6">
158
- <div class="px-3">
159
- <h2 class="text-lg font-semibold text-foreground">{i18n.t("settings.title")}</h2>
160
- <p class="text-xs text-muted-foreground mt-1">{i18n.t("settings.settingsDescription")}</p>
157
+ <div class="svadmin-u-99d72c7fc3e2 svadmin-u-d0ce7c24d9dd svadmin-u-940911bf310c svadmin-u-0e17f2bd9074 svadmin-u-b3542e058833">
158
+ <div class="svadmin-u-0e17f2bd9074">
159
+ <h2 class="svadmin-u-42536e69e639 svadmin-u-e83a7042bc91 svadmin-u-d4108abe6359">{i18n.t("settings.title")}</h2>
160
+ <p class="svadmin-u-359090c2d529 svadmin-u-bfa603190748 svadmin-u-b6b02c0ebef6">{i18n.t("settings.settingsDescription")}</p>
161
161
  </div>
162
162
  {#each resolvedSections as section, _i (_i)}
163
163
  <div>
164
- <h3 class="px-3 mb-1 text-xs font-medium text-muted-foreground">
164
+ <h3 class="svadmin-u-0e17f2bd9074 svadmin-u-65281709dacf svadmin-u-359090c2d529 svadmin-u-2689f3958069 svadmin-u-bfa603190748">
165
165
  {i18n.t(section.group)}
166
166
  </h3>
167
- <div class="space-y-0.5">
167
+ <div class="svadmin-u-e2eedc5718f0">
168
168
  {#each section.items as item, _j (_j)}
169
169
  {@const active = activeKey === item.key}
170
170
  <button
171
- class="flex w-full items-center gap-3 rounded-lg px-3 py-2 text-sm transition-all
171
+ class="svadmin-u-60fbb7713999 svadmin-u-6da6a3c3f741 svadmin-u-3960ffc248d9 svadmin-u-1004c0c3954c svadmin-u-5f22e64f2282 svadmin-u-0e17f2bd9074 svadmin-u-03b4dd7f172b svadmin-u-fc7473ca09eb svadmin-u-0fe7d7d814d0
172
172
  {active
173
- ? 'bg-primary/10 text-primary font-medium'
174
- : 'text-muted-foreground hover:bg-accent hover:text-accent-foreground'}"
173
+ ? 'svadmin-u-375dc44df6e9 svadmin-u-20aaf08a7ed1 svadmin-u-2689f3958069'
174
+ : 'svadmin-u-bfa603190748 svadmin-u-0557b88819cd svadmin-u-3a99b2b8fbbe'}"
175
175
  onclick={() => adminContext.navigate(item.path)}
176
176
  >
177
- <item.icon class="h-4 w-4 shrink-0" />
177
+ <item.icon class="svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3 svadmin-u-012fbd121f37" />
178
178
  {i18n.t(item.label)}
179
179
  </button>
180
180
  {/each}
@@ -185,7 +185,7 @@
185
185
  </nav>
186
186
 
187
187
  <!-- Right content area -->
188
- <div class="min-w-0 w-full flex-1 p-6 lg:p-8 {contentWidth}">
188
+ <div class="svadmin-u-7e0b7cdf1a94 svadmin-u-6da6a3c3f741 svadmin-u-36e579c0b41c svadmin-u-0478c89a150f svadmin-u-793c2275b157 {contentWidth}">
189
189
  {#if activeKey === "profile"}
190
190
  {#if profile}{@render profile()}{:else}<ProfilePage />{/if}
191
191
  {:else if activeKey === "appearance"}
@@ -1,12 +1,12 @@
1
1
  <script lang="ts">
2
- // ShowInferencer — 基于资源定义零配置渲染详情页
3
- // 从 URL 自动提取 :id 参数
2
+ // ShowInferencer renders a detail page from the resource definition with no page-specific configuration.
3
+ // The :id parameter is extracted from the URL automatically.
4
4
  import ShowPage from './ShowPage.svelte';
5
5
  import { useParsed } from '@svadmin/core';
6
6
 
7
7
  interface Props {
8
8
  resourceName: string;
9
- /** 可选:显式指定 id,默认从 URL 解析 */
9
+ /** Optional explicit id; defaults to the value parsed from the URL. */
10
10
  id?: string | number;
11
11
  class?: string;
12
12
  }
@@ -1,6 +1,6 @@
1
1
  interface Props {
2
2
  resourceName: string;
3
- /** 可选:显式指定 id,默认从 URL 解析 */
3
+ /** Optional explicit id; defaults to the value parsed from the URL. */
4
4
  id?: string | number;
5
5
  class?: string;
6
6
  }
@@ -47,15 +47,15 @@
47
47
 
48
48
  const gridColumnClass = $derived.by(() => {
49
49
  switch (columns) {
50
- case 4: return 'grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4';
51
- case 3: return 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-3';
52
- case 2: return 'grid-cols-1 sm:grid-cols-2';
50
+ case 4: return 'svadmin-u-d7c8339810d3 svadmin-u-e00ad81645a2 svadmin-u-9a638cfe8212 svadmin-u-4558bce6d8c0';
51
+ case 3: return 'svadmin-u-d7c8339810d3 svadmin-u-e00ad81645a2 svadmin-u-19d9b25e8fae';
52
+ case 2: return 'svadmin-u-d7c8339810d3 svadmin-u-e00ad81645a2';
53
53
  default: return 'grid-cols-1';
54
54
  }
55
55
  });
56
56
  </script>
57
57
 
58
- <div class="{isCompact ? 'space-y-3' : 'space-y-4'} {className}">
58
+ <div class="{isCompact ? 'svadmin-u-6ed543e2fbbb' : 'svadmin-u-3e7ce58d64fa'} {className}">
59
59
  <PageHeader
60
60
  title="{resource.label} {i18n.t('common.detail')} #{id}"
61
61
  {density}
@@ -80,27 +80,27 @@
80
80
  </PageHeader>
81
81
 
82
82
  {#if query.isLoading}
83
- <Card.Root class="overflow-hidden border-border/40 shadow-sm">
84
- <Card.Content class="p-0">
83
+ <Card.Root class="svadmin-u-2cd02d11d1af svadmin-u-6ee2d41e2d2d svadmin-u-438b2237b8d6">
84
+ <Card.Content class="svadmin-u-8a539c7fe216">
85
85
  {#each showFields.slice(0, 6) as _, i (i)}
86
- <div class="flex flex-col sm:flex-row {isCompact ? 'px-4 py-2' : 'px-4 sm:px-6 py-3 sm:py-4'} {i % 2 === 1 ? 'bg-muted/20' : ''}">
87
- <Skeleton class="h-4 w-1/2 sm:w-1/4" />
88
- <Skeleton class="h-4 w-3/4 sm:w-2/5 mt-1 sm:mt-0 sm:ml-auto" />
86
+ <div class="svadmin-u-60fbb7713999 svadmin-u-8dddea0773ed svadmin-u-020ba687fa12 {isCompact ? 'svadmin-u-f0faeb26d656 svadmin-u-03b4dd7f172b' : 'svadmin-u-f0faeb26d656 svadmin-u-7a9aabfcd059 svadmin-u-1b2d54a3fd12 svadmin-u-b7daff9b9ddd'} {i % 2 === 1 ? 'svadmin-u-967d113a1451' : ''}">
87
+ <Skeleton class="svadmin-u-11e59c6d5f6b svadmin-u-b7ce0d2f6c04 svadmin-u-5a14cc9f9ed4" />
88
+ <Skeleton class="svadmin-u-11e59c6d5f6b svadmin-u-1d9f2d98d149 svadmin-u-d2ffb24f3e1d svadmin-u-b6b02c0ebef6 svadmin-u-dfe9bd9e7001 svadmin-u-77533d414653" />
89
89
  </div>
90
90
  {/each}
91
91
  </Card.Content>
92
92
  </Card.Root>
93
93
  {:else if query.data?.data}
94
94
  {#if layout === 'grid'}
95
- <Card.Root class="overflow-hidden border-border/40 shadow-sm">
96
- <Card.Content class="p-0">
97
- <dl class="grid divide-y divide-border/20 sm:divide-y-0 {gridColumnClass}">
95
+ <Card.Root class="svadmin-u-2cd02d11d1af svadmin-u-6ee2d41e2d2d svadmin-u-438b2237b8d6">
96
+ <Card.Content class="svadmin-u-8a539c7fe216">
97
+ <dl class="svadmin-u-f3c543ad5fe9 svadmin-u-fa6acbf81d74 svadmin-u-3533cbce9e93 svadmin-u-4d9da416df16 {gridColumnClass}">
98
98
  {#each showFields as field, i (i)}
99
99
  {@const value = ((query.data as { data: Record<string, unknown> }).data as Record<string, unknown>)[field.key]}
100
100
  {@const DisplayComponent = getDisplayComponent(field.type)}
101
- <div class="flex flex-col {bordered ? 'border-b border-r border-border/30 last:border-b-0 p-3 sm:p-4' : 'p-3 sm:p-4 border-b border-border/10'}">
102
- <dt class="text-xs font-medium text-muted-foreground mb-1">{field.label}</dt>
103
- <dd class="text-xs sm:text-sm text-foreground font-medium break-words">
101
+ <div class="svadmin-u-60fbb7713999 svadmin-u-8dddea0773ed {bordered ? 'svadmin-u-65fdbade2025 svadmin-u-5ceb636bd9f3 svadmin-u-cdf6e054e5e0 svadmin-u-b4cf72cd1cd8 svadmin-u-eb6e8b881acd svadmin-u-1884518576f2' : 'svadmin-u-eb6e8b881acd svadmin-u-1884518576f2 svadmin-u-65fdbade2025 svadmin-u-945ecb9a9005'}">
102
+ <dt class="svadmin-u-359090c2d529 svadmin-u-2689f3958069 svadmin-u-bfa603190748 svadmin-u-65281709dacf">{field.label}</dt>
103
+ <dd class="svadmin-u-359090c2d529 svadmin-u-e2327d142859 svadmin-u-d4108abe6359 svadmin-u-2689f3958069 svadmin-u-170cee3ff4e4">
104
104
  {#if DisplayComponent && value != null}
105
105
  <DisplayComponent
106
106
  {value}
@@ -117,14 +117,14 @@
117
117
  </Card.Content>
118
118
  </Card.Root>
119
119
  {:else}
120
- <Card.Root class="overflow-hidden border-border/40 shadow-sm">
121
- <Card.Content class="p-0 divide-y divide-border/20">
120
+ <Card.Root class="svadmin-u-2cd02d11d1af svadmin-u-6ee2d41e2d2d svadmin-u-438b2237b8d6">
121
+ <Card.Content class="svadmin-u-8a539c7fe216 svadmin-u-fa6acbf81d74 svadmin-u-3533cbce9e93">
122
122
  {#each showFields as field, i (i)}
123
123
  {@const value = ((query.data as { data: Record<string, unknown> }).data as Record<string, unknown>)[field.key]}
124
124
  {@const DisplayComponent = getDisplayComponent(field.type)}
125
- <div class="flex flex-col sm:flex-row {isCompact ? 'px-4 py-2 sm:px-5 sm:py-2' : 'px-4 sm:px-6 py-3 sm:py-3.5'} {i % 2 === 1 ? 'bg-muted/10' : ''}">
126
- <div class="sm:w-1/3 {isCompact ? 'text-xs' : 'text-xs sm:text-sm'} font-medium text-muted-foreground mb-1 sm:mb-0">{field.label}</div>
127
- <div class="sm:w-2/3 {isCompact ? 'text-xs sm:text-sm' : 'text-sm'} text-foreground">
125
+ <div class="svadmin-u-60fbb7713999 svadmin-u-8dddea0773ed svadmin-u-020ba687fa12 {isCompact ? 'svadmin-u-f0faeb26d656 svadmin-u-03b4dd7f172b svadmin-u-cc06a6575385 svadmin-u-7209fd2a90e7' : 'svadmin-u-f0faeb26d656 svadmin-u-7a9aabfcd059 svadmin-u-1b2d54a3fd12 svadmin-u-4701b613ff95'} {i % 2 === 1 ? 'svadmin-u-8a25a995eb8e' : ''}">
126
+ <div class="svadmin-u-b03f3c253900 {isCompact ? 'svadmin-u-359090c2d529' : 'svadmin-u-359090c2d529 svadmin-u-e2327d142859'} svadmin-u-2689f3958069 svadmin-u-bfa603190748 svadmin-u-65281709dacf svadmin-u-84bdd56b0e81">{field.label}</div>
127
+ <div class="svadmin-u-6b3526212209 {isCompact ? 'svadmin-u-359090c2d529 svadmin-u-e2327d142859' : 'svadmin-u-fc7473ca09eb'} svadmin-u-d4108abe6359">
128
128
  {#if DisplayComponent && value != null}
129
129
  <DisplayComponent
130
130
  {value}
@@ -144,11 +144,11 @@
144
144
  {@render children()}
145
145
  {/if}
146
146
  {:else}
147
- <Card.Root class="overflow-hidden border-border/40 shadow-sm">
148
- <Card.Content class="p-8 text-center">
149
- <p class="text-muted-foreground">{i18n.t('common.noData')}</p>
147
+ <Card.Root class="svadmin-u-2cd02d11d1af svadmin-u-6ee2d41e2d2d svadmin-u-438b2237b8d6">
148
+ <Card.Content class="svadmin-u-845f53365c8d svadmin-u-ca6bf63030aa">
149
+ <p class="svadmin-u-bfa603190748">{i18n.t('common.noData')}</p>
150
150
  {#if query.isError}
151
- <p class="text-sm text-destructive mt-2">{(query.error as Error)?.message ?? i18n.t('common.operationFailed')}</p>
151
+ <p class="svadmin-u-fc7473ca09eb svadmin-u-811148b13d1e svadmin-u-50d0d216a2f8">{(query.error as Error)?.message ?? i18n.t('common.operationFailed')}</p>
152
152
  {/if}
153
153
  </Card.Content>
154
154
  </Card.Root>
@@ -291,8 +291,8 @@
291
291
  value={i18n.locale}
292
292
  onchange={(event) => selectLocale((event.target as HTMLSelectElement).value)}
293
293
  class={collapsed
294
- ? 'h-8 w-auto min-w-0 max-w-full appearance-none rounded-md border border-border bg-sidebar px-1 text-center text-[10px] font-semibold text-sidebar-foreground/70 outline-none focus:ring-2 focus:ring-ring'
295
- : 'h-8 w-auto min-w-0 max-w-full rounded-md border border-border bg-sidebar px-1.5 text-[11px] font-semibold text-sidebar-foreground/70 outline-none focus:ring-2 focus:ring-ring'}
294
+ ? 'svadmin-u-ed8a5df7b2fb svadmin-u-23e1f628d033 svadmin-u-7e0b7cdf1a94 svadmin-u-c0980a65a70d appearance-none svadmin-u-421ac2be5045 svadmin-u-ca6bcd4b6f3f svadmin-u-18049387f0af svadmin-u-d3aed606df1d svadmin-u-d8e0e382c67b svadmin-u-ca6bf63030aa svadmin-u-1dc571a3609f svadmin-u-e83a7042bc91 svadmin-u-4e5ca9623e22 svadmin-u-df37b1fd9495 svadmin-u-608dd26cd5ba svadmin-u-80b9d0ae125f'
295
+ : 'svadmin-u-ed8a5df7b2fb svadmin-u-23e1f628d033 svadmin-u-7e0b7cdf1a94 svadmin-u-c0980a65a70d svadmin-u-421ac2be5045 svadmin-u-ca6bcd4b6f3f svadmin-u-18049387f0af svadmin-u-d3aed606df1d svadmin-u-45d828117213 svadmin-u-d058ca6de60f svadmin-u-e83a7042bc91 svadmin-u-4e5ca9623e22 svadmin-u-df37b1fd9495 svadmin-u-608dd26cd5ba svadmin-u-80b9d0ae125f'}
296
296
  >
297
297
  {#each i18n.getAvailableLocales() as locale (locale)}
298
298
  <option value={locale}>{localeName(locale)}</option>
@@ -305,16 +305,16 @@
305
305
  <aside
306
306
  data-svadmin-sidebar
307
307
  aria-label="Sidebar navigation"
308
- class="fixed inset-y-0 left-0 z-30 flex flex-col border-r border-border/40 transition-all duration-300"
308
+ class="svadmin-u-7bc555991dba svadmin-u-5f89f14a26db svadmin-u-c78facc7a0a6 svadmin-u-0f2fff0ae96e svadmin-u-60fbb7713999 svadmin-u-8dddea0773ed svadmin-u-5ceb636bd9f3 svadmin-u-6ee2d41e2d2d svadmin-u-0fe7d7d814d0 svadmin-u-7890552ecd63"
309
309
  style="background-color: var(--sidebar);"
310
310
  class:w-[252px]={!collapsed}
311
311
  class:w-[70px]={collapsed}
312
312
  >
313
- <div class="flex h-[70px] items-center shrink-0" class:px-5={!collapsed} class:justify-center={collapsed}>
313
+ <div class="svadmin-u-60fbb7713999 svadmin-u-07017cde3e97 svadmin-u-3960ffc248d9 svadmin-u-012fbd121f37" class:px-5={!collapsed} class:justify-center={collapsed}>
314
314
  {#if !collapsed}
315
- <a href={formatSidebarLink('/')} class="group flex items-center gap-2.5" onclick={(e) => { e.preventDefault(); adminContext.navigate('/'); }}>
315
+ <a href={formatSidebarLink('/')} class="group svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-7e9a2a250cc3" onclick={(e) => { e.preventDefault(); adminContext.navigate('/'); }}>
316
316
  <SvadminLogo />
317
- <span class="font-semibold text-[15px] tracking-[-0.01em] text-sidebar-foreground">{title}</span>
317
+ <span class="svadmin-u-e83a7042bc91 svadmin-u-cff55289f8f2 svadmin-u-983fa003115f svadmin-u-a7a63217e098">{title}</span>
318
318
  </a>
319
319
  {:else}
320
320
  <a
@@ -328,10 +328,10 @@
328
328
  {/if}
329
329
  </div>
330
330
 
331
- <ScrollArea class="flex-1 sidebar-scroll">
332
- <nav aria-label="Main menu" class="pb-4" class:px-[10px]={!collapsed} class:px-2={collapsed}>
331
+ <ScrollArea class="svadmin-u-36e579c0b41c sidebar-scroll">
332
+ <nav aria-label="Main menu" class="svadmin-u-9fcd8a13827e" class:px-[10px]={!collapsed} class:px-2={collapsed}>
333
333
  {#if menu && menu.length > 0}
334
- <div class="space-y-[2px]">
334
+ <div class="svadmin-u-a26339f4b89e">
335
335
  {#each customMenuItems as item (item.name)}
336
336
  <SidebarItem {item} currentPath={path} {collapsed} depth={0} />
337
337
  {/each}
@@ -345,24 +345,24 @@
345
345
  openGroups = next;
346
346
  }}>
347
347
  <Collapsible.Trigger
348
- class="flex w-full items-center justify-between px-[10px] py-[6px] mt-4 mb-[2px] text-[10.5px] font-semibold tracking-[0.06em] uppercase text-sidebar-foreground/45 hover:text-sidebar-foreground/70 transition-colors"
348
+ class="svadmin-u-60fbb7713999 svadmin-u-6da6a3c3f741 svadmin-u-3960ffc248d9 svadmin-u-8ef2268efbbc svadmin-u-7597e11b4d4b svadmin-u-a139beb4e318 svadmin-u-0ab8667228fd svadmin-u-506a96403942 svadmin-u-b486a1ee45b0 svadmin-u-e83a7042bc91 svadmin-u-064e4b9e19c3 uppercase svadmin-u-5f1ff8fe8768 svadmin-u-71357b4a2f24 svadmin-u-ceb69a6b0e5f"
349
349
  >
350
350
  <span>{group.name}</span>
351
- <ChevronDown class="h-3 w-3 transition-transform duration-200 {openGroups.has(group.name) ? 'rotate-180' : ''}" />
351
+ <ChevronDown class="svadmin-u-6a60c09e6aaa svadmin-u-9cea05671a29 svadmin-u-eadef238231e svadmin-u-625a4c3fbeb2 {openGroups.has(group.name) ? 'svadmin-u-3350916b3513' : ''}" />
352
352
  </Collapsible.Trigger>
353
353
  <Collapsible.Content>
354
- <div class="space-y-[2px]">
354
+ <div class="svadmin-u-a26339f4b89e">
355
355
  {#each group.items as item, _i (_i)}
356
356
  {@const active = isActive(item.path)}
357
357
  <a
358
358
  href={formatSidebarLink(item.path)}
359
359
  onclick={(e) => { e.preventDefault(); adminContext.navigate(item.path); }}
360
- class="sidebar-menu-item flex items-center gap-2.5 rounded-md px-[10px] {pyClassGroupItem} text-[13px] font-medium transition-colors duration-150
360
+ class="sidebar-menu-item svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-7e9a2a250cc3 svadmin-u-421ac2be5045 svadmin-u-7597e11b4d4b {pyClassGroupItem} svadmin-u-a14daebf7748 svadmin-u-2689f3958069 svadmin-u-ceb69a6b0e5f svadmin-u-233c0494b485
361
361
  {active
362
- ? 'sidebar-menu-item-active bg-sidebar-accent text-primary'
363
- : 'text-sidebar-foreground/70 hover:text-sidebar-foreground hover:bg-sidebar-accent/50'}"
362
+ ? 'sidebar-menu-item-active svadmin-u-707e8e52f284 svadmin-u-20aaf08a7ed1'
363
+ : 'svadmin-u-4e5ca9623e22 svadmin-u-646e10356266 svadmin-u-55d1f8b9d318'}"
364
364
  >
365
- <item.Icon class="h-[18px] w-[18px] flex-shrink-0 {active ? 'text-primary' : 'text-sidebar-foreground/50'}" />
365
+ <item.Icon class="svadmin-u-86171d20618e svadmin-u-10d7a2feb011 svadmin-u-2074a75bf2e7 {active ? 'svadmin-u-20aaf08a7ed1' : 'svadmin-u-68d55a736ff4'}" />
366
366
  <span>{item.label}</span>
367
367
  </a>
368
368
  {/each}
@@ -380,12 +380,12 @@
380
380
  {...props}
381
381
  href={formatSidebarLink(item.path)}
382
382
  onclick={(e) => { e.preventDefault(); adminContext.navigate(item.path); }}
383
- class="sidebar-menu-item flex items-center justify-center rounded-md px-2 {pyClass} transition-colors duration-150
383
+ class="sidebar-menu-item svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-86843cf1e227 svadmin-u-421ac2be5045 svadmin-u-d5eab218aa34 {pyClass} svadmin-u-ceb69a6b0e5f svadmin-u-233c0494b485
384
384
  {active
385
- ? 'sidebar-menu-item-active bg-sidebar-accent text-primary'
386
- : 'text-sidebar-foreground/50 hover:bg-sidebar-accent/50 hover:text-sidebar-foreground'}"
385
+ ? 'sidebar-menu-item-active svadmin-u-707e8e52f284 svadmin-u-20aaf08a7ed1'
386
+ : 'svadmin-u-68d55a736ff4 svadmin-u-55d1f8b9d318 svadmin-u-646e10356266'}"
387
387
  >
388
- <item.Icon class="h-[18px] w-[18px] flex-shrink-0" />
388
+ <item.Icon class="svadmin-u-86171d20618e svadmin-u-10d7a2feb011 svadmin-u-2074a75bf2e7" />
389
389
  </a>
390
390
  {/snippet}
391
391
  </Tooltip.Trigger>
@@ -397,12 +397,12 @@
397
397
  <a
398
398
  href={formatSidebarLink(item.path)}
399
399
  onclick={(e) => { e.preventDefault(); adminContext.navigate(item.path); }}
400
- class="sidebar-menu-item flex items-center gap-2.5 rounded-md px-[10px] {pyClass} text-[13px] font-medium transition-colors duration-150
400
+ class="sidebar-menu-item svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-7e9a2a250cc3 svadmin-u-421ac2be5045 svadmin-u-7597e11b4d4b {pyClass} svadmin-u-a14daebf7748 svadmin-u-2689f3958069 svadmin-u-ceb69a6b0e5f svadmin-u-233c0494b485
401
401
  {active
402
- ? 'sidebar-menu-item-active bg-sidebar-accent text-primary'
403
- : 'text-sidebar-foreground/70 hover:bg-sidebar-accent/50 hover:text-sidebar-foreground'}"
402
+ ? 'sidebar-menu-item-active svadmin-u-707e8e52f284 svadmin-u-20aaf08a7ed1'
403
+ : 'svadmin-u-4e5ca9623e22 svadmin-u-55d1f8b9d318 svadmin-u-646e10356266'}"
404
404
  >
405
- <item.Icon class="h-[18px] w-[18px] flex-shrink-0 {active ? 'text-primary' : 'text-sidebar-foreground/50'}" />
405
+ <item.Icon class="svadmin-u-86171d20618e svadmin-u-10d7a2feb011 svadmin-u-2074a75bf2e7 {active ? 'svadmin-u-20aaf08a7ed1' : 'svadmin-u-68d55a736ff4'}" />
406
406
  <span>{item.label}</span>
407
407
  </a>
408
408
  {/if}
@@ -413,35 +413,35 @@
413
413
  </nav>
414
414
  </ScrollArea>
415
415
 
416
- <div class="shrink-0 border-t border-border/40">
416
+ <div class="svadmin-u-012fbd121f37 svadmin-u-b950dda299d3 svadmin-u-6ee2d41e2d2d">
417
417
  {#if !collapsed}
418
- <div class="px-3 pt-3 pb-1">
419
- <div class="relative" bind:this={colorPickerRef}>
418
+ <div class="svadmin-u-0e17f2bd9074 svadmin-u-ce335a8e4f56 svadmin-u-569eb16216dd">
419
+ <div class="svadmin-u-d89972fe17d6" bind:this={colorPickerRef}>
420
420
  <button
421
- class="flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-[12px] text-sidebar-foreground/60 hover:bg-sidebar-accent/50 hover:text-sidebar-foreground transition-colors"
421
+ class="svadmin-u-60fbb7713999 svadmin-u-6da6a3c3f741 svadmin-u-3960ffc248d9 svadmin-u-77a2a20e90d4 svadmin-u-421ac2be5045 svadmin-u-d5eab218aa34 svadmin-u-ec0091ee009b svadmin-u-69cdf25ad1e4 svadmin-u-b4f9f7800899 svadmin-u-55d1f8b9d318 svadmin-u-646e10356266 svadmin-u-ceb69a6b0e5f"
422
422
  onclick={() => { if (!colorPickerOpen) colorPickerOpenedAt = Date.now(); colorPickerOpen = !colorPickerOpen; }}
423
423
  >
424
- <Palette class="h-3.5 w-3.5" />
425
- <span class="flex-1 text-left">{i18n.t('common.toggleTheme')}</span>
424
+ <Palette class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c" />
425
+ <span class="svadmin-u-36e579c0b41c svadmin-u-2eba0d65d059">{i18n.t('common.toggleTheme')}</span>
426
426
  <span
427
- class="h-3 w-3 rounded-full ring-1 ring-offset-1 ring-offset-sidebar"
427
+ class="svadmin-u-6a60c09e6aaa svadmin-u-9cea05671a29 svadmin-u-ac204c108886 svadmin-u-3daca9af0861 svadmin-u-823f000e740a svadmin-u-6f8ab8abb126"
428
428
  style="background-color: {getColorThemes().find(c => c.id === getColorTheme())?.color ?? '#6366f1'}; --tw-ring-color: {getColorThemes().find(c => c.id === getColorTheme())?.color ?? '#6366f1'}"
429
429
  ></span>
430
430
  <!-- The dot previews the user-selected runtime theme swatch; the hex
431
431
  fallback only covers the case where no registered theme matches. -->
432
432
  </button>
433
433
  {#if colorPickerOpen}
434
- <div class="absolute bottom-full left-0 mb-1 z-50 w-40 rounded-lg border bg-popover p-1 text-popover-foreground shadow-lg animate-in fade-in-0 zoom-in-95">
434
+ <div class="svadmin-u-da4dbfbc4fdc svadmin-u-3ee5df8c651f svadmin-u-c78facc7a0a6 svadmin-u-65281709dacf svadmin-u-181b286668b5 svadmin-u-84789e8a20cd svadmin-u-5f22e64f2282 svadmin-u-ca6bcd4b6f3f svadmin-u-e541d86d1ec8 svadmin-u-eb6a3cef9686 svadmin-u-9b13e8ae5c9c svadmin-u-06bbb43166db svadmin-u-40137e897961 fade-in-0 zoom-in-95">
435
435
  {#each getColorThemes() as ct, _i (_i)}
436
436
  <button
437
- class="flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-sm hover:bg-accent hover:text-accent-foreground transition-colors"
437
+ class="svadmin-u-60fbb7713999 svadmin-u-6da6a3c3f741 svadmin-u-3960ffc248d9 svadmin-u-77a2a20e90d4 svadmin-u-421ac2be5045 svadmin-u-d5eab218aa34 svadmin-u-ec0091ee009b svadmin-u-fc7473ca09eb svadmin-u-0557b88819cd svadmin-u-3a99b2b8fbbe svadmin-u-ceb69a6b0e5f"
438
438
  onclick={() => { setColorTheme(ct.id as typeof ct.id & import('@svadmin/core').ColorTheme); colorPickerOpen = false; }}
439
439
  >
440
440
  <span
441
- class="h-3 w-3 rounded-full {getColorTheme() === ct.id ? 'ring-2 ring-offset-1 scale-110' : 'opacity-70'}"
441
+ class="svadmin-u-6a60c09e6aaa svadmin-u-9cea05671a29 svadmin-u-ac204c108886 {getColorTheme() === ct.id ? 'svadmin-u-16b1efa5875e svadmin-u-823f000e740a svadmin-u-fecb6ec6cfa0' : 'svadmin-u-0c67ca474a69'}"
442
442
  style="background-color: {ct.color}; {getColorTheme() === ct.id ? `--tw-ring-color: ${ct.color}` : ''}"
443
443
  ></span>
444
- <span class="text-xs">{ct.label}</span>
444
+ <span class="svadmin-u-359090c2d529">{ct.label}</span>
445
445
  </button>
446
446
  {/each}
447
447
  </div>
@@ -451,55 +451,55 @@
451
451
  {/if}
452
452
 
453
453
  {#if !collapsed && identity}
454
- <div class="px-3 pb-3 pt-1">
455
- <div class="flex items-center gap-2.5 rounded-lg p-2 transition-colors hover:bg-sidebar-accent/40 cursor-pointer">
454
+ <div class="svadmin-u-0e17f2bd9074 svadmin-u-7fcf9124b5df svadmin-u-6b7d6e21ccbd">
455
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-7e9a2a250cc3 svadmin-u-5f22e64f2282 svadmin-u-7660b450905a svadmin-u-ceb69a6b0e5f svadmin-u-ace81495deee svadmin-u-34516836730d">
456
456
  <Avatar
457
457
  src={(identity as Record<string, unknown>).avatar as string | undefined}
458
458
  alt={identity.name ?? 'User'}
459
459
  fallback={identity.name?.charAt(0).toUpperCase() ?? 'U'}
460
460
  size="sm"
461
461
  />
462
- <div class="flex-1 min-w-0">
463
- <p class="truncate text-[13px] font-medium text-sidebar-foreground">{identity.name}</p>
464
- <p class="truncate text-[11px] text-sidebar-foreground/45">{((identity as Record<string, unknown>).role || (identity as Record<string, unknown>).roleName) ?? 'User'}</p>
462
+ <div class="svadmin-u-36e579c0b41c svadmin-u-7e0b7cdf1a94">
463
+ <p class="svadmin-u-f283ea9bea0e svadmin-u-a14daebf7748 svadmin-u-2689f3958069 svadmin-u-a7a63217e098">{identity.name}</p>
464
+ <p class="svadmin-u-f283ea9bea0e svadmin-u-d058ca6de60f svadmin-u-5f1ff8fe8768">{((identity as Record<string, unknown>).role || (identity as Record<string, unknown>).roleName) ?? 'User'}</p>
465
465
  </div>
466
466
  <button
467
- class="h-7 w-7 flex items-center justify-center rounded-md text-sidebar-foreground/40 hover:text-sidebar-foreground hover:bg-sidebar-accent/60 transition-colors"
467
+ class="svadmin-u-d0a52b312f7d svadmin-u-cbbf90f9a828 svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-86843cf1e227 svadmin-u-421ac2be5045 svadmin-u-3e3534b4c5df svadmin-u-646e10356266 svadmin-u-0b48b877be2a svadmin-u-ceb69a6b0e5f"
468
468
  onclick={onLogout}
469
469
  >
470
- <LogOut class="h-3.5 w-3.5" />
470
+ <LogOut class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c" />
471
471
  </button>
472
472
  </div>
473
- <div class="mt-1 flex items-center justify-between px-1">
474
- <div class="flex items-center gap-0.5">
473
+ <div class="svadmin-u-b6b02c0ebef6 svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-8ef2268efbbc svadmin-u-d8e0e382c67b">
474
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-a3899220f90e">
475
475
  {@render languageMenu(false)}
476
- <TooltipButton tooltip={i18n.t('common.toggleTheme')} variant="ghost" size="icon-sm" onclick={toggleTheme} class="h-8 w-8 rounded-md text-sidebar-foreground/50 hover:bg-sidebar-accent/50 hover:text-sidebar-foreground">
476
+ <TooltipButton tooltip={i18n.t('common.toggleTheme')} variant="ghost" size="icon-sm" onclick={toggleTheme} class="svadmin-u-ed8a5df7b2fb svadmin-u-2bbcfc3b5179 svadmin-u-421ac2be5045 svadmin-u-68d55a736ff4 svadmin-u-55d1f8b9d318 svadmin-u-646e10356266">
477
477
  {#if getResolvedTheme() === 'dark'}
478
- <Sun class="h-3.5 w-3.5" />
478
+ <Sun class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c" />
479
479
  {:else}
480
- <Moon class="h-3.5 w-3.5" />
480
+ <Moon class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c" />
481
481
  {/if}
482
482
  </TooltipButton>
483
- <TooltipButton tooltip={i18n.t('settings.title')} variant="ghost" size="icon-sm" onclick={() => adminContext.navigate('/settings')} class="h-8 w-8 rounded-md text-sidebar-foreground/50 hover:bg-sidebar-accent/50 hover:text-sidebar-foreground">
484
- <Settings class="h-3.5 w-3.5" />
483
+ <TooltipButton tooltip={i18n.t('settings.title')} variant="ghost" size="icon-sm" onclick={() => adminContext.navigate('/settings')} class="svadmin-u-ed8a5df7b2fb svadmin-u-2bbcfc3b5179 svadmin-u-421ac2be5045 svadmin-u-68d55a736ff4 svadmin-u-55d1f8b9d318 svadmin-u-646e10356266">
484
+ <Settings class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c" />
485
485
  </TooltipButton>
486
486
  </div>
487
- <TooltipButton tooltip={i18n.t('common.toggleSidebar')} variant="ghost" size="icon-sm" onclick={onToggle} class="h-8 w-8 rounded-md text-sidebar-foreground/50 hover:bg-sidebar-accent/50 hover:text-sidebar-foreground">
488
- <ChevronLeft class="h-3.5 w-3.5" />
487
+ <TooltipButton tooltip={i18n.t('common.toggleSidebar')} variant="ghost" size="icon-sm" onclick={onToggle} class="svadmin-u-ed8a5df7b2fb svadmin-u-2bbcfc3b5179 svadmin-u-421ac2be5045 svadmin-u-68d55a736ff4 svadmin-u-55d1f8b9d318 svadmin-u-646e10356266">
488
+ <ChevronLeft class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c" />
489
489
  </TooltipButton>
490
490
  </div>
491
491
  </div>
492
492
  {:else if collapsed}
493
- <div class="flex flex-col items-center gap-0.5 px-1 py-3">
493
+ <div class="svadmin-u-60fbb7713999 svadmin-u-8dddea0773ed svadmin-u-3960ffc248d9 svadmin-u-a3899220f90e svadmin-u-d8e0e382c67b svadmin-u-1b2d54a3fd12">
494
494
  {@render languageMenu(true)}
495
495
  <Tooltip.Root>
496
496
  <Tooltip.Trigger>
497
497
  {#snippet child({ props }: { props: Record<string, unknown> })}
498
- <Button {...props} variant="ghost" size="icon" onclick={toggleTheme} class="h-8 w-8 rounded-md text-sidebar-foreground/50 hover:bg-sidebar-accent/50 hover:text-sidebar-foreground">
498
+ <Button {...props} variant="ghost" size="icon" onclick={toggleTheme} class="svadmin-u-ed8a5df7b2fb svadmin-u-2bbcfc3b5179 svadmin-u-421ac2be5045 svadmin-u-68d55a736ff4 svadmin-u-55d1f8b9d318 svadmin-u-646e10356266">
499
499
  {#if getResolvedTheme() === 'dark'}
500
- <Sun class="h-3.5 w-3.5" />
500
+ <Sun class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c" />
501
501
  {:else}
502
- <Moon class="h-3.5 w-3.5" />
502
+ <Moon class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c" />
503
503
  {/if}
504
504
  </Button>
505
505
  {/snippet}
@@ -509,8 +509,8 @@
509
509
  <Tooltip.Root>
510
510
  <Tooltip.Trigger>
511
511
  {#snippet child({ props }: { props: Record<string, unknown> })}
512
- <Button {...props} variant="ghost" size="icon" onclick={onToggle} class="h-8 w-8 rounded-md text-sidebar-foreground/50 hover:bg-sidebar-accent/50 hover:text-sidebar-foreground">
513
- <ChevronRight class="h-3.5 w-3.5" />
512
+ <Button {...props} variant="ghost" size="icon" onclick={onToggle} class="svadmin-u-ed8a5df7b2fb svadmin-u-2bbcfc3b5179 svadmin-u-421ac2be5045 svadmin-u-68d55a736ff4 svadmin-u-55d1f8b9d318 svadmin-u-646e10356266">
513
+ <ChevronRight class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c" />
514
514
  </Button>
515
515
  {/snippet}
516
516
  </Tooltip.Trigger>
@@ -519,8 +519,8 @@
519
519
  <Tooltip.Root>
520
520
  <Tooltip.Trigger>
521
521
  {#snippet child({ props }: { props: Record<string, unknown> })}
522
- <Button {...props} variant="ghost" size="icon" onclick={onLogout} class="h-8 w-8 rounded-md text-sidebar-foreground/50 hover:bg-sidebar-accent/50 hover:text-destructive">
523
- <LogOut class="h-3.5 w-3.5" />
522
+ <Button {...props} variant="ghost" size="icon" onclick={onLogout} class="svadmin-u-ed8a5df7b2fb svadmin-u-2bbcfc3b5179 svadmin-u-421ac2be5045 svadmin-u-68d55a736ff4 svadmin-u-55d1f8b9d318 svadmin-u-51e95020d6f2">
523
+ <LogOut class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c" />
524
524
  </Button>
525
525
  {/snippet}
526
526
  </Tooltip.Trigger>
@@ -528,13 +528,13 @@
528
528
  </Tooltip.Root>
529
529
  </div>
530
530
  {:else}
531
- <div class="flex justify-center gap-1 p-3">
531
+ <div class="svadmin-u-60fbb7713999 svadmin-u-86843cf1e227 svadmin-u-44ee8ba0a421 svadmin-u-eb6e8b881acd">
532
532
  {@render languageMenu(false)}
533
- <TooltipButton tooltip={i18n.t('common.toggleTheme')} variant="ghost" size="icon" onclick={toggleTheme} class="h-8 w-8 rounded-md text-sidebar-foreground/50 hover:bg-sidebar-accent/50 hover:text-sidebar-foreground">
533
+ <TooltipButton tooltip={i18n.t('common.toggleTheme')} variant="ghost" size="icon" onclick={toggleTheme} class="svadmin-u-ed8a5df7b2fb svadmin-u-2bbcfc3b5179 svadmin-u-421ac2be5045 svadmin-u-68d55a736ff4 svadmin-u-55d1f8b9d318 svadmin-u-646e10356266">
534
534
  {#if getResolvedTheme() === 'dark'}
535
- <Sun class="h-3.5 w-3.5" />
535
+ <Sun class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c" />
536
536
  {:else}
537
- <Moon class="h-3.5 w-3.5" />
537
+ <Moon class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c" />
538
538
  {/if}
539
539
  </TooltipButton>
540
540
  </div>