@svadmin/ui 0.73.0 → 0.74.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 (295) hide show
  1. package/README.md +53 -28
  2. package/dist/app.css +3733 -4119
  3. package/dist/app.theme.css +3733 -4119
  4. package/dist/component-registry.d.ts +14977 -0
  5. package/dist/component-registry.js +216 -0
  6. package/dist/components/AboutSettings.svelte +7 -1
  7. package/dist/components/AboutSettings.svelte.d.ts +4 -1
  8. package/dist/components/ActivityFeed.svelte +9 -3
  9. package/dist/components/ActivityFeed.svelte.d.ts +3 -0
  10. package/dist/components/AdminApp.svelte +19 -10
  11. package/dist/components/AdminApp.svelte.d.ts +6 -0
  12. package/dist/components/ApiSettings.svelte +41 -5
  13. package/dist/components/ApprovalCenter.svelte +283 -0
  14. package/dist/components/ApprovalCenter.svelte.d.ts +10 -0
  15. package/dist/components/AuditLogViewer.svelte +3 -1
  16. package/dist/components/AutoForm.svelte +33 -3
  17. package/dist/components/AutoForm.svelte.d.ts +1 -0
  18. package/dist/components/AutoTable.svelte +610 -47
  19. package/dist/components/AutoTable.svelte.d.ts +17 -1
  20. package/dist/components/BoundRecordDetailDrawer.svelte +9 -0
  21. package/dist/components/BoundRecordDetailDrawer.svelte.d.ts +2 -0
  22. package/dist/components/Breadcrumbs.svelte +11 -1
  23. package/dist/components/CancelTaskButton.svelte +12 -42
  24. package/dist/components/ColorPicker.svelte +73 -0
  25. package/dist/components/ColorPicker.svelte.d.ts +15 -0
  26. package/dist/components/ComboboxField.svelte +114 -27
  27. package/dist/components/ComboboxField.svelte.d.ts +1 -0
  28. package/dist/components/DashboardView.svelte +99 -0
  29. package/dist/components/DashboardView.svelte.d.ts +14 -0
  30. package/dist/components/DatePicker.svelte +10 -0
  31. package/dist/components/DatePicker.svelte.d.ts +6 -0
  32. package/dist/components/DateRangeInput.svelte +85 -5
  33. package/dist/components/DateRangeInput.svelte.d.ts +10 -0
  34. package/dist/components/DateRangePicker.svelte +10 -0
  35. package/dist/components/DateRangePicker.svelte.d.ts +6 -0
  36. package/dist/components/DateTimeInput.svelte +74 -5
  37. package/dist/components/DateTimeInput.svelte.d.ts +8 -0
  38. package/dist/components/DateTimePicker.svelte +10 -0
  39. package/dist/components/DateTimePicker.svelte.d.ts +6 -0
  40. package/dist/components/DevTools.svelte +34 -26
  41. package/dist/components/DevframePanel.svelte +123 -0
  42. package/dist/components/DevframePanel.svelte.d.ts +3 -0
  43. package/dist/components/ErrorSummary.svelte +52 -0
  44. package/dist/components/ErrorSummary.svelte.d.ts +14 -0
  45. package/dist/components/FieldRenderer.svelte +82 -81
  46. package/dist/components/FileUpload.svelte +214 -52
  47. package/dist/components/FileUpload.svelte.d.ts +11 -0
  48. package/dist/components/FilterBuilder.svelte +88 -66
  49. package/dist/components/FilterCollectionInput.svelte +80 -0
  50. package/dist/components/FilterCollectionInput.svelte.d.ts +10 -0
  51. package/dist/components/GanttChart.svelte +66 -14
  52. package/dist/components/GanttChart.svelte.d.ts +6 -0
  53. package/dist/components/Header.svelte +18 -2
  54. package/dist/components/ImportWizard.svelte +339 -17
  55. package/dist/components/ImportWizard.svelte.d.ts +11 -0
  56. package/dist/components/JsonSchemaForm.svelte +120 -52
  57. package/dist/components/JsonSchemaForm.svelte.d.ts +7 -1
  58. package/dist/components/KanbanBoard.svelte +195 -40
  59. package/dist/components/KanbanBoard.svelte.d.ts +9 -2
  60. package/dist/components/Layout.svelte +4 -2
  61. package/dist/components/LazyAutoForm.svelte +28 -0
  62. package/dist/components/LazyAutoForm.svelte.d.ts +8 -0
  63. package/dist/components/LazyAutoTable.svelte +28 -0
  64. package/dist/components/LazyAutoTable.svelte.d.ts +8 -0
  65. package/dist/components/LazySettingsPage.svelte +28 -0
  66. package/dist/components/LazySettingsPage.svelte.d.ts +8 -0
  67. package/dist/components/LazyShowPage.svelte +28 -0
  68. package/dist/components/LazyShowPage.svelte.d.ts +8 -0
  69. package/dist/components/ListPage.svelte +5 -1
  70. package/dist/components/ListPage.svelte.d.ts +3 -0
  71. package/dist/components/LoginPage.svelte +1 -1
  72. package/dist/components/MultiTabKeepAlive.svelte +11 -6
  73. package/dist/components/NotificationsSettings.svelte +69 -2
  74. package/dist/components/NotificationsSettings.svelte.d.ts +25 -1
  75. package/dist/components/PermissionMatrix.svelte +20 -1
  76. package/dist/components/PivotExportButton.svelte +157 -0
  77. package/dist/components/PivotExportButton.svelte.d.ts +16 -0
  78. package/dist/components/PivotTable.svelte +229 -74
  79. package/dist/components/PivotTable.svelte.d.ts +19 -2
  80. package/dist/components/RadioGroup.svelte +121 -0
  81. package/dist/components/RadioGroup.svelte.d.ts +43 -0
  82. package/dist/components/RangeSlider.svelte +127 -0
  83. package/dist/components/RangeSlider.svelte.d.ts +22 -0
  84. package/dist/components/Rate.svelte +121 -0
  85. package/dist/components/Rate.svelte.d.ts +16 -0
  86. package/dist/components/RecordDetailDrawer.svelte +4 -2
  87. package/dist/components/RecordDetailDrawer.svelte.d.ts +2 -0
  88. package/dist/components/RelationPicker.svelte +341 -0
  89. package/dist/components/RelationPicker.svelte.d.ts +26 -0
  90. package/dist/components/ResourceOperationsPage.svelte +18 -18
  91. package/dist/components/ResourceOperationsPage.svelte.d.ts +2 -2
  92. package/dist/components/RetryTaskButton.svelte +12 -42
  93. package/dist/components/SecuritySettings.svelte +29 -5
  94. package/dist/components/SegmentedControl.svelte +145 -0
  95. package/dist/components/SegmentedControl.svelte.d.ts +38 -0
  96. package/dist/components/SettingsPage.svelte +3 -1
  97. package/dist/components/SettingsPage.svelte.d.ts +1 -0
  98. package/dist/components/ShowPage.svelte +18 -3
  99. package/dist/components/ShowPage.svelte.d.ts +3 -0
  100. package/dist/components/Sidebar.svelte +2 -2
  101. package/dist/components/Slider.svelte +100 -0
  102. package/dist/components/Slider.svelte.d.ts +19 -0
  103. package/dist/components/SpreadsheetView.svelte +1213 -95
  104. package/dist/components/SpreadsheetView.svelte.d.ts +19 -0
  105. package/dist/components/TagsInput.svelte +178 -0
  106. package/dist/components/TagsInput.svelte.d.ts +17 -0
  107. package/dist/components/TimePicker.svelte +10 -0
  108. package/dist/components/TimePicker.svelte.d.ts +6 -0
  109. package/dist/components/TreeSelect.svelte +267 -53
  110. package/dist/components/TreeSelect.svelte.d.ts +3 -0
  111. package/dist/components/TreeTable.svelte +484 -82
  112. package/dist/components/TreeTable.svelte.d.ts +24 -1
  113. package/dist/components/TwoFactorAuthPage.svelte +85 -48
  114. package/dist/components/TwoFactorAuthPage.svelte.d.ts +12 -1
  115. package/dist/components/VirtualTable.svelte +116 -20
  116. package/dist/components/VirtualTable.svelte.d.ts +5 -0
  117. package/dist/components/account/CompanyProfilePage.svelte +74 -38
  118. package/dist/components/account/GetStartedPage.svelte +2 -1
  119. package/dist/components/account/ImportMembersPage.svelte +22 -167
  120. package/dist/components/account/ImportMembersPage.svelte.d.ts +4 -1
  121. package/dist/components/account/MemberDirectory.svelte +156 -0
  122. package/dist/components/account/MemberDirectory.svelte.d.ts +19 -0
  123. package/dist/components/account/MembersStarterPage.svelte +9 -55
  124. package/dist/components/account/MembersStarterPage.svelte.d.ts +5 -1
  125. package/dist/components/account/SecurityLogPage.svelte +4 -1
  126. package/dist/components/account/SettingsPlainPage.svelte +7 -38
  127. package/dist/components/account/SettingsPlainPage.svelte.d.ts +4 -1
  128. package/dist/components/account/SettingsSidebarPage.svelte +7 -20
  129. package/dist/components/account/TeamMembersPage.svelte +4 -20
  130. package/dist/components/account/TeamMembersPage.svelte.d.ts +5 -1
  131. package/dist/components/account/UserProfilePage.svelte +3 -25
  132. package/dist/components/account/UserProfilePage.svelte.d.ts +17 -2
  133. package/dist/components/buttons/ExportButton.svelte +56 -12
  134. package/dist/components/buttons/ExportButton.svelte.d.ts +11 -0
  135. package/dist/components/content/ContentPageHeader.svelte +1 -1
  136. package/dist/components/content/ContentPageShell.svelte +1 -1
  137. package/dist/components/content/MetricBlock.svelte +1 -1
  138. package/dist/components/content/PageToolbar.svelte +1 -1
  139. package/dist/components/content/ReferenceNotice.svelte +5 -0
  140. package/dist/components/content/ReferenceNotice.svelte.d.ts +18 -0
  141. package/dist/components/content/SectionHeader.svelte +1 -1
  142. package/dist/components/content/SettingsFieldRow.svelte +1 -1
  143. package/dist/components/content/SettingsGroup.svelte +1 -1
  144. package/dist/components/content/StatusBadge.svelte +1 -1
  145. package/dist/components/content/WorkspaceLayout.svelte +1 -1
  146. package/dist/components/export-reference.d.ts +2 -0
  147. package/dist/components/export-reference.js +9 -0
  148. package/dist/components/fieldComponentMap.js +2 -5
  149. package/dist/components/fields/DateField.svelte +12 -13
  150. package/dist/components/fields/date-display.d.ts +6 -0
  151. package/dist/components/fields/date-display.js +24 -0
  152. package/dist/components/network/TeamCrewTablePage.svelte +6 -1
  153. package/dist/components/network/UserCardsNFTPage.svelte +2 -0
  154. package/dist/components/profile/PublicProfilePage.svelte +2 -0
  155. package/dist/components/saved-list-views.d.ts +74 -1
  156. package/dist/components/saved-list-views.js +191 -3
  157. package/dist/components/table-contract.d.ts +12 -1
  158. package/dist/components/task-action.svelte.d.ts +13 -0
  159. package/dist/components/task-action.svelte.js +73 -0
  160. package/dist/components/ui/DesignSystemShowcase.svelte +164 -0
  161. package/dist/components/ui/DesignSystemShowcase.svelte.d.ts +3 -0
  162. package/dist/components/ui/badge/badge-variants.d.ts +3 -2
  163. package/dist/components/ui/badge/badge-variants.js +2 -3
  164. package/dist/components/ui/badge/badge.svelte +3 -0
  165. package/dist/components/ui/badge/badge.svelte.d.ts +1 -0
  166. package/dist/components/ui/button/button-variants.d.ts +5 -4
  167. package/dist/components/ui/button/button-variants.js +7 -5
  168. package/dist/components/ui/checkbox/checkbox.svelte +5 -1
  169. package/dist/components/ui/checkbox/checkbox.svelte.d.ts +5 -1
  170. package/dist/components/ui/input/input.svelte +7 -2
  171. package/dist/components/ui/input/input.svelte.d.ts +4 -1
  172. package/dist/components/ui/select/select.svelte +4 -1
  173. package/dist/components/ui/select/select.svelte.d.ts +2 -1
  174. package/dist/components/ui/textarea/textarea.svelte +2 -2
  175. package/dist/components.css +33 -2
  176. package/dist/date-input-policy.d.ts +4 -0
  177. package/dist/date-input-policy.js +35 -0
  178. package/dist/design-system-components.d.ts +100 -0
  179. package/dist/design-system-components.js +101 -0
  180. package/dist/design-system.js +1 -1
  181. package/dist/devtools-bridge.d.ts +80 -0
  182. package/dist/devtools-bridge.js +92 -0
  183. package/dist/index.d.ts +37 -2
  184. package/dist/index.js +23 -2
  185. package/dist/recipes.d.ts +960 -4
  186. package/dist/recipes.js +264 -4
  187. package/dist/tree-table-model.d.ts +24 -0
  188. package/dist/tree-table-model.js +111 -0
  189. package/package.json +22 -10
  190. package/dist/styled-system/css/conditions.js +0 -36
  191. package/dist/styled-system/css/css.d.ts +0 -22
  192. package/dist/styled-system/css/css.js +0 -45
  193. package/dist/styled-system/css/cva.d.ts +0 -6
  194. package/dist/styled-system/css/cva.js +0 -87
  195. package/dist/styled-system/css/cx.d.ts +0 -5
  196. package/dist/styled-system/css/cx.js +0 -15
  197. package/dist/styled-system/css/index.d.ts +0 -5
  198. package/dist/styled-system/css/index.js +0 -4
  199. package/dist/styled-system/css/sva.d.ts +0 -4
  200. package/dist/styled-system/css/sva.js +0 -46
  201. package/dist/styled-system/helpers.js +0 -316
  202. package/dist/styled-system/patterns/aspect-ratio.d.ts +0 -20
  203. package/dist/styled-system/patterns/aspect-ratio.js +0 -38
  204. package/dist/styled-system/patterns/bleed.d.ts +0 -21
  205. package/dist/styled-system/patterns/bleed.js +0 -24
  206. package/dist/styled-system/patterns/box.d.ts +0 -20
  207. package/dist/styled-system/patterns/box.js +0 -15
  208. package/dist/styled-system/patterns/center.d.ts +0 -20
  209. package/dist/styled-system/patterns/center.js +0 -21
  210. package/dist/styled-system/patterns/circle.d.ts +0 -20
  211. package/dist/styled-system/patterns/circle.js +0 -25
  212. package/dist/styled-system/patterns/container.d.ts +0 -20
  213. package/dist/styled-system/patterns/container.js +0 -21
  214. package/dist/styled-system/patterns/cq.d.ts +0 -21
  215. package/dist/styled-system/patterns/cq.js +0 -21
  216. package/dist/styled-system/patterns/divider.d.ts +0 -22
  217. package/dist/styled-system/patterns/divider.js +0 -25
  218. package/dist/styled-system/patterns/flex.d.ts +0 -26
  219. package/dist/styled-system/patterns/flex.js +0 -26
  220. package/dist/styled-system/patterns/float.d.ts +0 -23
  221. package/dist/styled-system/patterns/float.js +0 -52
  222. package/dist/styled-system/patterns/grid-item.d.ts +0 -25
  223. package/dist/styled-system/patterns/grid-item.js +0 -25
  224. package/dist/styled-system/patterns/grid.d.ts +0 -24
  225. package/dist/styled-system/patterns/grid.js +0 -27
  226. package/dist/styled-system/patterns/hstack.d.ts +0 -21
  227. package/dist/styled-system/patterns/hstack.js +0 -24
  228. package/dist/styled-system/patterns/index.d.ts +0 -21
  229. package/dist/styled-system/patterns/index.js +0 -20
  230. package/dist/styled-system/patterns/link-overlay.d.ts +0 -20
  231. package/dist/styled-system/patterns/link-overlay.js +0 -24
  232. package/dist/styled-system/patterns/spacer.d.ts +0 -20
  233. package/dist/styled-system/patterns/spacer.js +0 -25
  234. package/dist/styled-system/patterns/square.d.ts +0 -20
  235. package/dist/styled-system/patterns/square.js +0 -24
  236. package/dist/styled-system/patterns/stack.d.ts +0 -23
  237. package/dist/styled-system/patterns/stack.js +0 -24
  238. package/dist/styled-system/patterns/visually-hidden.d.ts +0 -20
  239. package/dist/styled-system/patterns/visually-hidden.js +0 -18
  240. package/dist/styled-system/patterns/vstack.d.ts +0 -21
  241. package/dist/styled-system/patterns/vstack.js +0 -24
  242. package/dist/styled-system/patterns/wrap.d.ts +0 -24
  243. package/dist/styled-system/patterns/wrap.js +0 -25
  244. package/dist/styled-system/recipes/content-header.d.ts +0 -31
  245. package/dist/styled-system/recipes/content-header.js +0 -65
  246. package/dist/styled-system/recipes/content-page.d.ts +0 -34
  247. package/dist/styled-system/recipes/content-page.js +0 -43
  248. package/dist/styled-system/recipes/create-recipe.js +0 -82
  249. package/dist/styled-system/recipes/index.d.ts +0 -17
  250. package/dist/styled-system/recipes/index.js +0 -16
  251. package/dist/styled-system/recipes/metric-block.d.ts +0 -34
  252. package/dist/styled-system/recipes/metric-block.js +0 -76
  253. package/dist/styled-system/recipes/product-list.d.ts +0 -31
  254. package/dist/styled-system/recipes/product-list.js +0 -73
  255. package/dist/styled-system/recipes/product-section.d.ts +0 -31
  256. package/dist/styled-system/recipes/product-section.js +0 -49
  257. package/dist/styled-system/recipes/product-settings-row.d.ts +0 -34
  258. package/dist/styled-system/recipes/product-settings-row.js +0 -58
  259. package/dist/styled-system/recipes/product-settings.d.ts +0 -31
  260. package/dist/styled-system/recipes/product-settings.js +0 -57
  261. package/dist/styled-system/recipes/product-status.d.ts +0 -34
  262. package/dist/styled-system/recipes/product-status.js +0 -45
  263. package/dist/styled-system/recipes/product-toolbar.d.ts +0 -31
  264. package/dist/styled-system/recipes/product-toolbar.js +0 -41
  265. package/dist/styled-system/recipes/product-workspace.d.ts +0 -34
  266. package/dist/styled-system/recipes/product-workspace.js +0 -58
  267. package/dist/styled-system/recipes/surface-metric.d.ts +0 -38
  268. package/dist/styled-system/recipes/surface-metric.js +0 -63
  269. package/dist/styled-system/recipes/surface-table.d.ts +0 -34
  270. package/dist/styled-system/recipes/surface-table.js +0 -62
  271. package/dist/styled-system/recipes/ui-badge.d.ts +0 -31
  272. package/dist/styled-system/recipes/ui-badge.js +0 -38
  273. package/dist/styled-system/recipes/ui-button.d.ts +0 -32
  274. package/dist/styled-system/recipes/ui-button.js +0 -43
  275. package/dist/styled-system/recipes/ui-input.d.ts +0 -31
  276. package/dist/styled-system/recipes/ui-input.js +0 -49
  277. package/dist/styled-system/recipes/ui-textarea.d.ts +0 -31
  278. package/dist/styled-system/recipes/ui-textarea.js +0 -24
  279. package/dist/styled-system/styles.css +0 -1257
  280. package/dist/styled-system/tokens/index.d.ts +0 -9
  281. package/dist/styled-system/tokens/index.js +0 -268
  282. package/dist/styled-system/tokens/tokens.d.ts +0 -36
  283. package/dist/styled-system/types/composition.d.ts +0 -227
  284. package/dist/styled-system/types/conditions.d.ts +0 -236
  285. package/dist/styled-system/types/csstype.d.ts +0 -22570
  286. package/dist/styled-system/types/index.d.ts +0 -6
  287. package/dist/styled-system/types/parts.d.ts +0 -8
  288. package/dist/styled-system/types/pattern.d.ts +0 -78
  289. package/dist/styled-system/types/prop-type.d.ts +0 -223
  290. package/dist/styled-system/types/recipe.d.ts +0 -181
  291. package/dist/styled-system/types/selectors.d.ts +0 -59
  292. package/dist/styled-system/types/static-css.d.ts +0 -56
  293. package/dist/styled-system/types/style-props.d.ts +0 -8088
  294. package/dist/styled-system/types/system-types.d.ts +0 -151
  295. package/dist/styles/recipes.css +0 -1262
@@ -1,7 +1,10 @@
1
1
  import type { HTMLInputAttributes, HTMLInputTypeAttribute } from "svelte/elements";
2
2
  declare function $$render<Type extends HTMLInputTypeAttribute | undefined = undefined>(): {
3
- props: Omit<HTMLInputAttributes, "type" | "value"> & {
3
+ props: Omit<HTMLInputAttributes, "type" | "size" | "value"> & {
4
4
  ref?: HTMLElement | null;
5
+ } & {
6
+ size?: "default" | "compact";
7
+ nativeSize?: number;
5
8
  } & (Type extends "file" ? {
6
9
  type: "file";
7
10
  files?: FileList;
@@ -4,8 +4,9 @@
4
4
 
5
5
  // Use HTMLElement instead of HTMLSelectElement to avoid TS error:
6
6
  // HTMLSelectElement.remove() returns void, incompatible with HTMLElement's Element return
7
- type Props = WithElementRef<HTMLSelectAttributes, HTMLElement> & {
7
+ type Props = Omit<WithElementRef<HTMLSelectAttributes, HTMLElement>, "size"> & {
8
8
  placeholder?: string;
9
+ size?: "default" | "compact";
9
10
  };
10
11
 
11
12
  let {
@@ -13,6 +14,7 @@
13
14
  value = $bindable(""),
14
15
  class: className,
15
16
  placeholder,
17
+ size = "default",
16
18
  children,
17
19
  ...restProps
18
20
  }: Props = $props();
@@ -21,6 +23,7 @@
21
23
  <select
22
24
  bind:this={ref}
23
25
  data-slot="select"
26
+ data-size={size}
24
27
  class={cn(
25
28
  "svadmin-select",
26
29
  className
@@ -1,7 +1,8 @@
1
1
  import { type WithElementRef } from "../../../utils.js";
2
2
  import type { HTMLSelectAttributes } from "svelte/elements";
3
- type Props = WithElementRef<HTMLSelectAttributes, HTMLElement> & {
3
+ type Props = Omit<WithElementRef<HTMLSelectAttributes, HTMLElement>, "size"> & {
4
4
  placeholder?: string;
5
+ size?: "default" | "compact";
5
6
  };
6
7
  declare const Select: import("svelte").Component<Props, {}, "value" | "ref">;
7
8
  type Select = ReturnType<typeof Select>;
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import type { HTMLTextareaAttributes } from "svelte/elements";
3
3
  import { cn, type WithElementRef } from "../../../utils.js";
4
- import { uiTextarea } from "../../../styled-system/recipes/index.js";
4
+ import { textareaRecipe as uiTextarea } from "../../../recipes.js";
5
5
 
6
6
  type Props = WithElementRef<HTMLTextareaAttributes, HTMLTextAreaElement>;
7
7
 
@@ -16,7 +16,7 @@
16
16
  <textarea
17
17
  bind:this={ref}
18
18
  data-slot="textarea"
19
- class={cn("svadmin-textarea", uiTextarea(), className)}
19
+ class={cn(uiTextarea().root, className)}
20
20
  bind:value
21
21
  {...restProps}
22
22
  ></textarea>
@@ -1,4 +1,4 @@
1
- /* @svadmin/ui - Stripe-first product tokens
1
+ /* @svadmin/ui - Admin UI product tokens
2
2
  * Imported by AdminApp and overridable by consumer CSS.
3
3
  * Metronic references inform capability coverage, never visual styling.
4
4
  */
@@ -668,6 +668,37 @@ h1, h2, h3, h4, h5, h6, [data-slot="card-title"] {
668
668
  main {
669
669
  scroll-behavior: smooth;
670
670
  }
671
+ .svadmin-sidebar-expanded,
672
+ .svadmin-sidebar-collapsed {
673
+ flex: 0 0 auto;
674
+ width: var(--svadmin-sidebar-width);
675
+ }
676
+ .svadmin-sidebar-expanded {
677
+ --svadmin-sidebar-width: 252px;
678
+ }
679
+ .svadmin-sidebar-collapsed {
680
+ --svadmin-sidebar-width: 70px;
681
+ }
682
+ .svadmin-sidebar-content-expanded,
683
+ .svadmin-sidebar-content-collapsed {
684
+ min-width: 0;
685
+ }
686
+ @media (min-width: 768px) {
687
+ .svadmin-sidebar-content-expanded {
688
+ margin-left: 252px;
689
+ }
690
+ .svadmin-sidebar-content-collapsed {
691
+ margin-left: 70px;
692
+ }
693
+ [dir="rtl"] .svadmin-sidebar-content-expanded {
694
+ margin-left: 0;
695
+ margin-right: 252px;
696
+ }
697
+ [dir="rtl"] .svadmin-sidebar-content-collapsed {
698
+ margin-left: 0;
699
+ margin-right: 70px;
700
+ }
701
+ }
671
702
  [dir="rtl"] {
672
703
  direction: rtl;
673
704
  }
@@ -2114,7 +2145,7 @@ details[data-svadmin-filter]:not([open]) > :not(summary), details.svadmin-collap
2114
2145
  display: none !important;
2115
2146
  }
2116
2147
 
2117
- /* --- Stripe-first layout preset (clean-flat) --- */
2148
+ /* --- Admin UI layout preset (clean-flat) --- */
2118
2149
  /* Keep this public class for layoutPreset API compatibility. The preset only
2119
2150
  * adjusts density and composition; color, focus, and elevation stay semantic. */
2120
2151
  .layout-clean-flat {
@@ -0,0 +1,4 @@
1
+ export type DateInputMode = 'date' | 'time' | 'datetime';
2
+ /** 仅接受无时区原生输入值,不让 Date 的宽松解析改写日历含义。 */
3
+ export declare function dateInputNumber(value: string, mode: DateInputMode): number | undefined;
4
+ export declare function dateInputAllowed(value: string, mode: DateInputMode, min?: string, max?: string, disabledDate?: (date: string) => boolean): boolean;
@@ -0,0 +1,35 @@
1
+ /** 仅接受无时区原生输入值,不让 Date 的宽松解析改写日历含义。 */
2
+ export function dateInputNumber(value, mode) {
3
+ const day = '\\d{4}-\\d{2}-\\d{2}';
4
+ const time = '\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d{1,3})?)?';
5
+ if (!new RegExp(`^${mode === 'date' ? day : mode === 'time' ? time : `${day}T${time}`}$`).test(value))
6
+ return;
7
+ const source = mode === 'date' ? `${value}T00:00` : mode === 'time' ? `2000-01-01T${value}` : value;
8
+ const [date, clock = ''] = source.split('T');
9
+ if (date?.startsWith('0000-'))
10
+ return;
11
+ const [hours, minutes, seconds = '00'] = clock.split(':');
12
+ const [wholeSeconds, fraction = ''] = seconds.split('.');
13
+ const canonical = `${date}T${hours}:${minutes}:${wholeSeconds}.${fraction.padEnd(3, '0')}Z`;
14
+ const parsed = new Date(canonical);
15
+ if (!Number.isFinite(parsed.getTime()) || parsed.toISOString() !== canonical)
16
+ return;
17
+ return parsed.getTime();
18
+ }
19
+ export function dateInputAllowed(value, mode, min, max, disabledDate) {
20
+ const number = dateInputNumber(value, mode);
21
+ if (number === undefined)
22
+ return false;
23
+ const lower = min === undefined ? undefined : dateInputNumber(min, mode);
24
+ const upper = max === undefined ? undefined : dateInputNumber(max, mode);
25
+ if ((min !== undefined && lower === undefined) || (max !== undefined && upper === undefined))
26
+ return false;
27
+ if ((lower !== undefined && number < lower) || (upper !== undefined && number > upper))
28
+ return false;
29
+ try {
30
+ return mode === 'time' || !disabledDate?.(value.slice(0, 10));
31
+ }
32
+ catch {
33
+ return false;
34
+ }
35
+ }
@@ -0,0 +1,100 @@
1
+ export type DesignComponentState = "default" | "hover" | "focus" | "disabled" | "loading" | "error" | "readonly" | "open" | "closed" | "boundary" | "empty" | "filtered-empty" | "forbidden" | "success" | "warning" | "danger" | "neutral" | "active" | "inactive" | "checked" | "unchecked" | "mixed" | "focus-restore" | "overflow" | "value";
2
+ export type DesignComponentContract = {
3
+ id: string;
4
+ name: string;
5
+ codePath: string;
6
+ codeExport: string;
7
+ states: readonly DesignComponentState[];
8
+ themes: readonly ["light", "dark"];
9
+ sizes: readonly ["default", "compact"];
10
+ };
11
+ export declare const designSystemComponents: readonly [{
12
+ readonly id: "ui.button";
13
+ readonly name: "Button";
14
+ readonly codePath: "packages/ui/src/components/ui/button/index.ts";
15
+ readonly codeExport: "Button";
16
+ readonly states: readonly ["default", "hover", "focus", "disabled", "loading"];
17
+ readonly themes: readonly ["light", "dark"];
18
+ readonly sizes: readonly ["default", "compact"];
19
+ }, {
20
+ readonly id: "ui.input";
21
+ readonly name: "Input";
22
+ readonly codePath: "packages/ui/src/components/ui/input/index.ts";
23
+ readonly codeExport: "Input";
24
+ readonly states: readonly ["empty", "value", "focus", "disabled", "error", "readonly"];
25
+ readonly themes: readonly ["light", "dark"];
26
+ readonly sizes: readonly ["default", "compact"];
27
+ }, {
28
+ readonly id: "ui.select";
29
+ readonly name: "Select";
30
+ readonly codePath: "packages/ui/src/components/ui/select/index.ts";
31
+ readonly codeExport: "Select";
32
+ readonly states: readonly ["empty", "value", "focus", "disabled", "error"];
33
+ readonly themes: readonly ["light", "dark"];
34
+ readonly sizes: readonly ["default", "compact"];
35
+ }, {
36
+ readonly id: "ui.checkbox";
37
+ readonly name: "Checkbox";
38
+ readonly codePath: "packages/ui/src/components/ui/checkbox/index.ts";
39
+ readonly codeExport: "Checkbox";
40
+ readonly states: readonly ["unchecked", "checked", "focus", "disabled", "mixed"];
41
+ readonly themes: readonly ["light", "dark"];
42
+ readonly sizes: readonly ["default", "compact"];
43
+ }, {
44
+ readonly id: "ui.tabs";
45
+ readonly name: "Tabs";
46
+ readonly codePath: "packages/ui/src/components/ui/tabs/index.ts";
47
+ readonly codeExport: "Tabs";
48
+ readonly states: readonly ["active", "inactive", "focus", "disabled"];
49
+ readonly themes: readonly ["light", "dark"];
50
+ readonly sizes: readonly ["default", "compact"];
51
+ }, {
52
+ readonly id: "ui.badge";
53
+ readonly name: "Badge";
54
+ readonly codePath: "packages/ui/src/components/ui/badge/index.ts";
55
+ readonly codeExport: "Badge";
56
+ readonly states: readonly ["success", "warning", "danger", "neutral"];
57
+ readonly themes: readonly ["light", "dark"];
58
+ readonly sizes: readonly ["default", "compact"];
59
+ }, {
60
+ readonly id: "ui.menu";
61
+ readonly name: "Menu";
62
+ readonly codePath: "packages/ui/src/components/ui/dropdown-menu/index.ts";
63
+ readonly codeExport: "DropdownMenu";
64
+ readonly states: readonly ["closed", "open", "focus", "overflow"];
65
+ readonly themes: readonly ["light", "dark"];
66
+ readonly sizes: readonly ["default", "compact"];
67
+ }, {
68
+ readonly id: "ui.dialog";
69
+ readonly name: "Dialog";
70
+ readonly codePath: "packages/ui/src/components/ui/dialog/index.ts";
71
+ readonly codeExport: "Dialog";
72
+ readonly states: readonly ["closed", "open", "focus-restore", "overflow"];
73
+ readonly themes: readonly ["light", "dark"];
74
+ readonly sizes: readonly ["default", "compact"];
75
+ }, {
76
+ readonly id: "ui.tooltip";
77
+ readonly name: "Tooltip";
78
+ readonly codePath: "packages/ui/src/components/ui/tooltip/index.ts";
79
+ readonly codeExport: "Tooltip";
80
+ readonly states: readonly ["closed", "open", "boundary"];
81
+ readonly themes: readonly ["light", "dark"];
82
+ readonly sizes: readonly ["default", "compact"];
83
+ }, {
84
+ readonly id: "ui.table";
85
+ readonly name: "Table";
86
+ readonly codePath: "packages/ui/src/components/ui/table/index.ts";
87
+ readonly codeExport: "Table";
88
+ readonly states: readonly ["loading", "default", "empty", "filtered-empty", "error", "forbidden"];
89
+ readonly themes: readonly ["light", "dark"];
90
+ readonly sizes: readonly ["default", "compact"];
91
+ }, {
92
+ readonly id: "ui.status-badge";
93
+ readonly name: "StatusBadge";
94
+ readonly codePath: "packages/ui/src/components/content/StatusBadge.svelte";
95
+ readonly codeExport: "StatusBadge";
96
+ readonly states: readonly ["success", "warning", "danger", "neutral"];
97
+ readonly themes: readonly ["light", "dark"];
98
+ readonly sizes: readonly ["default", "compact"];
99
+ }];
100
+ export type DesignComponentId = (typeof designSystemComponents)[number]["id"];
@@ -0,0 +1,101 @@
1
+ export const designSystemComponents = [
2
+ {
3
+ id: "ui.button",
4
+ name: "Button",
5
+ codePath: "packages/ui/src/components/ui/button/index.ts",
6
+ codeExport: "Button",
7
+ states: ["default", "hover", "focus", "disabled", "loading"],
8
+ themes: ["light", "dark"],
9
+ sizes: ["default", "compact"],
10
+ },
11
+ {
12
+ id: "ui.input",
13
+ name: "Input",
14
+ codePath: "packages/ui/src/components/ui/input/index.ts",
15
+ codeExport: "Input",
16
+ states: ["empty", "value", "focus", "disabled", "error", "readonly"],
17
+ themes: ["light", "dark"],
18
+ sizes: ["default", "compact"],
19
+ },
20
+ {
21
+ id: "ui.select",
22
+ name: "Select",
23
+ codePath: "packages/ui/src/components/ui/select/index.ts",
24
+ codeExport: "Select",
25
+ states: ["empty", "value", "focus", "disabled", "error"],
26
+ themes: ["light", "dark"],
27
+ sizes: ["default", "compact"],
28
+ },
29
+ {
30
+ id: "ui.checkbox",
31
+ name: "Checkbox",
32
+ codePath: "packages/ui/src/components/ui/checkbox/index.ts",
33
+ codeExport: "Checkbox",
34
+ states: ["unchecked", "checked", "focus", "disabled", "mixed"],
35
+ themes: ["light", "dark"],
36
+ sizes: ["default", "compact"],
37
+ },
38
+ {
39
+ id: "ui.tabs",
40
+ name: "Tabs",
41
+ codePath: "packages/ui/src/components/ui/tabs/index.ts",
42
+ codeExport: "Tabs",
43
+ states: ["active", "inactive", "focus", "disabled"],
44
+ themes: ["light", "dark"],
45
+ sizes: ["default", "compact"],
46
+ },
47
+ {
48
+ id: "ui.badge",
49
+ name: "Badge",
50
+ codePath: "packages/ui/src/components/ui/badge/index.ts",
51
+ codeExport: "Badge",
52
+ states: ["success", "warning", "danger", "neutral"],
53
+ themes: ["light", "dark"],
54
+ sizes: ["default", "compact"],
55
+ },
56
+ {
57
+ id: "ui.menu",
58
+ name: "Menu",
59
+ codePath: "packages/ui/src/components/ui/dropdown-menu/index.ts",
60
+ codeExport: "DropdownMenu",
61
+ states: ["closed", "open", "focus", "overflow"],
62
+ themes: ["light", "dark"],
63
+ sizes: ["default", "compact"],
64
+ },
65
+ {
66
+ id: "ui.dialog",
67
+ name: "Dialog",
68
+ codePath: "packages/ui/src/components/ui/dialog/index.ts",
69
+ codeExport: "Dialog",
70
+ states: ["closed", "open", "focus-restore", "overflow"],
71
+ themes: ["light", "dark"],
72
+ sizes: ["default", "compact"],
73
+ },
74
+ {
75
+ id: "ui.tooltip",
76
+ name: "Tooltip",
77
+ codePath: "packages/ui/src/components/ui/tooltip/index.ts",
78
+ codeExport: "Tooltip",
79
+ states: ["closed", "open", "boundary"],
80
+ themes: ["light", "dark"],
81
+ sizes: ["default", "compact"],
82
+ },
83
+ {
84
+ id: "ui.table",
85
+ name: "Table",
86
+ codePath: "packages/ui/src/components/ui/table/index.ts",
87
+ codeExport: "Table",
88
+ states: ["loading", "default", "empty", "filtered-empty", "error", "forbidden"],
89
+ themes: ["light", "dark"],
90
+ sizes: ["default", "compact"],
91
+ },
92
+ {
93
+ id: "ui.status-badge",
94
+ name: "StatusBadge",
95
+ codePath: "packages/ui/src/components/content/StatusBadge.svelte",
96
+ codeExport: "StatusBadge",
97
+ states: ["success", "warning", "danger", "neutral"],
98
+ themes: ["light", "dark"],
99
+ sizes: ["default", "compact"],
100
+ },
101
+ ];
@@ -1,4 +1,4 @@
1
- import { surfaceMetric, surfaceTable } from "./styled-system/recipes/index.js";
1
+ import { surfaceMetricRecipe as surfaceMetric, surfaceTableRecipe as surfaceTable } from "./recipes.js";
2
2
  export function metricSurfaceClasses(tone = "neutral") {
3
3
  return surfaceMetric({ tone });
4
4
  }
@@ -0,0 +1,80 @@
1
+ import type { DevtoolsQueryDiagnostic, SvadminDevtoolsSnapshot } from '@svadmin/devtools-contract';
2
+ export declare const SVADMIN_DEVFRAME_CHANNEL = "svadmin:devtools";
3
+ export type { DevtoolsCacheDiagnostics, DevtoolsProviderDiagnostic, DevtoolsQueryDiagnostic, SvadminDevtoolsSnapshot, } from '@svadmin/devtools-contract';
4
+ export type SvadminDevtoolsBridge = {
5
+ getSnapshot: () => SvadminDevtoolsSnapshot | null;
6
+ subscribe: (listener: (snapshot: SvadminDevtoolsSnapshot) => void) => () => void;
7
+ cache: {
8
+ cancel: (selector?: DevtoolsQuerySelector) => Promise<void>;
9
+ invalidate: (selector?: DevtoolsQuerySelector) => Promise<void>;
10
+ refetch: (selector?: DevtoolsQuerySelector) => Promise<void>;
11
+ remove: (selector?: DevtoolsQuerySelector) => void;
12
+ reset: (selector?: DevtoolsQuerySelector) => Promise<void>;
13
+ clear: () => void;
14
+ clearMutations: () => void;
15
+ };
16
+ devframe: {
17
+ channelName: typeof SVADMIN_DEVFRAME_CHANNEL;
18
+ };
19
+ };
20
+ export type DevtoolsQuerySelector = Partial<Pick<DevtoolsQueryDiagnostic, 'provider' | 'resource' | 'operation'>>;
21
+ type QueryClientLike = {
22
+ getQueryCache: () => {
23
+ getAll: () => Array<{
24
+ queryKey: readonly unknown[];
25
+ queryHash: string;
26
+ }>;
27
+ clear: () => void;
28
+ };
29
+ invalidateQueries: (filters: {
30
+ queryKey?: readonly unknown[];
31
+ }) => Promise<void>;
32
+ cancelQueries: (filters: {
33
+ queryKey?: readonly unknown[];
34
+ }) => Promise<void>;
35
+ refetchQueries: (filters: {
36
+ queryKey?: readonly unknown[];
37
+ }) => Promise<void>;
38
+ removeQueries: (filters: {
39
+ queryKey?: readonly unknown[];
40
+ }) => void;
41
+ resetQueries: (filters: {
42
+ queryKey?: readonly unknown[];
43
+ }) => Promise<void>;
44
+ getMutationCache: () => {
45
+ clear: () => void;
46
+ };
47
+ };
48
+ export type SvadminDevframeProtocol = {
49
+ functions: {
50
+ pageScript: {
51
+ getSnapshot: () => SvadminDevtoolsSnapshot | null;
52
+ cacheCancel: (selector?: DevtoolsQuerySelector) => Promise<void>;
53
+ cacheInvalidate: (selector?: DevtoolsQuerySelector) => Promise<void>;
54
+ cacheRefetch: (selector?: DevtoolsQuerySelector) => Promise<void>;
55
+ cacheRemove: (selector?: DevtoolsQuerySelector) => void;
56
+ cacheReset: (selector?: DevtoolsQuerySelector) => Promise<void>;
57
+ cacheClear: () => void;
58
+ clearMutations: () => void;
59
+ };
60
+ };
61
+ };
62
+ export declare function publishSvadminDevtoolsSnapshot(next: SvadminDevtoolsSnapshot): void;
63
+ export declare function getSvadminDevtoolsSnapshot(): SvadminDevtoolsSnapshot | null;
64
+ export declare function subscribeSvadminDevtools(listener: (next: SvadminDevtoolsSnapshot) => void): () => void;
65
+ export declare function attachSvadminDevtoolsQueryClient(client: QueryClientLike): void;
66
+ export declare function createSvadminDevtoolsCacheActions(): {
67
+ cancel: (selector?: DevtoolsQuerySelector) => Promise<void>;
68
+ invalidate: (selector?: DevtoolsQuerySelector) => Promise<void>;
69
+ refetch: (selector?: DevtoolsQuerySelector) => Promise<void>;
70
+ remove: (selector?: DevtoolsQuerySelector) => void;
71
+ reset: (selector?: DevtoolsQuerySelector) => Promise<void>;
72
+ clear: () => void;
73
+ clearMutations: () => void | undefined;
74
+ };
75
+ export declare function installSvadminDevtoolsBridge(): void;
76
+ declare global {
77
+ interface Window {
78
+ __SVADMIN_DEVTOOLS__?: SvadminDevtoolsBridge;
79
+ }
80
+ }
@@ -0,0 +1,92 @@
1
+ import { parseQueryKey } from '@svadmin/core';
2
+ import { createPageScriptChannel } from 'devframe/in-page-channel';
3
+ import { DEV } from 'esm-env';
4
+ export const SVADMIN_DEVFRAME_CHANNEL = 'svadmin:devtools';
5
+ const listeners = new Set();
6
+ let snapshot = null;
7
+ let queryClient = null;
8
+ let devframeChannel = null;
9
+ export function publishSvadminDevtoolsSnapshot(next) {
10
+ snapshot = next;
11
+ for (const listener of listeners)
12
+ listener(next);
13
+ }
14
+ export function getSvadminDevtoolsSnapshot() {
15
+ return snapshot;
16
+ }
17
+ export function subscribeSvadminDevtools(listener) {
18
+ listeners.add(listener);
19
+ if (snapshot)
20
+ listener(snapshot);
21
+ return () => listeners.delete(listener);
22
+ }
23
+ function matchesSelector(query, selector) {
24
+ if (!selector || Object.keys(selector).length === 0)
25
+ return true;
26
+ const descriptor = parseQueryKey(query.queryKey);
27
+ if (!descriptor)
28
+ return false;
29
+ const operation = `${descriptor.kind}:${descriptor.action ?? 'call'}`;
30
+ return (selector.provider === undefined || selector.provider === descriptor.provider)
31
+ && (selector.resource === undefined || selector.resource === descriptor.resource)
32
+ && (selector.operation === undefined || selector.operation === operation);
33
+ }
34
+ function matchingQueryKeys(selector) {
35
+ return (queryClient?.getQueryCache().getAll() ?? [])
36
+ .filter((query) => matchesSelector(query, selector))
37
+ .map((query) => query.queryKey);
38
+ }
39
+ function withMatchingQueries(operation, selector) {
40
+ return Promise.all(matchingQueryKeys(selector).map((queryKey) => operation(queryKey))).then(() => undefined);
41
+ }
42
+ export function attachSvadminDevtoolsQueryClient(client) {
43
+ queryClient = client;
44
+ }
45
+ export function createSvadminDevtoolsCacheActions() {
46
+ return {
47
+ cancel: (selector) => withMatchingQueries((queryKey) => queryClient?.cancelQueries({ queryKey }), selector),
48
+ invalidate: (selector) => withMatchingQueries((queryKey) => queryClient?.invalidateQueries({ queryKey }), selector),
49
+ refetch: (selector) => withMatchingQueries((queryKey) => queryClient?.refetchQueries({ queryKey }), selector),
50
+ remove: (selector) => {
51
+ for (const queryKey of matchingQueryKeys(selector))
52
+ queryClient?.removeQueries({ queryKey });
53
+ },
54
+ reset: (selector) => withMatchingQueries((queryKey) => queryClient?.resetQueries({ queryKey }), selector),
55
+ clear: () => {
56
+ queryClient?.getQueryCache().clear();
57
+ },
58
+ clearMutations: () => queryClient?.getMutationCache().clear(),
59
+ };
60
+ }
61
+ export function installSvadminDevtoolsBridge() {
62
+ if (typeof window === 'undefined' || !DEV)
63
+ return;
64
+ if (!devframeChannel) {
65
+ const cache = createSvadminDevtoolsCacheActions();
66
+ devframeChannel = createPageScriptChannel({
67
+ name: SVADMIN_DEVFRAME_CHANNEL,
68
+ functions: {
69
+ getSnapshot: { type: 'query', handler: getSvadminDevtoolsSnapshot },
70
+ cacheCancel: { type: 'action', handler: cache.cancel },
71
+ cacheInvalidate: { type: 'action', handler: cache.invalidate },
72
+ cacheRefetch: { type: 'action', handler: cache.refetch },
73
+ cacheRemove: { type: 'action', handler: cache.remove },
74
+ cacheReset: { type: 'action', handler: cache.reset },
75
+ cacheClear: { type: 'action', handler: cache.clear },
76
+ clearMutations: { type: 'action', handler: cache.clearMutations },
77
+ },
78
+ });
79
+ }
80
+ const bridge = {
81
+ getSnapshot: getSvadminDevtoolsSnapshot,
82
+ subscribe: subscribeSvadminDevtools,
83
+ cache: createSvadminDevtoolsCacheActions(),
84
+ devframe: { channelName: SVADMIN_DEVFRAME_CHANNEL },
85
+ };
86
+ Object.defineProperty(window, '__SVADMIN_DEVTOOLS__', {
87
+ configurable: true,
88
+ enumerable: false,
89
+ value: bridge,
90
+ writable: false,
91
+ });
92
+ }
package/dist/index.d.ts CHANGED
@@ -1,7 +1,24 @@
1
1
  export { surfaceDesignContract } from "./design-contract.js";
2
2
  export type { SurfaceTone, SurfaceDensity } from "./design-contract.js";
3
+ export { designSystemComponents, type DesignComponentContract, type DesignComponentId, type DesignComponentState, } from "./design-system-components.js";
4
+ export { metricSurfaceClasses, tableSurfaceClasses } from "./design-system.js";
3
5
  export { default as AdminApp } from './components/AdminApp.svelte';
4
6
  export { default as AutoTable } from './components/AutoTable.svelte';
7
+ export { default as SegmentedControl } from './components/SegmentedControl.svelte';
8
+ export type { SegmentedControlOption } from './components/SegmentedControl.svelte';
9
+ export { default as RadioGroup } from './components/RadioGroup.svelte';
10
+ export type { RadioGroupOption } from './components/RadioGroup.svelte';
11
+ export { default as TagsInput } from './components/TagsInput.svelte';
12
+ export { default as Slider } from './components/Slider.svelte';
13
+ export { default as RangeSlider } from './components/RangeSlider.svelte';
14
+ export type { RangeSliderValue } from './components/RangeSlider.svelte';
15
+ export { default as ColorPicker } from './components/ColorPicker.svelte';
16
+ export { default as Rate } from './components/Rate.svelte';
17
+ export { default as PivotExportButton } from './components/PivotExportButton.svelte';
18
+ export type { PivotCache } from '@svadmin/core/pivot';
19
+ export { decodeSavedListViewMutationResult, decodeSavedListViewRemoveResult, decodeSavedListViewAccess, } from './components/saved-list-views.js';
20
+ export type { SavedListView, SavedListViewState, SavedListViewProvider, SavedListViewMutation, SavedListViewMutationSuccess, SavedListViewMutationConflict, SavedListViewRemoveSuccess, ListPreferenceScope, SavedListViewAccess, SavedListViewAccessMode, SavedListViewSubject, } from './components/saved-list-views.js';
21
+ export type { BatchSelection } from './components/table-contract.js';
5
22
  export { default as AutoForm } from './components/AutoForm.svelte';
6
23
  export { default as ShowPage } from './components/ShowPage.svelte';
7
24
  export { default as ConfirmDialog } from './components/ConfirmDialog.svelte';
@@ -30,6 +47,9 @@ export { default as CanAccess } from './components/CanAccess.svelte';
30
47
  export { default as Can } from './components/CanAccess.svelte';
31
48
  export { default as UndoableNotification } from './components/UndoableNotification.svelte';
32
49
  export { default as DevTools } from './components/DevTools.svelte';
50
+ export { default as DevframePanel } from './components/DevframePanel.svelte';
51
+ export { attachSvadminDevtoolsQueryClient, createSvadminDevtoolsCacheActions, getSvadminDevtoolsSnapshot, installSvadminDevtoolsBridge, publishSvadminDevtoolsSnapshot, subscribeSvadminDevtools, SVADMIN_DEVFRAME_CHANNEL, } from './devtools-bridge.js';
52
+ export type { DevtoolsCacheDiagnostics, DevtoolsProviderDiagnostic, DevtoolsQueryDiagnostic, SvadminDevtoolsBridge, SvadminDevtoolsSnapshot, DevtoolsQuerySelector, SvadminDevframeProtocol, } from './devtools-bridge.js';
33
53
  export { default as Authenticated } from './components/Authenticated.svelte';
34
54
  export { default as UpdatePasswordPage } from './components/UpdatePasswordPage.svelte';
35
55
  export { default as ProfilePage } from './components/ProfilePage.svelte';
@@ -46,6 +66,8 @@ export { default as CreatePage } from './components/CreatePage.svelte';
46
66
  export { default as EditPage } from './components/EditPage.svelte';
47
67
  export { default as AutoSaveIndicator } from './components/AutoSaveIndicator.svelte';
48
68
  export { default as ErrorComponent } from './components/ErrorComponent.svelte';
69
+ export { default as ErrorSummary } from './components/ErrorSummary.svelte';
70
+ export type { FormErrorEntry } from './components/ErrorSummary.svelte';
49
71
  export { default as PageSkeleton } from './components/PageSkeleton.svelte';
50
72
  export { default as NavigateToResource } from './components/NavigateToResource.svelte';
51
73
  export { default as CatchAllNavigate } from './components/CatchAllNavigate.svelte';
@@ -69,10 +91,13 @@ export { default as ImportWizard } from './components/ImportWizard.svelte';
69
91
  export { default as ColumnHeaderFilter } from './components/ColumnHeaderFilter.svelte';
70
92
  export { default as TreeTable } from './components/TreeTable.svelte';
71
93
  export type { TreeTableColumn } from './components/TreeTable.svelte';
94
+ export type { TreeTableSort } from './tree-table-model.js';
72
95
  export { default as SensitiveDataMask } from './components/SensitiveDataMask.svelte';
73
96
  export type { MaskType } from './components/SensitiveDataMask.svelte';
74
97
  export { default as ApprovalActionCard } from './components/ApprovalActionCard.svelte';
75
98
  export type { ApprovalStatus } from './components/ApprovalActionCard.svelte';
99
+ export { default as ApprovalCenter } from './components/ApprovalCenter.svelte';
100
+ export { default as DashboardView } from './components/DashboardView.svelte';
76
101
  export { default as StepForm } from './components/StepForm.svelte';
77
102
  export type { FormStep } from './components/StepForm.svelte';
78
103
  export { default as ModalForm } from './components/ModalForm.svelte';
@@ -114,13 +139,15 @@ export { default as SignaturePad } from './components/SignaturePad.svelte';
114
139
  export { default as PdfDocumentViewer } from './components/PdfDocumentViewer.svelte';
115
140
  export type { DocumentStamp } from './components/PdfDocumentViewer.svelte';
116
141
  export { default as SpreadsheetView } from './components/SpreadsheetView.svelte';
117
- export type { SheetData } from './components/SpreadsheetView.svelte';
142
+ export type { SheetData, SpreadsheetLimits } from './components/SpreadsheetView.svelte';
118
143
  export { default as DecisionTable } from './components/DecisionTable.svelte';
119
144
  export type { DecisionColumn, DecisionRule } from './components/DecisionTable.svelte';
120
145
  export { default as OfflineSyncBanner } from './components/OfflineSyncBanner.svelte';
121
146
  export type { PendingMutation } from './components/OfflineSyncBanner.svelte';
122
147
  export { default as InfiniteList } from './components/InfiniteList.svelte';
123
148
  export { default as ComboboxField } from './components/ComboboxField.svelte';
149
+ export { default as RelationPicker } from './components/RelationPicker.svelte';
150
+ export type { RelationPickerOption } from './components/RelationPicker.svelte';
124
151
  export { default as PasswordInput } from './components/PasswordInput.svelte';
125
152
  export { default as NumericInput } from './components/NumericInput.svelte';
126
153
  export { default as NumberInput } from './components/NumberInput.svelte';
@@ -129,7 +156,15 @@ export { default as PercentInput } from './components/PercentInput.svelte';
129
156
  export { default as DateTimeInput } from './components/DateTimeInput.svelte';
130
157
  export type { DateTimeInputMode } from './components/DateTimeInput.svelte';
131
158
  export { default as DateRangeInput } from './components/DateRangeInput.svelte';
132
- export type { DateRangeInputValue } from './components/DateRangeInput.svelte';
159
+ export type { DateRangeInputValue, DateRangePreset } from './components/DateRangeInput.svelte';
160
+ export { default as DatePicker } from './components/DatePicker.svelte';
161
+ export type { DatePickerProps } from './components/DatePicker.svelte';
162
+ export { default as DateRangePicker } from './components/DateRangePicker.svelte';
163
+ export type { DateRangePickerProps } from './components/DateRangePicker.svelte';
164
+ export { default as TimePicker } from './components/TimePicker.svelte';
165
+ export type { TimePickerProps } from './components/TimePicker.svelte';
166
+ export { default as DateTimePicker } from './components/DateTimePicker.svelte';
167
+ export type { DateTimePickerProps } from './components/DateTimePicker.svelte';
133
168
  export { default as AnomalyBadge } from "./components/AnomalyBadge.svelte";
134
169
  export { default as AnimatedCounter } from "./components/AnimatedCounter.svelte";
135
170
  export { default as KeyboardShortcuts } from "./components/KeyboardShortcuts.svelte";