@svadmin/ui 0.84.1 → 0.86.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 (71) hide show
  1. package/README.md +29 -0
  2. package/dist/app-shell.css +216 -0
  3. package/dist/app.css +496 -171
  4. package/dist/app.theme.css +496 -171
  5. package/dist/component-registry.d.ts +7292 -529
  6. package/dist/component-registry.js +32 -3
  7. package/dist/components/AppShellPage.svelte +172 -0
  8. package/dist/components/AppShellPage.svelte.d.ts +30 -0
  9. package/dist/components/AuthPageShell.svelte +14 -7
  10. package/dist/components/AuthPageShell.svelte.d.ts +1 -0
  11. package/dist/components/AutoForm.svelte +7 -12
  12. package/dist/components/AutoForm.svelte.d.ts +0 -1
  13. package/dist/components/AutoTable.svelte +2 -0
  14. package/dist/components/AutoTable.svelte.d.ts +2 -0
  15. package/dist/components/ConfigurationPage.svelte +0 -3
  16. package/dist/components/ConfigurationPage.svelte.d.ts +0 -1
  17. package/dist/components/CreatePage.svelte +1 -5
  18. package/dist/components/CreatePage.svelte.d.ts +0 -1
  19. package/dist/components/EditPage.svelte +1 -5
  20. package/dist/components/EditPage.svelte.d.ts +0 -1
  21. package/dist/components/FieldRenderer.svelte +2 -10
  22. package/dist/components/FieldRenderer.svelte.d.ts +0 -1
  23. package/dist/components/ListPage.svelte +2 -5
  24. package/dist/components/ListPage.svelte.d.ts +0 -1
  25. package/dist/components/PageHeader.svelte +1 -3
  26. package/dist/components/PageHeader.svelte.d.ts +0 -1
  27. package/dist/components/PagePattern.svelte +36 -13
  28. package/dist/components/PagePattern.svelte.d.ts +7 -0
  29. package/dist/components/QuickEditDrawer.svelte +0 -1
  30. package/dist/components/ShowPage.svelte +5 -9
  31. package/dist/components/ShowPage.svelte.d.ts +0 -1
  32. package/dist/components/SvarAutoTable.svelte +2 -1
  33. package/dist/components/SvarDataGrid.svelte +8 -4
  34. package/dist/components/SvarDataGrid.svelte.d.ts +3 -0
  35. package/dist/components/SvarResourceTable.svelte +0 -1
  36. package/dist/components/SvarResourceTable.svelte.d.ts +0 -1
  37. package/dist/components/SvarResourceTableView.svelte +2 -2
  38. package/dist/components/auto-table-grid.d.ts +1 -0
  39. package/dist/components/content/ContentPageHeader.svelte +2 -1
  40. package/dist/components/content/ContentPageHeader.svelte.d.ts +1 -0
  41. package/dist/components/content/ContentPageShell.svelte +1 -1
  42. package/dist/components/content/ContentPageShell.svelte.d.ts +1 -0
  43. package/dist/components/content/DataPanel.svelte +58 -0
  44. package/dist/components/content/DataPanel.svelte.d.ts +16 -0
  45. package/dist/components/content/DescriptionList.svelte +5 -8
  46. package/dist/components/content/DescriptionList.svelte.d.ts +0 -1
  47. package/dist/components/content/FilterToolbar.svelte +2 -5
  48. package/dist/components/content/FilterToolbar.svelte.d.ts +0 -1
  49. package/dist/components/content/NetworkTable.svelte +3 -3
  50. package/dist/components/content/NetworkTable.svelte.d.ts +0 -1
  51. package/dist/components/content/PageSection.svelte +1 -1
  52. package/dist/components/content/StatusTabs.svelte +2 -7
  53. package/dist/components/content/StatusTabs.svelte.d.ts +0 -1
  54. package/dist/components/content/index.d.ts +1 -0
  55. package/dist/components/content/index.js +1 -0
  56. package/dist/components/ui/table/index.d.ts +0 -1
  57. package/dist/components/ui/table/table.svelte +1 -0
  58. package/dist/components/ui/table/table.svelte.d.ts +1 -0
  59. package/dist/components.css +1 -11
  60. package/dist/data-panel.css +88 -0
  61. package/dist/design-contract.d.ts +11 -0
  62. package/dist/design-contract.js +8 -0
  63. package/dist/design-system.d.ts +3 -2
  64. package/dist/design-system.js +3 -2
  65. package/dist/index.d.ts +4 -2
  66. package/dist/index.js +2 -0
  67. package/dist/page-chrome.css +53 -61
  68. package/dist/recipes.d.ts +67 -154
  69. package/dist/recipes.js +32 -68
  70. package/dist/styles/recipes.css +15 -48
  71. package/package.json +4 -4
package/dist/recipes.d.ts CHANGED
@@ -120,14 +120,6 @@ declare const contentPageRecipeStyles: import("tailwind-variants").TVReturnType<
120
120
  root: string;
121
121
  };
122
122
  };
123
- density: {
124
- compact: {
125
- root: string;
126
- };
127
- comfortable: {
128
- root: string;
129
- };
130
- };
131
123
  }, {
132
124
  root: string;
133
125
  }, undefined, {
@@ -142,14 +134,6 @@ declare const contentPageRecipeStyles: import("tailwind-variants").TVReturnType<
142
134
  root: string;
143
135
  };
144
136
  };
145
- density: {
146
- compact: {
147
- root: string;
148
- };
149
- comfortable: {
150
- root: string;
151
- };
152
- };
153
137
  }, {
154
138
  root: string;
155
139
  }, import("tailwind-variants").TVReturnTypeLike<{
@@ -164,37 +148,38 @@ declare const contentPageRecipeStyles: import("tailwind-variants").TVReturnType<
164
148
  root: string;
165
149
  };
166
150
  };
167
- density: {
168
- compact: {
169
- root: string;
170
- };
171
- comfortable: {
172
- root: string;
173
- };
174
- };
175
151
  }, {
176
152
  root: string;
177
153
  }>>;
178
154
  declare const contentHeaderRecipeStyles: import("tailwind-variants").TVReturnType<{
179
- density: {
180
- compact: {
181
- root: string;
182
- row: string;
183
- heading: string;
184
- title: string;
185
- description: string;
186
- actions: string;
155
+ [key: string]: {
156
+ [key: string]: import("tailwind-variants").ClassValue | {
157
+ title?: import("tailwind-variants").ClassValue;
158
+ description?: import("tailwind-variants").ClassValue;
159
+ root?: import("tailwind-variants").ClassValue;
160
+ row?: import("tailwind-variants").ClassValue;
161
+ actions?: import("tailwind-variants").ClassValue;
162
+ heading?: import("tailwind-variants").ClassValue;
163
+ breadcrumbs?: import("tailwind-variants").ClassValue;
164
+ currentCrumb?: import("tailwind-variants").ClassValue;
165
+ eyebrow?: import("tailwind-variants").ClassValue;
187
166
  };
188
- comfortable: {
189
- root: string;
190
- row: string;
191
- heading: string;
192
- title: string;
193
- description: string;
194
- actions: string;
167
+ };
168
+ } | {
169
+ [x: string]: {
170
+ [x: string]: import("tailwind-variants").ClassValue | {
171
+ title?: import("tailwind-variants").ClassValue;
172
+ description?: import("tailwind-variants").ClassValue;
173
+ root?: import("tailwind-variants").ClassValue;
174
+ row?: import("tailwind-variants").ClassValue;
175
+ actions?: import("tailwind-variants").ClassValue;
176
+ heading?: import("tailwind-variants").ClassValue;
177
+ breadcrumbs?: import("tailwind-variants").ClassValue;
178
+ currentCrumb?: import("tailwind-variants").ClassValue;
179
+ eyebrow?: import("tailwind-variants").ClassValue;
195
180
  };
196
181
  };
197
- }, {
182
+ } | {}, {
198
183
  root: string;
199
184
  breadcrumbs: string;
200
185
  currentCrumb: string;
@@ -205,25 +190,20 @@ declare const contentHeaderRecipeStyles: import("tailwind-variants").TVReturnTyp
205
190
  description: string;
206
191
  actions: string;
207
192
  }, undefined, {
208
- density: {
209
- compact: {
210
- root: string;
211
- row: string;
212
- heading: string;
213
- title: string;
214
- description: string;
215
- actions: string;
216
- };
217
- comfortable: {
218
- root: string;
219
- row: string;
220
- heading: string;
221
- title: string;
222
- description: string;
223
- actions: string;
193
+ [key: string]: {
194
+ [key: string]: import("tailwind-variants").ClassValue | {
195
+ title?: import("tailwind-variants").ClassValue;
196
+ description?: import("tailwind-variants").ClassValue;
197
+ root?: import("tailwind-variants").ClassValue;
198
+ row?: import("tailwind-variants").ClassValue;
199
+ actions?: import("tailwind-variants").ClassValue;
200
+ heading?: import("tailwind-variants").ClassValue;
201
+ breadcrumbs?: import("tailwind-variants").ClassValue;
202
+ currentCrumb?: import("tailwind-variants").ClassValue;
203
+ eyebrow?: import("tailwind-variants").ClassValue;
224
204
  };
225
205
  };
226
- }, {
206
+ } | {}, {
227
207
  root: string;
228
208
  breadcrumbs: string;
229
209
  currentCrumb: string;
@@ -233,26 +213,7 @@ declare const contentHeaderRecipeStyles: import("tailwind-variants").TVReturnTyp
233
213
  title: string;
234
214
  description: string;
235
215
  actions: string;
236
- }, import("tailwind-variants").TVReturnTypeLike<{
237
- density: {
238
- compact: {
239
- root: string;
240
- row: string;
241
- heading: string;
242
- title: string;
243
- description: string;
244
- actions: string;
245
- };
246
- comfortable: {
247
- root: string;
248
- row: string;
249
- heading: string;
250
- title: string;
251
- description: string;
252
- actions: string;
253
- };
254
- };
255
- }, {
216
+ }, import("tailwind-variants").TVReturnTypeLike<unknown, {
256
217
  root: string;
257
218
  breadcrumbs: string;
258
219
  currentCrumb: string;
@@ -650,16 +611,6 @@ declare const surfaceMetricRecipeStyles: import("tailwind-variants").TVReturnTyp
650
611
  state: string;
651
612
  };
652
613
  };
653
- density: {
654
- compact: {
655
- card: string;
656
- state: string;
657
- };
658
- comfortable: {
659
- card: string;
660
- state: string;
661
- };
662
- };
663
614
  }, {
664
615
  root: string;
665
616
  card: string;
@@ -688,16 +639,6 @@ declare const surfaceMetricRecipeStyles: import("tailwind-variants").TVReturnTyp
688
639
  state: string;
689
640
  };
690
641
  };
691
- density: {
692
- compact: {
693
- card: string;
694
- state: string;
695
- };
696
- comfortable: {
697
- card: string;
698
- state: string;
699
- };
700
- };
701
642
  }, {
702
643
  root: string;
703
644
  card: string;
@@ -726,16 +667,6 @@ declare const surfaceMetricRecipeStyles: import("tailwind-variants").TVReturnTyp
726
667
  state: string;
727
668
  };
728
669
  };
729
- density: {
730
- compact: {
731
- card: string;
732
- state: string;
733
- };
734
- comfortable: {
735
- card: string;
736
- state: string;
737
- };
738
- };
739
670
  }, {
740
671
  root: string;
741
672
  card: string;
@@ -743,23 +674,28 @@ declare const surfaceMetricRecipeStyles: import("tailwind-variants").TVReturnTyp
743
674
  state: string;
744
675
  }>>;
745
676
  declare const surfaceTableRecipeStyles: import("tailwind-variants").TVReturnType<{
746
- density: {
747
- compact: {
748
- header: string;
749
- content: string;
750
- head: string;
751
- cell: string;
752
- state: string;
677
+ [key: string]: {
678
+ [key: string]: import("tailwind-variants").ClassValue | {
679
+ state?: import("tailwind-variants").ClassValue;
680
+ content?: import("tailwind-variants").ClassValue;
681
+ head?: import("tailwind-variants").ClassValue;
682
+ header?: import("tailwind-variants").ClassValue;
683
+ root?: import("tailwind-variants").ClassValue;
684
+ cell?: import("tailwind-variants").ClassValue;
753
685
  };
754
- comfortable: {
755
- header: string;
756
- content: string;
757
- head: string;
758
- cell: string;
759
- state: string;
686
+ };
687
+ } | {
688
+ [x: string]: {
689
+ [x: string]: import("tailwind-variants").ClassValue | {
690
+ state?: import("tailwind-variants").ClassValue;
691
+ content?: import("tailwind-variants").ClassValue;
692
+ head?: import("tailwind-variants").ClassValue;
693
+ header?: import("tailwind-variants").ClassValue;
694
+ root?: import("tailwind-variants").ClassValue;
695
+ cell?: import("tailwind-variants").ClassValue;
760
696
  };
761
697
  };
762
- }, {
698
+ } | {}, {
763
699
  root: string;
764
700
  header: string;
765
701
  content: string;
@@ -767,47 +703,24 @@ declare const surfaceTableRecipeStyles: import("tailwind-variants").TVReturnType
767
703
  cell: string;
768
704
  state: string;
769
705
  }, undefined, {
770
- density: {
771
- compact: {
772
- header: string;
773
- content: string;
774
- head: string;
775
- cell: string;
776
- state: string;
777
- };
778
- comfortable: {
779
- header: string;
780
- content: string;
781
- head: string;
782
- cell: string;
783
- state: string;
706
+ [key: string]: {
707
+ [key: string]: import("tailwind-variants").ClassValue | {
708
+ state?: import("tailwind-variants").ClassValue;
709
+ content?: import("tailwind-variants").ClassValue;
710
+ head?: import("tailwind-variants").ClassValue;
711
+ header?: import("tailwind-variants").ClassValue;
712
+ root?: import("tailwind-variants").ClassValue;
713
+ cell?: import("tailwind-variants").ClassValue;
784
714
  };
785
715
  };
786
- }, {
716
+ } | {}, {
787
717
  root: string;
788
718
  header: string;
789
719
  content: string;
790
720
  head: string;
791
721
  cell: string;
792
722
  state: string;
793
- }, import("tailwind-variants").TVReturnTypeLike<{
794
- density: {
795
- compact: {
796
- header: string;
797
- content: string;
798
- head: string;
799
- cell: string;
800
- state: string;
801
- };
802
- comfortable: {
803
- header: string;
804
- content: string;
805
- head: string;
806
- cell: string;
807
- state: string;
808
- };
809
- };
810
- }, {
723
+ }, import("tailwind-variants").TVReturnTypeLike<unknown, {
811
724
  root: string;
812
725
  header: string;
813
726
  content: string;
package/dist/recipes.js CHANGED
@@ -55,53 +55,28 @@ const buttonRecipeDefaults = { variant: "default", size: "default" };
55
55
  const badgeRecipeDefaults = { variant: "default" };
56
56
  const textareaRecipeStyles = tv({ base: "svadmin-textarea" });
57
57
  const contentPageRecipeStyles = tv({
58
- slots: { root: `${semantic.page} svadmin-content-page` },
58
+ slots: { root: `${semantic.page} svadmin-content-page space-y-[var(--svadmin-space-5)]` },
59
59
  variants: {
60
60
  width: {
61
61
  narrow: { root: "max-w-3xl" },
62
62
  default: { root: "max-w-[74rem]" },
63
63
  wide: { root: "max-w-[92rem]" },
64
64
  },
65
- density: {
66
- compact: { root: "space-y-4" },
67
- comfortable: { root: "space-y-6" },
68
- },
69
65
  },
70
- defaultVariants: { width: "default", density: "comfortable" },
66
+ defaultVariants: { width: "default" },
71
67
  });
72
68
  const contentHeaderRecipeStyles = tv({
73
69
  slots: {
74
- root: "svadmin-content-header",
75
- breadcrumbs: `${semantic.group} text-xs text-muted-foreground`,
70
+ root: "svadmin-content-header space-y-[var(--svadmin-space-3)]",
71
+ breadcrumbs: `${semantic.group} text-[length:var(--svadmin-text-caption)] text-muted-foreground`,
76
72
  currentCrumb: "text-foreground",
77
- row: "flex flex-col sm:flex-row sm:items-start sm:justify-between",
78
- heading: "min-w-0",
79
- eyebrow: "text-xs font-medium text-muted-foreground",
80
- title: "font-semibold leading-tight text-foreground",
81
- description: "max-w-2xl text-muted-foreground",
82
- actions: "flex shrink-0 flex-wrap items-center",
83
- },
84
- variants: {
85
- density: {
86
- compact: {
87
- root: "space-y-2",
88
- row: "gap-3",
89
- heading: "space-y-0.5",
90
- title: "text-lg leading-tight",
91
- description: "text-[0.8125rem] leading-5",
92
- actions: "gap-1.5",
93
- },
94
- comfortable: {
95
- root: "space-y-3",
96
- row: "gap-6",
97
- heading: "space-y-1",
98
- title: "text-xl leading-tight",
99
- description: "text-sm leading-6",
100
- actions: "gap-2",
101
- },
102
- },
73
+ row: "flex flex-col gap-[var(--svadmin-space-5)] sm:flex-row sm:items-start sm:justify-between",
74
+ heading: "min-w-0 space-y-[var(--svadmin-space-1)]",
75
+ eyebrow: "text-[length:var(--svadmin-text-caption)] font-medium text-muted-foreground",
76
+ title: "text-[length:var(--svadmin-text-title)] font-semibold leading-[var(--svadmin-leading-tight)] text-foreground",
77
+ description: "max-w-[var(--svadmin-measure)] text-[length:var(--svadmin-text-body)] leading-[var(--svadmin-leading-body)] text-muted-foreground",
78
+ actions: "flex shrink-0 flex-wrap items-center gap-[var(--svadmin-space-2)]",
103
79
  },
104
- defaultVariants: { density: "comfortable" },
105
80
  });
106
81
  const metricBlockRecipeStyles = tv({
107
82
  slots: {
@@ -127,18 +102,18 @@ const metricBlockRecipeStyles = tv({
127
102
  });
128
103
  const productSectionRecipeStyles = tv({
129
104
  slots: {
130
- root: "flex flex-wrap items-start justify-between gap-3",
131
- heading: "min-w-0 flex-[1_1_16rem]",
132
- title: "m-0 text-base font-semibold text-foreground [overflow-wrap:anywhere]",
133
- description: "mt-1 max-w-[65ch] text-[0.8125rem] leading-6 text-muted-foreground",
134
- actions: "flex shrink-0 flex-wrap items-center gap-2",
105
+ root: "flex flex-wrap items-start justify-between gap-[var(--svadmin-space-3)]",
106
+ heading: "min-w-0 flex-[1_1_var(--svadmin-chrome-basis)]",
107
+ title: "m-0 text-[length:var(--svadmin-text-section)] font-semibold text-foreground [overflow-wrap:anywhere]",
108
+ description: "mt-[var(--svadmin-space-1)] max-w-[var(--svadmin-measure)] text-[length:var(--svadmin-text-label)] leading-[var(--svadmin-leading-body)] text-muted-foreground",
109
+ actions: "flex shrink-0 flex-wrap items-center gap-[var(--svadmin-space-2)]",
135
110
  },
136
111
  });
137
112
  const productToolbarRecipeStyles = tv({
138
113
  slots: {
139
- root: "flex flex-wrap items-center justify-between gap-3 border-b border-border py-3",
140
- leading: "flex min-w-0 flex-[1_1_16rem] flex-wrap items-center gap-2",
141
- trailing: "ms-auto flex min-w-0 flex-wrap items-center gap-2",
114
+ root: "flex flex-wrap items-center justify-between gap-[var(--svadmin-space-3)] border-b border-border py-[var(--svadmin-space-3)]",
115
+ leading: "flex min-w-0 flex-[1_1_var(--svadmin-chrome-basis)] flex-wrap items-center gap-[var(--svadmin-space-2)]",
116
+ trailing: "ms-auto flex min-w-0 flex-wrap items-center gap-[var(--svadmin-space-2)]",
142
117
  },
143
118
  });
144
119
  const productWorkspaceRecipeStyles = tv({
@@ -155,12 +130,12 @@ const productWorkspaceRecipeStyles = tv({
155
130
  const productSettingsRecipeStyles = tv({
156
131
  slots: {
157
132
  root: `${semantic.body} min-w-0`,
158
- header: "flex flex-wrap items-start justify-between gap-3 border-b border-border py-4",
159
- heading: "min-w-0 flex-[1_1_16rem]",
160
- title: "m-0 text-base font-semibold text-foreground [overflow-wrap:anywhere]",
161
- description: "mt-1 max-w-[65ch] text-[0.8125rem] leading-6 text-muted-foreground",
162
- actions: "flex shrink-0 flex-wrap items-center gap-2",
163
- body: "min-w-0 py-1",
133
+ header: "flex flex-wrap items-start justify-between gap-[var(--svadmin-space-3)] border-b border-border py-[var(--svadmin-space-4)]",
134
+ heading: "min-w-0 flex-[1_1_var(--svadmin-chrome-basis)]",
135
+ title: "m-0 text-[length:var(--svadmin-text-section)] font-semibold text-foreground [overflow-wrap:anywhere]",
136
+ description: "mt-[var(--svadmin-space-1)] max-w-[var(--svadmin-measure)] text-[length:var(--svadmin-text-label)] leading-[var(--svadmin-leading-body)] text-muted-foreground",
137
+ actions: "flex shrink-0 flex-wrap items-center gap-[var(--svadmin-space-2)]",
138
+ body: "min-w-0 py-[var(--svadmin-space-1)]",
164
139
  },
165
140
  });
166
141
  const productSettingsRowRecipeStyles = tv({
@@ -190,9 +165,9 @@ const productStatusRecipeStyles = tv({
190
165
  const surfaceMetricRecipeStyles = tv({
191
166
  slots: {
192
167
  root: "surface-metric__root min-w-0",
193
- card: "surface-metric__card border-s-[3px] border-solid",
168
+ card: "surface-metric__card border-s-[3px] border-solid p-5",
194
169
  description: "surface-metric__description text-muted-foreground",
195
- state: "surface-metric__state [--svadmin-metric-state-border-width:3px]",
170
+ state: "surface-metric__state [--svadmin-metric-state-border-width:3px] [--svadmin-metric-state-padding:1.25rem] [--svadmin-metric-state-height:6rem]",
196
171
  },
197
172
  variants: {
198
173
  tone: {
@@ -202,29 +177,18 @@ const surfaceMetricRecipeStyles = tv({
202
177
  danger: { card: "border-s-destructive", state: "[--svadmin-metric-state-accent:var(--destructive)]" },
203
178
  info: { card: "border-s-info", state: "[--svadmin-metric-state-accent:var(--info)]" },
204
179
  },
205
- density: {
206
- compact: { card: "p-3", state: "[--svadmin-metric-state-padding:0.75rem] [--svadmin-metric-state-height:4.5rem]" },
207
- comfortable: { card: "p-5", state: "[--svadmin-metric-state-padding:1.25rem] [--svadmin-metric-state-height:6rem]" },
208
- },
209
180
  },
210
- defaultVariants: { tone: "neutral", density: "comfortable" },
181
+ defaultVariants: { tone: "neutral" },
211
182
  });
212
183
  const surfaceTableRecipeStyles = tv({
213
184
  slots: {
214
185
  root: "surface-table__root min-w-0",
215
- header: "surface-table__header",
216
- content: "surface-table__content",
217
- head: "surface-table__head",
218
- cell: "surface-table__cell",
219
- state: "surface-table__state text-muted-foreground",
220
- },
221
- variants: {
222
- density: {
223
- compact: { header: "px-3", content: "px-3", head: "[&[data-slot=table-head]]:py-1 [&[data-slot=table-head]]:text-xs", cell: "[&[data-slot=table-cell]]:py-1 [&[data-slot=table-cell]]:text-xs", state: "[--svadmin-table-state-height:6rem]" },
224
- comfortable: { header: "px-4", content: "px-4", head: "[&[data-slot=table-head]]:py-2 [&[data-slot=table-head]]:text-sm", cell: "[&[data-slot=table-cell]]:py-2 [&[data-slot=table-cell]]:text-sm", state: "[--svadmin-table-state-height:8rem]" },
225
- },
186
+ header: "surface-table__header px-[var(--svadmin-space-4)]",
187
+ content: "surface-table__content px-[var(--svadmin-space-4)]",
188
+ head: "surface-table__head [&[data-slot=table-head]]:py-[var(--svadmin-space-2)] [&[data-slot=table-head]]:text-[length:var(--svadmin-text-body)]",
189
+ cell: "surface-table__cell [&[data-slot=table-cell]]:py-[var(--svadmin-space-2)] [&[data-slot=table-cell]]:text-[length:var(--svadmin-text-body)]",
190
+ state: "surface-table__state text-muted-foreground [--svadmin-table-state-height:var(--svadmin-table-state-min-h)]",
226
191
  },
227
- defaultVariants: { density: "comfortable" },
228
192
  });
229
193
  // undefined 使用公开默认值;null 显式禁用该变体,不能交给 tv 再补默认值。
230
194
  export const buttonRecipe = ({ variant = buttonRecipeDefaults.variant, size = buttonRecipeDefaults.size, ...props } = {}) => ({
@@ -424,6 +424,7 @@
424
424
  .svadmin-surface-metric__card {
425
425
  border-inline-start-style: solid;
426
426
  border-inline-start-width: 3px;
427
+ padding: var(--svadmin-spacing-lg);
427
428
  }
428
429
 
429
430
  .svadmin-surface-metric__description {
@@ -432,14 +433,28 @@
432
433
 
433
434
  .svadmin-surface-metric__state {
434
435
  --svadmin-metric-state-border-width: 3px;
436
+ --svadmin-metric-state-padding: 1.25rem;
437
+ --svadmin-metric-state-height: 6rem;
435
438
  }
436
439
 
437
440
  .svadmin-surface-table__root {
438
441
  min-width: 0;
439
442
  }
440
443
 
444
+ .svadmin-surface-table__header,
445
+ .svadmin-surface-table__content {
446
+ padding-inline: var(--svadmin-spacing-md);
447
+ }
448
+
449
+ .svadmin-surface-table__head[data-slot="table-head"],
450
+ .svadmin-surface-table__cell[data-slot="table-cell"] {
451
+ padding-block: 0.5rem;
452
+ font-size: var(--svadmin-font-sizes-body);
453
+ }
454
+
441
455
  .svadmin-surface-table__state {
442
456
  color: var(--svadmin-colors-muted);
457
+ --svadmin-table-state-height: 8rem;
443
458
  }
444
459
 
445
460
  :where(.svadmin-content-header__root > :not(:last-child)) {
@@ -1007,10 +1022,6 @@
1007
1022
  border-color: var(--svadmin-colors-border);
1008
1023
  }
1009
1024
 
1010
- .svadmin-product-list__table [data-table-density=comfortable] [data-slot=table-cell] {
1011
- padding-block: calc(var(--spacing, 0.25rem) * 4);
1012
- }
1013
-
1014
1025
  .svadmin-product-list__table [data-slot=table] {
1015
1026
  border-collapse: collapse;
1016
1027
  font-size: var(--svadmin-font-sizes-body);
@@ -1120,15 +1131,6 @@
1120
1131
  --svadmin-metric-state-accent: var(--svadmin-colors-border);
1121
1132
  }
1122
1133
 
1123
- .svadmin-surface-metric__card--density_comfortable {
1124
- padding: var(--svadmin-spacing-lg);
1125
- }
1126
-
1127
- .svadmin-surface-metric__state--density_comfortable {
1128
- --svadmin-metric-state-padding: 1.25rem;
1129
- --svadmin-metric-state-height: 6rem;
1130
- }
1131
-
1132
1134
  .svadmin-surface-metric__card--tone_success {
1133
1135
  border-inline-start-color: var(--svadmin-colors-success);
1134
1136
  }
@@ -1161,41 +1163,6 @@
1161
1163
  --svadmin-metric-state-accent: var(--svadmin-colors-info);
1162
1164
  }
1163
1165
 
1164
- .svadmin-surface-metric__card--density_compact {
1165
- padding: var(--svadmin-spacing-sm);
1166
- }
1167
-
1168
- .svadmin-surface-metric__state--density_compact {
1169
- --svadmin-metric-state-padding: 0.75rem;
1170
- --svadmin-metric-state-height: 4.5rem;
1171
- }
1172
-
1173
- .svadmin-surface-table__header--density_comfortable,.svadmin-surface-table__content--density_comfortable {
1174
- padding-inline: var(--svadmin-spacing-md);
1175
- }
1176
-
1177
- .svadmin-surface-table__head--density_comfortable[data-slot="table-head"],.svadmin-surface-table__cell--density_comfortable[data-slot="table-cell"] {
1178
- padding-block: 0.5rem;
1179
- font-size: var(--svadmin-font-sizes-body);
1180
- }
1181
-
1182
- .svadmin-surface-table__state--density_comfortable {
1183
- --svadmin-table-state-height: 8rem;
1184
- }
1185
-
1186
- .svadmin-surface-table__header--density_compact,.svadmin-surface-table__content--density_compact {
1187
- padding-inline: var(--svadmin-spacing-sm);
1188
- }
1189
-
1190
- .svadmin-surface-table__head--density_compact[data-slot="table-head"],.svadmin-surface-table__cell--density_compact[data-slot="table-cell"] {
1191
- padding-block: var(--svadmin-spacing-xs);
1192
- font-size: var(--svadmin-font-sizes-compact);
1193
- }
1194
-
1195
- .svadmin-surface-table__state--density_compact {
1196
- --svadmin-table-state-height: 6rem;
1197
- }
1198
-
1199
1166
  .svadmin-content-page__root--width_default {
1200
1167
  max-width: var(--svadmin-sizes-content-default);
1201
1168
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@svadmin/ui",
3
- "version": "0.84.1",
3
+ "version": "0.86.0",
4
4
  "description": "Pre-built admin UI components — AdminApp, AutoTable, AutoForm, Sidebar, Layout",
5
5
  "type": "module",
6
6
  "sideEffects": [
@@ -88,7 +88,7 @@
88
88
  "@codemirror/lang-json": "^6.0.0",
89
89
  "@codemirror/lang-markdown": "^6.0.0",
90
90
  "@codemirror/lang-sql": "^6.0.0",
91
- "@svadmin/core": "^0.61.1",
91
+ "@svadmin/core": "^0.62.0",
92
92
  "@tanstack/svelte-query": "^6.1.48",
93
93
  "codemirror": "^6.0.0",
94
94
  "isomorphic-dompurify": "^3.23.0",
@@ -139,7 +139,7 @@
139
139
  }
140
140
  },
141
141
  "dependencies": {
142
- "@svadmin/devtools": "^0.3.2",
142
+ "@svadmin/devtools": "^0.3.3",
143
143
  "@svadmin/devtools-contract": "^0.3.0",
144
144
  "@vibeunion/devtools-devframe": "^0.1.0",
145
145
  "typebox": "^1.3.34",
@@ -177,7 +177,7 @@
177
177
  "@codemirror/lang-markdown": "^6.5.2",
178
178
  "@codemirror/lang-sql": "^6.10.0",
179
179
  "@happy-dom/global-registrator": "^20.11.12",
180
- "@svadmin/ai-elements": "^0.11.3",
180
+ "@svadmin/ai-elements": "^0.12.0",
181
181
  "@sveltejs/vite-plugin-svelte": "^7.3.0",
182
182
  "@tailwindcss/cli": "4.3.3",
183
183
  "@testing-library/dom": "^10.4.1",