@hkyhy/marsun-components-core 0.1.53 → 0.1.56

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 CHANGED
@@ -70,6 +70,12 @@ AgentHub / File 预览 / Llm 走子路径,避免无相关产品首包拖入重
70
70
 
71
71
  包根仍 re-export L2(迁移期 `@deprecated`);新代码请用子路径。
72
72
 
73
+ ### Layout(v0.1.56+)
74
+
75
+ `AgentAppShell` 侧栏折叠改为边缘竖条 tab(主题色);`UserProfileCard` / brand 折叠态水平居中。
76
+
77
+ > 0.1.54/0.1.55 因 typecheck 未发布;以 **0.1.56** 为准。
78
+
73
79
  项目可在 `src/styles/tokens.css` 扩展领域变量,详见 showcase 内 `frontend-dev-spec` → `theme.md`。
74
80
 
75
81
  ## 设计原则
@@ -1,20 +1,20 @@
1
1
  const e = {
2
- "user-profile-wrap": "_user-profile-wrap_kjmjz_2",
3
- "user-profile-wrap--collapsed": "_user-profile-wrap--collapsed_kjmjz_9",
4
- "user-profile-shell": "_user-profile-shell_kjmjz_14",
5
- "user-profile-shell--collapsed": "_user-profile-shell--collapsed_kjmjz_27",
6
- "user-profile-row": "_user-profile-row_kjmjz_32",
7
- "user-profile-row--collapsed": "_user-profile-row--collapsed_kjmjz_40",
8
- "user-profile-main": "_user-profile-main_kjmjz_47",
9
- "user-profile-extra": "_user-profile-extra_kjmjz_66",
10
- "user-profile-card": "_user-profile-card_kjmjz_99",
11
- "user-profile-card--collapsed": "_user-profile-card--collapsed_kjmjz_113",
12
- "user-profile-avatar": "_user-profile-avatar_kjmjz_118",
13
- "user-profile-meta": "_user-profile-meta_kjmjz_125",
14
- "user-profile-name": "_user-profile-name_kjmjz_130",
15
- "user-profile-name-text": "_user-profile-name-text_kjmjz_139",
16
- "user-profile-name-meta": "_user-profile-name-meta_kjmjz_150",
17
- "user-profile-sub": "_user-profile-sub_kjmjz_159"
2
+ "user-profile-wrap": "_user-profile-wrap_1v41c_2",
3
+ "user-profile-wrap--collapsed": "_user-profile-wrap--collapsed_1v41c_9",
4
+ "user-profile-shell": "_user-profile-shell_1v41c_16",
5
+ "user-profile-shell--collapsed": "_user-profile-shell--collapsed_1v41c_29",
6
+ "user-profile-row": "_user-profile-row_1v41c_34",
7
+ "user-profile-row--collapsed": "_user-profile-row--collapsed_1v41c_42",
8
+ "user-profile-main": "_user-profile-main_1v41c_49",
9
+ "user-profile-extra": "_user-profile-extra_1v41c_68",
10
+ "user-profile-card": "_user-profile-card_1v41c_101",
11
+ "user-profile-card--collapsed": "_user-profile-card--collapsed_1v41c_115",
12
+ "user-profile-avatar": "_user-profile-avatar_1v41c_120",
13
+ "user-profile-meta": "_user-profile-meta_1v41c_127",
14
+ "user-profile-name": "_user-profile-name_1v41c_132",
15
+ "user-profile-name-text": "_user-profile-name-text_1v41c_141",
16
+ "user-profile-name-meta": "_user-profile-name-meta_1v41c_152",
17
+ "user-profile-sub": "_user-profile-sub_1v41c_161"
18
18
  };
19
19
  export {
20
20
  e as default
@@ -1,102 +1,122 @@
1
- import { jsx as e, jsxs as t } from "react/jsx-runtime";
2
- import { Layout as w, Menu as y, Button as L } from "antd";
1
+ import { jsx as a, jsxs as r } from "react/jsx-runtime";
2
+ import { Layout as S, Menu as j } from "antd";
3
3
  import n from "classnames";
4
- import a from "./style.module.scss.js";
5
- import S from "../../VirtualScrollbar/VirtualScrollbar/index.js";
6
- import { PanelLeftOpen as j } from "../../Icons/PanelLeftOpen.js";
7
- import { PanelLeftClose as z } from "../../Icons/PanelLeftClose.js";
8
- const { Header: P, Sider: B } = w, F = ({
4
+ import e from "./style.module.scss.js";
5
+ import z from "../../VirtualScrollbar/VirtualScrollbar/index.js";
6
+ import { ChevronRight as L } from "../../Icons/ChevronRight.js";
7
+ import { ChevronLeft as W } from "../../Icons/ChevronLeft.js";
8
+ const { Header: H, Sider: M } = S, F = ({
9
9
  brandTitle: m,
10
- brandLogo: c,
11
- brandMark: g = "A",
12
- menuItems: o,
13
- selectedKeys: d,
14
- onMenuClick: h,
15
- collapsed: l = !1,
16
- onToggleCollapsed: s,
17
- siderWidth: N = 240,
18
- siderFooter: u,
19
- headerTitle: i,
20
- headerDescription: r,
21
- headerActions: p,
22
- headerScrolled: b = !1,
23
- children: f,
24
- className: v,
25
- frameClassName: C,
26
- siderClassName: x,
27
- mainClassName: A
10
+ brandLogo: o,
11
+ brandMark: c = "A",
12
+ menuItems: h,
13
+ selectedKeys: u,
14
+ onMenuClick: N,
15
+ collapsed: t = !1,
16
+ onToggleCollapsed: i,
17
+ siderWidth: s = 240,
18
+ siderFooter: b,
19
+ headerTitle: p,
20
+ headerDescription: l,
21
+ headerActions: d,
22
+ headerScrolled: f = !1,
23
+ children: v,
24
+ className: C,
25
+ frameClassName: x,
26
+ siderClassName: A,
27
+ mainClassName: w
28
28
  }) => {
29
- const k = g.trim().charAt(0).toUpperCase() || "A";
30
- return /* @__PURE__ */ e("div", { className: n("agent-app-shell", a["agent-app-shell"], v), children: /* @__PURE__ */ t("div", { className: n("agent-app-frame", a["agent-app-frame"], C), children: [
31
- /* @__PURE__ */ t(
32
- B,
33
- {
34
- trigger: null,
35
- collapsible: !0,
36
- collapsed: l,
37
- width: N,
38
- className: n("agent-app-sider", a["agent-app-sider"], x),
39
- children: [
40
- /* @__PURE__ */ t(
41
- S,
29
+ const y = c.trim().charAt(0).toUpperCase() || "A", g = 80, k = t ? g : s;
30
+ return /* @__PURE__ */ a("div", { className: n("agent-app-shell", e["agent-app-shell"], C), children: /* @__PURE__ */ r(
31
+ "div",
32
+ {
33
+ className: n("agent-app-frame", e["agent-app-frame"], x),
34
+ style: { "--agent-sider-width": `${k}px` },
35
+ children: [
36
+ /* @__PURE__ */ r(
37
+ M,
38
+ {
39
+ trigger: null,
40
+ collapsible: !0,
41
+ collapsed: t,
42
+ collapsedWidth: g,
43
+ width: s,
44
+ className: n("agent-app-sider", e["agent-app-sider"], A),
45
+ children: [
46
+ /* @__PURE__ */ r(
47
+ z,
48
+ {
49
+ wrapperClassName: n("agent-sider-scroll", e["agent-sider-scroll"]),
50
+ children: [
51
+ /* @__PURE__ */ r(
52
+ "div",
53
+ {
54
+ className: n(
55
+ "agent-sider-brand",
56
+ e["agent-sider-brand"],
57
+ t && e["agent-sider-brand--collapsed"]
58
+ ),
59
+ children: [
60
+ o ?? /* @__PURE__ */ a("span", { className: e["agent-sider-logo"], children: y }),
61
+ t ? null : /* @__PURE__ */ a("h1", { className: e["agent-sider-title"], children: m })
62
+ ]
63
+ }
64
+ ),
65
+ /* @__PURE__ */ a(
66
+ j,
67
+ {
68
+ mode: "inline",
69
+ inlineCollapsed: t,
70
+ selectedKeys: u,
71
+ items: h,
72
+ onClick: N,
73
+ className: n("agent-app-menu", e["agent-app-menu"])
74
+ }
75
+ )
76
+ ]
77
+ }
78
+ ),
79
+ b
80
+ ]
81
+ }
82
+ ),
83
+ i ? /* @__PURE__ */ a(
84
+ "button",
85
+ {
86
+ type: "button",
87
+ className: n(
88
+ e["agent-sider-toggle"],
89
+ t && e["agent-sider-toggle--collapsed"]
90
+ ),
91
+ onClick: i,
92
+ "aria-label": t ? "展开侧栏" : "收起侧栏",
93
+ "aria-expanded": !t,
94
+ children: t ? /* @__PURE__ */ a(L, { size: 14 }) : /* @__PURE__ */ a(W, { size: 14 })
95
+ }
96
+ ) : null,
97
+ /* @__PURE__ */ r("div", { className: n("agent-app-main", e["agent-app-main"], w), children: [
98
+ /* @__PURE__ */ r(
99
+ H,
42
100
  {
43
- wrapperClassName: n("agent-sider-scroll", a["agent-sider-scroll"]),
101
+ className: n(
102
+ e["agent-page-topbar"],
103
+ f && e["agent-page-topbar--scrolled"],
104
+ l ? e["agent-page-topbar--with-description"] : void 0
105
+ ),
44
106
  children: [
45
- /* @__PURE__ */ t("div", { className: n("agent-sider-brand", a["agent-sider-brand"]), children: [
46
- c ?? /* @__PURE__ */ e("span", { className: a["agent-sider-logo"], children: k }),
47
- l ? null : /* @__PURE__ */ e("h1", { className: a["agent-sider-title"], children: m })
48
- ] }),
49
- /* @__PURE__ */ e(
50
- y,
51
- {
52
- mode: "inline",
53
- inlineCollapsed: l,
54
- selectedKeys: d,
55
- items: o,
56
- onClick: h,
57
- className: n("agent-app-menu", a["agent-app-menu"])
58
- }
59
- )
107
+ /* @__PURE__ */ a("div", { className: e["agent-page-topbar-leading"], children: p ? /* @__PURE__ */ r("div", { className: e["agent-page-topbar-meta"], children: [
108
+ /* @__PURE__ */ a("h1", { className: e["agent-page-topbar-title"], children: p }),
109
+ l ? /* @__PURE__ */ a("p", { className: e["agent-page-topbar-description"], children: l }) : null
110
+ ] }) : null }),
111
+ d ? /* @__PURE__ */ a("div", { className: e["agent-page-topbar-actions"], children: d }) : null
60
112
  ]
61
113
  }
62
114
  ),
63
- u
64
- ]
65
- }
66
- ),
67
- /* @__PURE__ */ t("div", { className: n("agent-app-main", a["agent-app-main"], A), children: [
68
- /* @__PURE__ */ t(
69
- P,
70
- {
71
- className: n(
72
- a["agent-page-topbar"],
73
- b && a["agent-page-topbar--scrolled"],
74
- r ? a["agent-page-topbar--with-description"] : void 0
75
- ),
76
- children: [
77
- /* @__PURE__ */ t("div", { className: a["agent-page-topbar-leading"], children: [
78
- s ? /* @__PURE__ */ e(
79
- L,
80
- {
81
- type: "text",
82
- className: a["agent-sider-toggle-btn"],
83
- icon: l ? /* @__PURE__ */ e(j, { size: 18 }) : /* @__PURE__ */ e(z, { size: 18 }),
84
- onClick: s,
85
- "aria-label": l ? "展开侧栏" : "收起侧栏"
86
- }
87
- ) : null,
88
- i ? /* @__PURE__ */ t("div", { className: a["agent-page-topbar-meta"], children: [
89
- /* @__PURE__ */ e("h1", { className: a["agent-page-topbar-title"], children: i }),
90
- r ? /* @__PURE__ */ e("p", { className: a["agent-page-topbar-description"], children: r }) : null
91
- ] }) : null
92
- ] }),
93
- p ? /* @__PURE__ */ e("div", { className: a["agent-page-topbar-actions"], children: p }) : null
94
- ]
95
- }
96
- ),
97
- f
98
- ] })
99
- ] }) });
115
+ v
116
+ ] })
117
+ ]
118
+ }
119
+ ) });
100
120
  };
101
121
  export {
102
122
  F as default
@@ -1 +1 @@
1
- {"version":3,"file":"AgentAppShell.js","sources":["../../../../src/components/Layout/AgentAppShell/AgentAppShell.tsx"],"sourcesContent":["import { PanelLeftClose, PanelLeftOpen } from '../../Icons';\nimport { VirtualScrollbar } from '../../VirtualScrollbar';\nimport { Button, Layout, Menu } from 'antd';\nimport classNames from 'classnames';\nimport React from 'react';\nimport styles from './style.module.scss';\n\nconst { Header, Sider } = Layout;\n\n/** 菜单项:宽松 any,避免业务仓与 core 双份 antd 类型冲突 */\nexport type AgentAppShellMenuItems = any;\n\nexport type AgentAppShellProps = {\n /** 侧栏品牌标题 */\n brandTitle: string;\n /** 侧栏品牌图标(默认字母徽章用 brandMark) */\n brandLogo?: React.ReactNode;\n /** 无 brandLogo 时显示的单字/短文案徽章 */\n brandMark?: string;\n /** 侧栏菜单(antd Menu items) */\n menuItems: AgentAppShellMenuItems;\n selectedKeys?: string[];\n onMenuClick?: (info: { key: string }) => void;\n /** 侧栏是否折叠 */\n collapsed?: boolean;\n onToggleCollapsed?: () => void;\n /** 侧栏宽度(展开) */\n siderWidth?: number;\n /** 侧栏底部(如 UserProfileCard) */\n siderFooter?: React.ReactNode;\n /** 顶栏标题 */\n headerTitle?: React.ReactNode;\n /** 顶栏描述 */\n headerDescription?: React.ReactNode;\n /** 顶栏右侧操作 */\n headerActions?: React.ReactNode;\n /** 主内容区滚动后顶栏毛玻璃 */\n headerScrolled?: boolean;\n /** 主内容 */\n children: React.ReactNode;\n className?: string;\n /** 根节点额外 class(兼容业务全局选择器) */\n frameClassName?: string;\n siderClassName?: string;\n mainClassName?: string;\n};\n\n/**\n * Agent 业务壳:左 sider(品牌 + 菜单 + 底部槽)+ 右主区(顶栏 + children)。\n * 纯 UI;菜单数据、鉴权、路由由业务注入。\n */\nconst AgentAppShell: React.FC<AgentAppShellProps> = ({\n brandTitle,\n brandLogo,\n brandMark = 'A',\n menuItems,\n selectedKeys,\n onMenuClick,\n collapsed = false,\n onToggleCollapsed,\n siderWidth = 240,\n siderFooter,\n headerTitle,\n headerDescription,\n headerActions,\n headerScrolled = false,\n children,\n className,\n frameClassName,\n siderClassName,\n mainClassName,\n}) => {\n const mark = brandMark.trim().charAt(0).toUpperCase() || 'A';\n\n return (\n <div className={classNames('agent-app-shell', styles['agent-app-shell'], className)}>\n <div className={classNames('agent-app-frame', styles['agent-app-frame'], frameClassName)}>\n <Sider\n trigger={null}\n collapsible\n collapsed={collapsed}\n width={siderWidth}\n className={classNames('agent-app-sider', styles['agent-app-sider'], siderClassName)}\n >\n <VirtualScrollbar\n wrapperClassName={classNames('agent-sider-scroll', styles['agent-sider-scroll'])}\n >\n <div className={classNames('agent-sider-brand', styles['agent-sider-brand'])}>\n {brandLogo ?? <span className={styles['agent-sider-logo']}>{mark}</span>}\n {!collapsed ? <h1 className={styles['agent-sider-title']}>{brandTitle}</h1> : null}\n </div>\n <Menu\n mode=\"inline\"\n inlineCollapsed={collapsed}\n selectedKeys={selectedKeys}\n items={menuItems as React.ComponentProps<typeof Menu>['items']}\n onClick={onMenuClick as React.ComponentProps<typeof Menu>['onClick']}\n className={classNames('agent-app-menu', styles['agent-app-menu'])}\n />\n </VirtualScrollbar>\n {siderFooter}\n </Sider>\n\n <div className={classNames('agent-app-main', styles['agent-app-main'], mainClassName)}>\n <Header\n className={classNames(\n styles['agent-page-topbar'],\n headerScrolled && styles['agent-page-topbar--scrolled'],\n headerDescription ? styles['agent-page-topbar--with-description'] : undefined,\n )}\n >\n <div className={styles['agent-page-topbar-leading']}>\n {onToggleCollapsed ? (\n <Button\n type=\"text\"\n className={styles['agent-sider-toggle-btn']}\n icon={collapsed ? <PanelLeftOpen size={18} /> : <PanelLeftClose size={18} />}\n onClick={onToggleCollapsed}\n aria-label={collapsed ? '展开侧栏' : '收起侧栏'}\n />\n ) : null}\n {headerTitle ? (\n <div className={styles['agent-page-topbar-meta']}>\n <h1 className={styles['agent-page-topbar-title']}>{headerTitle}</h1>\n {headerDescription ? (\n <p className={styles['agent-page-topbar-description']}>{headerDescription}</p>\n ) : null}\n </div>\n ) : null}\n </div>\n {headerActions ? (\n <div className={styles['agent-page-topbar-actions']}>{headerActions}</div>\n ) : null}\n </Header>\n {children}\n </div>\n </div>\n </div>\n );\n};\n\nexport default AgentAppShell;\n"],"names":["Header","Sider","Layout","AgentAppShell","brandTitle","brandLogo","brandMark","menuItems","selectedKeys","onMenuClick","collapsed","onToggleCollapsed","siderWidth","siderFooter","headerTitle","headerDescription","headerActions","headerScrolled","children","className","frameClassName","siderClassName","mainClassName","mark","classNames","styles","jsxs","VirtualScrollbar","jsx","Menu","Button","PanelLeftOpen","PanelLeftClose"],"mappings":"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"}
1
+ {"version":3,"file":"AgentAppShell.js","sources":["../../../../src/components/Layout/AgentAppShell/AgentAppShell.tsx"],"sourcesContent":["import { ChevronLeft, ChevronRight } from '../../Icons';\nimport { VirtualScrollbar } from '../../VirtualScrollbar';\nimport { Layout, Menu } from 'antd';\nimport classNames from 'classnames';\nimport React from 'react';\nimport styles from './style.module.scss';\n\nconst { Header, Sider } = Layout;\n\n/** 菜单项:宽松 any,避免业务仓与 core 双份 antd 类型冲突 */\nexport type AgentAppShellMenuItems = any;\n\nexport type AgentAppShellProps = {\n /** 侧栏品牌标题 */\n brandTitle: string;\n /** 侧栏品牌图标(默认字母徽章用 brandMark) */\n brandLogo?: React.ReactNode;\n /** 无 brandLogo 时显示的单字/短文案徽章 */\n brandMark?: string;\n /** 侧栏菜单(antd Menu items) */\n menuItems: AgentAppShellMenuItems;\n selectedKeys?: string[];\n onMenuClick?: (info: { key: string }) => void;\n /** 侧栏是否折叠 */\n collapsed?: boolean;\n onToggleCollapsed?: () => void;\n /** 侧栏宽度(展开) */\n siderWidth?: number;\n /** 侧栏底部(如 UserProfileCard) */\n siderFooter?: React.ReactNode;\n /** 顶栏标题 */\n headerTitle?: React.ReactNode;\n /** 顶栏描述 */\n headerDescription?: React.ReactNode;\n /** 顶栏右侧操作 */\n headerActions?: React.ReactNode;\n /** 主内容区滚动后顶栏毛玻璃 */\n headerScrolled?: boolean;\n /** 主内容 */\n children: React.ReactNode;\n className?: string;\n /** 根节点额外 class(兼容业务全局选择器) */\n frameClassName?: string;\n siderClassName?: string;\n mainClassName?: string;\n};\n\n/**\n * Agent 业务壳:左 sider(品牌 + 菜单 + 底部槽)+ 右主区(顶栏 + children)。\n * 纯 UI;菜单数据、鉴权、路由由业务注入。\n */\nconst AgentAppShell: React.FC<AgentAppShellProps> = ({\n brandTitle,\n brandLogo,\n brandMark = 'A',\n menuItems,\n selectedKeys,\n onMenuClick,\n collapsed = false,\n onToggleCollapsed,\n siderWidth = 240,\n siderFooter,\n headerTitle,\n headerDescription,\n headerActions,\n headerScrolled = false,\n children,\n className,\n frameClassName,\n siderClassName,\n mainClassName,\n}) => {\n const mark = brandMark.trim().charAt(0).toUpperCase() || 'A';\n const siderCollapsedWidth = 80;\n const siderActualWidth = collapsed ? siderCollapsedWidth : siderWidth;\n\n return (\n <div className={classNames('agent-app-shell', styles['agent-app-shell'], className)}>\n <div\n className={classNames('agent-app-frame', styles['agent-app-frame'], frameClassName)}\n style={{ '--agent-sider-width': `${siderActualWidth}px` } as React.CSSProperties}\n >\n <Sider\n trigger={null}\n collapsible\n collapsed={collapsed}\n collapsedWidth={siderCollapsedWidth}\n width={siderWidth}\n className={classNames('agent-app-sider', styles['agent-app-sider'], siderClassName)}\n >\n <VirtualScrollbar\n wrapperClassName={classNames('agent-sider-scroll', styles['agent-sider-scroll'])}\n >\n <div\n className={classNames(\n 'agent-sider-brand',\n styles['agent-sider-brand'],\n collapsed && styles['agent-sider-brand--collapsed'],\n )}\n >\n {brandLogo ?? <span className={styles['agent-sider-logo']}>{mark}</span>}\n {!collapsed ? <h1 className={styles['agent-sider-title']}>{brandTitle}</h1> : null}\n </div>\n <Menu\n mode=\"inline\"\n inlineCollapsed={collapsed}\n selectedKeys={selectedKeys}\n items={menuItems as React.ComponentProps<typeof Menu>['items']}\n onClick={onMenuClick as React.ComponentProps<typeof Menu>['onClick']}\n className={classNames('agent-app-menu', styles['agent-app-menu'])}\n />\n </VirtualScrollbar>\n {siderFooter}\n </Sider>\n\n {onToggleCollapsed ? (\n <button\n type=\"button\"\n className={classNames(\n styles['agent-sider-toggle'],\n collapsed && styles['agent-sider-toggle--collapsed'],\n )}\n onClick={onToggleCollapsed}\n aria-label={collapsed ? '展开侧栏' : '收起侧栏'}\n aria-expanded={!collapsed}\n >\n {collapsed ? <ChevronRight size={14} /> : <ChevronLeft size={14} />}\n </button>\n ) : null}\n\n <div className={classNames('agent-app-main', styles['agent-app-main'], mainClassName)}>\n <Header\n className={classNames(\n styles['agent-page-topbar'],\n headerScrolled && styles['agent-page-topbar--scrolled'],\n headerDescription ? styles['agent-page-topbar--with-description'] : undefined,\n )}\n >\n <div className={styles['agent-page-topbar-leading']}>\n {headerTitle ? (\n <div className={styles['agent-page-topbar-meta']}>\n <h1 className={styles['agent-page-topbar-title']}>{headerTitle}</h1>\n {headerDescription ? (\n <p className={styles['agent-page-topbar-description']}>{headerDescription}</p>\n ) : null}\n </div>\n ) : null}\n </div>\n {headerActions ? (\n <div className={styles['agent-page-topbar-actions']}>{headerActions}</div>\n ) : null}\n </Header>\n {children}\n </div>\n </div>\n </div>\n );\n};\n\nexport default AgentAppShell;\n"],"names":["Header","Sider","Layout","AgentAppShell","brandTitle","brandLogo","brandMark","menuItems","selectedKeys","onMenuClick","collapsed","onToggleCollapsed","siderWidth","siderFooter","headerTitle","headerDescription","headerActions","headerScrolled","children","className","frameClassName","siderClassName","mainClassName","mark","siderCollapsedWidth","siderActualWidth","jsx","classNames","styles","jsxs","VirtualScrollbar","Menu","ChevronRight","ChevronLeft"],"mappings":";;;;;;;AAOA,MAAM,EAAE,QAAAA,GAAQ,OAAAC,EAAA,IAAUC,GA4CpBC,IAA8C,CAAC;AAAA,EACnD,YAAAC;AAAA,EACA,WAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,WAAAC;AAAA,EACA,cAAAC;AAAA,EACA,aAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,mBAAAC;AAAA,EACA,YAAAC,IAAa;AAAA,EACb,aAAAC;AAAA,EACA,aAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,eAAAC;AAAA,EACA,gBAAAC,IAAiB;AAAA,EACjB,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,eAAAC;AACF,MAAM;AACJ,QAAMC,IAAOjB,EAAU,KAAA,EAAO,OAAO,CAAC,EAAE,iBAAiB,KACnDkB,IAAsB,IACtBC,IAAmBf,IAAYc,IAAsBZ;AAE3D,SACE,gBAAAc,EAAC,SAAI,WAAWC,EAAW,mBAAmBC,EAAO,iBAAiB,GAAGT,CAAS,GAChF,UAAA,gBAAAU;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWF,EAAW,mBAAmBC,EAAO,iBAAiB,GAAGR,CAAc;AAAA,MAClF,OAAO,EAAE,uBAAuB,GAAGK,CAAgB,KAAA;AAAA,MAEnD,UAAA;AAAA,QAAA,gBAAAI;AAAA,UAAC5B;AAAA,UAAA;AAAA,YACC,SAAS;AAAA,YACT,aAAW;AAAA,YACX,WAAAS;AAAA,YACA,gBAAgBc;AAAA,YAChB,OAAOZ;AAAA,YACP,WAAWe,EAAW,mBAAmBC,EAAO,iBAAiB,GAAGP,CAAc;AAAA,YAElF,UAAA;AAAA,cAAA,gBAAAQ;AAAA,gBAACC;AAAA,gBAAA;AAAA,kBACC,kBAAkBH,EAAW,sBAAsBC,EAAO,oBAAoB,CAAC;AAAA,kBAE/E,UAAA;AAAA,oBAAA,gBAAAC;AAAA,sBAAC;AAAA,sBAAA;AAAA,wBACC,WAAWF;AAAA,0BACT;AAAA,0BACAC,EAAO,mBAAmB;AAAA,0BAC1BlB,KAAakB,EAAO,8BAA8B;AAAA,wBAAA;AAAA,wBAGnD,UAAA;AAAA,0BAAAvB,uBAAc,QAAA,EAAK,WAAWuB,EAAO,kBAAkB,GAAI,UAAAL,GAAK;AAAA,0BAC/Db,IAA4E,OAAhE,gBAAAgB,EAAC,MAAA,EAAG,WAAWE,EAAO,mBAAmB,GAAI,UAAAxB,EAAA,CAAW;AAAA,wBAAQ;AAAA,sBAAA;AAAA,oBAAA;AAAA,oBAEhF,gBAAAsB;AAAA,sBAACK;AAAA,sBAAA;AAAA,wBACC,MAAK;AAAA,wBACL,iBAAiBrB;AAAA,wBACjB,cAAAF;AAAA,wBACA,OAAOD;AAAA,wBACP,SAASE;AAAA,wBACT,WAAWkB,EAAW,kBAAkBC,EAAO,gBAAgB,CAAC;AAAA,sBAAA;AAAA,oBAAA;AAAA,kBAClE;AAAA,gBAAA;AAAA,cAAA;AAAA,cAEDf;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAGFF,IACC,gBAAAe;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,WAAWC;AAAA,cACTC,EAAO,oBAAoB;AAAA,cAC3BlB,KAAakB,EAAO,+BAA+B;AAAA,YAAA;AAAA,YAErD,SAASjB;AAAA,YACT,cAAYD,IAAY,SAAS;AAAA,YACjC,iBAAe,CAACA;AAAA,YAEf,UAAAA,sBAAasB,GAAA,EAAa,MAAM,IAAI,IAAK,gBAAAN,EAACO,GAAA,EAAY,MAAM,GAAA,CAAI;AAAA,UAAA;AAAA,QAAA,IAEjE;AAAA,QAEJ,gBAAAJ,EAAC,SAAI,WAAWF,EAAW,kBAAkBC,EAAO,gBAAgB,GAAGN,CAAa,GAClF,UAAA;AAAA,UAAA,gBAAAO;AAAA,YAAC7B;AAAA,YAAA;AAAA,cACC,WAAW2B;AAAA,gBACTC,EAAO,mBAAmB;AAAA,gBAC1BX,KAAkBW,EAAO,6BAA6B;AAAA,gBACtDb,IAAoBa,EAAO,qCAAqC,IAAI;AAAA,cAAA;AAAA,cAGtE,UAAA;AAAA,gBAAA,gBAAAF,EAAC,OAAA,EAAI,WAAWE,EAAO,2BAA2B,GAC/C,UAAAd,IACC,gBAAAe,EAAC,OAAA,EAAI,WAAWD,EAAO,wBAAwB,GAC7C,UAAA;AAAA,kBAAA,gBAAAF,EAAC,MAAA,EAAG,WAAWE,EAAO,yBAAyB,GAAI,UAAAd,GAAY;AAAA,kBAC9DC,sBACE,KAAA,EAAE,WAAWa,EAAO,+BAA+B,GAAI,aAAkB,IACxE;AAAA,gBAAA,EAAA,CACN,IACE,MACN;AAAA,gBACCZ,sBACE,OAAA,EAAI,WAAWY,EAAO,2BAA2B,GAAI,aAAc,IAClE;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAELV;AAAA,QAAA,EAAA,CACH;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,GAEJ;AAEJ;"}
@@ -1,22 +1,24 @@
1
1
  const e = {
2
- "agent-app-shell": "_agent-app-shell_j0exz_1",
3
- "agent-app-frame": "_agent-app-frame_j0exz_8",
4
- "agent-app-sider": "_agent-app-sider_j0exz_16",
5
- "agent-sider-scroll": "_agent-sider-scroll_j0exz_31",
6
- "agent-sider-brand": "_agent-sider-brand_j0exz_36",
7
- "agent-sider-logo": "_agent-sider-logo_j0exz_44",
8
- "agent-sider-title": "_agent-sider-title_j0exz_58",
9
- "agent-app-menu": "_agent-app-menu_j0exz_69",
10
- "agent-app-main": "_agent-app-main_j0exz_115",
11
- "agent-page-topbar": "_agent-page-topbar_j0exz_128",
12
- "agent-page-topbar--scrolled": "_agent-page-topbar--scrolled_j0exz_143",
13
- "agent-page-topbar--with-description": "_agent-page-topbar--with-description_j0exz_148",
14
- "agent-page-topbar-leading": "_agent-page-topbar-leading_j0exz_152",
15
- "agent-page-topbar-meta": "_agent-page-topbar-meta_j0exz_160",
16
- "agent-page-topbar-title": "_agent-page-topbar-title_j0exz_164",
17
- "agent-page-topbar-description": "_agent-page-topbar-description_j0exz_173",
18
- "agent-sider-toggle-btn": "_agent-sider-toggle-btn_j0exz_180",
19
- "agent-page-topbar-actions": "_agent-page-topbar-actions_j0exz_189"
2
+ "agent-app-shell": "_agent-app-shell_q9nbx_1",
3
+ "agent-app-frame": "_agent-app-frame_q9nbx_8",
4
+ "agent-app-sider": "_agent-app-sider_q9nbx_17",
5
+ "agent-sider-scroll": "_agent-sider-scroll_q9nbx_32",
6
+ "agent-sider-brand": "_agent-sider-brand_q9nbx_37",
7
+ "agent-sider-brand--collapsed": "_agent-sider-brand--collapsed_q9nbx_44",
8
+ "agent-sider-logo": "_agent-sider-logo_q9nbx_50",
9
+ "agent-sider-title": "_agent-sider-title_q9nbx_64",
10
+ "agent-app-menu": "_agent-app-menu_q9nbx_75",
11
+ "agent-app-main": "_agent-app-main_q9nbx_121",
12
+ "agent-page-topbar": "_agent-page-topbar_q9nbx_134",
13
+ "agent-page-topbar--scrolled": "_agent-page-topbar--scrolled_q9nbx_149",
14
+ "agent-page-topbar--with-description": "_agent-page-topbar--with-description_q9nbx_154",
15
+ "agent-page-topbar-leading": "_agent-page-topbar-leading_q9nbx_158",
16
+ "agent-page-topbar-meta": "_agent-page-topbar-meta_q9nbx_166",
17
+ "agent-page-topbar-title": "_agent-page-topbar-title_q9nbx_170",
18
+ "agent-page-topbar-description": "_agent-page-topbar-description_q9nbx_179",
19
+ "agent-sider-toggle": "_agent-sider-toggle_q9nbx_186",
20
+ "agent-sider-toggle--collapsed": "_agent-sider-toggle--collapsed_q9nbx_218",
21
+ "agent-page-topbar-actions": "_agent-page-topbar-actions_q9nbx_222"
20
22
  };
21
23
  export {
22
24
  e as default
@@ -1 +1 @@
1
- {"version":3,"file":"style.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"style.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;"}