@svadmin/ui 0.85.0 → 0.88.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 (89) hide show
  1. package/README.md +31 -0
  2. package/dist/app-shell.css +216 -0
  3. package/dist/app.css +659 -165
  4. package/dist/app.theme.css +659 -165
  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/ApprovalActionCard.svelte +54 -31
  10. package/dist/components/ApprovalCenter.svelte +73 -31
  11. package/dist/components/AuthPageShell.svelte +13 -2
  12. package/dist/components/AutoForm.svelte +7 -12
  13. package/dist/components/AutoForm.svelte.d.ts +0 -1
  14. package/dist/components/AutoTable.svelte +15 -3
  15. package/dist/components/AutoTable.svelte.d.ts +2 -0
  16. package/dist/components/ConfigurationPage.svelte +0 -3
  17. package/dist/components/ConfigurationPage.svelte.d.ts +0 -1
  18. package/dist/components/CreatePage.svelte +22 -19
  19. package/dist/components/CreatePage.svelte.d.ts +4 -1
  20. package/dist/components/EditPage.svelte +23 -20
  21. package/dist/components/EditPage.svelte.d.ts +4 -1
  22. package/dist/components/FieldRenderer.svelte +2 -10
  23. package/dist/components/FieldRenderer.svelte.d.ts +0 -1
  24. package/dist/components/ListPage.svelte +21 -18
  25. package/dist/components/ListPage.svelte.d.ts +2 -1
  26. package/dist/components/LoginPage.svelte +27 -11
  27. package/dist/components/LoginPage.svelte.d.ts +4 -0
  28. package/dist/components/NotificationsSettings.svelte +16 -8
  29. package/dist/components/PageHeader.svelte +1 -3
  30. package/dist/components/PageHeader.svelte.d.ts +0 -1
  31. package/dist/components/PagePattern.svelte +36 -13
  32. package/dist/components/PagePattern.svelte.d.ts +7 -0
  33. package/dist/components/PasswordInput.svelte +36 -17
  34. package/dist/components/PasswordInput.svelte.d.ts +3 -0
  35. package/dist/components/QuickEditDrawer.svelte +0 -1
  36. package/dist/components/ShowPage.svelte +24 -29
  37. package/dist/components/ShowPage.svelte.d.ts +0 -1
  38. package/dist/components/SvarAutoTable.svelte +2 -1
  39. package/dist/components/SvarDataGrid.svelte +8 -4
  40. package/dist/components/SvarDataGrid.svelte.d.ts +3 -0
  41. package/dist/components/SvarResourceTable.svelte +0 -1
  42. package/dist/components/SvarResourceTable.svelte.d.ts +0 -1
  43. package/dist/components/SvarResourceTableView.svelte +2 -2
  44. package/dist/components/account/MemberDirectory.svelte +17 -4
  45. package/dist/components/account/SecurityLogPage.svelte +8 -1
  46. package/dist/components/auto-table-grid.d.ts +1 -0
  47. package/dist/components/content/AuditTimeline.svelte +32 -4
  48. package/dist/components/content/AuditTimeline.svelte.d.ts +9 -0
  49. package/dist/components/content/ContentPageHeader.svelte +2 -1
  50. package/dist/components/content/ContentPageHeader.svelte.d.ts +1 -0
  51. package/dist/components/content/ContentPageShell.svelte +1 -1
  52. package/dist/components/content/ContentPageShell.svelte.d.ts +1 -0
  53. package/dist/components/content/DataPanel.svelte +58 -0
  54. package/dist/components/content/DataPanel.svelte.d.ts +16 -0
  55. package/dist/components/content/DataState.svelte +5 -4
  56. package/dist/components/content/DataState.svelte.d.ts +1 -1
  57. package/dist/components/content/DescriptionList.svelte +5 -8
  58. package/dist/components/content/DescriptionList.svelte.d.ts +0 -1
  59. package/dist/components/content/FilterToolbar.svelte +9 -6
  60. package/dist/components/content/FilterToolbar.svelte.d.ts +0 -1
  61. package/dist/components/content/NetworkTable.svelte +3 -3
  62. package/dist/components/content/NetworkTable.svelte.d.ts +0 -1
  63. package/dist/components/content/PageSection.svelte +1 -1
  64. package/dist/components/content/StatusTabs.svelte +2 -7
  65. package/dist/components/content/StatusTabs.svelte.d.ts +0 -1
  66. package/dist/components/content/WorkspaceLayout.svelte +3 -1
  67. package/dist/components/content/WorkspaceLayout.svelte.d.ts +1 -0
  68. package/dist/components/content/index.d.ts +1 -0
  69. package/dist/components/content/index.js +1 -0
  70. package/dist/components/network/TeamCrewTablePage.svelte +8 -1
  71. package/dist/components/network/UserCardsNFTPage.svelte +3 -1
  72. package/dist/components/profile/ProjectsGrid.svelte +1 -1
  73. package/dist/components/profile/TeamsShowcase.svelte +1 -1
  74. package/dist/components/ui/table/index.d.ts +0 -1
  75. package/dist/components/ui/table/table.svelte +1 -0
  76. package/dist/components/ui/table/table.svelte.d.ts +1 -0
  77. package/dist/components.css +1 -11
  78. package/dist/data-panel.css +88 -0
  79. package/dist/design-contract.d.ts +11 -0
  80. package/dist/design-contract.js +8 -0
  81. package/dist/design-system.d.ts +3 -2
  82. package/dist/design-system.js +3 -2
  83. package/dist/index.d.ts +4 -2
  84. package/dist/index.js +2 -0
  85. package/dist/page-chrome.css +42 -64
  86. package/dist/recipes.d.ts +12 -66
  87. package/dist/recipes.js +52 -50
  88. package/dist/styles/recipes.css +15 -48
  89. package/package.json +4 -4
@@ -6,7 +6,7 @@
6
6
  * the host application's utility CSS implementation.
7
7
  */
8
8
  [data-svadmin-skip-link] {
9
- transform: translateY(calc(-100% - 1rem));
9
+ transform: translateY(calc(-100% - var(--svadmin-space-4)));
10
10
  }
11
11
  [data-svadmin-skip-link]:focus,
12
12
  [data-svadmin-skip-link]:focus-visible {
@@ -14,24 +14,17 @@
14
14
  }
15
15
 
16
16
  .svadmin-page-header {
17
- --svadmin-page-header-gap: 0.5rem;
17
+ --svadmin-page-header-gap: var(--svadmin-space-2);
18
18
  min-width: 0;
19
19
  }
20
- .svadmin-page-header[data-density="compact"] {
21
- --svadmin-page-header-gap: 0.375rem;
22
- }
23
20
  .svadmin-page-header__breadcrumbs {
24
- margin-bottom: 1rem;
25
- }
26
- .svadmin-page-header[data-density="compact"] .svadmin-page-header__breadcrumbs {
27
- margin-bottom: 0.375rem;
28
- font-size: 0.75rem;
21
+ margin-bottom: var(--svadmin-space-4);
29
22
  }
30
23
  .svadmin-page-header__row, .svadmin-filter-toolbar__row {
31
24
  display: flex;
32
25
  flex-direction: column;
33
26
  min-width: 0;
34
- gap: 0.5rem;
27
+ gap: var(--svadmin-space-2);
35
28
  }
36
29
  .svadmin-page-header__row {
37
30
  gap: var(--svadmin-page-header-gap);
@@ -40,7 +33,7 @@
40
33
  display: flex;
41
34
  align-items: center;
42
35
  min-width: 0;
43
- gap: 0.625rem;
36
+ gap: var(--svadmin-space-3);
44
37
  }
45
38
  .svadmin-page-header__text {
46
39
  min-width: 0;
@@ -50,7 +43,7 @@
50
43
  flex-wrap: wrap;
51
44
  align-items: center;
52
45
  min-width: 0;
53
- gap: 0.5rem;
46
+ gap: var(--svadmin-space-2);
54
47
  }
55
48
  .svadmin-page-header__tags, .svadmin-page-header__actions {
56
49
  max-width: 100%;
@@ -59,24 +52,17 @@
59
52
  .svadmin-page-header__title {
60
53
  min-width: 0;
61
54
  color: var(--foreground);
62
- font-size: 1.25rem;
55
+ font-size: var(--svadmin-text-title);
63
56
  font-weight: 600;
64
- line-height: 1.75rem;
57
+ line-height: var(--svadmin-leading-tight);
65
58
  overflow-wrap: anywhere;
66
59
  }
67
60
  .svadmin-page-header__description {
68
61
  color: var(--muted-foreground);
69
- font-size: 0.875rem;
70
- line-height: 1.25rem;
62
+ font-size: var(--svadmin-text-body);
63
+ line-height: var(--svadmin-leading-body);
71
64
  overflow-wrap: anywhere;
72
65
  }
73
- .svadmin-page-header[data-density="compact"] .svadmin-page-header__title {
74
- font-size: 1.125rem;
75
- }
76
- .svadmin-page-header[data-density="compact"] .svadmin-page-header__description {
77
- font-size: 0.75rem;
78
- line-height: 1rem;
79
- }
80
66
  .svadmin-page-header .svadmin-page-header__back {
81
67
  flex-shrink: 0;
82
68
  color: var(--muted-foreground);
@@ -85,14 +71,14 @@
85
71
  color: var(--foreground);
86
72
  }
87
73
  .svadmin-page-header .svadmin-page-header__back-icon {
88
- width: 1rem;
89
- height: 1rem;
74
+ width: var(--svadmin-space-4);
75
+ height: var(--svadmin-space-4);
90
76
  }
91
77
  .svadmin-breadcrumbs {
92
78
  min-width: 0;
93
79
  }
94
80
  .svadmin-breadcrumbs--spaced {
95
- margin-bottom: 1rem;
81
+ margin-bottom: var(--svadmin-space-4);
96
82
  }
97
83
  .svadmin-breadcrumbs__item {
98
84
  display: inline-flex;
@@ -103,16 +89,11 @@
103
89
  color: var(--muted-foreground);
104
90
  }
105
91
  .svadmin-filter-toolbar {
106
- --svadmin-filter-control-height: 2.25rem;
107
- --svadmin-filter-control-font: 0.875rem;
108
- --svadmin-filter-search-icon-size: 1rem;
92
+ --svadmin-filter-control-height: var(--svadmin-control-h);
93
+ --svadmin-filter-control-font: var(--svadmin-text-body);
94
+ --svadmin-filter-search-icon-size: var(--svadmin-space-4);
109
95
  min-width: 0;
110
96
  }
111
- .svadmin-filter-toolbar[data-density="compact"] {
112
- --svadmin-filter-control-height: 2rem;
113
- --svadmin-filter-control-font: 0.75rem;
114
- --svadmin-filter-search-icon-size: 0.875rem;
115
- }
116
97
  .svadmin-filter-toolbar__search {
117
98
  position: relative;
118
99
  min-width: 0;
@@ -120,60 +101,57 @@
120
101
  .svadmin-filter-toolbar__search-icon {
121
102
  position: absolute;
122
103
  top: 50%;
123
- inset-inline-start: 0.75rem;
104
+ inset-inline-start: var(--svadmin-space-3);
124
105
  width: var(--svadmin-filter-search-icon-size);
125
106
  height: var(--svadmin-filter-search-icon-size);
126
107
  color: var(--muted-foreground);
127
108
  transform: translateY(-50%);
128
109
  pointer-events: none;
129
110
  }
130
- .svadmin-filter-toolbar[data-density] .svadmin-filter-toolbar__input {
111
+ .svadmin-filter-toolbar .svadmin-filter-toolbar__input[data-slot="input"] {
131
112
  height: var(--svadmin-filter-control-height);
132
- padding-inline: 2.25rem;
113
+ padding-inline: calc(var(--svadmin-space-5) + var(--svadmin-space-3));
133
114
  font-size: var(--svadmin-filter-control-font);
134
- line-height: 1rem;
115
+ line-height: var(--svadmin-leading-tight);
135
116
  }
136
- .svadmin-filter-toolbar[data-density] .svadmin-filter-toolbar__clear {
117
+ .svadmin-filter-toolbar .svadmin-filter-toolbar__clear {
137
118
  position: absolute;
138
- top: 50%;
139
- inset-inline-end: 0.25rem;
140
- transform: translateY(-50%);
119
+ inset-block: 0;
120
+ inset-inline-end: var(--svadmin-space-1);
121
+ margin-block: auto;
141
122
  }
142
- .svadmin-filter-toolbar[data-density] .svadmin-filter-toolbar__toggle {
123
+ .svadmin-filter-toolbar .svadmin-filter-toolbar__toggle {
143
124
  flex-shrink: 0;
144
- gap: 0.375rem;
125
+ gap: var(--svadmin-space-2);
145
126
  height: var(--svadmin-filter-control-height);
146
127
  font-size: var(--svadmin-filter-control-font);
147
128
  max-width: 100%;
148
129
  white-space: normal;
149
130
  overflow-wrap: anywhere;
150
131
  }
151
- .svadmin-filter-toolbar[data-density="compact"] .svadmin-filter-toolbar__toggle {
152
- padding-inline: 0.625rem;
153
- }
154
132
  .svadmin-filter-toolbar .svadmin-filter-toolbar__control-icon {
155
- width: 0.875rem;
156
- height: 0.875rem;
133
+ width: var(--svadmin-space-3);
134
+ height: var(--svadmin-space-3);
157
135
  }
158
136
  .svadmin-filter-toolbar .svadmin-filter-toolbar__chevron {
159
- width: 0.75rem;
160
- height: 0.75rem;
161
- margin-inline-start: 0.125rem;
137
+ width: var(--svadmin-space-3);
138
+ height: var(--svadmin-space-3);
139
+ margin-inline-start: var(--svadmin-space-1);
162
140
  color: var(--muted-foreground);
163
141
  }
164
- .svadmin-filter-toolbar[data-density] .svadmin-filter-toolbar__count {
165
- height: 1rem;
166
- min-height: 1rem;
167
- min-width: 1rem;
168
- margin-inline-start: 0.125rem;
169
- padding: 0 0.25rem;
170
- font-size: 0.625rem;
142
+ .svadmin-filter-toolbar .svadmin-filter-toolbar__count {
143
+ height: var(--svadmin-space-4);
144
+ min-height: var(--svadmin-space-4);
145
+ min-width: var(--svadmin-space-4);
146
+ margin-inline-start: var(--svadmin-space-1);
147
+ padding: 0 var(--svadmin-space-1);
148
+ font-size: var(--svadmin-text-caption);
171
149
  font-weight: 600;
172
150
  line-height: 1;
173
151
  font-variant-numeric: tabular-nums;
174
152
  }
175
153
  .svadmin-filter-toolbar .svadmin-filter-toolbar-advanced {
176
- margin-top: 0.5rem;
154
+ margin-top: var(--svadmin-space-2);
177
155
  border: 1px solid var(--border);
178
156
  @supports (color: color-mix(in lab, red, red)) {
179
157
  border: 1px solid color-mix(in oklch, var(--border) 60%, transparent);
@@ -183,7 +161,7 @@
183
161
  @supports (color: color-mix(in lab, red, red)) {
184
162
  background: color-mix(in oklch, var(--muted) 20%, transparent);
185
163
  }
186
- padding: 0.75rem;
164
+ padding: var(--svadmin-space-3);
187
165
  overflow-wrap: anywhere;
188
166
  }
189
167
  @media (min-width: 640px) {
@@ -196,10 +174,10 @@
196
174
  justify-content: space-between;
197
175
  }
198
176
  .svadmin-page-header__heading {
199
- flex: 1 1 16rem;
177
+ flex: 1 1 var(--svadmin-chrome-basis);
200
178
  }
201
179
  .svadmin-filter-toolbar__search {
202
- flex: 1 1 14rem;
180
+ flex: 1 1 var(--svadmin-chrome-basis);
203
181
  }
204
182
  }
205
183
  }
package/dist/recipes.d.ts CHANGED
@@ -124,9 +124,7 @@ declare const contentPageRecipeStyles: import("tailwind-variants").TVReturnType<
124
124
  compact: {
125
125
  root: string;
126
126
  };
127
- comfortable: {
128
- root: string;
129
- };
127
+ comfortable: {};
130
128
  };
131
129
  }, {
132
130
  root: string;
@@ -146,9 +144,7 @@ declare const contentPageRecipeStyles: import("tailwind-variants").TVReturnType<
146
144
  compact: {
147
145
  root: string;
148
146
  };
149
- comfortable: {
150
- root: string;
151
- };
147
+ comfortable: {};
152
148
  };
153
149
  }, {
154
150
  root: string;
@@ -168,9 +164,7 @@ declare const contentPageRecipeStyles: import("tailwind-variants").TVReturnType<
168
164
  compact: {
169
165
  root: string;
170
166
  };
171
- comfortable: {
172
- root: string;
173
- };
167
+ comfortable: {};
174
168
  };
175
169
  }, {
176
170
  root: string;
@@ -185,14 +179,7 @@ declare const contentHeaderRecipeStyles: import("tailwind-variants").TVReturnTyp
185
179
  description: string;
186
180
  actions: string;
187
181
  };
188
- comfortable: {
189
- root: string;
190
- row: string;
191
- heading: string;
192
- title: string;
193
- description: string;
194
- actions: string;
195
- };
182
+ comfortable: {};
196
183
  };
197
184
  }, {
198
185
  root: string;
@@ -214,14 +201,7 @@ declare const contentHeaderRecipeStyles: import("tailwind-variants").TVReturnTyp
214
201
  description: string;
215
202
  actions: string;
216
203
  };
217
- comfortable: {
218
- root: string;
219
- row: string;
220
- heading: string;
221
- title: string;
222
- description: string;
223
- actions: string;
224
- };
204
+ comfortable: {};
225
205
  };
226
206
  }, {
227
207
  root: string;
@@ -243,14 +223,7 @@ declare const contentHeaderRecipeStyles: import("tailwind-variants").TVReturnTyp
243
223
  description: string;
244
224
  actions: string;
245
225
  };
246
- comfortable: {
247
- root: string;
248
- row: string;
249
- heading: string;
250
- title: string;
251
- description: string;
252
- actions: string;
253
- };
226
+ comfortable: {};
254
227
  };
255
228
  }, {
256
229
  root: string;
@@ -655,10 +628,7 @@ declare const surfaceMetricRecipeStyles: import("tailwind-variants").TVReturnTyp
655
628
  card: string;
656
629
  state: string;
657
630
  };
658
- comfortable: {
659
- card: string;
660
- state: string;
661
- };
631
+ comfortable: {};
662
632
  };
663
633
  }, {
664
634
  root: string;
@@ -693,10 +663,7 @@ declare const surfaceMetricRecipeStyles: import("tailwind-variants").TVReturnTyp
693
663
  card: string;
694
664
  state: string;
695
665
  };
696
- comfortable: {
697
- card: string;
698
- state: string;
699
- };
666
+ comfortable: {};
700
667
  };
701
668
  }, {
702
669
  root: string;
@@ -731,10 +698,7 @@ declare const surfaceMetricRecipeStyles: import("tailwind-variants").TVReturnTyp
731
698
  card: string;
732
699
  state: string;
733
700
  };
734
- comfortable: {
735
- card: string;
736
- state: string;
737
- };
701
+ comfortable: {};
738
702
  };
739
703
  }, {
740
704
  root: string;
@@ -751,13 +715,7 @@ declare const surfaceTableRecipeStyles: import("tailwind-variants").TVReturnType
751
715
  cell: string;
752
716
  state: string;
753
717
  };
754
- comfortable: {
755
- header: string;
756
- content: string;
757
- head: string;
758
- cell: string;
759
- state: string;
760
- };
718
+ comfortable: {};
761
719
  };
762
720
  }, {
763
721
  root: string;
@@ -775,13 +733,7 @@ declare const surfaceTableRecipeStyles: import("tailwind-variants").TVReturnType
775
733
  cell: string;
776
734
  state: string;
777
735
  };
778
- comfortable: {
779
- header: string;
780
- content: string;
781
- head: string;
782
- cell: string;
783
- state: string;
784
- };
736
+ comfortable: {};
785
737
  };
786
738
  }, {
787
739
  root: string;
@@ -799,13 +751,7 @@ declare const surfaceTableRecipeStyles: import("tailwind-variants").TVReturnType
799
751
  cell: string;
800
752
  state: string;
801
753
  };
802
- comfortable: {
803
- header: string;
804
- content: string;
805
- head: string;
806
- cell: string;
807
- state: string;
808
- };
754
+ comfortable: {};
809
755
  };
810
756
  }, {
811
757
  root: string;
package/dist/recipes.js CHANGED
@@ -55,7 +55,7 @@ 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" },
@@ -63,42 +63,35 @@ const contentPageRecipeStyles = tv({
63
63
  wide: { root: "max-w-[92rem]" },
64
64
  },
65
65
  density: {
66
- compact: { root: "space-y-4" },
67
- comfortable: { root: "space-y-6" },
66
+ compact: { root: "space-y-[var(--svadmin-space-4)]" },
67
+ comfortable: {},
68
68
  },
69
69
  },
70
70
  defaultVariants: { width: "default", density: "comfortable" },
71
71
  });
72
72
  const contentHeaderRecipeStyles = tv({
73
73
  slots: {
74
- root: "svadmin-content-header",
75
- breadcrumbs: `${semantic.group} text-xs text-muted-foreground`,
74
+ root: "svadmin-content-header space-y-[var(--svadmin-space-3)]",
75
+ breadcrumbs: `${semantic.group} text-[length:var(--svadmin-text-caption)] text-muted-foreground`,
76
76
  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",
77
+ row: "flex flex-col gap-[var(--svadmin-space-5)] sm:flex-row sm:items-start sm:justify-between",
78
+ heading: "min-w-0 space-y-[var(--svadmin-space-1)]",
79
+ eyebrow: "text-[length:var(--svadmin-text-caption)] font-medium text-muted-foreground",
80
+ title: "text-[length:var(--svadmin-text-title)] font-semibold leading-[var(--svadmin-leading-tight)] text-foreground",
81
+ description: "max-w-[var(--svadmin-measure)] text-[length:var(--svadmin-text-body)] leading-[var(--svadmin-leading-body)] text-muted-foreground",
82
+ actions: "flex shrink-0 flex-wrap items-center gap-[var(--svadmin-space-2)]",
83
83
  },
84
84
  variants: {
85
85
  density: {
86
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",
87
+ root: "space-y-[var(--svadmin-space-2)]",
88
+ row: "gap-[var(--svadmin-space-3)]",
89
+ heading: "space-y-[var(--svadmin-space-1)]",
90
+ title: "text-[length:var(--svadmin-text-section)] leading-[var(--svadmin-leading-tight)]",
91
+ description: "text-[length:var(--svadmin-text-label)] leading-[var(--svadmin-leading-body)]",
92
+ actions: "gap-[var(--svadmin-space-1)]",
101
93
  },
94
+ comfortable: {},
102
95
  },
103
96
  },
104
97
  defaultVariants: { density: "comfortable" },
@@ -127,18 +120,18 @@ const metricBlockRecipeStyles = tv({
127
120
  });
128
121
  const productSectionRecipeStyles = tv({
129
122
  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",
123
+ root: "flex flex-wrap items-start justify-between gap-[var(--svadmin-space-3)]",
124
+ heading: "min-w-0 flex-[1_1_var(--svadmin-chrome-basis)]",
125
+ title: "m-0 text-[length:var(--svadmin-text-section)] font-semibold text-foreground [overflow-wrap:anywhere]",
126
+ 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",
127
+ actions: "flex shrink-0 flex-wrap items-center gap-[var(--svadmin-space-2)]",
135
128
  },
136
129
  });
137
130
  const productToolbarRecipeStyles = tv({
138
131
  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",
132
+ root: "flex flex-wrap items-center justify-between gap-[var(--svadmin-space-3)] border-b border-border py-[var(--svadmin-space-3)]",
133
+ leading: "flex min-w-0 flex-[1_1_var(--svadmin-chrome-basis)] flex-wrap items-center gap-[var(--svadmin-space-2)]",
134
+ trailing: "ms-auto flex min-w-0 flex-wrap items-center gap-[var(--svadmin-space-2)]",
142
135
  },
143
136
  });
144
137
  const productWorkspaceRecipeStyles = tv({
@@ -155,12 +148,12 @@ const productWorkspaceRecipeStyles = tv({
155
148
  const productSettingsRecipeStyles = tv({
156
149
  slots: {
157
150
  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",
151
+ header: "flex flex-wrap items-start justify-between gap-[var(--svadmin-space-3)] border-b border-border py-[var(--svadmin-space-4)]",
152
+ heading: "min-w-0 flex-[1_1_var(--svadmin-chrome-basis)]",
153
+ title: "m-0 text-[length:var(--svadmin-text-section)] font-semibold text-foreground [overflow-wrap:anywhere]",
154
+ 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",
155
+ actions: "flex shrink-0 flex-wrap items-center gap-[var(--svadmin-space-2)]",
156
+ body: "min-w-0 py-[var(--svadmin-space-1)]",
164
157
  },
165
158
  });
166
159
  const productSettingsRowRecipeStyles = tv({
@@ -190,9 +183,9 @@ const productStatusRecipeStyles = tv({
190
183
  const surfaceMetricRecipeStyles = tv({
191
184
  slots: {
192
185
  root: "surface-metric__root min-w-0",
193
- card: "surface-metric__card border-s-[3px] border-solid",
186
+ card: "surface-metric__card border-s-[3px] border-solid p-5",
194
187
  description: "surface-metric__description text-muted-foreground",
195
- state: "surface-metric__state [--svadmin-metric-state-border-width:3px]",
188
+ state: "surface-metric__state [--svadmin-metric-state-border-width:3px] [--svadmin-metric-state-padding:1.25rem] [--svadmin-metric-state-height:6rem]",
196
189
  },
197
190
  variants: {
198
191
  tone: {
@@ -203,8 +196,11 @@ const surfaceMetricRecipeStyles = tv({
203
196
  info: { card: "border-s-info", state: "[--svadmin-metric-state-accent:var(--info)]" },
204
197
  },
205
198
  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]" },
199
+ compact: {
200
+ card: "p-3",
201
+ state: "[--svadmin-metric-state-padding:var(--svadmin-space-3)] [--svadmin-metric-state-height:4.5rem]",
202
+ },
203
+ comfortable: {},
208
204
  },
209
205
  },
210
206
  defaultVariants: { tone: "neutral", density: "comfortable" },
@@ -212,16 +208,22 @@ const surfaceMetricRecipeStyles = tv({
212
208
  const surfaceTableRecipeStyles = tv({
213
209
  slots: {
214
210
  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",
211
+ header: "surface-table__header px-[var(--svadmin-space-4)]",
212
+ content: "surface-table__content px-[var(--svadmin-space-4)]",
213
+ head: "surface-table__head [&[data-slot=table-head]]:py-[var(--svadmin-space-2)] [&[data-slot=table-head]]:text-[length:var(--svadmin-text-body)]",
214
+ cell: "surface-table__cell [&[data-slot=table-cell]]:py-[var(--svadmin-space-2)] [&[data-slot=table-cell]]:text-[length:var(--svadmin-text-body)]",
215
+ state: "surface-table__state text-muted-foreground [--svadmin-table-state-height:var(--svadmin-table-state-min-h)]",
220
216
  },
221
217
  variants: {
222
218
  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]" },
219
+ compact: {
220
+ header: "px-[var(--svadmin-space-3)]",
221
+ content: "px-[var(--svadmin-space-3)]",
222
+ head: "[&[data-slot=table-head]]:py-[var(--svadmin-space-1)] [&[data-slot=table-head]]:text-[length:var(--svadmin-text-caption)]",
223
+ cell: "[&[data-slot=table-cell]]:py-[var(--svadmin-space-1)] [&[data-slot=table-cell]]:text-[length:var(--svadmin-text-caption)]",
224
+ state: "[--svadmin-table-state-height:var(--svadmin-table-state-min-h-compact)]",
225
+ },
226
+ comfortable: {},
225
227
  },
226
228
  },
227
229
  defaultVariants: { density: "comfortable" },
@@ -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
  }