@svadmin/ui 0.68.1 → 0.69.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (315) hide show
  1. package/README.md +52 -0
  2. package/dist/app.css +7627 -853
  3. package/dist/app.theme.css +7676 -850
  4. package/dist/components/AboutSettings.svelte +8 -8
  5. package/dist/components/ActivityFeed.svelte +25 -40
  6. package/dist/components/AdminApp.svelte +14 -14
  7. package/dist/components/AnomalyBadge.svelte +6 -5
  8. package/dist/components/ApiSettings.svelte +8 -8
  9. package/dist/components/AppearanceSettings.svelte +13 -13
  10. package/dist/components/ApprovalActionCard.svelte +35 -35
  11. package/dist/components/AuditLogDrawer.svelte +17 -17
  12. package/dist/components/AuditLogViewer.svelte +42 -42
  13. package/dist/components/AuthPageShell.svelte +11 -11
  14. package/dist/components/AutoForm.svelte +28 -28
  15. package/dist/components/AutoSaveIndicator.svelte +8 -8
  16. package/dist/components/AutoTable.svelte +141 -141
  17. package/dist/components/BatchActionBar.svelte +15 -15
  18. package/dist/components/Breadcrumbs.svelte +4 -4
  19. package/dist/components/CancelTaskButton.svelte +2 -2
  20. package/dist/components/CanvasAnnotation.svelte +27 -27
  21. package/dist/components/Cascader.svelte +20 -20
  22. package/dist/components/CatchAllNavigate.svelte +2 -2
  23. package/dist/components/ColumnHeaderFilter.svelte +21 -21
  24. package/dist/components/ColumnSettings.svelte +20 -20
  25. package/dist/components/ComboboxField.svelte +17 -17
  26. package/dist/components/CommandPalette.svelte +23 -23
  27. package/dist/components/ConfigErrorScreen.svelte +27 -27
  28. package/dist/components/ConfirmDialog.svelte +1 -1
  29. package/dist/components/CreateInferencer.svelte +1 -1
  30. package/dist/components/CreatePage.svelte +1 -1
  31. package/dist/components/DecisionTable.svelte +39 -39
  32. package/dist/components/DetailDrawer.svelte +9 -9
  33. package/dist/components/DevTools.svelte +96 -96
  34. package/dist/components/DraggableGrid.svelte +6 -6
  35. package/dist/components/DraggableHeader.svelte +1 -1
  36. package/dist/components/DraggableRowTable.svelte +13 -13
  37. package/dist/components/DrawerForm.svelte +10 -10
  38. package/dist/components/DynamicFormList.svelte +19 -19
  39. package/dist/components/EditInferencer.svelte +3 -3
  40. package/dist/components/EditInferencer.svelte.d.ts +1 -1
  41. package/dist/components/EditPage.svelte +1 -1
  42. package/dist/components/EditableTable.svelte +30 -30
  43. package/dist/components/EmptyState.svelte +6 -6
  44. package/dist/components/ErrorBoundary.svelte +8 -8
  45. package/dist/components/ErrorComponent.svelte +5 -5
  46. package/dist/components/FieldRenderer.svelte +30 -30
  47. package/dist/components/FilterBuilder.svelte +31 -31
  48. package/dist/components/FilterDropdown.svelte +26 -26
  49. package/dist/components/ForgotPasswordPage.svelte +14 -14
  50. package/dist/components/GanttChart.svelte +30 -30
  51. package/dist/components/Header.svelte +13 -13
  52. package/dist/components/ImageCropper.svelte +21 -21
  53. package/dist/components/ImportWizard.svelte +49 -49
  54. package/dist/components/InferencerPanel.svelte +35 -35
  55. package/dist/components/InfiniteList.svelte +8 -8
  56. package/dist/components/InlineEdit.svelte +5 -5
  57. package/dist/components/IntegrationsSettings.svelte +5 -5
  58. package/dist/components/JsonSchemaForm.svelte +18 -18
  59. package/dist/components/KanbanBoard.svelte +30 -30
  60. package/dist/components/KeyboardShortcuts.svelte +8 -8
  61. package/dist/components/Layout.svelte +22 -22
  62. package/dist/components/LazyPage.svelte +4 -4
  63. package/dist/components/ListInferencer.svelte +2 -2
  64. package/dist/components/ListPage.svelte +1 -1
  65. package/dist/components/LiveIndicator.svelte +11 -11
  66. package/dist/components/LoginPage.svelte +27 -27
  67. package/dist/components/MasterDetailView.svelte +24 -24
  68. package/dist/components/MediaLibraryModal.svelte +37 -37
  69. package/dist/components/MentionsInput.svelte +11 -11
  70. package/dist/components/MetricStrip.svelte +18 -58
  71. package/dist/components/ModalForm.svelte +8 -8
  72. package/dist/components/MultiTabKeepAlive.svelte +14 -14
  73. package/dist/components/NavigateToResource.svelte +3 -3
  74. package/dist/components/NotificationsSettings.svelte +4 -4
  75. package/dist/components/OfflineSyncBanner.svelte +28 -28
  76. package/dist/components/PageHeader.svelte +12 -13
  77. package/dist/components/PageSkeleton.svelte +26 -26
  78. package/dist/components/PasswordInput.svelte +11 -11
  79. package/dist/components/PdfDocumentViewer.svelte +45 -45
  80. package/dist/components/PermissionMatrix.svelte +48 -48
  81. package/dist/components/PivotTable.svelte +21 -21
  82. package/dist/components/PresenceAvatarGroup.svelte +11 -11
  83. package/dist/components/PrintableBill.svelte +43 -43
  84. package/dist/components/ProfilePage.svelte +34 -34
  85. package/dist/components/RecordDetailDrawer.svelte +15 -15
  86. package/dist/components/RegisterPage.svelte +9 -9
  87. package/dist/components/ResourceInferencer.svelte +3 -3
  88. package/dist/components/ResourceOperationsPage.svelte +44 -44
  89. package/dist/components/RetryTaskButton.svelte +2 -2
  90. package/dist/components/RolesSettings.svelte +4 -4
  91. package/dist/components/RowActions.svelte +10 -10
  92. package/dist/components/SecuritySettings.svelte +8 -8
  93. package/dist/components/SensitiveDataMask.svelte +8 -8
  94. package/dist/components/SettingsPage.svelte +17 -17
  95. package/dist/components/ShowInferencer.svelte +3 -3
  96. package/dist/components/ShowInferencer.svelte.d.ts +1 -1
  97. package/dist/components/ShowPage.svelte +24 -24
  98. package/dist/components/Sidebar.svelte +63 -63
  99. package/dist/components/SidebarItem.svelte +35 -35
  100. package/dist/components/SignaturePad.svelte +16 -16
  101. package/dist/components/SplitPaneLayout.svelte +10 -10
  102. package/dist/components/SpreadsheetView.svelte +35 -35
  103. package/dist/components/StatsCard.svelte +12 -25
  104. package/dist/components/StepForm.svelte +23 -23
  105. package/dist/components/StepsForm.svelte +17 -17
  106. package/dist/components/SvadminLogo.svelte +1 -1
  107. package/dist/components/SystemPageShell.svelte +6 -6
  108. package/dist/components/TableSummary.svelte +8 -8
  109. package/dist/components/TaskDetails.svelte +29 -29
  110. package/dist/components/TaskList.svelte +17 -17
  111. package/dist/components/TaskProgressBar.svelte +4 -4
  112. package/dist/components/TaskQueueDrawer.svelte +44 -44
  113. package/dist/components/TaskStatusBadge.svelte +5 -5
  114. package/dist/components/TenantSwitcher.svelte +17 -17
  115. package/dist/components/ThemedTitle.svelte +4 -4
  116. package/dist/components/Toast.svelte +2 -2
  117. package/dist/components/Transfer.svelte +40 -40
  118. package/dist/components/TreeSelect.svelte +32 -32
  119. package/dist/components/TreeTable.svelte +28 -28
  120. package/dist/components/TwoFactorAuthPage.svelte +15 -15
  121. package/dist/components/UndoableNotification.svelte +10 -10
  122. package/dist/components/UpdatePasswordPage.svelte +6 -6
  123. package/dist/components/VersionDiffViewer.svelte +38 -38
  124. package/dist/components/VirtualTable.svelte +9 -9
  125. package/dist/components/Watermark.svelte +2 -2
  126. package/dist/components/account/CompanyProfilePage.svelte +4 -4
  127. package/dist/components/account/GetStartedPage.svelte +19 -19
  128. package/dist/components/account/ImportMembersPage.svelte +42 -42
  129. package/dist/components/account/MembersStarterPage.svelte +18 -18
  130. package/dist/components/account/SecurityLogPage.svelte +1 -1
  131. package/dist/components/account/SettingsEnterprisePage.svelte +7 -7
  132. package/dist/components/account/SettingsPlainPage.svelte +3 -3
  133. package/dist/components/account/SettingsSidebarPage.svelte +5 -5
  134. package/dist/components/account/TeamMembersPage.svelte +2 -2
  135. package/dist/components/account/UserProfilePage.svelte +3 -3
  136. package/dist/components/buttons/CloneButton.svelte +2 -2
  137. package/dist/components/buttons/CreateButton.svelte +2 -2
  138. package/dist/components/buttons/DeleteButton.svelte +4 -4
  139. package/dist/components/buttons/EditButton.svelte +2 -2
  140. package/dist/components/buttons/ExportButton.svelte +2 -2
  141. package/dist/components/buttons/ImportButton.svelte +3 -3
  142. package/dist/components/buttons/ListButton.svelte +2 -2
  143. package/dist/components/buttons/RefreshButton.svelte +2 -2
  144. package/dist/components/buttons/SaveButton.svelte +3 -3
  145. package/dist/components/buttons/ShowButton.svelte +2 -2
  146. package/dist/components/charts/BarChart.svelte +3 -3
  147. package/dist/components/charts/LineChart.svelte +3 -3
  148. package/dist/components/charts/PieChart.svelte +7 -7
  149. package/dist/components/content/ApiKeyList.svelte +12 -12
  150. package/dist/components/content/AuditTimeline.svelte +18 -18
  151. package/dist/components/content/ContentPageHeader.svelte +9 -9
  152. package/dist/components/content/ContentPageShell.svelte +2 -2
  153. package/dist/components/content/DataState.svelte +8 -8
  154. package/dist/components/content/DescriptionList.svelte +25 -25
  155. package/dist/components/content/FeedbackNotice.svelte +11 -11
  156. package/dist/components/content/FileList.svelte +2 -2
  157. package/dist/components/content/FilterToolbar.svelte +15 -15
  158. package/dist/components/content/ImportDropzone.svelte +6 -6
  159. package/dist/components/content/IntegrationCard.svelte +4 -4
  160. package/dist/components/content/MediaThumbnail.svelte +16 -16
  161. package/dist/components/content/MemberList.svelte +2 -2
  162. package/dist/components/content/MetricBlock.svelte +7 -7
  163. package/dist/components/content/NetworkTable.svelte +1 -1
  164. package/dist/components/content/NetworkUserCard.svelte +12 -12
  165. package/dist/components/content/OtpInput.svelte +2 -2
  166. package/dist/components/content/PageToolbar.svelte +3 -3
  167. package/dist/components/content/ProjectCard.svelte +11 -11
  168. package/dist/components/content/SectionHeader.svelte +5 -5
  169. package/dist/components/content/SecurityEventTable.svelte +2 -2
  170. package/dist/components/content/SettingsFieldRow.svelte +5 -5
  171. package/dist/components/content/SettingsGroup.svelte +7 -7
  172. package/dist/components/content/StatusBadge.svelte +6 -6
  173. package/dist/components/content/StatusTabs.svelte +28 -28
  174. package/dist/components/content/SystemErrorState.svelte +2 -2
  175. package/dist/components/content/TeamCard.svelte +6 -6
  176. package/dist/components/content/TwoFactorStepper.svelte +3 -3
  177. package/dist/components/content/WorkspaceActionBar.svelte +12 -12
  178. package/dist/components/content/WorkspaceInspector.svelte +11 -11
  179. package/dist/components/content/WorkspaceLayout.svelte +5 -5
  180. package/dist/components/content/WorkspaceSplitPane.svelte +4 -4
  181. package/dist/components/content/WorkspaceStageStepper.svelte +16 -16
  182. package/dist/components/content/WorkspaceTabBar.svelte +16 -16
  183. package/dist/components/fields/ArrayField.svelte +12 -12
  184. package/dist/components/fields/AvatarField.svelte +15 -15
  185. package/dist/components/fields/BooleanField.svelte +14 -14
  186. package/dist/components/fields/CodeField.svelte +10 -10
  187. package/dist/components/fields/CopyField.svelte +6 -6
  188. package/dist/components/fields/CurrencyField.svelte +6 -6
  189. package/dist/components/fields/DateField.svelte +1 -1
  190. package/dist/components/fields/DateRangeField.svelte +2 -2
  191. package/dist/components/fields/EmailField.svelte +2 -2
  192. package/dist/components/fields/FileField.svelte +3 -3
  193. package/dist/components/fields/ImageField.svelte +1 -1
  194. package/dist/components/fields/JsonField.svelte +11 -11
  195. package/dist/components/fields/MarkdownField.svelte +2 -2
  196. package/dist/components/fields/MultiSelectField.svelte +3 -3
  197. package/dist/components/fields/NumberField.svelte +1 -1
  198. package/dist/components/fields/PercentField.svelte +9 -9
  199. package/dist/components/fields/PhoneField.svelte +8 -8
  200. package/dist/components/fields/RatingField.svelte +10 -10
  201. package/dist/components/fields/RelationField.svelte +3 -3
  202. package/dist/components/fields/RichTextField.svelte +4 -4
  203. package/dist/components/fields/TagField.svelte +11 -11
  204. package/dist/components/fields/TextField.svelte +2 -2
  205. package/dist/components/fields/UrlField.svelte +3 -3
  206. package/dist/components/network/TeamCrewTablePage.svelte +2 -2
  207. package/dist/components/network/UserCardsNFTPage.svelte +1 -1
  208. package/dist/components/profile/ActivityTimeline.svelte +8 -8
  209. package/dist/components/profile/ProfileCard.svelte +47 -47
  210. package/dist/components/profile/ProfileVariantSections.svelte +158 -158
  211. package/dist/components/profile/ProjectsGrid.svelte +6 -6
  212. package/dist/components/profile/PublicProfilePage.svelte +6 -6
  213. package/dist/components/profile/TeamsShowcase.svelte +3 -3
  214. package/dist/components/ui/alert/alert-description.svelte +1 -1
  215. package/dist/components/ui/alert/alert-title.svelte +1 -1
  216. package/dist/components/ui/alert/alert-variants.d.ts +7 -0
  217. package/dist/components/ui/alert/alert-variants.js +2 -0
  218. package/dist/components/ui/alert/alert.svelte +4 -15
  219. package/dist/components/ui/alert/alert.svelte.d.ts +7 -24
  220. package/dist/components/ui/alert-dialog/alert-dialog-content.svelte +2 -2
  221. package/dist/components/ui/alert-dialog/alert-dialog-description.svelte +1 -1
  222. package/dist/components/ui/alert-dialog/alert-dialog-footer.svelte +1 -1
  223. package/dist/components/ui/alert-dialog/alert-dialog-header.svelte +1 -1
  224. package/dist/components/ui/alert-dialog/alert-dialog-overlay.svelte +1 -1
  225. package/dist/components/ui/alert-dialog/alert-dialog-title.svelte +1 -1
  226. package/dist/components/ui/avatar/avatar-variants.d.ts +7 -0
  227. package/dist/components/ui/avatar/avatar-variants.js +2 -0
  228. package/dist/components/ui/avatar/avatar.svelte +11 -20
  229. package/dist/components/ui/avatar/avatar.svelte.d.ts +12 -28
  230. package/dist/components/ui/badge/badge-variants.d.ts +7 -0
  231. package/dist/components/ui/badge/badge-variants.js +2 -0
  232. package/dist/components/ui/badge/badge.svelte +4 -24
  233. package/dist/components/ui/badge/badge.svelte.d.ts +7 -45
  234. package/dist/components/ui/breadcrumb/breadcrumb-ellipsis.svelte +3 -3
  235. package/dist/components/ui/breadcrumb/breadcrumb-item.svelte +1 -1
  236. package/dist/components/ui/breadcrumb/breadcrumb-link.svelte +1 -1
  237. package/dist/components/ui/breadcrumb/breadcrumb-list.svelte +1 -1
  238. package/dist/components/ui/breadcrumb/breadcrumb-page.svelte +1 -1
  239. package/dist/components/ui/breadcrumb/breadcrumb-separator.svelte +2 -2
  240. package/dist/components/ui/button/button-variants.d.ts +9 -0
  241. package/dist/components/ui/button/button-variants.js +3 -0
  242. package/dist/components/ui/button/button.svelte +12 -31
  243. package/dist/components/ui/button/button.svelte.d.ts +9 -61
  244. package/dist/components/ui/card/card-action.svelte +1 -4
  245. package/dist/components/ui/card/card-content.svelte +1 -1
  246. package/dist/components/ui/card/card-description.svelte +1 -1
  247. package/dist/components/ui/card/card-footer.svelte +1 -1
  248. package/dist/components/ui/card/card-header.svelte +1 -4
  249. package/dist/components/ui/card/card-title.svelte +1 -1
  250. package/dist/components/ui/card/card.svelte +1 -1
  251. package/dist/components/ui/checkbox/checkbox.svelte +2 -5
  252. package/dist/components/ui/command/command-dialog.svelte +3 -3
  253. package/dist/components/ui/command/command-empty.svelte +1 -1
  254. package/dist/components/ui/command/command-group.svelte +2 -2
  255. package/dist/components/ui/command/command-input.svelte +1 -4
  256. package/dist/components/ui/command/command-item.svelte +1 -4
  257. package/dist/components/ui/command/command-list.svelte +1 -1
  258. package/dist/components/ui/command/command-separator.svelte +1 -1
  259. package/dist/components/ui/command/command.svelte +1 -4
  260. package/dist/components/ui/dialog/dialog-content.svelte +3 -3
  261. package/dist/components/ui/dialog/dialog-description.svelte +1 -1
  262. package/dist/components/ui/dialog/dialog-footer.svelte +1 -1
  263. package/dist/components/ui/dialog/dialog-header.svelte +1 -1
  264. package/dist/components/ui/dialog/dialog-overlay.svelte +1 -1
  265. package/dist/components/ui/dialog/dialog-title.svelte +1 -1
  266. package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte +2 -5
  267. package/dist/components/ui/dropdown-menu/dropdown-menu-content.svelte +1 -6
  268. package/dist/components/ui/dropdown-menu/dropdown-menu-item.svelte +3 -9
  269. package/dist/components/ui/dropdown-menu/dropdown-menu-separator.svelte +1 -1
  270. package/dist/components/ui/dropdown-menu/dropdown-menu.svelte +1 -1
  271. package/dist/components/ui/input/input.svelte +3 -2
  272. package/dist/components/ui/label/label.svelte +1 -4
  273. package/dist/components/ui/navigation-menu/navigation-menu-content.svelte +1 -5
  274. package/dist/components/ui/navigation-menu/navigation-menu-indicator.svelte +2 -5
  275. package/dist/components/ui/navigation-menu/navigation-menu-item.svelte +1 -1
  276. package/dist/components/ui/navigation-menu/navigation-menu-link.svelte +1 -4
  277. package/dist/components/ui/navigation-menu/navigation-menu-list.svelte +1 -1
  278. package/dist/components/ui/navigation-menu/navigation-menu-trigger.svelte +2 -5
  279. package/dist/components/ui/navigation-menu/navigation-menu-viewport.svelte +2 -5
  280. package/dist/components/ui/navigation-menu/navigation-menu.svelte +1 -1
  281. package/dist/components/ui/pagination/pagination-content.svelte +1 -1
  282. package/dist/components/ui/pagination/pagination-ellipsis.svelte +3 -3
  283. package/dist/components/ui/pagination/pagination-link.svelte +3 -0
  284. package/dist/components/ui/pagination/pagination-next.svelte +5 -2
  285. package/dist/components/ui/pagination/pagination-previous.svelte +5 -2
  286. package/dist/components/ui/pagination/pagination.svelte +1 -1
  287. package/dist/components/ui/popover/popover-content.svelte +1 -4
  288. package/dist/components/ui/progress/progress.svelte +2 -2
  289. package/dist/components/ui/scroll-area/scroll-area.svelte +3 -4
  290. package/dist/components/ui/select/select.svelte +1 -2
  291. package/dist/components/ui/separator/separator.svelte +1 -6
  292. package/dist/components/ui/sheet/sheet-content.svelte +1 -4
  293. package/dist/components/ui/sheet/sheet-description.svelte +1 -1
  294. package/dist/components/ui/sheet/sheet-footer.svelte +1 -1
  295. package/dist/components/ui/sheet/sheet-header.svelte +1 -1
  296. package/dist/components/ui/sheet/sheet-title.svelte +1 -1
  297. package/dist/components/ui/sheet/sheet.svelte +5 -10
  298. package/dist/components/ui/skeleton/skeleton.svelte +1 -1
  299. package/dist/components/ui/switch/switch.svelte +2 -9
  300. package/dist/components/ui/table/table-caption.svelte +1 -1
  301. package/dist/components/ui/table/table-cell.svelte +8 -11
  302. package/dist/components/ui/table/table-footer.svelte +1 -1
  303. package/dist/components/ui/table/table-head.svelte +1 -11
  304. package/dist/components/ui/table/table-header.svelte +1 -1
  305. package/dist/components/ui/table/table-row.svelte +2 -2
  306. package/dist/components/ui/table/table-row.svelte.d.ts +1 -1
  307. package/dist/components/ui/table/table.svelte +2 -2
  308. package/dist/components/ui/tabs/tabs-content.svelte +1 -1
  309. package/dist/components/ui/tabs/tabs-list.svelte +1 -4
  310. package/dist/components/ui/tabs/tabs-trigger.svelte +1 -7
  311. package/dist/components/ui/tabs/tabs.svelte +1 -1
  312. package/dist/components/ui/textarea/textarea.svelte +1 -4
  313. package/dist/components/ui/tooltip/tooltip-content.svelte +1 -1
  314. package/dist/page-chrome.css +228 -0
  315. package/package.json +12 -7
@@ -7,8 +7,8 @@
7
7
  onOrderSave,
8
8
  renderItem,
9
9
  class: className = '',
10
- columns = 'grid-cols-1 md:grid-cols-2 lg:grid-cols-3',
11
- gap = 'gap-4',
10
+ columns = 'svadmin-u-d7c8339810d3 svadmin-u-e4d6f343b9ff svadmin-u-19d9b25e8fae',
11
+ gap = 'svadmin-u-0c3bc98565dd',
12
12
  }: {
13
13
  modules?: GridModule[];
14
14
  onOrderSave?: (orderedIds: string[]) => void;
@@ -66,7 +66,7 @@
66
66
  }
67
67
  </script>
68
68
 
69
- <div class="grid {columns} {gap} {className}">
69
+ <div class="svadmin-u-f3c543ad5fe9 {columns} {gap} {className}">
70
70
  {#each modules as mod, i (mod.id)}
71
71
  <!-- svelte-ignore a11y_no_static_element_interactions -->
72
72
  <div
@@ -76,9 +76,9 @@
76
76
  ondrop={(e) => handleDrop(e, mod.id)}
77
77
  ondragend={handleDragEnd}
78
78
  ondragleave={() => { if (dragOverId === mod.id) dragOverId = null; }}
79
- class="transition-all duration-200
80
- {draggingId === mod.id ? 'opacity-40 scale-[0.97] cursor-grabbing' : 'cursor-grab'}
81
- {dragOverId === mod.id ? 'ring-2 ring-primary/40 ring-offset-2 ring-offset-background rounded-lg scale-[1.02]' : ''}"
79
+ class="svadmin-u-0fe7d7d814d0 svadmin-u-625a4c3fbeb2
80
+ {draggingId === mod.id ? 'svadmin-u-2a2db4667b27 svadmin-u-ad36c0242ee8 svadmin-u-a50d3377f4ac' : 'svadmin-u-8d08385288a6'}
81
+ {dragOverId === mod.id ? 'svadmin-u-16b1efa5875e svadmin-u-2691847b25ed svadmin-u-0c15f6cff5a0 svadmin-u-582e6ef4b245 svadmin-u-5f22e64f2282 svadmin-u-1fdf1b136104' : ''}"
82
82
  >
83
83
  {@render renderItem({ module: mod, index: i, dragging: draggingId === mod.id })}
84
84
  </div>
@@ -78,7 +78,7 @@
78
78
  }
79
79
  </script>
80
80
 
81
- <tr class="hover:bg-muted/50 data-[state=selected]:bg-muted transition-colors bg-muted/50">
81
+ <tr class="svadmin-u-39f703dbe296 svadmin-u-024b686f65d9 svadmin-u-ceb69a6b0e5f svadmin-u-358af0b65a31">
82
82
  {#each columns as column, index (index)}
83
83
  {@render header(column, index, {
84
84
  draggable: true,
@@ -66,19 +66,19 @@
66
66
  }
67
67
  </script>
68
68
 
69
- <div class={cn('w-full rounded-xl border border-border bg-card shadow-xs overflow-hidden text-xs', className)}>
70
- <table class="w-full text-left border-collapse">
71
- <thead class="bg-muted/40 font-semibold text-muted-foreground border-b border-border/60 select-none">
69
+ <div class={cn('svadmin-u-6da6a3c3f741 svadmin-u-a217b4eaa918 svadmin-u-ca6bcd4b6f3f svadmin-u-18049387f0af svadmin-u-cd0ad9a56558 svadmin-u-cef5b893cf23 svadmin-u-2cd02d11d1af svadmin-u-359090c2d529', className)}>
70
+ <table class="svadmin-u-6da6a3c3f741 svadmin-u-2eba0d65d059 svadmin-u-4583f90cd9bd">
71
+ <thead class="svadmin-u-b00f43c30c2b svadmin-u-e83a7042bc91 svadmin-u-bfa603190748 svadmin-u-65fdbade2025 svadmin-u-05faf5c801ff svadmin-u-7f6912283f11">
72
72
  <tr>
73
- <th class="w-10 px-2 py-2.5 text-center">#</th>
73
+ <th class="svadmin-u-d854e5698b57 svadmin-u-d5eab218aa34 svadmin-u-e7ee55ac7ffe svadmin-u-ca6bf63030aa">#</th>
74
74
  {#each columns as col (col.key)}
75
- <th style={col.width ? `width: ${col.width};` : ''} class="px-4 py-2.5">
75
+ <th style={col.width ? `width: ${col.width};` : ''} class="svadmin-u-f0faeb26d656 svadmin-u-e7ee55ac7ffe">
76
76
  {col.label}
77
77
  </th>
78
78
  {/each}
79
79
  </tr>
80
80
  </thead>
81
- <tbody class="divide-y divide-border/40">
81
+ <tbody class="svadmin-u-fa6acbf81d74 svadmin-u-08b5607c7258">
82
82
  {#each items as item, index (item[rowKey] ?? index)}
83
83
  {@const isDragging = draggedIndex === index}
84
84
  {@const isOver = overIndex === index}
@@ -89,16 +89,16 @@
89
89
  ondrop={(e) => handleDrop(index, e)}
90
90
  ondragend={handleDragEnd}
91
91
  class={cn(
92
- 'transition-colors cursor-move select-none',
93
- isDragging ? 'opacity-30 bg-muted/50' : 'hover:bg-muted/20',
94
- isOver ? 'border-t-2 border-primary bg-primary/5' : ''
92
+ 'svadmin-u-ceb69a6b0e5f svadmin-u-ae724a8c3dec svadmin-u-7f6912283f11',
93
+ isDragging ? 'svadmin-u-78e6d0ebb9a4 svadmin-u-358af0b65a31' : 'svadmin-u-c4b5eaba40e3',
94
+ isOver ? 'svadmin-u-bee68af349c9 svadmin-u-6cbc84dd9e1a svadmin-u-989c466fdbe7' : ''
95
95
  )}
96
96
  >
97
- <td class="px-2 py-2.5 text-center text-muted-foreground/60 hover:text-foreground">
98
- <GripVertical class="h-4 w-4 mx-auto" />
97
+ <td class="svadmin-u-d5eab218aa34 svadmin-u-e7ee55ac7ffe svadmin-u-ca6bf63030aa svadmin-u-7be4d67a6256 svadmin-u-ea7b2e9e070e">
98
+ <GripVertical class="svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3 svadmin-u-0e12dc7de920" />
99
99
  </td>
100
100
  {#each columns as col (col.key)}
101
- <td class="px-4 py-2.5 font-medium text-foreground">
101
+ <td class="svadmin-u-f0faeb26d656 svadmin-u-e7ee55ac7ffe svadmin-u-2689f3958069 svadmin-u-d4108abe6359">
102
102
  {item[col.key] ?? '—'}
103
103
  </td>
104
104
  {/each}
@@ -107,7 +107,7 @@
107
107
 
108
108
  {#if items.length === 0}
109
109
  <tr>
110
- <td colspan={columns.length + 1} class="py-8 text-center text-muted-foreground">
110
+ <td colspan={columns.length + 1} class="svadmin-u-a1f611f027dd svadmin-u-ca6bf63030aa svadmin-u-bfa603190748">
111
111
  No items to display
112
112
  </td>
113
113
  </tr>
@@ -35,7 +35,7 @@
35
35
  submitText = 'Save',
36
36
  cancelText = 'Cancel',
37
37
  side = 'right',
38
- widthClass = 'sm:max-w-md w-full',
38
+ widthClass = 'svadmin-u-c0bedbbc0c34 svadmin-u-6da6a3c3f741',
39
39
  isSubmitting = false,
40
40
  disabled = false,
41
41
  onsubmit,
@@ -67,7 +67,7 @@
67
67
  {#if triggerSnippet}
68
68
  <button
69
69
  type="button"
70
- class="inline-flex cursor-pointer bg-transparent border-0 p-0 text-left"
70
+ class="svadmin-u-52083e7da442 svadmin-u-34516836730d svadmin-u-7f19cdf4c5bb svadmin-u-119b2aa0b8f6 svadmin-u-8a539c7fe216 svadmin-u-2eba0d65d059"
71
71
  onclick={() => { open = true; }}
72
72
  {disabled}
73
73
  >
@@ -79,23 +79,23 @@
79
79
  </Button>
80
80
  {/if}
81
81
 
82
- <Sheet.Root bind:open {side} onClose={handleCancel} class={cn(widthClass, 'p-0 overflow-hidden', className)}>
83
- <Sheet.Content class="flex flex-col h-full gap-0 p-0">
84
- <form onsubmit={handleSubmit} class="flex flex-col h-full">
85
- <Sheet.Header class="px-6 py-4 border-b border-border/60">
82
+ <Sheet.Root bind:open {side} onClose={handleCancel} class={cn(widthClass, 'svadmin-u-8a539c7fe216 svadmin-u-2cd02d11d1af', className)}>
83
+ <Sheet.Content class="svadmin-u-60fbb7713999 svadmin-u-8dddea0773ed svadmin-u-668b21aa5409 svadmin-u-63a285be6490 svadmin-u-8a539c7fe216">
84
+ <form onsubmit={handleSubmit} class="svadmin-u-60fbb7713999 svadmin-u-8dddea0773ed svadmin-u-668b21aa5409">
85
+ <Sheet.Header class="svadmin-u-f92d02360b8f svadmin-u-cb11fec3bb46 svadmin-u-65fdbade2025 svadmin-u-05faf5c801ff">
86
86
  <Sheet.Title>{title}</Sheet.Title>
87
87
  {#if description}
88
88
  <Sheet.Description>{description}</Sheet.Description>
89
89
  {/if}
90
90
  </Sheet.Header>
91
91
 
92
- <div class="flex-1 overflow-y-auto p-6 text-sm text-foreground space-y-4">
92
+ <div class="svadmin-u-36e579c0b41c svadmin-u-92bf82f493b1 svadmin-u-0478c89a150f svadmin-u-fc7473ca09eb svadmin-u-d4108abe6359 svadmin-u-3e7ce58d64fa">
93
93
  {#if children}
94
94
  {@render children()}
95
95
  {/if}
96
96
  </div>
97
97
 
98
- <Sheet.Footer class="gap-2 px-6 py-4 border-t border-border/60 mt-auto">
98
+ <Sheet.Footer class="svadmin-u-77a2a20e90d4 svadmin-u-f92d02360b8f svadmin-u-cb11fec3bb46 svadmin-u-b950dda299d3 svadmin-u-05faf5c801ff svadmin-u-9953408a8ef3">
99
99
  <Button
100
100
  type="button"
101
101
  variant="outline"
@@ -109,10 +109,10 @@
109
109
  type="submit"
110
110
  size="sm"
111
111
  disabled={loading || isSubmitting || disabled}
112
- class="gap-1.5 min-w-20"
112
+ class="svadmin-u-58284b4ea568 svadmin-u-2e7a6d18a20d"
113
113
  >
114
114
  {#if loading || isSubmitting}
115
- <Loader2 class="h-4 w-4 animate-spin" />
115
+ <Loader2 class="svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3 svadmin-u-afbdd13a380e" />
116
116
  {/if}
117
117
  {submitText}
118
118
  </Button>
@@ -101,15 +101,15 @@
101
101
  }
102
102
  </script>
103
103
 
104
- <div class="w-full space-y-3" data-testid="dynamic-form-list">
104
+ <div class="svadmin-u-6da6a3c3f741 svadmin-u-6ed543e2fbbb" data-testid="dynamic-form-list">
105
105
  {#if label || description || headerExtra}
106
- <div class="flex items-center justify-between gap-2">
106
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-8ef2268efbbc svadmin-u-77a2a20e90d4">
107
107
  <div>
108
108
  {#if label}
109
- <div class="text-sm font-medium text-foreground">{label}</div>
109
+ <div class="svadmin-u-fc7473ca09eb svadmin-u-2689f3958069 svadmin-u-d4108abe6359">{label}</div>
110
110
  {/if}
111
111
  {#if description}
112
- <div class="text-xs text-muted-foreground">{description}</div>
112
+ <div class="svadmin-u-359090c2d529 svadmin-u-bfa603190748">{description}</div>
113
113
  {/if}
114
114
  </div>
115
115
  {#if headerExtra}
@@ -118,17 +118,17 @@
118
118
  </div>
119
119
  {/if}
120
120
 
121
- <div class="space-y-2">
121
+ <div class="svadmin-u-6f7e013d6499">
122
122
  {#each items as item, index (index)}
123
123
  {@const isFirst = index === 0}
124
124
  {@const isLast = index === items.length - 1}
125
- <div class="group relative rounded-lg border border-border/70 bg-card p-3 shadow-xs transition-colors hover:border-border">
126
- <div class="flex items-start gap-3">
127
- <div class="flex h-6 w-6 shrink-0 items-center justify-center rounded-full bg-muted text-[11px] font-medium text-muted-foreground">
125
+ <div class="group svadmin-u-d89972fe17d6 svadmin-u-5f22e64f2282 svadmin-u-ca6bcd4b6f3f svadmin-u-22bb278694b4 svadmin-u-cd0ad9a56558 svadmin-u-eb6e8b881acd svadmin-u-cef5b893cf23 svadmin-u-ceb69a6b0e5f svadmin-u-512e82e6a68f">
126
+ <div class="svadmin-u-60fbb7713999 svadmin-u-60541e1e26f8 svadmin-u-1004c0c3954c">
127
+ <div class="svadmin-u-60fbb7713999 svadmin-u-f6fe902450dc svadmin-u-7ec10f86d9b1 svadmin-u-012fbd121f37 svadmin-u-3960ffc248d9 svadmin-u-86843cf1e227 svadmin-u-ac204c108886 svadmin-u-2ef11f1cb219 svadmin-u-d058ca6de60f svadmin-u-2689f3958069 svadmin-u-bfa603190748">
128
128
  {index + 1}
129
129
  </div>
130
130
 
131
- <div class="min-w-0 flex-1">
131
+ <div class="svadmin-u-7e0b7cdf1a94 svadmin-u-36e579c0b41c">
132
132
  {#if children}
133
133
  {@render children({
134
134
  item,
@@ -141,13 +141,13 @@
141
141
  isLast,
142
142
  })}
143
143
  {:else}
144
- <div class="text-sm text-foreground/80">
144
+ <div class="svadmin-u-fc7473ca09eb svadmin-u-f93148569c39">
145
145
  {JSON.stringify(item)}
146
146
  </div>
147
147
  {/if}
148
148
  </div>
149
149
 
150
- <div class="flex shrink-0 items-center gap-0.5 opacity-80 group-hover:opacity-100">
150
+ <div class="svadmin-u-60fbb7713999 svadmin-u-012fbd121f37 svadmin-u-3960ffc248d9 svadmin-u-a3899220f90e svadmin-u-714816efc69c svadmin-u-181f3d6c9821">
151
151
  <TooltipButton
152
152
  tooltip={i18n.t('common.moveUp', undefined) ?? '上移'}
153
153
  variant="ghost"
@@ -155,7 +155,7 @@
155
155
  disabled={disabled || isFirst}
156
156
  onclick={() => moveUp(index)}
157
157
  >
158
- <ArrowUp class="h-3.5 w-3.5" />
158
+ <ArrowUp class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c" />
159
159
  </TooltipButton>
160
160
 
161
161
  <TooltipButton
@@ -165,7 +165,7 @@
165
165
  disabled={disabled || isLast}
166
166
  onclick={() => moveDown(index)}
167
167
  >
168
- <ArrowDown class="h-3.5 w-3.5" />
168
+ <ArrowDown class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c" />
169
169
  </TooltipButton>
170
170
 
171
171
  <TooltipButton
@@ -175,24 +175,24 @@
175
175
  disabled={disabled || items.length >= maxItems}
176
176
  onclick={() => duplicate(index)}
177
177
  >
178
- <Copy class="h-3.5 w-3.5" />
178
+ <Copy class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c" />
179
179
  </TooltipButton>
180
180
 
181
181
  <TooltipButton
182
182
  tooltip={i18n.t('common.delete', undefined) ?? '删除'}
183
183
  variant="ghost"
184
184
  size="icon-sm"
185
- class="text-muted-foreground hover:text-destructive"
185
+ class="svadmin-u-bfa603190748 svadmin-u-51e95020d6f2"
186
186
  disabled={disabled || items.length <= minItems}
187
187
  onclick={() => remove(index)}
188
188
  >
189
- <Trash2 class="h-3.5 w-3.5" />
189
+ <Trash2 class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c" />
190
190
  </TooltipButton>
191
191
  </div>
192
192
  </div>
193
193
  </div>
194
194
  {:else}
195
- <div class="rounded-lg border border-dashed border-border/80 p-6 text-center text-xs text-muted-foreground">
195
+ <div class="svadmin-u-5f22e64f2282 svadmin-u-ca6bcd4b6f3f svadmin-u-a29b7a649c77 svadmin-u-c9ed8c5f79ae svadmin-u-0478c89a150f svadmin-u-ca6bf63030aa svadmin-u-359090c2d529 svadmin-u-bfa603190748">
196
196
  {emptyText ?? (i18n.t('common.noData', undefined) ?? '暂无项目')}
197
197
  </div>
198
198
  {/each}
@@ -203,11 +203,11 @@
203
203
  type="button"
204
204
  variant="outline"
205
205
  size="sm"
206
- class="w-full gap-1.5 border-dashed"
206
+ class="svadmin-u-6da6a3c3f741 svadmin-u-58284b4ea568 svadmin-u-a29b7a649c77"
207
207
  {disabled}
208
208
  onclick={() => add()}
209
209
  >
210
- <Plus class="h-4 w-4" />
210
+ <Plus class="svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3" />
211
211
  {addButtonLabel ?? (i18n.t('common.add', undefined) ?? '添加一项')}
212
212
  </Button>
213
213
  {/if}
@@ -1,12 +1,12 @@
1
1
  <script lang="ts">
2
- // EditInferencer — 基于资源定义零配置渲染编辑表单
3
- // 从 URL 自动提取 :id 参数
2
+ // EditInferencer renders an edit form from the resource definition with no page-specific configuration.
3
+ // The :id parameter is extracted from the URL automatically.
4
4
  import EditPage from './EditPage.svelte';
5
5
  import { useParsed } from '@svadmin/core';
6
6
 
7
7
  interface Props {
8
8
  resourceName: string;
9
- /** 可选:显式指定 id,默认从 URL 解析 */
9
+ /** Optional explicit id; defaults to the value parsed from the URL. */
10
10
  id?: string | number;
11
11
  class?: string;
12
12
  }
@@ -1,6 +1,6 @@
1
1
  interface Props {
2
2
  resourceName: string;
3
- /** 可选:显式指定 id,默认从 URL 解析 */
3
+ /** Optional explicit id; defaults to the value parsed from the URL. */
4
4
  id?: string | number;
5
5
  class?: string;
6
6
  }
@@ -43,7 +43,7 @@
43
43
  const showDelete = $derived(canDelete ?? resource.canDelete !== false);
44
44
  </script>
45
45
 
46
- <div class="{density === 'compact' ? 'space-y-4' : 'space-y-6'} {className}">
46
+ <div class="{density === 'compact' ? 'svadmin-u-3e7ce58d64fa' : 'svadmin-u-b3542e058833'} {className}">
47
47
  <PageHeader
48
48
  title={pageTitle}
49
49
  {density}
@@ -75,25 +75,25 @@
75
75
  }
76
76
  </script>
77
77
 
78
- <div class={cn('space-y-3 rounded-xl border border-border bg-card p-4 shadow-xs text-xs', className)}>
79
- <div class="flex items-center justify-between gap-2 pb-2 border-b border-border/60">
80
- <div class="font-semibold text-foreground">
81
- Editable Grid <span class="text-muted-foreground font-normal">({data.length} records)</span>
78
+ <div class={cn('svadmin-u-6ed543e2fbbb svadmin-u-a217b4eaa918 svadmin-u-ca6bcd4b6f3f svadmin-u-18049387f0af svadmin-u-cd0ad9a56558 svadmin-u-8e63407b5ceb svadmin-u-cef5b893cf23 svadmin-u-359090c2d529', className)}>
79
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-8ef2268efbbc svadmin-u-77a2a20e90d4 svadmin-u-f4cc511ff0c1 svadmin-u-65fdbade2025 svadmin-u-05faf5c801ff">
80
+ <div class="svadmin-u-e83a7042bc91 svadmin-u-d4108abe6359">
81
+ Editable Grid <span class="svadmin-u-bfa603190748 svadmin-u-8ecebc9f80e6">({data.length} records)</span>
82
82
  </div>
83
83
 
84
- <div class="flex items-center gap-2">
84
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-77a2a20e90d4">
85
85
  {#if allowAdd}
86
- <Button variant="outline" size="sm" class="h-8 text-xs gap-1" onclick={handleAddRow}>
87
- <Plus class="h-3.5 w-3.5" />
86
+ <Button variant="outline" size="sm" class="svadmin-u-ed8a5df7b2fb svadmin-u-359090c2d529 svadmin-u-44ee8ba0a421" onclick={handleAddRow}>
87
+ <Plus class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c" />
88
88
  Add Row
89
89
  </Button>
90
90
  {/if}
91
91
  {#if onsave}
92
- <Button size="sm" class="h-8 text-xs gap-1 min-w-20" disabled={isSaving} onclick={handleSave}>
92
+ <Button size="sm" class="svadmin-u-ed8a5df7b2fb svadmin-u-359090c2d529 svadmin-u-44ee8ba0a421 svadmin-u-2e7a6d18a20d" disabled={isSaving} onclick={handleSave}>
93
93
  {#if isSaving}
94
- <Loader2 class="h-3.5 w-3.5 animate-spin" />
94
+ <Loader2 class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c svadmin-u-afbdd13a380e" />
95
95
  {:else}
96
- <Save class="h-3.5 w-3.5" />
96
+ <Save class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c" />
97
97
  {/if}
98
98
  Save All
99
99
  </Button>
@@ -101,31 +101,31 @@
101
101
  </div>
102
102
  </div>
103
103
 
104
- <div class="overflow-x-auto rounded-lg border border-border/60">
105
- <table class="w-full text-left border-collapse">
106
- <thead class="bg-muted/40 font-semibold text-muted-foreground border-b border-border/60">
104
+ <div class="svadmin-u-1384f66f41d0 svadmin-u-5f22e64f2282 svadmin-u-ca6bcd4b6f3f svadmin-u-05faf5c801ff">
105
+ <table class="svadmin-u-6da6a3c3f741 svadmin-u-2eba0d65d059 svadmin-u-4583f90cd9bd">
106
+ <thead class="svadmin-u-b00f43c30c2b svadmin-u-e83a7042bc91 svadmin-u-bfa603190748 svadmin-u-65fdbade2025 svadmin-u-05faf5c801ff">
107
107
  <tr>
108
108
  {#each columns as col (col.key)}
109
- <th style={col.width ? `width: ${col.width};` : ''} class="px-3 py-2.5">
109
+ <th style={col.width ? `width: ${col.width};` : ''} class="svadmin-u-0e17f2bd9074 svadmin-u-e7ee55ac7ffe">
110
110
  {col.label}
111
- {#if col.required}<span class="text-destructive">*</span>{/if}
111
+ {#if col.required}<span class="svadmin-u-811148b13d1e">*</span>{/if}
112
112
  </th>
113
113
  {/each}
114
114
  {#if allowDelete}
115
- <th class="w-12 px-3 py-2.5 text-center">Action</th>
115
+ <th class="svadmin-u-e7e371071bc5 svadmin-u-0e17f2bd9074 svadmin-u-e7ee55ac7ffe svadmin-u-ca6bf63030aa">Action</th>
116
116
  {/if}
117
117
  </tr>
118
118
  </thead>
119
- <tbody class="divide-y divide-border/40">
119
+ <tbody class="svadmin-u-fa6acbf81d74 svadmin-u-08b5607c7258">
120
120
  {#each data as row, rowIndex (row[rowKey] ?? rowIndex)}
121
- <tr class="hover:bg-muted/20 transition-colors">
121
+ <tr class="svadmin-u-c4b5eaba40e3 svadmin-u-ceb69a6b0e5f">
122
122
  {#each columns as col (col.key)}
123
- <td class="p-1.5">
123
+ <td class="svadmin-u-cd009d7d208c">
124
124
  {#if col.readonly}
125
- <div class="px-2 py-1 text-muted-foreground font-mono truncate">{row[col.key] ?? '—'}</div>
125
+ <div class="svadmin-u-d5eab218aa34 svadmin-u-660d2effb880 svadmin-u-bfa603190748 svadmin-u-0e65706bcccd svadmin-u-f283ea9bea0e">{row[col.key] ?? '—'}</div>
126
126
  {:else if col.type === 'select' && col.options}
127
127
  <select
128
- class="h-7.5 w-full rounded-md border border-input bg-background px-2 text-xs focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring"
128
+ class="svadmin-u-d1c57777d8b6 svadmin-u-6da6a3c3f741 svadmin-u-421ac2be5045 svadmin-u-ca6bcd4b6f3f svadmin-u-e5795dad4d22 svadmin-u-e6f9e383a762 svadmin-u-d5eab218aa34 svadmin-u-359090c2d529 svadmin-u-f10f771f87e9 svadmin-u-3e94a98e1466 svadmin-u-9c1295a6914a"
129
129
  value={String(row[col.key] ?? '')}
130
130
  onchange={(e) => updateCell(rowIndex, col.key, e.currentTarget.value)}
131
131
  >
@@ -134,10 +134,10 @@
134
134
  {/each}
135
135
  </select>
136
136
  {:else if col.type === 'boolean'}
137
- <div class="flex items-center justify-center py-1">
137
+ <div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-86843cf1e227 svadmin-u-660d2effb880">
138
138
  <input
139
139
  type="checkbox"
140
- class="h-4 w-4 rounded border-border text-primary focus:ring-primary/20 cursor-pointer"
140
+ class="svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3 svadmin-u-07389a777c1f svadmin-u-18049387f0af svadmin-u-20aaf08a7ed1 svadmin-u-4df2b13689a4 svadmin-u-34516836730d"
141
141
  checked={Boolean(row[col.key])}
142
142
  onchange={(e) => updateCell(rowIndex, col.key, e.currentTarget.checked)}
143
143
  />
@@ -145,21 +145,21 @@
145
145
  {:else if col.type === 'number'}
146
146
  <input
147
147
  type="number"
148
- class="h-7.5 w-full rounded-md border border-input bg-background px-2 text-xs focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring"
148
+ class="svadmin-u-d1c57777d8b6 svadmin-u-6da6a3c3f741 svadmin-u-421ac2be5045 svadmin-u-ca6bcd4b6f3f svadmin-u-e5795dad4d22 svadmin-u-e6f9e383a762 svadmin-u-d5eab218aa34 svadmin-u-359090c2d529 svadmin-u-f10f771f87e9 svadmin-u-3e94a98e1466 svadmin-u-9c1295a6914a"
149
149
  value={Number(row[col.key] ?? 0)}
150
150
  oninput={(e) => updateCell(rowIndex, col.key, Number(e.currentTarget.value))}
151
151
  />
152
152
  {:else if col.type === 'date'}
153
153
  <input
154
154
  type="date"
155
- class="h-7.5 w-full rounded-md border border-input bg-background px-2 text-xs focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring"
155
+ class="svadmin-u-d1c57777d8b6 svadmin-u-6da6a3c3f741 svadmin-u-421ac2be5045 svadmin-u-ca6bcd4b6f3f svadmin-u-e5795dad4d22 svadmin-u-e6f9e383a762 svadmin-u-d5eab218aa34 svadmin-u-359090c2d529 svadmin-u-f10f771f87e9 svadmin-u-3e94a98e1466 svadmin-u-9c1295a6914a"
156
156
  value={String(row[col.key] ?? '')}
157
157
  oninput={(e) => updateCell(rowIndex, col.key, e.currentTarget.value)}
158
158
  />
159
159
  {:else}
160
160
  <input
161
161
  type="text"
162
- class="h-7.5 w-full rounded-md border border-input bg-background px-2 text-xs focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring"
162
+ class="svadmin-u-d1c57777d8b6 svadmin-u-6da6a3c3f741 svadmin-u-421ac2be5045 svadmin-u-ca6bcd4b6f3f svadmin-u-e5795dad4d22 svadmin-u-e6f9e383a762 svadmin-u-d5eab218aa34 svadmin-u-359090c2d529 svadmin-u-f10f771f87e9 svadmin-u-3e94a98e1466 svadmin-u-9c1295a6914a"
163
163
  value={String(row[col.key] ?? '')}
164
164
  oninput={(e) => updateCell(rowIndex, col.key, e.currentTarget.value)}
165
165
  />
@@ -168,14 +168,14 @@
168
168
  {/each}
169
169
 
170
170
  {#if allowDelete}
171
- <td class="p-1.5 text-center">
171
+ <td class="svadmin-u-cd009d7d208c svadmin-u-ca6bf63030aa">
172
172
  <Button
173
173
  variant="ghost"
174
174
  size="sm"
175
- class="h-7 w-7 p-0 text-muted-foreground hover:text-destructive hover:bg-destructive/10"
175
+ class="svadmin-u-d0a52b312f7d svadmin-u-cbbf90f9a828 svadmin-u-8a539c7fe216 svadmin-u-bfa603190748 svadmin-u-51e95020d6f2 svadmin-u-8db899b4e072"
176
176
  onclick={() => handleDeleteRow(rowIndex)}
177
177
  >
178
- <Trash2 class="h-3.5 w-3.5" />
178
+ <Trash2 class="svadmin-u-7fc7f732bf7e svadmin-u-bf600f8e029c" />
179
179
  </Button>
180
180
  </td>
181
181
  {/if}
@@ -184,7 +184,7 @@
184
184
 
185
185
  {#if data.length === 0}
186
186
  <tr>
187
- <td colspan={columns.length + (allowDelete ? 1 : 0)} class="py-8 text-center text-muted-foreground">
187
+ <td colspan={columns.length + (allowDelete ? 1 : 0)} class="svadmin-u-a1f611f027dd svadmin-u-ca6bf63030aa svadmin-u-bfa603190748">
188
188
  No rows. Click "Add Row" to create the first record.
189
189
  </td>
190
190
  </tr>
@@ -17,18 +17,18 @@
17
17
  </script>
18
18
 
19
19
  <div
20
- class="flex flex-col items-center justify-center rounded-lg bg-card/50 px-8 py-10 text-center shadow-xs"
20
+ class="svadmin-u-60fbb7713999 svadmin-u-8dddea0773ed svadmin-u-3960ffc248d9 svadmin-u-86843cf1e227 svadmin-u-5f22e64f2282 svadmin-u-24104d87db9a svadmin-u-7e3e9a76c966 svadmin-u-1100bef66e60 svadmin-u-ca6bf63030aa svadmin-u-cef5b893cf23"
21
21
  in:scale={{ start: 0.95, duration: 200, opacity: 0 }}
22
22
  role="status"
23
23
  aria-live="polite"
24
24
  >
25
- <div class="h-20 w-20 rounded-full bg-muted flex items-center justify-center mb-4">
26
- <PackageOpen class="h-10 w-10 text-muted-foreground" />
25
+ <div class="svadmin-u-0a769880db93 svadmin-u-ed831a4dff32 svadmin-u-ac204c108886 svadmin-u-2ef11f1cb219 svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-86843cf1e227 svadmin-u-da019856f2cc">
26
+ <PackageOpen class="svadmin-u-426b8b75185b svadmin-u-d854e5698b57 svadmin-u-bfa603190748" />
27
27
  </div>
28
- <h3 class="text-lg font-semibold tracking-tight">{title}</h3>
29
- <p class="text-sm text-muted-foreground mt-2 max-w-sm">{description}</p>
28
+ <h3 class="svadmin-u-42536e69e639 svadmin-u-e83a7042bc91 svadmin-u-1d7f28b046ad">{title}</h3>
29
+ <p class="svadmin-u-fc7473ca09eb svadmin-u-bfa603190748 svadmin-u-50d0d216a2f8 svadmin-u-2472e9b81a97">{description}</p>
30
30
  {#if children}
31
- <div class="mt-6">
31
+ <div class="svadmin-u-31f2553311b6">
32
32
  {@render children()}
33
33
  </div>
34
34
  {/if}
@@ -28,19 +28,19 @@
28
28
  {#if fallback}
29
29
  {@render fallback({ error: error instanceof Error ? error : new Error(String(error)), reset })}
30
30
  {:else}
31
- <div class="flex h-screen items-center justify-center bg-background">
32
- <div class="max-w-md w-full px-4">
33
- <Alert.Root variant="destructive" class="space-y-4">
34
- <div class="flex items-start gap-3">
35
- <AlertTriangle class="h-5 w-5 mt-0.5 shrink-0" />
36
- <div class="space-y-2">
31
+ <div class="svadmin-u-60fbb7713999 svadmin-u-ef114b5f5ad1 svadmin-u-3960ffc248d9 svadmin-u-86843cf1e227 svadmin-u-e6f9e383a762">
32
+ <div class="svadmin-u-9794ab45094d svadmin-u-6da6a3c3f741 svadmin-u-f0faeb26d656">
33
+ <Alert.Root variant="destructive" class="svadmin-u-3e7ce58d64fa">
34
+ <div class="svadmin-u-60fbb7713999 svadmin-u-60541e1e26f8 svadmin-u-1004c0c3954c">
35
+ <AlertTriangle class="svadmin-u-cd0d9c512cdc svadmin-u-72470489ff4e svadmin-u-15e1b1f444fe svadmin-u-012fbd121f37" />
36
+ <div class="svadmin-u-6f7e013d6499">
37
37
  <Alert.Title>{i18n.t('common.error')}</Alert.Title>
38
- <Alert.Description class="text-sm">
38
+ <Alert.Description class="svadmin-u-fc7473ca09eb">
39
39
  {error instanceof Error ? error.message : String(error)}
40
40
  </Alert.Description>
41
41
  </div>
42
42
  </div>
43
- <Button variant="outline" size="sm" onclick={reset} class="w-full">
43
+ <Button variant="outline" size="sm" onclick={reset} class="svadmin-u-6da6a3c3f741">
44
44
  {i18n.t('common.retry')}
45
45
  </Button>
46
46
  </Alert.Root>
@@ -19,17 +19,17 @@
19
19
  }>();
20
20
  </script>
21
21
 
22
- <div class="flex flex-col items-center justify-center px-8 py-10 text-center">
23
- <Alert.Root variant="destructive" class="max-w-md text-left">
24
- <AlertTriangle class="h-5 w-5" />
22
+ <div class="svadmin-u-60fbb7713999 svadmin-u-8dddea0773ed svadmin-u-3960ffc248d9 svadmin-u-86843cf1e227 svadmin-u-7e3e9a76c966 svadmin-u-1100bef66e60 svadmin-u-ca6bf63030aa">
23
+ <Alert.Root variant="destructive" class="svadmin-u-9794ab45094d svadmin-u-2eba0d65d059">
24
+ <AlertTriangle class="svadmin-u-cd0d9c512cdc svadmin-u-72470489ff4e" />
25
25
  <Alert.Title>{title}</Alert.Title>
26
26
  <Alert.Description>
27
27
  {error?.message || description}
28
28
  </Alert.Description>
29
29
  {#if retry}
30
- <div class="mt-4">
30
+ <div class="svadmin-u-0ab8667228fd">
31
31
  <Button variant="outline" size="sm" onclick={retry}>
32
- <RefreshCw class="h-3 w-3" data-icon="inline-start" />
32
+ <RefreshCw class="svadmin-u-6a60c09e6aaa svadmin-u-9cea05671a29" data-icon="inline-start" />
33
33
  {i18n.t('buttons.retry')}
34
34
  </Button>
35
35
  </div>