@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
@@ -78,31 +78,31 @@
78
78
  {#if !isOnline || pendingMutations.length > 0}
79
79
  <div
80
80
  class={cn(
81
- 'rounded-xl border shadow-xs text-xs p-3 transition-all',
81
+ 'svadmin-u-a217b4eaa918 svadmin-u-ca6bcd4b6f3f svadmin-u-cef5b893cf23 svadmin-u-359090c2d529 svadmin-u-eb6e8b881acd svadmin-u-0fe7d7d814d0',
82
82
  !isOnline
83
- ? 'bg-warning/15 border-warning/30 text-warning-foreground'
84
- : 'bg-muted/40 border-border/80 text-foreground',
83
+ ? 'svadmin-u-d9c3c520f7d5 svadmin-u-2f960aa0c478 svadmin-u-3a4ff758c2ab'
84
+ : 'svadmin-u-b00f43c30c2b svadmin-u-c9ed8c5f79ae svadmin-u-d4108abe6359',
85
85
  className
86
86
  )}
87
87
  >
88
- <div class="flex flex-wrap items-center justify-between gap-2">
88
+ <div class="svadmin-u-60fbb7713999 svadmin-u-1eb5c6df38c1 svadmin-u-3960ffc248d9 svadmin-u-8ef2268efbbc svadmin-u-77a2a20e90d4">
89
89
  <!-- Status Indicator -->
90
- <div class="flex items-center gap-2">
90
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-77a2a20e90d4">
91
91
  {#if !isOnline}
92
- <div class="flex h-6 w-6 items-center justify-center rounded-full bg-warning/20 text-warning">
93
- <WifiOff class="h-3.5 w-3.5" />
92
+ <div class="svadmin-u-60fbb7713999 svadmin-u-f6fe902450dc svadmin-u-7ec10f86d9b1 svadmin-u-3960ffc248d9 svadmin-u-86843cf1e227 svadmin-u-ac204c108886 svadmin-u-55acecc7e2f1 svadmin-u-918184635b1d">
93
+ <WifiOff class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c" />
94
94
  </div>
95
95
  <div>
96
- <div class="font-semibold text-foreground">Offline Mode</div>
97
- <div class="text-[11px] text-muted-foreground">Changes are saved locally to IndexedDB queue.</div>
96
+ <div class="svadmin-u-e83a7042bc91 svadmin-u-d4108abe6359">Offline Mode</div>
97
+ <div class="svadmin-u-d058ca6de60f svadmin-u-bfa603190748">Changes are saved locally to IndexedDB queue.</div>
98
98
  </div>
99
99
  {:else}
100
- <div class="flex h-6 w-6 items-center justify-center rounded-full bg-success/20 text-success">
101
- <Wifi class="h-3.5 w-3.5" />
100
+ <div class="svadmin-u-60fbb7713999 svadmin-u-f6fe902450dc svadmin-u-7ec10f86d9b1 svadmin-u-3960ffc248d9 svadmin-u-86843cf1e227 svadmin-u-ac204c108886 svadmin-u-ccc86a0cef94 svadmin-u-76747e5e02ff">
101
+ <Wifi class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c" />
102
102
  </div>
103
103
  <div>
104
- <div class="font-semibold text-foreground">Online • Synced Connection</div>
105
- <div class="text-[11px] text-muted-foreground">
104
+ <div class="svadmin-u-e83a7042bc91 svadmin-u-d4108abe6359">Online • Synced Connection</div>
105
+ <div class="svadmin-u-d058ca6de60f svadmin-u-bfa603190748">
106
106
  {pendingMutations.length} pending mutation(s) in queue
107
107
  </div>
108
108
  </div>
@@ -110,11 +110,11 @@
110
110
  </div>
111
111
 
112
112
  <!-- Actions -->
113
- <div class="flex items-center gap-2">
113
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-77a2a20e90d4">
114
114
  {#if pendingMutations.length > 0}
115
115
  <button
116
116
  type="button"
117
- class="text-[11px] text-muted-foreground hover:text-foreground underline cursor-pointer bg-transparent border-0"
117
+ class="svadmin-u-d058ca6de60f svadmin-u-bfa603190748 svadmin-u-ea7b2e9e070e svadmin-u-c82b67c88e69 svadmin-u-34516836730d svadmin-u-7f19cdf4c5bb svadmin-u-119b2aa0b8f6"
118
118
  onclick={() => { expanded = !expanded; }}
119
119
  >
120
120
  {expanded ? 'Hide Details' : `View Queue (${pendingMutations.length})`}
@@ -122,11 +122,11 @@
122
122
 
123
123
  <Button
124
124
  size="sm"
125
- class="h-7 text-xs gap-1"
125
+ class="svadmin-u-d0a52b312f7d svadmin-u-359090c2d529 svadmin-u-44ee8ba0a421"
126
126
  disabled={!isOnline || isSyncing}
127
127
  onclick={triggerSync}
128
128
  >
129
- <RefreshCw class={cn('h-3 w-3', isSyncing ? 'animate-spin' : '')} />
129
+ <RefreshCw class={cn('svadmin-u-6a60c09e6aaa svadmin-u-9cea05671a29', isSyncing ? 'svadmin-u-afbdd13a380e' : '')} />
130
130
  {isSyncing ? 'Syncing...' : 'Sync Now'}
131
131
  </Button>
132
132
  {/if}
@@ -135,30 +135,30 @@
135
135
 
136
136
  <!-- Queue List Drawer -->
137
137
  {#if expanded && pendingMutations.length > 0}
138
- <div class="mt-3 pt-3 border-t border-border/40 space-y-1.5 max-h-48 overflow-y-auto">
138
+ <div class="svadmin-u-eccd13ef4f2f svadmin-u-ce335a8e4f56 svadmin-u-b950dda299d3 svadmin-u-6ee2d41e2d2d svadmin-u-5a2508227c6a svadmin-u-558f64349245 svadmin-u-92bf82f493b1">
139
139
  {#each pendingMutations as mut (mut.id)}
140
- <div class="flex items-center justify-between p-2 rounded-md bg-card border border-border/60 text-[11px]">
141
- <div class="flex items-center gap-2 truncate">
140
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-8ef2268efbbc svadmin-u-7660b450905a svadmin-u-421ac2be5045 svadmin-u-cd0ad9a56558 svadmin-u-ca6bcd4b6f3f svadmin-u-05faf5c801ff svadmin-u-d058ca6de60f">
141
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-77a2a20e90d4 svadmin-u-f283ea9bea0e">
142
142
  {#if mut.status === 'failed'}
143
- <AlertCircle class="h-3.5 w-3.5 text-destructive shrink-0" />
143
+ <AlertCircle class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c svadmin-u-811148b13d1e svadmin-u-012fbd121f37" />
144
144
  {:else if mut.status === 'syncing'}
145
- <RefreshCw class="h-3.5 w-3.5 text-primary animate-spin shrink-0" />
145
+ <RefreshCw class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c svadmin-u-20aaf08a7ed1 svadmin-u-afbdd13a380e svadmin-u-012fbd121f37" />
146
146
  {:else if mut.status === 'synced'}
147
- <CheckCircle2 class="h-3.5 w-3.5 text-success shrink-0" />
147
+ <CheckCircle2 class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c svadmin-u-76747e5e02ff svadmin-u-012fbd121f37" />
148
148
  {:else}
149
- <Clock class="h-3.5 w-3.5 text-muted-foreground shrink-0" />
149
+ <Clock class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c svadmin-u-bfa603190748 svadmin-u-012fbd121f37" />
150
150
  {/if}
151
151
 
152
- <Badge variant="outline" class="font-mono text-[9px] uppercase px-1 py-0">{mut.action}</Badge>
153
- <span class="font-medium text-foreground truncate">{mut.resource}</span>
154
- <span class="text-muted-foreground font-mono text-[10px]">{mut.timestamp}</span>
152
+ <Badge variant="outline" class="svadmin-u-0e65706bcccd svadmin-u-e09880869d1f uppercase svadmin-u-d8e0e382c67b svadmin-u-68ecb30dbec6">{mut.action}</Badge>
153
+ <span class="svadmin-u-2689f3958069 svadmin-u-d4108abe6359 svadmin-u-f283ea9bea0e">{mut.resource}</span>
154
+ <span class="svadmin-u-bfa603190748 svadmin-u-0e65706bcccd svadmin-u-1dc571a3609f">{mut.timestamp}</span>
155
155
  </div>
156
156
 
157
157
  {#if mut.status === 'failed' && onretry}
158
158
  <Button
159
159
  variant="ghost"
160
160
  size="sm"
161
- class="h-6 text-[10px] px-2 text-destructive hover:bg-destructive/10"
161
+ class="svadmin-u-f6fe902450dc svadmin-u-1dc571a3609f svadmin-u-d5eab218aa34 svadmin-u-811148b13d1e svadmin-u-8db899b4e072"
162
162
  onclick={() => onretry?.(mut.id)}
163
163
  >
164
164
  Retry
@@ -33,47 +33,46 @@
33
33
  class: className = '',
34
34
  }: Props = $props();
35
35
 
36
- const isCompact = $derived(density === 'compact');
37
36
  </script>
38
37
 
39
- <div class={cn(isCompact ? 'space-y-1.5' : 'space-y-4', className)}>
38
+ <div class={cn('svadmin-page-header', className)} data-density={density}>
40
39
  {#if showBreadcrumbs}
41
- <Breadcrumbs class={isCompact ? 'mb-1 text-xs' : 'mb-4'} />
40
+ <Breadcrumbs class="svadmin-page-header__breadcrumbs" />
42
41
  {/if}
43
- <div class={cn('flex flex-col sm:flex-row sm:items-center sm:justify-between', isCompact ? 'gap-1.5' : 'gap-2')}>
44
- <div class="flex items-center gap-2.5 min-w-0">
42
+ <div class="svadmin-page-header__row">
43
+ <div class="svadmin-page-header__heading">
45
44
  {#if back}
46
45
  {@render back()}
47
46
  {:else if onBack}
48
47
  <Button
49
48
  variant="ghost"
50
49
  size="icon-xs"
51
- class="shrink-0 text-muted-foreground hover:text-foreground"
50
+ class="svadmin-page-header__back"
52
51
  onclick={onBack}
53
52
  aria-label={backLabel}
54
53
  title={backLabel}
55
54
  >
56
- <ArrowLeft class="size-4" />
55
+ <ArrowLeft class="svadmin-page-header__back-icon" />
57
56
  </Button>
58
57
  {/if}
59
- <div class="min-w-0">
60
- <div class="flex flex-wrap items-center gap-2">
61
- <h1 class={cn('font-semibold text-foreground truncate', isCompact ? 'text-lg' : 'text-xl')}>
58
+ <div class="svadmin-page-header__text">
59
+ <div class="svadmin-page-header__title-row">
60
+ <h1 class="svadmin-page-header__title">
62
61
  {title}
63
62
  </h1>
64
63
  {#if tags}
65
- <div class="inline-flex items-center gap-1.5">
64
+ <div class="svadmin-page-header__tags">
66
65
  {@render tags()}
67
66
  </div>
68
67
  {/if}
69
68
  </div>
70
69
  {#if description}
71
- <p class={cn('text-muted-foreground', isCompact ? 'text-xs' : 'text-sm')}>{description}</p>
70
+ <p class="svadmin-page-header__description">{description}</p>
72
71
  {/if}
73
72
  </div>
74
73
  </div>
75
74
  {#if actions || extra}
76
- <div class={cn('flex items-center shrink-0', isCompact ? 'gap-1.5' : 'gap-2')}>
75
+ <div class="svadmin-page-header__actions">
77
76
  {#if extra}
78
77
  {@render extra()}
79
78
  {/if}
@@ -11,59 +11,59 @@
11
11
  }>();
12
12
  </script>
13
13
 
14
- <div class="w-full space-y-6" out:fade={{ duration: 200 }}>
14
+ <div class="svadmin-u-6da6a3c3f741 svadmin-u-b3542e058833" out:fade={{ duration: 200 }}>
15
15
  <!-- Header Skeleton -->
16
- <div class="flex items-center justify-between">
17
- <div class="space-y-2">
18
- <Skeleton class="h-8 w-[200px]" />
19
- <Skeleton class="h-4 w-[300px]" />
16
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-8ef2268efbbc">
17
+ <div class="svadmin-u-6f7e013d6499">
18
+ <Skeleton class="svadmin-u-ed8a5df7b2fb svadmin-u-efc981d0f818" />
19
+ <Skeleton class="svadmin-u-11e59c6d5f6b svadmin-u-069503724c35" />
20
20
  </div>
21
21
  {#if type === 'list'}
22
- <Skeleton class="h-10 w-[120px]" />
22
+ <Skeleton class="svadmin-u-426b8b75185b svadmin-u-c1ca66f139f6" />
23
23
  {/if}
24
24
  </div>
25
25
 
26
- <div class="rounded-md border p-4 space-y-4">
26
+ <div class="svadmin-u-421ac2be5045 svadmin-u-ca6bcd4b6f3f svadmin-u-8e63407b5ceb svadmin-u-3e7ce58d64fa">
27
27
  {#if type === 'list'}
28
28
  <!-- Table Header -->
29
- <div class="flex gap-4 border-b pb-4">
29
+ <div class="svadmin-u-60fbb7713999 svadmin-u-0c3bc98565dd svadmin-u-65fdbade2025 svadmin-u-9fcd8a13827e">
30
30
  {#each Array(4) as _, _i (_i)}
31
- <Skeleton class="h-6 flex-1" />
31
+ <Skeleton class="svadmin-u-f6fe902450dc svadmin-u-36e579c0b41c" />
32
32
  {/each}
33
33
  </div>
34
34
  <!-- Table Rows -->
35
- <div class="space-y-4">
35
+ <div class="svadmin-u-3e7ce58d64fa">
36
36
  {#each Array(rows) as _, _i (_i)}
37
- <div class="flex gap-4">
38
- <Skeleton class="h-6 flex-1" />
39
- <Skeleton class="h-6 flex-1" />
40
- <Skeleton class="h-6 flex-1" />
41
- <Skeleton class="h-6 flex-1" />
37
+ <div class="svadmin-u-60fbb7713999 svadmin-u-0c3bc98565dd">
38
+ <Skeleton class="svadmin-u-f6fe902450dc svadmin-u-36e579c0b41c" />
39
+ <Skeleton class="svadmin-u-f6fe902450dc svadmin-u-36e579c0b41c" />
40
+ <Skeleton class="svadmin-u-f6fe902450dc svadmin-u-36e579c0b41c" />
41
+ <Skeleton class="svadmin-u-f6fe902450dc svadmin-u-36e579c0b41c" />
42
42
  </div>
43
43
  {/each}
44
44
  </div>
45
45
  {:else if type === 'show'}
46
46
  <!-- Key-Value pairs -->
47
- <div class="space-y-6">
47
+ <div class="svadmin-u-b3542e058833">
48
48
  {#each Array(rows) as _, _i (_i)}
49
- <div class="space-y-2">
50
- <Skeleton class="h-4 w-[100px]" />
51
- <Skeleton class="h-6 w-[250px]" />
49
+ <div class="svadmin-u-6f7e013d6499">
50
+ <Skeleton class="svadmin-u-11e59c6d5f6b svadmin-u-671513a87226" />
51
+ <Skeleton class="svadmin-u-f6fe902450dc svadmin-u-71e31b2f1bb2" />
52
52
  </div>
53
53
  {/each}
54
54
  </div>
55
55
  {:else if type === 'form'}
56
56
  <!-- Form Inputs -->
57
- <div class="space-y-6">
57
+ <div class="svadmin-u-b3542e058833">
58
58
  {#each Array(rows) as _, _i (_i)}
59
- <div class="space-y-2">
60
- <Skeleton class="h-4 w-[100px]" />
61
- <Skeleton class="h-10 w-full max-w-md" />
59
+ <div class="svadmin-u-6f7e013d6499">
60
+ <Skeleton class="svadmin-u-11e59c6d5f6b svadmin-u-671513a87226" />
61
+ <Skeleton class="svadmin-u-426b8b75185b svadmin-u-6da6a3c3f741 svadmin-u-9794ab45094d" />
62
62
  </div>
63
63
  {/each}
64
- <div class="pt-4 flex gap-2">
65
- <Skeleton class="h-10 w-[100px]" />
66
- <Skeleton class="h-10 w-[100px]" />
64
+ <div class="svadmin-u-173fa8f06789 svadmin-u-60fbb7713999 svadmin-u-77a2a20e90d4">
65
+ <Skeleton class="svadmin-u-426b8b75185b svadmin-u-671513a87226" />
66
+ <Skeleton class="svadmin-u-426b8b75185b svadmin-u-671513a87226" />
67
67
  </div>
68
68
  </div>
69
69
  {/if}
@@ -57,16 +57,16 @@
57
57
  );
58
58
  </script>
59
59
 
60
- <div class="space-y-2 {className}">
60
+ <div class="svadmin-u-6f7e013d6499 {className}">
61
61
  <Label for={id}>{label}</Label>
62
- <div class="relative">
63
- <Lock class="absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground pointer-events-none z-[1]" />
62
+ <div class="svadmin-u-d89972fe17d6">
63
+ <Lock class="svadmin-u-da4dbfbc4fdc svadmin-u-22e59b722111 svadmin-u-d694ba66e322 svadmin-u-36b381be4df3 svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3 svadmin-u-bfa603190748 svadmin-u-a4326536b8f5 svadmin-u-536a7530a44f" />
64
64
  <Input
65
65
  {id}
66
66
  type={showPassword ? 'text' : 'password'}
67
67
  {placeholder}
68
68
  bind:value
69
- class="pl-9 pr-9"
69
+ class="svadmin-u-9e83b2412bc9 svadmin-u-1b1df78e4d0a"
70
70
  autocomplete={autocomplete as any}
71
71
  {disabled}
72
72
  />
@@ -75,27 +75,27 @@
75
75
  variant="ghost"
76
76
  size="icon"
77
77
  type="button"
78
- class="absolute right-1 top-1/2 -translate-y-1/2 h-7 w-7 z-[1]"
78
+ class="svadmin-u-da4dbfbc4fdc svadmin-u-68d3fc190004 svadmin-u-d694ba66e322 svadmin-u-36b381be4df3 svadmin-u-d0a52b312f7d svadmin-u-cbbf90f9a828 svadmin-u-536a7530a44f"
79
79
  onclick={(e) => { e.preventDefault(); showPassword = !showPassword; }}
80
80
  {disabled}
81
81
  tabindex={-1}
82
82
  >
83
83
  {#if showPassword}
84
- <EyeOff class="h-4 w-4" />
84
+ <EyeOff class="svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3" />
85
85
  {:else}
86
- <Eye class="h-4 w-4" />
86
+ <Eye class="svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3" />
87
87
  {/if}
88
88
  </TooltipButton>
89
89
  </div>
90
90
  {#if showStrength && value}
91
- <div class="flex items-center gap-2">
92
- <div class="flex-1 h-1.5 rounded-full bg-muted overflow-hidden">
91
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-77a2a20e90d4">
92
+ <div class="svadmin-u-36e579c0b41c svadmin-u-095acb275581 svadmin-u-ac204c108886 svadmin-u-2ef11f1cb219 svadmin-u-2cd02d11d1af">
93
93
  <div
94
- class="h-full rounded-full transition-all duration-300 {strengthColor}"
94
+ class="svadmin-u-668b21aa5409 svadmin-u-ac204c108886 svadmin-u-0fe7d7d814d0 svadmin-u-7890552ecd63 {strengthColor}"
95
95
  style="width: {strength}%"
96
96
  ></div>
97
97
  </div>
98
- <span class="text-xs text-muted-foreground w-12 text-right">{strengthLabel}</span>
98
+ <span class="svadmin-u-359090c2d529 svadmin-u-bfa603190748 svadmin-u-e7e371071bc5 svadmin-u-308fc069e46e">{strengthLabel}</span>
99
99
  </div>
100
100
  {/if}
101
101
  </div>
@@ -105,47 +105,47 @@
105
105
  function getStampVariant(status?: string) {
106
106
  switch (status) {
107
107
  case 'approved':
108
- return 'bg-success/15 text-success border-success/30';
108
+ return 'svadmin-u-4cf5af8d25d3 svadmin-u-76747e5e02ff svadmin-u-18a6e7a36f29';
109
109
  case 'rejected':
110
- return 'bg-destructive/15 text-destructive border-destructive/30';
110
+ return 'svadmin-u-c698f77c9ba5 svadmin-u-811148b13d1e svadmin-u-9d5d8b4711b4';
111
111
  case 'confidential':
112
- return 'bg-warning/15 text-warning border-warning/30';
112
+ return 'svadmin-u-d9c3c520f7d5 svadmin-u-918184635b1d svadmin-u-2f960aa0c478';
113
113
  default:
114
- return 'bg-primary/15 text-primary border-primary/30';
114
+ return 'svadmin-u-30f13f694038 svadmin-u-20aaf08a7ed1 svadmin-u-05f954a846d6';
115
115
  }
116
116
  }
117
117
  </script>
118
118
 
119
119
  <div
120
120
  class={cn(
121
- 'flex flex-col rounded-xl border border-border bg-card shadow-xs text-xs overflow-hidden transition-all',
122
- isFullscreen ? 'fixed inset-4 z-50 shadow-2xl' : 'min-h-[500px]',
121
+ 'svadmin-u-60fbb7713999 svadmin-u-8dddea0773ed svadmin-u-a217b4eaa918 svadmin-u-ca6bcd4b6f3f svadmin-u-18049387f0af svadmin-u-cd0ad9a56558 svadmin-u-cef5b893cf23 svadmin-u-359090c2d529 svadmin-u-2cd02d11d1af svadmin-u-0fe7d7d814d0',
122
+ isFullscreen ? 'svadmin-u-7bc555991dba svadmin-u-dff2e7481197 svadmin-u-181b286668b5 svadmin-u-14e46609fd68' : 'svadmin-u-243d62579c55',
123
123
  className
124
124
  )}
125
125
  >
126
126
  <!-- Toolbar Header -->
127
- <div class="flex flex-wrap items-center justify-between gap-2 p-3 bg-muted/30 border-b border-border/60">
127
+ <div class="svadmin-u-60fbb7713999 svadmin-u-1eb5c6df38c1 svadmin-u-3960ffc248d9 svadmin-u-8ef2268efbbc svadmin-u-77a2a20e90d4 svadmin-u-eb6e8b881acd svadmin-u-2859c861d7de svadmin-u-65fdbade2025 svadmin-u-05faf5c801ff">
128
128
  <!-- File Title -->
129
- <div class="flex items-center gap-2 font-medium text-foreground truncate max-w-64">
130
- <FileText class="h-4 w-4 text-primary shrink-0" />
131
- <span class="truncate">{fileName}</span>
129
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-77a2a20e90d4 svadmin-u-2689f3958069 svadmin-u-d4108abe6359 svadmin-u-f283ea9bea0e svadmin-u-35b2f3aff60f">
130
+ <FileText class="svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3 svadmin-u-20aaf08a7ed1 svadmin-u-012fbd121f37" />
131
+ <span class="svadmin-u-f283ea9bea0e">{fileName}</span>
132
132
  </div>
133
133
 
134
134
  <!-- Paging Controls -->
135
- <div class="flex items-center gap-1.5">
135
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-58284b4ea568">
136
136
  <Button
137
137
  variant="ghost"
138
138
  size="sm"
139
- class="h-7 w-7 p-0"
139
+ class="svadmin-u-d0a52b312f7d svadmin-u-cbbf90f9a828 svadmin-u-8a539c7fe216"
140
140
  disabled={currentPage <= 1}
141
141
  onclick={prevPage}
142
142
  title="Previous Page"
143
143
  >
144
- <ChevronLeft class="h-4 w-4" />
144
+ <ChevronLeft class="svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3" />
145
145
  </Button>
146
146
 
147
- <div class="flex items-center gap-1 font-mono text-[11px] text-muted-foreground px-1">
148
- <span class="font-semibold text-foreground">{currentPage}</span>
147
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-44ee8ba0a421 svadmin-u-0e65706bcccd svadmin-u-d058ca6de60f svadmin-u-bfa603190748 svadmin-u-d8e0e382c67b">
148
+ <span class="svadmin-u-e83a7042bc91 svadmin-u-d4108abe6359">{currentPage}</span>
149
149
  <span>/</span>
150
150
  <span>{totalPages}</span>
151
151
  </div>
@@ -153,87 +153,87 @@
153
153
  <Button
154
154
  variant="ghost"
155
155
  size="sm"
156
- class="h-7 w-7 p-0"
156
+ class="svadmin-u-d0a52b312f7d svadmin-u-cbbf90f9a828 svadmin-u-8a539c7fe216"
157
157
  disabled={currentPage >= totalPages}
158
158
  onclick={nextPage}
159
159
  title="Next Page"
160
160
  >
161
- <ChevronRight class="h-4 w-4" />
161
+ <ChevronRight class="svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3" />
162
162
  </Button>
163
163
  </div>
164
164
 
165
165
  <!-- Zoom & Rotate Actions -->
166
- <div class="flex items-center gap-1">
167
- <Button variant="ghost" size="sm" class="h-7 w-7 p-0" onclick={zoomOut} title="Zoom Out">
168
- <ZoomOut class="h-3.5 w-3.5" />
166
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-44ee8ba0a421">
167
+ <Button variant="ghost" size="sm" class="svadmin-u-d0a52b312f7d svadmin-u-cbbf90f9a828 svadmin-u-8a539c7fe216" onclick={zoomOut} title="Zoom Out">
168
+ <ZoomOut class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c" />
169
169
  </Button>
170
170
 
171
- <span class="font-mono text-[11px] text-muted-foreground w-12 text-center">{zoomLevel}%</span>
171
+ <span class="svadmin-u-0e65706bcccd svadmin-u-d058ca6de60f svadmin-u-bfa603190748 svadmin-u-e7e371071bc5 svadmin-u-ca6bf63030aa">{zoomLevel}%</span>
172
172
 
173
- <Button variant="ghost" size="sm" class="h-7 w-7 p-0" onclick={zoomIn} title="Zoom In">
174
- <ZoomIn class="h-3.5 w-3.5" />
173
+ <Button variant="ghost" size="sm" class="svadmin-u-d0a52b312f7d svadmin-u-cbbf90f9a828 svadmin-u-8a539c7fe216" onclick={zoomIn} title="Zoom In">
174
+ <ZoomIn class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c" />
175
175
  </Button>
176
176
 
177
- <Button variant="ghost" size="sm" class="h-7 w-7 p-0" onclick={rotate} title="Rotate 90°">
178
- <RotateCw class="h-3.5 w-3.5" />
177
+ <Button variant="ghost" size="sm" class="svadmin-u-d0a52b312f7d svadmin-u-cbbf90f9a828 svadmin-u-8a539c7fe216" onclick={rotate} title="Rotate 90°">
178
+ <RotateCw class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c" />
179
179
  </Button>
180
180
 
181
181
  <Button
182
182
  variant="ghost"
183
183
  size="sm"
184
- class="h-7 w-7 p-0"
184
+ class="svadmin-u-d0a52b312f7d svadmin-u-cbbf90f9a828 svadmin-u-8a539c7fe216"
185
185
  onclick={() => { isFullscreen = !isFullscreen; }}
186
186
  title={isFullscreen ? 'Exit Fullscreen' : 'Fullscreen'}
187
187
  >
188
- <Maximize2 class="h-3.5 w-3.5" />
188
+ <Maximize2 class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c" />
189
189
  </Button>
190
190
  </div>
191
191
 
192
192
  <!-- Export & Print -->
193
- <div class="flex items-center gap-1.5">
194
- <Button variant="outline" size="sm" class="h-7 text-xs gap-1" onclick={handlePrint}>
195
- <Printer class="h-3.5 w-3.5" />
193
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-58284b4ea568">
194
+ <Button variant="outline" size="sm" class="svadmin-u-d0a52b312f7d svadmin-u-359090c2d529 svadmin-u-44ee8ba0a421" onclick={handlePrint}>
195
+ <Printer class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c" />
196
196
  Print
197
197
  </Button>
198
198
 
199
- <Button size="sm" class="h-7 text-xs gap-1" onclick={handleDownload}>
200
- <Download class="h-3.5 w-3.5" />
199
+ <Button size="sm" class="svadmin-u-d0a52b312f7d svadmin-u-359090c2d529 svadmin-u-44ee8ba0a421" onclick={handleDownload}>
200
+ <Download class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c" />
201
201
  Download
202
202
  </Button>
203
203
  </div>
204
204
  </div>
205
205
 
206
206
  <!-- Document Viewport -->
207
- <div class="flex-1 overflow-auto bg-muted/40 p-6 flex items-center justify-center min-h-[400px]">
207
+ <div class="svadmin-u-36e579c0b41c svadmin-u-73fc3fb18ceb svadmin-u-b00f43c30c2b svadmin-u-0478c89a150f svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-86843cf1e227 svadmin-u-179c0e54131c">
208
208
  <div
209
- class="relative bg-card rounded-lg shadow-md border border-border/80 transition-transform duration-200 overflow-hidden"
209
+ class="svadmin-u-d89972fe17d6 svadmin-u-cd0ad9a56558 svadmin-u-5f22e64f2282 svadmin-u-febc34e471df svadmin-u-ca6bcd4b6f3f svadmin-u-c9ed8c5f79ae svadmin-u-eadef238231e svadmin-u-625a4c3fbeb2 svadmin-u-2cd02d11d1af"
210
210
  style={`transform: scale(${zoomLevel / 100}) rotate(${rotation}deg); transform-origin: center center; width: 595px; min-height: 842px;`}
211
211
  >
212
212
  {#if fileUrl}
213
213
  <iframe
214
214
  src={fileUrl}
215
215
  title={fileName}
216
- class="w-full h-[842px] border-0"
216
+ class="svadmin-u-6da6a3c3f741 svadmin-u-f24b9e2db7e8 svadmin-u-119b2aa0b8f6"
217
217
  ></iframe>
218
218
  {:else}
219
219
  <!-- Simulated Document Paper -->
220
- <div class="p-12 space-y-6 text-foreground">
221
- <div class="border-b border-border/60 pb-4 flex justify-between items-start">
220
+ <div class="svadmin-u-16a5872ee870 svadmin-u-b3542e058833 svadmin-u-d4108abe6359">
221
+ <div class="svadmin-u-65fdbade2025 svadmin-u-05faf5c801ff svadmin-u-9fcd8a13827e svadmin-u-60fbb7713999 svadmin-u-8ef2268efbbc svadmin-u-60541e1e26f8">
222
222
  <div>
223
- <h2 class="text-base font-bold tracking-tight">{fileName.replace(/\.[^/.]+$/, '')}</h2>
224
- <p class="text-[11px] text-muted-foreground">Document Sheet Reference • Page {currentPage}</p>
223
+ <h2 class="svadmin-u-4ee734926ff6 svadmin-u-69450ef1487e svadmin-u-1d7f28b046ad">{fileName.replace(/\.[^/.]+$/, '')}</h2>
224
+ <p class="svadmin-u-d058ca6de60f svadmin-u-bfa603190748">Document Sheet Reference • Page {currentPage}</p>
225
225
  </div>
226
- <Badge variant="outline" class="font-mono text-[10px]">P.{currentPage}</Badge>
226
+ <Badge variant="outline" class="svadmin-u-0e65706bcccd svadmin-u-1dc571a3609f">P.{currentPage}</Badge>
227
227
  </div>
228
228
 
229
- <div class="space-y-3 text-muted-foreground leading-relaxed text-xs">
229
+ <div class="svadmin-u-6ed543e2fbbb svadmin-u-bfa603190748 svadmin-u-6b189c6edadb svadmin-u-359090c2d529">
230
230
  <p>This is a rendered document preview surface. In production, provide a valid PDF / image URL via the <code>fileUrl</code> prop to stream direct binary pages.</p>
231
231
  <p>The document supports electronic stamps, digital approval watermarks, interactive zooming, rotation and multi-page flipping.</p>
232
232
  </div>
233
233
 
234
- <div class="my-8 p-4 rounded-lg bg-muted/30 border border-border/60 space-y-2">
235
- <div class="font-semibold text-foreground">Terms & Conditions of Execution</div>
236
- <div class="text-[11px] text-muted-foreground">All parties acknowledge the contractual stipulations herein outlined and agreed upon via authenticated electronic signatures.</div>
234
+ <div class="svadmin-u-adfb03d826b8 svadmin-u-8e63407b5ceb svadmin-u-5f22e64f2282 svadmin-u-2859c861d7de svadmin-u-ca6bcd4b6f3f svadmin-u-05faf5c801ff svadmin-u-6f7e013d6499">
235
+ <div class="svadmin-u-e83a7042bc91 svadmin-u-d4108abe6359">Terms & Conditions of Execution</div>
236
+ <div class="svadmin-u-d058ca6de60f svadmin-u-bfa603190748">All parties acknowledge the contractual stipulations herein outlined and agreed upon via authenticated electronic signatures.</div>
237
237
  </div>
238
238
  </div>
239
239
  {/if}
@@ -242,7 +242,7 @@
242
242
  {#each pageStamps as stamp (stamp.id)}
243
243
  <div
244
244
  class={cn(
245
- 'absolute z-20 px-3 py-1.5 rounded-md border-2 font-bold text-xs uppercase tracking-wider shadow-sm rotate-[-12deg] pointer-events-none select-none',
245
+ 'svadmin-u-da4dbfbc4fdc svadmin-u-145745bf5286 svadmin-u-0e17f2bd9074 svadmin-u-ec0091ee009b svadmin-u-421ac2be5045 svadmin-u-65935df577ba svadmin-u-69450ef1487e svadmin-u-359090c2d529 uppercase svadmin-u-09ace3a4d9f5 svadmin-u-438b2237b8d6 svadmin-u-2c69d147b501 svadmin-u-a4326536b8f5 svadmin-u-7f6912283f11',
246
246
  getStampVariant(stamp.status)
247
247
  )}
248
248
  style={`left: ${stamp.x}%; top: ${stamp.y}%;`}