@svadmin/ui 0.68.1 → 0.69.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (315) hide show
  1. package/README.md +52 -0
  2. package/dist/app.css +7627 -853
  3. package/dist/app.theme.css +7676 -850
  4. package/dist/components/AboutSettings.svelte +8 -8
  5. package/dist/components/ActivityFeed.svelte +25 -40
  6. package/dist/components/AdminApp.svelte +14 -14
  7. package/dist/components/AnomalyBadge.svelte +6 -5
  8. package/dist/components/ApiSettings.svelte +8 -8
  9. package/dist/components/AppearanceSettings.svelte +13 -13
  10. package/dist/components/ApprovalActionCard.svelte +35 -35
  11. package/dist/components/AuditLogDrawer.svelte +17 -17
  12. package/dist/components/AuditLogViewer.svelte +42 -42
  13. package/dist/components/AuthPageShell.svelte +11 -11
  14. package/dist/components/AutoForm.svelte +28 -28
  15. package/dist/components/AutoSaveIndicator.svelte +8 -8
  16. package/dist/components/AutoTable.svelte +141 -141
  17. package/dist/components/BatchActionBar.svelte +15 -15
  18. package/dist/components/Breadcrumbs.svelte +4 -4
  19. package/dist/components/CancelTaskButton.svelte +2 -2
  20. package/dist/components/CanvasAnnotation.svelte +27 -27
  21. package/dist/components/Cascader.svelte +20 -20
  22. package/dist/components/CatchAllNavigate.svelte +2 -2
  23. package/dist/components/ColumnHeaderFilter.svelte +21 -21
  24. package/dist/components/ColumnSettings.svelte +20 -20
  25. package/dist/components/ComboboxField.svelte +17 -17
  26. package/dist/components/CommandPalette.svelte +23 -23
  27. package/dist/components/ConfigErrorScreen.svelte +27 -27
  28. package/dist/components/ConfirmDialog.svelte +1 -1
  29. package/dist/components/CreateInferencer.svelte +1 -1
  30. package/dist/components/CreatePage.svelte +1 -1
  31. package/dist/components/DecisionTable.svelte +39 -39
  32. package/dist/components/DetailDrawer.svelte +9 -9
  33. package/dist/components/DevTools.svelte +96 -96
  34. package/dist/components/DraggableGrid.svelte +6 -6
  35. package/dist/components/DraggableHeader.svelte +1 -1
  36. package/dist/components/DraggableRowTable.svelte +13 -13
  37. package/dist/components/DrawerForm.svelte +10 -10
  38. package/dist/components/DynamicFormList.svelte +19 -19
  39. package/dist/components/EditInferencer.svelte +3 -3
  40. package/dist/components/EditInferencer.svelte.d.ts +1 -1
  41. package/dist/components/EditPage.svelte +1 -1
  42. package/dist/components/EditableTable.svelte +30 -30
  43. package/dist/components/EmptyState.svelte +6 -6
  44. package/dist/components/ErrorBoundary.svelte +8 -8
  45. package/dist/components/ErrorComponent.svelte +5 -5
  46. package/dist/components/FieldRenderer.svelte +30 -30
  47. package/dist/components/FilterBuilder.svelte +31 -31
  48. package/dist/components/FilterDropdown.svelte +26 -26
  49. package/dist/components/ForgotPasswordPage.svelte +14 -14
  50. package/dist/components/GanttChart.svelte +30 -30
  51. package/dist/components/Header.svelte +13 -13
  52. package/dist/components/ImageCropper.svelte +21 -21
  53. package/dist/components/ImportWizard.svelte +49 -49
  54. package/dist/components/InferencerPanel.svelte +35 -35
  55. package/dist/components/InfiniteList.svelte +8 -8
  56. package/dist/components/InlineEdit.svelte +5 -5
  57. package/dist/components/IntegrationsSettings.svelte +5 -5
  58. package/dist/components/JsonSchemaForm.svelte +18 -18
  59. package/dist/components/KanbanBoard.svelte +30 -30
  60. package/dist/components/KeyboardShortcuts.svelte +8 -8
  61. package/dist/components/Layout.svelte +22 -22
  62. package/dist/components/LazyPage.svelte +4 -4
  63. package/dist/components/ListInferencer.svelte +2 -2
  64. package/dist/components/ListPage.svelte +1 -1
  65. package/dist/components/LiveIndicator.svelte +11 -11
  66. package/dist/components/LoginPage.svelte +27 -27
  67. package/dist/components/MasterDetailView.svelte +24 -24
  68. package/dist/components/MediaLibraryModal.svelte +37 -37
  69. package/dist/components/MentionsInput.svelte +11 -11
  70. package/dist/components/MetricStrip.svelte +18 -58
  71. package/dist/components/ModalForm.svelte +8 -8
  72. package/dist/components/MultiTabKeepAlive.svelte +14 -14
  73. package/dist/components/NavigateToResource.svelte +3 -3
  74. package/dist/components/NotificationsSettings.svelte +4 -4
  75. package/dist/components/OfflineSyncBanner.svelte +28 -28
  76. package/dist/components/PageHeader.svelte +12 -13
  77. package/dist/components/PageSkeleton.svelte +26 -26
  78. package/dist/components/PasswordInput.svelte +11 -11
  79. package/dist/components/PdfDocumentViewer.svelte +45 -45
  80. package/dist/components/PermissionMatrix.svelte +48 -48
  81. package/dist/components/PivotTable.svelte +21 -21
  82. package/dist/components/PresenceAvatarGroup.svelte +11 -11
  83. package/dist/components/PrintableBill.svelte +43 -43
  84. package/dist/components/ProfilePage.svelte +34 -34
  85. package/dist/components/RecordDetailDrawer.svelte +15 -15
  86. package/dist/components/RegisterPage.svelte +9 -9
  87. package/dist/components/ResourceInferencer.svelte +3 -3
  88. package/dist/components/ResourceOperationsPage.svelte +44 -44
  89. package/dist/components/RetryTaskButton.svelte +2 -2
  90. package/dist/components/RolesSettings.svelte +4 -4
  91. package/dist/components/RowActions.svelte +10 -10
  92. package/dist/components/SecuritySettings.svelte +8 -8
  93. package/dist/components/SensitiveDataMask.svelte +8 -8
  94. package/dist/components/SettingsPage.svelte +17 -17
  95. package/dist/components/ShowInferencer.svelte +3 -3
  96. package/dist/components/ShowInferencer.svelte.d.ts +1 -1
  97. package/dist/components/ShowPage.svelte +24 -24
  98. package/dist/components/Sidebar.svelte +63 -63
  99. package/dist/components/SidebarItem.svelte +35 -35
  100. package/dist/components/SignaturePad.svelte +16 -16
  101. package/dist/components/SplitPaneLayout.svelte +10 -10
  102. package/dist/components/SpreadsheetView.svelte +35 -35
  103. package/dist/components/StatsCard.svelte +12 -25
  104. package/dist/components/StepForm.svelte +23 -23
  105. package/dist/components/StepsForm.svelte +17 -17
  106. package/dist/components/SvadminLogo.svelte +1 -1
  107. package/dist/components/SystemPageShell.svelte +6 -6
  108. package/dist/components/TableSummary.svelte +8 -8
  109. package/dist/components/TaskDetails.svelte +29 -29
  110. package/dist/components/TaskList.svelte +17 -17
  111. package/dist/components/TaskProgressBar.svelte +4 -4
  112. package/dist/components/TaskQueueDrawer.svelte +44 -44
  113. package/dist/components/TaskStatusBadge.svelte +5 -5
  114. package/dist/components/TenantSwitcher.svelte +17 -17
  115. package/dist/components/ThemedTitle.svelte +4 -4
  116. package/dist/components/Toast.svelte +2 -2
  117. package/dist/components/Transfer.svelte +40 -40
  118. package/dist/components/TreeSelect.svelte +32 -32
  119. package/dist/components/TreeTable.svelte +28 -28
  120. package/dist/components/TwoFactorAuthPage.svelte +15 -15
  121. package/dist/components/UndoableNotification.svelte +10 -10
  122. package/dist/components/UpdatePasswordPage.svelte +6 -6
  123. package/dist/components/VersionDiffViewer.svelte +38 -38
  124. package/dist/components/VirtualTable.svelte +9 -9
  125. package/dist/components/Watermark.svelte +2 -2
  126. package/dist/components/account/CompanyProfilePage.svelte +4 -4
  127. package/dist/components/account/GetStartedPage.svelte +19 -19
  128. package/dist/components/account/ImportMembersPage.svelte +42 -42
  129. package/dist/components/account/MembersStarterPage.svelte +18 -18
  130. package/dist/components/account/SecurityLogPage.svelte +1 -1
  131. package/dist/components/account/SettingsEnterprisePage.svelte +7 -7
  132. package/dist/components/account/SettingsPlainPage.svelte +3 -3
  133. package/dist/components/account/SettingsSidebarPage.svelte +5 -5
  134. package/dist/components/account/TeamMembersPage.svelte +2 -2
  135. package/dist/components/account/UserProfilePage.svelte +3 -3
  136. package/dist/components/buttons/CloneButton.svelte +2 -2
  137. package/dist/components/buttons/CreateButton.svelte +2 -2
  138. package/dist/components/buttons/DeleteButton.svelte +4 -4
  139. package/dist/components/buttons/EditButton.svelte +2 -2
  140. package/dist/components/buttons/ExportButton.svelte +2 -2
  141. package/dist/components/buttons/ImportButton.svelte +3 -3
  142. package/dist/components/buttons/ListButton.svelte +2 -2
  143. package/dist/components/buttons/RefreshButton.svelte +2 -2
  144. package/dist/components/buttons/SaveButton.svelte +3 -3
  145. package/dist/components/buttons/ShowButton.svelte +2 -2
  146. package/dist/components/charts/BarChart.svelte +3 -3
  147. package/dist/components/charts/LineChart.svelte +3 -3
  148. package/dist/components/charts/PieChart.svelte +7 -7
  149. package/dist/components/content/ApiKeyList.svelte +12 -12
  150. package/dist/components/content/AuditTimeline.svelte +18 -18
  151. package/dist/components/content/ContentPageHeader.svelte +9 -9
  152. package/dist/components/content/ContentPageShell.svelte +2 -2
  153. package/dist/components/content/DataState.svelte +8 -8
  154. package/dist/components/content/DescriptionList.svelte +25 -25
  155. package/dist/components/content/FeedbackNotice.svelte +11 -11
  156. package/dist/components/content/FileList.svelte +2 -2
  157. package/dist/components/content/FilterToolbar.svelte +15 -15
  158. package/dist/components/content/ImportDropzone.svelte +6 -6
  159. package/dist/components/content/IntegrationCard.svelte +4 -4
  160. package/dist/components/content/MediaThumbnail.svelte +16 -16
  161. package/dist/components/content/MemberList.svelte +2 -2
  162. package/dist/components/content/MetricBlock.svelte +7 -7
  163. package/dist/components/content/NetworkTable.svelte +1 -1
  164. package/dist/components/content/NetworkUserCard.svelte +12 -12
  165. package/dist/components/content/OtpInput.svelte +2 -2
  166. package/dist/components/content/PageToolbar.svelte +3 -3
  167. package/dist/components/content/ProjectCard.svelte +11 -11
  168. package/dist/components/content/SectionHeader.svelte +5 -5
  169. package/dist/components/content/SecurityEventTable.svelte +2 -2
  170. package/dist/components/content/SettingsFieldRow.svelte +5 -5
  171. package/dist/components/content/SettingsGroup.svelte +7 -7
  172. package/dist/components/content/StatusBadge.svelte +6 -6
  173. package/dist/components/content/StatusTabs.svelte +28 -28
  174. package/dist/components/content/SystemErrorState.svelte +2 -2
  175. package/dist/components/content/TeamCard.svelte +6 -6
  176. package/dist/components/content/TwoFactorStepper.svelte +3 -3
  177. package/dist/components/content/WorkspaceActionBar.svelte +12 -12
  178. package/dist/components/content/WorkspaceInspector.svelte +11 -11
  179. package/dist/components/content/WorkspaceLayout.svelte +5 -5
  180. package/dist/components/content/WorkspaceSplitPane.svelte +4 -4
  181. package/dist/components/content/WorkspaceStageStepper.svelte +16 -16
  182. package/dist/components/content/WorkspaceTabBar.svelte +16 -16
  183. package/dist/components/fields/ArrayField.svelte +12 -12
  184. package/dist/components/fields/AvatarField.svelte +15 -15
  185. package/dist/components/fields/BooleanField.svelte +14 -14
  186. package/dist/components/fields/CodeField.svelte +10 -10
  187. package/dist/components/fields/CopyField.svelte +6 -6
  188. package/dist/components/fields/CurrencyField.svelte +6 -6
  189. package/dist/components/fields/DateField.svelte +1 -1
  190. package/dist/components/fields/DateRangeField.svelte +2 -2
  191. package/dist/components/fields/EmailField.svelte +2 -2
  192. package/dist/components/fields/FileField.svelte +3 -3
  193. package/dist/components/fields/ImageField.svelte +1 -1
  194. package/dist/components/fields/JsonField.svelte +11 -11
  195. package/dist/components/fields/MarkdownField.svelte +2 -2
  196. package/dist/components/fields/MultiSelectField.svelte +3 -3
  197. package/dist/components/fields/NumberField.svelte +1 -1
  198. package/dist/components/fields/PercentField.svelte +9 -9
  199. package/dist/components/fields/PhoneField.svelte +8 -8
  200. package/dist/components/fields/RatingField.svelte +10 -10
  201. package/dist/components/fields/RelationField.svelte +3 -3
  202. package/dist/components/fields/RichTextField.svelte +4 -4
  203. package/dist/components/fields/TagField.svelte +11 -11
  204. package/dist/components/fields/TextField.svelte +2 -2
  205. package/dist/components/fields/UrlField.svelte +3 -3
  206. package/dist/components/network/TeamCrewTablePage.svelte +2 -2
  207. package/dist/components/network/UserCardsNFTPage.svelte +1 -1
  208. package/dist/components/profile/ActivityTimeline.svelte +8 -8
  209. package/dist/components/profile/ProfileCard.svelte +47 -47
  210. package/dist/components/profile/ProfileVariantSections.svelte +158 -158
  211. package/dist/components/profile/ProjectsGrid.svelte +6 -6
  212. package/dist/components/profile/PublicProfilePage.svelte +6 -6
  213. package/dist/components/profile/TeamsShowcase.svelte +3 -3
  214. package/dist/components/ui/alert/alert-description.svelte +1 -1
  215. package/dist/components/ui/alert/alert-title.svelte +1 -1
  216. package/dist/components/ui/alert/alert-variants.d.ts +7 -0
  217. package/dist/components/ui/alert/alert-variants.js +2 -0
  218. package/dist/components/ui/alert/alert.svelte +4 -15
  219. package/dist/components/ui/alert/alert.svelte.d.ts +7 -24
  220. package/dist/components/ui/alert-dialog/alert-dialog-content.svelte +2 -2
  221. package/dist/components/ui/alert-dialog/alert-dialog-description.svelte +1 -1
  222. package/dist/components/ui/alert-dialog/alert-dialog-footer.svelte +1 -1
  223. package/dist/components/ui/alert-dialog/alert-dialog-header.svelte +1 -1
  224. package/dist/components/ui/alert-dialog/alert-dialog-overlay.svelte +1 -1
  225. package/dist/components/ui/alert-dialog/alert-dialog-title.svelte +1 -1
  226. package/dist/components/ui/avatar/avatar-variants.d.ts +7 -0
  227. package/dist/components/ui/avatar/avatar-variants.js +2 -0
  228. package/dist/components/ui/avatar/avatar.svelte +11 -20
  229. package/dist/components/ui/avatar/avatar.svelte.d.ts +12 -28
  230. package/dist/components/ui/badge/badge-variants.d.ts +7 -0
  231. package/dist/components/ui/badge/badge-variants.js +2 -0
  232. package/dist/components/ui/badge/badge.svelte +4 -24
  233. package/dist/components/ui/badge/badge.svelte.d.ts +7 -45
  234. package/dist/components/ui/breadcrumb/breadcrumb-ellipsis.svelte +3 -3
  235. package/dist/components/ui/breadcrumb/breadcrumb-item.svelte +1 -1
  236. package/dist/components/ui/breadcrumb/breadcrumb-link.svelte +1 -1
  237. package/dist/components/ui/breadcrumb/breadcrumb-list.svelte +1 -1
  238. package/dist/components/ui/breadcrumb/breadcrumb-page.svelte +1 -1
  239. package/dist/components/ui/breadcrumb/breadcrumb-separator.svelte +2 -2
  240. package/dist/components/ui/button/button-variants.d.ts +9 -0
  241. package/dist/components/ui/button/button-variants.js +3 -0
  242. package/dist/components/ui/button/button.svelte +12 -31
  243. package/dist/components/ui/button/button.svelte.d.ts +9 -61
  244. package/dist/components/ui/card/card-action.svelte +1 -4
  245. package/dist/components/ui/card/card-content.svelte +1 -1
  246. package/dist/components/ui/card/card-description.svelte +1 -1
  247. package/dist/components/ui/card/card-footer.svelte +1 -1
  248. package/dist/components/ui/card/card-header.svelte +1 -4
  249. package/dist/components/ui/card/card-title.svelte +1 -1
  250. package/dist/components/ui/card/card.svelte +1 -1
  251. package/dist/components/ui/checkbox/checkbox.svelte +2 -5
  252. package/dist/components/ui/command/command-dialog.svelte +3 -3
  253. package/dist/components/ui/command/command-empty.svelte +1 -1
  254. package/dist/components/ui/command/command-group.svelte +2 -2
  255. package/dist/components/ui/command/command-input.svelte +1 -4
  256. package/dist/components/ui/command/command-item.svelte +1 -4
  257. package/dist/components/ui/command/command-list.svelte +1 -1
  258. package/dist/components/ui/command/command-separator.svelte +1 -1
  259. package/dist/components/ui/command/command.svelte +1 -4
  260. package/dist/components/ui/dialog/dialog-content.svelte +3 -3
  261. package/dist/components/ui/dialog/dialog-description.svelte +1 -1
  262. package/dist/components/ui/dialog/dialog-footer.svelte +1 -1
  263. package/dist/components/ui/dialog/dialog-header.svelte +1 -1
  264. package/dist/components/ui/dialog/dialog-overlay.svelte +1 -1
  265. package/dist/components/ui/dialog/dialog-title.svelte +1 -1
  266. package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte +2 -5
  267. package/dist/components/ui/dropdown-menu/dropdown-menu-content.svelte +1 -6
  268. package/dist/components/ui/dropdown-menu/dropdown-menu-item.svelte +3 -9
  269. package/dist/components/ui/dropdown-menu/dropdown-menu-separator.svelte +1 -1
  270. package/dist/components/ui/dropdown-menu/dropdown-menu.svelte +1 -1
  271. package/dist/components/ui/input/input.svelte +3 -2
  272. package/dist/components/ui/label/label.svelte +1 -4
  273. package/dist/components/ui/navigation-menu/navigation-menu-content.svelte +1 -5
  274. package/dist/components/ui/navigation-menu/navigation-menu-indicator.svelte +2 -5
  275. package/dist/components/ui/navigation-menu/navigation-menu-item.svelte +1 -1
  276. package/dist/components/ui/navigation-menu/navigation-menu-link.svelte +1 -4
  277. package/dist/components/ui/navigation-menu/navigation-menu-list.svelte +1 -1
  278. package/dist/components/ui/navigation-menu/navigation-menu-trigger.svelte +2 -5
  279. package/dist/components/ui/navigation-menu/navigation-menu-viewport.svelte +2 -5
  280. package/dist/components/ui/navigation-menu/navigation-menu.svelte +1 -1
  281. package/dist/components/ui/pagination/pagination-content.svelte +1 -1
  282. package/dist/components/ui/pagination/pagination-ellipsis.svelte +3 -3
  283. package/dist/components/ui/pagination/pagination-link.svelte +3 -0
  284. package/dist/components/ui/pagination/pagination-next.svelte +5 -2
  285. package/dist/components/ui/pagination/pagination-previous.svelte +5 -2
  286. package/dist/components/ui/pagination/pagination.svelte +1 -1
  287. package/dist/components/ui/popover/popover-content.svelte +1 -4
  288. package/dist/components/ui/progress/progress.svelte +2 -2
  289. package/dist/components/ui/scroll-area/scroll-area.svelte +3 -4
  290. package/dist/components/ui/select/select.svelte +1 -2
  291. package/dist/components/ui/separator/separator.svelte +1 -6
  292. package/dist/components/ui/sheet/sheet-content.svelte +1 -4
  293. package/dist/components/ui/sheet/sheet-description.svelte +1 -1
  294. package/dist/components/ui/sheet/sheet-footer.svelte +1 -1
  295. package/dist/components/ui/sheet/sheet-header.svelte +1 -1
  296. package/dist/components/ui/sheet/sheet-title.svelte +1 -1
  297. package/dist/components/ui/sheet/sheet.svelte +5 -10
  298. package/dist/components/ui/skeleton/skeleton.svelte +1 -1
  299. package/dist/components/ui/switch/switch.svelte +2 -9
  300. package/dist/components/ui/table/table-caption.svelte +1 -1
  301. package/dist/components/ui/table/table-cell.svelte +8 -11
  302. package/dist/components/ui/table/table-footer.svelte +1 -1
  303. package/dist/components/ui/table/table-head.svelte +1 -11
  304. package/dist/components/ui/table/table-header.svelte +1 -1
  305. package/dist/components/ui/table/table-row.svelte +2 -2
  306. package/dist/components/ui/table/table-row.svelte.d.ts +1 -1
  307. package/dist/components/ui/table/table.svelte +2 -2
  308. package/dist/components/ui/tabs/tabs-content.svelte +1 -1
  309. package/dist/components/ui/tabs/tabs-list.svelte +1 -4
  310. package/dist/components/ui/tabs/tabs-trigger.svelte +1 -7
  311. package/dist/components/ui/tabs/tabs.svelte +1 -1
  312. package/dist/components/ui/textarea/textarea.svelte +1 -4
  313. package/dist/components/ui/tooltip/tooltip-content.svelte +1 -1
  314. package/dist/page-chrome.css +228 -0
  315. package/package.json +12 -7
@@ -80,33 +80,33 @@
80
80
  }
81
81
  </script>
82
82
 
83
- <div class={cn('rounded-xl border border-border bg-card shadow-xs overflow-hidden', className)}>
83
+ <div class={cn('svadmin-u-a217b4eaa918 svadmin-u-ca6bcd4b6f3f svadmin-u-18049387f0af svadmin-u-cd0ad9a56558 svadmin-u-cef5b893cf23 svadmin-u-2cd02d11d1af', className)}>
84
84
  <!-- Header & Toolbar -->
85
- <div class="flex items-center justify-between p-3.5 border-b border-border/60 bg-muted/20">
86
- <div class="flex items-center gap-2">
87
- <h4 class="text-xs font-semibold text-foreground">Record Comparison</h4>
88
- <Badge variant="outline" class="text-[11px]">
85
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-8ef2268efbbc svadmin-u-56796a90bec5 svadmin-u-65fdbade2025 svadmin-u-05faf5c801ff svadmin-u-967d113a1451">
86
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-77a2a20e90d4">
87
+ <h4 class="svadmin-u-359090c2d529 svadmin-u-e83a7042bc91 svadmin-u-d4108abe6359">Record Comparison</h4>
88
+ <Badge variant="outline" class="svadmin-u-d058ca6de60f">
89
89
  {modifiedCount} change{modifiedCount === 1 ? '' : 's'}
90
90
  </Badge>
91
91
  </div>
92
92
 
93
- <div class="flex items-center gap-1">
93
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-44ee8ba0a421">
94
94
  <Button
95
95
  variant={mode === 'split' ? 'secondary' : 'ghost'}
96
96
  size="sm"
97
- class="h-7 text-xs gap-1 px-2"
97
+ class="svadmin-u-d0a52b312f7d svadmin-u-359090c2d529 svadmin-u-44ee8ba0a421 svadmin-u-d5eab218aa34"
98
98
  onclick={() => { mode = 'split'; }}
99
99
  >
100
- <Columns2 class="h-3.5 w-3.5" />
100
+ <Columns2 class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c" />
101
101
  Side by Side
102
102
  </Button>
103
103
  <Button
104
104
  variant={mode === 'unified' ? 'secondary' : 'ghost'}
105
105
  size="sm"
106
- class="h-7 text-xs gap-1 px-2"
106
+ class="svadmin-u-d0a52b312f7d svadmin-u-359090c2d529 svadmin-u-44ee8ba0a421 svadmin-u-d5eab218aa34"
107
107
  onclick={() => { mode = 'unified'; }}
108
108
  >
109
- <AlignJustify class="h-3.5 w-3.5" />
109
+ <AlignJustify class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c" />
110
110
  Unified
111
111
  </Button>
112
112
  </div>
@@ -114,39 +114,39 @@
114
114
 
115
115
  {#if mode === 'split'}
116
116
  <!-- Split Side-by-Side View -->
117
- <div class="grid grid-cols-2 divide-x divide-border/60 text-xs">
118
- <div class="p-3 bg-muted/10 font-semibold text-muted-foreground border-b border-border/60">{oldTitle}</div>
119
- <div class="p-3 bg-muted/10 font-semibold text-muted-foreground border-b border-border/60">{newTitle}</div>
117
+ <div class="svadmin-u-f3c543ad5fe9 svadmin-u-8e75e3db482b svadmin-u-3746131ec018 svadmin-u-d2c3932343f5 svadmin-u-359090c2d529">
118
+ <div class="svadmin-u-eb6e8b881acd svadmin-u-8a25a995eb8e svadmin-u-e83a7042bc91 svadmin-u-bfa603190748 svadmin-u-65fdbade2025 svadmin-u-05faf5c801ff">{oldTitle}</div>
119
+ <div class="svadmin-u-eb6e8b881acd svadmin-u-8a25a995eb8e svadmin-u-e83a7042bc91 svadmin-u-bfa603190748 svadmin-u-65fdbade2025 svadmin-u-05faf5c801ff">{newTitle}</div>
120
120
  </div>
121
121
 
122
- <div class="divide-y divide-border/40 text-xs">
122
+ <div class="svadmin-u-fa6acbf81d74 svadmin-u-08b5607c7258 svadmin-u-359090c2d529">
123
123
  {#each diffList as diff (diff.key)}
124
124
  {@const isDiff = diff.status !== 'unchanged'}
125
- <div class={cn('grid grid-cols-2 divide-x divide-border/40 transition-colors', isDiff ? 'bg-muted/15' : '')}>
125
+ <div class={cn('svadmin-u-f3c543ad5fe9 svadmin-u-8e75e3db482b svadmin-u-3746131ec018 svadmin-u-08b5607c7258 svadmin-u-ceb69a6b0e5f', isDiff ? 'svadmin-u-46daeb0b661f' : '')}>
126
126
  <!-- Left Column -->
127
- <div class={cn('p-3 space-y-1', diff.status === 'removed' ? 'bg-destructive/5' : '')}>
128
- <div class="flex items-center justify-between text-[11px] text-muted-foreground font-medium">
127
+ <div class={cn('svadmin-u-eb6e8b881acd svadmin-u-da7c36cd8867', diff.status === 'removed' ? 'svadmin-u-7a0854fdbc30' : '')}>
128
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-8ef2268efbbc svadmin-u-d058ca6de60f svadmin-u-bfa603190748 svadmin-u-2689f3958069">
129
129
  <span>{diff.label}</span>
130
130
  {#if diff.status === 'removed'}
131
- <Badge variant="outline" class="bg-destructive/15 text-destructive border-destructive/20 text-[10px]">Deleted</Badge>
131
+ <Badge variant="outline" class="svadmin-u-c698f77c9ba5 svadmin-u-811148b13d1e svadmin-u-f0c1e65bd6f2 svadmin-u-1dc571a3609f">Deleted</Badge>
132
132
  {/if}
133
133
  </div>
134
- <div class={cn('font-mono text-xs break-words', diff.status === 'removed' ? 'line-through text-destructive' : 'text-foreground')}>
134
+ <div class={cn('svadmin-u-0e65706bcccd svadmin-u-359090c2d529 svadmin-u-170cee3ff4e4', diff.status === 'removed' ? 'line-through svadmin-u-811148b13d1e' : 'svadmin-u-d4108abe6359')}>
135
135
  {formatValue(diff.oldVal)}
136
136
  </div>
137
137
  </div>
138
138
 
139
139
  <!-- Right Column -->
140
- <div class={cn('p-3 space-y-1', diff.status === 'added' ? 'bg-success/5' : diff.status === 'modified' ? 'bg-warning/5' : '')}>
141
- <div class="flex items-center justify-between text-[11px] text-muted-foreground font-medium">
140
+ <div class={cn('svadmin-u-eb6e8b881acd svadmin-u-da7c36cd8867', diff.status === 'added' ? 'svadmin-u-338625ff877e' : diff.status === 'modified' ? 'svadmin-u-a909a196be82' : '')}>
141
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-8ef2268efbbc svadmin-u-d058ca6de60f svadmin-u-bfa603190748 svadmin-u-2689f3958069">
142
142
  <span>{diff.label}</span>
143
143
  {#if diff.status === 'added'}
144
- <Badge variant="outline" class="bg-success/15 text-success border-success/20 text-[10px]">Added</Badge>
144
+ <Badge variant="outline" class="svadmin-u-4cf5af8d25d3 svadmin-u-76747e5e02ff svadmin-u-95b7dea5a67f svadmin-u-1dc571a3609f">Added</Badge>
145
145
  {:else if diff.status === 'modified'}
146
- <Badge variant="outline" class="bg-warning/15 text-warning-foreground border-warning/20 text-[10px]">Modified</Badge>
146
+ <Badge variant="outline" class="svadmin-u-d9c3c520f7d5 svadmin-u-3a4ff758c2ab svadmin-u-610bcc1bb506 svadmin-u-1dc571a3609f">Modified</Badge>
147
147
  {/if}
148
148
  </div>
149
- <div class={cn('font-mono text-xs break-words', diff.status === 'added' ? 'text-success font-medium' : diff.status === 'modified' ? 'text-warning-foreground font-medium' : 'text-foreground')}>
149
+ <div class={cn('svadmin-u-0e65706bcccd svadmin-u-359090c2d529 svadmin-u-170cee3ff4e4', diff.status === 'added' ? 'svadmin-u-76747e5e02ff svadmin-u-2689f3958069' : diff.status === 'modified' ? 'svadmin-u-3a4ff758c2ab svadmin-u-2689f3958069' : 'svadmin-u-d4108abe6359')}>
150
150
  {formatValue(diff.newVal)}
151
151
  </div>
152
152
  </div>
@@ -155,37 +155,37 @@
155
155
  </div>
156
156
  {:else}
157
157
  <!-- Unified List View -->
158
- <div class="divide-y divide-border/40 text-xs">
158
+ <div class="svadmin-u-fa6acbf81d74 svadmin-u-08b5607c7258 svadmin-u-359090c2d529">
159
159
  {#each diffList as diff (diff.key)}
160
- <div class="p-3 space-y-2">
161
- <div class="flex items-center justify-between">
162
- <span class="font-medium text-foreground">{diff.label}</span>
160
+ <div class="svadmin-u-eb6e8b881acd svadmin-u-6f7e013d6499">
161
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-8ef2268efbbc">
162
+ <span class="svadmin-u-2689f3958069 svadmin-u-d4108abe6359">{diff.label}</span>
163
163
  {#if diff.status === 'added'}
164
- <Badge variant="outline" class="bg-success/15 text-success border-success/20 text-[10px]">Added</Badge>
164
+ <Badge variant="outline" class="svadmin-u-4cf5af8d25d3 svadmin-u-76747e5e02ff svadmin-u-95b7dea5a67f svadmin-u-1dc571a3609f">Added</Badge>
165
165
  {:else if diff.status === 'removed'}
166
- <Badge variant="outline" class="bg-destructive/15 text-destructive border-destructive/20 text-[10px]">Removed</Badge>
166
+ <Badge variant="outline" class="svadmin-u-c698f77c9ba5 svadmin-u-811148b13d1e svadmin-u-f0c1e65bd6f2 svadmin-u-1dc571a3609f">Removed</Badge>
167
167
  {:else if diff.status === 'modified'}
168
- <Badge variant="outline" class="bg-warning/15 text-warning-foreground border-warning/20 text-[10px]">Modified</Badge>
168
+ <Badge variant="outline" class="svadmin-u-d9c3c520f7d5 svadmin-u-3a4ff758c2ab svadmin-u-610bcc1bb506 svadmin-u-1dc571a3609f">Modified</Badge>
169
169
  {:else}
170
- <Badge variant="outline" class="text-[10px] text-muted-foreground">Unchanged</Badge>
170
+ <Badge variant="outline" class="svadmin-u-1dc571a3609f svadmin-u-bfa603190748">Unchanged</Badge>
171
171
  {/if}
172
172
  </div>
173
173
 
174
174
  {#if diff.status === 'modified'}
175
- <div class="space-y-1 rounded-md bg-muted/40 p-2 font-mono text-[11px]">
176
- <div class="text-destructive line-through">- {formatValue(diff.oldVal)}</div>
177
- <div class="text-success font-medium">+ {formatValue(diff.newVal)}</div>
175
+ <div class="svadmin-u-da7c36cd8867 svadmin-u-421ac2be5045 svadmin-u-b00f43c30c2b svadmin-u-7660b450905a svadmin-u-0e65706bcccd svadmin-u-d058ca6de60f">
176
+ <div class="svadmin-u-811148b13d1e line-through">- {formatValue(diff.oldVal)}</div>
177
+ <div class="svadmin-u-76747e5e02ff svadmin-u-2689f3958069">+ {formatValue(diff.newVal)}</div>
178
178
  </div>
179
179
  {:else if diff.status === 'added'}
180
- <div class="rounded-md bg-success/10 p-2 font-mono text-[11px] text-success">
180
+ <div class="svadmin-u-421ac2be5045 svadmin-u-17a9f7af2265 svadmin-u-7660b450905a svadmin-u-0e65706bcccd svadmin-u-d058ca6de60f svadmin-u-76747e5e02ff">
181
181
  + {formatValue(diff.newVal)}
182
182
  </div>
183
183
  {:else if diff.status === 'removed'}
184
- <div class="rounded-md bg-destructive/10 p-2 font-mono text-[11px] text-destructive line-through">
184
+ <div class="svadmin-u-421ac2be5045 svadmin-u-43928fcc832f svadmin-u-7660b450905a svadmin-u-0e65706bcccd svadmin-u-d058ca6de60f svadmin-u-811148b13d1e line-through">
185
185
  - {formatValue(diff.oldVal)}
186
186
  </div>
187
187
  {:else}
188
- <div class="font-mono text-[11px] text-muted-foreground">
188
+ <div class="svadmin-u-0e65706bcccd svadmin-u-d058ca6de60f svadmin-u-bfa603190748">
189
189
  {formatValue(diff.newVal)}
190
190
  </div>
191
191
  {/if}
@@ -50,13 +50,13 @@
50
50
  );
51
51
  </script>
52
52
 
53
- <div class={cn('w-full rounded-xl border border-border bg-card shadow-xs overflow-hidden flex flex-col text-xs', className)}>
53
+ <div class={cn('svadmin-u-6da6a3c3f741 svadmin-u-a217b4eaa918 svadmin-u-ca6bcd4b6f3f svadmin-u-18049387f0af svadmin-u-cd0ad9a56558 svadmin-u-cef5b893cf23 svadmin-u-2cd02d11d1af svadmin-u-60fbb7713999 svadmin-u-8dddea0773ed svadmin-u-359090c2d529', className)}>
54
54
  <!-- Sticky Header -->
55
- <div class="border-b border-border/80 bg-muted/40 font-semibold text-muted-foreground flex items-center h-10 px-4 select-none shrink-0">
55
+ <div class="svadmin-u-65fdbade2025 svadmin-u-c9ed8c5f79ae svadmin-u-b00f43c30c2b svadmin-u-e83a7042bc91 svadmin-u-bfa603190748 svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-426b8b75185b svadmin-u-f0faeb26d656 svadmin-u-7f6912283f11 svadmin-u-012fbd121f37">
56
56
  {#each columns as col (col.key)}
57
57
  <div
58
58
  style={col.width ? `width: ${col.width}; flex-shrink: 0;` : 'flex: 1; min-width: 0;'}
59
- class={cn('truncate px-2', col.align === 'right' ? 'text-right' : col.align === 'center' ? 'text-center' : 'text-left')}
59
+ class={cn('svadmin-u-f283ea9bea0e svadmin-u-d5eab218aa34', col.align === 'right' ? 'svadmin-u-308fc069e46e' : col.align === 'center' ? 'svadmin-u-ca6bf63030aa' : 'svadmin-u-2eba0d65d059')}
60
60
  >
61
61
  {col.label}
62
62
  </div>
@@ -65,14 +65,14 @@
65
65
 
66
66
  <!-- Virtual Scroll Viewport -->
67
67
  <div
68
- class="overflow-y-auto relative w-full"
68
+ class="svadmin-u-92bf82f493b1 svadmin-u-d89972fe17d6 svadmin-u-6da6a3c3f741"
69
69
  style="height: {height}px;"
70
70
  onscroll={handleScroll}
71
71
  >
72
72
  <div style="height: {totalHeight}px; width: 100%; position: relative;">
73
73
  {#each visibleSlice as { item, index, top } (item[rowKey] ?? index)}
74
74
  <div
75
- class="absolute left-0 right-0 flex items-center px-4 border-b border-border/40 hover:bg-muted/30 transition-colors"
75
+ class="svadmin-u-da4dbfbc4fdc svadmin-u-c78facc7a0a6 svadmin-u-d8cdcad240d1 svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-f0faeb26d656 svadmin-u-65fdbade2025 svadmin-u-6ee2d41e2d2d svadmin-u-12251b8f1749 svadmin-u-ceb69a6b0e5f"
76
76
  style="top: {top}px; height: {itemHeight}px;"
77
77
  >
78
78
  {#if rowSnippet}
@@ -81,7 +81,7 @@
81
81
  {#each columns as col (col.key)}
82
82
  <div
83
83
  style={col.width ? `width: ${col.width}; flex-shrink: 0;` : 'flex: 1; min-width: 0;'}
84
- class={cn('truncate px-2 font-medium text-foreground', col.align === 'right' ? 'text-right' : col.align === 'center' ? 'text-center' : 'text-left')}
84
+ class={cn('svadmin-u-f283ea9bea0e svadmin-u-d5eab218aa34 svadmin-u-2689f3958069 svadmin-u-d4108abe6359', col.align === 'right' ? 'svadmin-u-308fc069e46e' : col.align === 'center' ? 'svadmin-u-ca6bf63030aa' : 'svadmin-u-2eba0d65d059')}
85
85
  >
86
86
  {item[col.key] ?? '—'}
87
87
  </div>
@@ -91,7 +91,7 @@
91
91
  {/each}
92
92
 
93
93
  {#if items.length === 0}
94
- <div class="h-32 flex items-center justify-center text-muted-foreground text-xs">
94
+ <div class="svadmin-u-b5f3ff77f4f9 svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-86843cf1e227 svadmin-u-bfa603190748 svadmin-u-359090c2d529">
95
95
  No records to display
96
96
  </div>
97
97
  {/if}
@@ -99,8 +99,8 @@
99
99
  </div>
100
100
 
101
101
  <!-- Footer Info -->
102
- <div class="flex items-center justify-between px-4 py-2 border-t border-border/60 bg-muted/20 text-[11px] text-muted-foreground shrink-0">
103
- <span>Total <strong class="text-foreground font-semibold">{items.length}</strong> rows</span>
102
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-8ef2268efbbc svadmin-u-f0faeb26d656 svadmin-u-03b4dd7f172b svadmin-u-b950dda299d3 svadmin-u-05faf5c801ff svadmin-u-967d113a1451 svadmin-u-d058ca6de60f svadmin-u-bfa603190748 svadmin-u-012fbd121f37">
103
+ <span>Total <strong class="svadmin-u-d4108abe6359 svadmin-u-e83a7042bc91">{items.length}</strong> rows</span>
104
104
  <span>Rendered {visibleSlice.length} in viewport</span>
105
105
  </div>
106
106
  </div>
@@ -148,14 +148,14 @@
148
148
 
149
149
  <div
150
150
  bind:this={containerEl}
151
- class={cn('relative overflow-hidden', className)}
151
+ class={cn('svadmin-u-d89972fe17d6 svadmin-u-2cd02d11d1af', className)}
152
152
  data-svadmin-watermark-wrapper
153
153
  >
154
154
  {#key watermarkRevision}
155
155
  {#if base64Url}
156
156
  <div
157
157
  data-svadmin-watermark
158
- class="absolute inset-0 pointer-events-none"
158
+ class="svadmin-u-da4dbfbc4fdc svadmin-u-7b7df0449b80 svadmin-u-a4326536b8f5"
159
159
  style="z-index: {zIndex}; background-image: url('{base64Url}'); background-position: {offset[0]}px {offset[1]}px; background-repeat: repeat;"
160
160
  ></div>
161
161
  {/if}
@@ -29,19 +29,19 @@
29
29
  </script>
30
30
 
31
31
  {#snippet headerActions()}
32
- <Button onclick={save} disabled={saving} size="sm">{#if saving}<Loader2 class="size-3.5 animate-spin" />{/if}{i18n.t('common.save')}</Button>
32
+ <Button onclick={save} disabled={saving} size="sm">{#if saving}<Loader2 class="svadmin-u-783b0d9d1e2c svadmin-u-afbdd13a380e" />{/if}{i18n.t('common.save')}</Button>
33
33
  {/snippet}
34
34
 
35
35
  {#snippet primary()}
36
- <SettingsGroup title={i18n.t('account.basicSettings')} description={i18n.t('account.companyProfileDescription')} bodyClass="space-y-4"><div class="grid gap-4 sm:grid-cols-2"><div class="space-y-2"><Label for="company-name">{i18n.t('profile.companyName')}</Label><Input id="company-name" bind:value={companyName} /></div><div class="space-y-2"><Label for="company-industry">{i18n.t('profile.industry')}</Label><Input id="company-industry" bind:value={industry} /></div><div class="space-y-2 sm:col-span-2"><Label for="company-website">{i18n.t('profile.website')}</Label><Input id="company-website" bind:value={website} type="url" /></div></div><div class="space-y-2"><Label for="company-description">{i18n.t('profile.companyDescription')}</Label><Textarea id="company-description" bind:value={description} rows={4} /></div></SettingsGroup>
36
+ <SettingsGroup title={i18n.t('account.basicSettings')} description={i18n.t('account.companyProfileDescription')} bodyClass="space-y-4"><div class="svadmin-u-f3c543ad5fe9 svadmin-u-0c3bc98565dd svadmin-u-e00ad81645a2"><div class="svadmin-u-6f7e013d6499"><Label for="company-name">{i18n.t('profile.companyName')}</Label><Input id="company-name" bind:value={companyName} /></div><div class="svadmin-u-6f7e013d6499"><Label for="company-industry">{i18n.t('profile.industry')}</Label><Input id="company-industry" bind:value={industry} /></div><div class="svadmin-u-6f7e013d6499 svadmin-u-d378a2461dc3"><Label for="company-website">{i18n.t('profile.website')}</Label><Input id="company-website" bind:value={website} type="url" /></div></div><div class="svadmin-u-6f7e013d6499"><Label for="company-description">{i18n.t('profile.companyDescription')}</Label><Textarea id="company-description" bind:value={description} rows={4} /></div></SettingsGroup>
37
37
  {/snippet}
38
38
 
39
39
  {#snippet secondary()}
40
- <SettingsGroup title={i18n.t('profile.companyName')} description={industry} bodyClass="space-y-4"><p class="text-lg font-semibold text-foreground">{companyName}</p><DescriptionList columns={1} items={[{ label: i18n.t('profile.website'), value: website, href: website }, { label: i18n.t('profile.employees'), value: '1,250' }, { label: i18n.t('profile.founded'), value: '2015' }]} /></SettingsGroup>
40
+ <SettingsGroup title={i18n.t('profile.companyName')} description={industry} bodyClass="space-y-4"><p class="svadmin-u-42536e69e639 svadmin-u-e83a7042bc91 svadmin-u-d4108abe6359">{companyName}</p><DescriptionList columns={1} items={[{ label: i18n.t('profile.website'), value: website, href: website }, { label: i18n.t('profile.employees'), value: '1,250' }, { label: i18n.t('profile.founded'), value: '2015' }]} /></SettingsGroup>
41
41
  {/snippet}
42
42
 
43
43
  <ContentPageShell pageId="account-company-profile" width="wide">
44
44
  <ContentPageHeader title={i18n.t('account.companyProfile')} description={i18n.t('account.companyProfileDescription')} actions={headerActions} />
45
45
  <WorkspaceLayout {primary} {secondary} secondaryWidth="20rem" />
46
- <section class="space-y-3"><SectionHeader title={i18n.t('profileSections.members')} /><MemberList {members} emptyTitle={i18n.t('common.noData')} emptyDescription={i18n.t('empty.description')} /></section>
46
+ <section class="svadmin-u-6ed543e2fbbb"><SectionHeader title={i18n.t('profileSections.members')} /><MemberList {members} emptyTitle={i18n.t('common.noData')} emptyDescription={i18n.t('empty.description')} /></section>
47
47
  </ContentPageShell>
@@ -26,39 +26,39 @@
26
26
  </script>
27
27
 
28
28
  <ContentPageShell pageId="account-get-started" width="wide">
29
- <div class="flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between">
29
+ <div class="svadmin-u-60fbb7713999 svadmin-u-8dddea0773ed svadmin-u-1004c0c3954c svadmin-u-020ba687fa12 svadmin-u-64cac80d2e9a svadmin-u-3b9871a0bf93">
30
30
  <ContentPageHeader title={i18n.t('account.getStarted')} description={isZh ? '从账户功能入口快速完成组织、成员、安全和集成配置。' : 'Use the account hub to complete organization, member, security, and integration setup.'} />
31
31
  <Badge variant="outline">{progress}% {isZh ? '已完成' : 'complete'}</Badge>
32
32
  </div>
33
33
 
34
- <div class="grid gap-6 xl:grid-cols-[minmax(0,1fr)_19rem]">
35
- <div class="grid gap-4 md:grid-cols-2">
34
+ <div class="svadmin-u-f3c543ad5fe9 svadmin-u-0d304f904cb0 svadmin-u-078ed38802b9">
35
+ <div class="svadmin-u-f3c543ad5fe9 svadmin-u-0c3bc98565dd svadmin-u-e4d6f343b9ff">
36
36
  {#each entries as entry (entry.id)}
37
- <Card.Card class="flex min-h-52 flex-col">
38
- <Card.CardContent class="flex flex-1 flex-col p-5">
39
- <div class="flex items-start justify-between gap-3">
40
- <span class="flex size-9 items-center justify-center rounded-md border border-border bg-card text-primary"><entry.icon class="size-4" /></span>
41
- <button type="button" class="flex size-8 items-center justify-center rounded-md border border-border text-muted-foreground hover:text-foreground" aria-label={isZh ? '切换完成状态' : 'Toggle completion'} onclick={() => toggleCompleted(entry.id)}>
42
- {#if completed.includes(entry.id)}<Check class="size-4 text-success" />{/if}
37
+ <Card.Card class="svadmin-u-60fbb7713999 svadmin-u-a0206a0583c8 svadmin-u-8dddea0773ed">
38
+ <Card.CardContent class="svadmin-u-60fbb7713999 svadmin-u-36e579c0b41c svadmin-u-8dddea0773ed svadmin-u-c07e54fd1439">
39
+ <div class="svadmin-u-60fbb7713999 svadmin-u-60541e1e26f8 svadmin-u-8ef2268efbbc svadmin-u-1004c0c3954c">
40
+ <span class="svadmin-u-60fbb7713999 svadmin-u-665f07fe73cc svadmin-u-3960ffc248d9 svadmin-u-86843cf1e227 svadmin-u-421ac2be5045 svadmin-u-ca6bcd4b6f3f svadmin-u-18049387f0af svadmin-u-cd0ad9a56558 svadmin-u-20aaf08a7ed1"><entry.icon class="svadmin-u-f7b5fa971871" /></span>
41
+ <button type="button" class="svadmin-u-60fbb7713999 svadmin-u-d8f5213f0fe0 svadmin-u-3960ffc248d9 svadmin-u-86843cf1e227 svadmin-u-421ac2be5045 svadmin-u-ca6bcd4b6f3f svadmin-u-18049387f0af svadmin-u-bfa603190748 svadmin-u-ea7b2e9e070e" aria-label={isZh ? '切换完成状态' : 'Toggle completion'} onclick={() => toggleCompleted(entry.id)}>
42
+ {#if completed.includes(entry.id)}<Check class="svadmin-u-f7b5fa971871 svadmin-u-76747e5e02ff" />{/if}
43
43
  </button>
44
44
  </div>
45
- <h2 class="mt-4 text-base font-semibold text-foreground">{entry.title}</h2>
46
- <p class="mt-1 flex-1 text-sm leading-6 text-muted-foreground">{entry.description}</p>
47
- <Button href={entry.href} variant="link" class="mt-4 h-auto justify-start p-0">{isZh ? '打开设置' : 'Open settings'}<ArrowRight class="size-3.5" /></Button>
45
+ <h2 class="svadmin-u-0ab8667228fd svadmin-u-4ee734926ff6 svadmin-u-e83a7042bc91 svadmin-u-d4108abe6359">{entry.title}</h2>
46
+ <p class="svadmin-u-b6b02c0ebef6 svadmin-u-36e579c0b41c svadmin-u-fc7473ca09eb svadmin-u-18550d5945ae svadmin-u-bfa603190748">{entry.description}</p>
47
+ <Button href={entry.href} variant="link" class="svadmin-u-0ab8667228fd svadmin-u-b8f0a08ece1e svadmin-u-4b5cc19bfdfc svadmin-u-8a539c7fe216">{isZh ? '打开设置' : 'Open settings'}<ArrowRight class="svadmin-u-783b0d9d1e2c" /></Button>
48
48
  </Card.CardContent>
49
49
  </Card.Card>
50
50
  {/each}
51
51
  </div>
52
52
 
53
- <aside class="space-y-5">
54
- <section class="rounded-lg border border-border bg-card p-5">
55
- <div class="flex items-center gap-3"><span class="flex size-9 items-center justify-center rounded-md bg-primary/10 text-primary"><KeyRound class="size-4" /></span><div><h2 class="text-sm font-semibold text-foreground">{isZh ? '账户准备度' : 'Account readiness'}</h2><p class="text-xs text-muted-foreground">{completed.length} / {entries.length}</p></div></div>
56
- <div class="mt-4 h-2 overflow-hidden rounded-full bg-muted"><div class="h-full rounded-full bg-primary" style:width={`${progress}%`}></div></div>
57
- <div class="mt-4 divide-y divide-border border-y border-border">
58
- {#each entries as entry (entry.id)}<div class="flex items-center justify-between gap-3 py-3 text-sm"><span class="text-muted-foreground">{entry.title}</span>{#if completed.includes(entry.id)}<Badge variant="secondary">{isZh ? '完成' : 'Done'}</Badge>{:else}<span class="text-xs text-muted-foreground">{isZh ? '待配置' : 'Pending'}</span>{/if}</div>{/each}
53
+ <aside class="svadmin-u-b43b4c086d9a">
54
+ <section class="svadmin-u-5f22e64f2282 svadmin-u-ca6bcd4b6f3f svadmin-u-18049387f0af svadmin-u-cd0ad9a56558 svadmin-u-c07e54fd1439">
55
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-1004c0c3954c"><span class="svadmin-u-60fbb7713999 svadmin-u-665f07fe73cc svadmin-u-3960ffc248d9 svadmin-u-86843cf1e227 svadmin-u-421ac2be5045 svadmin-u-375dc44df6e9 svadmin-u-20aaf08a7ed1"><KeyRound class="svadmin-u-f7b5fa971871" /></span><div><h2 class="svadmin-u-fc7473ca09eb svadmin-u-e83a7042bc91 svadmin-u-d4108abe6359">{isZh ? '账户准备度' : 'Account readiness'}</h2><p class="svadmin-u-359090c2d529 svadmin-u-bfa603190748">{completed.length} / {entries.length}</p></div></div>
56
+ <div class="svadmin-u-0ab8667228fd svadmin-u-2f2a842e50fa svadmin-u-2cd02d11d1af svadmin-u-ac204c108886 svadmin-u-2ef11f1cb219"><div class="svadmin-u-668b21aa5409 svadmin-u-ac204c108886 svadmin-u-75b1bec3ea0e" style:width={`${progress}%`}></div></div>
57
+ <div class="svadmin-u-0ab8667228fd svadmin-u-fa6acbf81d74 svadmin-u-e783642739e3 svadmin-u-8b8196092091 svadmin-u-18049387f0af">
58
+ {#each entries as entry (entry.id)}<div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-8ef2268efbbc svadmin-u-1004c0c3954c svadmin-u-1b2d54a3fd12 svadmin-u-fc7473ca09eb"><span class="svadmin-u-bfa603190748">{entry.title}</span>{#if completed.includes(entry.id)}<Badge variant="secondary">{isZh ? '完成' : 'Done'}</Badge>{:else}<span class="svadmin-u-359090c2d529 svadmin-u-bfa603190748">{isZh ? '待配置' : 'Pending'}</span>{/if}</div>{/each}
59
59
  </div>
60
60
  </section>
61
- <Button class="w-full" onclick={() => completed = entries.map((entry) => entry.id)}>{isZh ? '标记全部完成' : 'Mark all complete'}</Button>
61
+ <Button class="svadmin-u-6da6a3c3f741" onclick={() => completed = entries.map((entry) => entry.id)}>{isZh ? '标记全部完成' : 'Mark all complete'}</Button>
62
62
  </aside>
63
63
  </div>
64
64
  </ContentPageShell>
@@ -72,61 +72,61 @@
72
72
  }
73
73
  </script>
74
74
 
75
- <div class="space-y-6" data-svadmin-content-page="account">
75
+ <div class="svadmin-u-b3542e058833" data-svadmin-content-page="account">
76
76
  <div>
77
- <h2 class="text-xl font-semibold text-foreground">{i18n.t('account.importMembers')}</h2>
78
- <p class="mt-1 text-sm text-muted-foreground">{i18n.t('account.importMembersDescription')}</p>
77
+ <h2 class="svadmin-u-d5c9b0001e7e svadmin-u-e83a7042bc91 svadmin-u-d4108abe6359">{i18n.t('account.importMembers')}</h2>
78
+ <p class="svadmin-u-b6b02c0ebef6 svadmin-u-fc7473ca09eb svadmin-u-bfa603190748">{i18n.t('account.importMembersDescription')}</p>
79
79
  </div>
80
80
 
81
81
  {#if importState === 'complete'}
82
- <Card.Card class="border-success/30 bg-success/5">
83
- <Card.CardContent class="flex flex-col items-center gap-4 p-8">
84
- <div class="flex h-14 w-14 items-center justify-center rounded-2xl bg-success/10 text-success">
85
- <CheckCircle2 class="h-7 w-7" />
82
+ <Card.Card class="svadmin-u-18a6e7a36f29 svadmin-u-338625ff877e">
83
+ <Card.CardContent class="svadmin-u-60fbb7713999 svadmin-u-8dddea0773ed svadmin-u-3960ffc248d9 svadmin-u-0c3bc98565dd svadmin-u-845f53365c8d">
84
+ <div class="svadmin-u-60fbb7713999 svadmin-u-73a1340934c0 svadmin-u-7e74e5fe798a svadmin-u-3960ffc248d9 svadmin-u-86843cf1e227 svadmin-u-68f2db624df7 svadmin-u-17a9f7af2265 svadmin-u-76747e5e02ff">
85
+ <CheckCircle2 class="svadmin-u-d0a52b312f7d svadmin-u-cbbf90f9a828" />
86
86
  </div>
87
- <div class="text-center">
88
- <h3 class="text-lg font-semibold text-success">{i18n.t('account.importComplete')}</h3>
89
- <p class="text-sm text-success/70 mt-1">{i18n.t('account.imported', { count: importCount })}</p>
87
+ <div class="svadmin-u-ca6bf63030aa">
88
+ <h3 class="svadmin-u-42536e69e639 svadmin-u-e83a7042bc91 svadmin-u-76747e5e02ff">{i18n.t('account.importComplete')}</h3>
89
+ <p class="svadmin-u-fc7473ca09eb svadmin-u-083abb355258 svadmin-u-b6b02c0ebef6">{i18n.t('account.imported', { count: importCount })}</p>
90
90
  </div>
91
91
  <Button variant="outline" onclick={resetImport}>{i18n.t('common.back')}</Button>
92
92
  </Card.CardContent>
93
93
  </Card.Card>
94
94
  {:else}
95
95
  <!-- Upload area -->
96
- <Card.Card class="border-border/60">
97
- <Card.CardContent class="p-6">
96
+ <Card.Card class="svadmin-u-05faf5c801ff">
97
+ <Card.CardContent class="svadmin-u-0478c89a150f">
98
98
  <label
99
99
  for="file-input"
100
- class="block cursor-pointer rounded-xl border-2 border-dashed p-8 text-center transition-colors
101
- {isDragging ? 'border-primary bg-primary/5' : 'border-border/60 hover:border-primary/40'}"
100
+ class="svadmin-u-0214b4b355d1 svadmin-u-34516836730d svadmin-u-a217b4eaa918 svadmin-u-65935df577ba svadmin-u-a29b7a649c77 svadmin-u-845f53365c8d svadmin-u-ca6bf63030aa svadmin-u-ceb69a6b0e5f
101
+ {isDragging ? 'svadmin-u-6cbc84dd9e1a svadmin-u-989c466fdbe7' : 'svadmin-u-05faf5c801ff svadmin-u-7d7df768f912'}"
102
102
  ondragover={handleDragOver}
103
103
  ondragleave={handleDragLeave}
104
104
  ondrop={handleDrop}
105
105
  >
106
106
  {#if importState === 'idle'}
107
- <Upload class="mx-auto h-10 w-10 text-muted-foreground" />
108
- <p class="mt-3 text-sm font-medium text-foreground">{i18n.t('account.dragOrClick')}</p>
109
- <p class="mt-1 text-xs text-muted-foreground">{i18n.t('account.supportedFormats')}</p>
110
- <div class="mt-4">
111
- <span class="inline-flex h-8 items-center justify-center rounded-md border border-input bg-background px-3 text-sm font-medium shadow-xs transition-colors hover:bg-accent hover:text-accent-foreground">
107
+ <Upload class="svadmin-u-0e12dc7de920 svadmin-u-426b8b75185b svadmin-u-d854e5698b57 svadmin-u-bfa603190748" />
108
+ <p class="svadmin-u-eccd13ef4f2f svadmin-u-fc7473ca09eb svadmin-u-2689f3958069 svadmin-u-d4108abe6359">{i18n.t('account.dragOrClick')}</p>
109
+ <p class="svadmin-u-b6b02c0ebef6 svadmin-u-359090c2d529 svadmin-u-bfa603190748">{i18n.t('account.supportedFormats')}</p>
110
+ <div class="svadmin-u-0ab8667228fd">
111
+ <span class="svadmin-u-52083e7da442 svadmin-u-ed8a5df7b2fb svadmin-u-3960ffc248d9 svadmin-u-86843cf1e227 svadmin-u-421ac2be5045 svadmin-u-ca6bcd4b6f3f svadmin-u-e5795dad4d22 svadmin-u-e6f9e383a762 svadmin-u-0e17f2bd9074 svadmin-u-fc7473ca09eb svadmin-u-2689f3958069 svadmin-u-cef5b893cf23 svadmin-u-ceb69a6b0e5f svadmin-u-0557b88819cd svadmin-u-3a99b2b8fbbe">
112
112
  {i18n.t('common.upload')}
113
113
  </span>
114
- <input id="file-input" type="file" accept=".csv,.xlsx" class="sr-only" onchange={handleFileSelect} />
114
+ <input id="file-input" type="file" accept=".csv,.xlsx" class="svadmin-u-2daa8e5e2f2e" onchange={handleFileSelect} />
115
115
  </div>
116
116
  {:else if importState === 'uploading' || importState === 'processing'}
117
- <div class="space-y-3">
118
- <div class="flex items-center justify-center gap-2 text-sm">
117
+ <div class="svadmin-u-6ed543e2fbbb">
118
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-86843cf1e227 svadmin-u-77a2a20e90d4 svadmin-u-fc7473ca09eb">
119
119
  {#if importState === 'processing'}
120
- <Loader2 class="h-4 w-4 animate-spin" />
120
+ <Loader2 class="svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3 svadmin-u-afbdd13a380e" />
121
121
  {:else}
122
- <FileText class="h-4 w-4 text-muted-foreground" />
122
+ <FileText class="svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3 svadmin-u-bfa603190748" />
123
123
  {/if}
124
- <span class="font-medium">{fileName}</span>
124
+ <span class="svadmin-u-2689f3958069">{fileName}</span>
125
125
  </div>
126
- <div class="h-2 w-48 mx-auto rounded-full bg-muted overflow-hidden">
127
- <div class="h-full rounded-full bg-primary transition-all duration-300" style="width: {progress}%"></div>
126
+ <div class="svadmin-u-2f2a842e50fa svadmin-u-74b2435a1d40 svadmin-u-0e12dc7de920 svadmin-u-ac204c108886 svadmin-u-2ef11f1cb219 svadmin-u-2cd02d11d1af">
127
+ <div class="svadmin-u-668b21aa5409 svadmin-u-ac204c108886 svadmin-u-75b1bec3ea0e svadmin-u-0fe7d7d814d0 svadmin-u-7890552ecd63" style="width: {progress}%"></div>
128
128
  </div>
129
- <p class="text-xs text-muted-foreground">
129
+ <p class="svadmin-u-359090c2d529 svadmin-u-bfa603190748">
130
130
  {importState === 'uploading' ? i18n.t('account.importProgress') : i18n.t('account.startImport')}...
131
131
  </p>
132
132
  </div>
@@ -136,36 +136,36 @@
136
136
  </Card.Card>
137
137
 
138
138
  <!-- Template download -->
139
- <Card.Card class="border-border/60">
140
- <Card.CardContent class="flex items-center justify-between p-4">
141
- <div class="flex items-center gap-3">
142
- <div class="flex h-9 w-9 items-center justify-center rounded-lg bg-primary/10 text-primary">
143
- <FileText class="h-4 w-4" />
139
+ <Card.Card class="svadmin-u-05faf5c801ff">
140
+ <Card.CardContent class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-8ef2268efbbc svadmin-u-8e63407b5ceb">
141
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-1004c0c3954c">
142
+ <div class="svadmin-u-60fbb7713999 svadmin-u-e7a768f922d2 svadmin-u-ae2181c7b10f svadmin-u-3960ffc248d9 svadmin-u-86843cf1e227 svadmin-u-5f22e64f2282 svadmin-u-375dc44df6e9 svadmin-u-20aaf08a7ed1">
143
+ <FileText class="svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3" />
144
144
  </div>
145
145
  <div>
146
- <p class="text-sm font-medium text-foreground">{i18n.t('account.downloadTemplate')}</p>
147
- <p class="text-xs text-muted-foreground">CSV template.csv</p>
146
+ <p class="svadmin-u-fc7473ca09eb svadmin-u-2689f3958069 svadmin-u-d4108abe6359">{i18n.t('account.downloadTemplate')}</p>
147
+ <p class="svadmin-u-359090c2d529 svadmin-u-bfa603190748">CSV template.csv</p>
148
148
  </div>
149
149
  </div>
150
150
  <Button variant="outline" size="sm">
151
- <Download class="h-3.5 w-3.5 mr-1" />{i18n.t('account.downloadTemplate')}
151
+ <Download class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c svadmin-u-618162408e7a" />{i18n.t('account.downloadTemplate')}
152
152
  </Button>
153
153
  </Card.CardContent>
154
154
  </Card.Card>
155
155
 
156
156
  <!-- Import options -->
157
- <Card.Card class="border-border/60">
157
+ <Card.Card class="svadmin-u-05faf5c801ff">
158
158
  <Card.CardHeader>
159
- <Card.CardTitle class="text-base">{i18n.t('account.importOptions')}</Card.CardTitle>
159
+ <Card.CardTitle class="svadmin-u-4ee734926ff6">{i18n.t('account.importOptions')}</Card.CardTitle>
160
160
  </Card.CardHeader>
161
- <Card.CardContent class="space-y-4">
161
+ <Card.CardContent class="svadmin-u-3e7ce58d64fa">
162
162
  {#each importOptions as option, i (option.key)}
163
- <div class="flex items-center justify-between gap-4">
164
- <Label for="import-option-{i}" class="text-sm font-normal text-foreground">{i18n.t(option.key)}</Label>
163
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-8ef2268efbbc svadmin-u-0c3bc98565dd">
164
+ <Label for="import-option-{i}" class="svadmin-u-fc7473ca09eb svadmin-u-8ecebc9f80e6 svadmin-u-d4108abe6359">{i18n.t(option.key)}</Label>
165
165
  <Switch id="import-option-{i}" bind:checked={optionStates[i]} />
166
166
  </div>
167
167
  {/each}
168
- <div class="flex justify-end border-t pt-4">
168
+ <div class="svadmin-u-60fbb7713999 svadmin-u-77c08e015d14 svadmin-u-b950dda299d3 svadmin-u-173fa8f06789">
169
169
  <Button onclick={() => { const input = document.getElementById('file-input'); input?.click(); }}>
170
170
  {i18n.t('account.startImport')}
171
171
  </Button>