@svadmin/ui 0.83.2 → 0.84.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app.css +71 -0
- package/dist/app.theme.css +71 -0
- package/dist/components/AdminApp.svelte +23 -0
- package/dist/components/AdminApp.svelte.d.ts +11 -0
- package/dist/components/Sidebar.svelte +1 -1
- package/dist/components/SidebarItem.svelte +3 -3
- package/dist/components.css +71 -0
- package/dist/index.d.ts +1 -0
- package/dist/recipes.d.ts +12 -12
- package/package.json +4 -4
package/dist/app.css
CHANGED
|
@@ -9131,6 +9131,77 @@ details.svadmin-collapsible:not([open]) > :not(summary) {
|
|
|
9131
9131
|
display: none !important;
|
|
9132
9132
|
}
|
|
9133
9133
|
|
|
9134
|
+
/* 折叠触发器对齐管理后台 8px 节奏:收紧 summary,展开时只留底部分割线,隐藏浏览器标记并保留 focus-visible。 */
|
|
9135
|
+
details.svadmin-collapsible > summary,
|
|
9136
|
+
details.svadmin-collapsible-filter > summary,
|
|
9137
|
+
details[data-svadmin-filter] > summary,
|
|
9138
|
+
[data-svadmin-collapsible] > summary {
|
|
9139
|
+
display: flex;
|
|
9140
|
+
align-items: center;
|
|
9141
|
+
gap: 0.375rem;
|
|
9142
|
+
min-height: 2rem;
|
|
9143
|
+
margin: 0;
|
|
9144
|
+
padding: 0.25rem 0;
|
|
9145
|
+
list-style: none;
|
|
9146
|
+
cursor: pointer;
|
|
9147
|
+
font-size: 0.8125rem;
|
|
9148
|
+
font-weight: 500;
|
|
9149
|
+
line-height: 1.25rem;
|
|
9150
|
+
}
|
|
9151
|
+
|
|
9152
|
+
details.svadmin-collapsible > summary::-webkit-details-marker,
|
|
9153
|
+
details.svadmin-collapsible-filter > summary::-webkit-details-marker,
|
|
9154
|
+
details[data-svadmin-filter] > summary::-webkit-details-marker,
|
|
9155
|
+
[data-svadmin-collapsible] > summary::-webkit-details-marker {
|
|
9156
|
+
display: none;
|
|
9157
|
+
}
|
|
9158
|
+
|
|
9159
|
+
details.svadmin-collapsible > summary::marker,
|
|
9160
|
+
details.svadmin-collapsible-filter > summary::marker,
|
|
9161
|
+
details[data-svadmin-filter] > summary::marker,
|
|
9162
|
+
[data-svadmin-collapsible] > summary::marker {
|
|
9163
|
+
content: none;
|
|
9164
|
+
}
|
|
9165
|
+
|
|
9166
|
+
details.svadmin-collapsible > summary:focus-visible,
|
|
9167
|
+
details.svadmin-collapsible-filter > summary:focus-visible,
|
|
9168
|
+
details[data-svadmin-filter] > summary:focus-visible,
|
|
9169
|
+
[data-svadmin-collapsible] > summary:focus-visible,
|
|
9170
|
+
[data-svadmin-sidebar] .svadmin-collapsible-trigger:focus-visible {
|
|
9171
|
+
outline: 2px solid var(--ring);
|
|
9172
|
+
outline: 2px solid color-mix(in oklch, var(--ring) 48%, transparent);
|
|
9173
|
+
outline-offset: 2px;
|
|
9174
|
+
}
|
|
9175
|
+
|
|
9176
|
+
details.svadmin-collapsible[open],
|
|
9177
|
+
details.svadmin-collapsible-filter[open],
|
|
9178
|
+
details[data-svadmin-filter][open],
|
|
9179
|
+
[data-svadmin-collapsible][data-open="true"] {
|
|
9180
|
+
margin: 0;
|
|
9181
|
+
padding: 0;
|
|
9182
|
+
border: 0;
|
|
9183
|
+
border-bottom: 1px solid var(--border);
|
|
9184
|
+
border-radius: 0;
|
|
9185
|
+
background: transparent;
|
|
9186
|
+
box-shadow: none;
|
|
9187
|
+
}
|
|
9188
|
+
|
|
9189
|
+
details.svadmin-collapsible[open] > :not(summary),
|
|
9190
|
+
details.svadmin-collapsible-filter[open] > :not(summary),
|
|
9191
|
+
details[data-svadmin-filter][open] > :not(summary),
|
|
9192
|
+
[data-svadmin-collapsible][data-open="true"] > :not(summary) {
|
|
9193
|
+
margin-top: 0.25rem;
|
|
9194
|
+
}
|
|
9195
|
+
|
|
9196
|
+
[data-svadmin-sidebar] .svadmin-collapsible-trigger {
|
|
9197
|
+
padding-block: 0.375rem;
|
|
9198
|
+
}
|
|
9199
|
+
|
|
9200
|
+
[data-svadmin-sidebar] .svadmin-collapsible-trigger.uppercase {
|
|
9201
|
+
margin-top: 0.5rem;
|
|
9202
|
+
margin-bottom: 0.125rem;
|
|
9203
|
+
}
|
|
9204
|
+
|
|
9134
9205
|
/* --- Admin UI layout preset (clean-flat) --- */
|
|
9135
9206
|
/* Keep this public class for layoutPreset API compatibility. The preset only
|
|
9136
9207
|
* adjusts density and composition; color, focus, and elevation stay semantic. */
|
package/dist/app.theme.css
CHANGED
|
@@ -9131,6 +9131,77 @@ details.svadmin-collapsible:not([open]) > :not(summary) {
|
|
|
9131
9131
|
display: none !important;
|
|
9132
9132
|
}
|
|
9133
9133
|
|
|
9134
|
+
/* 折叠触发器对齐管理后台 8px 节奏:收紧 summary,展开时只留底部分割线,隐藏浏览器标记并保留 focus-visible。 */
|
|
9135
|
+
details.svadmin-collapsible > summary,
|
|
9136
|
+
details.svadmin-collapsible-filter > summary,
|
|
9137
|
+
details[data-svadmin-filter] > summary,
|
|
9138
|
+
[data-svadmin-collapsible] > summary {
|
|
9139
|
+
display: flex;
|
|
9140
|
+
align-items: center;
|
|
9141
|
+
gap: 0.375rem;
|
|
9142
|
+
min-height: 2rem;
|
|
9143
|
+
margin: 0;
|
|
9144
|
+
padding: 0.25rem 0;
|
|
9145
|
+
list-style: none;
|
|
9146
|
+
cursor: pointer;
|
|
9147
|
+
font-size: 0.8125rem;
|
|
9148
|
+
font-weight: 500;
|
|
9149
|
+
line-height: 1.25rem;
|
|
9150
|
+
}
|
|
9151
|
+
|
|
9152
|
+
details.svadmin-collapsible > summary::-webkit-details-marker,
|
|
9153
|
+
details.svadmin-collapsible-filter > summary::-webkit-details-marker,
|
|
9154
|
+
details[data-svadmin-filter] > summary::-webkit-details-marker,
|
|
9155
|
+
[data-svadmin-collapsible] > summary::-webkit-details-marker {
|
|
9156
|
+
display: none;
|
|
9157
|
+
}
|
|
9158
|
+
|
|
9159
|
+
details.svadmin-collapsible > summary::marker,
|
|
9160
|
+
details.svadmin-collapsible-filter > summary::marker,
|
|
9161
|
+
details[data-svadmin-filter] > summary::marker,
|
|
9162
|
+
[data-svadmin-collapsible] > summary::marker {
|
|
9163
|
+
content: none;
|
|
9164
|
+
}
|
|
9165
|
+
|
|
9166
|
+
details.svadmin-collapsible > summary:focus-visible,
|
|
9167
|
+
details.svadmin-collapsible-filter > summary:focus-visible,
|
|
9168
|
+
details[data-svadmin-filter] > summary:focus-visible,
|
|
9169
|
+
[data-svadmin-collapsible] > summary:focus-visible,
|
|
9170
|
+
[data-svadmin-sidebar] .svadmin-collapsible-trigger:focus-visible {
|
|
9171
|
+
outline: 2px solid var(--ring);
|
|
9172
|
+
outline: 2px solid color-mix(in oklch, var(--ring) 48%, transparent);
|
|
9173
|
+
outline-offset: 2px;
|
|
9174
|
+
}
|
|
9175
|
+
|
|
9176
|
+
details.svadmin-collapsible[open],
|
|
9177
|
+
details.svadmin-collapsible-filter[open],
|
|
9178
|
+
details[data-svadmin-filter][open],
|
|
9179
|
+
[data-svadmin-collapsible][data-open="true"] {
|
|
9180
|
+
margin: 0;
|
|
9181
|
+
padding: 0;
|
|
9182
|
+
border: 0;
|
|
9183
|
+
border-bottom: 1px solid var(--border);
|
|
9184
|
+
border-radius: 0;
|
|
9185
|
+
background: transparent;
|
|
9186
|
+
box-shadow: none;
|
|
9187
|
+
}
|
|
9188
|
+
|
|
9189
|
+
details.svadmin-collapsible[open] > :not(summary),
|
|
9190
|
+
details.svadmin-collapsible-filter[open] > :not(summary),
|
|
9191
|
+
details[data-svadmin-filter][open] > :not(summary),
|
|
9192
|
+
[data-svadmin-collapsible][data-open="true"] > :not(summary) {
|
|
9193
|
+
margin-top: 0.25rem;
|
|
9194
|
+
}
|
|
9195
|
+
|
|
9196
|
+
[data-svadmin-sidebar] .svadmin-collapsible-trigger {
|
|
9197
|
+
padding-block: 0.375rem;
|
|
9198
|
+
}
|
|
9199
|
+
|
|
9200
|
+
[data-svadmin-sidebar] .svadmin-collapsible-trigger.uppercase {
|
|
9201
|
+
margin-top: 0.5rem;
|
|
9202
|
+
margin-bottom: 0.125rem;
|
|
9203
|
+
}
|
|
9204
|
+
|
|
9134
9205
|
/* --- Admin UI layout preset (clean-flat) --- */
|
|
9135
9206
|
/* Keep this public class for layoutPreset API compatibility. The preset only
|
|
9136
9207
|
* adjusts density and composition; color, focus, and elevation stay semantic. */
|
|
@@ -1,4 +1,12 @@
|
|
|
1
1
|
<script module lang="ts">
|
|
2
|
+
import type { Component as SvelteComponent } from 'svelte';
|
|
3
|
+
|
|
4
|
+
export interface AdminPageRoute {
|
|
5
|
+
readonly path: string;
|
|
6
|
+
readonly component: SvelteComponent<{ route: string; params: Record<string, string | undefined> }>;
|
|
7
|
+
readonly title?: string;
|
|
8
|
+
}
|
|
9
|
+
|
|
2
10
|
const loadPublicProfilePage = () => import('./profile/PublicProfilePage.svelte');
|
|
3
11
|
const loadGetStartedPage = () => import('./account/GetStartedPage.svelte');
|
|
4
12
|
const loadUserProfilePage = () => import('./account/UserProfilePage.svelte');
|
|
@@ -65,6 +73,7 @@
|
|
|
65
73
|
import ResourceOverview from './ResourceOverview.svelte';
|
|
66
74
|
import DataState from './content/DataState.svelte';
|
|
67
75
|
import { parseContractRouteId } from '@svadmin/core/schema';
|
|
76
|
+
import { matchRoute } from '@svadmin/core/router';
|
|
68
77
|
import { resolveAdminThemeConfig } from '../default-theme.js';
|
|
69
78
|
import AutoForm from './LazyAutoForm.svelte';
|
|
70
79
|
import ShowPage from './LazyShowPage.svelte';
|
|
@@ -149,6 +158,8 @@
|
|
|
149
158
|
}>;
|
|
150
159
|
/** Custom multi-level menu configuration */
|
|
151
160
|
menu?: MenuItem[];
|
|
161
|
+
/** Product or application surface routes rendered before resource fallbacks. */
|
|
162
|
+
pageRoutes?: readonly AdminPageRoute[];
|
|
152
163
|
/** External URL to the main application or workspace (renders a shortcut in the header) */
|
|
153
164
|
siteUrl?: string;
|
|
154
165
|
/** Routing strategy for Sidebar links ('hash' | 'path' | 'auto') */
|
|
@@ -194,6 +205,7 @@
|
|
|
194
205
|
components: userComponents,
|
|
195
206
|
resourcePages,
|
|
196
207
|
menu,
|
|
208
|
+
pageRoutes,
|
|
197
209
|
siteUrl,
|
|
198
210
|
routeMode,
|
|
199
211
|
queryClient: providedQueryClient,
|
|
@@ -344,6 +356,14 @@
|
|
|
344
356
|
const route = $derived(routerState.route);
|
|
345
357
|
const params = $derived(routerState.params);
|
|
346
358
|
const path = $derived(routerState.path);
|
|
359
|
+
const customRouteMatch = $derived.by(() => {
|
|
360
|
+
if (!pageRoutes?.length) return undefined;
|
|
361
|
+
for (const candidate of pageRoutes) {
|
|
362
|
+
const match = matchRoute(path, [candidate.path]);
|
|
363
|
+
if (match) return { candidate, params: match.params };
|
|
364
|
+
}
|
|
365
|
+
return undefined;
|
|
366
|
+
});
|
|
347
367
|
const resourceNames = $derived(new Set(resources.map((resource) => resource.name)));
|
|
348
368
|
const isStandaloneTwoFactor = $derived(route === '/2fa' || route === '/authentication/branded/2fa');
|
|
349
369
|
const standaloneErrorStatus = $derived.by((): '404' | '500' | undefined => {
|
|
@@ -628,6 +648,9 @@
|
|
|
628
648
|
<LazyPage loader={loadTeamCrewTablePage} props={{}} />
|
|
629
649
|
{:else if renderedRoute.startsWith('/settings')}
|
|
630
650
|
<SettingsPage {...notificationPreferencesProvider ? { preferencesProvider: notificationPreferencesProvider } : {}} />
|
|
651
|
+
{:else if customRouteMatch}
|
|
652
|
+
{@const CustomPage = customRouteMatch.candidate.component}
|
|
653
|
+
<CustomPage route={customRouteMatch.candidate.path} params={customRouteMatch.params} />
|
|
631
654
|
{:else if renderedRoute === '/' || renderedRoute === '' || renderedRoute === '/inventory-dashboard'}
|
|
632
655
|
{#if dashboard}
|
|
633
656
|
{@render dashboard()}
|
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
import { SvelteComponent } from "svelte";
|
|
2
|
+
export interface AdminPageRoute {
|
|
3
|
+
readonly path: string;
|
|
4
|
+
readonly component: SvelteComponent<{
|
|
5
|
+
route: string;
|
|
6
|
+
params: Record<string, string | undefined>;
|
|
7
|
+
}>;
|
|
8
|
+
readonly title?: string;
|
|
9
|
+
}
|
|
1
10
|
import '../app.css';
|
|
2
11
|
import { type Component, type Snippet } from 'svelte';
|
|
3
12
|
import type { AccessControlProvider, AgentProvider, AuditLogProvider, AuthProvider, ChatProvider, CredentialProvider, DataProviderInput, IdentityGovernanceProvider, I18nProvider, LiveProvider, MenuItem, NotificationProvider, OrganizationProvider, ResourceDefinition, RouterProvider, SessionProvider, TaskProvider, TenantAdapter, TenantContext, ThemeConfig, ThemeMode } from '@svadmin/core';
|
|
@@ -81,6 +90,8 @@ interface Props {
|
|
|
81
90
|
}>;
|
|
82
91
|
/** Custom multi-level menu configuration */
|
|
83
92
|
menu?: MenuItem[];
|
|
93
|
+
/** Product or application surface routes rendered before resource fallbacks. */
|
|
94
|
+
pageRoutes?: readonly AdminPageRoute[];
|
|
84
95
|
/** External URL to the main application or workspace (renders a shortcut in the header) */
|
|
85
96
|
siteUrl?: string;
|
|
86
97
|
/** Routing strategy for Sidebar links ('hash' | 'path' | 'auto') */
|
|
@@ -347,7 +347,7 @@
|
|
|
347
347
|
openGroups = next;
|
|
348
348
|
}}>
|
|
349
349
|
<Collapsible.Trigger
|
|
350
|
-
class="svadmin-u-60fbb7713999 svadmin-u-6da6a3c3f741 svadmin-u-3960ffc248d9 svadmin-u-8ef2268efbbc svadmin-u-7597e11b4d4b svadmin-u-a139beb4e318 svadmin-u-0ab8667228fd svadmin-u-506a96403942 svadmin-u-b486a1ee45b0 svadmin-u-e83a7042bc91 svadmin-u-064e4b9e19c3 uppercase svadmin-u-5f1ff8fe8768 svadmin-u-71357b4a2f24 svadmin-u-ceb69a6b0e5f"
|
|
350
|
+
class="svadmin-collapsible-trigger svadmin-u-60fbb7713999 svadmin-u-6da6a3c3f741 svadmin-u-3960ffc248d9 svadmin-u-8ef2268efbbc svadmin-u-7597e11b4d4b svadmin-u-a139beb4e318 svadmin-u-0ab8667228fd svadmin-u-506a96403942 svadmin-u-b486a1ee45b0 svadmin-u-e83a7042bc91 svadmin-u-064e4b9e19c3 uppercase svadmin-u-5f1ff8fe8768 svadmin-u-71357b4a2f24 svadmin-u-ceb69a6b0e5f"
|
|
351
351
|
>
|
|
352
352
|
<span>{group.name}</span>
|
|
353
353
|
<ChevronDown class="svadmin-u-6a60c09e6aaa svadmin-u-9cea05671a29 svadmin-u-eadef238231e svadmin-u-625a4c3fbeb2 {openGroups.has(group.name) ? 'svadmin-u-3350916b3513' : ''}" />
|
|
@@ -107,10 +107,10 @@
|
|
|
107
107
|
<!-- hidden -->
|
|
108
108
|
{:else if hasChildren && !collapsed}
|
|
109
109
|
{#if isTopLevel}
|
|
110
|
-
<div class="svadmin-u-
|
|
110
|
+
<div class="svadmin-u-50d0d216a2f8 svadmin-u-71a0a94437c6">
|
|
111
111
|
<Collapsible.Root bind:open={isOpen}>
|
|
112
112
|
<Collapsible.Trigger
|
|
113
|
-
class="sidebar-menu-item svadmin-u-60fbb7713999 svadmin-u-6da6a3c3f741 svadmin-u-3960ffc248d9 svadmin-u-8ef2268efbbc svadmin-u-421ac2be5045 svadmin-u-01cc1873771f svadmin-u-a14daebf7748 svadmin-u-2689f3958069 svadmin-u-ceb69a6b0e5f svadmin-u-233c0494b485
|
|
113
|
+
class="svadmin-collapsible-trigger sidebar-menu-item svadmin-u-60fbb7713999 svadmin-u-6da6a3c3f741 svadmin-u-3960ffc248d9 svadmin-u-8ef2268efbbc svadmin-u-421ac2be5045 svadmin-u-01cc1873771f svadmin-u-a14daebf7748 svadmin-u-2689f3958069 svadmin-u-ceb69a6b0e5f svadmin-u-233c0494b485
|
|
114
114
|
{childActive
|
|
115
115
|
? 'svadmin-u-a7a63217e098'
|
|
116
116
|
: 'svadmin-u-4e5ca9623e22 svadmin-u-646e10356266'}"
|
|
@@ -137,7 +137,7 @@
|
|
|
137
137
|
{:else}
|
|
138
138
|
<Collapsible.Root bind:open={isOpen}>
|
|
139
139
|
<Collapsible.Trigger
|
|
140
|
-
class="sidebar-menu-item svadmin-u-60fbb7713999 svadmin-u-6da6a3c3f741 svadmin-u-3960ffc248d9 svadmin-u-8ef2268efbbc svadmin-u-421ac2be5045 svadmin-u-a139beb4e318 svadmin-u-a14daebf7748 svadmin-u-8ecebc9f80e6 svadmin-u-ceb69a6b0e5f svadmin-u-233c0494b485
|
|
140
|
+
class="svadmin-collapsible-trigger sidebar-menu-item svadmin-u-60fbb7713999 svadmin-u-6da6a3c3f741 svadmin-u-3960ffc248d9 svadmin-u-8ef2268efbbc svadmin-u-421ac2be5045 svadmin-u-a139beb4e318 svadmin-u-a14daebf7748 svadmin-u-8ecebc9f80e6 svadmin-u-ceb69a6b0e5f svadmin-u-233c0494b485
|
|
141
141
|
{childActive
|
|
142
142
|
? 'svadmin-u-20aaf08a7ed1 svadmin-u-2689f3958069'
|
|
143
143
|
: 'svadmin-u-98714a2f7d41 svadmin-u-646e10356266'}"
|
package/dist/components.css
CHANGED
|
@@ -2145,6 +2145,77 @@ details[data-svadmin-filter]:not([open]) > :not(summary), details.svadmin-collap
|
|
|
2145
2145
|
display: none !important;
|
|
2146
2146
|
}
|
|
2147
2147
|
|
|
2148
|
+
/* 折叠触发器对齐管理后台 8px 节奏:收紧 summary,展开时只留底部分割线,隐藏浏览器标记并保留 focus-visible。 */
|
|
2149
|
+
details.svadmin-collapsible > summary,
|
|
2150
|
+
details.svadmin-collapsible-filter > summary,
|
|
2151
|
+
details[data-svadmin-filter] > summary,
|
|
2152
|
+
[data-svadmin-collapsible] > summary {
|
|
2153
|
+
display: flex;
|
|
2154
|
+
align-items: center;
|
|
2155
|
+
gap: 0.375rem;
|
|
2156
|
+
min-height: 2rem;
|
|
2157
|
+
margin: 0;
|
|
2158
|
+
padding: 0.25rem 0;
|
|
2159
|
+
list-style: none;
|
|
2160
|
+
cursor: pointer;
|
|
2161
|
+
font-size: 0.8125rem;
|
|
2162
|
+
font-weight: 500;
|
|
2163
|
+
line-height: 1.25rem;
|
|
2164
|
+
}
|
|
2165
|
+
|
|
2166
|
+
details.svadmin-collapsible > summary::-webkit-details-marker,
|
|
2167
|
+
details.svadmin-collapsible-filter > summary::-webkit-details-marker,
|
|
2168
|
+
details[data-svadmin-filter] > summary::-webkit-details-marker,
|
|
2169
|
+
[data-svadmin-collapsible] > summary::-webkit-details-marker {
|
|
2170
|
+
display: none;
|
|
2171
|
+
}
|
|
2172
|
+
|
|
2173
|
+
details.svadmin-collapsible > summary::marker,
|
|
2174
|
+
details.svadmin-collapsible-filter > summary::marker,
|
|
2175
|
+
details[data-svadmin-filter] > summary::marker,
|
|
2176
|
+
[data-svadmin-collapsible] > summary::marker {
|
|
2177
|
+
content: none;
|
|
2178
|
+
}
|
|
2179
|
+
|
|
2180
|
+
details.svadmin-collapsible > summary:focus-visible,
|
|
2181
|
+
details.svadmin-collapsible-filter > summary:focus-visible,
|
|
2182
|
+
details[data-svadmin-filter] > summary:focus-visible,
|
|
2183
|
+
[data-svadmin-collapsible] > summary:focus-visible,
|
|
2184
|
+
[data-svadmin-sidebar] .svadmin-collapsible-trigger:focus-visible {
|
|
2185
|
+
outline: 2px solid var(--ring);
|
|
2186
|
+
outline: 2px solid color-mix(in oklch, var(--ring) 48%, transparent);
|
|
2187
|
+
outline-offset: 2px;
|
|
2188
|
+
}
|
|
2189
|
+
|
|
2190
|
+
details.svadmin-collapsible[open],
|
|
2191
|
+
details.svadmin-collapsible-filter[open],
|
|
2192
|
+
details[data-svadmin-filter][open],
|
|
2193
|
+
[data-svadmin-collapsible][data-open="true"] {
|
|
2194
|
+
margin: 0;
|
|
2195
|
+
padding: 0;
|
|
2196
|
+
border: 0;
|
|
2197
|
+
border-bottom: 1px solid var(--border);
|
|
2198
|
+
border-radius: 0;
|
|
2199
|
+
background: transparent;
|
|
2200
|
+
box-shadow: none;
|
|
2201
|
+
}
|
|
2202
|
+
|
|
2203
|
+
details.svadmin-collapsible[open] > :not(summary),
|
|
2204
|
+
details.svadmin-collapsible-filter[open] > :not(summary),
|
|
2205
|
+
details[data-svadmin-filter][open] > :not(summary),
|
|
2206
|
+
[data-svadmin-collapsible][data-open="true"] > :not(summary) {
|
|
2207
|
+
margin-top: 0.25rem;
|
|
2208
|
+
}
|
|
2209
|
+
|
|
2210
|
+
[data-svadmin-sidebar] .svadmin-collapsible-trigger {
|
|
2211
|
+
padding-block: 0.375rem;
|
|
2212
|
+
}
|
|
2213
|
+
|
|
2214
|
+
[data-svadmin-sidebar] .svadmin-collapsible-trigger.uppercase {
|
|
2215
|
+
margin-top: 0.5rem;
|
|
2216
|
+
margin-bottom: 0.125rem;
|
|
2217
|
+
}
|
|
2218
|
+
|
|
2148
2219
|
/* --- Admin UI layout preset (clean-flat) --- */
|
|
2149
2220
|
/* Keep this public class for layoutPreset API compatibility. The preset only
|
|
2150
2221
|
* adjusts density and composition; color, focus, and elevation stay semantic. */
|
package/dist/index.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ export type { SurfaceTone, SurfaceDensity } from "./design-contract.js";
|
|
|
3
3
|
export { designSystemComponents, type DesignComponentContract, type DesignComponentId, type DesignComponentState, } from "./design-system-components.js";
|
|
4
4
|
export { metricSurfaceClasses, tableSurfaceClasses } from "./design-system.js";
|
|
5
5
|
export { default as AdminApp } from './components/AdminApp.svelte';
|
|
6
|
+
export type { AdminPageRoute } from './components/AdminApp.svelte';
|
|
6
7
|
export { default as AutoTable } from './components/AutoTable.svelte';
|
|
7
8
|
export { default as SegmentedControl } from './components/SegmentedControl.svelte';
|
|
8
9
|
export type { SegmentedControlOption } from './components/SegmentedControl.svelte';
|
package/dist/recipes.d.ts
CHANGED
|
@@ -345,8 +345,8 @@ declare const productSectionRecipeStyles: import("tailwind-variants").TVReturnTy
|
|
|
345
345
|
title?: import("tailwind-variants").ClassValue;
|
|
346
346
|
description?: import("tailwind-variants").ClassValue;
|
|
347
347
|
root?: import("tailwind-variants").ClassValue;
|
|
348
|
-
heading?: import("tailwind-variants").ClassValue;
|
|
349
348
|
actions?: import("tailwind-variants").ClassValue;
|
|
349
|
+
heading?: import("tailwind-variants").ClassValue;
|
|
350
350
|
};
|
|
351
351
|
};
|
|
352
352
|
} | {
|
|
@@ -355,8 +355,8 @@ declare const productSectionRecipeStyles: import("tailwind-variants").TVReturnTy
|
|
|
355
355
|
title?: import("tailwind-variants").ClassValue;
|
|
356
356
|
description?: import("tailwind-variants").ClassValue;
|
|
357
357
|
root?: import("tailwind-variants").ClassValue;
|
|
358
|
-
heading?: import("tailwind-variants").ClassValue;
|
|
359
358
|
actions?: import("tailwind-variants").ClassValue;
|
|
359
|
+
heading?: import("tailwind-variants").ClassValue;
|
|
360
360
|
};
|
|
361
361
|
};
|
|
362
362
|
} | {}, {
|
|
@@ -371,8 +371,8 @@ declare const productSectionRecipeStyles: import("tailwind-variants").TVReturnTy
|
|
|
371
371
|
title?: import("tailwind-variants").ClassValue;
|
|
372
372
|
description?: import("tailwind-variants").ClassValue;
|
|
373
373
|
root?: import("tailwind-variants").ClassValue;
|
|
374
|
-
heading?: import("tailwind-variants").ClassValue;
|
|
375
374
|
actions?: import("tailwind-variants").ClassValue;
|
|
375
|
+
heading?: import("tailwind-variants").ClassValue;
|
|
376
376
|
};
|
|
377
377
|
};
|
|
378
378
|
} | {}, {
|
|
@@ -473,8 +473,8 @@ declare const productSettingsRecipeStyles: import("tailwind-variants").TVReturnT
|
|
|
473
473
|
title?: import("tailwind-variants").ClassValue;
|
|
474
474
|
description?: import("tailwind-variants").ClassValue;
|
|
475
475
|
root?: import("tailwind-variants").ClassValue;
|
|
476
|
-
heading?: import("tailwind-variants").ClassValue;
|
|
477
476
|
actions?: import("tailwind-variants").ClassValue;
|
|
477
|
+
heading?: import("tailwind-variants").ClassValue;
|
|
478
478
|
};
|
|
479
479
|
};
|
|
480
480
|
} | {
|
|
@@ -485,8 +485,8 @@ declare const productSettingsRecipeStyles: import("tailwind-variants").TVReturnT
|
|
|
485
485
|
title?: import("tailwind-variants").ClassValue;
|
|
486
486
|
description?: import("tailwind-variants").ClassValue;
|
|
487
487
|
root?: import("tailwind-variants").ClassValue;
|
|
488
|
-
heading?: import("tailwind-variants").ClassValue;
|
|
489
488
|
actions?: import("tailwind-variants").ClassValue;
|
|
489
|
+
heading?: import("tailwind-variants").ClassValue;
|
|
490
490
|
};
|
|
491
491
|
};
|
|
492
492
|
} | {}, {
|
|
@@ -505,8 +505,8 @@ declare const productSettingsRecipeStyles: import("tailwind-variants").TVReturnT
|
|
|
505
505
|
title?: import("tailwind-variants").ClassValue;
|
|
506
506
|
description?: import("tailwind-variants").ClassValue;
|
|
507
507
|
root?: import("tailwind-variants").ClassValue;
|
|
508
|
-
heading?: import("tailwind-variants").ClassValue;
|
|
509
508
|
actions?: import("tailwind-variants").ClassValue;
|
|
509
|
+
heading?: import("tailwind-variants").ClassValue;
|
|
510
510
|
};
|
|
511
511
|
};
|
|
512
512
|
} | {}, {
|
|
@@ -832,11 +832,11 @@ export declare const contentHeaderRecipe: (props?: Parameters<typeof contentHead
|
|
|
832
832
|
description: string;
|
|
833
833
|
root: string;
|
|
834
834
|
row: string;
|
|
835
|
+
actions: string;
|
|
835
836
|
heading: string;
|
|
836
837
|
breadcrumbs: string;
|
|
837
838
|
currentCrumb: string;
|
|
838
839
|
eyebrow: string;
|
|
839
|
-
actions: string;
|
|
840
840
|
};
|
|
841
841
|
export declare const metricBlockRecipe: (props?: Parameters<typeof metricBlockRecipeStyles>[0]) => {
|
|
842
842
|
detail: string;
|
|
@@ -853,8 +853,8 @@ export declare const productSectionRecipe: (props?: Parameters<typeof productSec
|
|
|
853
853
|
title: string;
|
|
854
854
|
description: string;
|
|
855
855
|
root: string;
|
|
856
|
-
heading: string;
|
|
857
856
|
actions: string;
|
|
857
|
+
heading: string;
|
|
858
858
|
};
|
|
859
859
|
export declare const productToolbarRecipe: (props?: Parameters<typeof productToolbarRecipeStyles>[0]) => {
|
|
860
860
|
root: string;
|
|
@@ -874,8 +874,8 @@ export declare const productSettingsRecipe: (props?: Parameters<typeof productSe
|
|
|
874
874
|
title: string;
|
|
875
875
|
description: string;
|
|
876
876
|
root: string;
|
|
877
|
-
heading: string;
|
|
878
877
|
actions: string;
|
|
878
|
+
heading: string;
|
|
879
879
|
};
|
|
880
880
|
export declare const productSettingsRowRecipe: (props?: Parameters<typeof productSettingsRowRecipeStyles>[0]) => {
|
|
881
881
|
label: string;
|
|
@@ -919,11 +919,11 @@ export declare const allRecipes: {
|
|
|
919
919
|
description: string;
|
|
920
920
|
root: string;
|
|
921
921
|
row: string;
|
|
922
|
+
actions: string;
|
|
922
923
|
heading: string;
|
|
923
924
|
breadcrumbs: string;
|
|
924
925
|
currentCrumb: string;
|
|
925
926
|
eyebrow: string;
|
|
926
|
-
actions: string;
|
|
927
927
|
};
|
|
928
928
|
metricBlockRecipe: (props?: Parameters<typeof metricBlockRecipeStyles>[0]) => {
|
|
929
929
|
detail: string;
|
|
@@ -940,8 +940,8 @@ export declare const allRecipes: {
|
|
|
940
940
|
title: string;
|
|
941
941
|
description: string;
|
|
942
942
|
root: string;
|
|
943
|
-
heading: string;
|
|
944
943
|
actions: string;
|
|
944
|
+
heading: string;
|
|
945
945
|
};
|
|
946
946
|
productToolbarRecipe: (props?: Parameters<typeof productToolbarRecipeStyles>[0]) => {
|
|
947
947
|
root: string;
|
|
@@ -961,8 +961,8 @@ export declare const allRecipes: {
|
|
|
961
961
|
title: string;
|
|
962
962
|
description: string;
|
|
963
963
|
root: string;
|
|
964
|
-
heading: string;
|
|
965
964
|
actions: string;
|
|
965
|
+
heading: string;
|
|
966
966
|
};
|
|
967
967
|
productSettingsRowRecipe: (props?: Parameters<typeof productSettingsRowRecipeStyles>[0]) => {
|
|
968
968
|
label: string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@svadmin/ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.84.1",
|
|
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.
|
|
91
|
+
"@svadmin/core": "^0.61.1",
|
|
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.
|
|
142
|
+
"@svadmin/devtools": "^0.3.2",
|
|
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.
|
|
180
|
+
"@svadmin/ai-elements": "^0.11.3",
|
|
181
181
|
"@sveltejs/vite-plugin-svelte": "^7.3.0",
|
|
182
182
|
"@tailwindcss/cli": "4.3.3",
|
|
183
183
|
"@testing-library/dom": "^10.4.1",
|