klun-ui 0.4.0 → 0.5.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.
@@ -1,5 +1,5 @@
1
1
  import * as react from 'react';
2
- import { ReactNode } from 'react';
2
+ import { ReactNode, CSSProperties } from 'react';
3
3
  import { C as ChipColor } from '../Chip-DiCYJmnv.cjs';
4
4
 
5
5
  interface SidebarUser {
@@ -533,4 +533,1234 @@ interface MetronicSettingsTemplateProps {
533
533
  }
534
534
  declare function MetronicSettingsTemplate({ section, defaultSection, onSectionChange, maxWidth, }?: MetronicSettingsTemplateProps): react.JSX.Element;
535
535
 
536
- export { AIAssistantTemplate, ALL_PERMISSIONS, AccountSection, AgentChatTemplate, ApiKeysSection, ApprovalsScreen, type ApprovalsScreenProps, AreaChart, type AreaChartProps, AuditScreen, type AuditScreenProps, BarChart, type BarChartProps, BillingSection, CATEGORIES, CalendarScreen, CalendarTemplate, type ChartTone, CryptoTemplate, CustomersScreen, DEMO_SKINS, DEMO_TEXT, DEPARTMENTS, DashboardScreen, type DashboardScreenProps, DashboardTemplate, type DemoNotification, type DemoPageCopy, type DemoSkin, type DemoText, type DemoUser, DepartmentFilter, type DepartmentFilterProps, type DepartmentOption, DepartmentsScreen, type DepartmentsScreenProps, DonutChart, type DonutChartProps, FOLDER_ICONS, FOLDER_LABELS, FeatureFlagsScreen, INITIAL_THREADS, INITIAL_USERS, ImportExportScreen, IntegrationsScreen, type IntegrationsScreenProps, Kpi, type KpiProps, LABEL_COLOR, LOCALE_OPTIONS, MAIL_LABELS, type MailAttachment, type MailFolder, type MailLabel, type MailMessage, type MailThread, type MailView, MarketingTemplate, MessagesScreen, type MessagesScreenProps, MetronicDashboardTemplate, type MetronicNavChild, type MetronicNavItem, MetronicSettingsTemplate, type MetronicSettingsTemplateProps, MetronicSidebar, type MetronicSidebarProps, MetronicTopBar, type MetronicTopBarProps, MiniStat, type MiniStatProps, NotificationsSection, type NotificationsSectionProps, OrdersScreen, type OrdersScreenProps, OverviewScreen, PageHeader, type PageHeaderProps, type PermissionOverride, PricingTemplate, type Product, type ProductDraft, type ProductStatus, ProductWizardPage, type ProductWizardPageProps, ProductsScreen, ProfileSection, type ProfileSectionProps, RECIPIENTS, ROLE_COLOR, ROLE_IDS, ROLE_PERMISSIONS, RTL_LOCALES, ReportsScreen, type ReportsView, type RoleId, RoleTreeScreen, type RoleTreeScreenProps, RolesScreen, SETTINGS_NAV, STATUS_COLOR, SearchScreen, type SearchScreenProps, type SettingsNavItem, SettingsScreen, type SettingsSectionKey, SettingsTemplate, Sidebar, type SidebarProps, type SidebarUser, Sparkline, type SparklineProps, TasksScreen, TemplatesScreen, TicketsScreen, type TicketsScreenProps, TopBar, type TopBarProps, USER_STATUSES, USER_STATUS_COLOR, type UserActivity, UserDetailDrawer, type UserDetailDrawerProps, type UserSession, type UserStatus, UsersScreen, WorkspaceSecurityScreen, type WorkspaceSecurityScreenProps, demoTextFor, departmentChildren, departmentDepth, departmentIdsWithChildren, departmentName, departmentPath, deriveStatus, effectivePermissions, emptyDraft, rolePermissions, totalUnread, useDemoText };
536
+ interface ScuiMenuChild {
537
+ label: string;
538
+ /** Small pill after the label, e.g. "NEW". */
539
+ badge?: string;
540
+ /** Named icon — a Remix class (`ri-*`) or one of SCUI_ICONS. */
541
+ icon?: string;
542
+ /** SCUI's own glyph: index into MENU_PATHS (see menuData.ts). */
543
+ svg?: number;
544
+ /** Nested items (SCUI's 组件/模板/其他 groups have one extra level). */
545
+ children?: ScuiMenuChild[];
546
+ }
547
+ interface ScuiMenuGroup {
548
+ key: string;
549
+ label: string;
550
+ /** Remix class or SCUI_ICONS name shown in the 65px rail. */
551
+ icon: string;
552
+ /** Optional default icon for custom menus; SCUI leaves many items bare. */
553
+ childIcon?: string;
554
+ /** Omitted for direct-link entries such as 关于. */
555
+ children?: ScuiMenuChild[];
556
+ }
557
+ /** One breadcrumb entry (the leading 首页 crumb is added by the shell). */
558
+ interface ScuiCrumb {
559
+ label: string;
560
+ icon?: string;
561
+ svg?: number;
562
+ }
563
+ /** A tab in the tag bar, plus the breadcrumb it implies. */
564
+ interface ScuiView {
565
+ key: string;
566
+ title: string;
567
+ crumbs: ScuiCrumb[];
568
+ icon?: string;
569
+ svg?: number;
570
+ }
571
+ declare const SCUI_MENUS: ScuiMenuGroup[];
572
+ /**
573
+ * Where a menu entry lives: `home` group children sit directly under the leading
574
+ * 首页 crumb, deeper levels append their own trail entry.
575
+ */
576
+ declare function viewOf(group: ScuiMenuGroup, child?: ScuiMenuChild, leaf?: ScuiMenuChild): ScuiView;
577
+ /** The view the demo opens first (首页 → 控制台). */
578
+ declare const SCUI_HOME_VIEW: ScuiView;
579
+
580
+ declare const SCUI_ICONS: {
581
+ /** SCUI brand mark (rounded square with the S) — rail 首页 + the logo. */
582
+ readonly "scui-home": "M176 64h672c61.824 0 112 50.176 112 112v672a112 112 0 0 1-112 112H176A112 112 0 0 1 64 848V176c0-61.824 50.176-112 112-112zm150.528 173.568c-152.896 99.968-196.544 304.064-97.408 456.96a330.688 330.688 0 0 0 456.96 96.64c9.216-5.888 17.6-11.776 25.152-18.56a18.24 18.24 0 0 0 4.224-24.32L700.352 724.8a47.552 47.552 0 0 0-65.536-14.272A234.56 234.56 0 0 1 310.592 641.6C240 533.248 271.104 387.968 379.456 316.48a234.304 234.304 0 0 1 276.352 15.168c1.664.832 2.56 2.56 3.392 4.224 5.888 8.384 3.328 19.328-5.12 25.216L456.832 489.6a47.552 47.552 0 0 0-14.336 65.472l16 24.384c5.888 8.384 16.768 10.88 25.216 5.056l308.224-199.936a19.584 19.584 0 0 0 6.72-23.488v-.896c-4.992-9.216-10.048-17.6-15.104-26.88-99.968-151.168-304.064-194.88-456.96-95.744zM786.88 504.704l-62.208 40.32c-8.32 5.888-10.88 16.768-4.992 25.216L760 632.32c5.888 8.448 16.768 11.008 25.152 5.12l31.104-20.16a55.36 55.36 0 0 0 16-76.48l-20.224-31.04a19.52 19.52 0 0 0-25.152-5.12z";
583
+ readonly "scui-apps": "M832 384H192v448h640V384zM96 320h832V128H96v192zm800 64v480a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V384H64a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32h896a32 32 0 0 1 32 32v256a32 32 0 0 1-32 32h-64zM416 512h192a32 32 0 0 1 0 64H416a32 32 0 0 1 0-64z";
584
+ readonly "scui-layers": "M128 384v448h768V384H128zm-32-64h832a32 32 0 0 1 32 32v512a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V352a32 32 0 0 1 32-32zm64-128h704v64H160zm96-128h512v64H256z";
585
+ readonly "scui-more": "M176 416a112 112 0 1 1 0 224 112 112 0 0 1 0-224zm336 0a112 112 0 1 1 0 224 112 112 0 0 1 0-224zm336 0a112 112 0 1 1 0 224 112 112 0 0 1 0-224z";
586
+ readonly "scui-lab": "M438.144 256c-68.352 0-92.736 4.672-117.76 18.112-20.096 10.752-35.52 26.176-46.272 46.272C260.672 345.408 256 369.792 256 438.144v275.712c0 68.352 4.672 92.736 18.112 117.76 10.752 20.096 26.176 35.52 46.272 46.272C345.408 891.328 369.792 896 438.144 896h147.712c68.352 0 92.736-4.672 117.76-18.112 20.096-10.752 35.52-26.176 46.272-46.272C763.328 806.592 768 782.208 768 713.856V438.144c0-68.352-4.672-92.736-18.112-117.76a110.464 110.464 0 0 0-46.272-46.272C678.592 260.672 654.208 256 585.856 256H438.144zm0-64h147.712c85.568 0 116.608 8.96 147.904 25.6 31.36 16.768 55.872 41.344 72.576 72.64C823.104 321.536 832 352.576 832 438.08v275.84c0 85.504-8.96 116.544-25.6 147.84a174.464 174.464 0 0 1-72.64 72.576C702.464 951.104 671.424 960 585.92 960H438.08c-85.504 0-116.544-8.96-147.84-25.6a174.464 174.464 0 0 1-72.64-72.704c-16.768-31.296-25.664-62.336-25.664-147.84v-275.84c0-85.504 8.96-116.544 25.6-147.84a174.464 174.464 0 0 1 72.768-72.576c31.232-16.704 62.272-25.6 147.776-25.6zM512 320q32 0 32 32v128q0 32-32 32t-32-32V352q0-32 32-32zm32-96a32 32 0 0 1-64 0v-64a32 32 0 0 0-32-32h-96a32 32 0 0 1 0-64h96a96 96 0 0 1 96 96v64z";
587
+ readonly "scui-settings": "M600.704 64a32 32 0 0 1 30.464 22.208l35.2 109.376c14.784 7.232 28.928 15.36 42.432 24.512l112.384-24.192a32 32 0 0 1 34.432 15.36L944.32 364.8a32 32 0 0 1-4.032 37.504l-77.12 85.12a357.12 357.12 0 0 1 0 49.024l77.12 85.248a32 32 0 0 1 4.032 37.504l-88.704 153.6a32 32 0 0 1-34.432 15.296L708.8 803.904c-13.44 9.088-27.648 17.28-42.368 24.512l-35.264 109.376A32 32 0 0 1 600.704 960H423.296a32 32 0 0 1-30.464-22.208L357.696 828.48a351.616 351.616 0 0 1-42.56-24.64l-112.32 24.256a32 32 0 0 1-34.432-15.36L79.68 659.2a32 32 0 0 1 4.032-37.504l77.12-85.248a357.12 357.12 0 0 1 0-48.896l-77.12-85.248A32 32 0 0 1 79.68 364.8l88.704-153.6a32 32 0 0 1 34.432-15.296l112.32 24.256c13.568-9.152 27.776-17.408 42.56-24.64l35.2-109.312A32 32 0 0 1 423.232 64H600.64zm-23.424 64H446.72l-36.352 113.088-24.512 11.968a294.113 294.113 0 0 0-34.816 20.096l-22.656 15.36-116.224-25.088-65.28 113.152 79.68 88.192-1.92 27.136a293.12 293.12 0 0 0 0 40.192l1.92 27.136-79.808 88.192 65.344 113.152 116.224-25.024 22.656 15.296a294.113 294.113 0 0 0 34.816 20.096l24.512 11.968L446.72 896h130.688l36.48-113.152 24.448-11.904a288.282 288.282 0 0 0 34.752-20.096l22.592-15.296 116.288 25.024 65.28-113.152-79.744-88.192 1.92-27.136a293.12 293.12 0 0 0 0-40.256l-1.92-27.136 79.808-88.128-65.344-113.152-116.288 24.96-22.592-15.232a287.616 287.616 0 0 0-34.752-20.096l-24.448-11.904L577.344 128zM512 320a192 192 0 1 1 0 384 192 192 0 0 1 0-384zm0 64a128 128 0 1 0 0 256 128 128 0 0 0 0-256z";
588
+ readonly "scui-info": "M512 64a448 448 0 1 1 0 896.064A448 448 0 0 1 512 64zm67.2 275.072c33.28 0 60.288-23.104 60.288-57.344s-27.072-57.344-60.288-57.344c-33.28 0-60.16 23.104-60.16 57.344s26.88 57.344 60.16 57.344zM590.912 699.2c0-6.848 2.368-24.64 1.024-34.752l-52.608 60.544c-10.88 11.456-24.512 19.392-30.912 17.28a12.992 12.992 0 0 1-8.256-14.72l87.68-276.992c7.168-35.136-12.544-67.2-54.336-71.296-44.096 0-108.992 44.736-148.48 101.504 0 6.784-1.28 23.68.064 33.792l52.544-60.608c10.88-11.328 23.552-19.328 29.952-17.152a12.8 12.8 0 0 1 7.808 16.128L388.48 728.576c-10.048 32.256 8.96 63.872 55.04 71.04 67.84 0 107.904-43.648 147.456-100.416z";
589
+ readonly "scui-dashboard": "M160 448a32 32 0 0 1-32-32V160.064a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32V416a32 32 0 0 1-32 32H160zm448 0a32 32 0 0 1-32-32V160.064a32 32 0 0 1 32-32h255.936a32 32 0 0 1 32 32V416a32 32 0 0 1-32 32H608zM160 896a32 32 0 0 1-32-32V608a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32v256a32 32 0 0 1-32 32H160zm448 0a32 32 0 0 1-32-32V608a32 32 0 0 1 32-32h255.936a32 32 0 0 1 32 32v256a32 32 0 0 1-32 32H608z";
590
+ readonly "scui-user": "M512 512a192 192 0 1 0 0-384 192 192 0 0 0 0 384zm0 64a256 256 0 1 1 0-512 256 256 0 0 1 0 512zm320 320v-96a96 96 0 0 0-96-96H288a96 96 0 0 0-96 96v96a32 32 0 1 1-64 0v-96a160 160 0 0 1 160-160h448a160 160 0 0 1 160 160v96a32 32 0 1 1-64 0z";
591
+ };
592
+ type ScuiIconName = keyof typeof SCUI_ICONS;
593
+ /** Renders one of SCUI's icons (sized by the surrounding font-size). */
594
+ declare function ScuiIcon({ name, className }: {
595
+ name: ScuiIconName;
596
+ className?: string;
597
+ }): react.JSX.Element;
598
+
599
+ interface ScuiMenuNode {
600
+ label: string;
601
+ /** Index into PATHS; undefined when SCUI renders the item without an icon. */
602
+ icon?: number;
603
+ children?: ScuiMenuNode[];
604
+ }
605
+ declare const MENU_PATHS: string[];
606
+ declare const SCUI_MENU_DATA: Array<{
607
+ label: string;
608
+ items: ScuiMenuNode[];
609
+ }>;
610
+
611
+ interface ScuiUser {
612
+ id: number;
613
+ account: string;
614
+ name: string;
615
+ roles: string;
616
+ joined: string;
617
+ }
618
+ declare const SCUI_USERS: ScuiUser[];
619
+ interface Department {
620
+ label: string;
621
+ children?: Department[];
622
+ }
623
+ declare const SCUI_DEPARTMENTS: Department[];
624
+ interface UsersPageProps {
625
+ className?: string;
626
+ /** Menu label shown in the breadcrumb (unused here, kept for symmetry). */
627
+ title?: ReactNode;
628
+ }
629
+ /**
630
+ * SCUI's 配置 → 用户管理 page: department tree, selection toolbar, filterable
631
+ * user table and the pager — layout and metrics taken from the live demo.
632
+ */
633
+ declare function ScuiUsersPage({ className }: UsersPageProps): react.JSX.Element;
634
+ /** Menu key the shell uses to mount this page. */
635
+ declare const SCUI_USERS_VIEW_KEY = "config/\u7528\u6237\u7BA1\u7406";
636
+
637
+ type ScuiMenuType = "菜单" | "Iframe" | "外链" | "按钮";
638
+ interface ScuiMenuApi {
639
+ name: string;
640
+ url: string;
641
+ }
642
+ interface ScuiMenuItem {
643
+ /** 稳定 id — 展开/勾选/选中都按它记,拖动排序后不会错位。 */
644
+ id: string;
645
+ label: string;
646
+ alias?: string;
647
+ path?: string;
648
+ type?: ScuiMenuType;
649
+ icon?: string;
650
+ view?: string;
651
+ redirect?: string;
652
+ highlight?: string;
653
+ color?: string;
654
+ hideMenu?: boolean;
655
+ hideBreadcrumb?: boolean;
656
+ wholePage?: boolean;
657
+ tag?: string;
658
+ apis?: ScuiMenuApi[];
659
+ children?: ScuiMenuItem[];
660
+ }
661
+ /** The demo's menu tree, as it ships in SCUI (button-type menus included). */
662
+ declare const SCUI_MENU_TREE: ScuiMenuItem[];
663
+ declare const SCUI_MENU_VIEW_KEY = "config/\u83DC\u5355\u7BA1\u7406";
664
+ interface MenuPageProps {
665
+ className?: string;
666
+ }
667
+ /**
668
+ * SCUI's 配置 → 菜单管理 page: the menu tree (hover a row for its 新增 button),
669
+ * the 菜单表单 and the 接口权限 api table — layout taken from the live demo.
670
+ */
671
+ declare function ScuiMenuPage({ className }: MenuPageProps): react.JSX.Element;
672
+
673
+ interface ScuiDictItem {
674
+ id: string;
675
+ name: string;
676
+ key: string;
677
+ active: boolean;
678
+ }
679
+ interface ScuiDictType {
680
+ id: string;
681
+ name: string;
682
+ code: string;
683
+ /** Items of this dictionary — what the right table renders. */
684
+ items?: ScuiDictItem[];
685
+ children?: ScuiDictType[];
686
+ }
687
+ /** The demo's dictionaries (SCUI's own demo ships an empty list). */
688
+ declare const SCUI_DICTS: ScuiDictType[];
689
+ interface DictPageProps {
690
+ className?: string;
691
+ }
692
+ /**
693
+ * SCUI's 配置 → 字典管理 page: dictionary-type tree on the left, dictionary-item
694
+ * table on the right — both sortable by drag and both fully editable.
695
+ */
696
+ declare function ScuiDictPage({ className }: DictPageProps): react.JSX.Element;
697
+ /** Menu key the shell uses to mount this page. */
698
+ declare const SCUI_DICT_VIEW_KEY = "config/\u5B57\u5178\u7BA1\u7406";
699
+
700
+ interface ScuiDept {
701
+ id: string;
702
+ name: string;
703
+ /** 部门编码 — shown at the end of the tree row. */
704
+ code: string;
705
+ leader: string;
706
+ phone: string;
707
+ active: boolean;
708
+ note?: string;
709
+ /** Read-only line in the 明细 pane. */
710
+ createdAt: string;
711
+ children?: ScuiDept[];
712
+ }
713
+ /** The demo's organisation (3 levels, so nested drag sorting is visible). */
714
+ declare const SCUI_DEPTS: ScuiDept[];
715
+ interface DeptPageProps {
716
+ className?: string;
717
+ }
718
+ /**
719
+ * 左树右明细: the org tree drives the selection, the right pane is the selected
720
+ * department's record — 保存 writes it back, 重置 drops the local edits.
721
+ */
722
+ declare function ScuiDeptPage({ className }: DeptPageProps): react.JSX.Element;
723
+ /** Menu key the shell uses to mount this page. */
724
+ declare const SCUI_DEPT_VIEW_KEY = "config/\u90E8\u95E8\u7BA1\u7406";
725
+
726
+ interface ScuiPermNode {
727
+ id: string;
728
+ label: string;
729
+ children?: ScuiPermNode[];
730
+ }
731
+ /** 菜单权限树 — the demo's real navigation, one grant per menu entry. */
732
+ declare const SCUI_PERM_TREE: ScuiPermNode[];
733
+ interface ScuiRole {
734
+ id: string;
735
+ name: string;
736
+ /** 角色标识 — shown at the end of the list row. */
737
+ code: string;
738
+ note?: string;
739
+ /** Granted permission ids — a branch counts as granted only via its own id. */
740
+ perms: string[];
741
+ }
742
+ declare const SCUI_ROLES: ScuiRole[];
743
+ interface RolePageProps {
744
+ className?: string;
745
+ }
746
+ /**
747
+ * 左角色列表 + 右权限树: selection drives the tree, every checkbox click is
748
+ * committed to the role straight away.
749
+ */
750
+ declare function ScuiRolePage({ className }: RolePageProps): react.JSX.Element;
751
+ /** Menu key the shell uses to mount this page. */
752
+ declare const SCUI_ROLE_VIEW_KEY = "config/\u89D2\u8272\u7BA1\u7406";
753
+
754
+ type WfStepKind = "start" | "approver" | "cc";
755
+ /** Card title colours — the values the live demo paints inline. */
756
+ declare const WF_NODE_COLORS: Record<WfStepKind, string>;
757
+ interface WfStep {
758
+ id: string;
759
+ kind: WfStepKind;
760
+ /** Card title (发起人 / 领导审批 / 抄送人…). */
761
+ name: string;
762
+ /** Second line: 审批人 / 抄送对象 / 发起范围 — the picked labels, joined. */
763
+ assignee: string;
764
+ /** Picked 部门/角色 ids or 人员 names. */
765
+ members: string[];
766
+ /** 审批人员类型 / 抄送人员类型. */
767
+ memberType: string;
768
+ /** 超时自动审批. */
769
+ timeout?: boolean;
770
+ /** 多人审批时审批方式. */
771
+ multi?: WfMultiMode;
772
+ }
773
+ type WfMultiMode = "sequence" | "all" | "any";
774
+ type WfRelation = "and" | "or";
775
+ /** One row of the condition table (描述 / 条件字段 / 运算符 / 值). */
776
+ interface WfCondition {
777
+ id: string;
778
+ desc: string;
779
+ field: string;
780
+ op: string;
781
+ value: string;
782
+ }
783
+ interface WfBranch {
784
+ id: string;
785
+ /** Condition card title (长期 / 短期…). */
786
+ name: string;
787
+ relation: WfRelation;
788
+ rows: WfCondition[];
789
+ steps: WfRow[];
790
+ /** The else branch (其他条件进入此流程) carries no rows of its own. */
791
+ isElse?: boolean;
792
+ }
793
+ /** A condition group is a row of its own; everything else is a step. */
794
+ interface WfBranchRow {
795
+ id: string;
796
+ kind: "branch";
797
+ branches: WfBranch[];
798
+ }
799
+ type WfRow = WfStep | WfBranchRow;
800
+ declare const SCUI_WORKFLOW_NAME = "\u8BF7\u5047\u5BA1\u6279";
801
+ /** The demo flow — same data as the live demo's vab/workflow page. */
802
+ declare const SCUI_WORKFLOW_ROWS: WfRow[];
803
+
804
+ interface WorkflowPageProps {
805
+ className?: string;
806
+ /** 返回 in the page header — the live demo routes back from here. */
807
+ onBack?: () => void;
808
+ }
809
+ /**
810
+ * 工作流设计器 — state plus the original stylesheet: the canvas lays itself out,
811
+ * so there are no coordinates to keep in sync.
812
+ */
813
+ declare function ScuiWorkflowPage({ className, onBack }: WorkflowPageProps): react.JSX.Element;
814
+ /** Menu key the shell uses to mount this page. */
815
+ declare const SCUI_WORKFLOW_VIEW_KEY = "components/\u5DE5\u4F5C\u6D41\u8BBE\u8BA1\u5668";
816
+
817
+ interface KlunNavEntry {
818
+ label: string;
819
+ icon: string;
820
+ /** 打开该页所需的权限点(klun-server 的 key),与 klun-web 一致。 */
821
+ permission?: string;
822
+ }
823
+ interface KlunNavGroup {
824
+ key: string;
825
+ label: string;
826
+ icon: string;
827
+ entries: KlunNavEntry[];
828
+ }
829
+ declare const KLUN_NAV: KlunNavGroup[];
830
+ /** klun-web 导航 → SCUI 外壳的菜单树(子项不带 key,外壳按「分组标签/菜单标签」推导视图 key)。 */
831
+ declare const KLUN_WEB_MENUS: ScuiMenuGroup[];
832
+ /** 视图 key(与外壳 viewOf 一致:`<分组 key>/<菜单标签>`)。 */
833
+ declare const klunViewKey: (groupKey: string, label: string) => string;
834
+ /** 已实现的 klun-web 页面 key。 */
835
+ declare const KLUN_VIEW_KEYS: {
836
+ readonly dashboard: string;
837
+ readonly audit: string;
838
+ };
839
+
840
+ interface ScuiConsoleUser {
841
+ name: string;
842
+ username: string;
843
+ title: string;
844
+ email: string;
845
+ status: "invited" | "active" | "disabled" | "locked";
846
+ mustChangePassword?: boolean;
847
+ permissions: string[];
848
+ }
849
+ /** 当前登录人(演示账号,权限点取自 klun-server 的 key 列表)。 */
850
+ declare const SCUI_CONSOLE_USER: ScuiConsoleUser;
851
+ /** 概览的统计口径:用户 / 部门 / 活跃度,与 /users/stats 返回的字段一一对应。 */
852
+ declare const SCUI_CONSOLE_STATS: {
853
+ total: number;
854
+ active: number;
855
+ invited: number;
856
+ disabled: number;
857
+ locked: number;
858
+ departments: number;
859
+ online30d: number;
860
+ };
861
+ interface DashboardPageProps {
862
+ className?: string;
863
+ /** 快捷入口被点击时回调(外壳可据此切标签);不传则只作展示。 */
864
+ onOpen?: (view: "users" | "audit") => void;
865
+ }
866
+ /** 控制台概览:真实统计 + 我的账号信息 + 最近操作流水。 */
867
+ declare function ScuiDashboardPage({ className, onOpen }: DashboardPageProps): react.JSX.Element;
868
+ /** 菜单 key(外壳的 viewOf 推导值:分组 key/菜单标签)。 */
869
+ declare const SCUI_DASHBOARD_VIEW_KEY = "console/\u6982\u89C8";
870
+
871
+ interface ScuiAuditLog {
872
+ id: string;
873
+ actorId: string;
874
+ actorName: string;
875
+ action: string;
876
+ targetType: string;
877
+ targetId: string;
878
+ summary: string;
879
+ clientIp: string;
880
+ userAgent: string;
881
+ createdAt: string;
882
+ }
883
+ /** 动作 → 行状态色(与 klun-web 的 ACTION_TONE 同一张表)。 */
884
+ declare const AUDIT_TONE: Record<string, string>;
885
+ /** 演示流水 — 覆盖登录、账号、权限、会话与配置几类动作。 */
886
+ declare const SCUI_AUDIT_LOGS: ScuiAuditLog[];
887
+ interface AuditPageProps {
888
+ className?: string;
889
+ }
890
+ /** 审计日志:筛选工具条 + 指标行 + 流水表 + 分页,点行看完整字段。 */
891
+ declare function ScuiAuditPage({ className }: AuditPageProps): react.JSX.Element;
892
+ /** 菜单 key(外壳的 viewOf 推导值:分组 key/菜单标签)。 */
893
+ declare const SCUI_AUDIT_VIEW_KEY = "ops/\u5BA1\u8BA1\u65E5\u5FD7";
894
+
895
+ declare const formatNumber: (value: number, locale?: string, options?: Intl.NumberFormatOptions) => string;
896
+ declare function formatDateTime(value: string | number | Date, locale?: string): string;
897
+ /** "2026-09-17 15:04:05" → "2026-09-17 15:04";非日期原样返回。 */
898
+ declare function shortDateTime(value?: string | null): string;
899
+ /** MB → 「303 MB」/「5.5 GB」。 */
900
+ declare const formatMB: (value: number) => string;
901
+ /** 秒 → 「3d 4h」/「2h 5m」/「9m」。 */
902
+ declare function formatUptime(seconds: number): string;
903
+ /** 「Anna Krause」→「AK」;中文名取前两字。 */
904
+ declare const initials: (name: string) => string;
905
+ /** 精简 User-Agent,只留浏览器与系统标识。 */
906
+ declare function shortAgent(agent: string): string;
907
+
908
+ type AssetKind = "server" | "database" | "network" | "application";
909
+ type AssetProtocol = "ssh" | "rdp" | "k8s" | "postgres" | "mysql" | "redis" | "http";
910
+ type AssetStatus = "online" | "offline" | "noagent";
911
+ interface ScuiAsset {
912
+ id: string;
913
+ name: string;
914
+ kind: AssetKind;
915
+ host: string;
916
+ port: number;
917
+ username: string;
918
+ hasCredential: boolean;
919
+ protocol: AssetProtocol;
920
+ database: string;
921
+ namespace: string;
922
+ /** 跳板资产 id;空 = 直连。 */
923
+ proxyAssetId: string;
924
+ /** 分组 id;空 = 未分组。 */
925
+ groupId: string;
926
+ description: string;
927
+ updatedBy: string;
928
+ updatedAt: string;
929
+ }
930
+ interface ScuiAgent {
931
+ assetId: string;
932
+ status: AssetStatus;
933
+ version: string;
934
+ hostname: string;
935
+ os: string;
936
+ arch: string;
937
+ cpuPercent: number;
938
+ load1: number;
939
+ memPercent: number;
940
+ memUsed: number;
941
+ memTotal: number;
942
+ diskPercent: number;
943
+ diskUsed: number;
944
+ diskTotal: number;
945
+ uptimeSeconds: number;
946
+ processCount: number;
947
+ ports: Array<{
948
+ proto: string;
949
+ addr: string;
950
+ port: number;
951
+ process: string;
952
+ }>;
953
+ processes: Array<{
954
+ pid: number;
955
+ name: string;
956
+ cpu: number;
957
+ mem: number;
958
+ user: string;
959
+ }>;
960
+ lastSeenAt: string;
961
+ }
962
+ interface ScuiAssetGroup {
963
+ id: string;
964
+ name: string;
965
+ parentId: string;
966
+ children?: ScuiAssetGroup[];
967
+ }
968
+ declare const ASSET_KIND_LABEL: Record<AssetKind, string>;
969
+ declare const ASSET_STATUS_LABEL: Record<AssetStatus, string>;
970
+ declare const SCUI_ASSET_GROUPS: ScuiAssetGroup[];
971
+ /** 分组子树 id(含自己)—— 过滤时命中整棵子树。 */
972
+ declare const groupIds: (id: string) => string[];
973
+ declare const SCUI_ASSETS: ScuiAsset[];
974
+ /** Agent 快照:演示数据按资产 id 给一份(无 = 未接入)。 */
975
+ declare const SCUI_ASSET_AGENTS: Record<string, ScuiAgent>;
976
+ /** 连接命令(按协议生成,照搬 klun-web 的提示语)。 */
977
+ declare function connectCommand(asset: ScuiAsset): string;
978
+ interface AssetsPageProps {
979
+ className?: string;
980
+ }
981
+ /** 资产管理:分组树 + 统计 + 批量 + 表格 + 详情抽屉 + 编辑弹窗。 */
982
+ declare function ScuiAssetsPage({ className }: AssetsPageProps): react.JSX.Element;
983
+ /** 菜单 key(外壳的 viewOf 推导值:分组 key/菜单标签)。 */
984
+ declare const SCUI_ASSETS_VIEW_KEY = "ops/\u8D44\u4EA7\u7BA1\u7406";
985
+
986
+ interface ScuiTerminalSession {
987
+ id: string;
988
+ assetId: string;
989
+ assetName: string;
990
+ actorId: string;
991
+ actorName: string;
992
+ clientIp: string;
993
+ status: "active" | "closed";
994
+ online: boolean;
995
+ recording: string;
996
+ exitMessage: string;
997
+ rows: number;
998
+ cols: number;
999
+ bytes: number;
1000
+ commands: number;
1001
+ startedAt: string;
1002
+ endedAt: string;
1003
+ durationSeconds: number;
1004
+ kicked?: boolean;
1005
+ }
1006
+ interface ScuiTerminalCommand {
1007
+ id: string;
1008
+ command: string;
1009
+ atMs: number;
1010
+ }
1011
+ /** 在线会话(内存注册表,可断开)。 */
1012
+ declare const SCUI_LIVE_SESSIONS: ScuiTerminalSession[];
1013
+ /** 历史会话(落库,带录像文件名)。 */
1014
+ declare const SCUI_SESSION_HISTORY: ScuiTerminalSession[];
1015
+ /** 一条会话的终端命令(atMs = 相对会话开始的偏移)。 */
1016
+ declare const SCUI_SESSION_COMMANDS: Record<string, ScuiTerminalCommand[]>;
1017
+ declare const formatBytes: (bytes: number) => string;
1018
+ declare const formatDuration: (seconds: number) => string;
1019
+ interface SessionsPageProps {
1020
+ className?: string;
1021
+ }
1022
+ /** 会话审计:在线 / 历史两个视图,支持强制断开、命令记录与录像标记。 */
1023
+ declare function ScuiSessionsPage({ className }: SessionsPageProps): react.JSX.Element;
1024
+ /** 菜单 key(外壳的 viewOf 推导值:分组 key/菜单标签)。 */
1025
+ declare const SCUI_SESSIONS_VIEW_KEY = "ops/\u4F1A\u8BDD\u5BA1\u8BA1";
1026
+
1027
+ interface ScuiApplication {
1028
+ id: string;
1029
+ name: string;
1030
+ businessGroup: string;
1031
+ department: string;
1032
+ devOwner: string;
1033
+ testOwner: string;
1034
+ opsOwner: string;
1035
+ language: string;
1036
+ repoUrl: string;
1037
+ description: string;
1038
+ status: "active" | "inactive";
1039
+ updatedBy: string;
1040
+ createdAt: string;
1041
+ }
1042
+ declare const APP_BUSINESS_GROUPS: string[];
1043
+ declare const APP_DEPARTMENTS: string[];
1044
+ declare const SCUI_APPLICATIONS: ScuiApplication[];
1045
+ interface AppsPageProps {
1046
+ className?: string;
1047
+ }
1048
+ /** 应用清单:一行一个系统,三类负责人 + 技术栈,支持新建/编辑/删除。 */
1049
+ declare function ScuiAppsPage({ className }: AppsPageProps): react.JSX.Element;
1050
+ /** 菜单 key(外壳的 viewOf 推导值:分组 key/菜单标签)。 */
1051
+ declare const SCUI_APPS_VIEW_KEY = "service/\u5E94\u7528\u6E05\u5355";
1052
+
1053
+ type MonitorKind = "domain" | "api";
1054
+ type MonitorStatus = "up" | "down" | "unknown";
1055
+ interface ScuiMonitor {
1056
+ id: string;
1057
+ kind: MonitorKind;
1058
+ name: string;
1059
+ url: string;
1060
+ method: string;
1061
+ expectedStatus: number;
1062
+ intervalSeconds: number;
1063
+ enabled: boolean;
1064
+ status: MonitorStatus;
1065
+ httpStatus: number;
1066
+ latencyMs: number;
1067
+ certExpiresAt?: string;
1068
+ lastError: string;
1069
+ lastCheckedAt: string;
1070
+ /** 最近一轮交叉验证:可达票数 / 总探针数(中央 + Agent)。 */
1071
+ probeUp: number;
1072
+ probeTotal: number;
1073
+ }
1074
+ interface ScuiMonitorProbe {
1075
+ id: string;
1076
+ source: "central" | "agent";
1077
+ sourceName: string;
1078
+ status: "up" | "down";
1079
+ httpStatus: number;
1080
+ latencyMs: number;
1081
+ error: string;
1082
+ createdAt: string;
1083
+ }
1084
+ declare const MONITOR_STATUS_LABEL: Record<MonitorStatus, string>;
1085
+ /** 证书剩余天数(只对域名监控有意义)。 */
1086
+ declare const certDaysLeft: (iso?: string, now?: Date) => number | null;
1087
+ declare const SCUI_MONITORS: ScuiMonitor[];
1088
+ /** 探针记录(中央探针 + 参与复核的 Agent)。 */
1089
+ declare const SCUI_MONITOR_PROBES: Record<string, ScuiMonitorProbe[]>;
1090
+ interface MonitorsPageProps {
1091
+ className?: string;
1092
+ /** domain = 域名探活,api = 接口监控(同一页面两种口径)。 */
1093
+ variant?: MonitorKind;
1094
+ }
1095
+ /** 探活监控:状态/延迟/证书/交叉验证一览,行内看探针记录。 */
1096
+ declare function ScuiMonitorsPage({ className, variant }: MonitorsPageProps): react.JSX.Element;
1097
+ /** 菜单 key(外壳的 viewOf 推导值)。 */
1098
+ declare const SCUI_MONITORS_DOMAIN_VIEW_KEY = "service/\u57DF\u540D\u63A2\u6D3B";
1099
+ declare const SCUI_MONITORS_API_VIEW_KEY = "service/\u63A5\u53E3\u76D1\u63A7";
1100
+
1101
+ type AlertSeverity = "warning" | "critical";
1102
+ type AlertStatus = "firing" | "resolved";
1103
+ interface ScuiAlert {
1104
+ id: string;
1105
+ ruleName: string;
1106
+ category: string;
1107
+ metricKey: string;
1108
+ unit: string;
1109
+ severity: AlertSeverity;
1110
+ assetName: string;
1111
+ value: number;
1112
+ threshold: number;
1113
+ status: AlertStatus;
1114
+ claimedByName: string;
1115
+ claimedAt: string;
1116
+ handledByName: string;
1117
+ handledAt: string;
1118
+ handleNote: string;
1119
+ startedAt: string;
1120
+ resolvedAt: string;
1121
+ }
1122
+ declare const SEVERITY_LABEL: Record<AlertSeverity, string>;
1123
+ declare const SCUI_ALERTS: ScuiAlert[];
1124
+ interface AlertsPageProps {
1125
+ className?: string;
1126
+ }
1127
+ /** 故障管理:指标命中规则即生成告警,可认领、标记处理,指标回落自动恢复。 */
1128
+ declare function ScuiAlertsPage({ className }: AlertsPageProps): react.JSX.Element;
1129
+ /** 菜单 key(外壳的 viewOf 推导值)。 */
1130
+ declare const SCUI_ALERTS_VIEW_KEY = "service/\u544A\u8B66";
1131
+
1132
+ /** 指标键:key 必须在 Agent 上报里存在,否则求值时会被跳过(照搬 klun-web)。 */
1133
+ declare const ALERT_METRICS: Array<{
1134
+ key: string;
1135
+ label: string;
1136
+ unit: string;
1137
+ category: string;
1138
+ }>;
1139
+ declare const ALERT_CATEGORY_LABEL: Record<string, string>;
1140
+ interface ScuiAlertRule {
1141
+ id: string;
1142
+ name: string;
1143
+ category: string;
1144
+ metricKey: string;
1145
+ unit: string;
1146
+ operator: "gt" | "lt";
1147
+ threshold: string;
1148
+ severity: "warning" | "critical";
1149
+ enabled: boolean;
1150
+ description: string;
1151
+ updatedBy: string;
1152
+ updatedAt: string;
1153
+ }
1154
+ declare const SCUI_ALERT_RULES: ScuiAlertRule[];
1155
+ interface AlertRulesPageProps {
1156
+ className?: string;
1157
+ }
1158
+ /** 告警规则:Agent 每次上报都会逐条求值,命中即生成告警。 */
1159
+ declare function ScuiAlertRulesPage({ className }: AlertRulesPageProps): react.JSX.Element;
1160
+ /** 菜单 key(外壳的 viewOf 推导值)。 */
1161
+ declare const SCUI_ALERT_RULES_VIEW_KEY = "service/\u544A\u8B66\u89C4\u5219";
1162
+
1163
+ type ClusterStatus = "online" | "offline" | "unknown";
1164
+ declare const CLUSTER_STATUS_LABEL: Record<ClusterStatus, string>;
1165
+ declare const CLUSTER_STATUS_TONE: Record<ClusterStatus, "kk-tag--success" | "kk-tag--danger" | "kk-tag--gray">;
1166
+ /** 已注册的 K8s 集群(凭证不下发,服务端代读 API Server 后回填这些实况字段)。 */
1167
+ interface ScuiCluster {
1168
+ id: string;
1169
+ name: string;
1170
+ description: string;
1171
+ server: string;
1172
+ version: string;
1173
+ status: ClusterStatus;
1174
+ /** 最近一次读取失败的真实错误(不可达时展示在状态下方)。 */
1175
+ lastError: string;
1176
+ nodeCount: number;
1177
+ readyNodeCount: number;
1178
+ namespaceCount: number;
1179
+ podCount: number;
1180
+ lastSyncedAt: string;
1181
+ }
1182
+ declare const SCUI_CLUSTERS: ScuiCluster[];
1183
+ interface ScuiNode {
1184
+ name: string;
1185
+ clusterId: string;
1186
+ clusterName: string;
1187
+ roles: string;
1188
+ status: "Ready" | "NotReady";
1189
+ version: string;
1190
+ internalIp: string;
1191
+ cpu: string;
1192
+ memory: string;
1193
+ /** 封锁 = spec.unschedulable,只挡新 Pod,不驱逐已有 Pod。 */
1194
+ unschedulable: boolean;
1195
+ createdAt: string;
1196
+ }
1197
+ declare const SCUI_NODES: ScuiNode[];
1198
+ interface ScuiNamespace {
1199
+ name: string;
1200
+ clusterId: string;
1201
+ clusterName: string;
1202
+ status: "Active" | "Terminating";
1203
+ podCount: number;
1204
+ createdAt: string;
1205
+ }
1206
+ declare const SCUI_NAMESPACES: ScuiNamespace[];
1207
+ type WorkloadKind = "deployment" | "statefulset" | "daemonset";
1208
+ declare const WORKLOAD_LABEL: Record<WorkloadKind, string>;
1209
+ interface ScuiWorkload {
1210
+ kind: WorkloadKind;
1211
+ name: string;
1212
+ clusterId: string;
1213
+ clusterName: string;
1214
+ namespace: string;
1215
+ ready: number;
1216
+ desired: number;
1217
+ image: string;
1218
+ createdAt: string;
1219
+ }
1220
+ declare const SCUI_WORKLOADS: ScuiWorkload[];
1221
+ interface ScuiK8sObject {
1222
+ name: string;
1223
+ clusterId: string;
1224
+ clusterName: string;
1225
+ namespace: string;
1226
+ /** service | ingress */
1227
+ kind: string;
1228
+ type: string;
1229
+ address: string;
1230
+ ports: string;
1231
+ }
1232
+ declare const SCUI_NETWORK: ScuiK8sObject[];
1233
+ interface ScuiVolume {
1234
+ kind: "pv" | "pvc";
1235
+ name: string;
1236
+ clusterId: string;
1237
+ clusterName: string;
1238
+ namespace: string;
1239
+ capacity: string;
1240
+ accessModes: string;
1241
+ storageClass: string;
1242
+ status: string;
1243
+ volume: string;
1244
+ }
1245
+ declare const SCUI_VOLUMES: ScuiVolume[];
1246
+ interface ScuiConfigEntry {
1247
+ kind: "configmap" | "secret";
1248
+ name: string;
1249
+ clusterId: string;
1250
+ clusterName: string;
1251
+ namespace: string;
1252
+ keys: number;
1253
+ createdAt: string;
1254
+ }
1255
+ declare const SCUI_CONFIGS: ScuiConfigEntry[];
1256
+ interface ScuiEvent {
1257
+ id: string;
1258
+ type: "Warning" | "Normal";
1259
+ object: string;
1260
+ clusterId: string;
1261
+ clusterName: string;
1262
+ namespace: string;
1263
+ reason: string;
1264
+ message: string;
1265
+ count: number;
1266
+ lastSeenAt: string;
1267
+ }
1268
+ declare const SCUI_EVENTS: ScuiEvent[];
1269
+ /** 读取失败的集群(服务端并发拉各集群,单个失败不影响其它集群的列表)。 */
1270
+ declare const SCUI_K8S_FAILED: {
1271
+ clusterName: string;
1272
+ error: string;
1273
+ }[];
1274
+ interface ScuiScope {
1275
+ clusterId: string;
1276
+ namespace: string;
1277
+ }
1278
+ interface ScuiScopeBarProps {
1279
+ value: ScuiScope;
1280
+ onChange: (next: ScuiScope) => void;
1281
+ onRefresh?: () => void;
1282
+ /** 命名空间下拉的补充说明(例如「仅过滤 PVC」)。 */
1283
+ namespaceHint?: string;
1284
+ /** 集群级资源(如节点)不需要命名空间下拉。 */
1285
+ hideNamespace?: boolean;
1286
+ /** 追加在范围条后面的页面自己的筛选项。 */
1287
+ children?: ReactNode;
1288
+ }
1289
+ /** 跨集群页面共用的范围条:集群 + 命名空间 + 刷新,后面可接页面自己的筛选项。 */
1290
+ declare function ScuiScopeBar({ value, onChange, onRefresh, namespaceHint, hideNamespace, children }: ScuiScopeBarProps): react.JSX.Element;
1291
+ /** 「部分集群读取失败」提示:把集群返回的真实错误原样列出来。 */
1292
+ declare function ScuiFailedBanner({ failed }: {
1293
+ failed?: {
1294
+ clusterName: string;
1295
+ error: string;
1296
+ }[];
1297
+ }): react.JSX.Element | null;
1298
+ /** 最近同步时间(空值显示「未同步」)。 */
1299
+ declare const syncedAt: (iso: string) => string;
1300
+
1301
+ declare const SCUI_CLUSTERS_VIEW_KEY = "container/\u96C6\u7FA4";
1302
+
1303
+ interface ClustersPageProps {
1304
+ className?: string;
1305
+ }
1306
+ /** 集群管理:注册 / 同步 / 删除集群,行内可看实时节点清单。 */
1307
+ declare function ScuiClustersPage({ className }: ClustersPageProps): react.JSX.Element;
1308
+ /** 最近一次同步的真实时间(演示里由「同步」按钮写入)。 */
1309
+ declare const clusterSyncedLabel: (cluster: ScuiCluster) => string;
1310
+
1311
+ declare const SCUI_NODES_VIEW_KEY = "container/\u8282\u70B9";
1312
+
1313
+ interface NodesPageProps {
1314
+ className?: string;
1315
+ }
1316
+ /** 节点管理:跨集群节点一览,按集群 / 名称过滤,行内封锁与解除封锁。 */
1317
+ declare function ScuiNodesPage({ className }: NodesPageProps): react.JSX.Element;
1318
+
1319
+ declare const SCUI_NAMESPACES_VIEW_KEY = "container/\u547D\u540D\u7A7A\u95F4";
1320
+
1321
+ interface NamespacesPageProps {
1322
+ className?: string;
1323
+ }
1324
+ /** 命名空间:跨集群一览 + 名称过滤 + 删除(连带资源,二次确认)。 */
1325
+ declare function ScuiNamespacesPage({ className }: NamespacesPageProps): react.JSX.Element;
1326
+
1327
+ declare const SCUI_WORKLOADS_VIEW_KEY = "container/\u5DE5\u4F5C\u8D1F\u8F7D";
1328
+
1329
+ interface WorkloadsPageProps {
1330
+ className?: string;
1331
+ }
1332
+ /** 工作负载:副本就绪情况一览,行内重启 / 伸缩。 */
1333
+ declare function ScuiWorkloadsPage({ className }: WorkloadsPageProps): react.JSX.Element;
1334
+
1335
+ declare const SCUI_NETWORK_VIEW_KEY = "container/\u7F51\u7EDC";
1336
+
1337
+ interface NetworkPageProps {
1338
+ className?: string;
1339
+ }
1340
+ /** 网络管理:Service 与 Ingress 的地址 / 端口一览,只读。 */
1341
+ declare function ScuiNetworkPage({ className }: NetworkPageProps): react.JSX.Element;
1342
+
1343
+ declare const SCUI_STORAGE_VIEW_KEY = "container/\u5B58\u50A8";
1344
+
1345
+ interface StoragePageProps {
1346
+ className?: string;
1347
+ }
1348
+ /** 存储管理:卷的容量 / 访问模式 / 绑定关系一览,只读。 */
1349
+ declare function ScuiStoragePage({ className }: StoragePageProps): react.JSX.Element;
1350
+
1351
+ declare const SCUI_CONFIGS_VIEW_KEY = "container/\u914D\u7F6E";
1352
+
1353
+ interface ConfigsPageProps {
1354
+ className?: string;
1355
+ }
1356
+ /** 配置管理:配置目录一览;Secret 只列名称与键数量。 */
1357
+ declare function ScuiConfigsPage({ className }: ConfigsPageProps): react.JSX.Element;
1358
+
1359
+ declare const SCUI_DIAGNOSTICS_VIEW_KEY = "container/\u8BCA\u65AD";
1360
+
1361
+ interface DiagnosticsPageProps {
1362
+ className?: string;
1363
+ }
1364
+ /** 应用诊断:事件按时间倒序,Warning 行标红。 */
1365
+ declare function ScuiDiagnosticsPage({ className }: DiagnosticsPageProps): react.JSX.Element;
1366
+
1367
+ type CloudStatus = "online" | "offline" | "unknown";
1368
+ declare const CLOUD_STATUS_LABEL: Record<CloudStatus, string>;
1369
+ declare const CLOUD_STATUS_TONE: Record<CloudStatus, string>;
1370
+ /** 范围条只关心这三样,CF / Google 账号都满足。 */
1371
+ interface ScuiCloudAccount {
1372
+ id: string;
1373
+ name: string;
1374
+ status: CloudStatus;
1375
+ }
1376
+ interface ScuiCfAccount extends ScuiCloudAccount {
1377
+ cfEmail: string;
1378
+ status: CloudStatus;
1379
+ zoneCount: number;
1380
+ /** 最近一次校验失败的真实错误(授权失效时展示在状态下方)。 */
1381
+ lastError: string;
1382
+ lastCheckedAt: string;
1383
+ updatedBy: string;
1384
+ description: string;
1385
+ updatedAt: string;
1386
+ }
1387
+ declare const SCUI_CF_ACCOUNTS: ScuiCfAccount[];
1388
+ interface ScuiGoogleAccount extends ScuiCloudAccount {
1389
+ email: string;
1390
+ status: CloudStatus;
1391
+ usedBytes: number;
1392
+ limitBytes: number;
1393
+ lastError: string;
1394
+ lastCheckedAt: string;
1395
+ updatedBy: string;
1396
+ description: string;
1397
+ updatedAt: string;
1398
+ }
1399
+ declare const SCUI_GOOGLE_ACCOUNTS: ScuiGoogleAccount[];
1400
+ interface ScuiCfZone {
1401
+ id: string;
1402
+ accountId: string;
1403
+ name: string;
1404
+ paused: boolean;
1405
+ plan: string;
1406
+ status: string;
1407
+ }
1408
+ declare const SCUI_CF_ZONES: ScuiCfZone[];
1409
+ /** CF 的 TTL 只认 1(自动)+ 这几个固定值。 */
1410
+ declare const CF_TTL_OPTIONS: number[];
1411
+ declare const CF_RECORD_TYPES: string[];
1412
+ /** 橙云代理只对这三种类型生效。 */
1413
+ declare const CF_PROXY_TYPES: string[];
1414
+ interface ScuiCfRecord {
1415
+ id: string;
1416
+ zoneId: string;
1417
+ type: string;
1418
+ name: string;
1419
+ content: string;
1420
+ ttl: number;
1421
+ proxied?: boolean;
1422
+ priority?: number;
1423
+ comment: string;
1424
+ }
1425
+ declare const SCUI_CF_RECORDS: ScuiCfRecord[];
1426
+ interface ScuiCfSetting {
1427
+ id: string;
1428
+ value: unknown;
1429
+ editable: boolean;
1430
+ modifiedOn: string;
1431
+ }
1432
+ declare const SCUI_CF_SETTINGS: ScuiCfSetting[];
1433
+ /** 设置项的中文名(CF 的 id 是英文短横线风格)。 */
1434
+ declare const CF_SETTING_LABELS: Record<string, string>;
1435
+ /** 枚举型设置的可选值。 */
1436
+ declare const CF_SETTING_OPTIONS: Record<string, {
1437
+ value: string;
1438
+ label: string;
1439
+ }[]>;
1440
+ interface ScuiCfCert {
1441
+ id: string;
1442
+ expiresOn: string;
1443
+ }
1444
+ interface ScuiCfPack {
1445
+ id: string;
1446
+ zoneId: string;
1447
+ type: string;
1448
+ hosts: string[];
1449
+ status: string;
1450
+ certificateAuthority: string;
1451
+ certificates: ScuiCfCert[];
1452
+ }
1453
+ declare const SCUI_CF_PACKS: ScuiCfPack[];
1454
+ interface ScuiCfOriginCert {
1455
+ id: string;
1456
+ zoneId: string;
1457
+ hostnames: string[];
1458
+ requestType: string;
1459
+ requestedValidity: number;
1460
+ expiresOn: string;
1461
+ certificate: string;
1462
+ privateKey: string;
1463
+ }
1464
+ declare const SCUI_CF_ORIGIN_CERTS: ScuiCfOriginCert[];
1465
+ /** CF 证书状态 → 标签样式。 */
1466
+ declare const CF_CERT_STATUS_TONE: Record<string, string>;
1467
+ /** 签发时生成的演示证书 / 私钥。 */
1468
+ declare const demoOriginCert: (hostnames: string[], requestType: string) => ScuiCfOriginCert;
1469
+ interface ScuiDriveFile {
1470
+ id: string;
1471
+ parentId: string;
1472
+ name: string;
1473
+ isFolder: boolean;
1474
+ mimeType: string;
1475
+ size: number;
1476
+ modifiedTime: string;
1477
+ webViewLink: string;
1478
+ }
1479
+ declare const SCUI_DRIVE_FILES: ScuiDriveFile[];
1480
+ /** 文件图标:文件夹、图片、视频、压缩包各有各的样子。 */
1481
+ declare function driveIcon(file: ScuiDriveFile): string;
1482
+ /** 字节转成人话(容量列用,GB / TB 都要能显示)。 */
1483
+ declare function formatSize(bytes: number): string;
1484
+ interface ScuiCloudBarProps {
1485
+ accounts: ScuiCloudAccount[];
1486
+ accountId: string;
1487
+ onAccount: (id: string) => void;
1488
+ accountLabel?: string;
1489
+ accountPlaceholder?: string;
1490
+ /** 传了 zone 相关属性才渲染域名下拉(账号页、云盘页没有域名)。 */
1491
+ zones?: {
1492
+ id: string;
1493
+ name: string;
1494
+ paused?: boolean;
1495
+ }[];
1496
+ zoneId?: string;
1497
+ onZone?: (id: string) => void;
1498
+ zoneLabel?: string;
1499
+ zonePlaceholder?: string;
1500
+ onRefresh?: () => void;
1501
+ /** 追加在范围条上的页面自己的筛选项。 */
1502
+ children?: ReactNode;
1503
+ /** 右侧的补充说明(例如「klun.dev · 共 17 条解析」)。 */
1504
+ hint?: ReactNode;
1505
+ }
1506
+ /** 云服务页面共用的范围条:账号(+ 域名)+ 页面筛选项 + 刷新。 */
1507
+ declare function ScuiCloudBar({ accounts, accountId, onAccount, accountLabel, accountPlaceholder, zones, zoneId, onZone, zoneLabel, zonePlaceholder, onRefresh, children, hint, }: ScuiCloudBarProps): react.JSX.Element;
1508
+
1509
+ declare const SCUI_CF_ACCOUNTS_VIEW_KEY = "cloud/Cloudflare \u8D26\u53F7";
1510
+
1511
+ interface CfAccountsPageProps {
1512
+ className?: string;
1513
+ }
1514
+ /** Cloudflare 账号连接:连接 / 校验 / 重新授权 / 编辑 / 断开。 */
1515
+ declare function ScuiCfAccountsPage({ className }: CfAccountsPageProps): react.JSX.Element;
1516
+
1517
+ declare const SCUI_CF_DNS_VIEW_KEY = "cloud/DNS \u89E3\u6790";
1518
+
1519
+ interface CfDnsPageProps {
1520
+ className?: string;
1521
+ }
1522
+ /** DNS 解析:账号 + 域名范围内的记录管理(类型过滤 + 分页由 CF 侧完成)。 */
1523
+ declare function ScuiCfDnsPage({ className }: CfDnsPageProps): react.JSX.Element;
1524
+
1525
+ declare const SCUI_CF_SETTINGS_VIEW_KEY = "cloud/\u7AD9\u70B9\u8BBE\u7F6E";
1526
+
1527
+ /** 展示值:字符串直接显示,对象 / 数组按 JSON 原样显示。 */
1528
+ declare const renderSettingValue: (value: unknown) => string;
1529
+ interface CfSettingsPageProps {
1530
+ className?: string;
1531
+ }
1532
+ /** 站点设置:SSL / 强制 HTTPS / 压缩 / TLS 版本等,改完即时生效。 */
1533
+ declare function ScuiCfSettingsPage({ className }: CfSettingsPageProps): react.JSX.Element;
1534
+
1535
+ declare const SCUI_CF_CERTS_VIEW_KEY = "cloud/\u8BC1\u4E66";
1536
+
1537
+ interface CfCertsPageProps {
1538
+ className?: string;
1539
+ }
1540
+ /** 证书:边缘证书只读 + 源站证书签发 / 查看 / 吊销。 */
1541
+ declare function ScuiCfCertsPage({ className }: CfCertsPageProps): react.JSX.Element;
1542
+
1543
+ declare const SCUI_GOOGLE_ACCOUNTS_VIEW_KEY = "cloud/Google \u8D26\u53F7";
1544
+
1545
+ interface GoogleAccountsPageProps {
1546
+ className?: string;
1547
+ }
1548
+ /** Google 账号连接:连接 / 校验(带回容量)/ 重新授权 / 编辑 / 断开。 */
1549
+ declare function ScuiGoogleAccountsPage({ className }: GoogleAccountsPageProps): react.JSX.Element;
1550
+
1551
+ declare const SCUI_DRIVE_VIEW_KEY = "cloud/\u4E91\u76D8";
1552
+
1553
+ interface DrivePageProps {
1554
+ className?: string;
1555
+ }
1556
+ /** Google 云盘:账号内的文件夹浏览 + 文件管理。 */
1557
+ declare function ScuiDrivePage({ className }: DrivePageProps): react.JSX.Element;
1558
+
1559
+ declare const SCUI_RELEASES_VIEW_KEY = "system/\u7248\u672C\u53D1\u5E03";
1560
+ type ReleaseApp = "kc" | "agent";
1561
+ /** 两个应用的展示信息(产物文件名前缀与服务端约定一致)。 */
1562
+ declare const RELEASE_APPS: Record<ReleaseApp, {
1563
+ label: string;
1564
+ artifact: string;
1565
+ hint: string;
1566
+ }>;
1567
+ interface ScuiArtifact {
1568
+ file: string;
1569
+ os: string;
1570
+ arch: string;
1571
+ size: number;
1572
+ sha256: string;
1573
+ }
1574
+ interface ScuiRelease {
1575
+ app: ReleaseApp;
1576
+ version: string;
1577
+ status: "active" | "disabled";
1578
+ upgradePolicy: "required" | "optional";
1579
+ publishedBy: string;
1580
+ createdAt: string;
1581
+ changelog: string;
1582
+ artifacts: ScuiArtifact[];
1583
+ }
1584
+ declare const SCUI_RELEASES: ScuiRelease[];
1585
+ /** 更新日志摘要:取第一行正文(跳过 Markdown 标题行)。 */
1586
+ declare function releaseSummary(changelog: string): string;
1587
+ /** 最新版 = 该应用里 status=active 且版本号最高的那个(与客户端判定一致)。 */
1588
+ declare function latestRelease(rows: ScuiRelease[], app: ReleaseApp): ScuiRelease | undefined;
1589
+ interface ReleasesPageProps {
1590
+ className?: string;
1591
+ }
1592
+ /** 版本管理:两个应用各自的版本列表 + 发布 / 停用 / 编辑日志 / 删除。 */
1593
+ declare function ScuiReleasesPage({ className }: ReleasesPageProps): react.JSX.Element;
1594
+
1595
+ declare const SCUI_CONFIG_CENTER_VIEW_KEY = "system/\u914D\u7F6E\u4E2D\u5FC3";
1596
+ type ConfigScope = "user" | "global";
1597
+ /** 敏感项在列表里的占位(服务端不下发明文)。 */
1598
+ declare const SECRET_MASK = "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022";
1599
+ interface ScuiConfigItem {
1600
+ id: string;
1601
+ scope: ConfigScope;
1602
+ key: string;
1603
+ value: string;
1604
+ isSecret: boolean;
1605
+ description: string;
1606
+ updatedAt: string;
1607
+ updatedBy: string;
1608
+ }
1609
+ declare const configGroupOf: (key: string) => string;
1610
+ declare const configGroupLabel: (prefix: string) => string;
1611
+ declare const SCUI_CONFIG_ITEMS: ScuiConfigItem[];
1612
+ interface ConfigCenterPageProps {
1613
+ className?: string;
1614
+ /** 当前登录用户是否有全局配置的编辑权(演示里默认有)。 */
1615
+ canManageGlobal?: boolean;
1616
+ }
1617
+ /** 配置中心:个人 / 全局两个范围,敏感项只显示「已配置(不回显)」。 */
1618
+ declare function ScuiConfigCenterPage({ className, canManageGlobal }: ConfigCenterPageProps): react.JSX.Element;
1619
+
1620
+ declare const SCUI_SETTINGS_VIEW_KEY = "system/\u8BBE\u7F6E";
1621
+ type SettingsTab = "profile" | "appearance" | "security";
1622
+ interface ScuiProfile {
1623
+ name: string;
1624
+ email: string;
1625
+ title: string;
1626
+ phone: string;
1627
+ timezone: string;
1628
+ bio: string;
1629
+ role: string;
1630
+ status: string;
1631
+ username: string;
1632
+ }
1633
+ declare const SCUI_PROFILE: ScuiProfile;
1634
+ declare const SCUI_TIMEZONES: string[];
1635
+ declare const SCUI_SKIN_OPTIONS: {
1636
+ value: string;
1637
+ label: string;
1638
+ }[];
1639
+ interface ScuiLoginSession {
1640
+ id: string;
1641
+ clientIp: string;
1642
+ userAgent: string;
1643
+ issuedAt: string;
1644
+ status: "active" | "expired";
1645
+ }
1646
+ declare const SCUI_LOGIN_SESSIONS: ScuiLoginSession[];
1647
+ interface ScuiMfaStatus {
1648
+ enabled: boolean;
1649
+ confirmedAt: string;
1650
+ recoveryCodesRemaining: number;
1651
+ }
1652
+ declare const SCUI_MFA_STATUS: ScuiMfaStatus;
1653
+ interface SettingsPageProps {
1654
+ className?: string;
1655
+ }
1656
+ /** 设置:个人资料(表单 + RBAC 摘要)、外观(真实预览)、安全(密码 / 2FA / 会话)。 */
1657
+ declare function ScuiSettingsPage({ className }: SettingsPageProps): react.JSX.Element;
1658
+
1659
+ declare const SCUI_INBOX_VIEW_KEY = "console/\u6536\u4EF6\u7BB1";
1660
+ type NotifyTone = "info" | "success" | "warning" | "danger";
1661
+ declare const NOTIFY_TONE_LABEL: Record<NotifyTone, string>;
1662
+ declare const NOTIFY_TONE_TAG: Record<NotifyTone, string>;
1663
+ interface ScuiNotification {
1664
+ id: string;
1665
+ tone: NotifyTone;
1666
+ title: string;
1667
+ body: string;
1668
+ link: string;
1669
+ isRead: boolean;
1670
+ createdAt: string;
1671
+ readAt: string;
1672
+ }
1673
+ declare const SCUI_NOTIFICATIONS: ScuiNotification[];
1674
+ /** 可发送对象(演示:启用成员列表)。 */
1675
+ declare const SCUI_INBOX_MEMBERS: string[];
1676
+ interface InboxPageProps {
1677
+ className?: string;
1678
+ }
1679
+ /** 收件箱:站内信列表 + 详情抽屉 + 写站内信。 */
1680
+ declare function ScuiInboxPage({ className }: InboxPageProps): react.JSX.Element;
1681
+
1682
+ interface ScuiPageProps {
1683
+ /** 页头标题(外壳标签已有标题时可不传)。 */
1684
+ title?: ReactNode;
1685
+ subtitle?: ReactNode;
1686
+ /** 页头右侧操作区(按钮组)。 */
1687
+ actions?: ReactNode;
1688
+ /** 左侧栏内容(树 / 列表);外层自动包 .kk-aside。 */
1689
+ aside?: ReactNode;
1690
+ /** 指标卡区;外层自动包 .kk-cards。 */
1691
+ stats?: ReactNode;
1692
+ /** 工具条左侧(筛选、批量按钮…)。 */
1693
+ tools?: ReactNode;
1694
+ /** 工具条右侧(搜索框 + 按钮);外层自动包 .kk-search。 */
1695
+ search?: ReactNode;
1696
+ /** 底部(分页器…);外层自动包 .kk-pager。 */
1697
+ footer?: ReactNode;
1698
+ className?: string;
1699
+ /** 主体内容(表格、表单、卡片…)。 */
1700
+ children: ReactNode;
1701
+ }
1702
+ /** 一页控制台页面:页头 / 指标 / 工具条 / 内容 / 分页 五段式骨架。 */
1703
+ declare function ScuiPage({ title, subtitle, actions, aside, stats, tools, search, footer, className, children, }: ScuiPageProps): react.JSX.Element;
1704
+ interface ScuiStatProps {
1705
+ label: ReactNode;
1706
+ value: ReactNode;
1707
+ hint?: ReactNode;
1708
+ tone?: "default" | "success" | "danger";
1709
+ }
1710
+ /** 指标卡(放进 <ScuiPage stats> 里)。 */
1711
+ declare function ScuiStat({ label, value, hint, tone }: ScuiStatProps): react.JSX.Element;
1712
+ interface ScuiPagerProps {
1713
+ total: number;
1714
+ page: number;
1715
+ pageSize: number;
1716
+ onChange: (page: number) => void;
1717
+ }
1718
+ /** 分页器(放进 <ScuiPage footer> 里)。 */
1719
+ declare function ScuiPager({ total, page, pageSize, onChange }: ScuiPagerProps): react.JSX.Element;
1720
+
1721
+ /** 视图 key(`<分组 key>/<菜单标签>`)→ 页面。 */
1722
+ declare const KLUN_PAGES: Record<string, ReactNode>;
1723
+ /** 默认首页 = 控制台 / 概览。 */
1724
+ declare const KLUN_HOME_VIEW: ScuiView | undefined;
1725
+ interface KlunConsoleShellProps {
1726
+ /** 打开哪个标签(视图 key 或 ScuiView);缺省打开首页。 */
1727
+ initialView?: string | ScuiView;
1728
+ /** 高度,默认撑满视口。 */
1729
+ height?: string;
1730
+ /** 覆盖页面注册表(测试或局部演示用)。 */
1731
+ pages?: Record<string, ReactNode>;
1732
+ }
1733
+ /** 控制台外壳:所有页面都从这里进(菜单 → 页面注册表)。 */
1734
+ declare function KlunConsoleShell({ initialView, height, pages }: KlunConsoleShellProps): react.JSX.Element;
1735
+
1736
+ interface ScuiShellProps {
1737
+ /** Rail groups (with their secondary menu items). Defaults to SCUI's menu. */
1738
+ menus?: ScuiMenuGroup[];
1739
+ /** Opened in the first tab and used for the 首页 breadcrumb. */
1740
+ home?: ScuiView;
1741
+ /** Tab to open first instead of `home` (e.g. a deep link into a page). */
1742
+ initialView?: ScuiView;
1743
+ /** Content for the active tab; return undefined to fall back to `children`. */
1744
+ renderView?: (view: ScuiView) => ReactNode;
1745
+ user?: {
1746
+ name: string;
1747
+ initials?: string;
1748
+ };
1749
+ /** Notification count on the bell; 0 hides the badge. */
1750
+ notifications?: number;
1751
+ /** Content of `.adminui-main` when `renderView` doesn't match. */
1752
+ children?: ReactNode;
1753
+ className?: string;
1754
+ style?: CSSProperties;
1755
+ }
1756
+ /** Element Plus accent presets offered by SCUI's 布局设置 drawer. */
1757
+ declare const SCUI_PRIMARY_COLORS: string[];
1758
+ declare const SCUI_LANGUAGES: string[];
1759
+ /**
1760
+ * SCUI-style admin shell: dark icon rail, secondary menu panel, topbar with
1761
+ * breadcrumb + actions, multi-view tag bar and the content area. Opening a menu
1762
+ * entry adds a tab; tags close individually (the home tab stays).
1763
+ */
1764
+ declare function ScuiShell({ menus, home, initialView, renderView, user, notifications, children, className, style, }: ScuiShellProps): react.JSX.Element;
1765
+
1766
+ export { AIAssistantTemplate, ALERT_CATEGORY_LABEL, ALERT_METRICS, ALL_PERMISSIONS, APP_BUSINESS_GROUPS, APP_DEPARTMENTS, ASSET_KIND_LABEL, ASSET_STATUS_LABEL, AUDIT_TONE, AccountSection, AgentChatTemplate, type AlertSeverity, type AlertStatus, ApiKeysSection, ApprovalsScreen, type ApprovalsScreenProps, AreaChart, type AreaChartProps, type AssetKind, type AssetProtocol, type AssetStatus, AuditScreen, type AuditScreenProps, BarChart, type BarChartProps, BillingSection, CATEGORIES, CF_CERT_STATUS_TONE, CF_PROXY_TYPES, CF_RECORD_TYPES, CF_SETTING_LABELS, CF_SETTING_OPTIONS, CF_TTL_OPTIONS, CLOUD_STATUS_LABEL, CLOUD_STATUS_TONE, CLUSTER_STATUS_LABEL, CLUSTER_STATUS_TONE, CalendarScreen, CalendarTemplate, type ChartTone, type CloudStatus, type ClusterStatus, type ConfigScope, CryptoTemplate, CustomersScreen, DEMO_SKINS, DEMO_TEXT, DEPARTMENTS, DashboardScreen, type DashboardScreenProps, DashboardTemplate, type DemoNotification, type DemoPageCopy, type DemoSkin, type DemoText, type DemoUser, DepartmentFilter, type DepartmentFilterProps, type DepartmentOption, DepartmentsScreen, type DepartmentsScreenProps, DonutChart, type DonutChartProps, FOLDER_ICONS, FOLDER_LABELS, FeatureFlagsScreen, INITIAL_THREADS, INITIAL_USERS, ImportExportScreen, type InboxPageProps, IntegrationsScreen, type IntegrationsScreenProps, KLUN_HOME_VIEW, KLUN_NAV, KLUN_PAGES, KLUN_VIEW_KEYS, KLUN_WEB_MENUS, KlunConsoleShell, type KlunConsoleShellProps, type KlunNavEntry, type KlunNavGroup, Kpi, type KpiProps, LABEL_COLOR, LOCALE_OPTIONS, MAIL_LABELS, MENU_PATHS, MONITOR_STATUS_LABEL, type MailAttachment, type MailFolder, type MailLabel, type MailMessage, type MailThread, type MailView, MarketingTemplate, MessagesScreen, type MessagesScreenProps, MetronicDashboardTemplate, type MetronicNavChild, type MetronicNavItem, MetronicSettingsTemplate, type MetronicSettingsTemplateProps, MetronicSidebar, type MetronicSidebarProps, MetronicTopBar, type MetronicTopBarProps, MiniStat, type MiniStatProps, type MonitorKind, type MonitorStatus, NOTIFY_TONE_LABEL, NOTIFY_TONE_TAG, NotificationsSection, type NotificationsSectionProps, type NotifyTone, OrdersScreen, type OrdersScreenProps, OverviewScreen, PageHeader, type PageHeaderProps, type PermissionOverride, PricingTemplate, type Product, type ProductDraft, type ProductStatus, ProductWizardPage, type ProductWizardPageProps, ProductsScreen, ProfileSection, type ProfileSectionProps, RECIPIENTS, RELEASE_APPS, ROLE_COLOR, ROLE_IDS, ROLE_PERMISSIONS, RTL_LOCALES, type ReleaseApp, ReportsScreen, type ReportsView, type RoleId, RoleTreeScreen, type RoleTreeScreenProps, RolesScreen, SCUI_ALERTS, SCUI_ALERTS_VIEW_KEY, SCUI_ALERT_RULES, SCUI_ALERT_RULES_VIEW_KEY, SCUI_APPLICATIONS, SCUI_APPS_VIEW_KEY, SCUI_ASSETS, SCUI_ASSETS_VIEW_KEY, SCUI_ASSET_AGENTS, SCUI_ASSET_GROUPS, SCUI_AUDIT_LOGS, SCUI_AUDIT_VIEW_KEY, SCUI_CF_ACCOUNTS, SCUI_CF_ACCOUNTS_VIEW_KEY, SCUI_CF_CERTS_VIEW_KEY, SCUI_CF_DNS_VIEW_KEY, SCUI_CF_ORIGIN_CERTS, SCUI_CF_PACKS, SCUI_CF_RECORDS, SCUI_CF_SETTINGS, SCUI_CF_SETTINGS_VIEW_KEY, SCUI_CF_ZONES, SCUI_CLUSTERS, SCUI_CLUSTERS_VIEW_KEY, SCUI_CONFIGS, SCUI_CONFIGS_VIEW_KEY, SCUI_CONFIG_CENTER_VIEW_KEY, SCUI_CONFIG_ITEMS, SCUI_CONSOLE_STATS, SCUI_CONSOLE_USER, SCUI_DASHBOARD_VIEW_KEY, SCUI_DEPARTMENTS, SCUI_DEPTS, SCUI_DEPT_VIEW_KEY, SCUI_DIAGNOSTICS_VIEW_KEY, SCUI_DICTS, SCUI_DICT_VIEW_KEY, SCUI_DRIVE_FILES, SCUI_DRIVE_VIEW_KEY, SCUI_EVENTS, SCUI_GOOGLE_ACCOUNTS, SCUI_GOOGLE_ACCOUNTS_VIEW_KEY, SCUI_HOME_VIEW, SCUI_ICONS, SCUI_INBOX_MEMBERS, SCUI_INBOX_VIEW_KEY, SCUI_K8S_FAILED, SCUI_LANGUAGES, SCUI_LIVE_SESSIONS, SCUI_LOGIN_SESSIONS, SCUI_MENUS, SCUI_MENU_DATA, SCUI_MENU_TREE, SCUI_MENU_VIEW_KEY, SCUI_MFA_STATUS, SCUI_MONITORS, SCUI_MONITORS_API_VIEW_KEY, SCUI_MONITORS_DOMAIN_VIEW_KEY, SCUI_MONITOR_PROBES, SCUI_NAMESPACES, SCUI_NAMESPACES_VIEW_KEY, SCUI_NETWORK, SCUI_NETWORK_VIEW_KEY, SCUI_NODES, SCUI_NODES_VIEW_KEY, SCUI_NOTIFICATIONS, SCUI_PERM_TREE, SCUI_PRIMARY_COLORS, SCUI_PROFILE, SCUI_RELEASES, SCUI_RELEASES_VIEW_KEY, SCUI_ROLES, SCUI_ROLE_VIEW_KEY, SCUI_SESSIONS_VIEW_KEY, SCUI_SESSION_COMMANDS, SCUI_SESSION_HISTORY, SCUI_SETTINGS_VIEW_KEY, SCUI_SKIN_OPTIONS, SCUI_STORAGE_VIEW_KEY, SCUI_TIMEZONES, SCUI_USERS, SCUI_USERS_VIEW_KEY, SCUI_VOLUMES, SCUI_WORKFLOW_NAME, SCUI_WORKFLOW_ROWS, SCUI_WORKFLOW_VIEW_KEY, SCUI_WORKLOADS, SCUI_WORKLOADS_VIEW_KEY, SECRET_MASK, SETTINGS_NAV, SEVERITY_LABEL, STATUS_COLOR, type ScuiAgent, type ScuiAlert, type ScuiAlertRule, ScuiAlertRulesPage, ScuiAlertsPage, type ScuiApplication, ScuiAppsPage, type ScuiArtifact, type ScuiAsset, type ScuiAssetGroup, ScuiAssetsPage, type ScuiAuditLog, ScuiAuditPage, type ScuiCfAccount, ScuiCfAccountsPage, ScuiCfCertsPage, ScuiCfDnsPage, type ScuiCfOriginCert, type ScuiCfPack, type ScuiCfRecord, type ScuiCfSetting, ScuiCfSettingsPage, type ScuiCfZone, type ScuiCloudAccount, ScuiCloudBar, type ScuiCluster, ScuiClustersPage, ScuiConfigCenterPage, type ScuiConfigEntry, type ScuiConfigItem, ScuiConfigsPage, type ScuiConsoleUser, type ScuiCrumb, ScuiDashboardPage, type ScuiDept, ScuiDeptPage, ScuiDiagnosticsPage, type ScuiDictItem, ScuiDictPage, type ScuiDictType, type ScuiDriveFile, ScuiDrivePage, type ScuiEvent, ScuiFailedBanner, type ScuiGoogleAccount, ScuiGoogleAccountsPage, ScuiIcon, type ScuiIconName, ScuiInboxPage, type ScuiK8sObject, type ScuiLoginSession, type ScuiMenuApi, type ScuiMenuChild, type ScuiMenuGroup, type ScuiMenuItem, ScuiMenuPage, type ScuiMenuType, type ScuiMfaStatus, type ScuiMonitor, type ScuiMonitorProbe, ScuiMonitorsPage, type ScuiNamespace, ScuiNamespacesPage, ScuiNetworkPage, type ScuiNode, ScuiNodesPage, type ScuiNotification, ScuiPage, type ScuiPageProps, ScuiPager, type ScuiPagerProps, type ScuiPermNode, type ScuiProfile, type ScuiRelease, ScuiReleasesPage, type ScuiRole, ScuiRolePage, type ScuiScope, ScuiScopeBar, ScuiSessionsPage, ScuiSettingsPage, ScuiShell, type ScuiShellProps, ScuiStat, type ScuiStatProps, ScuiStoragePage, type ScuiTerminalCommand, type ScuiTerminalSession, type ScuiUser, ScuiUsersPage, type ScuiView, type ScuiVolume, ScuiWorkflowPage, type ScuiWorkload, ScuiWorkloadsPage, SearchScreen, type SearchScreenProps, type SettingsNavItem, SettingsScreen, type SettingsSectionKey, type SettingsTab, SettingsTemplate, Sidebar, type SidebarProps, type SidebarUser, Sparkline, type SparklineProps, TasksScreen, TemplatesScreen, TicketsScreen, type TicketsScreenProps, TopBar, type TopBarProps, USER_STATUSES, USER_STATUS_COLOR, type UserActivity, UserDetailDrawer, type UserDetailDrawerProps, type UserSession, type UserStatus, UsersScreen, WF_NODE_COLORS, WORKLOAD_LABEL, type WfBranch, type WfBranchRow, type WfRow, type WfStep, type WfStepKind, type WorkloadKind, WorkspaceSecurityScreen, type WorkspaceSecurityScreenProps, certDaysLeft, clusterSyncedLabel, configGroupLabel, configGroupOf, connectCommand, demoOriginCert, demoTextFor, departmentChildren, departmentDepth, departmentIdsWithChildren, departmentName, departmentPath, deriveStatus, driveIcon, effectivePermissions, emptyDraft, formatBytes, formatDateTime, formatDuration, formatMB, formatNumber, formatSize, formatUptime, groupIds, initials, klunViewKey, latestRelease, releaseSummary, renderSettingValue, rolePermissions, shortAgent, shortDateTime, syncedAt, totalUnread, useDemoText, viewOf };