@svadmin/ui 0.45.0 → 0.47.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/components/AboutSettings.svelte +21 -96
- package/dist/components/ApiSettings.svelte +54 -234
- package/dist/components/AppearanceSettings.svelte +36 -165
- package/dist/components/AuthPageShell.svelte +32 -0
- package/dist/components/AuthPageShell.svelte.d.ts +11 -0
- 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/ForgotPasswordPage.svelte +4 -68
- package/dist/components/IntegrationsSettings.svelte +22 -61
- package/dist/components/LoginPage.svelte +33 -124
- package/dist/components/NotificationsSettings.svelte +22 -103
- package/dist/components/PermissionMatrix.svelte +18 -9
- package/dist/components/RegisterPage.svelte +7 -62
- package/dist/components/RowActions.svelte +154 -0
- package/dist/components/RowActions.svelte.d.ts +26 -0
- package/dist/components/SecuritySettings.svelte +18 -58
- package/dist/components/SettingsPage.svelte +12 -2
- package/dist/components/SvadminLogo.svelte +1 -1
- package/dist/components/UpdatePasswordPage.svelte +3 -55
- package/dist/components/account/CompanyProfilePage.svelte +19 -7
- package/dist/components/account/SettingsEnterprisePage.svelte +25 -4
- package/dist/components/account/SettingsPlainPage.svelte +25 -3
- package/dist/components/account/SettingsSidebarPage.svelte +31 -2
- package/dist/components/account/UserProfilePage.svelte +5 -4
- package/dist/components/content/ApiKeyList.svelte +40 -6
- package/dist/components/content/ApiKeyList.svelte.d.ts +10 -0
- package/dist/components/content/DataState.svelte +25 -9
- package/dist/components/content/DataState.svelte.d.ts +2 -0
- package/dist/components/content/FileList.svelte +12 -4
- package/dist/components/content/FileList.svelte.d.ts +9 -0
- package/dist/components/content/FilterToolbar.svelte +10 -2
- package/dist/components/content/FilterToolbar.svelte.d.ts +1 -0
- package/dist/components/content/MemberList.svelte +13 -5
- package/dist/components/content/MemberList.svelte.d.ts +9 -0
- package/dist/components/content/MetricBlock.svelte +19 -2
- package/dist/components/content/MetricBlock.svelte.d.ts +2 -0
- package/dist/components/content/NetworkTable.svelte +9 -3
- package/dist/components/content/NetworkTable.svelte.d.ts +9 -0
- package/dist/components/content/NetworkUserCard.svelte +47 -7
- package/dist/components/content/NetworkUserCard.svelte.d.ts +13 -0
- package/dist/components/content/SectionHeader.svelte +3 -2
- package/dist/components/content/SectionHeader.svelte.d.ts +1 -0
- package/dist/components/content/SecurityEventTable.svelte +14 -5
- package/dist/components/content/SecurityEventTable.svelte.d.ts +9 -0
- package/dist/components/content/SettingsFieldRow.svelte +28 -0
- package/dist/components/content/SettingsFieldRow.svelte.d.ts +11 -0
- package/dist/components/content/SettingsGroup.svelte +33 -0
- package/dist/components/content/SettingsGroup.svelte.d.ts +12 -0
- package/dist/components/content/WorkspaceLayout.svelte +31 -0
- package/dist/components/content/WorkspaceLayout.svelte.d.ts +12 -0
- package/dist/components/content/index.d.ts +4 -1
- package/dist/components/content/index.js +3 -0
- package/dist/components/network/UserCardsNFTPage.svelte +25 -6
- package/dist/index.d.ts +9 -1
- package/dist/index.js +6 -0
- package/package.json +4 -1
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { Snippet } from 'svelte';
|
|
3
|
+
import { cn } from '../../utils.js';
|
|
4
|
+
|
|
5
|
+
interface Props {
|
|
6
|
+
label: string;
|
|
7
|
+
description?: string;
|
|
8
|
+
control: Snippet;
|
|
9
|
+
separated?: boolean;
|
|
10
|
+
class?: string;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
let {
|
|
14
|
+
label,
|
|
15
|
+
description,
|
|
16
|
+
control,
|
|
17
|
+
separated = false,
|
|
18
|
+
class: className = '',
|
|
19
|
+
}: Props = $props();
|
|
20
|
+
</script>
|
|
21
|
+
|
|
22
|
+
<div class={cn('flex min-h-11 items-center justify-between gap-4 py-3', separated && 'border-t border-border', className)} data-svadmin-settings-field-row>
|
|
23
|
+
<div class="min-w-0">
|
|
24
|
+
<p class="text-sm font-medium text-foreground">{label}</p>
|
|
25
|
+
{#if description}<p class="mt-1 max-w-2xl text-sm leading-5 text-muted-foreground">{description}</p>{/if}
|
|
26
|
+
</div>
|
|
27
|
+
<div class="shrink-0">{@render control()}</div>
|
|
28
|
+
</div>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
interface Props {
|
|
3
|
+
label: string;
|
|
4
|
+
description?: string;
|
|
5
|
+
control: Snippet;
|
|
6
|
+
separated?: boolean;
|
|
7
|
+
class?: string;
|
|
8
|
+
}
|
|
9
|
+
declare const SettingsFieldRow: import("svelte").Component<Props, {}, "">;
|
|
10
|
+
type SettingsFieldRow = ReturnType<typeof SettingsFieldRow>;
|
|
11
|
+
export default SettingsFieldRow;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { Snippet } from 'svelte';
|
|
3
|
+
import { cn } from '../../utils.js';
|
|
4
|
+
|
|
5
|
+
interface Props {
|
|
6
|
+
title: string;
|
|
7
|
+
description?: string;
|
|
8
|
+
actions?: Snippet;
|
|
9
|
+
children: Snippet;
|
|
10
|
+
class?: string;
|
|
11
|
+
bodyClass?: string;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
let {
|
|
15
|
+
title,
|
|
16
|
+
description,
|
|
17
|
+
actions,
|
|
18
|
+
children,
|
|
19
|
+
class: className = '',
|
|
20
|
+
bodyClass = '',
|
|
21
|
+
}: Props = $props();
|
|
22
|
+
</script>
|
|
23
|
+
|
|
24
|
+
<section class={cn('overflow-hidden rounded-lg border border-border bg-card shadow-sm', className)} data-svadmin-settings-group>
|
|
25
|
+
<header class="flex flex-col gap-3 border-b border-border px-5 py-4 sm:flex-row sm:items-start sm:justify-between">
|
|
26
|
+
<div class="min-w-0 space-y-1">
|
|
27
|
+
<h2 class="text-sm font-semibold text-foreground">{title}</h2>
|
|
28
|
+
{#if description}<p class="max-w-2xl text-sm leading-6 text-muted-foreground">{description}</p>{/if}
|
|
29
|
+
</div>
|
|
30
|
+
{#if actions}<div class="flex shrink-0 flex-wrap items-center gap-2">{@render actions()}</div>{/if}
|
|
31
|
+
</header>
|
|
32
|
+
<div class={cn('p-5', bodyClass)}>{@render children()}</div>
|
|
33
|
+
</section>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
interface Props {
|
|
3
|
+
title: string;
|
|
4
|
+
description?: string;
|
|
5
|
+
actions?: Snippet;
|
|
6
|
+
children: Snippet;
|
|
7
|
+
class?: string;
|
|
8
|
+
bodyClass?: string;
|
|
9
|
+
}
|
|
10
|
+
declare const SettingsGroup: import("svelte").Component<Props, {}, "">;
|
|
11
|
+
type SettingsGroup = ReturnType<typeof SettingsGroup>;
|
|
12
|
+
export default SettingsGroup;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { Snippet } from 'svelte';
|
|
3
|
+
import { cn } from '../../utils.js';
|
|
4
|
+
|
|
5
|
+
interface Props {
|
|
6
|
+
primary: Snippet;
|
|
7
|
+
secondary?: Snippet;
|
|
8
|
+
summary?: Snippet;
|
|
9
|
+
secondaryWidth?: string;
|
|
10
|
+
mobileOrder?: 'primary-first' | 'secondary-first';
|
|
11
|
+
class?: string;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
let {
|
|
15
|
+
primary,
|
|
16
|
+
secondary,
|
|
17
|
+
summary,
|
|
18
|
+
secondaryWidth = '22rem',
|
|
19
|
+
mobileOrder = 'primary-first',
|
|
20
|
+
class: className = '',
|
|
21
|
+
}: Props = $props();
|
|
22
|
+
</script>
|
|
23
|
+
|
|
24
|
+
<div class={cn('flex flex-col gap-6', className)} data-svadmin-workspace-layout style:--workspace-secondary-width={secondaryWidth}>
|
|
25
|
+
{#if summary}<div data-svadmin-workspace-summary>{@render summary()}</div>{/if}
|
|
26
|
+
<div class={cn('grid min-w-0 items-start gap-6 xl:grid-cols-[minmax(0,1fr)_var(--workspace-secondary-width)]', mobileOrder === 'secondary-first' && 'grid-rows-[auto_auto]')}>
|
|
27
|
+
{#if mobileOrder === 'secondary-first' && secondary}<aside class="order-1 min-w-0 xl:order-2">{@render secondary()}</aside>{/if}
|
|
28
|
+
<div class={cn('min-w-0', mobileOrder === 'secondary-first' ? 'order-2 xl:order-1' : 'order-1')} data-svadmin-workspace-primary>{@render primary()}</div>
|
|
29
|
+
{#if mobileOrder !== 'secondary-first' && secondary}<aside class="order-2 min-w-0 xl:order-2">{@render secondary()}</aside>{/if}
|
|
30
|
+
</div>
|
|
31
|
+
</div>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
interface Props {
|
|
3
|
+
primary: Snippet;
|
|
4
|
+
secondary?: Snippet;
|
|
5
|
+
summary?: Snippet;
|
|
6
|
+
secondaryWidth?: string;
|
|
7
|
+
mobileOrder?: 'primary-first' | 'secondary-first';
|
|
8
|
+
class?: string;
|
|
9
|
+
}
|
|
10
|
+
declare const WorkspaceLayout: import("svelte").Component<Props, {}, "">;
|
|
11
|
+
type WorkspaceLayout = ReturnType<typeof WorkspaceLayout>;
|
|
12
|
+
export default WorkspaceLayout;
|
|
@@ -2,6 +2,9 @@ export { default as ContentPageShell } from './ContentPageShell.svelte';
|
|
|
2
2
|
export { default as ContentPageHeader } from './ContentPageHeader.svelte';
|
|
3
3
|
export { default as SectionHeader } from './SectionHeader.svelte';
|
|
4
4
|
export { default as PageToolbar } from './PageToolbar.svelte';
|
|
5
|
+
export { default as WorkspaceLayout } from './WorkspaceLayout.svelte';
|
|
6
|
+
export { default as SettingsGroup } from './SettingsGroup.svelte';
|
|
7
|
+
export { default as SettingsFieldRow } from './SettingsFieldRow.svelte';
|
|
5
8
|
export { default as MetricBlock } from './MetricBlock.svelte';
|
|
6
9
|
export { default as DescriptionList } from './DescriptionList.svelte';
|
|
7
10
|
export { default as StatusBadge } from './StatusBadge.svelte';
|
|
@@ -24,7 +27,7 @@ export { default as MemberList } from './MemberList.svelte';
|
|
|
24
27
|
export type { MemberSummary } from './MemberList.svelte';
|
|
25
28
|
export { default as ImportDropzone } from './ImportDropzone.svelte';
|
|
26
29
|
export { default as NetworkUserCard } from './NetworkUserCard.svelte';
|
|
27
|
-
export type { NetworkUser } from './NetworkUserCard.svelte';
|
|
30
|
+
export type { NetworkUser, NetworkMetric } from './NetworkUserCard.svelte';
|
|
28
31
|
export { default as NetworkTable } from './NetworkTable.svelte';
|
|
29
32
|
export type { NetworkColumn } from './NetworkTable.types.js';
|
|
30
33
|
export { default as OtpInput } from './OtpInput.svelte';
|
|
@@ -2,6 +2,9 @@ export { default as ContentPageShell } from './ContentPageShell.svelte';
|
|
|
2
2
|
export { default as ContentPageHeader } from './ContentPageHeader.svelte';
|
|
3
3
|
export { default as SectionHeader } from './SectionHeader.svelte';
|
|
4
4
|
export { default as PageToolbar } from './PageToolbar.svelte';
|
|
5
|
+
export { default as WorkspaceLayout } from './WorkspaceLayout.svelte';
|
|
6
|
+
export { default as SettingsGroup } from './SettingsGroup.svelte';
|
|
7
|
+
export { default as SettingsFieldRow } from './SettingsFieldRow.svelte';
|
|
5
8
|
export { default as MetricBlock } from './MetricBlock.svelte';
|
|
6
9
|
export { default as DescriptionList } from './DescriptionList.svelte';
|
|
7
10
|
export { default as StatusBadge } from './StatusBadge.svelte';
|
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import { useTranslation } from '@svadmin/core/i18n';
|
|
3
|
-
import { Check, Plus } from '@lucide/svelte';
|
|
4
|
-
import { Button } from '../ui/button/index.js';
|
|
5
|
-
import { Badge } from '../ui/badge/index.js';
|
|
6
|
-
import * as Card from '../ui/card/index.js';
|
|
7
3
|
import ContentPageShell from '../content/ContentPageShell.svelte';
|
|
8
4
|
import ContentPageHeader from '../content/ContentPageHeader.svelte';
|
|
9
5
|
import FilterToolbar from '../content/FilterToolbar.svelte';
|
|
10
6
|
import DataState from '../content/DataState.svelte';
|
|
7
|
+
import NetworkUserCard from '../content/NetworkUserCard.svelte';
|
|
11
8
|
import type { NetworkUser } from '../content/NetworkUserCard.svelte';
|
|
12
9
|
|
|
13
10
|
const i18n = useTranslation();
|
|
@@ -28,6 +25,28 @@
|
|
|
28
25
|
|
|
29
26
|
<ContentPageShell pageId="network-user-cards" width="wide">
|
|
30
27
|
<ContentPageHeader title={i18n.t('network.userCards')} description={i18n.t('network.userCardsDescription')} />
|
|
31
|
-
<FilterToolbar bind:query placeholder={i18n.t('common.search')} />
|
|
32
|
-
{#if filtered.length === 0}
|
|
28
|
+
<FilterToolbar bind:query placeholder={i18n.t('common.search')} clearLabel={i18n.locale === 'zh-CN' ? '清除搜索' : 'Clear search'} />
|
|
29
|
+
{#if filtered.length === 0}
|
|
30
|
+
<DataState state="empty" title={i18n.t('network.userCards')} />
|
|
31
|
+
{:else}
|
|
32
|
+
<div class="grid gap-4 md:grid-cols-2 xl:grid-cols-3">
|
|
33
|
+
{#each filtered as user (user.id)}
|
|
34
|
+
<NetworkUserCard
|
|
35
|
+
{user}
|
|
36
|
+
tags={user.tags}
|
|
37
|
+
verified={user.verified}
|
|
38
|
+
verifiedLabel={i18n.locale === 'zh-CN' ? '已验证' : 'Verified'}
|
|
39
|
+
metrics={[
|
|
40
|
+
{ label: i18n.t('network.nftCollection'), value: user.collectionCount },
|
|
41
|
+
{ label: i18n.t('network.floorPrice'), value: user.floorPrice },
|
|
42
|
+
{ label: i18n.t('network.volume'), value: user.volume },
|
|
43
|
+
]}
|
|
44
|
+
connected={connected.includes(user.id)}
|
|
45
|
+
connectLabel={i18n.t('network.connect')}
|
|
46
|
+
connectedLabel={i18n.t('network.connected')}
|
|
47
|
+
onconnect={() => toggle(user.id)}
|
|
48
|
+
/>
|
|
49
|
+
{/each}
|
|
50
|
+
</div>
|
|
51
|
+
{/if}
|
|
33
52
|
</ContentPageShell>
|
package/dist/index.d.ts
CHANGED
|
@@ -16,6 +16,7 @@ export { default as StatsCard } from './components/StatsCard.svelte';
|
|
|
16
16
|
export { default as PageHeader } from './components/PageHeader.svelte';
|
|
17
17
|
export { default as ResourceOperationsPage } from './components/ResourceOperationsPage.svelte';
|
|
18
18
|
export { default as LoginPage } from './components/LoginPage.svelte';
|
|
19
|
+
export { default as AuthPageShell } from './components/AuthPageShell.svelte';
|
|
19
20
|
export { default as RegisterPage } from './components/RegisterPage.svelte';
|
|
20
21
|
export { default as ForgotPasswordPage } from './components/ForgotPasswordPage.svelte';
|
|
21
22
|
export { default as CanAccess } from './components/CanAccess.svelte';
|
|
@@ -157,7 +158,11 @@ export { default as ContentPageShell } from './components/content/ContentPageShe
|
|
|
157
158
|
export { default as ContentPageHeader } from './components/content/ContentPageHeader.svelte';
|
|
158
159
|
export { default as SectionHeader } from './components/content/SectionHeader.svelte';
|
|
159
160
|
export { default as PageToolbar } from './components/content/PageToolbar.svelte';
|
|
161
|
+
export { default as WorkspaceLayout } from './components/content/WorkspaceLayout.svelte';
|
|
162
|
+
export { default as SettingsGroup } from './components/content/SettingsGroup.svelte';
|
|
163
|
+
export { default as SettingsFieldRow } from './components/content/SettingsFieldRow.svelte';
|
|
160
164
|
export { default as MetricBlock } from './components/content/MetricBlock.svelte';
|
|
165
|
+
export type { MetricTrendTone } from './components/content/MetricBlock.svelte';
|
|
161
166
|
export { default as DescriptionList } from './components/content/DescriptionList.svelte';
|
|
162
167
|
export type { DescriptionItem } from './components/content/DescriptionList.svelte';
|
|
163
168
|
export { default as StatusBadge } from './components/content/StatusBadge.svelte';
|
|
@@ -181,7 +186,7 @@ export { default as MemberList } from './components/content/MemberList.svelte';
|
|
|
181
186
|
export type { MemberSummary } from './components/content/MemberList.svelte';
|
|
182
187
|
export { default as ImportDropzone } from './components/content/ImportDropzone.svelte';
|
|
183
188
|
export { default as NetworkUserCard } from './components/content/NetworkUserCard.svelte';
|
|
184
|
-
export type { NetworkUser } from './components/content/NetworkUserCard.svelte';
|
|
189
|
+
export type { NetworkUser, NetworkMetric } from './components/content/NetworkUserCard.svelte';
|
|
185
190
|
export { default as NetworkTable } from './components/content/NetworkTable.svelte';
|
|
186
191
|
export type { NetworkColumn } from './components/content/NetworkTable.types.js';
|
|
187
192
|
export { default as OtpInput } from './components/content/OtpInput.svelte';
|
|
@@ -189,3 +194,6 @@ export { default as TwoFactorStepper } from './components/content/TwoFactorStepp
|
|
|
189
194
|
export { default as SystemErrorState } from './components/content/SystemErrorState.svelte';
|
|
190
195
|
export { referenceDemoData } from './reference-data.js';
|
|
191
196
|
export type { DemoMember, DemoProject, DemoTeam, DemoIntegration, DemoApiKey, DemoSecurityEvent, DemoNotification } from './reference-data.js';
|
|
197
|
+
export { default as RowActions } from './components/RowActions.svelte';
|
|
198
|
+
export type { RowActionItem } from './components/RowActions.svelte';
|
|
199
|
+
export { default as DetailDrawer } from './components/DetailDrawer.svelte';
|
package/dist/index.js
CHANGED
|
@@ -19,6 +19,7 @@ export { default as StatsCard } from './components/StatsCard.svelte';
|
|
|
19
19
|
export { default as PageHeader } from './components/PageHeader.svelte';
|
|
20
20
|
export { default as ResourceOperationsPage } from './components/ResourceOperationsPage.svelte';
|
|
21
21
|
export { default as LoginPage } from './components/LoginPage.svelte';
|
|
22
|
+
export { default as AuthPageShell } from './components/AuthPageShell.svelte';
|
|
22
23
|
export { default as RegisterPage } from './components/RegisterPage.svelte';
|
|
23
24
|
export { default as ForgotPasswordPage } from './components/ForgotPasswordPage.svelte';
|
|
24
25
|
export { default as CanAccess } from './components/CanAccess.svelte';
|
|
@@ -172,6 +173,9 @@ export { default as ContentPageShell } from './components/content/ContentPageShe
|
|
|
172
173
|
export { default as ContentPageHeader } from './components/content/ContentPageHeader.svelte';
|
|
173
174
|
export { default as SectionHeader } from './components/content/SectionHeader.svelte';
|
|
174
175
|
export { default as PageToolbar } from './components/content/PageToolbar.svelte';
|
|
176
|
+
export { default as WorkspaceLayout } from './components/content/WorkspaceLayout.svelte';
|
|
177
|
+
export { default as SettingsGroup } from './components/content/SettingsGroup.svelte';
|
|
178
|
+
export { default as SettingsFieldRow } from './components/content/SettingsFieldRow.svelte';
|
|
175
179
|
export { default as MetricBlock } from './components/content/MetricBlock.svelte';
|
|
176
180
|
export { default as DescriptionList } from './components/content/DescriptionList.svelte';
|
|
177
181
|
export { default as StatusBadge } from './components/content/StatusBadge.svelte';
|
|
@@ -191,3 +195,5 @@ export { default as OtpInput } from './components/content/OtpInput.svelte';
|
|
|
191
195
|
export { default as TwoFactorStepper } from './components/content/TwoFactorStepper.svelte';
|
|
192
196
|
export { default as SystemErrorState } from './components/content/SystemErrorState.svelte';
|
|
193
197
|
export { referenceDemoData } from './reference-data.js';
|
|
198
|
+
export { default as RowActions } from './components/RowActions.svelte';
|
|
199
|
+
export { default as DetailDrawer } from './components/DetailDrawer.svelte';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@svadmin/ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.47.1",
|
|
4
4
|
"description": "Pre-built admin UI components — AdminApp, AutoTable, AutoForm, Sidebar, Layout",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": [
|
|
@@ -96,6 +96,9 @@
|
|
|
96
96
|
"bugs": {
|
|
97
97
|
"url": "https://github.com/vibeunion/svadmin/issues"
|
|
98
98
|
},
|
|
99
|
+
"publishConfig": {
|
|
100
|
+
"access": "public"
|
|
101
|
+
},
|
|
99
102
|
"devDependencies": {
|
|
100
103
|
"@happy-dom/global-registrator": "^20.11.2",
|
|
101
104
|
"@sveltejs/vite-plugin-svelte": "^7.3.0",
|