@svadmin/ui 0.46.0 → 0.48.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.
- package/dist/components/AboutSettings.svelte +21 -96
- package/dist/components/AdminApp.svelte +20 -0
- package/dist/components/AdminApp.svelte.d.ts +5 -1
- package/dist/components/ApiSettings.svelte +153 -246
- package/dist/components/AppearanceSettings.svelte +36 -165
- package/dist/components/AutoForm.svelte +21 -3
- package/dist/components/DetailDrawer.svelte +74 -0
- package/dist/components/DetailDrawer.svelte.d.ts +16 -0
- package/dist/components/FieldRenderer.svelte +70 -2
- package/dist/components/FieldRenderer.svelte.d.ts +2 -0
- package/dist/components/IntegrationsSettings.svelte +22 -61
- package/dist/components/Layout.svelte +15 -1
- package/dist/components/NotificationsSettings.svelte +22 -103
- package/dist/components/PasswordInput.svelte +4 -0
- package/dist/components/PasswordInput.svelte.d.ts +1 -0
- package/dist/components/PermissionMatrix.svelte +17 -8
- package/dist/components/RowActions.svelte +154 -0
- package/dist/components/RowActions.svelte.d.ts +26 -0
- package/dist/components/SecuritySettings.svelte +165 -140
- package/dist/components/SecuritySettings.svelte.d.ts +1 -2
- package/dist/components/SettingsPage.svelte +12 -2
- package/dist/components/account/CompanyProfilePage.svelte +10 -4
- package/dist/components/account/SettingsEnterprisePage.svelte +227 -23
- package/dist/components/account/SettingsSidebarPage.svelte +12 -1
- package/dist/components/account/UserProfilePage.svelte +5 -4
- package/dist/components/content/ApiKeyList.svelte +30 -5
- package/dist/components/content/ApiKeyList.svelte.d.ts +3 -0
- package/dist/components/content/WorkspaceLayout.svelte +7 -4
- package/dist/components/content/WorkspaceLayout.svelte.d.ts +1 -0
- package/dist/components/ui/sheet/sheet.svelte +122 -10
- package/dist/index.d.ts +3 -0
- package/dist/index.js +2 -0
- package/package.json +5 -2
|
@@ -1,108 +1,33 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
+
import { captureAdminContext, getColorTheme, getResolvedTheme } from '@svadmin/core';
|
|
2
3
|
import { useTranslation } from '@svadmin/core/i18n';
|
|
3
|
-
import { captureAdminContext } from '@svadmin/core';
|
|
4
|
-
import { getResolvedTheme, getColorTheme } from '@svadmin/core';
|
|
5
|
-
import * as Card from './ui/card/index.js';
|
|
6
4
|
import { Badge } from './ui/badge/index.js';
|
|
7
|
-
import
|
|
5
|
+
import DescriptionList from './content/DescriptionList.svelte';
|
|
6
|
+
import SettingsGroup from './content/SettingsGroup.svelte';
|
|
8
7
|
|
|
9
8
|
const i18n = useTranslation();
|
|
10
9
|
const adminContext = captureAdminContext();
|
|
11
|
-
|
|
12
10
|
const resources = $derived(adminContext.resources);
|
|
13
11
|
const providerNames = $derived(adminContext.getDataProviderNames());
|
|
14
|
-
|
|
15
|
-
const version = '__SVADMIN_VERSION__'; // replaced at build time or shown as-is
|
|
12
|
+
const version = '__SVADMIN_VERSION__';
|
|
16
13
|
</script>
|
|
17
14
|
|
|
18
15
|
<div class="space-y-6">
|
|
19
|
-
<div>
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
</
|
|
31
|
-
<
|
|
32
|
-
<
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
</div>
|
|
37
|
-
</div>
|
|
38
|
-
</Card.CardContent>
|
|
39
|
-
</Card.Card>
|
|
40
|
-
|
|
41
|
-
<!-- Registered Resources -->
|
|
42
|
-
<Card.Card>
|
|
43
|
-
<Card.CardHeader class="pb-3">
|
|
44
|
-
<Card.CardTitle class="text-base flex items-center gap-2">
|
|
45
|
-
<Layers class="h-4 w-4 text-muted-foreground" />
|
|
46
|
-
{i18n.t('settings.registeredResources')}
|
|
47
|
-
</Card.CardTitle>
|
|
48
|
-
</Card.CardHeader>
|
|
49
|
-
<Card.CardContent>
|
|
50
|
-
<div class="flex flex-wrap gap-2">
|
|
51
|
-
{#each resources as resource, _i (_i)}
|
|
52
|
-
<Badge variant="outline" class="font-mono text-xs">{resource.name}</Badge>
|
|
53
|
-
{/each}
|
|
54
|
-
{#if resources.length === 0}
|
|
55
|
-
<p class="text-sm text-muted-foreground">—</p>
|
|
56
|
-
{/if}
|
|
57
|
-
</div>
|
|
58
|
-
</Card.CardContent>
|
|
59
|
-
</Card.Card>
|
|
60
|
-
|
|
61
|
-
<!-- Data Providers -->
|
|
62
|
-
<Card.Card>
|
|
63
|
-
<Card.CardHeader class="pb-3">
|
|
64
|
-
<Card.CardTitle class="text-base flex items-center gap-2">
|
|
65
|
-
<Database class="h-4 w-4 text-muted-foreground" />
|
|
66
|
-
{i18n.t('settings.dataProvider')}
|
|
67
|
-
</Card.CardTitle>
|
|
68
|
-
</Card.CardHeader>
|
|
69
|
-
<Card.CardContent>
|
|
70
|
-
<div class="flex flex-wrap gap-2">
|
|
71
|
-
{#each providerNames as name, _i (_i)}
|
|
72
|
-
<Badge variant="outline" class="font-mono text-xs">{name}</Badge>
|
|
73
|
-
{/each}
|
|
74
|
-
</div>
|
|
75
|
-
</Card.CardContent>
|
|
76
|
-
</Card.Card>
|
|
77
|
-
|
|
78
|
-
<!-- Current Environment -->
|
|
79
|
-
<Card.Card>
|
|
80
|
-
<Card.CardHeader class="pb-3">
|
|
81
|
-
<Card.CardTitle class="text-base flex items-center gap-2">
|
|
82
|
-
<Globe class="h-4 w-4 text-muted-foreground" />
|
|
83
|
-
{i18n.t('settings.currentEnvironment')}
|
|
84
|
-
</Card.CardTitle>
|
|
85
|
-
</Card.CardHeader>
|
|
86
|
-
<Card.CardContent>
|
|
87
|
-
<div class="grid gap-3 text-sm">
|
|
88
|
-
<div class="flex items-center justify-between">
|
|
89
|
-
<span class="text-muted-foreground">{i18n.t('settings.language')}</span>
|
|
90
|
-
<span class="font-mono text-xs">{i18n.locale}</span>
|
|
91
|
-
</div>
|
|
92
|
-
<div class="h-px bg-border"></div>
|
|
93
|
-
<div class="flex items-center justify-between">
|
|
94
|
-
<span class="text-muted-foreground">{i18n.t('settings.themeMode')}</span>
|
|
95
|
-
<span class="font-mono text-xs">{getResolvedTheme()}</span>
|
|
96
|
-
</div>
|
|
97
|
-
<div class="h-px bg-border"></div>
|
|
98
|
-
<div class="flex items-center justify-between">
|
|
99
|
-
<span class="text-muted-foreground flex items-center gap-1.5">
|
|
100
|
-
<Palette class="h-3.5 w-3.5" />
|
|
101
|
-
{i18n.t('settings.colorAccent')}
|
|
102
|
-
</span>
|
|
103
|
-
<span class="font-mono text-xs">{getColorTheme()}</span>
|
|
104
|
-
</div>
|
|
105
|
-
</div>
|
|
106
|
-
</Card.CardContent>
|
|
107
|
-
</Card.Card>
|
|
16
|
+
<div><h2 class="text-xl font-semibold text-foreground">{i18n.t('settings.about')}</h2></div>
|
|
17
|
+
<SettingsGroup title="svadmin" description={i18n.t('settings.currentEnvironment')} bodyClass="space-y-6">
|
|
18
|
+
<DescriptionList columns={2} items={[
|
|
19
|
+
{ label: i18n.t('settings.version'), value: version },
|
|
20
|
+
{ label: i18n.t('settings.language'), value: i18n.locale },
|
|
21
|
+
{ label: i18n.t('settings.themeMode'), value: getResolvedTheme() },
|
|
22
|
+
{ label: i18n.t('settings.colorAccent'), value: getColorTheme() },
|
|
23
|
+
]} />
|
|
24
|
+
<div class="border-t border-border pt-5">
|
|
25
|
+
<h3 class="text-sm font-medium text-foreground">{i18n.t('settings.registeredResources')}</h3>
|
|
26
|
+
<div class="mt-3 flex flex-wrap gap-2">{#each resources as resource (resource.name)}<Badge variant="outline" class="font-mono text-xs">{resource.name}</Badge>{:else}<span class="text-sm text-muted-foreground">—</span>{/each}</div>
|
|
27
|
+
</div>
|
|
28
|
+
<div class="border-t border-border pt-5">
|
|
29
|
+
<h3 class="text-sm font-medium text-foreground">{i18n.t('settings.dataProvider')}</h3>
|
|
30
|
+
<div class="mt-3 flex flex-wrap gap-2">{#each providerNames as name (name)}<Badge variant="outline" class="font-mono text-xs">{name}</Badge>{:else}<span class="text-sm text-muted-foreground">—</span>{/each}</div>
|
|
31
|
+
</div>
|
|
32
|
+
</SettingsGroup>
|
|
108
33
|
</div>
|
|
@@ -25,14 +25,18 @@
|
|
|
25
25
|
AuditLogProvider,
|
|
26
26
|
AuthProvider,
|
|
27
27
|
ChatProvider,
|
|
28
|
+
CredentialProvider,
|
|
28
29
|
DataProviderInput,
|
|
30
|
+
IdentityGovernanceProvider,
|
|
29
31
|
I18nProvider,
|
|
30
32
|
LiveProvider,
|
|
31
33
|
MenuItem,
|
|
32
34
|
NotificationProvider,
|
|
35
|
+
OrganizationProvider,
|
|
33
36
|
ProviderBundle,
|
|
34
37
|
ResourceDefinition,
|
|
35
38
|
RouterProvider,
|
|
39
|
+
SessionProvider,
|
|
36
40
|
TaskProvider,
|
|
37
41
|
TenantAdapter,
|
|
38
42
|
TenantContext,
|
|
@@ -93,6 +97,10 @@
|
|
|
93
97
|
taskProvider?: TaskProvider;
|
|
94
98
|
routerProvider?: RouterProvider;
|
|
95
99
|
tenantAdapter?: TenantAdapter;
|
|
100
|
+
organizationProvider?: OrganizationProvider;
|
|
101
|
+
identityGovernanceProvider?: IdentityGovernanceProvider;
|
|
102
|
+
sessionProvider?: SessionProvider;
|
|
103
|
+
credentialProvider?: CredentialProvider;
|
|
96
104
|
/** Request/tree-scoped tenant. Tenant identifiers are never rendered by DevTools. */
|
|
97
105
|
tenant?: TenantContext;
|
|
98
106
|
resources: ResourceDefinition[];
|
|
@@ -148,6 +156,10 @@
|
|
|
148
156
|
taskProvider,
|
|
149
157
|
routerProvider,
|
|
150
158
|
tenantAdapter,
|
|
159
|
+
organizationProvider,
|
|
160
|
+
identityGovernanceProvider,
|
|
161
|
+
sessionProvider,
|
|
162
|
+
credentialProvider,
|
|
151
163
|
tenant,
|
|
152
164
|
resources,
|
|
153
165
|
locale = $bindable(),
|
|
@@ -190,6 +202,10 @@
|
|
|
190
202
|
const resolvedTaskProvider = $derived(taskProvider ?? resolvedProviderBundle?.taskProvider);
|
|
191
203
|
const resolvedRouterInput = $derived(routerProvider ?? resolvedProviderBundle?.routerProvider);
|
|
192
204
|
const resolvedTenantAdapter = $derived(tenantAdapter ?? resolvedProviderBundle?.tenantAdapter);
|
|
205
|
+
const resolvedOrganizationProvider = $derived(organizationProvider ?? resolvedProviderBundle?.organizationProvider ?? undefined);
|
|
206
|
+
const resolvedIdentityGovernanceProvider = $derived(identityGovernanceProvider ?? resolvedProviderBundle?.identityGovernanceProvider ?? undefined);
|
|
207
|
+
const resolvedSessionProvider = $derived(sessionProvider ?? resolvedProviderBundle?.sessionProvider ?? undefined);
|
|
208
|
+
const resolvedCredentialProvider = $derived(credentialProvider ?? resolvedProviderBundle?.credentialProvider ?? undefined);
|
|
193
209
|
const resolvedI18nProvider = $derived(i18nProvider ?? resolvedProviderBundle?.i18nProvider);
|
|
194
210
|
|
|
195
211
|
// Resolve router provider (default to hash)
|
|
@@ -280,6 +296,10 @@
|
|
|
280
296
|
get chatProvider() { return resolvedChatProvider ?? null; },
|
|
281
297
|
get agentProvider() { return resolvedAgentProvider ?? null; },
|
|
282
298
|
get taskProvider() { return resolvedTaskProvider; },
|
|
299
|
+
get organizationProvider() { return resolvedOrganizationProvider ?? null; },
|
|
300
|
+
get identityGovernanceProvider() { return resolvedIdentityGovernanceProvider ?? null; },
|
|
301
|
+
get sessionProvider() { return resolvedSessionProvider ?? null; },
|
|
302
|
+
get credentialProvider() { return resolvedCredentialProvider ?? null; },
|
|
283
303
|
get resources() { return resources; },
|
|
284
304
|
get routerProvider() { return scopedRouterProvider; },
|
|
285
305
|
get tenantAdapter() { return resolvedTenantAdapter; },
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import '../app.css';
|
|
2
2
|
import { type Component, type Snippet } from 'svelte';
|
|
3
|
-
import type { AccessControlProvider, AgentProvider, AuditLogProvider, AuthProvider, ChatProvider, DataProviderInput, I18nProvider, LiveProvider, MenuItem, NotificationProvider, ResourceDefinition, RouterProvider, TaskProvider, TenantAdapter, TenantContext, ThemeConfig, ThemeMode } from '@svadmin/core';
|
|
3
|
+
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';
|
|
4
4
|
import { QueryClient, type DefaultOptions } from '@tanstack/svelte-query';
|
|
5
5
|
import { type ComponentRegistry } from '../component-registry.svelte.js';
|
|
6
6
|
import type { AdminProviderBundle } from '../types.js';
|
|
@@ -21,6 +21,10 @@ interface Props {
|
|
|
21
21
|
taskProvider?: TaskProvider;
|
|
22
22
|
routerProvider?: RouterProvider;
|
|
23
23
|
tenantAdapter?: TenantAdapter;
|
|
24
|
+
organizationProvider?: OrganizationProvider;
|
|
25
|
+
identityGovernanceProvider?: IdentityGovernanceProvider;
|
|
26
|
+
sessionProvider?: SessionProvider;
|
|
27
|
+
credentialProvider?: CredentialProvider;
|
|
24
28
|
/** Request/tree-scoped tenant. Tenant identifiers are never rendered by DevTools. */
|
|
25
29
|
tenant?: TenantContext;
|
|
26
30
|
resources: ResourceDefinition[];
|