@svadmin/ui 0.68.1 → 0.69.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (315) hide show
  1. package/README.md +52 -0
  2. package/dist/app.css +7627 -853
  3. package/dist/app.theme.css +7676 -850
  4. package/dist/components/AboutSettings.svelte +8 -8
  5. package/dist/components/ActivityFeed.svelte +25 -40
  6. package/dist/components/AdminApp.svelte +14 -14
  7. package/dist/components/AnomalyBadge.svelte +6 -5
  8. package/dist/components/ApiSettings.svelte +8 -8
  9. package/dist/components/AppearanceSettings.svelte +13 -13
  10. package/dist/components/ApprovalActionCard.svelte +35 -35
  11. package/dist/components/AuditLogDrawer.svelte +17 -17
  12. package/dist/components/AuditLogViewer.svelte +42 -42
  13. package/dist/components/AuthPageShell.svelte +11 -11
  14. package/dist/components/AutoForm.svelte +28 -28
  15. package/dist/components/AutoSaveIndicator.svelte +8 -8
  16. package/dist/components/AutoTable.svelte +141 -141
  17. package/dist/components/BatchActionBar.svelte +15 -15
  18. package/dist/components/Breadcrumbs.svelte +4 -4
  19. package/dist/components/CancelTaskButton.svelte +2 -2
  20. package/dist/components/CanvasAnnotation.svelte +27 -27
  21. package/dist/components/Cascader.svelte +20 -20
  22. package/dist/components/CatchAllNavigate.svelte +2 -2
  23. package/dist/components/ColumnHeaderFilter.svelte +21 -21
  24. package/dist/components/ColumnSettings.svelte +20 -20
  25. package/dist/components/ComboboxField.svelte +17 -17
  26. package/dist/components/CommandPalette.svelte +23 -23
  27. package/dist/components/ConfigErrorScreen.svelte +27 -27
  28. package/dist/components/ConfirmDialog.svelte +1 -1
  29. package/dist/components/CreateInferencer.svelte +1 -1
  30. package/dist/components/CreatePage.svelte +1 -1
  31. package/dist/components/DecisionTable.svelte +39 -39
  32. package/dist/components/DetailDrawer.svelte +9 -9
  33. package/dist/components/DevTools.svelte +96 -96
  34. package/dist/components/DraggableGrid.svelte +6 -6
  35. package/dist/components/DraggableHeader.svelte +1 -1
  36. package/dist/components/DraggableRowTable.svelte +13 -13
  37. package/dist/components/DrawerForm.svelte +10 -10
  38. package/dist/components/DynamicFormList.svelte +19 -19
  39. package/dist/components/EditInferencer.svelte +3 -3
  40. package/dist/components/EditInferencer.svelte.d.ts +1 -1
  41. package/dist/components/EditPage.svelte +1 -1
  42. package/dist/components/EditableTable.svelte +30 -30
  43. package/dist/components/EmptyState.svelte +6 -6
  44. package/dist/components/ErrorBoundary.svelte +8 -8
  45. package/dist/components/ErrorComponent.svelte +5 -5
  46. package/dist/components/FieldRenderer.svelte +30 -30
  47. package/dist/components/FilterBuilder.svelte +31 -31
  48. package/dist/components/FilterDropdown.svelte +26 -26
  49. package/dist/components/ForgotPasswordPage.svelte +14 -14
  50. package/dist/components/GanttChart.svelte +30 -30
  51. package/dist/components/Header.svelte +13 -13
  52. package/dist/components/ImageCropper.svelte +21 -21
  53. package/dist/components/ImportWizard.svelte +49 -49
  54. package/dist/components/InferencerPanel.svelte +35 -35
  55. package/dist/components/InfiniteList.svelte +8 -8
  56. package/dist/components/InlineEdit.svelte +5 -5
  57. package/dist/components/IntegrationsSettings.svelte +5 -5
  58. package/dist/components/JsonSchemaForm.svelte +18 -18
  59. package/dist/components/KanbanBoard.svelte +30 -30
  60. package/dist/components/KeyboardShortcuts.svelte +8 -8
  61. package/dist/components/Layout.svelte +22 -22
  62. package/dist/components/LazyPage.svelte +4 -4
  63. package/dist/components/ListInferencer.svelte +2 -2
  64. package/dist/components/ListPage.svelte +1 -1
  65. package/dist/components/LiveIndicator.svelte +11 -11
  66. package/dist/components/LoginPage.svelte +27 -27
  67. package/dist/components/MasterDetailView.svelte +24 -24
  68. package/dist/components/MediaLibraryModal.svelte +37 -37
  69. package/dist/components/MentionsInput.svelte +11 -11
  70. package/dist/components/MetricStrip.svelte +18 -58
  71. package/dist/components/ModalForm.svelte +8 -8
  72. package/dist/components/MultiTabKeepAlive.svelte +14 -14
  73. package/dist/components/NavigateToResource.svelte +3 -3
  74. package/dist/components/NotificationsSettings.svelte +4 -4
  75. package/dist/components/OfflineSyncBanner.svelte +28 -28
  76. package/dist/components/PageHeader.svelte +12 -13
  77. package/dist/components/PageSkeleton.svelte +26 -26
  78. package/dist/components/PasswordInput.svelte +11 -11
  79. package/dist/components/PdfDocumentViewer.svelte +45 -45
  80. package/dist/components/PermissionMatrix.svelte +48 -48
  81. package/dist/components/PivotTable.svelte +21 -21
  82. package/dist/components/PresenceAvatarGroup.svelte +11 -11
  83. package/dist/components/PrintableBill.svelte +43 -43
  84. package/dist/components/ProfilePage.svelte +34 -34
  85. package/dist/components/RecordDetailDrawer.svelte +15 -15
  86. package/dist/components/RegisterPage.svelte +9 -9
  87. package/dist/components/ResourceInferencer.svelte +3 -3
  88. package/dist/components/ResourceOperationsPage.svelte +44 -44
  89. package/dist/components/RetryTaskButton.svelte +2 -2
  90. package/dist/components/RolesSettings.svelte +4 -4
  91. package/dist/components/RowActions.svelte +10 -10
  92. package/dist/components/SecuritySettings.svelte +8 -8
  93. package/dist/components/SensitiveDataMask.svelte +8 -8
  94. package/dist/components/SettingsPage.svelte +17 -17
  95. package/dist/components/ShowInferencer.svelte +3 -3
  96. package/dist/components/ShowInferencer.svelte.d.ts +1 -1
  97. package/dist/components/ShowPage.svelte +24 -24
  98. package/dist/components/Sidebar.svelte +63 -63
  99. package/dist/components/SidebarItem.svelte +35 -35
  100. package/dist/components/SignaturePad.svelte +16 -16
  101. package/dist/components/SplitPaneLayout.svelte +10 -10
  102. package/dist/components/SpreadsheetView.svelte +35 -35
  103. package/dist/components/StatsCard.svelte +12 -25
  104. package/dist/components/StepForm.svelte +23 -23
  105. package/dist/components/StepsForm.svelte +17 -17
  106. package/dist/components/SvadminLogo.svelte +1 -1
  107. package/dist/components/SystemPageShell.svelte +6 -6
  108. package/dist/components/TableSummary.svelte +8 -8
  109. package/dist/components/TaskDetails.svelte +29 -29
  110. package/dist/components/TaskList.svelte +17 -17
  111. package/dist/components/TaskProgressBar.svelte +4 -4
  112. package/dist/components/TaskQueueDrawer.svelte +44 -44
  113. package/dist/components/TaskStatusBadge.svelte +5 -5
  114. package/dist/components/TenantSwitcher.svelte +17 -17
  115. package/dist/components/ThemedTitle.svelte +4 -4
  116. package/dist/components/Toast.svelte +2 -2
  117. package/dist/components/Transfer.svelte +40 -40
  118. package/dist/components/TreeSelect.svelte +32 -32
  119. package/dist/components/TreeTable.svelte +28 -28
  120. package/dist/components/TwoFactorAuthPage.svelte +15 -15
  121. package/dist/components/UndoableNotification.svelte +10 -10
  122. package/dist/components/UpdatePasswordPage.svelte +6 -6
  123. package/dist/components/VersionDiffViewer.svelte +38 -38
  124. package/dist/components/VirtualTable.svelte +9 -9
  125. package/dist/components/Watermark.svelte +2 -2
  126. package/dist/components/account/CompanyProfilePage.svelte +4 -4
  127. package/dist/components/account/GetStartedPage.svelte +19 -19
  128. package/dist/components/account/ImportMembersPage.svelte +42 -42
  129. package/dist/components/account/MembersStarterPage.svelte +18 -18
  130. package/dist/components/account/SecurityLogPage.svelte +1 -1
  131. package/dist/components/account/SettingsEnterprisePage.svelte +7 -7
  132. package/dist/components/account/SettingsPlainPage.svelte +3 -3
  133. package/dist/components/account/SettingsSidebarPage.svelte +5 -5
  134. package/dist/components/account/TeamMembersPage.svelte +2 -2
  135. package/dist/components/account/UserProfilePage.svelte +3 -3
  136. package/dist/components/buttons/CloneButton.svelte +2 -2
  137. package/dist/components/buttons/CreateButton.svelte +2 -2
  138. package/dist/components/buttons/DeleteButton.svelte +4 -4
  139. package/dist/components/buttons/EditButton.svelte +2 -2
  140. package/dist/components/buttons/ExportButton.svelte +2 -2
  141. package/dist/components/buttons/ImportButton.svelte +3 -3
  142. package/dist/components/buttons/ListButton.svelte +2 -2
  143. package/dist/components/buttons/RefreshButton.svelte +2 -2
  144. package/dist/components/buttons/SaveButton.svelte +3 -3
  145. package/dist/components/buttons/ShowButton.svelte +2 -2
  146. package/dist/components/charts/BarChart.svelte +3 -3
  147. package/dist/components/charts/LineChart.svelte +3 -3
  148. package/dist/components/charts/PieChart.svelte +7 -7
  149. package/dist/components/content/ApiKeyList.svelte +12 -12
  150. package/dist/components/content/AuditTimeline.svelte +18 -18
  151. package/dist/components/content/ContentPageHeader.svelte +9 -9
  152. package/dist/components/content/ContentPageShell.svelte +2 -2
  153. package/dist/components/content/DataState.svelte +8 -8
  154. package/dist/components/content/DescriptionList.svelte +25 -25
  155. package/dist/components/content/FeedbackNotice.svelte +11 -11
  156. package/dist/components/content/FileList.svelte +2 -2
  157. package/dist/components/content/FilterToolbar.svelte +15 -15
  158. package/dist/components/content/ImportDropzone.svelte +6 -6
  159. package/dist/components/content/IntegrationCard.svelte +4 -4
  160. package/dist/components/content/MediaThumbnail.svelte +16 -16
  161. package/dist/components/content/MemberList.svelte +2 -2
  162. package/dist/components/content/MetricBlock.svelte +7 -7
  163. package/dist/components/content/NetworkTable.svelte +1 -1
  164. package/dist/components/content/NetworkUserCard.svelte +12 -12
  165. package/dist/components/content/OtpInput.svelte +2 -2
  166. package/dist/components/content/PageToolbar.svelte +3 -3
  167. package/dist/components/content/ProjectCard.svelte +11 -11
  168. package/dist/components/content/SectionHeader.svelte +5 -5
  169. package/dist/components/content/SecurityEventTable.svelte +2 -2
  170. package/dist/components/content/SettingsFieldRow.svelte +5 -5
  171. package/dist/components/content/SettingsGroup.svelte +7 -7
  172. package/dist/components/content/StatusBadge.svelte +6 -6
  173. package/dist/components/content/StatusTabs.svelte +28 -28
  174. package/dist/components/content/SystemErrorState.svelte +2 -2
  175. package/dist/components/content/TeamCard.svelte +6 -6
  176. package/dist/components/content/TwoFactorStepper.svelte +3 -3
  177. package/dist/components/content/WorkspaceActionBar.svelte +12 -12
  178. package/dist/components/content/WorkspaceInspector.svelte +11 -11
  179. package/dist/components/content/WorkspaceLayout.svelte +5 -5
  180. package/dist/components/content/WorkspaceSplitPane.svelte +4 -4
  181. package/dist/components/content/WorkspaceStageStepper.svelte +16 -16
  182. package/dist/components/content/WorkspaceTabBar.svelte +16 -16
  183. package/dist/components/fields/ArrayField.svelte +12 -12
  184. package/dist/components/fields/AvatarField.svelte +15 -15
  185. package/dist/components/fields/BooleanField.svelte +14 -14
  186. package/dist/components/fields/CodeField.svelte +10 -10
  187. package/dist/components/fields/CopyField.svelte +6 -6
  188. package/dist/components/fields/CurrencyField.svelte +6 -6
  189. package/dist/components/fields/DateField.svelte +1 -1
  190. package/dist/components/fields/DateRangeField.svelte +2 -2
  191. package/dist/components/fields/EmailField.svelte +2 -2
  192. package/dist/components/fields/FileField.svelte +3 -3
  193. package/dist/components/fields/ImageField.svelte +1 -1
  194. package/dist/components/fields/JsonField.svelte +11 -11
  195. package/dist/components/fields/MarkdownField.svelte +2 -2
  196. package/dist/components/fields/MultiSelectField.svelte +3 -3
  197. package/dist/components/fields/NumberField.svelte +1 -1
  198. package/dist/components/fields/PercentField.svelte +9 -9
  199. package/dist/components/fields/PhoneField.svelte +8 -8
  200. package/dist/components/fields/RatingField.svelte +10 -10
  201. package/dist/components/fields/RelationField.svelte +3 -3
  202. package/dist/components/fields/RichTextField.svelte +4 -4
  203. package/dist/components/fields/TagField.svelte +11 -11
  204. package/dist/components/fields/TextField.svelte +2 -2
  205. package/dist/components/fields/UrlField.svelte +3 -3
  206. package/dist/components/network/TeamCrewTablePage.svelte +2 -2
  207. package/dist/components/network/UserCardsNFTPage.svelte +1 -1
  208. package/dist/components/profile/ActivityTimeline.svelte +8 -8
  209. package/dist/components/profile/ProfileCard.svelte +47 -47
  210. package/dist/components/profile/ProfileVariantSections.svelte +158 -158
  211. package/dist/components/profile/ProjectsGrid.svelte +6 -6
  212. package/dist/components/profile/PublicProfilePage.svelte +6 -6
  213. package/dist/components/profile/TeamsShowcase.svelte +3 -3
  214. package/dist/components/ui/alert/alert-description.svelte +1 -1
  215. package/dist/components/ui/alert/alert-title.svelte +1 -1
  216. package/dist/components/ui/alert/alert-variants.d.ts +7 -0
  217. package/dist/components/ui/alert/alert-variants.js +2 -0
  218. package/dist/components/ui/alert/alert.svelte +4 -15
  219. package/dist/components/ui/alert/alert.svelte.d.ts +7 -24
  220. package/dist/components/ui/alert-dialog/alert-dialog-content.svelte +2 -2
  221. package/dist/components/ui/alert-dialog/alert-dialog-description.svelte +1 -1
  222. package/dist/components/ui/alert-dialog/alert-dialog-footer.svelte +1 -1
  223. package/dist/components/ui/alert-dialog/alert-dialog-header.svelte +1 -1
  224. package/dist/components/ui/alert-dialog/alert-dialog-overlay.svelte +1 -1
  225. package/dist/components/ui/alert-dialog/alert-dialog-title.svelte +1 -1
  226. package/dist/components/ui/avatar/avatar-variants.d.ts +7 -0
  227. package/dist/components/ui/avatar/avatar-variants.js +2 -0
  228. package/dist/components/ui/avatar/avatar.svelte +11 -20
  229. package/dist/components/ui/avatar/avatar.svelte.d.ts +12 -28
  230. package/dist/components/ui/badge/badge-variants.d.ts +7 -0
  231. package/dist/components/ui/badge/badge-variants.js +2 -0
  232. package/dist/components/ui/badge/badge.svelte +4 -24
  233. package/dist/components/ui/badge/badge.svelte.d.ts +7 -45
  234. package/dist/components/ui/breadcrumb/breadcrumb-ellipsis.svelte +3 -3
  235. package/dist/components/ui/breadcrumb/breadcrumb-item.svelte +1 -1
  236. package/dist/components/ui/breadcrumb/breadcrumb-link.svelte +1 -1
  237. package/dist/components/ui/breadcrumb/breadcrumb-list.svelte +1 -1
  238. package/dist/components/ui/breadcrumb/breadcrumb-page.svelte +1 -1
  239. package/dist/components/ui/breadcrumb/breadcrumb-separator.svelte +2 -2
  240. package/dist/components/ui/button/button-variants.d.ts +9 -0
  241. package/dist/components/ui/button/button-variants.js +3 -0
  242. package/dist/components/ui/button/button.svelte +12 -31
  243. package/dist/components/ui/button/button.svelte.d.ts +9 -61
  244. package/dist/components/ui/card/card-action.svelte +1 -4
  245. package/dist/components/ui/card/card-content.svelte +1 -1
  246. package/dist/components/ui/card/card-description.svelte +1 -1
  247. package/dist/components/ui/card/card-footer.svelte +1 -1
  248. package/dist/components/ui/card/card-header.svelte +1 -4
  249. package/dist/components/ui/card/card-title.svelte +1 -1
  250. package/dist/components/ui/card/card.svelte +1 -1
  251. package/dist/components/ui/checkbox/checkbox.svelte +2 -5
  252. package/dist/components/ui/command/command-dialog.svelte +3 -3
  253. package/dist/components/ui/command/command-empty.svelte +1 -1
  254. package/dist/components/ui/command/command-group.svelte +2 -2
  255. package/dist/components/ui/command/command-input.svelte +1 -4
  256. package/dist/components/ui/command/command-item.svelte +1 -4
  257. package/dist/components/ui/command/command-list.svelte +1 -1
  258. package/dist/components/ui/command/command-separator.svelte +1 -1
  259. package/dist/components/ui/command/command.svelte +1 -4
  260. package/dist/components/ui/dialog/dialog-content.svelte +3 -3
  261. package/dist/components/ui/dialog/dialog-description.svelte +1 -1
  262. package/dist/components/ui/dialog/dialog-footer.svelte +1 -1
  263. package/dist/components/ui/dialog/dialog-header.svelte +1 -1
  264. package/dist/components/ui/dialog/dialog-overlay.svelte +1 -1
  265. package/dist/components/ui/dialog/dialog-title.svelte +1 -1
  266. package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte +2 -5
  267. package/dist/components/ui/dropdown-menu/dropdown-menu-content.svelte +1 -6
  268. package/dist/components/ui/dropdown-menu/dropdown-menu-item.svelte +3 -9
  269. package/dist/components/ui/dropdown-menu/dropdown-menu-separator.svelte +1 -1
  270. package/dist/components/ui/dropdown-menu/dropdown-menu.svelte +1 -1
  271. package/dist/components/ui/input/input.svelte +3 -2
  272. package/dist/components/ui/label/label.svelte +1 -4
  273. package/dist/components/ui/navigation-menu/navigation-menu-content.svelte +1 -5
  274. package/dist/components/ui/navigation-menu/navigation-menu-indicator.svelte +2 -5
  275. package/dist/components/ui/navigation-menu/navigation-menu-item.svelte +1 -1
  276. package/dist/components/ui/navigation-menu/navigation-menu-link.svelte +1 -4
  277. package/dist/components/ui/navigation-menu/navigation-menu-list.svelte +1 -1
  278. package/dist/components/ui/navigation-menu/navigation-menu-trigger.svelte +2 -5
  279. package/dist/components/ui/navigation-menu/navigation-menu-viewport.svelte +2 -5
  280. package/dist/components/ui/navigation-menu/navigation-menu.svelte +1 -1
  281. package/dist/components/ui/pagination/pagination-content.svelte +1 -1
  282. package/dist/components/ui/pagination/pagination-ellipsis.svelte +3 -3
  283. package/dist/components/ui/pagination/pagination-link.svelte +3 -0
  284. package/dist/components/ui/pagination/pagination-next.svelte +5 -2
  285. package/dist/components/ui/pagination/pagination-previous.svelte +5 -2
  286. package/dist/components/ui/pagination/pagination.svelte +1 -1
  287. package/dist/components/ui/popover/popover-content.svelte +1 -4
  288. package/dist/components/ui/progress/progress.svelte +2 -2
  289. package/dist/components/ui/scroll-area/scroll-area.svelte +3 -4
  290. package/dist/components/ui/select/select.svelte +1 -2
  291. package/dist/components/ui/separator/separator.svelte +1 -6
  292. package/dist/components/ui/sheet/sheet-content.svelte +1 -4
  293. package/dist/components/ui/sheet/sheet-description.svelte +1 -1
  294. package/dist/components/ui/sheet/sheet-footer.svelte +1 -1
  295. package/dist/components/ui/sheet/sheet-header.svelte +1 -1
  296. package/dist/components/ui/sheet/sheet-title.svelte +1 -1
  297. package/dist/components/ui/sheet/sheet.svelte +5 -10
  298. package/dist/components/ui/skeleton/skeleton.svelte +1 -1
  299. package/dist/components/ui/switch/switch.svelte +2 -9
  300. package/dist/components/ui/table/table-caption.svelte +1 -1
  301. package/dist/components/ui/table/table-cell.svelte +8 -11
  302. package/dist/components/ui/table/table-footer.svelte +1 -1
  303. package/dist/components/ui/table/table-head.svelte +1 -11
  304. package/dist/components/ui/table/table-header.svelte +1 -1
  305. package/dist/components/ui/table/table-row.svelte +2 -2
  306. package/dist/components/ui/table/table-row.svelte.d.ts +1 -1
  307. package/dist/components/ui/table/table.svelte +2 -2
  308. package/dist/components/ui/tabs/tabs-content.svelte +1 -1
  309. package/dist/components/ui/tabs/tabs-list.svelte +1 -4
  310. package/dist/components/ui/tabs/tabs-trigger.svelte +1 -7
  311. package/dist/components/ui/tabs/tabs.svelte +1 -1
  312. package/dist/components/ui/textarea/textarea.svelte +1 -4
  313. package/dist/components/ui/tooltip/tooltip-content.svelte +1 -1
  314. package/dist/page-chrome.css +228 -0
  315. package/package.json +13 -8
@@ -107,25 +107,25 @@
107
107
  <!-- hidden -->
108
108
  {:else if hasChildren && !collapsed}
109
109
  {#if isTopLevel}
110
- <div class="mt-3 first:mt-0">
110
+ <div class="svadmin-u-eccd13ef4f2f svadmin-u-71a0a94437c6">
111
111
  <Collapsible.Root bind:open={isOpen}>
112
112
  <Collapsible.Trigger
113
- class="sidebar-menu-item flex w-full items-center justify-between rounded-md py-[7px] text-[13px] font-medium transition-colors duration-150
113
+ class="sidebar-menu-item svadmin-u-60fbb7713999 svadmin-u-6da6a3c3f741 svadmin-u-3960ffc248d9 svadmin-u-8ef2268efbbc svadmin-u-421ac2be5045 svadmin-u-01cc1873771f svadmin-u-a14daebf7748 svadmin-u-2689f3958069 svadmin-u-ceb69a6b0e5f svadmin-u-233c0494b485
114
114
  {childActive
115
- ? 'text-sidebar-foreground'
116
- : 'text-sidebar-foreground/70 hover:text-sidebar-foreground'}"
115
+ ? 'svadmin-u-a7a63217e098'
116
+ : 'svadmin-u-4e5ca9623e22 svadmin-u-646e10356266'}"
117
117
  style="padding-left: {indentPx}px; padding-right: 10px"
118
118
  >
119
- <span class="flex items-center gap-2.5">
120
- <Icon class="h-[18px] w-[18px] flex-shrink-0 {childActive ? 'text-primary' : 'text-sidebar-foreground/50'}" />
119
+ <span class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-7e9a2a250cc3">
120
+ <Icon class="svadmin-u-86171d20618e svadmin-u-10d7a2feb011 svadmin-u-2074a75bf2e7 {childActive ? 'svadmin-u-20aaf08a7ed1' : 'svadmin-u-68d55a736ff4'}" />
121
121
  <span>{label}</span>
122
122
  </span>
123
- <ChevronDown class="h-3.5 w-3.5 text-sidebar-foreground/40 transition-transform duration-200 {isOpen ? 'rotate-180' : ''}" />
123
+ <ChevronDown class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c svadmin-u-3e3534b4c5df svadmin-u-eadef238231e svadmin-u-625a4c3fbeb2 {isOpen ? 'svadmin-u-3350916b3513' : ''}" />
124
124
  </Collapsible.Trigger>
125
125
  <Collapsible.Content>
126
- <div class="relative mt-[2px]">
127
- <div class="absolute left-[19px] top-0 bottom-0 w-px bg-border/60"></div>
128
- <div class="space-y-[1px]">
126
+ <div class="svadmin-u-d89972fe17d6 svadmin-u-0a88129d55fd">
127
+ <div class="svadmin-u-da4dbfbc4fdc svadmin-u-45c5dd0869c8 svadmin-u-2167406b24d7 svadmin-u-189f036c335c svadmin-u-47a69140380e svadmin-u-29f553b60628"></div>
128
+ <div class="svadmin-u-cfa4ce4bdcbd">
129
129
  {#each item.children as child, _i (_i)}
130
130
  <SidebarItem item={child} {currentPath} {collapsed} depth={depth + 1} />
131
131
  {/each}
@@ -137,20 +137,20 @@
137
137
  {:else}
138
138
  <Collapsible.Root bind:open={isOpen}>
139
139
  <Collapsible.Trigger
140
- class="sidebar-menu-item flex w-full items-center justify-between rounded-md py-[6px] text-[13px] font-normal transition-colors duration-150
140
+ class="sidebar-menu-item svadmin-u-60fbb7713999 svadmin-u-6da6a3c3f741 svadmin-u-3960ffc248d9 svadmin-u-8ef2268efbbc svadmin-u-421ac2be5045 svadmin-u-a139beb4e318 svadmin-u-a14daebf7748 svadmin-u-8ecebc9f80e6 svadmin-u-ceb69a6b0e5f svadmin-u-233c0494b485
141
141
  {childActive
142
- ? 'text-primary font-medium'
143
- : 'text-sidebar-foreground/65 hover:text-sidebar-foreground'}"
142
+ ? 'svadmin-u-20aaf08a7ed1 svadmin-u-2689f3958069'
143
+ : 'svadmin-u-98714a2f7d41 svadmin-u-646e10356266'}"
144
144
  style="padding-left: {indentPx}px; padding-right: 10px"
145
145
  >
146
- <span class="flex items-center gap-2.5">
147
- <Circle class="h-[5px] w-[5px] flex-shrink-0 {childActive ? 'fill-primary text-primary' : 'fill-sidebar-foreground/30 text-sidebar-foreground/30'}" />
146
+ <span class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-7e9a2a250cc3">
147
+ <Circle class="svadmin-u-6e718d5684c2 svadmin-u-28ab41ff3b38 svadmin-u-2074a75bf2e7 {childActive ? 'svadmin-u-fed9c9b1e894 svadmin-u-20aaf08a7ed1' : 'svadmin-u-da619aaefdf6 svadmin-u-8a1efe654daa'}" />
148
148
  <span>{label}</span>
149
149
  </span>
150
- <ChevronDown class="h-3 w-3 text-sidebar-foreground/35 transition-transform duration-200 {isOpen ? 'rotate-180' : ''}" />
150
+ <ChevronDown class="svadmin-u-6a60c09e6aaa svadmin-u-9cea05671a29 svadmin-u-711a3789b7a6 svadmin-u-eadef238231e svadmin-u-625a4c3fbeb2 {isOpen ? 'svadmin-u-3350916b3513' : ''}" />
151
151
  </Collapsible.Trigger>
152
152
  <Collapsible.Content>
153
- <div class="space-y-[1px] mt-[1px]">
153
+ <div class="svadmin-u-cfa4ce4bdcbd svadmin-u-75be195e1cd6">
154
154
  {#each item.children as child, _i (_i)}
155
155
  <SidebarItem item={child} {currentPath} {collapsed} depth={depth + 1} />
156
156
  {/each}
@@ -167,12 +167,12 @@
167
167
  href={finalHref}
168
168
  target={isExternal ? '_blank' : undefined}
169
169
  rel={isExternal ? 'noopener noreferrer' : undefined}
170
- class="sidebar-menu-item flex items-center justify-center rounded-md px-2 py-[7px] transition-colors duration-150
170
+ class="sidebar-menu-item svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-86843cf1e227 svadmin-u-421ac2be5045 svadmin-u-d5eab218aa34 svadmin-u-01cc1873771f svadmin-u-ceb69a6b0e5f svadmin-u-233c0494b485
171
171
  {active
172
- ? 'sidebar-menu-item-active bg-sidebar-accent text-primary'
173
- : 'text-sidebar-foreground/50 hover:bg-sidebar-accent/50 hover:text-sidebar-foreground'}"
172
+ ? 'sidebar-menu-item-active svadmin-u-707e8e52f284 svadmin-u-20aaf08a7ed1'
173
+ : 'svadmin-u-68d55a736ff4 svadmin-u-55d1f8b9d318 svadmin-u-646e10356266'}"
174
174
  >
175
- <Icon class="h-[18px] w-[18px] flex-shrink-0" />
175
+ <Icon class="svadmin-u-86171d20618e svadmin-u-10d7a2feb011 svadmin-u-2074a75bf2e7" />
176
176
  </a>
177
177
  {/snippet}
178
178
  </Tooltip.Trigger>
@@ -186,19 +186,19 @@
186
186
  href={finalHref}
187
187
  target={isExternal ? '_blank' : undefined}
188
188
  rel={isExternal ? 'noopener noreferrer' : undefined}
189
- class="sidebar-menu-item flex items-center gap-2.5 rounded-md py-[7px] text-[13px] font-medium transition-colors duration-150
189
+ class="sidebar-menu-item svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-7e9a2a250cc3 svadmin-u-421ac2be5045 svadmin-u-01cc1873771f svadmin-u-a14daebf7748 svadmin-u-2689f3958069 svadmin-u-ceb69a6b0e5f svadmin-u-233c0494b485
190
190
  {active
191
- ? 'sidebar-menu-item-active text-primary bg-sidebar-accent'
192
- : 'text-sidebar-foreground/70 hover:text-sidebar-foreground hover:bg-sidebar-accent/50'}"
191
+ ? 'sidebar-menu-item-active svadmin-u-20aaf08a7ed1 svadmin-u-707e8e52f284'
192
+ : 'svadmin-u-4e5ca9623e22 svadmin-u-646e10356266 svadmin-u-55d1f8b9d318'}"
193
193
  style="padding-left: {indentPx}px; padding-right: 10px"
194
194
  >
195
- <Icon class="h-[18px] w-[18px] flex-shrink-0 {active ? 'text-primary' : 'text-sidebar-foreground/50'}" />
196
- <span class="flex-1">{label}</span>
195
+ <Icon class="svadmin-u-86171d20618e svadmin-u-10d7a2feb011 svadmin-u-2074a75bf2e7 {active ? 'svadmin-u-20aaf08a7ed1' : 'svadmin-u-68d55a736ff4'}" />
196
+ <span class="svadmin-u-36e579c0b41c">{label}</span>
197
197
  {#if soon}
198
- <Badge variant="secondary" class="h-[18px] px-1.5 text-[10px] font-medium">Soon</Badge>
198
+ <Badge variant="secondary" class="svadmin-u-86171d20618e svadmin-u-45d828117213 svadmin-u-1dc571a3609f svadmin-u-2689f3958069">Soon</Badge>
199
199
  {/if}
200
200
  {#if isExternal}
201
- <ExternalLink class="h-3 w-3 opacity-40" />
201
+ <ExternalLink class="svadmin-u-6a60c09e6aaa svadmin-u-9cea05671a29 svadmin-u-2a2db4667b27" />
202
202
  {/if}
203
203
  </a>
204
204
  {:else}
@@ -206,19 +206,19 @@
206
206
  href={finalHref}
207
207
  target={isExternal ? '_blank' : undefined}
208
208
  rel={isExternal ? 'noopener noreferrer' : undefined}
209
- class="sidebar-menu-item flex items-center gap-2.5 rounded-md py-[6px] text-[13px] font-normal transition-colors duration-150
209
+ class="sidebar-menu-item svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-7e9a2a250cc3 svadmin-u-421ac2be5045 svadmin-u-a139beb4e318 svadmin-u-a14daebf7748 svadmin-u-8ecebc9f80e6 svadmin-u-ceb69a6b0e5f svadmin-u-233c0494b485
210
210
  {active
211
- ? 'sidebar-menu-item-active text-primary font-medium'
212
- : 'text-sidebar-foreground/65 hover:text-sidebar-foreground'}"
211
+ ? 'sidebar-menu-item-active svadmin-u-20aaf08a7ed1 svadmin-u-2689f3958069'
212
+ : 'svadmin-u-98714a2f7d41 svadmin-u-646e10356266'}"
213
213
  style="padding-left: {indentPx}px; padding-right: 10px"
214
214
  >
215
- <Circle class="h-[5px] w-[5px] flex-shrink-0 {active ? 'fill-primary text-primary' : 'fill-sidebar-foreground/30 text-sidebar-foreground/30'}" />
216
- <span class="flex-1">{label}</span>
215
+ <Circle class="svadmin-u-6e718d5684c2 svadmin-u-28ab41ff3b38 svadmin-u-2074a75bf2e7 {active ? 'svadmin-u-fed9c9b1e894 svadmin-u-20aaf08a7ed1' : 'svadmin-u-da619aaefdf6 svadmin-u-8a1efe654daa'}" />
216
+ <span class="svadmin-u-36e579c0b41c">{label}</span>
217
217
  {#if soon}
218
- <Badge variant="secondary" class="h-[18px] px-1.5 text-[10px] font-medium">Soon</Badge>
218
+ <Badge variant="secondary" class="svadmin-u-86171d20618e svadmin-u-45d828117213 svadmin-u-1dc571a3609f svadmin-u-2689f3958069">Soon</Badge>
219
219
  {/if}
220
220
  {#if isExternal}
221
- <ExternalLink class="h-3 w-3 opacity-40" />
221
+ <ExternalLink class="svadmin-u-6a60c09e6aaa svadmin-u-9cea05671a29 svadmin-u-2a2db4667b27" />
222
222
  {/if}
223
223
  </a>
224
224
  {/if}
@@ -185,54 +185,54 @@
185
185
  });
186
186
  </script>
187
187
 
188
- <div class={cn('rounded-xl border border-border bg-card p-4 shadow-xs text-xs space-y-3', className)}>
189
- <div class="flex items-center justify-between gap-2 pb-2 border-b border-border/60">
190
- <div class="font-semibold text-foreground">
191
- Electronic Signature <span class="text-muted-foreground font-normal">(Sign inside the box)</span>
188
+ <div class={cn('svadmin-u-a217b4eaa918 svadmin-u-ca6bcd4b6f3f svadmin-u-18049387f0af svadmin-u-cd0ad9a56558 svadmin-u-8e63407b5ceb svadmin-u-cef5b893cf23 svadmin-u-359090c2d529 svadmin-u-6ed543e2fbbb', className)}>
189
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-8ef2268efbbc svadmin-u-77a2a20e90d4 svadmin-u-f4cc511ff0c1 svadmin-u-65fdbade2025 svadmin-u-05faf5c801ff">
190
+ <div class="svadmin-u-e83a7042bc91 svadmin-u-d4108abe6359">
191
+ Electronic Signature <span class="svadmin-u-bfa603190748 svadmin-u-8ecebc9f80e6">(Sign inside the box)</span>
192
192
  </div>
193
193
 
194
- <div class="flex items-center gap-1.5">
194
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-58284b4ea568">
195
195
  <Button
196
196
  variant="ghost"
197
197
  size="sm"
198
- class="h-7 text-xs gap-1 text-muted-foreground hover:text-foreground"
198
+ class="svadmin-u-d0a52b312f7d svadmin-u-359090c2d529 svadmin-u-44ee8ba0a421 svadmin-u-bfa603190748 svadmin-u-ea7b2e9e070e"
199
199
  disabled={history.length === 0 || disabled}
200
200
  onclick={undo}
201
201
  >
202
- <RotateCcw class="h-3 w-3" />
202
+ <RotateCcw class="svadmin-u-6a60c09e6aaa svadmin-u-9cea05671a29" />
203
203
  Undo
204
204
  </Button>
205
205
 
206
206
  <Button
207
207
  variant="ghost"
208
208
  size="sm"
209
- class="h-7 text-xs gap-1 text-muted-foreground hover:text-destructive hover:bg-destructive/10"
209
+ class="svadmin-u-d0a52b312f7d svadmin-u-359090c2d529 svadmin-u-44ee8ba0a421 svadmin-u-bfa603190748 svadmin-u-51e95020d6f2 svadmin-u-8db899b4e072"
210
210
  disabled={isEmpty || disabled}
211
211
  onclick={clear}
212
212
  >
213
- <Trash2 class="h-3 w-3" />
213
+ <Trash2 class="svadmin-u-6a60c09e6aaa svadmin-u-9cea05671a29" />
214
214
  Clear
215
215
  </Button>
216
216
 
217
217
  {#if onsave}
218
218
  <Button
219
219
  size="sm"
220
- class="h-7 text-xs gap-1"
220
+ class="svadmin-u-d0a52b312f7d svadmin-u-359090c2d529 svadmin-u-44ee8ba0a421"
221
221
  disabled={isEmpty || disabled}
222
222
  onclick={handleSave}
223
223
  >
224
- <Check class="h-3 w-3" />
224
+ <Check class="svadmin-u-6a60c09e6aaa svadmin-u-9cea05671a29" />
225
225
  Confirm
226
226
  </Button>
227
227
  {:else}
228
228
  <Button
229
229
  variant="outline"
230
230
  size="sm"
231
- class="h-7 text-xs gap-1"
231
+ class="svadmin-u-d0a52b312f7d svadmin-u-359090c2d529 svadmin-u-44ee8ba0a421"
232
232
  disabled={isEmpty || disabled}
233
233
  onclick={handleDownload}
234
234
  >
235
- <Download class="h-3 w-3" />
235
+ <Download class="svadmin-u-6a60c09e6aaa svadmin-u-9cea05671a29" />
236
236
  Download
237
237
  </Button>
238
238
  {/if}
@@ -240,12 +240,12 @@
240
240
  </div>
241
241
 
242
242
  <!-- Canvas Drawing Board -->
243
- <div class="relative w-full rounded-lg border-2 border-dashed border-border/80 bg-background overflow-hidden flex items-center justify-center">
243
+ <div class="svadmin-u-d89972fe17d6 svadmin-u-6da6a3c3f741 svadmin-u-5f22e64f2282 svadmin-u-65935df577ba svadmin-u-a29b7a649c77 svadmin-u-c9ed8c5f79ae svadmin-u-e6f9e383a762 svadmin-u-2cd02d11d1af svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-86843cf1e227">
244
244
  <canvas
245
245
  bind:this={canvasEl}
246
246
  {width}
247
247
  {height}
248
- class="touch-none cursor-crosshair max-w-full h-auto block"
248
+ class="touch-none svadmin-u-92b7f35f04c0 svadmin-u-c0980a65a70d svadmin-u-b8f0a08ece1e svadmin-u-0214b4b355d1"
249
249
  onmousedown={startDrawing}
250
250
  onmousemove={draw}
251
251
  onmouseup={stopDrawing}
@@ -256,7 +256,7 @@
256
256
  ></canvas>
257
257
 
258
258
  {#if isEmpty}
259
- <div class="absolute inset-0 flex items-center justify-center pointer-events-none text-muted-foreground/40 font-mono text-xs select-none">
259
+ <div class="svadmin-u-da4dbfbc4fdc svadmin-u-7b7df0449b80 svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-86843cf1e227 svadmin-u-a4326536b8f5 svadmin-u-52183a1cca53 svadmin-u-0e65706bcccd svadmin-u-359090c2d529 svadmin-u-7f6912283f11">
260
260
  Sign here with mouse or touch
261
261
  </div>
262
262
  {/if}
@@ -65,15 +65,15 @@
65
65
  <div
66
66
  bind:this={containerEl}
67
67
  class={cn(
68
- 'relative flex w-full h-full min-h-72 rounded-xl border border-border bg-card shadow-xs overflow-hidden select-none',
69
- direction === 'horizontal' ? 'flex-row' : 'flex-col',
68
+ 'svadmin-u-d89972fe17d6 svadmin-u-60fbb7713999 svadmin-u-6da6a3c3f741 svadmin-u-668b21aa5409 svadmin-u-82d0b7da66df svadmin-u-a217b4eaa918 svadmin-u-ca6bcd4b6f3f svadmin-u-18049387f0af svadmin-u-cd0ad9a56558 svadmin-u-cef5b893cf23 svadmin-u-2cd02d11d1af svadmin-u-7f6912283f11',
69
+ direction === 'horizontal' ? 'svadmin-u-a6e88615d742' : 'svadmin-u-8dddea0773ed',
70
70
  className
71
71
  )}
72
72
  >
73
73
  <!-- Pane 1 -->
74
74
  <div
75
75
  style={direction === 'horizontal' ? `width: ${ratio * 100}%;` : `height: ${ratio * 100}%;`}
76
- class="overflow-auto shrink-0 select-text p-4"
76
+ class="svadmin-u-73fc3fb18ceb svadmin-u-012fbd121f37 svadmin-u-6a31d3b03df0 svadmin-u-8e63407b5ceb"
77
77
  >
78
78
  {#if pane1}
79
79
  {@render pane1()}
@@ -86,17 +86,17 @@
86
86
  onmousedown={startDrag}
87
87
  ontouchstart={startDrag}
88
88
  class={cn(
89
- 'shrink-0 bg-border hover:bg-primary/60 transition-colors z-10 flex items-center justify-center cursor-pointer',
89
+ 'svadmin-u-012fbd121f37 svadmin-u-a59afa8d9b9d svadmin-u-4e4cd27b0647 svadmin-u-ceb69a6b0e5f svadmin-u-236812d64c82 svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-86843cf1e227 svadmin-u-34516836730d',
90
90
  direction === 'horizontal'
91
- ? 'w-1.5 cursor-col-resize hover:w-2'
92
- : 'h-1.5 cursor-row-resize hover:h-2',
93
- isDragging ? 'bg-primary w-2' : ''
91
+ ? 'svadmin-u-c696a0890973 svadmin-u-1ee417e4637c svadmin-u-93d7370429b1'
92
+ : 'svadmin-u-095acb275581 svadmin-u-b9e5bb3c1a40 svadmin-u-27de9a7feebf',
93
+ isDragging ? 'svadmin-u-75b1bec3ea0e svadmin-u-940924b6e2d9' : ''
94
94
  )}
95
95
  >
96
96
  <div
97
97
  class={cn(
98
- 'rounded-full bg-muted-foreground/40',
99
- direction === 'horizontal' ? 'h-6 w-0.5' : 'w-6 h-0.5'
98
+ 'svadmin-u-ac204c108886 svadmin-u-dccfb8555c84',
99
+ direction === 'horizontal' ? 'svadmin-u-f6fe902450dc svadmin-u-31d2902b53fb' : 'svadmin-u-7ec10f86d9b1 svadmin-u-10db0d558201'
100
100
  )}
101
101
  ></div>
102
102
  </div>
@@ -104,7 +104,7 @@
104
104
  <!-- Pane 2 -->
105
105
  <div
106
106
  style={direction === 'horizontal' ? `width: ${(1 - ratio) * 100}%;` : `height: ${(1 - ratio) * 100}%;`}
107
- class="overflow-auto flex-1 select-text p-4"
107
+ class="svadmin-u-73fc3fb18ceb svadmin-u-36e579c0b41c svadmin-u-6a31d3b03df0 svadmin-u-8e63407b5ceb"
108
108
  >
109
109
  {#if pane2}
110
110
  {@render pane2()}
@@ -235,45 +235,45 @@
235
235
  }
236
236
  </script>
237
237
 
238
- <div class={cn('rounded-xl border border-border bg-card shadow-xs text-xs space-y-2 p-3 overflow-hidden', className)}>
238
+ <div class={cn('svadmin-u-a217b4eaa918 svadmin-u-ca6bcd4b6f3f svadmin-u-18049387f0af svadmin-u-cd0ad9a56558 svadmin-u-cef5b893cf23 svadmin-u-359090c2d529 svadmin-u-6f7e013d6499 svadmin-u-eb6e8b881acd svadmin-u-2cd02d11d1af', className)}>
239
239
  <!-- Header Toolbar -->
240
- <div class="flex flex-wrap items-center justify-between gap-2 pb-2 border-b border-border/60">
241
- <div class="flex items-center gap-2">
242
- <FileSpreadsheet class="h-4 w-4 text-primary shrink-0" />
243
- <span class="font-semibold text-foreground">{currentSheet?.name ?? 'Spreadsheet'}</span>
240
+ <div class="svadmin-u-60fbb7713999 svadmin-u-1eb5c6df38c1 svadmin-u-3960ffc248d9 svadmin-u-8ef2268efbbc svadmin-u-77a2a20e90d4 svadmin-u-f4cc511ff0c1 svadmin-u-65fdbade2025 svadmin-u-05faf5c801ff">
241
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-77a2a20e90d4">
242
+ <FileSpreadsheet class="svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3 svadmin-u-20aaf08a7ed1 svadmin-u-012fbd121f37" />
243
+ <span class="svadmin-u-e83a7042bc91 svadmin-u-d4108abe6359">{currentSheet?.name ?? 'Spreadsheet'}</span>
244
244
  </div>
245
245
 
246
- <div class="flex items-center gap-1.5">
246
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-58284b4ea568">
247
247
  {#if !readonly}
248
- <Button variant="outline" size="sm" class="h-7 text-xs gap-1" onclick={addRow}>
249
- <Plus class="h-3 w-3" />
248
+ <Button variant="outline" size="sm" class="svadmin-u-d0a52b312f7d svadmin-u-359090c2d529 svadmin-u-44ee8ba0a421" onclick={addRow}>
249
+ <Plus class="svadmin-u-6a60c09e6aaa svadmin-u-9cea05671a29" />
250
250
  Row
251
251
  </Button>
252
- <Button variant="outline" size="sm" class="h-7 text-xs gap-1" onclick={addCol}>
253
- <Plus class="h-3 w-3" />
252
+ <Button variant="outline" size="sm" class="svadmin-u-d0a52b312f7d svadmin-u-359090c2d529 svadmin-u-44ee8ba0a421" onclick={addCol}>
253
+ <Plus class="svadmin-u-6a60c09e6aaa svadmin-u-9cea05671a29" />
254
254
  Column
255
255
  </Button>
256
256
  {/if}
257
257
 
258
- <Button size="sm" class="h-7 text-xs gap-1" onclick={exportCsv}>
259
- <Download class="h-3 w-3" />
258
+ <Button size="sm" class="svadmin-u-d0a52b312f7d svadmin-u-359090c2d529 svadmin-u-44ee8ba0a421" onclick={exportCsv}>
259
+ <Download class="svadmin-u-6a60c09e6aaa svadmin-u-9cea05671a29" />
260
260
  Export CSV
261
261
  </Button>
262
262
  </div>
263
263
  </div>
264
264
 
265
265
  <!-- Formula Bar -->
266
- <div class="flex items-center gap-2 px-2 py-1.5 rounded-lg bg-muted/40 border border-border/60 font-mono">
267
- <div class="px-2 py-0.5 rounded bg-background border border-border text-foreground font-semibold text-[11px] min-w-10 text-center">
266
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-77a2a20e90d4 svadmin-u-d5eab218aa34 svadmin-u-ec0091ee009b svadmin-u-5f22e64f2282 svadmin-u-b00f43c30c2b svadmin-u-ca6bcd4b6f3f svadmin-u-05faf5c801ff svadmin-u-0e65706bcccd">
267
+ <div class="svadmin-u-d5eab218aa34 svadmin-u-465609a240a8 svadmin-u-07389a777c1f svadmin-u-e6f9e383a762 svadmin-u-ca6bcd4b6f3f svadmin-u-18049387f0af svadmin-u-d4108abe6359 svadmin-u-e83a7042bc91 svadmin-u-d058ca6de60f svadmin-u-28ae52cc20ae svadmin-u-ca6bf63030aa">
268
268
  {selectedCell}
269
269
  </div>
270
- <span class="text-muted-foreground text-xs">fx</span>
270
+ <span class="svadmin-u-bfa603190748 svadmin-u-359090c2d529">fx</span>
271
271
  <input
272
272
  type="text"
273
273
  bind:value={formulaInput}
274
274
  {readonly}
275
275
  placeholder="Value or formula, e.g. =SUM(B2:E2)"
276
- class="flex-1 h-6 bg-transparent border-0 px-1 text-xs text-foreground focus-visible:outline-none placeholder:text-muted-foreground/60 font-mono"
276
+ class="svadmin-u-36e579c0b41c svadmin-u-f6fe902450dc svadmin-u-7f19cdf4c5bb svadmin-u-119b2aa0b8f6 svadmin-u-d8e0e382c67b svadmin-u-359090c2d529 svadmin-u-d4108abe6359 svadmin-u-f10f771f87e9 svadmin-u-35ca6b75d707 svadmin-u-0e65706bcccd"
277
277
  oninput={handleFormulaCommit}
278
278
  onkeydown={(e) => { if (e.key === 'Enter') handleFormulaCommit(); }}
279
279
  />
@@ -281,23 +281,23 @@
281
281
 
282
282
  <!-- Spreadsheet Grid -->
283
283
  {#if currentSheet}
284
- <div class="overflow-auto max-h-[500px] border border-border/60 rounded-lg">
285
- <table class="w-full border-collapse text-left font-mono">
286
- <thead class="bg-muted/60 sticky top-0 z-10 text-muted-foreground">
284
+ <div class="svadmin-u-73fc3fb18ceb svadmin-u-b63b7d8eef5d svadmin-u-ca6bcd4b6f3f svadmin-u-05faf5c801ff svadmin-u-5f22e64f2282">
285
+ <table class="svadmin-u-6da6a3c3f741 svadmin-u-4583f90cd9bd svadmin-u-2eba0d65d059 svadmin-u-0e65706bcccd">
286
+ <thead class="svadmin-u-706701550477 svadmin-u-3e0fd166d494 svadmin-u-2167406b24d7 svadmin-u-236812d64c82 svadmin-u-bfa603190748">
287
287
  <tr>
288
- <th class="w-10 p-1.5 text-center border-r border-b border-border/60 bg-muted/80 text-[10px]">#</th>
288
+ <th class="svadmin-u-d854e5698b57 svadmin-u-cd009d7d208c svadmin-u-ca6bf63030aa svadmin-u-5ceb636bd9f3 svadmin-u-65fdbade2025 svadmin-u-05faf5c801ff svadmin-u-85d919893645 svadmin-u-1dc571a3609f">#</th>
289
289
  {#each Array.from({ length: currentSheet.cols }) as _, c (c)}
290
- <th class="min-w-24 p-1.5 text-center border-r border-b border-border/60 font-semibold text-foreground text-xs">
290
+ <th class="svadmin-u-25effcb585ab svadmin-u-cd009d7d208c svadmin-u-ca6bf63030aa svadmin-u-5ceb636bd9f3 svadmin-u-65fdbade2025 svadmin-u-05faf5c801ff svadmin-u-e83a7042bc91 svadmin-u-d4108abe6359 svadmin-u-359090c2d529">
291
291
  {getColName(c)}
292
292
  </th>
293
293
  {/each}
294
294
  </tr>
295
295
  </thead>
296
- <tbody class="divide-y divide-border/40">
296
+ <tbody class="svadmin-u-fa6acbf81d74 svadmin-u-08b5607c7258">
297
297
  {#each Array.from({ length: currentSheet.rows }) as _, r (r)}
298
298
  {@const rowNum = r + 1}
299
- <tr class="hover:bg-muted/10">
300
- <td class="w-10 p-1 text-center border-r border-border/60 bg-muted/30 text-[10px] font-semibold text-muted-foreground select-none">
299
+ <tr class="svadmin-u-9fc5d875f5ca">
300
+ <td class="svadmin-u-d854e5698b57 svadmin-u-eb6a3cef9686 svadmin-u-ca6bf63030aa svadmin-u-5ceb636bd9f3 svadmin-u-05faf5c801ff svadmin-u-2859c861d7de svadmin-u-1dc571a3609f svadmin-u-e83a7042bc91 svadmin-u-bfa603190748 svadmin-u-7f6912283f11">
301
301
  {rowNum}
302
302
  </td>
303
303
  {#each Array.from({ length: currentSheet.cols }) as _, c (c)}
@@ -305,8 +305,8 @@
305
305
  {@const isSelected = selectedCell === cellKey}
306
306
  <td
307
307
  class={cn(
308
- 'p-0 border-r border-border/40 relative cursor-pointer',
309
- isSelected ? 'ring-2 ring-primary z-10 bg-primary/5' : ''
308
+ 'svadmin-u-8a539c7fe216 svadmin-u-5ceb636bd9f3 svadmin-u-6ee2d41e2d2d svadmin-u-d89972fe17d6 svadmin-u-34516836730d',
309
+ isSelected ? 'svadmin-u-16b1efa5875e svadmin-u-fd1dda07320a svadmin-u-236812d64c82 svadmin-u-989c466fdbe7' : ''
310
310
  )}
311
311
  onclick={() => selectCell(cellKey)}
312
312
  >
@@ -315,8 +315,8 @@
315
315
  {readonly}
316
316
  value={isSelected ? (currentSheet.cells[cellKey] ?? '') : getRenderedValue(cellKey)}
317
317
  class={cn(
318
- 'w-full h-7 px-2 bg-transparent border-0 text-xs font-mono focus-visible:outline-none',
319
- typeof evaluateFormula(currentSheet.cells[cellKey] ?? '', currentSheet.cells) === 'number' ? 'text-right' : 'text-left'
318
+ 'svadmin-u-6da6a3c3f741 svadmin-u-d0a52b312f7d svadmin-u-d5eab218aa34 svadmin-u-7f19cdf4c5bb svadmin-u-119b2aa0b8f6 svadmin-u-359090c2d529 svadmin-u-0e65706bcccd svadmin-u-f10f771f87e9',
319
+ typeof evaluateFormula(currentSheet.cells[cellKey] ?? '', currentSheet.cells) === 'number' ? 'svadmin-u-308fc069e46e' : 'svadmin-u-2eba0d65d059'
320
320
  )}
321
321
  onfocus={() => selectCell(cellKey)}
322
322
  oninput={(e) => updateCellValue(cellKey, e.currentTarget.value)}
@@ -331,17 +331,17 @@
331
331
  {/if}
332
332
 
333
333
  <!-- Sheet Tabs Footer -->
334
- <div class="flex items-center justify-between gap-2 pt-1 border-t border-border/60">
335
- <div class="flex items-center gap-1 overflow-x-auto">
334
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-8ef2268efbbc svadmin-u-77a2a20e90d4 svadmin-u-6b7d6e21ccbd svadmin-u-b950dda299d3 svadmin-u-05faf5c801ff">
335
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-44ee8ba0a421 svadmin-u-1384f66f41d0">
336
336
  {#each sheets as sheet (sheet.id)}
337
337
  {@const isActive = sheet.id === activeSheetId}
338
338
  <button
339
339
  type="button"
340
340
  class={cn(
341
- 'px-3 py-1 rounded-md text-xs font-medium transition-colors cursor-pointer border',
341
+ 'svadmin-u-0e17f2bd9074 svadmin-u-660d2effb880 svadmin-u-421ac2be5045 svadmin-u-359090c2d529 svadmin-u-2689f3958069 svadmin-u-ceb69a6b0e5f svadmin-u-34516836730d svadmin-u-ca6bcd4b6f3f',
342
342
  isActive
343
- ? 'bg-primary text-primary-foreground border-primary shadow-xs'
344
- : 'bg-card text-muted-foreground border-border/60 hover:text-foreground hover:bg-muted/60'
343
+ ? 'svadmin-u-75b1bec3ea0e svadmin-u-30ca335ae9c2 svadmin-u-6cbc84dd9e1a svadmin-u-cef5b893cf23'
344
+ : 'svadmin-u-cd0ad9a56558 svadmin-u-bfa603190748 svadmin-u-05faf5c801ff svadmin-u-ea7b2e9e070e svadmin-u-68646cdcc246'
345
345
  )}
346
346
  onclick={() => {
347
347
  activeSheetId = sheet.id;
@@ -354,8 +354,8 @@
354
354
  {/each}
355
355
 
356
356
  {#if !readonly}
357
- <Button variant="ghost" size="sm" class="h-6 w-6 p-0 text-muted-foreground" onclick={addSheet} title="New Sheet">
358
- <Plus class="h-3.5 w-3.5" />
357
+ <Button variant="ghost" size="sm" class="svadmin-u-f6fe902450dc svadmin-u-7ec10f86d9b1 svadmin-u-8a539c7fe216 svadmin-u-bfa603190748" onclick={addSheet} title="New Sheet">
358
+ <Plus class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c" />
359
359
  </Button>
360
360
  {/if}
361
361
  </div>
@@ -5,20 +5,6 @@
5
5
  type ColorVariant = 'primary' | 'success' | 'warning' | 'danger' | 'info';
6
6
  type StyleVariant = 'default' | 'outline' | 'filled';
7
7
 
8
- const colorMap: Record<ColorVariant, string> = {
9
- primary: 'bg-primary/10 text-primary',
10
- success: 'bg-success/10 text-success',
11
- warning: 'bg-warning/10 text-warning',
12
- danger: 'bg-destructive/10 text-destructive',
13
- info: 'bg-info/10 text-info',
14
- };
15
-
16
- const variantMap: Record<StyleVariant, string> = {
17
- default: 'bg-card shadow-sm hover:shadow-md transition-shadow duration-300',
18
- outline: 'border-2 border-border bg-transparent',
19
- filled: 'border-0 bg-muted/50 shadow-sm',
20
- };
21
-
22
8
  interface Props {
23
9
  label: string;
24
10
  value: string | number;
@@ -45,35 +31,36 @@
45
31
  }: Props = $props();
46
32
  </script>
47
33
 
48
- <div class="flex items-center gap-4 rounded-lg p-5 {variantMap[variant]} {className}">
34
+ <div class="svadmin-stats-card {className}" data-color={color} data-variant={variant}>
49
35
  {#if Icon}
50
- <div class="flex h-12 w-12 items-center justify-center rounded-lg {colorMap[color]}">
51
- <Icon class="h-6 w-6" />
36
+ <div class="svadmin-stats-card__icon">
37
+ <Icon class="svadmin-stats-card__icon-glyph" />
52
38
  </div>
53
39
  {/if}
54
- <div class="flex-1 min-w-0">
55
- <p class="text-sm text-muted-foreground">{label}</p>
40
+ <div class="svadmin-stats-card__body">
41
+ <p class="svadmin-stats-card__label">{label}</p>
56
42
  {#if loading}
57
- <Skeleton class="mt-1 h-7 w-20" />
43
+ <Skeleton class="svadmin-stats-card__skeleton" />
58
44
  {:else}
59
- <div class="flex items-baseline gap-2">
60
- <p class="text-xl font-mono font-semibold text-foreground tracking-tight">{value}</p>
45
+ <div class="svadmin-stats-card__value-row">
46
+ <p class="svadmin-stats-card__value">{value}</p>
61
47
  {#if trend}
62
48
  <span
63
- class="text-xs font-medium inline-flex items-center gap-0.5 {trend.value >= 0 ? 'text-success' : 'text-destructive'}"
49
+ class="svadmin-stats-card__trend"
50
+ data-positive={trend.value >= 0 ? 'true' : 'false'}
64
51
  aria-label="{trend.value >= 0 ? '上升' : '下降'} {Math.abs(trend.value)}%"
65
52
  >
66
53
  <span aria-hidden="true">{trend.value >= 0 ? '↑' : '↓'}</span>
67
54
  <span>{Math.abs(trend.value)}%</span>
68
55
  {#if trend.label}
69
- <span class="text-muted-foreground ml-0.5">{trend.label}</span>
56
+ <span class="svadmin-stats-card__trend-label">{trend.label}</span>
70
57
  {/if}
71
58
  </span>
72
59
  {/if}
73
60
  </div>
74
61
  {/if}
75
62
  {#if footer}
76
- <div class="mt-2">
63
+ <div class="svadmin-stats-card__footer">
77
64
  {@render footer()}
78
65
  </div>
79
66
  {/if}