@svadmin/ui 0.68.1 → 0.69.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/README.md +52 -0
- package/dist/app.css +7627 -853
- package/dist/app.theme.css +7676 -850
- package/dist/components/AboutSettings.svelte +8 -8
- package/dist/components/ActivityFeed.svelte +25 -40
- package/dist/components/AdminApp.svelte +14 -14
- package/dist/components/AnomalyBadge.svelte +6 -5
- package/dist/components/ApiSettings.svelte +8 -8
- package/dist/components/AppearanceSettings.svelte +13 -13
- package/dist/components/ApprovalActionCard.svelte +35 -35
- package/dist/components/AuditLogDrawer.svelte +17 -17
- package/dist/components/AuditLogViewer.svelte +42 -42
- package/dist/components/AuthPageShell.svelte +11 -11
- package/dist/components/AutoForm.svelte +28 -28
- package/dist/components/AutoSaveIndicator.svelte +8 -8
- package/dist/components/AutoTable.svelte +141 -141
- package/dist/components/BatchActionBar.svelte +15 -15
- package/dist/components/Breadcrumbs.svelte +4 -4
- package/dist/components/CancelTaskButton.svelte +2 -2
- package/dist/components/CanvasAnnotation.svelte +27 -27
- package/dist/components/Cascader.svelte +20 -20
- package/dist/components/CatchAllNavigate.svelte +2 -2
- package/dist/components/ColumnHeaderFilter.svelte +21 -21
- package/dist/components/ColumnSettings.svelte +20 -20
- package/dist/components/ComboboxField.svelte +17 -17
- package/dist/components/CommandPalette.svelte +23 -23
- package/dist/components/ConfigErrorScreen.svelte +27 -27
- package/dist/components/ConfirmDialog.svelte +1 -1
- package/dist/components/CreateInferencer.svelte +1 -1
- package/dist/components/CreatePage.svelte +1 -1
- package/dist/components/DecisionTable.svelte +39 -39
- package/dist/components/DetailDrawer.svelte +9 -9
- package/dist/components/DevTools.svelte +96 -96
- package/dist/components/DraggableGrid.svelte +6 -6
- package/dist/components/DraggableHeader.svelte +1 -1
- package/dist/components/DraggableRowTable.svelte +13 -13
- package/dist/components/DrawerForm.svelte +10 -10
- package/dist/components/DynamicFormList.svelte +19 -19
- package/dist/components/EditInferencer.svelte +3 -3
- package/dist/components/EditInferencer.svelte.d.ts +1 -1
- package/dist/components/EditPage.svelte +1 -1
- package/dist/components/EditableTable.svelte +30 -30
- package/dist/components/EmptyState.svelte +6 -6
- package/dist/components/ErrorBoundary.svelte +8 -8
- package/dist/components/ErrorComponent.svelte +5 -5
- package/dist/components/FieldRenderer.svelte +30 -30
- package/dist/components/FilterBuilder.svelte +31 -31
- package/dist/components/FilterDropdown.svelte +26 -26
- package/dist/components/ForgotPasswordPage.svelte +14 -14
- package/dist/components/GanttChart.svelte +30 -30
- package/dist/components/Header.svelte +13 -13
- package/dist/components/ImageCropper.svelte +21 -21
- package/dist/components/ImportWizard.svelte +49 -49
- package/dist/components/InferencerPanel.svelte +35 -35
- package/dist/components/InfiniteList.svelte +8 -8
- package/dist/components/InlineEdit.svelte +5 -5
- package/dist/components/IntegrationsSettings.svelte +5 -5
- package/dist/components/JsonSchemaForm.svelte +18 -18
- package/dist/components/KanbanBoard.svelte +30 -30
- package/dist/components/KeyboardShortcuts.svelte +8 -8
- package/dist/components/Layout.svelte +22 -22
- package/dist/components/LazyPage.svelte +4 -4
- package/dist/components/ListInferencer.svelte +2 -2
- package/dist/components/ListPage.svelte +1 -1
- package/dist/components/LiveIndicator.svelte +11 -11
- package/dist/components/LoginPage.svelte +27 -27
- package/dist/components/MasterDetailView.svelte +24 -24
- package/dist/components/MediaLibraryModal.svelte +37 -37
- package/dist/components/MentionsInput.svelte +11 -11
- package/dist/components/MetricStrip.svelte +18 -58
- package/dist/components/ModalForm.svelte +8 -8
- package/dist/components/MultiTabKeepAlive.svelte +14 -14
- package/dist/components/NavigateToResource.svelte +3 -3
- package/dist/components/NotificationsSettings.svelte +4 -4
- package/dist/components/OfflineSyncBanner.svelte +28 -28
- package/dist/components/PageHeader.svelte +12 -13
- package/dist/components/PageSkeleton.svelte +26 -26
- package/dist/components/PasswordInput.svelte +11 -11
- package/dist/components/PdfDocumentViewer.svelte +45 -45
- package/dist/components/PermissionMatrix.svelte +48 -48
- package/dist/components/PivotTable.svelte +21 -21
- package/dist/components/PresenceAvatarGroup.svelte +11 -11
- package/dist/components/PrintableBill.svelte +43 -43
- package/dist/components/ProfilePage.svelte +34 -34
- package/dist/components/RecordDetailDrawer.svelte +15 -15
- package/dist/components/RegisterPage.svelte +9 -9
- package/dist/components/ResourceInferencer.svelte +3 -3
- package/dist/components/ResourceOperationsPage.svelte +44 -44
- package/dist/components/RetryTaskButton.svelte +2 -2
- package/dist/components/RolesSettings.svelte +4 -4
- package/dist/components/RowActions.svelte +10 -10
- package/dist/components/SecuritySettings.svelte +8 -8
- package/dist/components/SensitiveDataMask.svelte +8 -8
- package/dist/components/SettingsPage.svelte +17 -17
- package/dist/components/ShowInferencer.svelte +3 -3
- package/dist/components/ShowInferencer.svelte.d.ts +1 -1
- package/dist/components/ShowPage.svelte +24 -24
- package/dist/components/Sidebar.svelte +63 -63
- package/dist/components/SidebarItem.svelte +35 -35
- package/dist/components/SignaturePad.svelte +16 -16
- package/dist/components/SplitPaneLayout.svelte +10 -10
- package/dist/components/SpreadsheetView.svelte +35 -35
- package/dist/components/StatsCard.svelte +12 -25
- package/dist/components/StepForm.svelte +23 -23
- package/dist/components/StepsForm.svelte +17 -17
- package/dist/components/SvadminLogo.svelte +1 -1
- package/dist/components/SystemPageShell.svelte +6 -6
- package/dist/components/TableSummary.svelte +8 -8
- package/dist/components/TaskDetails.svelte +29 -29
- package/dist/components/TaskList.svelte +17 -17
- package/dist/components/TaskProgressBar.svelte +4 -4
- package/dist/components/TaskQueueDrawer.svelte +44 -44
- package/dist/components/TaskStatusBadge.svelte +5 -5
- package/dist/components/TenantSwitcher.svelte +17 -17
- package/dist/components/ThemedTitle.svelte +4 -4
- package/dist/components/Toast.svelte +2 -2
- package/dist/components/Transfer.svelte +40 -40
- package/dist/components/TreeSelect.svelte +32 -32
- package/dist/components/TreeTable.svelte +28 -28
- package/dist/components/TwoFactorAuthPage.svelte +15 -15
- package/dist/components/UndoableNotification.svelte +10 -10
- package/dist/components/UpdatePasswordPage.svelte +6 -6
- package/dist/components/VersionDiffViewer.svelte +38 -38
- package/dist/components/VirtualTable.svelte +9 -9
- package/dist/components/Watermark.svelte +2 -2
- package/dist/components/account/CompanyProfilePage.svelte +4 -4
- package/dist/components/account/GetStartedPage.svelte +19 -19
- package/dist/components/account/ImportMembersPage.svelte +42 -42
- package/dist/components/account/MembersStarterPage.svelte +18 -18
- package/dist/components/account/SecurityLogPage.svelte +1 -1
- package/dist/components/account/SettingsEnterprisePage.svelte +7 -7
- package/dist/components/account/SettingsPlainPage.svelte +3 -3
- package/dist/components/account/SettingsSidebarPage.svelte +5 -5
- package/dist/components/account/TeamMembersPage.svelte +2 -2
- package/dist/components/account/UserProfilePage.svelte +3 -3
- package/dist/components/buttons/CloneButton.svelte +2 -2
- package/dist/components/buttons/CreateButton.svelte +2 -2
- package/dist/components/buttons/DeleteButton.svelte +4 -4
- package/dist/components/buttons/EditButton.svelte +2 -2
- package/dist/components/buttons/ExportButton.svelte +2 -2
- package/dist/components/buttons/ImportButton.svelte +3 -3
- package/dist/components/buttons/ListButton.svelte +2 -2
- package/dist/components/buttons/RefreshButton.svelte +2 -2
- package/dist/components/buttons/SaveButton.svelte +3 -3
- package/dist/components/buttons/ShowButton.svelte +2 -2
- package/dist/components/charts/BarChart.svelte +3 -3
- package/dist/components/charts/LineChart.svelte +3 -3
- package/dist/components/charts/PieChart.svelte +7 -7
- package/dist/components/content/ApiKeyList.svelte +12 -12
- package/dist/components/content/AuditTimeline.svelte +18 -18
- package/dist/components/content/ContentPageHeader.svelte +9 -9
- package/dist/components/content/ContentPageShell.svelte +2 -2
- package/dist/components/content/DataState.svelte +8 -8
- package/dist/components/content/DescriptionList.svelte +25 -25
- package/dist/components/content/FeedbackNotice.svelte +11 -11
- package/dist/components/content/FileList.svelte +2 -2
- package/dist/components/content/FilterToolbar.svelte +15 -15
- package/dist/components/content/ImportDropzone.svelte +6 -6
- package/dist/components/content/IntegrationCard.svelte +4 -4
- package/dist/components/content/MediaThumbnail.svelte +16 -16
- package/dist/components/content/MemberList.svelte +2 -2
- package/dist/components/content/MetricBlock.svelte +7 -7
- package/dist/components/content/NetworkTable.svelte +1 -1
- package/dist/components/content/NetworkUserCard.svelte +12 -12
- package/dist/components/content/OtpInput.svelte +2 -2
- package/dist/components/content/PageToolbar.svelte +3 -3
- package/dist/components/content/ProjectCard.svelte +11 -11
- package/dist/components/content/SectionHeader.svelte +5 -5
- package/dist/components/content/SecurityEventTable.svelte +2 -2
- package/dist/components/content/SettingsFieldRow.svelte +5 -5
- package/dist/components/content/SettingsGroup.svelte +7 -7
- package/dist/components/content/StatusBadge.svelte +6 -6
- package/dist/components/content/StatusTabs.svelte +28 -28
- package/dist/components/content/SystemErrorState.svelte +2 -2
- package/dist/components/content/TeamCard.svelte +6 -6
- package/dist/components/content/TwoFactorStepper.svelte +3 -3
- package/dist/components/content/WorkspaceActionBar.svelte +12 -12
- package/dist/components/content/WorkspaceInspector.svelte +11 -11
- package/dist/components/content/WorkspaceLayout.svelte +5 -5
- package/dist/components/content/WorkspaceSplitPane.svelte +4 -4
- package/dist/components/content/WorkspaceStageStepper.svelte +16 -16
- package/dist/components/content/WorkspaceTabBar.svelte +16 -16
- package/dist/components/fields/ArrayField.svelte +12 -12
- package/dist/components/fields/AvatarField.svelte +15 -15
- package/dist/components/fields/BooleanField.svelte +14 -14
- package/dist/components/fields/CodeField.svelte +10 -10
- package/dist/components/fields/CopyField.svelte +6 -6
- package/dist/components/fields/CurrencyField.svelte +6 -6
- package/dist/components/fields/DateField.svelte +1 -1
- package/dist/components/fields/DateRangeField.svelte +2 -2
- package/dist/components/fields/EmailField.svelte +2 -2
- package/dist/components/fields/FileField.svelte +3 -3
- package/dist/components/fields/ImageField.svelte +1 -1
- package/dist/components/fields/JsonField.svelte +11 -11
- package/dist/components/fields/MarkdownField.svelte +2 -2
- package/dist/components/fields/MultiSelectField.svelte +3 -3
- package/dist/components/fields/NumberField.svelte +1 -1
- package/dist/components/fields/PercentField.svelte +9 -9
- package/dist/components/fields/PhoneField.svelte +8 -8
- package/dist/components/fields/RatingField.svelte +10 -10
- package/dist/components/fields/RelationField.svelte +3 -3
- package/dist/components/fields/RichTextField.svelte +4 -4
- package/dist/components/fields/TagField.svelte +11 -11
- package/dist/components/fields/TextField.svelte +2 -2
- package/dist/components/fields/UrlField.svelte +3 -3
- package/dist/components/network/TeamCrewTablePage.svelte +2 -2
- package/dist/components/network/UserCardsNFTPage.svelte +1 -1
- package/dist/components/profile/ActivityTimeline.svelte +8 -8
- package/dist/components/profile/ProfileCard.svelte +47 -47
- package/dist/components/profile/ProfileVariantSections.svelte +158 -158
- package/dist/components/profile/ProjectsGrid.svelte +6 -6
- package/dist/components/profile/PublicProfilePage.svelte +6 -6
- package/dist/components/profile/TeamsShowcase.svelte +3 -3
- package/dist/components/ui/alert/alert-description.svelte +1 -1
- package/dist/components/ui/alert/alert-title.svelte +1 -1
- package/dist/components/ui/alert/alert-variants.d.ts +7 -0
- package/dist/components/ui/alert/alert-variants.js +2 -0
- package/dist/components/ui/alert/alert.svelte +4 -15
- package/dist/components/ui/alert/alert.svelte.d.ts +7 -24
- package/dist/components/ui/alert-dialog/alert-dialog-content.svelte +2 -2
- package/dist/components/ui/alert-dialog/alert-dialog-description.svelte +1 -1
- package/dist/components/ui/alert-dialog/alert-dialog-footer.svelte +1 -1
- package/dist/components/ui/alert-dialog/alert-dialog-header.svelte +1 -1
- package/dist/components/ui/alert-dialog/alert-dialog-overlay.svelte +1 -1
- package/dist/components/ui/alert-dialog/alert-dialog-title.svelte +1 -1
- package/dist/components/ui/avatar/avatar-variants.d.ts +7 -0
- package/dist/components/ui/avatar/avatar-variants.js +2 -0
- package/dist/components/ui/avatar/avatar.svelte +11 -20
- package/dist/components/ui/avatar/avatar.svelte.d.ts +12 -28
- package/dist/components/ui/badge/badge-variants.d.ts +7 -0
- package/dist/components/ui/badge/badge-variants.js +2 -0
- package/dist/components/ui/badge/badge.svelte +4 -24
- package/dist/components/ui/badge/badge.svelte.d.ts +7 -45
- package/dist/components/ui/breadcrumb/breadcrumb-ellipsis.svelte +3 -3
- package/dist/components/ui/breadcrumb/breadcrumb-item.svelte +1 -1
- package/dist/components/ui/breadcrumb/breadcrumb-link.svelte +1 -1
- package/dist/components/ui/breadcrumb/breadcrumb-list.svelte +1 -1
- package/dist/components/ui/breadcrumb/breadcrumb-page.svelte +1 -1
- package/dist/components/ui/breadcrumb/breadcrumb-separator.svelte +2 -2
- package/dist/components/ui/button/button-variants.d.ts +9 -0
- package/dist/components/ui/button/button-variants.js +3 -0
- package/dist/components/ui/button/button.svelte +12 -31
- package/dist/components/ui/button/button.svelte.d.ts +9 -61
- package/dist/components/ui/card/card-action.svelte +1 -4
- package/dist/components/ui/card/card-content.svelte +1 -1
- package/dist/components/ui/card/card-description.svelte +1 -1
- package/dist/components/ui/card/card-footer.svelte +1 -1
- package/dist/components/ui/card/card-header.svelte +1 -4
- package/dist/components/ui/card/card-title.svelte +1 -1
- package/dist/components/ui/card/card.svelte +1 -1
- package/dist/components/ui/checkbox/checkbox.svelte +2 -5
- package/dist/components/ui/command/command-dialog.svelte +3 -3
- package/dist/components/ui/command/command-empty.svelte +1 -1
- package/dist/components/ui/command/command-group.svelte +2 -2
- package/dist/components/ui/command/command-input.svelte +1 -4
- package/dist/components/ui/command/command-item.svelte +1 -4
- package/dist/components/ui/command/command-list.svelte +1 -1
- package/dist/components/ui/command/command-separator.svelte +1 -1
- package/dist/components/ui/command/command.svelte +1 -4
- package/dist/components/ui/dialog/dialog-content.svelte +3 -3
- package/dist/components/ui/dialog/dialog-description.svelte +1 -1
- package/dist/components/ui/dialog/dialog-footer.svelte +1 -1
- package/dist/components/ui/dialog/dialog-header.svelte +1 -1
- package/dist/components/ui/dialog/dialog-overlay.svelte +1 -1
- package/dist/components/ui/dialog/dialog-title.svelte +1 -1
- package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte +2 -5
- package/dist/components/ui/dropdown-menu/dropdown-menu-content.svelte +1 -6
- package/dist/components/ui/dropdown-menu/dropdown-menu-item.svelte +3 -9
- package/dist/components/ui/dropdown-menu/dropdown-menu-separator.svelte +1 -1
- package/dist/components/ui/dropdown-menu/dropdown-menu.svelte +1 -1
- package/dist/components/ui/input/input.svelte +3 -2
- package/dist/components/ui/label/label.svelte +1 -4
- package/dist/components/ui/navigation-menu/navigation-menu-content.svelte +1 -5
- package/dist/components/ui/navigation-menu/navigation-menu-indicator.svelte +2 -5
- package/dist/components/ui/navigation-menu/navigation-menu-item.svelte +1 -1
- package/dist/components/ui/navigation-menu/navigation-menu-link.svelte +1 -4
- package/dist/components/ui/navigation-menu/navigation-menu-list.svelte +1 -1
- package/dist/components/ui/navigation-menu/navigation-menu-trigger.svelte +2 -5
- package/dist/components/ui/navigation-menu/navigation-menu-viewport.svelte +2 -5
- package/dist/components/ui/navigation-menu/navigation-menu.svelte +1 -1
- package/dist/components/ui/pagination/pagination-content.svelte +1 -1
- package/dist/components/ui/pagination/pagination-ellipsis.svelte +3 -3
- package/dist/components/ui/pagination/pagination-link.svelte +3 -0
- package/dist/components/ui/pagination/pagination-next.svelte +5 -2
- package/dist/components/ui/pagination/pagination-previous.svelte +5 -2
- package/dist/components/ui/pagination/pagination.svelte +1 -1
- package/dist/components/ui/popover/popover-content.svelte +1 -4
- package/dist/components/ui/progress/progress.svelte +2 -2
- package/dist/components/ui/scroll-area/scroll-area.svelte +3 -4
- package/dist/components/ui/select/select.svelte +1 -2
- package/dist/components/ui/separator/separator.svelte +1 -6
- package/dist/components/ui/sheet/sheet-content.svelte +1 -4
- package/dist/components/ui/sheet/sheet-description.svelte +1 -1
- package/dist/components/ui/sheet/sheet-footer.svelte +1 -1
- package/dist/components/ui/sheet/sheet-header.svelte +1 -1
- package/dist/components/ui/sheet/sheet-title.svelte +1 -1
- package/dist/components/ui/sheet/sheet.svelte +5 -10
- package/dist/components/ui/skeleton/skeleton.svelte +1 -1
- package/dist/components/ui/switch/switch.svelte +2 -9
- package/dist/components/ui/table/table-caption.svelte +1 -1
- package/dist/components/ui/table/table-cell.svelte +8 -11
- package/dist/components/ui/table/table-footer.svelte +1 -1
- package/dist/components/ui/table/table-head.svelte +1 -11
- package/dist/components/ui/table/table-header.svelte +1 -1
- package/dist/components/ui/table/table-row.svelte +2 -2
- package/dist/components/ui/table/table-row.svelte.d.ts +1 -1
- package/dist/components/ui/table/table.svelte +2 -2
- package/dist/components/ui/tabs/tabs-content.svelte +1 -1
- package/dist/components/ui/tabs/tabs-list.svelte +1 -4
- package/dist/components/ui/tabs/tabs-trigger.svelte +1 -7
- package/dist/components/ui/tabs/tabs.svelte +1 -1
- package/dist/components/ui/textarea/textarea.svelte +1 -4
- package/dist/components/ui/tooltip/tooltip-content.svelte +1 -1
- package/dist/page-chrome.css +228 -0
- package/package.json +13 -8
|
@@ -25,39 +25,39 @@
|
|
|
25
25
|
<ContentPageShell pageId="account-members-starter" width="wide">
|
|
26
26
|
<ContentPageHeader title={isZh ? '开始组建团队' : 'Start building your team'} description={isZh ? '这是零成员工作区的起始页。邀请第一位成员,或通过 CSV 批量导入。' : 'This is the starting state for a workspace with no members. Invite the first teammate or import a CSV roster.'} />
|
|
27
27
|
|
|
28
|
-
<section class="
|
|
29
|
-
<div class="
|
|
30
|
-
<span class="
|
|
31
|
-
<Badge variant="outline" class="
|
|
32
|
-
<h2 class="
|
|
33
|
-
<p class="
|
|
34
|
-
<div class="
|
|
28
|
+
<section class="svadmin-u-f3c543ad5fe9 svadmin-u-2cd02d11d1af svadmin-u-5f22e64f2282 svadmin-u-ca6bcd4b6f3f svadmin-u-18049387f0af svadmin-u-cd0ad9a56558 svadmin-u-687e17559be1">
|
|
29
|
+
<div class="svadmin-u-60fbb7713999 svadmin-u-8dddea0773ed svadmin-u-3960ffc248d9 svadmin-u-86843cf1e227 svadmin-u-f92d02360b8f svadmin-u-61357c0c2f29 svadmin-u-ca6bf63030aa">
|
|
30
|
+
<span class="svadmin-u-60fbb7713999 svadmin-u-7a9ad020b130 svadmin-u-3960ffc248d9 svadmin-u-86843cf1e227 svadmin-u-5f22e64f2282 svadmin-u-375dc44df6e9 svadmin-u-20aaf08a7ed1"><Users class="svadmin-u-9af3b4b6dc9e" /></span>
|
|
31
|
+
<Badge variant="outline" class="svadmin-u-fb77735ed17c">0 {isZh ? '名成员' : 'members'}</Badge>
|
|
32
|
+
<h2 class="svadmin-u-0ab8667228fd svadmin-u-d5c9b0001e7e svadmin-u-e83a7042bc91 svadmin-u-d4108abe6359">{isZh ? '邀请你的第一位团队成员' : 'Invite your first team member'}</h2>
|
|
33
|
+
<p class="svadmin-u-50d0d216a2f8 svadmin-u-6199866f612f svadmin-u-fc7473ca09eb svadmin-u-18550d5945ae svadmin-u-bfa603190748">{isZh ? '成员加入后,你可以继续分配角色、设置权限、查看活动状态,并在团队成员页批量管理。' : 'After members join, assign roles, configure access, review activity, and manage them in the full team member table.'}</p>
|
|
34
|
+
<div class="svadmin-u-31f2553311b6 svadmin-u-60fbb7713999 svadmin-u-1eb5c6df38c1 svadmin-u-86843cf1e227 svadmin-u-77a2a20e90d4"><Button onclick={() => inviteOpen = true}><UserPlus class="svadmin-u-f7b5fa971871" />{isZh ? '邀请成员' : 'Invite member'}</Button><Button href="#/account/members/import-members" variant="outline"><Upload class="svadmin-u-f7b5fa971871" />{isZh ? '导入 CSV' : 'Import CSV'}</Button></div>
|
|
35
35
|
</div>
|
|
36
36
|
|
|
37
|
-
<aside class="
|
|
38
|
-
<h2 class="
|
|
39
|
-
<div class="
|
|
37
|
+
<aside class="svadmin-u-b950dda299d3 svadmin-u-18049387f0af svadmin-u-46daeb0b661f svadmin-u-c07e54fd1439 svadmin-u-bb3e95154365 svadmin-u-7d283214b870">
|
|
38
|
+
<h2 class="svadmin-u-fc7473ca09eb svadmin-u-e83a7042bc91 svadmin-u-d4108abe6359">{isZh ? '团队准备清单' : 'Team setup checklist'}</h2>
|
|
39
|
+
<div class="svadmin-u-0ab8667228fd svadmin-u-3e7ce58d64fa">
|
|
40
40
|
{#each [isZh ? '邀请至少一名管理员' : 'Invite at least one admin', isZh ? '确认默认成员角色' : 'Confirm the default member role', isZh ? '准备成员 CSV 模板' : 'Prepare the member CSV template'] as item, index (item)}
|
|
41
41
|
{@const completed = index === 0 && invited.length > 0}
|
|
42
|
-
<div class="
|
|
42
|
+
<div class="svadmin-u-60fbb7713999 svadmin-u-60541e1e26f8 svadmin-u-1004c0c3954c" data-checklist-status={completed ? 'complete' : 'pending'}><span class={'svadmin-u-15e1b1f444fe svadmin-u-60fbb7713999 svadmin-u-9af3b4b6dc9e svadmin-u-3960ffc248d9 svadmin-u-86843cf1e227 svadmin-u-421ac2be5045 svadmin-u-ca6bcd4b6f3f ' + (completed ? 'svadmin-u-18a6e7a36f29 svadmin-u-17a9f7af2265 svadmin-u-76747e5e02ff' : 'svadmin-u-18049387f0af svadmin-u-bfa603190748')}>{#if completed}<Check class="svadmin-u-783b0d9d1e2c" />{:else}<span class="svadmin-u-359090c2d529">{index + 1}</span>{/if}</span><p class="svadmin-u-fc7473ca09eb svadmin-u-7054e2767710 svadmin-u-bfa603190748">{item}</p></div>
|
|
43
43
|
{/each}
|
|
44
44
|
</div>
|
|
45
|
-
<a href="#/account/members/team-members" class="
|
|
46
|
-
<Button variant="outline" size="sm" class="
|
|
45
|
+
<a href="#/account/members/team-members" class="svadmin-u-31f2553311b6 svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-44ee8ba0a421 svadmin-u-b950dda299d3 svadmin-u-18049387f0af svadmin-u-173fa8f06789 svadmin-u-fc7473ca09eb svadmin-u-2689f3958069 svadmin-u-20aaf08a7ed1">{isZh ? '查看完整成员管理' : 'Open full member management'}<ArrowRight class="svadmin-u-783b0d9d1e2c" /></a>
|
|
46
|
+
<Button variant="outline" size="sm" class="svadmin-u-eccd13ef4f2f svadmin-u-6da6a3c3f741"><Download class="svadmin-u-783b0d9d1e2c" />{isZh ? '下载 CSV 模板' : 'Download CSV template'}</Button>
|
|
47
47
|
</aside>
|
|
48
48
|
</section>
|
|
49
49
|
|
|
50
50
|
{#if inviteOpen}
|
|
51
51
|
<Card.Card data-member-invite-panel>
|
|
52
|
-
<Card.CardContent class="
|
|
53
|
-
<span class="
|
|
54
|
-
<label><span class="
|
|
55
|
-
<div class="
|
|
52
|
+
<Card.CardContent class="svadmin-u-f3c543ad5fe9 svadmin-u-0c3bc98565dd svadmin-u-c07e54fd1439 svadmin-u-d7bf6780c9a5 svadmin-u-bf60a82ffbd9">
|
|
53
|
+
<span class="svadmin-u-60fbb7713999 svadmin-u-7bbb00f9ba7a svadmin-u-3960ffc248d9 svadmin-u-86843cf1e227 svadmin-u-421ac2be5045 svadmin-u-375dc44df6e9 svadmin-u-20aaf08a7ed1"><Mail class="svadmin-u-f7b5fa971871" /></span>
|
|
54
|
+
<label><span class="svadmin-u-fc7473ca09eb svadmin-u-2689f3958069 svadmin-u-d4108abe6359">{isZh ? '成员邮箱' : 'Member email'}</span><Input class="svadmin-u-50d0d216a2f8" type="email" bind:value={email} placeholder="teammate@example.com" /></label>
|
|
55
|
+
<div class="svadmin-u-60fbb7713999 svadmin-u-77a2a20e90d4"><Button variant="outline" onclick={() => inviteOpen = false}>{i18n.t('common.cancel')}</Button><Button onclick={sendInvite}>{isZh ? '发送邀请' : 'Send invite'}</Button></div>
|
|
56
56
|
</Card.CardContent>
|
|
57
57
|
</Card.Card>
|
|
58
58
|
{/if}
|
|
59
59
|
|
|
60
60
|
{#if invited.length > 0}
|
|
61
|
-
<section class="
|
|
61
|
+
<section class="svadmin-u-5f22e64f2282 svadmin-u-ca6bcd4b6f3f svadmin-u-18049387f0af svadmin-u-cd0ad9a56558"><div class="svadmin-u-65fdbade2025 svadmin-u-18049387f0af svadmin-u-f0faeb26d656 svadmin-u-1b2d54a3fd12"><h2 class="svadmin-u-fc7473ca09eb svadmin-u-e83a7042bc91 svadmin-u-d4108abe6359">{isZh ? '待接受邀请' : 'Pending invitations'}</h2></div><div class="svadmin-u-fa6acbf81d74 svadmin-u-e783642739e3">{#each invited as invite (invite)}<div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-8ef2268efbbc svadmin-u-1004c0c3954c svadmin-u-f0faeb26d656 svadmin-u-1b2d54a3fd12"><div><p class="svadmin-u-fc7473ca09eb svadmin-u-2689f3958069 svadmin-u-d4108abe6359">{invite}</p><p class="svadmin-u-359090c2d529 svadmin-u-bfa603190748">{isZh ? '刚刚发送' : 'Sent just now'}</p></div><Badge variant="outline">{isZh ? '已邀请' : 'Invited'}</Badge></div>{/each}</div></section>
|
|
62
62
|
{/if}
|
|
63
63
|
</ContentPageShell>
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
|
|
17
17
|
<ContentPageShell pageId="account-security-log" width="wide">
|
|
18
18
|
<ContentPageHeader title={i18n.t('account.securityLog')} description={i18n.t('account.securityLogDescription')} actions={undefined} />
|
|
19
|
-
<div class="
|
|
19
|
+
<div class="svadmin-u-60fbb7713999 svadmin-u-77c08e015d14"><Button variant="outline" size="sm"><Download class="svadmin-u-783b0d9d1e2c" />{i18n.t('common.export')}</Button></div>
|
|
20
20
|
<FilterToolbar bind:query placeholder={i18n.t('common.search')} />
|
|
21
21
|
<SecurityEventTable events={filtered} />
|
|
22
22
|
</ContentPageShell>
|
|
@@ -217,14 +217,14 @@
|
|
|
217
217
|
{:else if error}
|
|
218
218
|
<DataState state="error" title={isZh ? '企业设置加载失败' : 'Enterprise settings failed to load'} description={error} retry={loadSettings} />
|
|
219
219
|
{:else}
|
|
220
|
-
<div class="
|
|
220
|
+
<div class="svadmin-u-f3c543ad5fe9 svadmin-u-60541e1e26f8 svadmin-u-0c3bc98565dd svadmin-u-2f27a80ed92b">
|
|
221
221
|
<SettingsGroup title={i18n.t('account.securityPolicy')} description={isZh ? '配置组织级身份、会话与审计策略。' : 'Configure organization-wide identity, session, and audit controls.'} bodyClass="space-y-4">
|
|
222
222
|
{#if organizationProvider}
|
|
223
|
-
<div class="
|
|
223
|
+
<div class="svadmin-u-6f7e013d6499"><Label for="organization-name">{isZh ? '组织名称' : 'Organization name'}</Label><div class="svadmin-u-60fbb7713999 svadmin-u-77a2a20e90d4"><Input id="organization-name" bind:value={organizationName} disabled={!organizationProvider.updateCurrentOrganization || savingOrganization} /><Button variant="outline" size="sm" disabled={!organizationChanged || savingOrganization} onclick={saveOrganization}>{savingOrganization ? (isZh ? '保存中...' : 'Saving...') : i18n.t('common.save')}</Button></div></div>
|
|
224
224
|
{/if}
|
|
225
|
-
<div class="
|
|
226
|
-
<div class="
|
|
227
|
-
<div class="
|
|
225
|
+
<div class="svadmin-u-f3c543ad5fe9 svadmin-u-0c3bc98565dd svadmin-u-e00ad81645a2">
|
|
226
|
+
<div class="svadmin-u-6f7e013d6499"><Label for="session-timeout">{i18n.t('account.sessionTimeout')}</Label><Input id="session-timeout" type="number" min="1" step="1" bind:value={sessionTimeoutValue} disabled={!policy || saving} /></div>
|
|
227
|
+
<div class="svadmin-u-6f7e013d6499"><Label for="retention">{i18n.t('account.dataRetention')}</Label><Input id="retention" type="number" min="1" step="1" bind:value={auditRetentionValue} disabled={!policy || saving} /></div>
|
|
228
228
|
</div>
|
|
229
229
|
{#if policy && !policyNumbersValid}<FeedbackNotice tone="warning" message={isZh ? '会话超时和审计保留天数必须为正整数。' : 'Session timeout and audit retention must be positive integers.'} />{/if}
|
|
230
230
|
<SettingsFieldRow label={i18n.t('account.auditLogging')} description={isZh ? '由后端持久化组织级审计策略。' : 'Persist the organization audit policy through the backend provider.'} control={auditControl} separated />
|
|
@@ -236,7 +236,7 @@
|
|
|
236
236
|
<Button variant="outline" size="sm" disabled={!identityProvider || testing} onclick={() => testConnection()}>{testing ? (isZh ? '测试中...' : 'Testing...') : i18n.t('common.test')}</Button>
|
|
237
237
|
</SettingsGroup>
|
|
238
238
|
</div>
|
|
239
|
-
<section class="
|
|
239
|
+
<section class="svadmin-u-6ed543e2fbbb">
|
|
240
240
|
<SectionHeader title={i18n.t('account.connections')} />
|
|
241
241
|
{#if identityProviders.length === 0}
|
|
242
242
|
<DataState state="empty" title={isZh ? '尚未配置身份源' : 'No identity provider configured'} description={isZh ? '请在后端 IdentityGovernanceProvider 中创建并验证身份源。' : 'Create and verify an identity provider through the backend IdentityGovernanceProvider.'} />
|
|
@@ -246,6 +246,6 @@
|
|
|
246
246
|
{/each}
|
|
247
247
|
{/if}
|
|
248
248
|
</section>
|
|
249
|
-
<section class="
|
|
249
|
+
<section class="svadmin-u-6ed543e2fbbb"><SectionHeader title={i18n.t('account.securityLog')} /><SecurityEventTable events={displayEvents} emptyTitle={i18n.t('common.noData')} emptyDescription={isZh ? '当前 Provider 未返回安全事件。' : 'The provider returned no security events.'} /></section>
|
|
250
250
|
{/if}
|
|
251
251
|
</ContentPageShell>
|
|
@@ -32,9 +32,9 @@
|
|
|
32
32
|
<ContentPageShell pageId="account-settings-plain" width="narrow">
|
|
33
33
|
<ContentPageHeader title={i18n.t('account.settingsPlain')} description={i18n.t('account.settingsPlainDescription')} actions={headerActions} />
|
|
34
34
|
<SettingsGroup title={i18n.t('account.basicSettings')} description={i18n.t('account.settingsPlainDescription')} bodyClass="space-y-5">
|
|
35
|
-
<div class="
|
|
36
|
-
<div class="
|
|
37
|
-
<div class="
|
|
35
|
+
<div class="svadmin-u-f3c543ad5fe9 svadmin-u-0c3bc98565dd svadmin-u-e00ad81645a2">
|
|
36
|
+
<div class="svadmin-u-6f7e013d6499"><Label for="settings-name">{i18n.t('profile.name')}</Label><Input id="settings-name" bind:value={displayName} /></div>
|
|
37
|
+
<div class="svadmin-u-6f7e013d6499"><Label for="settings-email">Email</Label><Input id="settings-email" bind:value={email} type="email" /></div>
|
|
38
38
|
</div>
|
|
39
39
|
<div>
|
|
40
40
|
<SettingsFieldRow label={i18n.t('settings.notifications')} description="Receive account and workflow updates." control={notificationControl} />
|
|
@@ -29,16 +29,16 @@
|
|
|
29
29
|
|
|
30
30
|
<ContentPageShell pageId="account-settings-sidebar" width="wide">
|
|
31
31
|
<ContentPageHeader title={i18n.t('account.settingsSidebar')} description={i18n.t('account.settingsSidebarDescription')} />
|
|
32
|
-
<div class="
|
|
33
|
-
<nav class="
|
|
32
|
+
<div class="svadmin-u-f3c543ad5fe9 svadmin-u-0d304f904cb0 svadmin-u-7178afa5bad6">
|
|
33
|
+
<nav class="svadmin-u-60fbb7713999 svadmin-u-44ee8ba0a421 svadmin-u-1384f66f41d0 svadmin-u-a94f89d92058" aria-label={i18n.t('account.settingsSidebar')}>
|
|
34
34
|
{#each sections as section (section.id)}
|
|
35
|
-
<button type="button" class={'
|
|
35
|
+
<button type="button" class={'svadmin-u-e82ae8be04aa svadmin-u-421ac2be5045 svadmin-u-0e17f2bd9074 svadmin-u-03b4dd7f172b svadmin-u-2eba0d65d059 svadmin-u-fc7473ca09eb ' + (active === section.id ? 'svadmin-u-2ef11f1cb219 svadmin-u-2689f3958069 svadmin-u-d4108abe6359' : 'svadmin-u-bfa603190748 svadmin-u-39f703dbe296 svadmin-u-ea7b2e9e070e')} aria-current={active === section.id ? 'page' : undefined} onclick={() => active = section.id}>{section.title}</button>
|
|
36
36
|
{/each}
|
|
37
37
|
</nav>
|
|
38
|
-
<div class="
|
|
38
|
+
<div class="svadmin-u-7e0b7cdf1a94">
|
|
39
39
|
{#if active === 'profile'}
|
|
40
40
|
<SettingsGroup title={i18n.t('account.basicSettings')} description={i18n.t('account.settingsPlainDescription')} bodyClass="space-y-4">
|
|
41
|
-
<div class="
|
|
41
|
+
<div class="svadmin-u-f3c543ad5fe9 svadmin-u-0c3bc98565dd svadmin-u-e00ad81645a2"><Input value="Alex Chen" aria-label={i18n.t('profile.name')} /><Input value="Nebula Labs" aria-label="Company" /></div>
|
|
42
42
|
<div><SettingsFieldRow label={i18n.t('account.visibility')} control={visibilityControl} separated /><SettingsFieldRow label={i18n.t('account.availability')} control={availabilityControl} separated /></div>
|
|
43
43
|
</SettingsGroup>
|
|
44
44
|
{:else if active === 'signin'}
|
|
@@ -21,8 +21,8 @@
|
|
|
21
21
|
</script>
|
|
22
22
|
|
|
23
23
|
<ContentPageShell pageId="account-team-members" width="wide">
|
|
24
|
-
<div class="
|
|
24
|
+
<div class="svadmin-u-60fbb7713999 svadmin-u-8dddea0773ed svadmin-u-1004c0c3954c svadmin-u-020ba687fa12 svadmin-u-64cac80d2e9a svadmin-u-3b9871a0bf93"><ContentPageHeader title={i18n.t("account.teamMembers")} description={i18n.t("account.teamMembersDescription")} /><Button size="sm" onclick={() => document.getElementById("invite-email")?.focus()}><UserPlus class="svadmin-u-783b0d9d1e2c" />{i18n.t("account.inviteMember")}</Button></div>
|
|
25
25
|
<FilterToolbar bind:query placeholder={i18n.t('common.search')} />
|
|
26
|
-
<div class="
|
|
26
|
+
<div class="svadmin-u-f3c543ad5fe9 svadmin-u-0c3bc98565dd svadmin-u-2f27a80ed92b"><Card.Card><Card.CardContent class="svadmin-u-6ed543e2fbbb svadmin-u-c07e54fd1439"><div><h2 class="svadmin-u-fc7473ca09eb svadmin-u-e83a7042bc91 svadmin-u-d4108abe6359">{i18n.t('account.invitePeople')}</h2><p class="svadmin-u-b6b02c0ebef6 svadmin-u-fc7473ca09eb svadmin-u-bfa603190748">{i18n.t('account.invitePeopleDescription')}</p></div><div class="svadmin-u-60fbb7713999 svadmin-u-8dddea0773ed svadmin-u-77a2a20e90d4 svadmin-u-020ba687fa12"><div class="svadmin-u-7e0b7cdf1a94 svadmin-u-36e579c0b41c svadmin-u-6f7e013d6499"><Label for="invite-email">Email</Label><Input id="invite-email" bind:value={inviteEmail} type="email" placeholder="name@example.com" /></div><Button class="svadmin-u-c7d50d5fc0c3" size="sm" disabled={!inviteEmail} onclick={sendInvite}><Send class="svadmin-u-783b0d9d1e2c" />{i18n.t('account.sendInvite')}</Button></div>{#if inviteStatus}<p class="svadmin-u-359090c2d529 svadmin-u-76747e5e02ff" role="status">{i18n.t('account.invited')}: {inviteStatus}</p>{/if}</Card.CardContent></Card.Card><Card.Card><Card.CardContent class="svadmin-u-6ed543e2fbbb svadmin-u-c07e54fd1439"><div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-77a2a20e90d4"><Link2 class="svadmin-u-f7b5fa971871 svadmin-u-bfa603190748" /><h2 class="svadmin-u-fc7473ca09eb svadmin-u-e83a7042bc91 svadmin-u-d4108abe6359">{i18n.t('account.inviteWithLink')}</h2></div><p class="svadmin-u-fc7473ca09eb svadmin-u-bfa603190748">{i18n.t('account.inviteLinkHint')}</p><div class="svadmin-u-60fbb7713999 svadmin-u-77a2a20e90d4"><Input readonly value="https://acme.com/invite/xK7fQ2" class="svadmin-u-0e65706bcccd svadmin-u-359090c2d529" /><Button variant="outline" size="sm"><Copy class="svadmin-u-783b0d9d1e2c" />{i18n.t('account.copyLink')}</Button></div></Card.CardContent></Card.Card></div>
|
|
27
27
|
<MemberList members={filtered} />
|
|
28
28
|
</ContentPageShell>
|
|
@@ -22,9 +22,9 @@
|
|
|
22
22
|
</script>
|
|
23
23
|
|
|
24
24
|
<ContentPageShell pageId="account-user-profile" width="wide">
|
|
25
|
-
<div class="
|
|
25
|
+
<div class="svadmin-u-60fbb7713999 svadmin-u-8dddea0773ed svadmin-u-1004c0c3954c svadmin-u-020ba687fa12 svadmin-u-64cac80d2e9a svadmin-u-3b9871a0bf93"><ContentPageHeader title={i18n.t('account.userProfile')} description={i18n.t('account.userProfileDescription')} /><Button onclick={save} disabled={saving} size="sm">{#if saving}<Loader2 class="svadmin-u-783b0d9d1e2c svadmin-u-afbdd13a380e" />{/if}{i18n.t('common.save')}</Button></div>
|
|
26
26
|
<WorkspaceLayout secondaryWidth="20rem">
|
|
27
|
-
{#snippet primary()}<div class="
|
|
28
|
-
{#snippet secondary()}<div class="
|
|
27
|
+
{#snippet primary()}<div class="svadmin-u-3e7ce58d64fa"><Card.Card><Card.CardContent class="svadmin-u-b43b4c086d9a svadmin-u-c07e54fd1439"><div><h2 class="svadmin-u-fc7473ca09eb svadmin-u-e83a7042bc91 svadmin-u-d4108abe6359">{i18n.t('account.personalInfo')}</h2><p class="svadmin-u-b6b02c0ebef6 svadmin-u-fc7473ca09eb svadmin-u-bfa603190748">Keep your contact and working details current.</p></div><DescriptionList columns={2} items={[{ label: i18n.t('profile.name'), value: 'Alex Chen' }, { label: i18n.t('account.phone'), value: '+86 138 **** 9527' }, { label: i18n.t('account.dateOfBirth'), value: '1995-04-18' }, { label: i18n.t('account.address'), value: 'Shanghai, CN' }]} /></Card.CardContent></Card.Card><Card.Card><Card.CardContent class="svadmin-u-3e7ce58d64fa svadmin-u-c07e54fd1439"><div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-8ef2268efbbc svadmin-u-1004c0c3954c"><div><h2 class="svadmin-u-fc7473ca09eb svadmin-u-e83a7042bc91 svadmin-u-d4108abe6359">{i18n.t('account.work')}</h2><p class="svadmin-u-b6b02c0ebef6 svadmin-u-fc7473ca09eb svadmin-u-bfa603190748">{i18n.t('account.availableNow')}</p></div><Switch bind:checked={availableToHire} /></div><div class="svadmin-u-60fbb7713999 svadmin-u-1eb5c6df38c1 svadmin-u-58284b4ea568">{#each ['TypeScript', 'Svelte', 'Node.js', 'Design Systems'] as skill (skill)}<span class="svadmin-u-421ac2be5045 svadmin-u-ca6bcd4b6f3f svadmin-u-18049387f0af svadmin-u-d5eab218aa34 svadmin-u-660d2effb880 svadmin-u-359090c2d529 svadmin-u-bfa603190748">{skill}</span>{/each}</div></Card.CardContent></Card.Card><section class="svadmin-u-6ed543e2fbbb"><h2 class="svadmin-u-4ee734926ff6 svadmin-u-e83a7042bc91 svadmin-u-d4108abe6359">{i18n.t('account.connections')}</h2>{#each integrations as integration (integration.id)}<IntegrationCard {integration} onconnect={() => toggle(integration.id)} />{/each}</section></div>{/snippet}
|
|
28
|
+
{#snippet secondary()}<div class="svadmin-u-3e7ce58d64fa"><Card.Card><Card.CardContent class="svadmin-u-6ed543e2fbbb svadmin-u-c07e54fd1439"><h2 class="svadmin-u-fc7473ca09eb svadmin-u-e83a7042bc91 svadmin-u-d4108abe6359">{i18n.t('account.myFiles')}</h2><FileList files={files} /></Card.CardContent></Card.Card><Card.Card><Card.CardContent class="svadmin-u-6ed543e2fbbb svadmin-u-c07e54fd1439"><h2 class="svadmin-u-fc7473ca09eb svadmin-u-e83a7042bc91 svadmin-u-d4108abe6359">{i18n.t('account.calendarAccounts')}</h2><DescriptionList items={[{ label: 'Work Calendar', value: 'alex@nebulalabs.io' }, { label: 'Personal Calendar', value: 'alex@example.com' }]} /></Card.CardContent></Card.Card></div>{/snippet}
|
|
29
29
|
</WorkspaceLayout>
|
|
30
30
|
</ContentPageShell>
|
|
@@ -54,9 +54,9 @@
|
|
|
54
54
|
disabled={!can.allowed}
|
|
55
55
|
onclick={() => nav.clone(resource, recordItemId)}
|
|
56
56
|
>
|
|
57
|
-
<Copy class="
|
|
57
|
+
<Copy class="svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3" />
|
|
58
58
|
{#if !hideText}
|
|
59
|
-
<span class="
|
|
59
|
+
<span class="svadmin-u-f58b02572ab2">
|
|
60
60
|
{#if children}
|
|
61
61
|
{@render children()}
|
|
62
62
|
{:else}
|
|
@@ -51,9 +51,9 @@
|
|
|
51
51
|
disabled={!can.allowed}
|
|
52
52
|
onclick={() => nav.create(resource)}
|
|
53
53
|
>
|
|
54
|
-
<Plus class="
|
|
54
|
+
<Plus class="svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3" />
|
|
55
55
|
{#if !hideText}
|
|
56
|
-
<span class="
|
|
56
|
+
<span class="svadmin-u-f58b02572ab2">
|
|
57
57
|
{#if children}
|
|
58
58
|
{@render children()}
|
|
59
59
|
{:else}
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
|
|
65
65
|
{#if !hidden}
|
|
66
66
|
{#if confirming}
|
|
67
|
-
<div class="
|
|
67
|
+
<div class="svadmin-u-52083e7da442 svadmin-u-3960ffc248d9 svadmin-u-44ee8ba0a421">
|
|
68
68
|
<Button variant="destructive" size="sm" onclick={handleDelete}>
|
|
69
69
|
{i18n.t('common.confirm')}
|
|
70
70
|
</Button>
|
|
@@ -76,14 +76,14 @@
|
|
|
76
76
|
<Button
|
|
77
77
|
variant="ghost"
|
|
78
78
|
size={hideText ? 'icon' : 'sm'}
|
|
79
|
-
class="
|
|
79
|
+
class="svadmin-u-811148b13d1e svadmin-u-51e95020d6f2 {className}"
|
|
80
80
|
aria-label={hideText ? displayText : undefined}
|
|
81
81
|
disabled={!can.allowed}
|
|
82
82
|
onclick={handleDelete}
|
|
83
83
|
>
|
|
84
|
-
<Trash2 class="
|
|
84
|
+
<Trash2 class="svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3" />
|
|
85
85
|
{#if !hideText}
|
|
86
|
-
<span class="
|
|
86
|
+
<span class="svadmin-u-f58b02572ab2">
|
|
87
87
|
{#if children}
|
|
88
88
|
{@render children()}
|
|
89
89
|
{:else}
|
|
@@ -54,9 +54,9 @@
|
|
|
54
54
|
disabled={!can.allowed}
|
|
55
55
|
onclick={() => nav.edit(resource, recordItemId)}
|
|
56
56
|
>
|
|
57
|
-
<Pencil class="
|
|
57
|
+
<Pencil class="svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3" />
|
|
58
58
|
{#if !hideText}
|
|
59
|
-
<span class="
|
|
59
|
+
<span class="svadmin-u-f58b02572ab2">
|
|
60
60
|
{#if children}
|
|
61
61
|
{@render children()}
|
|
62
62
|
{:else}
|
|
@@ -44,9 +44,9 @@
|
|
|
44
44
|
disabled={isLoading || !can.allowed}
|
|
45
45
|
onclick={triggerExport}
|
|
46
46
|
>
|
|
47
|
-
<Download class="
|
|
47
|
+
<Download class="svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3" />
|
|
48
48
|
{#if !hideText}
|
|
49
|
-
<span class="
|
|
49
|
+
<span class="svadmin-u-f58b02572ab2">
|
|
50
50
|
{#if children}
|
|
51
51
|
{@render children()}
|
|
52
52
|
{:else}
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
<input
|
|
62
62
|
type="file"
|
|
63
63
|
accept={importHook.inputProps.accept}
|
|
64
|
-
class="
|
|
64
|
+
class="svadmin-u-99d72c7fc3e2"
|
|
65
65
|
bind:this={fileInput}
|
|
66
66
|
onchange={handleFileChange}
|
|
67
67
|
/>
|
|
@@ -73,9 +73,9 @@
|
|
|
73
73
|
disabled={importHook.isLoading || !can.allowed}
|
|
74
74
|
onclick={triggerImport}
|
|
75
75
|
>
|
|
76
|
-
<Upload class="
|
|
76
|
+
<Upload class="svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3" />
|
|
77
77
|
{#if !hideText}
|
|
78
|
-
<span class="
|
|
78
|
+
<span class="svadmin-u-f58b02572ab2">
|
|
79
79
|
{#if children}
|
|
80
80
|
{@render children()}
|
|
81
81
|
{:else}
|
|
@@ -35,9 +35,9 @@
|
|
|
35
35
|
aria-label={hideText ? displayLabel : undefined}
|
|
36
36
|
onclick={navigateToList}
|
|
37
37
|
>
|
|
38
|
-
<List class="
|
|
38
|
+
<List class="svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3" />
|
|
39
39
|
{#if !hideText}
|
|
40
|
-
<span class="
|
|
40
|
+
<span class="svadmin-u-f58b02572ab2">
|
|
41
41
|
{#if children}
|
|
42
42
|
{@render children()}
|
|
43
43
|
{:else}
|
|
@@ -45,9 +45,9 @@
|
|
|
45
45
|
aria-label={hideText ? displayText : undefined}
|
|
46
46
|
onclick={refresh}
|
|
47
47
|
>
|
|
48
|
-
<RefreshCw class="
|
|
48
|
+
<RefreshCw class="svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3 {spinning ? 'svadmin-u-afbdd13a380e' : ''}" />
|
|
49
49
|
{#if !hideText}
|
|
50
|
-
<span class="
|
|
50
|
+
<span class="svadmin-u-f58b02572ab2">
|
|
51
51
|
{#if children}
|
|
52
52
|
{@render children()}
|
|
53
53
|
{:else}
|
|
@@ -34,12 +34,12 @@
|
|
|
34
34
|
disabled={loading}
|
|
35
35
|
>
|
|
36
36
|
{#if loading}
|
|
37
|
-
<Loader2 class="
|
|
37
|
+
<Loader2 class="svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3 svadmin-u-afbdd13a380e" />
|
|
38
38
|
{:else}
|
|
39
|
-
<Save class="
|
|
39
|
+
<Save class="svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3" />
|
|
40
40
|
{/if}
|
|
41
41
|
{#if !hideText}
|
|
42
|
-
<span class="
|
|
42
|
+
<span class="svadmin-u-f58b02572ab2">
|
|
43
43
|
{#if children}
|
|
44
44
|
{@render children()}
|
|
45
45
|
{:else}
|
|
@@ -62,9 +62,9 @@
|
|
|
62
62
|
disabled={!can.allowed}
|
|
63
63
|
onclick={navigateToRecord}
|
|
64
64
|
>
|
|
65
|
-
<Eye class="
|
|
65
|
+
<Eye class="svadmin-u-11e59c6d5f6b svadmin-u-dc7972ebf3f3" />
|
|
66
66
|
{#if !hideText}
|
|
67
|
-
<span class="
|
|
67
|
+
<span class="svadmin-u-f58b02572ab2">
|
|
68
68
|
{#if children}
|
|
69
69
|
{@render children()}
|
|
70
70
|
{:else}
|
|
@@ -21,8 +21,8 @@
|
|
|
21
21
|
const totalWidth = $derived(data.length * (barWidth + gap) - gap + 40);
|
|
22
22
|
</script>
|
|
23
23
|
|
|
24
|
-
<div class="
|
|
25
|
-
<svg viewBox="0 0 {totalWidth} {height + 30}" class="
|
|
24
|
+
<div class="svadmin-u-6da6a3c3f741 svadmin-u-1384f66f41d0 {className}">
|
|
25
|
+
<svg viewBox="0 0 {totalWidth} {height + 30}" class="svadmin-u-6da6a3c3f741" style="min-width: {Math.min(totalWidth, 300)}px;">
|
|
26
26
|
<!-- Bars -->
|
|
27
27
|
{#each data as point, i (i)}
|
|
28
28
|
{@const barHeight = (point.value / maxValue) * (height - 20)}
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
rx="4"
|
|
39
39
|
fill={point.color || 'var(--primary)'}
|
|
40
40
|
opacity="0.85"
|
|
41
|
-
class="
|
|
41
|
+
class="svadmin-u-0fe7d7d814d0 svadmin-u-844322115e56 svadmin-u-5da1d5250e75"
|
|
42
42
|
>
|
|
43
43
|
<animate attributeName="height" from="0" to={barHeight} dur="0.6s" fill="freeze" calcMode="spline" keySplines="0.16 1 0.3 1" />
|
|
44
44
|
<animate attributeName="y" from={height} to={y} dur="0.6s" fill="freeze" calcMode="spline" keySplines="0.16 1 0.3 1" />
|
|
@@ -43,8 +43,8 @@
|
|
|
43
43
|
);
|
|
44
44
|
</script>
|
|
45
45
|
|
|
46
|
-
<div class="
|
|
47
|
-
<svg viewBox="0 0 {chartWidth} {height}" class="
|
|
46
|
+
<div class="svadmin-u-6da6a3c3f741 svadmin-u-1384f66f41d0 {className}">
|
|
47
|
+
<svg viewBox="0 0 {chartWidth} {height}" class="svadmin-u-6da6a3c3f741" style="min-width: {Math.min(chartWidth, 300)}px;">
|
|
48
48
|
<!-- Grid lines -->
|
|
49
49
|
{#each [0, 0.25, 0.5, 0.75, 1] as ratio, _i (_i)}
|
|
50
50
|
{@const y = padding.top + chartHeight * (1 - ratio)}
|
|
@@ -96,7 +96,7 @@
|
|
|
96
96
|
fill="var(--background)"
|
|
97
97
|
stroke={color}
|
|
98
98
|
stroke-width="2"
|
|
99
|
-
class="
|
|
99
|
+
class="svadmin-line-chart-point svadmin-u-0fe7d7d814d0 svadmin-u-625a4c3fbeb2"
|
|
100
100
|
/>
|
|
101
101
|
{/each}
|
|
102
102
|
{/if}
|
|
@@ -57,13 +57,13 @@
|
|
|
57
57
|
});
|
|
58
58
|
</script>
|
|
59
59
|
|
|
60
|
-
<div class="
|
|
60
|
+
<div class="svadmin-u-52083e7da442 svadmin-u-8dddea0773ed svadmin-u-3960ffc248d9 svadmin-u-1004c0c3954c {className}">
|
|
61
61
|
<svg viewBox="0 0 {size} {size}" width={size} height={size}>
|
|
62
62
|
{#each slices as slice, i (i)}
|
|
63
63
|
<path
|
|
64
64
|
d={getArcPath(slice.startAngle, slice.endAngle, radius, innerRadius)}
|
|
65
65
|
fill={slice.color}
|
|
66
|
-
class="
|
|
66
|
+
class="svadmin-u-0fe7d7d814d0 svadmin-u-625a4c3fbeb2 svadmin-u-eaeb741978b7"
|
|
67
67
|
stroke="var(--background)"
|
|
68
68
|
stroke-width="2"
|
|
69
69
|
>
|
|
@@ -83,12 +83,12 @@
|
|
|
83
83
|
</svg>
|
|
84
84
|
|
|
85
85
|
<!-- Legend -->
|
|
86
|
-
<div class="
|
|
86
|
+
<div class="svadmin-u-60fbb7713999 svadmin-u-1eb5c6df38c1 svadmin-u-86843cf1e227 svadmin-u-513d5c30bf66 svadmin-u-c163b0edfdf0">
|
|
87
87
|
{#each slices as slice, _i (_i)}
|
|
88
|
-
<div class="
|
|
89
|
-
<span class="
|
|
90
|
-
<span class="
|
|
91
|
-
<span class="
|
|
88
|
+
<div class="svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-58284b4ea568 svadmin-u-359090c2d529">
|
|
89
|
+
<span class="svadmin-u-9b3d0721b628 svadmin-u-650758f4572a svadmin-u-ac204c108886" style="background-color: {slice.color};"></span>
|
|
90
|
+
<span class="svadmin-u-bfa603190748">{slice.label}</span>
|
|
91
|
+
<span class="svadmin-u-2689f3958069 svadmin-u-d4108abe6359">{slice.percentage}%</span>
|
|
92
92
|
</div>
|
|
93
93
|
{/each}
|
|
94
94
|
</div>
|
|
@@ -23,23 +23,23 @@
|
|
|
23
23
|
{#if resolvedState}
|
|
24
24
|
<DataState state={resolvedState} title={stateTitle} description={stateDescription} {retry} {retryLabel} {loadingLabel} class={className} />
|
|
25
25
|
{:else}
|
|
26
|
-
<div class={'
|
|
26
|
+
<div class={'svadmin-u-fa6acbf81d74 svadmin-u-e783642739e3 svadmin-u-2cd02d11d1af svadmin-u-5f22e64f2282 svadmin-u-ca6bcd4b6f3f svadmin-u-18049387f0af svadmin-u-cd0ad9a56558 ' + className}>
|
|
27
27
|
{#each keys as apiKey (apiKey.id)}
|
|
28
|
-
<div class="
|
|
29
|
-
<span class="
|
|
30
|
-
<div class="
|
|
31
|
-
<p class="
|
|
32
|
-
<p class="
|
|
28
|
+
<div class="svadmin-u-60fbb7713999 svadmin-u-1eb5c6df38c1 svadmin-u-3960ffc248d9 svadmin-u-1004c0c3954c svadmin-u-f0faeb26d656 svadmin-u-1b2d54a3fd12">
|
|
29
|
+
<span class="svadmin-u-60fbb7713999 svadmin-u-665f07fe73cc svadmin-u-012fbd121f37 svadmin-u-3960ffc248d9 svadmin-u-86843cf1e227 svadmin-u-421ac2be5045 svadmin-u-375dc44df6e9 svadmin-u-20aaf08a7ed1"><KeyRound class="svadmin-u-f7b5fa971871" /></span>
|
|
30
|
+
<div class="svadmin-u-4bdb6700d16a svadmin-u-36e579c0b41c">
|
|
31
|
+
<p class="svadmin-u-f283ea9bea0e svadmin-u-fc7473ca09eb svadmin-u-2689f3958069 svadmin-u-d4108abe6359">{apiKey.name}</p>
|
|
32
|
+
<p class="svadmin-u-f283ea9bea0e svadmin-u-0e65706bcccd svadmin-u-359090c2d529 svadmin-u-bfa603190748">{apiKey.maskedToken ?? `${apiKey.prefix}********`}</p>
|
|
33
33
|
{#if apiKey.permissions?.length}
|
|
34
|
-
<div class="
|
|
35
|
-
{#each apiKey.permissions as permission (permission)}<Badge variant="secondary" class="
|
|
34
|
+
<div class="svadmin-u-50d0d216a2f8 svadmin-u-60fbb7713999 svadmin-u-1eb5c6df38c1 svadmin-u-44ee8ba0a421">
|
|
35
|
+
{#each apiKey.permissions as permission (permission)}<Badge variant="secondary" class="svadmin-u-d5eab218aa34 svadmin-u-68ecb30dbec6 svadmin-u-1dc571a3609f">{permission}</Badge>{/each}
|
|
36
36
|
</div>
|
|
37
37
|
{/if}
|
|
38
38
|
</div>
|
|
39
|
-
<div class="
|
|
40
|
-
<div class="
|
|
41
|
-
{#if oncopy}<Button variant="ghost" size="icon-sm" aria-label={i18n.t('common.copy') + ' ' + apiKey.name} onclick={() => oncopy?.(apiKey)}>{#if copiedKeyId === apiKey.id}<Check class="
|
|
42
|
-
{#if onrevoke}<Button variant="ghost" size="icon-sm" aria-label={i18n.t('common.delete') + ' ' + apiKey.name} onclick={() => onrevoke?.(apiKey)}><Trash2 class="
|
|
39
|
+
<div class="svadmin-u-2eba0d65d059 svadmin-u-359090c2d529 svadmin-u-bfa603190748 svadmin-u-0bf5f8e17abf"><p>{apiKey.createdAt ?? (isZh ? '最近创建' : 'Created recently')}</p><p>{apiKey.lastUsedAt ?? (isZh ? '从未使用' : 'Never used')}</p></div>
|
|
40
|
+
<div class="svadmin-u-fb56d9cff341 svadmin-u-60fbb7713999 svadmin-u-3960ffc248d9 svadmin-u-44ee8ba0a421">
|
|
41
|
+
{#if oncopy}<Button variant="ghost" size="icon-sm" aria-label={i18n.t('common.copy') + ' ' + apiKey.name} onclick={() => oncopy?.(apiKey)}>{#if copiedKeyId === apiKey.id}<Check class="svadmin-u-f7b5fa971871 svadmin-u-76747e5e02ff" />{:else}<Copy class="svadmin-u-f7b5fa971871" />{/if}</Button>{/if}
|
|
42
|
+
{#if onrevoke}<Button variant="ghost" size="icon-sm" aria-label={i18n.t('common.delete') + ' ' + apiKey.name} onclick={() => onrevoke?.(apiKey)}><Trash2 class="svadmin-u-f7b5fa971871" /></Button>{/if}
|
|
43
43
|
</div>
|
|
44
44
|
</div>
|
|
45
45
|
{/each}
|