@elcrm/components 0.1.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +130 -16
- package/dist/ActionGroup-ChKFW0mt.js +27 -0
- package/dist/ActionGroup.css +1 -0
- package/dist/ActionGroup.d.ts +42 -0
- package/dist/ActionGroup.js +4 -0
- package/dist/Avatar-loGgFt72.js +113 -0
- package/dist/Avatar.d.ts +11 -2
- package/dist/Avatar.js +3 -2
- package/dist/{AvatarGroup-BAWas4pU.js → AvatarGroup-D1gnT3Od.js} +1 -1
- package/dist/AvatarGroup.d.ts +2 -1
- package/dist/AvatarGroup.js +1 -1
- package/dist/AvatarName-0BzyfpMq.js +68 -0
- package/dist/AvatarName.css +1 -1
- package/dist/AvatarName.d.ts +8 -2
- package/dist/AvatarName.js +1 -1
- package/dist/Badge-jp-9iNNL.js +28 -0
- package/dist/Badge.css +1 -1
- package/dist/Badge.d.ts +33 -17
- package/dist/Badge.js +1 -1
- package/dist/{Block-BAXh0PPp.js → Block-Bu7NEA0g.js} +1 -1
- package/dist/Block.js +1 -1
- package/dist/Card.css +1 -1
- package/dist/Card.d.ts +8 -1
- package/dist/ChatFrame-BW2TmCkZ.js +37 -0
- package/dist/ChatFrame.css +1 -0
- package/dist/ChatList.d.ts +9 -0
- package/dist/ChatList.js +7 -0
- package/dist/ChatMessages-B8rdXiK-.js +19 -0
- package/dist/ChatMessages.d.ts +9 -0
- package/dist/ChatMessages.js +4 -0
- package/dist/ChatSplit-DNnu3TNq.js +21 -0
- package/dist/CheckIcon-FdB8fMEF.js +17 -0
- package/dist/CheckIcon.d.ts +8 -0
- package/dist/{Column-DDaqX-A7.js → Column-BiogBDf8.js} +1 -1
- package/dist/Column.js +1 -1
- package/dist/Dropdown-4yUB2tk1.js +142 -0
- package/dist/Dropdown.css +1 -1
- package/dist/Dropdown.d.ts +3 -3
- package/dist/Dropdown.js +1 -1
- package/dist/Footer.css +1 -1
- package/dist/Item-D4okhsfW.js +46 -0
- package/dist/Item.css +1 -1
- package/dist/Item.d.ts +8 -1
- package/dist/Item.js +1 -1
- package/dist/ItemColumn-M7a9L8CI.js +41 -0
- package/dist/ItemColumn.css +1 -0
- package/dist/ItemColumn.d.ts +62 -0
- package/dist/ItemColumn.js +4 -0
- package/dist/Layout-mi6Ghayv.js +31 -0
- package/dist/Layout.css +1 -1
- package/dist/Layout.d.ts +28 -6
- package/dist/Layout.js +1 -1
- package/dist/Loading-DkkG7RcE.js +16 -0
- package/dist/Loading.css +1 -1
- package/dist/Loading.d.ts +1 -1
- package/dist/Loading.js +1 -1
- package/dist/Menu-DuXQv-zT.js +66 -0
- package/dist/Menu.css +1 -1
- package/dist/Menu.d.ts +15 -3
- package/dist/Menu.js +1 -1
- package/dist/NavSections-BpyZPimZ.js +79 -0
- package/dist/NavSections.css +1 -1
- package/dist/NavSections.js +1 -1
- package/dist/PageHead-DgaJ1mXY.js +31 -0
- package/dist/PageHead.css +1 -1
- package/dist/PageHead.d.ts +28 -6
- package/dist/PageHead.js +1 -1
- package/dist/{PageShell-CghThHS3.js → PageShell-D9EZiO8o.js} +13 -11
- package/dist/PageShell.css +1 -1
- package/dist/PageShell.d.ts +11 -6
- package/dist/PageShell.js +1 -1
- package/dist/Popover-D0m5JWIt.js +142 -0
- package/dist/Popover.css +1 -0
- package/dist/Popover.d.ts +54 -0
- package/dist/Popover.js +4 -0
- package/dist/PricingGroup-Czuhe81Z.js +120 -0
- package/dist/PricingGroup.css +1 -1
- package/dist/PricingGroup.js +1 -1
- package/dist/{PricingTable-DALddSwM.js → PricingTable-BuLC0opK.js} +69 -75
- package/dist/PricingTable.css +1 -1
- package/dist/PricingTable.js +1 -1
- package/dist/RadioGroup-fcXzhvMu.js +129 -0
- package/dist/RadioGroup.css +1 -1
- package/dist/RadioGroup.js +1 -1
- package/dist/{Row--HIe6vb9.js → Row-DsQOVn18.js} +1 -1
- package/dist/Row.js +1 -1
- package/dist/Sidebar-CBYq1ad6.js +107 -0
- package/dist/Sidebar.css +1 -0
- package/dist/Sidebar.d.ts +99 -0
- package/dist/Sidebar.js +4 -0
- package/dist/Stack-XkmPSswj.js +53 -0
- package/dist/Stack.css +1 -1
- package/dist/Stack.d.ts +16 -4
- package/dist/Stack.js +3 -2
- package/dist/Stat-C5iZyEoo.js +27 -0
- package/dist/Stat.css +1 -0
- package/dist/Stat.d.ts +39 -0
- package/dist/Stat.js +4 -0
- package/dist/TabSections-DN7yVJoF.js +69 -0
- package/dist/TabSections.css +1 -1
- package/dist/TabSections.js +1 -1
- package/dist/TextGroup-DmhuyMR1.js +23 -0
- package/dist/TextGroup.css +1 -0
- package/dist/TextGroup.d.ts +36 -0
- package/dist/TextGroup.js +4 -0
- package/dist/badgeText-CRzlIzi3.js +8 -0
- package/dist/badgeText.d.ts +4 -0
- package/dist/dark.css +13 -0
- package/dist/index.css +31 -17
- package/dist/index.d.ts +27 -4
- package/dist/index.es.d.ts +82 -0
- package/dist/index.es.js +83 -59
- package/dist/light.css +13 -0
- package/dist/overlayZ.d.ts +9 -0
- package/dist/rovingKeys-CGlfTtNQ.js +15 -0
- package/dist/rovingKeys.d.ts +13 -0
- package/dist/tokens.css +44 -4
- package/dist/types.d.ts +2 -0
- package/dist/useControllableValue-CWqH1kpM.js +10 -0
- package/dist/useControllableValue.d.ts +4 -0
- package/package.json +6 -2
- package/dist/Avatar-CyNXYvsa.js +0 -101
- package/dist/AvatarName-DhD3TytF.js +0 -56
- package/dist/Badge-l6nUkl-H.js +0 -22
- package/dist/Dropdown-DQlDiWCR.js +0 -168
- package/dist/Item-CaU4RW2G.js +0 -38
- package/dist/Layout-Xb3-xsmA.js +0 -18
- package/dist/Loading-ChGq9peU.js +0 -15
- package/dist/Menu-DRBHvSdJ.js +0 -40
- package/dist/NavSections-NDcIDD6H.js +0 -59
- package/dist/PageHead-Baz9BLuA.js +0 -22
- package/dist/PricingGroup-DgcdVSq8.js +0 -126
- package/dist/RadioGroup-D2UUOTkY.js +0 -138
- package/dist/Stack-b0-XWwQ1.js +0 -31
- package/dist/TabSections-DL7DufKU.js +0 -50
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import t from "react";
|
|
2
|
+
import { c as j } from "./cx-CcykAxZN.js";
|
|
3
|
+
import './Badge.css';const u = "cjr", i = "cjs", p = "cjm", w = "cjl", f = "cjn", g = "cja", N = "cju", h = "cjw", x = "cjd", z = "cjo", s = {
|
|
4
|
+
r: u,
|
|
5
|
+
s: i,
|
|
6
|
+
m: p,
|
|
7
|
+
l: w,
|
|
8
|
+
n: f,
|
|
9
|
+
a: g,
|
|
10
|
+
u: N,
|
|
11
|
+
w: h,
|
|
12
|
+
d: x,
|
|
13
|
+
o: z
|
|
14
|
+
};
|
|
15
|
+
function E(e) {
|
|
16
|
+
const {
|
|
17
|
+
tone: c = "neutral",
|
|
18
|
+
size: n = "m",
|
|
19
|
+
dot: o,
|
|
20
|
+
children: a,
|
|
21
|
+
className: r,
|
|
22
|
+
...l
|
|
23
|
+
} = e, m = c === "accent" ? s.a : c === "success" ? s.u : c === "warning" ? s.w : c === "danger" ? s.d : s.n, d = n === "s" ? s.s : n === "l" ? s.l : s.m;
|
|
24
|
+
return /* @__PURE__ */ t.createElement("span", { className: j(s.r, d, m, r), ...l }, o ? /* @__PURE__ */ t.createElement("span", { className: s.o, "aria-hidden": !0 }) : null, a);
|
|
25
|
+
}
|
|
26
|
+
export {
|
|
27
|
+
E as B
|
|
28
|
+
};
|
package/dist/Badge.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer elcrm-components{.cjr{display:inline-flex;align-items:center;justify-content:center;gap:.25rem;padding:.2rem .5rem;border-radius:999px;border:0;font-size:var(--shell-font-size-sm);font-weight:var(--shell-font-
|
|
1
|
+
@layer elcrm-components{.cjr{display:inline-flex;align-items:center;justify-content:center;gap:.25rem;padding:.2rem .5rem;border-radius:999px;border:0;font-size:var(--shell-font-size-sm);font-weight:600;line-height:1;white-space:nowrap}.cjs{padding:2px var(--shell-gap-sm);font-size:var(--shell-font-size-sm);letter-spacing:.04em}.cjm{padding:.2rem .5rem;font-size:var(--shell-font-size-sm)}.cjl{padding:.3rem .65rem;font-size:var(--shell-font-size)}.cjn{background:var(--shell-background-hover);color:var(--shell-color)}.cja{background:color-mix(in srgb,var(--shell-color-accent) 16%,transparent);color:var(--shell-color-accent)}.cju{background:color-mix(in srgb,var(--shell-color-success) 16%,transparent);color:var(--shell-color-success)}.cjw{background:color-mix(in srgb,var(--shell-color-warning) 16%,transparent);color:var(--shell-color-warning)}.cjd{background:color-mix(in srgb,var(--shell-color-danger) 16%,transparent);color:var(--shell-color-danger)}.cjo{flex-shrink:0;width:.45em;height:.45em;border-radius:50%;background:currentColor}}
|
package/dist/Badge.d.ts
CHANGED
|
@@ -1,26 +1,42 @@
|
|
|
1
1
|
import { default as React } from 'react';
|
|
2
|
+
import { UiSize } from './types';
|
|
3
|
+
/** Тон метки — те же смыслы, что у Stat */
|
|
4
|
+
export type BadgeTone = "neutral" | "accent" | "success" | "warning" | "danger";
|
|
5
|
+
/** Размер метки */
|
|
6
|
+
export type BadgeSize = UiSize;
|
|
7
|
+
export type BadgeProps = React.HTMLAttributes<HTMLSpanElement> & {
|
|
8
|
+
/**
|
|
9
|
+
* Цвет по смыслу.
|
|
10
|
+
* `neutral` | `accent` | `success` | `warning` | `danger`
|
|
11
|
+
*/
|
|
12
|
+
tone?: BadgeTone;
|
|
13
|
+
/**
|
|
14
|
+
* Размер пилюли.
|
|
15
|
+
* `s` — в строке списка; `m` — обычная; `l` — крупнее.
|
|
16
|
+
* По умолчанию `m`.
|
|
17
|
+
*/
|
|
18
|
+
size?: BadgeSize;
|
|
19
|
+
/** Точка статуса слева (цвет = `tone`) */
|
|
20
|
+
dot?: boolean;
|
|
21
|
+
/** Текст метки */
|
|
22
|
+
children?: React.ReactNode;
|
|
23
|
+
};
|
|
2
24
|
/**
|
|
3
|
-
* Компактная метка / статус (
|
|
25
|
+
* Компактная метка / статус (роль, состояние). Не заменяет Button.
|
|
4
26
|
*
|
|
5
|
-
*
|
|
27
|
+
* Props (`BadgeProps`):
|
|
28
|
+
* - `tone` — `neutral` | `accent` | `success` | `warning` | `danger`
|
|
29
|
+
* - `size` — `s` | `m` | `l` (по умолчанию `m`)
|
|
30
|
+
* - `dot` — точка слева (как online / offline)
|
|
31
|
+
* - `children` — текст метки
|
|
32
|
+
* - плюс атрибуты `span` (`className`, `style`, …)
|
|
6
33
|
*
|
|
7
34
|
* @example
|
|
8
35
|
* ```tsx
|
|
9
|
-
* <Badge tone="
|
|
10
|
-
* <Badge tone="
|
|
36
|
+
* <Badge tone="accent" size="s">ADMIN</Badge>
|
|
37
|
+
* <Badge tone="success" size="s" dot>online</Badge>
|
|
11
38
|
* ```
|
|
12
39
|
*
|
|
13
|
-
*
|
|
14
|
-
*/
|
|
15
|
-
export type BadgeProps = React.HTMLAttributes<HTMLSpanElement> & {
|
|
16
|
-
/** Визуальный тон */
|
|
17
|
-
tone?: "neutral" | "accent" | "success" | "warning" | "danger";
|
|
18
|
-
/** Текст или содержимое метки */
|
|
19
|
-
children?: React.ReactNode;
|
|
20
|
-
};
|
|
21
|
-
/**
|
|
22
|
-
* Компактная метка / статус.
|
|
23
|
-
*
|
|
24
|
-
* @see Item, Card, Avatar
|
|
40
|
+
* @see Item, Card, Stat
|
|
25
41
|
*/
|
|
26
|
-
export declare function Badge(
|
|
42
|
+
export declare function Badge(props: BadgeProps): React.JSX.Element;
|
package/dist/Badge.js
CHANGED
package/dist/Block.js
CHANGED
package/dist/Card.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer elcrm-components{.cdr{background:var(--shell-background);border:1px solid var(--shell-border);border-radius:var(--shell-radius);padding:var(--shell-padding);box-shadow:var(--shell-shadow)}.cdt{margin:0 0 var(--shell-gap-sm);font-size:var(--shell-font-size-lg);font-weight:var(--shell-font-weight);color:var(--shell-color)}}
|
|
1
|
+
@layer elcrm-components{.cdr{background:var(--shell-background);border:1px solid var(--shell-border);border-radius:var(--shell-radius);padding:var(--shell-padding);box-shadow:var(--shell-shadow);cursor:var(--card-pointer)}.cdt{margin:0 0 var(--shell-gap-sm);font-size:var(--shell-font-size-lg);font-weight:var(--shell-font-weight);color:var(--shell-color)}}
|
package/dist/Card.d.ts
CHANGED
|
@@ -12,7 +12,14 @@ import { default as React } from 'react';
|
|
|
12
12
|
* </Card>
|
|
13
13
|
* ```
|
|
14
14
|
*
|
|
15
|
-
* Токены: `--shell
|
|
15
|
+
* Токены: `--shell-*`, курсор — `--card-pointer` (по умолчанию `auto`).
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```tsx
|
|
19
|
+
* <Card title="Тенанты" style={{ ["--card-pointer" as string]: "pointer" }}>
|
|
20
|
+
* 12
|
|
21
|
+
* </Card>
|
|
22
|
+
* ```
|
|
16
23
|
*/
|
|
17
24
|
export type CardProps = React.HTMLAttributes<HTMLDivElement> & {
|
|
18
25
|
/** Заголовок карточки (если нет — только children) */
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import e from "react";
|
|
2
|
+
import { c as f } from "./cx-CcykAxZN.js";
|
|
3
|
+
import './ChatFrame.css';const p = "c8r", u = "c8l", g = "c8g", b = "c8h", h = "c8b", E = "c8f", N = "c8p", c = {
|
|
4
|
+
r: p,
|
|
5
|
+
l: u,
|
|
6
|
+
g,
|
|
7
|
+
h: b,
|
|
8
|
+
b: h,
|
|
9
|
+
f: E,
|
|
10
|
+
p: N
|
|
11
|
+
};
|
|
12
|
+
function x({
|
|
13
|
+
variant: l = "messages",
|
|
14
|
+
as: n = "section",
|
|
15
|
+
header: s,
|
|
16
|
+
footer: t,
|
|
17
|
+
children: a,
|
|
18
|
+
className: r,
|
|
19
|
+
bodyRef: o,
|
|
20
|
+
onBodyScroll: m,
|
|
21
|
+
...i
|
|
22
|
+
}) {
|
|
23
|
+
return /* @__PURE__ */ e.createElement(
|
|
24
|
+
n,
|
|
25
|
+
{
|
|
26
|
+
className: f(c.r, l === "list" ? c.l : c.g, r),
|
|
27
|
+
...i
|
|
28
|
+
},
|
|
29
|
+
s != null ? /* @__PURE__ */ e.createElement("div", { className: c.h }, s) : null,
|
|
30
|
+
/* @__PURE__ */ e.createElement("div", { className: c.b, ref: o, onScroll: m }, a),
|
|
31
|
+
t != null ? /* @__PURE__ */ e.createElement("div", { className: c.f }, t) : null
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
export {
|
|
35
|
+
x as C,
|
|
36
|
+
c as s
|
|
37
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer elcrm-components{.c8r{display:flex;flex-direction:column;box-sizing:border-box;min-width:0;min-height:0;height:100%;overflow:hidden;background:var(--chat-background);border:var(--chat-border);border-radius:var(--chat-radius)}.c8l{width:var(--chat-list-width);max-width:100%}.c8g{width:100%}.c8h{flex:0 0 auto;padding:var(--chat-header-padding);border-bottom:var(--chat-border)}.c8b{flex:1 1 auto;min-height:0;overflow:auto;padding:var(--chat-body-padding)}.c8g .c8h{padding:var(--chat-messages-header-padding)}.c8g .c8b{display:flex;flex-direction:column;padding:var(--chat-messages-body-padding)}.c8f{flex:0 0 auto;padding:var(--chat-footer-padding);border-top:var(--chat-border)}.c8g .c8f{padding:var(--chat-messages-footer-padding)}.c8p{display:flex;align-items:stretch;gap:var(--chat-split-gap);min-height:0;height:100%}.c8p>*{min-height:0}}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { ChatFrameProps } from './ChatFrame';
|
|
3
|
+
export type ChatListProps = Omit<ChatFrameProps, "variant" | "as" | "onBodyScroll">;
|
|
4
|
+
/**
|
|
5
|
+
* Колонка списка диалогов (`aside`).
|
|
6
|
+
*
|
|
7
|
+
* @see ChatMessages, ChatSplit, List, Item
|
|
8
|
+
*/
|
|
9
|
+
export declare function ChatList({ "aria-label": ariaLabel, ...rest }: ChatListProps): React.JSX.Element;
|
package/dist/ChatList.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import r from "react";
|
|
2
|
+
import { C as t } from "./ChatFrame-BW2TmCkZ.js";
|
|
3
|
+
function m({
|
|
4
|
+
"aria-label": a = "Переписка",
|
|
5
|
+
...e
|
|
6
|
+
}) {
|
|
7
|
+
return /* @__PURE__ */ r.createElement(
|
|
8
|
+
t,
|
|
9
|
+
{
|
|
10
|
+
variant: "messages",
|
|
11
|
+
as: "section",
|
|
12
|
+
"aria-label": a,
|
|
13
|
+
...e
|
|
14
|
+
}
|
|
15
|
+
);
|
|
16
|
+
}
|
|
17
|
+
export {
|
|
18
|
+
m as C
|
|
19
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { ChatFrameProps } from './ChatList/ChatFrame';
|
|
3
|
+
export type ChatMessagesProps = Omit<ChatFrameProps, "variant" | "as">;
|
|
4
|
+
/**
|
|
5
|
+
* Колонка переписки (`section`).
|
|
6
|
+
*
|
|
7
|
+
* @see ChatList, ChatSplit, AvatarName
|
|
8
|
+
*/
|
|
9
|
+
export declare function ChatMessages({ "aria-label": ariaLabel, ...rest }: ChatMessagesProps): React.JSX.Element;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import e from "react";
|
|
2
|
+
import { C as s, s as m } from "./ChatFrame-BW2TmCkZ.js";
|
|
3
|
+
import { c as l } from "./cx-CcykAxZN.js";
|
|
4
|
+
function p({
|
|
5
|
+
"aria-label": a = "Диалоги",
|
|
6
|
+
...t
|
|
7
|
+
}) {
|
|
8
|
+
return /* @__PURE__ */ e.createElement(s, { variant: "list", as: "aside", "aria-label": a, ...t });
|
|
9
|
+
}
|
|
10
|
+
function f({
|
|
11
|
+
list: a,
|
|
12
|
+
messages: t,
|
|
13
|
+
className: r,
|
|
14
|
+
...i
|
|
15
|
+
}) {
|
|
16
|
+
return /* @__PURE__ */ e.createElement("div", { className: l(m.p, r), ...i }, a, t);
|
|
17
|
+
}
|
|
18
|
+
export {
|
|
19
|
+
p as C,
|
|
20
|
+
f as a
|
|
21
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import e from "react";
|
|
2
|
+
function o({ className: r }) {
|
|
3
|
+
return /* @__PURE__ */ e.createElement("svg", { className: r, viewBox: "0 0 12 12", "aria-hidden": !0 }, /* @__PURE__ */ e.createElement(
|
|
4
|
+
"path",
|
|
5
|
+
{
|
|
6
|
+
d: "M2.5 6.2 4.8 8.5 9.5 3.5",
|
|
7
|
+
fill: "none",
|
|
8
|
+
stroke: "currentColor",
|
|
9
|
+
strokeWidth: "1.8",
|
|
10
|
+
strokeLinecap: "round",
|
|
11
|
+
strokeLinejoin: "round"
|
|
12
|
+
}
|
|
13
|
+
));
|
|
14
|
+
}
|
|
15
|
+
export {
|
|
16
|
+
o as C
|
|
17
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Галочка shell (RadioGroup / Pricing / Dropdown).
|
|
4
|
+
* Размер и цвет — `currentColor` + `--shell-check-size` у родителя.
|
|
5
|
+
*/
|
|
6
|
+
export declare function CheckIcon({ className }: {
|
|
7
|
+
className?: string;
|
|
8
|
+
}): React.JSX.Element;
|
package/dist/Column.js
CHANGED
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import e from "react";
|
|
2
|
+
import { C as f } from "./CheckIcon-FdB8fMEF.js";
|
|
3
|
+
import { c as m } from "./cx-CcykAxZN.js";
|
|
4
|
+
import { P as D } from "./Popover-D0m5JWIt.js";
|
|
5
|
+
import { u as j } from "./useControllableValue-CWqH1kpM.js";
|
|
6
|
+
import './Dropdown.css';const I = "crr", M = "crt", P = "crc", R = "crp", W = "crh", z = "crg", F = "crd", G = "cri", T = "crn", V = "crm", q = "crk", A = "crl", H = "cru", J = "crb", K = "cro", Q = "crf", U = "crx", X = "cry", Y = "crv", n = {
|
|
7
|
+
r: I,
|
|
8
|
+
t: M,
|
|
9
|
+
c: P,
|
|
10
|
+
p: R,
|
|
11
|
+
h: W,
|
|
12
|
+
g: z,
|
|
13
|
+
d: F,
|
|
14
|
+
i: G,
|
|
15
|
+
n: T,
|
|
16
|
+
m: V,
|
|
17
|
+
k: q,
|
|
18
|
+
l: A,
|
|
19
|
+
u: H,
|
|
20
|
+
b: J,
|
|
21
|
+
o: K,
|
|
22
|
+
f: Q,
|
|
23
|
+
x: U,
|
|
24
|
+
y: X,
|
|
25
|
+
v: Y
|
|
26
|
+
};
|
|
27
|
+
function Z() {
|
|
28
|
+
return /* @__PURE__ */ e.createElement("svg", { className: n.c, viewBox: "0 0 12 12", "aria-hidden": !0 }, /* @__PURE__ */ e.createElement(
|
|
29
|
+
"path",
|
|
30
|
+
{
|
|
31
|
+
d: "M2.5 4.5 6 8l3.5-3.5",
|
|
32
|
+
fill: "none",
|
|
33
|
+
stroke: "currentColor",
|
|
34
|
+
strokeWidth: "1.5",
|
|
35
|
+
strokeLinecap: "round",
|
|
36
|
+
strokeLinejoin: "round"
|
|
37
|
+
}
|
|
38
|
+
));
|
|
39
|
+
}
|
|
40
|
+
function _() {
|
|
41
|
+
return /* @__PURE__ */ e.createElement("svg", { className: n.m, viewBox: "0 0 12 12", "aria-hidden": !0 }, /* @__PURE__ */ e.createElement(
|
|
42
|
+
"path",
|
|
43
|
+
{
|
|
44
|
+
d: "M4.5 2.5 8 6l-3.5 3.5",
|
|
45
|
+
fill: "none",
|
|
46
|
+
stroke: "currentColor",
|
|
47
|
+
strokeWidth: "1.5",
|
|
48
|
+
strokeLinecap: "round",
|
|
49
|
+
strokeLinejoin: "round"
|
|
50
|
+
}
|
|
51
|
+
));
|
|
52
|
+
}
|
|
53
|
+
function $({ item: a }) {
|
|
54
|
+
return a.checkbox ? /* @__PURE__ */ e.createElement("span", { className: m(n.x, a.checked && n.y), "aria-hidden": !0 }, a.checked ? /* @__PURE__ */ e.createElement(f, { className: n.v }) : null) : a.checked ? /* @__PURE__ */ e.createElement("span", { className: n.k, "aria-hidden": !0 }, /* @__PURE__ */ e.createElement(f, { className: n.v })) : a.status != null ? /* @__PURE__ */ e.createElement(
|
|
55
|
+
"span",
|
|
56
|
+
{
|
|
57
|
+
className: m(n.b, a.status === "online" ? n.o : n.f),
|
|
58
|
+
"aria-hidden": !0
|
|
59
|
+
}
|
|
60
|
+
) : a.icon != null ? /* @__PURE__ */ e.createElement("span", { className: n.n }, a.icon) : null;
|
|
61
|
+
}
|
|
62
|
+
function S(a, l, t) {
|
|
63
|
+
return l != null && l.length > 0 ? t != null && l[0] && l[0].title == null ? [{ ...l[0], title: t }, ...l.slice(1)] : l : a != null && a.length > 0 ? [{ title: t, items: a }] : t != null ? [{ title: t, items: [] }] : [];
|
|
64
|
+
}
|
|
65
|
+
function le({
|
|
66
|
+
items: a,
|
|
67
|
+
groups: l,
|
|
68
|
+
trigger: t,
|
|
69
|
+
label: o,
|
|
70
|
+
hideChevron: E = !1,
|
|
71
|
+
title: v,
|
|
72
|
+
align: k = "end",
|
|
73
|
+
open: b,
|
|
74
|
+
defaultOpen: N = !1,
|
|
75
|
+
onOpenChange: x,
|
|
76
|
+
closeOnSelect: C = !0,
|
|
77
|
+
disabled: u = !1,
|
|
78
|
+
onSelect: d,
|
|
79
|
+
className: y
|
|
80
|
+
}) {
|
|
81
|
+
const [i = !1, p] = j(
|
|
82
|
+
b,
|
|
83
|
+
N,
|
|
84
|
+
x
|
|
85
|
+
), g = S(a, l, v), L = (r) => {
|
|
86
|
+
var c;
|
|
87
|
+
if (r.disabled) return;
|
|
88
|
+
(c = r.onClick) == null || c.call(r), d == null || d(r.value, r), r.checkbox || r.submenu || !C || p(!1);
|
|
89
|
+
}, w = t ?? /* @__PURE__ */ e.createElement(
|
|
90
|
+
"button",
|
|
91
|
+
{
|
|
92
|
+
type: "button",
|
|
93
|
+
className: n.t,
|
|
94
|
+
"data-open": i ? "true" : void 0,
|
|
95
|
+
disabled: u,
|
|
96
|
+
"aria-haspopup": "menu",
|
|
97
|
+
"aria-expanded": i
|
|
98
|
+
},
|
|
99
|
+
o,
|
|
100
|
+
E ? null : /* @__PURE__ */ e.createElement(Z, null)
|
|
101
|
+
);
|
|
102
|
+
return /* @__PURE__ */ e.createElement(
|
|
103
|
+
D,
|
|
104
|
+
{
|
|
105
|
+
className: m(n.r, y),
|
|
106
|
+
open: i,
|
|
107
|
+
onOpenChange: (r) => {
|
|
108
|
+
u || p(r);
|
|
109
|
+
},
|
|
110
|
+
align: k,
|
|
111
|
+
trigger: w,
|
|
112
|
+
label: typeof o == "string" ? o : void 0,
|
|
113
|
+
disabled: u
|
|
114
|
+
},
|
|
115
|
+
/* @__PURE__ */ e.createElement("div", { className: n.p, "data-align": k }, g.map((r, h) => /* @__PURE__ */ e.createElement(e.Fragment, { key: h }, h > 0 ? /* @__PURE__ */ e.createElement("hr", { className: n.d }) : null, /* @__PURE__ */ e.createElement("div", { className: n.g, role: "group" }, r.title != null ? /* @__PURE__ */ e.createElement("p", { className: n.h }, r.title) : null, r.items.map((c) => {
|
|
116
|
+
const O = r.items.some(
|
|
117
|
+
(s) => s.checked || s.checkbox || s.status != null || s.icon != null
|
|
118
|
+
), B = /* @__PURE__ */ e.createElement($, { item: c });
|
|
119
|
+
return /* @__PURE__ */ e.createElement(
|
|
120
|
+
"button",
|
|
121
|
+
{
|
|
122
|
+
key: c.value,
|
|
123
|
+
type: "button",
|
|
124
|
+
role: "menuitem",
|
|
125
|
+
className: n.i,
|
|
126
|
+
"data-checked": (c.checked || c.checkbox) && c.checked ? "true" : void 0,
|
|
127
|
+
"data-danger": c.danger ? "true" : void 0,
|
|
128
|
+
disabled: c.disabled,
|
|
129
|
+
"aria-checked": c.checked != null || c.checkbox ? !!c.checked : void 0,
|
|
130
|
+
onClick: () => L(c)
|
|
131
|
+
},
|
|
132
|
+
O ? B ?? /* @__PURE__ */ e.createElement("span", { className: n.n, "aria-hidden": !0 }) : null,
|
|
133
|
+
c.label != null ? /* @__PURE__ */ e.createElement("span", { className: n.l }, c.label) : null,
|
|
134
|
+
c.shortcut != null ? /* @__PURE__ */ e.createElement("span", { className: n.u }, c.shortcut) : null,
|
|
135
|
+
c.submenu ? /* @__PURE__ */ e.createElement(_, null) : null
|
|
136
|
+
);
|
|
137
|
+
})))))
|
|
138
|
+
);
|
|
139
|
+
}
|
|
140
|
+
export {
|
|
141
|
+
le as D
|
|
142
|
+
};
|
package/dist/Dropdown.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer elcrm-components{.crr{position:relative;display:inline-flex;vertical-align:middle}.crt{display:inline-flex;align-items:center;gap:var(--shell-gap-sm);margin:0;padding:var(--shell-padding);box-sizing:border-box;font:inherit;font-size:var(--shell-font-size);font-weight:var(--shell-font-weight);color:var(--shell-color);background:var(--shell-background);border:1px solid var(--shell-border);border-radius:var(--shell-radius);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;line-height:1.2}.crt:hover{background:var(--shell-background-hover)}.crt[data-open=true]{border-color:var(--shell-color-accent);color:var(--shell-color-accent)}.crc{display:inline-flex;width:var(--shell-icon-size);height:var(--shell-icon-size);flex-shrink:0;color:var(--shell-color-muted)}.crt[data-open=true] .crc{color:var(--shell-color-accent)}.crp{
|
|
1
|
+
@layer elcrm-components{.crr{position:relative;display:inline-flex;vertical-align:middle}.crt{display:inline-flex;align-items:center;gap:var(--shell-gap-sm);margin:0;padding:var(--shell-padding);box-sizing:border-box;font:inherit;font-size:var(--shell-font-size);font-weight:var(--shell-font-weight);color:var(--shell-color);background:var(--shell-background);border:1px solid var(--shell-border);border-radius:var(--shell-radius);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;line-height:1.2}.crt:hover{background:var(--shell-background-hover)}.crt[data-open=true]{border-color:var(--shell-color-accent);color:var(--shell-color-accent)}.crc{display:inline-flex;width:var(--shell-icon-size);height:var(--shell-icon-size);flex-shrink:0;color:var(--shell-color-muted)}.crt[data-open=true] .crc{color:var(--shell-color-accent)}.crp{min-width:0}.crh{margin:0;padding:var(--shell-padding);font-size:var(--shell-font-size-sm);font-weight:var(--shell-font-weight);color:var(--shell-color-muted);line-height:1.3}.crg{display:flex;flex-direction:column;gap:2px}.crd{height:0;margin:var(--shell-gap-sm) 0;border:0;border-top:1px solid var(--shell-border)}.cri{display:flex;align-items:center;gap:var(--shell-gap-sm);width:100%;margin:0;padding:var(--shell-padding);box-sizing:border-box;text-align:left;font:inherit;font-size:var(--shell-font-size);font-weight:500;color:var(--shell-color);background:transparent;border:none;border-radius:calc(var(--shell-radius) * .7);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;line-height:1.35}.cri:hover:not(:disabled),.cri:focus-visible:not(:disabled){background:var(--shell-background-hover);outline:none}.cri[data-checked=true]{background:var(--shell-background-selected)}.cri[data-danger=true]{color:var(--shell-color-danger)}.cri[data-danger=true] .crn,.cri[data-danger=true] .crm{color:inherit}.cri:disabled,.cri[aria-disabled=true]{opacity:var(--shell-disabled-opacity);cursor:not-allowed}.crn,.crk{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;width:var(--shell-icon-size);height:var(--shell-icon-size);color:var(--shell-color-muted)}.crk{color:var(--shell-color-accent)}.crl{flex:1;min-width:0}.cru{flex-shrink:0;margin-left:auto;font-size:var(--shell-font-size-sm);color:var(--shell-color-muted)}.crm{display:inline-flex;flex-shrink:0;margin-left:auto;width:var(--shell-icon-size);height:var(--shell-icon-size);color:var(--shell-color-muted)}.crb{display:inline-flex;flex-shrink:0;width:var(--shell-status-size);height:var(--shell-status-size);border-radius:50%}.cro{background:var(--shell-color-success)}.crf{background:var(--shell-color-muted)}.crx{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;box-sizing:border-box;width:var(--shell-check-size);height:var(--shell-check-size);border:1px solid var(--shell-border);border-radius:calc(var(--shell-radius) * .4);background:var(--shell-background);color:var(--avatar-color)}.cry{border-color:var(--shell-color-accent);background:var(--shell-color-accent)}.crv{width:70%;height:70%;display:block}}
|
package/dist/Dropdown.d.ts
CHANGED
|
@@ -80,14 +80,14 @@ export type DropdownProps = Omit<React.HTMLAttributes<HTMLDivElement>, "onChange
|
|
|
80
80
|
onSelect?: (value: string, item: DropdownItem) => void;
|
|
81
81
|
};
|
|
82
82
|
/**
|
|
83
|
-
* Выпадающее меню: триггер + панель с `groups` / `items`
|
|
83
|
+
* Выпадающее меню: триггер + панель с `groups` / `items` (portal, {@link Popover}).
|
|
84
84
|
*
|
|
85
85
|
* Когда использовать:
|
|
86
86
|
* - действия строки списка, переключатели колонок, контекстные пункты у кнопки.
|
|
87
87
|
*
|
|
88
88
|
* Отличия:
|
|
89
89
|
* - {@link Menu} — инлайн-навигация в потоке (шапка), без панели;
|
|
90
|
-
* -
|
|
90
|
+
* - {@link Popover} — свой контент в portal, без `items`.
|
|
91
91
|
*
|
|
92
92
|
* API: декларативные `items` / `groups`. Идентификатор пункта — `value` (не `key`).
|
|
93
93
|
* Compound-слоты (`Dropdown.Item`) не используются.
|
|
@@ -121,4 +121,4 @@ export type DropdownProps = Omit<React.HTMLAttributes<HTMLDivElement>, "onChange
|
|
|
121
121
|
* />
|
|
122
122
|
* ```
|
|
123
123
|
*/
|
|
124
|
-
export declare function Dropdown({ items, groups, trigger, label, hideChevron, title, align, open: openProp, defaultOpen, onOpenChange, closeOnSelect, disabled, onSelect, className,
|
|
124
|
+
export declare function Dropdown({ items, groups, trigger, label, hideChevron, title, align, open: openProp, defaultOpen, onOpenChange, closeOnSelect, disabled, onSelect, className, }: DropdownProps): React.JSX.Element;
|
package/dist/Dropdown.js
CHANGED
package/dist/Footer.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer elcrm-components{.cfr{padding:var(--shell-padding);color:var(--shell-color-muted);background:transparent;border-top:1px solid var(--shell-border);font-size:var(--shell-font-size-sm)}}
|
|
1
|
+
@layer elcrm-components{.cfr{flex-shrink:0;padding:var(--shell-padding);color:var(--shell-color-muted);background:transparent;border-top:1px solid var(--shell-border);font-size:var(--shell-font-size-sm)}}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import r from "react";
|
|
2
|
+
import { c as m } from "./cx-CcykAxZN.js";
|
|
3
|
+
import './Item.css';const u = "cir", d = "cia", v = "cic", i = {
|
|
4
|
+
r: u,
|
|
5
|
+
a: d,
|
|
6
|
+
c: v
|
|
7
|
+
};
|
|
8
|
+
function N(s) {
|
|
9
|
+
const {
|
|
10
|
+
active: t,
|
|
11
|
+
variant: o = "plain",
|
|
12
|
+
children: a,
|
|
13
|
+
className: l,
|
|
14
|
+
as: n = "button",
|
|
15
|
+
...e
|
|
16
|
+
} = s, c = m(i.r, o === "card" && i.c, t && i.a, l);
|
|
17
|
+
return n === "a" ? /* @__PURE__ */ r.createElement(
|
|
18
|
+
"a",
|
|
19
|
+
{
|
|
20
|
+
className: c,
|
|
21
|
+
"data-active": t ? "true" : void 0,
|
|
22
|
+
...e
|
|
23
|
+
},
|
|
24
|
+
a
|
|
25
|
+
) : n === "li" ? /* @__PURE__ */ r.createElement(
|
|
26
|
+
"li",
|
|
27
|
+
{
|
|
28
|
+
className: c,
|
|
29
|
+
"data-active": t ? "true" : void 0,
|
|
30
|
+
...e
|
|
31
|
+
},
|
|
32
|
+
a
|
|
33
|
+
) : /* @__PURE__ */ r.createElement(
|
|
34
|
+
"button",
|
|
35
|
+
{
|
|
36
|
+
type: "button",
|
|
37
|
+
className: c,
|
|
38
|
+
"data-active": t ? "true" : void 0,
|
|
39
|
+
...e
|
|
40
|
+
},
|
|
41
|
+
a
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
export {
|
|
45
|
+
N as I
|
|
46
|
+
};
|
package/dist/Item.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer elcrm-components{.cir{display:flex;align-items:center;gap:var(--shell-gap-sm);padding:var(--shell-padding);color:var(--shell-color);background:transparent;border:1px solid transparent;border-radius:var(--shell-radius);cursor:default}.cir:is(button,a){-webkit-appearance:none;-moz-appearance:none;appearance:none;font:inherit;text-align:left;width:100%;cursor:pointer}.cir:hover{background:var(--shell-background-hover)}.cia,.cir[aria-current=true],.cir[data-active=true]{background:var(--shell-background-selected)}}
|
|
1
|
+
@layer elcrm-components{.cir{display:flex;align-items:center;gap:var(--shell-gap-sm);padding:var(--shell-padding);color:var(--shell-color);background:transparent;border:1px solid transparent;border-radius:var(--shell-radius);cursor:default}.cir:is(button,a){-webkit-appearance:none;-moz-appearance:none;appearance:none;font:inherit;text-align:left;width:100%;cursor:pointer}.cir:hover{background:var(--shell-background-hover)}.cia,.cir[aria-current=true],.cir[data-active=true]{background:var(--shell-background-selected)}.cic{align-items:flex-start;gap:var(--shell-gap);padding:var(--shell-padding);border:1px solid var(--shell-border);border-radius:var(--shell-radius);background:var(--shell-background-muted);flex-shrink:0}.cic:hover,.cic.cia,.cic[data-active=true]{background:color-mix(in srgb,var(--shell-color-accent) 12%,var(--shell-background-muted));border-color:color-mix(in srgb,var(--shell-color-accent) 35%,transparent)}}
|
package/dist/Item.d.ts
CHANGED
|
@@ -2,6 +2,11 @@ import { default as React } from 'react';
|
|
|
2
2
|
type Common = {
|
|
3
3
|
/** Активное / выбранное состояние */
|
|
4
4
|
active?: boolean;
|
|
5
|
+
/**
|
|
6
|
+
* `plain` — строка списка.
|
|
7
|
+
* `card` — карточка (идеи / тикеты): рамка, muted-фон, hover.
|
|
8
|
+
*/
|
|
9
|
+
variant?: "plain" | "card";
|
|
5
10
|
/** Содержимое элемента */
|
|
6
11
|
children?: React.ReactNode;
|
|
7
12
|
/** Доп. CSS-класс */
|
|
@@ -13,11 +18,13 @@ type Common = {
|
|
|
13
18
|
* Роли: Item внутри List / Menu; для групповых списков выбора —
|
|
14
19
|
* RadioGroup / Dropdown с `items` (не собирайте Item вручную).
|
|
15
20
|
*
|
|
21
|
+
* @param variant `plain` (строка) или `card` (рамка, muted-фон)
|
|
22
|
+
*
|
|
16
23
|
* @example
|
|
17
24
|
* ```tsx
|
|
18
25
|
* <List>
|
|
19
26
|
* <Item as="li" active>Текущий</Item>
|
|
20
|
-
* <Item as="
|
|
27
|
+
* <Item as="button" variant="card" active>Карточка</Item>
|
|
21
28
|
* </List>
|
|
22
29
|
* ```
|
|
23
30
|
*
|
package/dist/Item.js
CHANGED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import e from "react";
|
|
2
|
+
import { c as N } from "./cx-CcykAxZN.js";
|
|
3
|
+
import './ItemColumn.css';const h = "c7r", v = "c7i", k = "c7b", b = "c7h", x = "c7t", g = "c7x", C = "c7d", F = "c7f", I = "c7p", y = "c7a", L = "c7s", M = "c7l", R = "c7k", l = {
|
|
4
|
+
r: h,
|
|
5
|
+
i: v,
|
|
6
|
+
b: k,
|
|
7
|
+
h: b,
|
|
8
|
+
t: x,
|
|
9
|
+
x: g,
|
|
10
|
+
d: C,
|
|
11
|
+
f: F,
|
|
12
|
+
p: I,
|
|
13
|
+
a: y,
|
|
14
|
+
s: L,
|
|
15
|
+
l: M,
|
|
16
|
+
k: R
|
|
17
|
+
};
|
|
18
|
+
function $({ items: a }) {
|
|
19
|
+
const t = a.filter((n) => n != null && n !== !1 && n !== "");
|
|
20
|
+
return t.length === 0 ? null : /* @__PURE__ */ e.createElement(e.Fragment, null, t.map((n, c) => /* @__PURE__ */ e.createElement(e.Fragment, { key: c }, c > 0 ? /* @__PURE__ */ e.createElement("span", { className: l.p, "aria-hidden": !0 }, "·") : null, /* @__PURE__ */ e.createElement("span", null, n))));
|
|
21
|
+
}
|
|
22
|
+
function w({
|
|
23
|
+
icon: a,
|
|
24
|
+
title: t,
|
|
25
|
+
extra: n,
|
|
26
|
+
aside: c,
|
|
27
|
+
description: s,
|
|
28
|
+
footer: o,
|
|
29
|
+
meta: m,
|
|
30
|
+
size: r = "m",
|
|
31
|
+
unread: i,
|
|
32
|
+
children: E,
|
|
33
|
+
className: d,
|
|
34
|
+
...p
|
|
35
|
+
}) {
|
|
36
|
+
const f = r === "s" ? l.s : r === "l" ? l.l : void 0, u = o ?? (m != null ? /* @__PURE__ */ e.createElement($, { items: m }) : null);
|
|
37
|
+
return /* @__PURE__ */ e.createElement("div", { className: N(l.r, f, i && l.k, d), ...p }, a != null ? /* @__PURE__ */ e.createElement("span", { className: l.i, "aria-hidden": !0 }, a) : null, /* @__PURE__ */ e.createElement("div", { className: l.b }, t != null || n != null ? /* @__PURE__ */ e.createElement("div", { className: l.h }, t != null ? /* @__PURE__ */ e.createElement("span", { className: l.t }, t) : null, n != null ? /* @__PURE__ */ e.createElement("span", { className: l.x }, n) : null) : null, s != null ? /* @__PURE__ */ e.createElement("div", { className: l.d }, s) : null, u != null ? /* @__PURE__ */ e.createElement("div", { className: l.f }, u) : null, E), c != null ? /* @__PURE__ */ e.createElement("div", { className: l.a }, c) : null);
|
|
38
|
+
}
|
|
39
|
+
export {
|
|
40
|
+
w as I
|
|
41
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer elcrm-components{.c7r{display:flex;align-items:flex-start;gap:var(--item-column-gap);min-width:0;width:100%;text-align:left}.c7i{flex-shrink:0;box-sizing:border-box;width:var(--item-column-icon-size);height:var(--item-column-icon-size);border-radius:var(--item-column-icon-radius);display:inline-flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--shell-color-accent) 14%,transparent);color:var(--shell-color-accent)}.c7b{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.c7h{display:flex;align-items:center;gap:8px;min-width:0}.c7t{flex:1;min-width:0;margin:0;font-size:var(--item-column-title-size);font-weight:var(--shell-font-weight);color:var(--shell-color);line-height:var(--item-column-title-line);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.c7x{flex-shrink:0;display:inline-flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:6px}.c7d{margin:0;font-size:var(--shell-font-size-sm);font-weight:400;color:var(--shell-color);line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.c7f{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 6px;font-size:12px;color:var(--shell-color-muted);line-height:1.35}.c7p{opacity:.5;-webkit-user-select:none;user-select:none}.c7a{flex-shrink:0;display:inline-flex;align-items:flex-start}.c7s .c7t{font-size:var(--shell-font-size-sm)}.c7s .c7d{font-size:12px}.c7l .c7t{font-size:var(--shell-font-size-lg)}.c7l .c7d{font-size:var(--shell-font-size)}.c7k .c7t{font-weight:700}}
|