@svadmin/ui 0.68.0 → 0.69.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (315) hide show
  1. package/README.md +52 -0
  2. package/dist/app.css +7627 -853
  3. package/dist/app.theme.css +7676 -850
  4. package/dist/components/AboutSettings.svelte +8 -8
  5. package/dist/components/ActivityFeed.svelte +25 -40
  6. package/dist/components/AdminApp.svelte +14 -14
  7. package/dist/components/AnomalyBadge.svelte +6 -5
  8. package/dist/components/ApiSettings.svelte +8 -8
  9. package/dist/components/AppearanceSettings.svelte +13 -13
  10. package/dist/components/ApprovalActionCard.svelte +35 -35
  11. package/dist/components/AuditLogDrawer.svelte +17 -17
  12. package/dist/components/AuditLogViewer.svelte +42 -42
  13. package/dist/components/AuthPageShell.svelte +11 -11
  14. package/dist/components/AutoForm.svelte +28 -28
  15. package/dist/components/AutoSaveIndicator.svelte +8 -8
  16. package/dist/components/AutoTable.svelte +141 -141
  17. package/dist/components/BatchActionBar.svelte +15 -15
  18. package/dist/components/Breadcrumbs.svelte +4 -4
  19. package/dist/components/CancelTaskButton.svelte +2 -2
  20. package/dist/components/CanvasAnnotation.svelte +27 -27
  21. package/dist/components/Cascader.svelte +20 -20
  22. package/dist/components/CatchAllNavigate.svelte +2 -2
  23. package/dist/components/ColumnHeaderFilter.svelte +21 -21
  24. package/dist/components/ColumnSettings.svelte +20 -20
  25. package/dist/components/ComboboxField.svelte +17 -17
  26. package/dist/components/CommandPalette.svelte +23 -23
  27. package/dist/components/ConfigErrorScreen.svelte +27 -27
  28. package/dist/components/ConfirmDialog.svelte +1 -1
  29. package/dist/components/CreateInferencer.svelte +1 -1
  30. package/dist/components/CreatePage.svelte +1 -1
  31. package/dist/components/DecisionTable.svelte +39 -39
  32. package/dist/components/DetailDrawer.svelte +9 -9
  33. package/dist/components/DevTools.svelte +96 -96
  34. package/dist/components/DraggableGrid.svelte +6 -6
  35. package/dist/components/DraggableHeader.svelte +1 -1
  36. package/dist/components/DraggableRowTable.svelte +13 -13
  37. package/dist/components/DrawerForm.svelte +10 -10
  38. package/dist/components/DynamicFormList.svelte +19 -19
  39. package/dist/components/EditInferencer.svelte +3 -3
  40. package/dist/components/EditInferencer.svelte.d.ts +1 -1
  41. package/dist/components/EditPage.svelte +1 -1
  42. package/dist/components/EditableTable.svelte +30 -30
  43. package/dist/components/EmptyState.svelte +6 -6
  44. package/dist/components/ErrorBoundary.svelte +8 -8
  45. package/dist/components/ErrorComponent.svelte +5 -5
  46. package/dist/components/FieldRenderer.svelte +30 -30
  47. package/dist/components/FilterBuilder.svelte +31 -31
  48. package/dist/components/FilterDropdown.svelte +26 -26
  49. package/dist/components/ForgotPasswordPage.svelte +14 -14
  50. package/dist/components/GanttChart.svelte +30 -30
  51. package/dist/components/Header.svelte +13 -13
  52. package/dist/components/ImageCropper.svelte +21 -21
  53. package/dist/components/ImportWizard.svelte +49 -49
  54. package/dist/components/InferencerPanel.svelte +35 -35
  55. package/dist/components/InfiniteList.svelte +8 -8
  56. package/dist/components/InlineEdit.svelte +5 -5
  57. package/dist/components/IntegrationsSettings.svelte +5 -5
  58. package/dist/components/JsonSchemaForm.svelte +18 -18
  59. package/dist/components/KanbanBoard.svelte +30 -30
  60. package/dist/components/KeyboardShortcuts.svelte +8 -8
  61. package/dist/components/Layout.svelte +22 -22
  62. package/dist/components/LazyPage.svelte +4 -4
  63. package/dist/components/ListInferencer.svelte +2 -2
  64. package/dist/components/ListPage.svelte +1 -1
  65. package/dist/components/LiveIndicator.svelte +11 -11
  66. package/dist/components/LoginPage.svelte +27 -27
  67. package/dist/components/MasterDetailView.svelte +24 -24
  68. package/dist/components/MediaLibraryModal.svelte +37 -37
  69. package/dist/components/MentionsInput.svelte +11 -11
  70. package/dist/components/MetricStrip.svelte +18 -58
  71. package/dist/components/ModalForm.svelte +8 -8
  72. package/dist/components/MultiTabKeepAlive.svelte +14 -14
  73. package/dist/components/NavigateToResource.svelte +3 -3
  74. package/dist/components/NotificationsSettings.svelte +4 -4
  75. package/dist/components/OfflineSyncBanner.svelte +28 -28
  76. package/dist/components/PageHeader.svelte +12 -13
  77. package/dist/components/PageSkeleton.svelte +26 -26
  78. package/dist/components/PasswordInput.svelte +11 -11
  79. package/dist/components/PdfDocumentViewer.svelte +45 -45
  80. package/dist/components/PermissionMatrix.svelte +48 -48
  81. package/dist/components/PivotTable.svelte +21 -21
  82. package/dist/components/PresenceAvatarGroup.svelte +11 -11
  83. package/dist/components/PrintableBill.svelte +43 -43
  84. package/dist/components/ProfilePage.svelte +34 -34
  85. package/dist/components/RecordDetailDrawer.svelte +15 -15
  86. package/dist/components/RegisterPage.svelte +9 -9
  87. package/dist/components/ResourceInferencer.svelte +3 -3
  88. package/dist/components/ResourceOperationsPage.svelte +44 -44
  89. package/dist/components/RetryTaskButton.svelte +2 -2
  90. package/dist/components/RolesSettings.svelte +4 -4
  91. package/dist/components/RowActions.svelte +10 -10
  92. package/dist/components/SecuritySettings.svelte +8 -8
  93. package/dist/components/SensitiveDataMask.svelte +8 -8
  94. package/dist/components/SettingsPage.svelte +17 -17
  95. package/dist/components/ShowInferencer.svelte +3 -3
  96. package/dist/components/ShowInferencer.svelte.d.ts +1 -1
  97. package/dist/components/ShowPage.svelte +24 -24
  98. package/dist/components/Sidebar.svelte +63 -63
  99. package/dist/components/SidebarItem.svelte +35 -35
  100. package/dist/components/SignaturePad.svelte +16 -16
  101. package/dist/components/SplitPaneLayout.svelte +10 -10
  102. package/dist/components/SpreadsheetView.svelte +35 -35
  103. package/dist/components/StatsCard.svelte +12 -25
  104. package/dist/components/StepForm.svelte +23 -23
  105. package/dist/components/StepsForm.svelte +17 -17
  106. package/dist/components/SvadminLogo.svelte +1 -1
  107. package/dist/components/SystemPageShell.svelte +6 -6
  108. package/dist/components/TableSummary.svelte +8 -8
  109. package/dist/components/TaskDetails.svelte +29 -29
  110. package/dist/components/TaskList.svelte +17 -17
  111. package/dist/components/TaskProgressBar.svelte +4 -4
  112. package/dist/components/TaskQueueDrawer.svelte +44 -44
  113. package/dist/components/TaskStatusBadge.svelte +5 -5
  114. package/dist/components/TenantSwitcher.svelte +17 -17
  115. package/dist/components/ThemedTitle.svelte +4 -4
  116. package/dist/components/Toast.svelte +2 -2
  117. package/dist/components/Transfer.svelte +40 -40
  118. package/dist/components/TreeSelect.svelte +32 -32
  119. package/dist/components/TreeTable.svelte +28 -28
  120. package/dist/components/TwoFactorAuthPage.svelte +15 -15
  121. package/dist/components/UndoableNotification.svelte +10 -10
  122. package/dist/components/UpdatePasswordPage.svelte +6 -6
  123. package/dist/components/VersionDiffViewer.svelte +38 -38
  124. package/dist/components/VirtualTable.svelte +9 -9
  125. package/dist/components/Watermark.svelte +2 -2
  126. package/dist/components/account/CompanyProfilePage.svelte +4 -4
  127. package/dist/components/account/GetStartedPage.svelte +19 -19
  128. package/dist/components/account/ImportMembersPage.svelte +42 -42
  129. package/dist/components/account/MembersStarterPage.svelte +18 -18
  130. package/dist/components/account/SecurityLogPage.svelte +1 -1
  131. package/dist/components/account/SettingsEnterprisePage.svelte +7 -7
  132. package/dist/components/account/SettingsPlainPage.svelte +3 -3
  133. package/dist/components/account/SettingsSidebarPage.svelte +5 -5
  134. package/dist/components/account/TeamMembersPage.svelte +2 -2
  135. package/dist/components/account/UserProfilePage.svelte +3 -3
  136. package/dist/components/buttons/CloneButton.svelte +2 -2
  137. package/dist/components/buttons/CreateButton.svelte +2 -2
  138. package/dist/components/buttons/DeleteButton.svelte +4 -4
  139. package/dist/components/buttons/EditButton.svelte +2 -2
  140. package/dist/components/buttons/ExportButton.svelte +2 -2
  141. package/dist/components/buttons/ImportButton.svelte +3 -3
  142. package/dist/components/buttons/ListButton.svelte +2 -2
  143. package/dist/components/buttons/RefreshButton.svelte +2 -2
  144. package/dist/components/buttons/SaveButton.svelte +3 -3
  145. package/dist/components/buttons/ShowButton.svelte +2 -2
  146. package/dist/components/charts/BarChart.svelte +3 -3
  147. package/dist/components/charts/LineChart.svelte +3 -3
  148. package/dist/components/charts/PieChart.svelte +7 -7
  149. package/dist/components/content/ApiKeyList.svelte +12 -12
  150. package/dist/components/content/AuditTimeline.svelte +18 -18
  151. package/dist/components/content/ContentPageHeader.svelte +9 -9
  152. package/dist/components/content/ContentPageShell.svelte +2 -2
  153. package/dist/components/content/DataState.svelte +8 -8
  154. package/dist/components/content/DescriptionList.svelte +25 -25
  155. package/dist/components/content/FeedbackNotice.svelte +11 -11
  156. package/dist/components/content/FileList.svelte +2 -2
  157. package/dist/components/content/FilterToolbar.svelte +15 -15
  158. package/dist/components/content/ImportDropzone.svelte +6 -6
  159. package/dist/components/content/IntegrationCard.svelte +4 -4
  160. package/dist/components/content/MediaThumbnail.svelte +16 -16
  161. package/dist/components/content/MemberList.svelte +2 -2
  162. package/dist/components/content/MetricBlock.svelte +7 -7
  163. package/dist/components/content/NetworkTable.svelte +1 -1
  164. package/dist/components/content/NetworkUserCard.svelte +12 -12
  165. package/dist/components/content/OtpInput.svelte +2 -2
  166. package/dist/components/content/PageToolbar.svelte +3 -3
  167. package/dist/components/content/ProjectCard.svelte +11 -11
  168. package/dist/components/content/SectionHeader.svelte +5 -5
  169. package/dist/components/content/SecurityEventTable.svelte +2 -2
  170. package/dist/components/content/SettingsFieldRow.svelte +5 -5
  171. package/dist/components/content/SettingsGroup.svelte +7 -7
  172. package/dist/components/content/StatusBadge.svelte +6 -6
  173. package/dist/components/content/StatusTabs.svelte +28 -28
  174. package/dist/components/content/SystemErrorState.svelte +2 -2
  175. package/dist/components/content/TeamCard.svelte +6 -6
  176. package/dist/components/content/TwoFactorStepper.svelte +3 -3
  177. package/dist/components/content/WorkspaceActionBar.svelte +12 -12
  178. package/dist/components/content/WorkspaceInspector.svelte +11 -11
  179. package/dist/components/content/WorkspaceLayout.svelte +5 -5
  180. package/dist/components/content/WorkspaceSplitPane.svelte +4 -4
  181. package/dist/components/content/WorkspaceStageStepper.svelte +16 -16
  182. package/dist/components/content/WorkspaceTabBar.svelte +16 -16
  183. package/dist/components/fields/ArrayField.svelte +12 -12
  184. package/dist/components/fields/AvatarField.svelte +15 -15
  185. package/dist/components/fields/BooleanField.svelte +14 -14
  186. package/dist/components/fields/CodeField.svelte +10 -10
  187. package/dist/components/fields/CopyField.svelte +6 -6
  188. package/dist/components/fields/CurrencyField.svelte +6 -6
  189. package/dist/components/fields/DateField.svelte +1 -1
  190. package/dist/components/fields/DateRangeField.svelte +2 -2
  191. package/dist/components/fields/EmailField.svelte +2 -2
  192. package/dist/components/fields/FileField.svelte +3 -3
  193. package/dist/components/fields/ImageField.svelte +1 -1
  194. package/dist/components/fields/JsonField.svelte +11 -11
  195. package/dist/components/fields/MarkdownField.svelte +2 -2
  196. package/dist/components/fields/MultiSelectField.svelte +3 -3
  197. package/dist/components/fields/NumberField.svelte +1 -1
  198. package/dist/components/fields/PercentField.svelte +9 -9
  199. package/dist/components/fields/PhoneField.svelte +8 -8
  200. package/dist/components/fields/RatingField.svelte +10 -10
  201. package/dist/components/fields/RelationField.svelte +3 -3
  202. package/dist/components/fields/RichTextField.svelte +4 -4
  203. package/dist/components/fields/TagField.svelte +11 -11
  204. package/dist/components/fields/TextField.svelte +2 -2
  205. package/dist/components/fields/UrlField.svelte +3 -3
  206. package/dist/components/network/TeamCrewTablePage.svelte +2 -2
  207. package/dist/components/network/UserCardsNFTPage.svelte +1 -1
  208. package/dist/components/profile/ActivityTimeline.svelte +8 -8
  209. package/dist/components/profile/ProfileCard.svelte +47 -47
  210. package/dist/components/profile/ProfileVariantSections.svelte +158 -158
  211. package/dist/components/profile/ProjectsGrid.svelte +6 -6
  212. package/dist/components/profile/PublicProfilePage.svelte +6 -6
  213. package/dist/components/profile/TeamsShowcase.svelte +3 -3
  214. package/dist/components/ui/alert/alert-description.svelte +1 -1
  215. package/dist/components/ui/alert/alert-title.svelte +1 -1
  216. package/dist/components/ui/alert/alert-variants.d.ts +7 -0
  217. package/dist/components/ui/alert/alert-variants.js +2 -0
  218. package/dist/components/ui/alert/alert.svelte +4 -15
  219. package/dist/components/ui/alert/alert.svelte.d.ts +7 -24
  220. package/dist/components/ui/alert-dialog/alert-dialog-content.svelte +2 -2
  221. package/dist/components/ui/alert-dialog/alert-dialog-description.svelte +1 -1
  222. package/dist/components/ui/alert-dialog/alert-dialog-footer.svelte +1 -1
  223. package/dist/components/ui/alert-dialog/alert-dialog-header.svelte +1 -1
  224. package/dist/components/ui/alert-dialog/alert-dialog-overlay.svelte +1 -1
  225. package/dist/components/ui/alert-dialog/alert-dialog-title.svelte +1 -1
  226. package/dist/components/ui/avatar/avatar-variants.d.ts +7 -0
  227. package/dist/components/ui/avatar/avatar-variants.js +2 -0
  228. package/dist/components/ui/avatar/avatar.svelte +11 -20
  229. package/dist/components/ui/avatar/avatar.svelte.d.ts +12 -28
  230. package/dist/components/ui/badge/badge-variants.d.ts +7 -0
  231. package/dist/components/ui/badge/badge-variants.js +2 -0
  232. package/dist/components/ui/badge/badge.svelte +4 -24
  233. package/dist/components/ui/badge/badge.svelte.d.ts +7 -45
  234. package/dist/components/ui/breadcrumb/breadcrumb-ellipsis.svelte +3 -3
  235. package/dist/components/ui/breadcrumb/breadcrumb-item.svelte +1 -1
  236. package/dist/components/ui/breadcrumb/breadcrumb-link.svelte +1 -1
  237. package/dist/components/ui/breadcrumb/breadcrumb-list.svelte +1 -1
  238. package/dist/components/ui/breadcrumb/breadcrumb-page.svelte +1 -1
  239. package/dist/components/ui/breadcrumb/breadcrumb-separator.svelte +2 -2
  240. package/dist/components/ui/button/button-variants.d.ts +9 -0
  241. package/dist/components/ui/button/button-variants.js +3 -0
  242. package/dist/components/ui/button/button.svelte +12 -31
  243. package/dist/components/ui/button/button.svelte.d.ts +9 -61
  244. package/dist/components/ui/card/card-action.svelte +1 -4
  245. package/dist/components/ui/card/card-content.svelte +1 -1
  246. package/dist/components/ui/card/card-description.svelte +1 -1
  247. package/dist/components/ui/card/card-footer.svelte +1 -1
  248. package/dist/components/ui/card/card-header.svelte +1 -4
  249. package/dist/components/ui/card/card-title.svelte +1 -1
  250. package/dist/components/ui/card/card.svelte +1 -1
  251. package/dist/components/ui/checkbox/checkbox.svelte +2 -5
  252. package/dist/components/ui/command/command-dialog.svelte +3 -3
  253. package/dist/components/ui/command/command-empty.svelte +1 -1
  254. package/dist/components/ui/command/command-group.svelte +2 -2
  255. package/dist/components/ui/command/command-input.svelte +1 -4
  256. package/dist/components/ui/command/command-item.svelte +1 -4
  257. package/dist/components/ui/command/command-list.svelte +1 -1
  258. package/dist/components/ui/command/command-separator.svelte +1 -1
  259. package/dist/components/ui/command/command.svelte +1 -4
  260. package/dist/components/ui/dialog/dialog-content.svelte +3 -3
  261. package/dist/components/ui/dialog/dialog-description.svelte +1 -1
  262. package/dist/components/ui/dialog/dialog-footer.svelte +1 -1
  263. package/dist/components/ui/dialog/dialog-header.svelte +1 -1
  264. package/dist/components/ui/dialog/dialog-overlay.svelte +1 -1
  265. package/dist/components/ui/dialog/dialog-title.svelte +1 -1
  266. package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte +2 -5
  267. package/dist/components/ui/dropdown-menu/dropdown-menu-content.svelte +1 -6
  268. package/dist/components/ui/dropdown-menu/dropdown-menu-item.svelte +3 -9
  269. package/dist/components/ui/dropdown-menu/dropdown-menu-separator.svelte +1 -1
  270. package/dist/components/ui/dropdown-menu/dropdown-menu.svelte +1 -1
  271. package/dist/components/ui/input/input.svelte +3 -2
  272. package/dist/components/ui/label/label.svelte +1 -4
  273. package/dist/components/ui/navigation-menu/navigation-menu-content.svelte +1 -5
  274. package/dist/components/ui/navigation-menu/navigation-menu-indicator.svelte +2 -5
  275. package/dist/components/ui/navigation-menu/navigation-menu-item.svelte +1 -1
  276. package/dist/components/ui/navigation-menu/navigation-menu-link.svelte +1 -4
  277. package/dist/components/ui/navigation-menu/navigation-menu-list.svelte +1 -1
  278. package/dist/components/ui/navigation-menu/navigation-menu-trigger.svelte +2 -5
  279. package/dist/components/ui/navigation-menu/navigation-menu-viewport.svelte +2 -5
  280. package/dist/components/ui/navigation-menu/navigation-menu.svelte +1 -1
  281. package/dist/components/ui/pagination/pagination-content.svelte +1 -1
  282. package/dist/components/ui/pagination/pagination-ellipsis.svelte +3 -3
  283. package/dist/components/ui/pagination/pagination-link.svelte +3 -0
  284. package/dist/components/ui/pagination/pagination-next.svelte +5 -2
  285. package/dist/components/ui/pagination/pagination-previous.svelte +5 -2
  286. package/dist/components/ui/pagination/pagination.svelte +1 -1
  287. package/dist/components/ui/popover/popover-content.svelte +1 -4
  288. package/dist/components/ui/progress/progress.svelte +2 -2
  289. package/dist/components/ui/scroll-area/scroll-area.svelte +3 -4
  290. package/dist/components/ui/select/select.svelte +1 -2
  291. package/dist/components/ui/separator/separator.svelte +1 -6
  292. package/dist/components/ui/sheet/sheet-content.svelte +1 -4
  293. package/dist/components/ui/sheet/sheet-description.svelte +1 -1
  294. package/dist/components/ui/sheet/sheet-footer.svelte +1 -1
  295. package/dist/components/ui/sheet/sheet-header.svelte +1 -1
  296. package/dist/components/ui/sheet/sheet-title.svelte +1 -1
  297. package/dist/components/ui/sheet/sheet.svelte +5 -10
  298. package/dist/components/ui/skeleton/skeleton.svelte +1 -1
  299. package/dist/components/ui/switch/switch.svelte +2 -9
  300. package/dist/components/ui/table/table-caption.svelte +1 -1
  301. package/dist/components/ui/table/table-cell.svelte +8 -11
  302. package/dist/components/ui/table/table-footer.svelte +1 -1
  303. package/dist/components/ui/table/table-head.svelte +1 -11
  304. package/dist/components/ui/table/table-header.svelte +1 -1
  305. package/dist/components/ui/table/table-row.svelte +2 -2
  306. package/dist/components/ui/table/table-row.svelte.d.ts +1 -1
  307. package/dist/components/ui/table/table.svelte +2 -2
  308. package/dist/components/ui/tabs/tabs-content.svelte +1 -1
  309. package/dist/components/ui/tabs/tabs-list.svelte +1 -4
  310. package/dist/components/ui/tabs/tabs-trigger.svelte +1 -7
  311. package/dist/components/ui/tabs/tabs.svelte +1 -1
  312. package/dist/components/ui/textarea/textarea.svelte +1 -4
  313. package/dist/components/ui/tooltip/tooltip-content.svelte +1 -1
  314. package/dist/page-chrome.css +228 -0
  315. package/package.json +14 -9
@@ -146,40 +146,40 @@
146
146
  ontouchend={handleTouchEnd}
147
147
  />
148
148
  {#if loading}
149
- <div data-svadmin-layout-scope={layoutScope} class="flex h-screen" in:fade={{ duration: 150 }}>
150
- <div class="hidden md:block w-[252px] bg-sidebar/80 p-4 space-y-4">
151
- <Skeleton class="h-8 w-32" />
152
- <div class="space-y-2 mt-6">
149
+ <div data-svadmin-layout-scope={layoutScope} class="svadmin-u-60fbb7713999 svadmin-u-ef114b5f5ad1" in:fade={{ duration: 150 }}>
150
+ <div class="svadmin-u-99d72c7fc3e2 svadmin-u-9d60be3a6d80 svadmin-u-e2fe2012a697 svadmin-u-ac402894e356 svadmin-u-8e63407b5ceb svadmin-u-3e7ce58d64fa">
151
+ <Skeleton class="svadmin-u-ed8a5df7b2fb svadmin-u-516b03df0b7c" />
152
+ <div class="svadmin-u-6f7e013d6499 svadmin-u-31f2553311b6">
153
153
  {#each Array(5) as _, _i (_i)}
154
- <Skeleton class="h-9 w-full rounded-lg" />
154
+ <Skeleton class="svadmin-u-e7a768f922d2 svadmin-u-6da6a3c3f741 svadmin-u-5f22e64f2282" />
155
155
  {/each}
156
156
  </div>
157
157
  </div>
158
- <div class="flex-1 p-8 space-y-6">
159
- <Skeleton class="h-8 w-48" />
160
- <div class="space-y-3">
158
+ <div class="svadmin-u-36e579c0b41c svadmin-u-845f53365c8d svadmin-u-b3542e058833">
159
+ <Skeleton class="svadmin-u-ed8a5df7b2fb svadmin-u-74b2435a1d40" />
160
+ <div class="svadmin-u-6ed543e2fbbb">
161
161
  {#each Array(4) as _, _i (_i)}
162
- <Skeleton class="h-12 w-full" />
162
+ <Skeleton class="svadmin-u-508ebf85b1c9 svadmin-u-6da6a3c3f741" />
163
163
  {/each}
164
164
  </div>
165
165
  </div>
166
166
  </div>
167
- <div class="hidden" aria-hidden="true">
167
+ <div class="svadmin-u-99d72c7fc3e2" aria-hidden="true">
168
168
  <DevTools docked />
169
169
  </div>
170
170
  {:else}
171
- <div data-svadmin-layout-scope={layoutScope} class="flex h-screen bg-background" in:fade={{ duration: 200, delay: 50 }}>
171
+ <div data-svadmin-layout-scope={layoutScope} class="svadmin-u-60fbb7713999 svadmin-u-ef114b5f5ad1 svadmin-u-e6f9e383a762" in:fade={{ duration: 200, delay: 50 }}>
172
172
  <button
173
173
  type="button"
174
174
  data-svadmin-skip-link={mainContentId}
175
- class="absolute left-3 top-3 z-[100] -translate-y-16 rounded-md border border-border bg-background px-3 py-2 text-sm font-medium text-foreground shadow-sm transition-transform focus:translate-y-0 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2"
175
+ class="svadmin-u-da4dbfbc4fdc svadmin-u-22e59b722111 svadmin-u-8782d84cc906 svadmin-u-db5a366a0e21 svadmin-u-306d283a53fe svadmin-u-421ac2be5045 svadmin-u-ca6bcd4b6f3f svadmin-u-18049387f0af svadmin-u-e6f9e383a762 svadmin-u-0e17f2bd9074 svadmin-u-03b4dd7f172b svadmin-u-fc7473ca09eb svadmin-u-2689f3958069 svadmin-u-d4108abe6359 svadmin-u-438b2237b8d6 svadmin-u-eadef238231e svadmin-u-beab17f53576 svadmin-u-55d048ebfb1c svadmin-u-608dd26cd5ba svadmin-u-80b9d0ae125f svadmin-u-6b22a22a9752"
176
176
  onclick={focusMainContent}
177
177
  >
178
178
  {i18n.t('common.skipToMainContent')}
179
179
  </button>
180
180
 
181
181
  <!-- Desktop sidebar -->
182
- <div class="hidden md:block">
182
+ <div class="svadmin-u-99d72c7fc3e2 svadmin-u-9d60be3a6d80">
183
183
  <Sidebar {collapsed} {identity} {title} {menu} {routeMode} onToggle={() => collapsed = !collapsed} onLogout={handleLogout} />
184
184
  </div>
185
185
 
@@ -191,14 +191,14 @@
191
191
  aria-modal="true"
192
192
  aria-labelledby={`${layoutScope}-mobile-navigation-title`}
193
193
  >
194
- <Sheet.Title id={`${layoutScope}-mobile-navigation-title`} class="sr-only">{title}</Sheet.Title>
195
- <div class="md:hidden">
194
+ <Sheet.Title id={`${layoutScope}-mobile-navigation-title`} class="svadmin-u-2daa8e5e2f2e">{title}</Sheet.Title>
195
+ <div class="svadmin-u-e477a6af4cb6">
196
196
  <Sidebar collapsed={false} {identity} {title} {menu} {routeMode} onToggle={() => { mobileMenuOpen = false; }} onLogout={handleLogout} />
197
197
  </div>
198
198
  </Sheet.Root>
199
199
 
200
200
  <div
201
- class="flex-1 flex flex-col overflow-hidden transition-all duration-300"
201
+ class="svadmin-u-36e579c0b41c svadmin-u-60fbb7713999 svadmin-u-8dddea0773ed svadmin-u-2cd02d11d1af svadmin-u-0fe7d7d814d0 svadmin-u-7890552ecd63"
202
202
  class:md:ml-[252px]={!collapsed}
203
203
  class:sidebar-content-expanded={!collapsed}
204
204
  class:md:ml-[70px]={collapsed}
@@ -218,12 +218,12 @@
218
218
  type="button"
219
219
  variant="outline"
220
220
  size="sm"
221
- class="md:hidden gap-1.5 px-2.5"
221
+ class="svadmin-u-e477a6af4cb6 svadmin-u-58284b4ea568 svadmin-u-0b91436debbd"
222
222
  aria-label={i18n.t('common.menu')}
223
223
  onclick={() => { mobileMenuOpen = true; }}
224
224
  >
225
- <Menu class="h-5 w-5" />
226
- <span class="text-xs">{i18n.t('common.menu')}</span>
225
+ <Menu class="svadmin-u-cd0d9c512cdc svadmin-u-72470489ff4e" />
226
+ <span class="svadmin-u-359090c2d529">{i18n.t('common.menu')}</span>
227
227
  </Button>
228
228
  {/snippet}
229
229
  {#snippet rightActions()}
@@ -237,8 +237,8 @@
237
237
 
238
238
  <!-- Content area: responsive padding + centered max-width container
239
239
  so wide screens don't stretch content indefinitely (avoids sparse layouts) -->
240
- <main id={mainContentId} tabindex="-1" data-svadmin-main class="flex-1 overflow-y-auto bg-muted/30 px-4 py-5 sm:px-5 md:px-7.5 md:py-7">
241
- <div class="mx-auto w-full max-w-[1600px]">
240
+ <main id={mainContentId} tabindex="-1" data-svadmin-main class="svadmin-u-36e579c0b41c svadmin-u-92bf82f493b1 svadmin-u-2859c861d7de svadmin-u-f0faeb26d656 svadmin-u-c9b99cd93450 svadmin-u-cc06a6575385 svadmin-u-daf5dc5fac2b svadmin-u-e86fadb84483">
241
+ <div class="svadmin-u-0e12dc7de920 svadmin-u-6da6a3c3f741 svadmin-u-9e3dc30c26a3">
242
242
  {#key getPath()}
243
243
  <div in:fly={{ x: 20, duration: 150 }} out:fade={{ duration: 80 }}>
244
244
  {@render children()}
@@ -247,7 +247,7 @@
247
247
  </div>
248
248
  </main>
249
249
 
250
- <footer class="flex min-h-14 shrink-0 items-center justify-end gap-2 border-t border-border/60 bg-background px-4 empty:hidden">
250
+ <footer class="svadmin-u-60fbb7713999 svadmin-u-0cfe3fb5e434 svadmin-u-012fbd121f37 svadmin-u-3960ffc248d9 svadmin-u-77c08e015d14 svadmin-u-77a2a20e90d4 svadmin-u-b950dda299d3 svadmin-u-05faf5c801ff svadmin-u-e6f9e383a762 svadmin-u-f0faeb26d656 svadmin-u-472f43d3a27b">
251
251
  <DevTools docked />
252
252
  {@render aiAssistant?.({ docked: true, scope: chatScope, ownerScope: layoutScope })}
253
253
  </footer>
@@ -34,14 +34,14 @@
34
34
  </script>
35
35
 
36
36
  {#await pagePromise}
37
- <div class="flex min-h-40 items-center justify-center" role="status" aria-live="polite">
38
- <span class="text-sm text-muted-foreground">Loading...</span>
37
+ <div class="svadmin-u-60fbb7713999 svadmin-u-8a7a926578c8 svadmin-u-3960ffc248d9 svadmin-u-86843cf1e227" role="status" aria-live="polite">
38
+ <span class="svadmin-u-fc7473ca09eb svadmin-u-bfa603190748">Loading...</span>
39
39
  </div>
40
40
  {:then pageModule}
41
41
  {@const Page = pageModule.default as unknown as LazyPageRenderable}
42
42
  <Page {...props} />
43
43
  {:catch}
44
- <div class="flex min-h-40 items-center justify-center" role="alert">
45
- <span class="text-sm text-destructive">Unable to load this page.</span>
44
+ <div class="svadmin-u-60fbb7713999 svadmin-u-8a7a926578c8 svadmin-u-3960ffc248d9 svadmin-u-86843cf1e227" role="alert">
45
+ <span class="svadmin-u-fc7473ca09eb svadmin-u-811148b13d1e">Unable to load this page.</span>
46
46
  </div>
47
47
  {/await}
@@ -1,6 +1,6 @@
1
1
  <script lang="ts">
2
- // ListInferencer — 基于资源定义零配置渲染列表视图
3
- // 直接复用 ListPage + AutoTable,不需要手写任何页面代码。
2
+ // ListInferencer renders a list view from the resource definition with no page-specific configuration.
3
+ // It composes ListPage and AutoTable without requiring handwritten page code.
4
4
  import ListPage from './ListPage.svelte';
5
5
 
6
6
  interface Props {
@@ -54,7 +54,7 @@
54
54
  const showCreate = $derived(canCreate ?? resource.canCreate !== false);
55
55
  </script>
56
56
 
57
- <div class="{density === 'compact' ? 'space-y-3' : 'space-y-4'} {className}">
57
+ <div class="{density === 'compact' ? 'svadmin-u-6ed543e2fbbb' : 'svadmin-u-3e7ce58d64fa'} {className}">
58
58
  <PageHeader title={pageTitle} {density}>
59
59
  {#snippet actions()}
60
60
  {#if showCreate}
@@ -16,9 +16,9 @@
16
16
  }>();
17
17
 
18
18
  const statusConfigs = {
19
- connected: { variant: 'default' as const, dotClass: 'bg-success', label: 'Live', icon: Wifi },
20
- connecting: { variant: 'secondary' as const, dotClass: 'bg-warning', label: 'Connecting...', icon: Loader2 as typeof Wifi },
21
- disconnected: { variant: 'destructive' as const, dotClass: 'bg-destructive', label: 'Offline', icon: WifiOff },
19
+ connected: { variant: 'default' as const, dotClass: 'svadmin-u-3355648fe22b', label: 'Live', icon: Wifi },
20
+ connecting: { variant: 'secondary' as const, dotClass: 'svadmin-u-a486cacb3a15', label: 'Connecting...', icon: Loader2 as typeof Wifi },
21
+ disconnected: { variant: 'destructive' as const, dotClass: 'svadmin-u-fb1b0d05046d', label: 'Offline', icon: WifiOff },
22
22
  } as const;
23
23
  type StatusKey = 'connected' | 'connecting' | 'disconnected';
24
24
  const cfg = $derived(statusConfigs[status as StatusKey]);
@@ -40,28 +40,28 @@
40
40
  <div transition:fade={{ duration: 200 }}>
41
41
  <Badge
42
42
  variant={cfg.variant}
43
- class="gap-1.5 select-none"
43
+ class="svadmin-u-58284b4ea568 svadmin-u-7f6912283f11"
44
44
  title={cfg.label}
45
45
  role="status"
46
46
  aria-label={`Connection status: ${cfg.label}${resource ? ` for ${resource}` : ''}`}
47
47
  >
48
- <span class="relative flex h-2 w-2" aria-hidden="true">
49
- <span class="{cfg.dotClass} rounded-full h-2 w-2"></span>
48
+ <span class="svadmin-u-d89972fe17d6 svadmin-u-60fbb7713999 svadmin-u-2f2a842e50fa svadmin-u-940924b6e2d9" aria-hidden="true">
49
+ <span class="{cfg.dotClass} svadmin-u-ac204c108886 svadmin-u-2f2a842e50fa svadmin-u-940924b6e2d9"></span>
50
50
  {#if status === 'connected'}
51
- <span class="absolute inset-0 rounded-full {cfg.dotClass} opacity-40 animate-ping motion-reduce:animate-none"></span>
51
+ <span class="svadmin-u-da4dbfbc4fdc svadmin-u-7b7df0449b80 svadmin-u-ac204c108886 {cfg.dotClass} svadmin-u-2a2db4667b27 svadmin-u-e9963c2ac628 svadmin-u-259ce51fc8f3"></span>
52
52
  {/if}
53
53
  </span>
54
- <span class="text-[0.6875rem] font-semibold uppercase tracking-wide">{cfg.label}</span>
54
+ <span class="svadmin-u-76067d04e222 svadmin-u-e83a7042bc91 uppercase svadmin-u-8baf13a3e9d7">{cfg.label}</span>
55
55
 
56
56
  {#if showDetails && resource}
57
- <span class="text-[0.625rem] font-mono opacity-70">{resource}</span>
57
+ <span class="svadmin-u-06b1d9433e62 svadmin-u-0e65706bcccd svadmin-u-0c67ca474a69">{resource}</span>
58
58
  {/if}
59
59
 
60
60
  {#if showDetails && lastEvent}
61
- <span class="text-[0.625rem] opacity-70">
61
+ <span class="svadmin-u-06b1d9433e62 svadmin-u-0c67ca474a69">
62
62
  {lastEvent.type}
63
63
  {#if timeSinceEvent !== null && timeSinceEvent < 60}
64
- <span class="opacity-60 tabular-nums">{timeSinceEvent}s ago</span>
64
+ <span class="svadmin-u-f2868c227fcd svadmin-u-3032cae0badb">{timeSinceEvent}s ago</span>
65
65
  {/if}
66
66
  </span>
67
67
  {/if}
@@ -68,65 +68,65 @@
68
68
 
69
69
  {#snippet footer()}
70
70
  {#if authProvider?.register}
71
- <div class="flex items-center justify-center gap-1.5"><span class="text-sm text-muted-foreground">{i18n.t('auth.noAccount')}</span><Button variant="link" class="h-auto p-0 text-sm font-semibold" onclick={() => adminContext.navigate('/register')}>{i18n.t('auth.register')}</Button></div>
71
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-86843cf1e227 svadmin-u-58284b4ea568"><span class="svadmin-u-fc7473ca09eb svadmin-u-bfa603190748">{i18n.t('auth.noAccount')}</span><Button variant="link" class="svadmin-u-b8f0a08ece1e svadmin-u-8a539c7fe216 svadmin-u-fc7473ca09eb svadmin-u-e83a7042bc91" onclick={() => adminContext.navigate('/register')}>{i18n.t('auth.register')}</Button></div>
72
72
  {/if}
73
73
  {/snippet}
74
74
 
75
75
  <AuthPageShell brand={title} title={i18n.t('auth.welcomeBack')} description={i18n.t('auth.welcomeMessage')} {footer}>
76
76
  {#if loginHint || defaultIdentifier || defaultPassword}
77
- <aside class="mb-5 rounded-md border border-border bg-muted/35 p-3">
77
+ <aside class="svadmin-u-fb88ccaacf5b svadmin-u-421ac2be5045 svadmin-u-ca6bcd4b6f3f svadmin-u-18049387f0af svadmin-u-60ed9c3ef326 svadmin-u-eb6e8b881acd">
78
78
  {#if loginHint}
79
- <p class="text-sm font-medium text-foreground">{loginHint}</p>
79
+ <p class="svadmin-u-fc7473ca09eb svadmin-u-2689f3958069 svadmin-u-d4108abe6359">{loginHint}</p>
80
80
  {/if}
81
- <dl class="mt-3 grid gap-2 sm:grid-cols-2">
81
+ <dl class="svadmin-u-eccd13ef4f2f svadmin-u-f3c543ad5fe9 svadmin-u-77a2a20e90d4 svadmin-u-e00ad81645a2">
82
82
  {#if defaultIdentifier}
83
- <div class="rounded-md border border-border bg-background px-3 py-2">
84
- <dt class="text-xs font-medium text-muted-foreground">{i18n.t('auth.usernameOrEmail')}</dt>
85
- <dd class="mt-1 truncate font-mono text-sm text-foreground">{defaultIdentifier}</dd>
83
+ <div class="svadmin-u-421ac2be5045 svadmin-u-ca6bcd4b6f3f svadmin-u-18049387f0af svadmin-u-e6f9e383a762 svadmin-u-0e17f2bd9074 svadmin-u-03b4dd7f172b">
84
+ <dt class="svadmin-u-359090c2d529 svadmin-u-2689f3958069 svadmin-u-bfa603190748">{i18n.t('auth.usernameOrEmail')}</dt>
85
+ <dd class="svadmin-u-b6b02c0ebef6 svadmin-u-f283ea9bea0e svadmin-u-0e65706bcccd svadmin-u-fc7473ca09eb svadmin-u-d4108abe6359">{defaultIdentifier}</dd>
86
86
  </div>
87
87
  {/if}
88
88
  {#if defaultPassword}
89
- <div class="rounded-md border border-border bg-background px-3 py-2">
90
- <dt class="text-xs font-medium text-muted-foreground">{i18n.t('auth.password')}</dt>
91
- <dd class="mt-1 font-mono text-sm text-foreground">{defaultPassword}</dd>
89
+ <div class="svadmin-u-421ac2be5045 svadmin-u-ca6bcd4b6f3f svadmin-u-18049387f0af svadmin-u-e6f9e383a762 svadmin-u-0e17f2bd9074 svadmin-u-03b4dd7f172b">
90
+ <dt class="svadmin-u-359090c2d529 svadmin-u-2689f3958069 svadmin-u-bfa603190748">{i18n.t('auth.password')}</dt>
91
+ <dd class="svadmin-u-b6b02c0ebef6 svadmin-u-0e65706bcccd svadmin-u-fc7473ca09eb svadmin-u-d4108abe6359">{defaultPassword}</dd>
92
92
  </div>
93
93
  {/if}
94
94
  </dl>
95
95
  </aside>
96
96
  {/if}
97
97
 
98
- <form onsubmit={handleSubmit} class="space-y-5">
98
+ <form onsubmit={handleSubmit} class="svadmin-u-b43b4c086d9a">
99
99
  {#if error}
100
100
  <Alert.Root variant="destructive">
101
- <AlertCircle class="h-4 w-4" />
102
- <Alert.Description class="text-sm font-medium">{error}</Alert.Description>
101
+ <AlertCircle class="svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3" />
102
+ <Alert.Description class="svadmin-u-fc7473ca09eb svadmin-u-2689f3958069">{error}</Alert.Description>
103
103
  </Alert.Root>
104
104
  {/if}
105
105
 
106
- <div class="space-y-2">
106
+ <div class="svadmin-u-6f7e013d6499">
107
107
  <Label for="login-identifier">
108
108
  {i18n.t('auth.usernameOrEmail')}
109
109
  </Label>
110
- <div class="relative">
111
- <User class="pointer-events-none absolute left-3 top-1/2 z-[1] h-4 w-4 -translate-y-1/2 text-muted-foreground" />
110
+ <div class="svadmin-u-d89972fe17d6">
111
+ <User class="svadmin-u-a4326536b8f5 svadmin-u-da4dbfbc4fdc svadmin-u-22e59b722111 svadmin-u-d694ba66e322 svadmin-u-536a7530a44f svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3 svadmin-u-36b381be4df3 svadmin-u-bfa603190748" />
112
112
  <Input
113
113
  id="login-identifier"
114
114
  type="text"
115
115
  placeholder={i18n.t('auth.identifierPlaceholder')}
116
116
  bind:value={identifier}
117
- class="pl-9"
117
+ class="svadmin-u-9e83b2412bc9"
118
118
  autocomplete="username"
119
119
  />
120
120
  </div>
121
121
  </div>
122
122
 
123
- <div class="space-y-2">
124
- <div class="flex items-center justify-between">
123
+ <div class="svadmin-u-6f7e013d6499">
124
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-8ef2268efbbc">
125
125
  <Label for="login-password">
126
126
  {i18n.t('auth.password')}
127
127
  </Label>
128
128
  {#if authProvider?.forgotPassword}
129
- <Button variant="link" class="h-auto p-0 text-xs font-medium" onclick={() => adminContext.navigate('/forgot-password')}>
129
+ <Button variant="link" class="svadmin-u-b8f0a08ece1e svadmin-u-8a539c7fe216 svadmin-u-359090c2d529 svadmin-u-2689f3958069" onclick={() => adminContext.navigate('/forgot-password')}>
130
130
  {i18n.t('auth.forgotPasswordLink')}
131
131
  </Button>
132
132
  {/if}
@@ -139,31 +139,31 @@
139
139
  />
140
140
  </div>
141
141
 
142
- <Button type="submit" class="h-10 w-full" disabled={login.isLoading}>
142
+ <Button type="submit" class="svadmin-u-426b8b75185b svadmin-u-6da6a3c3f741" disabled={login.isLoading}>
143
143
  {#if login.isLoading}
144
- <Loader2 class="h-5 w-5 animate-spin mr-2" />
144
+ <Loader2 class="svadmin-u-cd0d9c512cdc svadmin-u-72470489ff4e svadmin-u-afbdd13a380e svadmin-u-d2347e8497a9" />
145
145
  {/if}
146
146
  {i18n.t('auth.loginButton')}
147
147
  </Button>
148
148
  </form>
149
149
 
150
150
  {#if socialProviders.length > 0}
151
- <div class="relative my-6">
151
+ <div class="svadmin-u-d89972fe17d6 svadmin-u-1256b2f6ad2d">
152
152
  <Separator />
153
- <span class="absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 bg-card px-4 text-xs font-medium text-muted-foreground">
153
+ <span class="svadmin-u-da4dbfbc4fdc svadmin-u-e632769ad71e svadmin-u-d694ba66e322 svadmin-u-efaa0701487e svadmin-u-36b381be4df3 svadmin-u-cd0ad9a56558 svadmin-u-f0faeb26d656 svadmin-u-359090c2d529 svadmin-u-2689f3958069 svadmin-u-bfa603190748">
154
154
  {i18n.t('auth.orContinueWith')}
155
155
  </span>
156
156
  </div>
157
157
 
158
- <div class="grid gap-3" class:grid-cols-2={socialProviders.length >= 2}>
158
+ <div class="svadmin-u-f3c543ad5fe9 svadmin-u-1004c0c3954c" class:grid-cols-2={socialProviders.length >= 2}>
159
159
  {#each socialProviders as provider (provider.name)}
160
160
  <Button
161
161
  variant="outline"
162
- class="h-10 w-full"
162
+ class="svadmin-u-426b8b75185b svadmin-u-6da6a3c3f741"
163
163
  onclick={provider.onClick}
164
164
  >
165
165
  {#if provider.icon}
166
- <span class="mr-2 text-lg">{provider.icon}</span>
166
+ <span class="svadmin-u-d2347e8497a9 svadmin-u-42536e69e639">{provider.icon}</span>
167
167
  {/if}
168
168
  {provider.name}
169
169
  </Button>
@@ -22,7 +22,7 @@
22
22
  idKey = 'id',
23
23
  titleKey = 'title',
24
24
  subtitleKey = 'subtitle',
25
- listWidth = 'w-72 sm:w-80',
25
+ listWidth = 'svadmin-u-92e13d146fd7 svadmin-u-b7dfca40c07f',
26
26
  emptyText = 'No items found',
27
27
  itemSnippet,
28
28
  detailSnippet,
@@ -46,44 +46,44 @@
46
46
  );
47
47
  </script>
48
48
 
49
- <div class={cn('flex h-full min-h-[420px] rounded-xl border border-border bg-card shadow-xs overflow-hidden text-xs', className)}>
49
+ <div class={cn('svadmin-u-60fbb7713999 svadmin-u-668b21aa5409 svadmin-u-afc45e21ada6 svadmin-u-a217b4eaa918 svadmin-u-ca6bcd4b6f3f svadmin-u-18049387f0af svadmin-u-cd0ad9a56558 svadmin-u-cef5b893cf23 svadmin-u-2cd02d11d1af svadmin-u-359090c2d529', className)}>
50
50
  <!-- Master List Panel -->
51
- <div class={cn('flex flex-col border-r border-border/60 bg-muted/15 shrink-0', listWidth)}>
51
+ <div class={cn('svadmin-u-60fbb7713999 svadmin-u-8dddea0773ed svadmin-u-5ceb636bd9f3 svadmin-u-05faf5c801ff svadmin-u-46daeb0b661f svadmin-u-012fbd121f37', listWidth)}>
52
52
  <!-- Search Bar -->
53
- <div class="p-3 border-b border-border/60">
54
- <div class="relative">
55
- <Search class="absolute left-2.5 top-2.5 h-3.5 w-3.5 text-muted-foreground" />
53
+ <div class="svadmin-u-eb6e8b881acd svadmin-u-65fdbade2025 svadmin-u-05faf5c801ff">
54
+ <div class="svadmin-u-d89972fe17d6">
55
+ <Search class="svadmin-u-da4dbfbc4fdc svadmin-u-ecfeb742a3f3 svadmin-u-7a470f4c9b28 svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c svadmin-u-bfa603190748" />
56
56
  <input
57
57
  type="text"
58
58
  bind:value={searchQuery}
59
59
  placeholder="Search items..."
60
- class="h-8 w-full rounded-md border border-input bg-background pl-8 pr-2 text-xs focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring"
60
+ class="svadmin-u-ed8a5df7b2fb svadmin-u-6da6a3c3f741 svadmin-u-421ac2be5045 svadmin-u-ca6bcd4b6f3f svadmin-u-e5795dad4d22 svadmin-u-e6f9e383a762 svadmin-u-e4af885410fe svadmin-u-aa2c13a5e1b4 svadmin-u-359090c2d529 svadmin-u-f10f771f87e9 svadmin-u-3e94a98e1466 svadmin-u-9c1295a6914a"
61
61
  />
62
62
  </div>
63
63
  </div>
64
64
 
65
65
  <!-- Scrollable Items List -->
66
- <div class="flex-1 overflow-y-auto divide-y divide-border/40">
66
+ <div class="svadmin-u-36e579c0b41c svadmin-u-92bf82f493b1 svadmin-u-fa6acbf81d74 svadmin-u-08b5607c7258">
67
67
  {#each filteredItems as item (item[idKey])}
68
68
  {@const isSelected = String(item[idKey]) === String(activeItem?.[idKey])}
69
69
  <button
70
70
  type="button"
71
71
  class={cn(
72
- 'w-full text-left p-3 transition-colors cursor-pointer border-0 bg-transparent',
72
+ 'svadmin-u-6da6a3c3f741 svadmin-u-2eba0d65d059 svadmin-u-eb6e8b881acd svadmin-u-ceb69a6b0e5f svadmin-u-34516836730d svadmin-u-119b2aa0b8f6 svadmin-u-7f19cdf4c5bb',
73
73
  isSelected
74
- ? 'bg-primary/10 border-l-3 border-primary text-foreground font-medium'
75
- : 'hover:bg-muted/40 text-muted-foreground'
74
+ ? 'svadmin-u-375dc44df6e9 svadmin-u-445ec4d497ce svadmin-u-6cbc84dd9e1a svadmin-u-d4108abe6359 svadmin-u-2689f3958069'
75
+ : 'svadmin-u-f6e31b39b8e4 svadmin-u-bfa603190748'
76
76
  )}
77
77
  onclick={() => { selectedId = item[idKey] as (string | number); }}
78
78
  >
79
79
  {#if itemSnippet}
80
80
  {@render itemSnippet(item, isSelected)}
81
81
  {:else}
82
- <div class={cn('font-semibold truncate', isSelected ? 'text-primary' : 'text-foreground')}>
82
+ <div class={cn('svadmin-u-e83a7042bc91 svadmin-u-f283ea9bea0e', isSelected ? 'svadmin-u-20aaf08a7ed1' : 'svadmin-u-d4108abe6359')}>
83
83
  {item[titleKey] ?? item.name ?? `Item #${item[idKey]}`}
84
84
  </div>
85
85
  {#if item[subtitleKey]}
86
- <div class="text-[11px] text-muted-foreground truncate mt-0.5">
86
+ <div class="svadmin-u-d058ca6de60f svadmin-u-bfa603190748 svadmin-u-f283ea9bea0e svadmin-u-15e1b1f444fe">
87
87
  {item[subtitleKey]}
88
88
  </div>
89
89
  {/if}
@@ -92,7 +92,7 @@
92
92
  {/each}
93
93
 
94
94
  {#if filteredItems.length === 0}
95
- <div class="p-6 text-center text-muted-foreground">
95
+ <div class="svadmin-u-0478c89a150f svadmin-u-ca6bf63030aa svadmin-u-bfa603190748">
96
96
  {emptyText}
97
97
  </div>
98
98
  {/if}
@@ -100,33 +100,33 @@
100
100
  </div>
101
101
 
102
102
  <!-- Detail Content Panel -->
103
- <div class="flex-1 flex flex-col overflow-y-auto p-6 bg-card">
103
+ <div class="svadmin-u-36e579c0b41c svadmin-u-60fbb7713999 svadmin-u-8dddea0773ed svadmin-u-92bf82f493b1 svadmin-u-0478c89a150f svadmin-u-cd0ad9a56558">
104
104
  {#if activeItem}
105
105
  {#if detailSnippet}
106
106
  {@render detailSnippet(activeItem)}
107
107
  {:else}
108
- <div class="space-y-4">
109
- <div class="pb-3 border-b border-border/60">
110
- <h3 class="text-base font-semibold text-foreground">
108
+ <div class="svadmin-u-3e7ce58d64fa">
109
+ <div class="svadmin-u-7fcf9124b5df svadmin-u-65fdbade2025 svadmin-u-05faf5c801ff">
110
+ <h3 class="svadmin-u-4ee734926ff6 svadmin-u-e83a7042bc91 svadmin-u-d4108abe6359">
111
111
  {activeItem[titleKey] ?? activeItem.name ?? `Item #${activeItem[idKey]}`}
112
112
  </h3>
113
113
  {#if activeItem[subtitleKey]}
114
- <p class="text-xs text-muted-foreground mt-0.5">{activeItem[subtitleKey]}</p>
114
+ <p class="svadmin-u-359090c2d529 svadmin-u-bfa603190748 svadmin-u-15e1b1f444fe">{activeItem[subtitleKey]}</p>
115
115
  {/if}
116
116
  </div>
117
117
 
118
- <div class="grid grid-cols-2 gap-3 text-xs">
118
+ <div class="svadmin-u-f3c543ad5fe9 svadmin-u-8e75e3db482b svadmin-u-1004c0c3954c svadmin-u-359090c2d529">
119
119
  {#each Object.entries(activeItem) as [k, v] (k)}
120
- <div class="p-2.5 rounded-lg bg-muted/20 border border-border/40">
121
- <span class="text-muted-foreground font-medium block text-[11px] mb-0.5">{k}</span>
122
- <span class="font-mono text-foreground break-words">{typeof v === 'object' ? JSON.stringify(v) : String(v ?? '—')}</span>
120
+ <div class="svadmin-u-9fe52d5d506c svadmin-u-5f22e64f2282 svadmin-u-967d113a1451 svadmin-u-ca6bcd4b6f3f svadmin-u-6ee2d41e2d2d">
121
+ <span class="svadmin-u-bfa603190748 svadmin-u-2689f3958069 svadmin-u-0214b4b355d1 svadmin-u-d058ca6de60f svadmin-u-166af870e200">{k}</span>
122
+ <span class="svadmin-u-0e65706bcccd svadmin-u-d4108abe6359 svadmin-u-170cee3ff4e4">{typeof v === 'object' ? JSON.stringify(v) : String(v ?? '—')}</span>
123
123
  </div>
124
124
  {/each}
125
125
  </div>
126
126
  </div>
127
127
  {/if}
128
128
  {:else}
129
- <div class="flex-1 flex items-center justify-center text-muted-foreground">
129
+ <div class="svadmin-u-36e579c0b41c svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-86843cf1e227 svadmin-u-bfa603190748">
130
130
  Select an item from the list to view details
131
131
  </div>
132
132
  {/if}