@octohirono/stitch-design-system 0.1.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 +7 -0
- package/dist/components/Accordion/Accordion.d.ts +45 -0
- package/dist/components/Accordion/Accordion.js +26 -0
- package/dist/components/Accordion/accordion.module.js +4 -0
- package/dist/components/Accordion/index.d.ts +2 -0
- package/dist/components/AlertDialog/AlertDialog.d.ts +45 -0
- package/dist/components/AlertDialog/AlertDialog.js +32 -0
- package/dist/components/AlertDialog/alert-dialog.module.js +4 -0
- package/dist/components/AlertDialog/index.d.ts +2 -0
- package/dist/components/AspectRatio/AspectRatio.d.ts +29 -0
- package/dist/components/AspectRatio/AspectRatio.js +15 -0
- package/dist/components/AspectRatio/aspect-ratio.module.js +4 -0
- package/dist/components/AspectRatio/index.d.ts +2 -0
- package/dist/components/Avatar/Avatar.d.ts +42 -0
- package/dist/components/Avatar/Avatar.js +21 -0
- package/dist/components/Avatar/avatar.module.js +13 -0
- package/dist/components/Avatar/index.d.ts +2 -0
- package/dist/components/Button/Button.d.ts +60 -0
- package/dist/components/Button/Button.js +22 -0
- package/dist/components/Button/button.module.js +19 -0
- package/dist/components/Button/index.d.ts +2 -0
- package/dist/components/Card/Card.d.ts +50 -0
- package/dist/components/Card/Card.js +21 -0
- package/dist/components/Card/card.module.js +22 -0
- package/dist/components/Card/index.d.ts +2 -0
- package/dist/components/Checkbox/Checkbox.d.ts +45 -0
- package/dist/components/Checkbox/Checkbox.js +56 -0
- package/dist/components/Checkbox/checkbox.module.js +17 -0
- package/dist/components/Checkbox/index.d.ts +2 -0
- package/dist/components/CodeBlock/CodeBlock.d.ts +10 -0
- package/dist/components/CodeBlock/CodeBlock.js +50 -0
- package/dist/components/CodeBlock/codeblock.module.js +17 -0
- package/dist/components/CodeBlock/index.d.ts +2 -0
- package/dist/components/Collapse/Collapse.d.ts +38 -0
- package/dist/components/Collapse/Collapse.js +50 -0
- package/dist/components/Collapse/collapse.module.js +13 -0
- package/dist/components/Collapse/index.d.ts +2 -0
- package/dist/components/ContextMenu/ContextMenu.d.ts +47 -0
- package/dist/components/ContextMenu/ContextMenu.js +50 -0
- package/dist/components/ContextMenu/context-menu.module.js +13 -0
- package/dist/components/ContextMenu/index.d.ts +2 -0
- package/dist/components/Divider/Divider.d.ts +50 -0
- package/dist/components/Divider/Divider.js +23 -0
- package/dist/components/Divider/divider.module.js +14 -0
- package/dist/components/Divider/index.d.ts +2 -0
- package/dist/components/Drawer/Drawer.d.ts +36 -0
- package/dist/components/Drawer/Drawer.js +76 -0
- package/dist/components/Drawer/drawer.module.js +21 -0
- package/dist/components/Drawer/index.d.ts +2 -0
- package/dist/components/DropdownMenu/DropdownMenu.d.ts +55 -0
- package/dist/components/DropdownMenu/DropdownMenu.js +54 -0
- package/dist/components/DropdownMenu/dropdown-menu.module.js +13 -0
- package/dist/components/DropdownMenu/index.d.ts +2 -0
- package/dist/components/Form/Form.d.ts +20 -0
- package/dist/components/Form/Form.js +105 -0
- package/dist/components/Form/FormItem.d.ts +3 -0
- package/dist/components/Form/FormItem.js +96 -0
- package/dist/components/Form/context.d.ts +22 -0
- package/dist/components/Form/context.js +5 -0
- package/dist/components/Form/form.module.js +25 -0
- package/dist/components/Form/index.d.ts +7 -0
- package/dist/components/Form/types.d.ts +164 -0
- package/dist/components/Form/types.js +6 -0
- package/dist/components/Form/useForm.d.ts +15 -0
- package/dist/components/Form/useForm.js +188 -0
- package/dist/components/Form/validators.d.ts +3 -0
- package/dist/components/Form/validators.js +73 -0
- package/dist/components/HoverCard/HoverCard.d.ts +47 -0
- package/dist/components/HoverCard/HoverCard.js +26 -0
- package/dist/components/HoverCard/hover-card.module.js +9 -0
- package/dist/components/HoverCard/index.d.ts +2 -0
- package/dist/components/Icon/Icon.d.ts +100 -0
- package/dist/components/Icon/Icon.js +150 -0
- package/dist/components/Icon/icon.module.js +7 -0
- package/dist/components/Icon/index.d.ts +2 -0
- package/dist/components/Image/Image.d.ts +50 -0
- package/dist/components/Image/Image.js +95 -0
- package/dist/components/Image/image.module.js +27 -0
- package/dist/components/Image/index.d.ts +2 -0
- package/dist/components/Input/Input.d.ts +41 -0
- package/dist/components/Input/Input.js +62 -0
- package/dist/components/Input/index.d.ts +2 -0
- package/dist/components/Input/input.module.js +17 -0
- package/dist/components/Label/Label.d.ts +28 -0
- package/dist/components/Label/Label.js +15 -0
- package/dist/components/Label/index.d.ts +2 -0
- package/dist/components/Label/label.module.js +4 -0
- package/dist/components/Loading/Loading.d.ts +22 -0
- package/dist/components/Loading/Loading.js +32 -0
- package/dist/components/Loading/index.d.ts +2 -0
- package/dist/components/Loading/loading.module.js +14 -0
- package/dist/components/Menubar/Menubar.d.ts +64 -0
- package/dist/components/Menubar/Menubar.js +70 -0
- package/dist/components/Menubar/index.d.ts +2 -0
- package/dist/components/Menubar/menubar.module.js +15 -0
- package/dist/components/Modal/Modal.d.ts +38 -0
- package/dist/components/Modal/Modal.js +68 -0
- package/dist/components/Modal/index.d.ts +2 -0
- package/dist/components/Modal/modal.module.js +13 -0
- package/dist/components/NavigationMenu/NavigationMenu.d.ts +47 -0
- package/dist/components/NavigationMenu/NavigationMenu.js +47 -0
- package/dist/components/NavigationMenu/index.d.ts +2 -0
- package/dist/components/NavigationMenu/navigation-menu.module.js +16 -0
- package/dist/components/Notification/Notification.d.ts +14 -0
- package/dist/components/Notification/Notification.js +87 -0
- package/dist/components/Notification/NotificationPortal.d.ts +29 -0
- package/dist/components/Notification/NotificationPortal.js +90 -0
- package/dist/components/Notification/index.d.ts +4 -0
- package/dist/components/Notification/notification.module.js +31 -0
- package/dist/components/Notification/types.d.ts +44 -0
- package/dist/components/OtpField/OtpField.d.ts +40 -0
- package/dist/components/OtpField/OtpField.js +20 -0
- package/dist/components/OtpField/index.d.ts +2 -0
- package/dist/components/OtpField/otp-field.module.js +7 -0
- package/dist/components/PasswordInput/PasswordInput.d.ts +36 -0
- package/dist/components/PasswordInput/PasswordInput.js +28 -0
- package/dist/components/PasswordInput/index.d.ts +2 -0
- package/dist/components/PasswordInput/password-input.module.js +4 -0
- package/dist/components/Popover/Popover.d.ts +42 -0
- package/dist/components/Popover/Popover.js +24 -0
- package/dist/components/Popover/index.d.ts +2 -0
- package/dist/components/Popover/popover.module.js +9 -0
- package/dist/components/Progress/Progress.d.ts +44 -0
- package/dist/components/Progress/Progress.js +55 -0
- package/dist/components/Progress/index.d.ts +2 -0
- package/dist/components/Progress/progress.module.js +21 -0
- package/dist/components/Radio/Radio.d.ts +47 -0
- package/dist/components/Radio/Radio.js +102 -0
- package/dist/components/Radio/index.d.ts +2 -0
- package/dist/components/Radio/radio.module.js +17 -0
- package/dist/components/ScrollArea/ScrollArea.d.ts +34 -0
- package/dist/components/ScrollArea/ScrollArea.js +34 -0
- package/dist/components/ScrollArea/index.d.ts +2 -0
- package/dist/components/ScrollArea/scroll-area.module.js +10 -0
- package/dist/components/Select/Select.d.ts +54 -0
- package/dist/components/Select/Select.js +118 -0
- package/dist/components/Select/index.d.ts +2 -0
- package/dist/components/Select/select.module.js +24 -0
- package/dist/components/Skeleton/Skeleton.d.ts +71 -0
- package/dist/components/Skeleton/Skeleton.js +147 -0
- package/dist/components/Skeleton/index.d.ts +2 -0
- package/dist/components/Skeleton/skeleton.module.js +16 -0
- package/dist/components/Slider/Slider.d.ts +58 -0
- package/dist/components/Slider/Slider.js +33 -0
- package/dist/components/Slider/index.d.ts +2 -0
- package/dist/components/Slider/slider.module.js +9 -0
- package/dist/components/Switch/Switch.d.ts +50 -0
- package/dist/components/Switch/Switch.js +43 -0
- package/dist/components/Switch/index.d.ts +2 -0
- package/dist/components/Switch/switch.module.js +15 -0
- package/dist/components/Table/Table.d.ts +65 -0
- package/dist/components/Table/Table.js +75 -0
- package/dist/components/Table/index.d.ts +2 -0
- package/dist/components/Table/table.module.js +21 -0
- package/dist/components/Tabs/Tabs.d.ts +37 -0
- package/dist/components/Tabs/Tabs.js +68 -0
- package/dist/components/Tabs/index.d.ts +2 -0
- package/dist/components/Tabs/tabs.module.js +13 -0
- package/dist/components/Tag/Tag.d.ts +67 -0
- package/dist/components/Tag/Tag.js +54 -0
- package/dist/components/Tag/index.d.ts +2 -0
- package/dist/components/Tag/tag.module.js +28 -0
- package/dist/components/Toggle/Toggle.d.ts +39 -0
- package/dist/components/Toggle/Toggle.js +29 -0
- package/dist/components/Toggle/index.d.ts +2 -0
- package/dist/components/Toggle/toggle.module.js +7 -0
- package/dist/components/ToggleGroup/ToggleGroup.d.ts +88 -0
- package/dist/components/ToggleGroup/ToggleGroup.js +42 -0
- package/dist/components/ToggleGroup/index.d.ts +2 -0
- package/dist/components/ToggleGroup/toggle-group.module.js +8 -0
- package/dist/components/Toolbar/Toolbar.d.ts +116 -0
- package/dist/components/Toolbar/Toolbar.js +72 -0
- package/dist/components/Toolbar/index.d.ts +2 -0
- package/dist/components/Toolbar/toolbar.module.js +14 -0
- package/dist/components/Tooltip/Tooltip.d.ts +41 -0
- package/dist/components/Tooltip/Tooltip.js +38 -0
- package/dist/components/Tooltip/index.d.ts +2 -0
- package/dist/components/Tooltip/tooltip.module.js +21 -0
- package/dist/components/_internal/useOverlay.d.ts +15 -0
- package/dist/components/_internal/useOverlay.js +55 -0
- package/dist/index.d.ts +82 -0
- package/dist/index.js +43 -0
- package/dist/style.css +3693 -0
- package/package.json +36 -0
package/README.md
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# packages/react
|
|
2
|
+
|
|
3
|
+
React + TypeScript 组件库(构建阶段产出)。
|
|
4
|
+
|
|
5
|
+
组件按四件套组织在 `src/components/<X>/`,只读角色变量 `var(--stitch-*)`。
|
|
6
|
+
写作约定见 [docs/contributing/component-authoring.md](../../docs/contributing/component-authoring.md);
|
|
7
|
+
打包配置见 [docs/contributing/packaging.md](../../docs/contributing/packaging.md)。
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface AccordionItem {
|
|
3
|
+
/** 唯一标识:受控 `value` / 非受控 `defaultValue` 对应此 key */
|
|
4
|
+
key: string;
|
|
5
|
+
/** 触发区标题(可点击的问句 / 标签) */
|
|
6
|
+
header: React.ReactNode;
|
|
7
|
+
/** 展开后显示的面板内容 */
|
|
8
|
+
children?: React.ReactNode;
|
|
9
|
+
/**
|
|
10
|
+
* 是否禁用该项(禁用后不可展开)
|
|
11
|
+
* @default false
|
|
12
|
+
*/
|
|
13
|
+
disabled?: boolean;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* 一组披露块 + 「同时只开一个」(互斥单开):在底件 `Collapse` 之上只加容器互斥联动,
|
|
17
|
+
* 单块的开合动画 / 无障碍全复用 `Collapse`(不重写)。对外取 `items` 数组(Ant v5 风格,
|
|
18
|
+
* 跟库里 Select / Table 一致),容器持「当前展开项 key」,把每个 `Collapse` 的开合受控化
|
|
19
|
+
* (`open = item.key === value`)、点击时切 value。
|
|
20
|
+
*
|
|
21
|
+
* 跨-prop 注意事项:
|
|
22
|
+
* - **受控 / 非受控双模式**:给 `value` 由父管(配 `onChange`,`null` = 全收),只给
|
|
23
|
+
* `defaultValue` 组件自管。`extends HTMLAttributes<HTMLDivElement>` 但
|
|
24
|
+
* `Omit<'onChange' | 'defaultValue'>`——原生名与本组件 `(value)=>void` / `string | null`
|
|
25
|
+
* 签名冲突;`...rest` 透传到根 `<div>`(`className` / `style` / `data-*` / `aria-*`)。
|
|
26
|
+
* - **只做互斥单开**:点开一项其余自动收,同一时刻至多一项展开;点已展开项 → 收起(value 回 `null`)。
|
|
27
|
+
* **不做 multiple**(真要多开直接摆一排独立 `<Collapse>`)。
|
|
28
|
+
* - 展开指示 / 容器表面 / 焦点环等长相全继承 `Collapse`,只读角色变量 `var(--stitch-*)`,随主题换肤变化。
|
|
29
|
+
*/
|
|
30
|
+
export interface AccordionProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange' | 'defaultValue'> {
|
|
31
|
+
/** 披露项列表(Ant v5 `items` 风格) */
|
|
32
|
+
items: AccordionItem[];
|
|
33
|
+
/**
|
|
34
|
+
* 受控当前展开项 key(`null` = 全部收起;给了即受控,配 `onChange` 用)
|
|
35
|
+
*/
|
|
36
|
+
value?: string | null;
|
|
37
|
+
/**
|
|
38
|
+
* 非受控初始展开项 key(`null` / 省略 = 初始全收)
|
|
39
|
+
* @default null
|
|
40
|
+
*/
|
|
41
|
+
defaultValue?: string | null;
|
|
42
|
+
/** 当前展开项变化回调(受控 / 非受控都会触发;收起时回 `null`) */
|
|
43
|
+
onChange?: (value: string | null) => void;
|
|
44
|
+
}
|
|
45
|
+
export declare const Accordion: React.FC<AccordionProps>;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Collapse as e } from "../Collapse/Collapse.js";
|
|
2
|
+
import t from "./accordion.module.js";
|
|
3
|
+
import { useCallback as n, useState as r } from "react";
|
|
4
|
+
import i from "clsx";
|
|
5
|
+
import { jsx as a } from "react/jsx-runtime";
|
|
6
|
+
//#region packages/react/src/components/Accordion/Accordion.tsx
|
|
7
|
+
var o = ({ items: o, value: s, defaultValue: c = null, onChange: l, className: u, ...d }) => {
|
|
8
|
+
let [f, p] = r(c), m = s !== void 0, h = m ? s : f, g = n((e, t) => {
|
|
9
|
+
let n = t ? e : null;
|
|
10
|
+
m || p(n), l?.(n);
|
|
11
|
+
}, [m, l]);
|
|
12
|
+
return /* @__PURE__ */ a("div", {
|
|
13
|
+
className: i(t.accordion, u),
|
|
14
|
+
...d,
|
|
15
|
+
children: o.map((t) => /* @__PURE__ */ a(e, {
|
|
16
|
+
header: t.header,
|
|
17
|
+
disabled: t.disabled,
|
|
18
|
+
open: h === t.key,
|
|
19
|
+
onOpenChange: (e) => g(t.key, e),
|
|
20
|
+
children: t.children
|
|
21
|
+
}, t.key))
|
|
22
|
+
});
|
|
23
|
+
};
|
|
24
|
+
o.displayName = "Accordion";
|
|
25
|
+
//#endregion
|
|
26
|
+
export { o as Accordion };
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* 确认框:在底件 `Modal` 之上只加「必须做一个选择」那一层,浮层底座 / 焦点陷阱 / Esc /
|
|
4
|
+
* 焦点归还全复用 `Modal` + 共享 `_internal/useOverlay`(不重写)。相对普通 `Modal` 补四点:
|
|
5
|
+
*
|
|
6
|
+
* 1. **两个动作按钮**——取消(安全)+ 确认;均由库内 `Button` 渲染,随主题换肤。
|
|
7
|
+
* 2. **`role="alertdialog"`**——告诉读屏这是不可忽略、必须决策的对话框(传给 Modal 的 role)。
|
|
8
|
+
* 3. **点遮罩不关**(`maskClosable` 恒 `false`,不开放为 prop——确认框必须选一个);**Esc = 取消**
|
|
9
|
+
* (等价点「取消」,可关,逻辑同 Modal 的 `onCancel`)。
|
|
10
|
+
* 4. **初始焦点落在安全操作(取消)上**——取消钮在 footer 里渲染在确认钮之前,`useOverlay`
|
|
11
|
+
* 打开时聚焦第一个可聚焦元素,故正文为纯文案时焦点自动落取消。
|
|
12
|
+
*
|
|
13
|
+
* 跨-prop 注意事项:
|
|
14
|
+
* - **无受控 open 之外的状态**:显隐由父级 `open` 掌控,`onOk` / `onCancel` 回调决策结果;组件
|
|
15
|
+
* 自身不持状态(确认框是一次性问答,非双模式表单件)。
|
|
16
|
+
* - **确认可标危险态**:`okDanger` 把确认钮切到危险语义(删除类不可逆操作),仅改 `Button` 语义色,
|
|
17
|
+
* 仍只读角色变量 `var(--stitch-*)`。
|
|
18
|
+
* - 面 / 圆角 / 阴影 / 按钮长相全继承 `Modal` + `Button`,随主题换肤变化,本件不硬编码任何主题值。
|
|
19
|
+
*/
|
|
20
|
+
export interface AlertDialogProps {
|
|
21
|
+
/** 是否可见 */
|
|
22
|
+
open: boolean;
|
|
23
|
+
/** 标题(问句 / 决策提示) */
|
|
24
|
+
title?: React.ReactNode;
|
|
25
|
+
/** 宽度 @default 416 */
|
|
26
|
+
width?: number | string;
|
|
27
|
+
/** 确认回调(点「确认」按钮触发) */
|
|
28
|
+
onOk?: () => void;
|
|
29
|
+
/** 取消回调(点「取消」按钮 / Esc 触发;确认框的安全出口) */
|
|
30
|
+
onCancel?: () => void;
|
|
31
|
+
/** 确认按钮文案 @default '确认' */
|
|
32
|
+
okText?: React.ReactNode;
|
|
33
|
+
/** 取消按钮文案 @default '取消' */
|
|
34
|
+
cancelText?: React.ReactNode;
|
|
35
|
+
/**
|
|
36
|
+
* 确认是否为危险(不可逆)操作,确认钮切到危险语义
|
|
37
|
+
* @default false
|
|
38
|
+
*/
|
|
39
|
+
okDanger?: boolean;
|
|
40
|
+
/** 确认框正文(要用户确认的说明文案) */
|
|
41
|
+
children?: React.ReactNode;
|
|
42
|
+
/** 自定义类名(透传到对话框面板) */
|
|
43
|
+
className?: string;
|
|
44
|
+
}
|
|
45
|
+
export declare const AlertDialog: React.FC<AlertDialogProps>;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Button as e } from "../Button/Button.js";
|
|
2
|
+
import { Modal as t } from "../Modal/Modal.js";
|
|
3
|
+
import n from "./alert-dialog.module.js";
|
|
4
|
+
import "react";
|
|
5
|
+
import { Fragment as r, jsx as i, jsxs as a } from "react/jsx-runtime";
|
|
6
|
+
//#region packages/react/src/components/AlertDialog/AlertDialog.tsx
|
|
7
|
+
var o = ({ open: o, title: s, width: c = 416, onOk: l, onCancel: u, okText: d = "确认", cancelText: f = "取消", okDanger: p = !1, children: m, className: h }) => /* @__PURE__ */ i(t, {
|
|
8
|
+
open: o,
|
|
9
|
+
title: s,
|
|
10
|
+
width: c,
|
|
11
|
+
role: "alertdialog",
|
|
12
|
+
maskClosable: !1,
|
|
13
|
+
onCancel: u,
|
|
14
|
+
className: h,
|
|
15
|
+
footer: /* @__PURE__ */ a(r, { children: [/* @__PURE__ */ i(e, {
|
|
16
|
+
type: "default",
|
|
17
|
+
onClick: u,
|
|
18
|
+
children: f
|
|
19
|
+
}), /* @__PURE__ */ i(e, {
|
|
20
|
+
type: "primary",
|
|
21
|
+
danger: p,
|
|
22
|
+
onClick: l,
|
|
23
|
+
children: d
|
|
24
|
+
})] }),
|
|
25
|
+
children: /* @__PURE__ */ i("div", {
|
|
26
|
+
className: n.message,
|
|
27
|
+
children: m
|
|
28
|
+
})
|
|
29
|
+
});
|
|
30
|
+
o.displayName = "AlertDialog";
|
|
31
|
+
//#endregion
|
|
32
|
+
export { o as AlertDialog };
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* 锁宽高比容器(无 Ant 对应):把 `children` 约束在固定宽高比(如 `16/9`)里,宽度自适应、
|
|
4
|
+
* 高度按比例算出。常配图片 / 视频 / 头像等媒体,避免加载前后的布局抖动(CLS)。
|
|
5
|
+
*
|
|
6
|
+
* 跨-prop 注意事项:
|
|
7
|
+
* - **纯布局件,无皮无状态**:不含交互 / 状态 / 皮色,无 `--stitch-*` 颜色角色可上(基本零
|
|
8
|
+
* Less);圆角、边框、底色等观感由**使用者在 `children` 上或 `className`/`style` 里定**,
|
|
9
|
+
* 本组件只负责撑出比例框。无 `data-state`(静态布局)。
|
|
10
|
+
* - **`ratio` 直接透传底层**(与 Radix 同名,非回调、无需归一):`ratio` 为宽 ÷ 高,如
|
|
11
|
+
* `16 / 9`、`4 / 3`、`1`(正方形)。底层用外层 wrapper 的 `padding-bottom = 100 / ratio`
|
|
12
|
+
* 撑出比例,`children` 绝对定位铺满内层。
|
|
13
|
+
* - **常与 Image / Avatar 组合**:如 `<AspectRatio ratio={16/9}><Image …/></AspectRatio>`,
|
|
14
|
+
* 让媒体填满比例框(媒体自身设 `width:100%; height:100%; object-fit:cover`)。
|
|
15
|
+
*/
|
|
16
|
+
export interface AspectRatioProps {
|
|
17
|
+
/**
|
|
18
|
+
* 宽高比(宽 ÷ 高),如 `16 / 9`、`4 / 3`
|
|
19
|
+
* @default 1
|
|
20
|
+
*/
|
|
21
|
+
ratio?: number;
|
|
22
|
+
/** 约束进比例框的内容(媒体等) */
|
|
23
|
+
children?: React.ReactNode;
|
|
24
|
+
/** 自定义类名(挂到比例框内容层) */
|
|
25
|
+
className?: string;
|
|
26
|
+
/** 行内样式(挂到比例框内容层) */
|
|
27
|
+
style?: React.CSSProperties;
|
|
28
|
+
}
|
|
29
|
+
export declare const AspectRatio: React.FC<AspectRatioProps>;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import e from "./aspect-ratio.module.js";
|
|
2
|
+
import "react";
|
|
3
|
+
import t from "clsx";
|
|
4
|
+
import { jsx as n } from "react/jsx-runtime";
|
|
5
|
+
import { AspectRatio as r } from "radix-ui";
|
|
6
|
+
//#region packages/react/src/components/AspectRatio/AspectRatio.tsx
|
|
7
|
+
var i = ({ ratio: i = 1, children: a, className: o, style: s }) => /* @__PURE__ */ n(r.Root, {
|
|
8
|
+
ratio: i,
|
|
9
|
+
className: t(e.root, o),
|
|
10
|
+
style: s,
|
|
11
|
+
children: a
|
|
12
|
+
});
|
|
13
|
+
i.displayName = "AspectRatio";
|
|
14
|
+
//#endregion
|
|
15
|
+
export { i as AspectRatio };
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export type AvatarSize = 'small' | 'middle' | 'large';
|
|
3
|
+
export type AvatarShape = 'circle' | 'square';
|
|
4
|
+
/**
|
|
5
|
+
* 头像:展示用户 / 实体的小幅图像,图片加载失败或无 `src` 时优雅回退到兜底内容
|
|
6
|
+
* (首字母 / 占位图标)。固定尺寸档(`size`)+ 圆 / 方(`shape`)+ `fallback` 兜底。
|
|
7
|
+
* 组合 Radix `Avatar.Root/Image/Fallback`。
|
|
8
|
+
*
|
|
9
|
+
* 跨-prop 注意事项:
|
|
10
|
+
* - **vs Image**:Image 是通用图片(任意尺寸 + matte 相框 + 点击预览大图);Avatar 是
|
|
11
|
+
* 头像——固定尺寸档、圆 / 方两形、缺图必有 `fallback` 兜底语义,非通用图片。
|
|
12
|
+
* - **显图 / 兜底二选一由 Radix 判**:`src` 加载成功才渲 `<img>`;无 `src` 或加载失败渲
|
|
13
|
+
* `fallback`(Radix 用 `new Image()` 预载探测,非 `data-*`)。故 `fallback` 应常备
|
|
14
|
+
* (如姓名首字母),别依赖图片一定加载出来。
|
|
15
|
+
* - **`size` / `shape` → class 映射**:`size` 走物理尺寸档(small 24 / middle 32 /
|
|
16
|
+
* large 40,人机工程量、非主题值);`shape='circle'` → `border-radius:50%`、`square`
|
|
17
|
+
* → `--stitch-radius-image`(随站换肤)。
|
|
18
|
+
* - **`alt` 给有意义头像补无障碍名**:`src` 成功显图时 `alt` 透到 `<img>`;纯装饰可留空。
|
|
19
|
+
*/
|
|
20
|
+
export interface AvatarProps {
|
|
21
|
+
/** 头像图片地址;缺失或加载失败时回退到 `fallback` */
|
|
22
|
+
src?: string;
|
|
23
|
+
/** 图片替代文本(无障碍);有意义头像应提供,纯装饰可留空 */
|
|
24
|
+
alt?: string;
|
|
25
|
+
/** 图缺失 / 加载失败时的兜底内容(首字母 / 占位图标等) */
|
|
26
|
+
fallback?: React.ReactNode;
|
|
27
|
+
/**
|
|
28
|
+
* 尺寸档:small 24 / middle 32 / large 40(px)
|
|
29
|
+
* @default 'middle'
|
|
30
|
+
*/
|
|
31
|
+
size?: AvatarSize;
|
|
32
|
+
/**
|
|
33
|
+
* 形状:圆形或方形(方形圆角随 `--stitch-radius-image` 换肤)
|
|
34
|
+
* @default 'circle'
|
|
35
|
+
*/
|
|
36
|
+
shape?: AvatarShape;
|
|
37
|
+
/** 自定义类名(挂到头像根容器) */
|
|
38
|
+
className?: string;
|
|
39
|
+
/** 行内样式(挂到头像根容器) */
|
|
40
|
+
style?: React.CSSProperties;
|
|
41
|
+
}
|
|
42
|
+
export declare const Avatar: React.FC<AvatarProps>;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import e from "./avatar.module.js";
|
|
2
|
+
import "react";
|
|
3
|
+
import t from "clsx";
|
|
4
|
+
import { jsx as n, jsxs as r } from "react/jsx-runtime";
|
|
5
|
+
import { Avatar as i } from "radix-ui";
|
|
6
|
+
//#region packages/react/src/components/Avatar/Avatar.tsx
|
|
7
|
+
var a = ({ src: a, alt: o, fallback: s, size: c = "middle", shape: l = "circle", className: u, style: d }) => /* @__PURE__ */ r(i.Root, {
|
|
8
|
+
className: t(e.root, e[c], e[l], u),
|
|
9
|
+
style: d,
|
|
10
|
+
children: [a != null && /* @__PURE__ */ n(i.Image, {
|
|
11
|
+
className: e.image,
|
|
12
|
+
src: a,
|
|
13
|
+
alt: o
|
|
14
|
+
}), /* @__PURE__ */ n(i.Fallback, {
|
|
15
|
+
className: e.fallback,
|
|
16
|
+
children: s
|
|
17
|
+
})]
|
|
18
|
+
});
|
|
19
|
+
a.displayName = "Avatar";
|
|
20
|
+
//#endregion
|
|
21
|
+
export { a as Avatar };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
//#region packages/react/src/components/Avatar/avatar.module.less
|
|
2
|
+
var e = "_root_1ushl_1", t = "_image_1ushl_13", n = "_fallback_1ushl_18", r = "_circle_1ushl_28", i = "_square_1ushl_31", a = "_small_1ushl_34", o = "_middle_1ushl_39", s = "_large_1ushl_44", c = {
|
|
3
|
+
root: e,
|
|
4
|
+
image: t,
|
|
5
|
+
fallback: n,
|
|
6
|
+
circle: r,
|
|
7
|
+
square: i,
|
|
8
|
+
small: a,
|
|
9
|
+
middle: o,
|
|
10
|
+
large: s
|
|
11
|
+
};
|
|
12
|
+
//#endregion
|
|
13
|
+
export { r as circle, c as default, n as fallback, t as image, s as large, o as middle, e as root, a as small, i as square };
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export type ButtonType = 'primary' | 'default' | 'dashed' | 'text' | 'link';
|
|
3
|
+
export type ButtonSize = 'small' | 'middle' | 'large';
|
|
4
|
+
export type ButtonHTMLType = 'submit' | 'reset' | 'button';
|
|
5
|
+
/**
|
|
6
|
+
* 动作按钮:`type` 语义 + `size` + `danger`/`ghost`/`block` 布尔态 + `icon` 插槽 +
|
|
7
|
+
* `loading`/`disabled`。`extends ButtonHTMLAttributes<button>`(`Omit` 掉受控的
|
|
8
|
+
* `type`),`...rest` 透传到根 `<button>`。
|
|
9
|
+
*
|
|
10
|
+
* 跨-prop 注意事项:
|
|
11
|
+
* - **`type="primary"`** 是强调填充 CTA(`--stitch-accent` 填充 + `--stitch-accent-text`);
|
|
12
|
+
* 圆角由 `--stitch-radius-button` 决定(每站不同)。
|
|
13
|
+
* - **`icon`** 传你自己的 `<Icon>`(Button 只做插槽包裹,本体不产出任何图标);`loading` 时
|
|
14
|
+
* icon 隐藏。
|
|
15
|
+
* - **`loading`** = 非交互(`pointer-events:none`)+ `aria-busy` + 暗淡,不带内建加载动画
|
|
16
|
+
* (需要动效由消费者按 `--stitch-motion-*` 自行加)。
|
|
17
|
+
* - **Accessibility**:纯图标按钮请传 `aria-label`;`disabled` 走原生 `disabled` 属性
|
|
18
|
+
* (自动阻断点击与键盘)。
|
|
19
|
+
* - **Do NOT** 传 emoji / Unicode 符号 / 裸 `<svg>` 作图标——一律经 `<Icon>`。
|
|
20
|
+
*/
|
|
21
|
+
export interface ButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'type'> {
|
|
22
|
+
/** 按钮类型 */
|
|
23
|
+
type?: ButtonType;
|
|
24
|
+
/** 尺寸 */
|
|
25
|
+
size?: ButtonSize;
|
|
26
|
+
/**
|
|
27
|
+
* 危险按钮样式
|
|
28
|
+
* @default false
|
|
29
|
+
*/
|
|
30
|
+
danger?: boolean;
|
|
31
|
+
/**
|
|
32
|
+
* 幽灵按钮(透明填充)
|
|
33
|
+
* @default false
|
|
34
|
+
*/
|
|
35
|
+
ghost?: boolean;
|
|
36
|
+
/**
|
|
37
|
+
* 块级按钮(撑满宽度)
|
|
38
|
+
* @default false
|
|
39
|
+
*/
|
|
40
|
+
block?: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* 加载状态(非交互 + `aria-busy`;loading 时不渲染 icon)
|
|
43
|
+
* @default false
|
|
44
|
+
*/
|
|
45
|
+
loading?: boolean;
|
|
46
|
+
/**
|
|
47
|
+
* 禁用状态
|
|
48
|
+
* @default false
|
|
49
|
+
*/
|
|
50
|
+
disabled?: boolean;
|
|
51
|
+
/** 图标节点(传入自己的 `<Icon>`;loading 时隐藏) */
|
|
52
|
+
icon?: React.ReactNode;
|
|
53
|
+
/**
|
|
54
|
+
* 原生 button type
|
|
55
|
+
* @default 'button'
|
|
56
|
+
*/
|
|
57
|
+
htmlType?: ButtonHTMLType;
|
|
58
|
+
children?: React.ReactNode;
|
|
59
|
+
}
|
|
60
|
+
export declare const Button: React.FC<ButtonProps>;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import e from "./button.module.js";
|
|
2
|
+
import "react";
|
|
3
|
+
import t from "clsx";
|
|
4
|
+
import { jsx as n, jsxs as r } from "react/jsx-runtime";
|
|
5
|
+
//#region packages/react/src/components/Button/Button.tsx
|
|
6
|
+
var i = ({ type: i = "default", size: a = "middle", danger: o = !1, ghost: s = !1, block: c = !1, loading: l = !1, disabled: u = !1, icon: d, htmlType: f = "button", className: p, children: m, ...h }) => {
|
|
7
|
+
let g = t(e.btn, e[`btn-${i}`], e[`btn-${a}`], o && e["btn-danger"], s && e["btn-ghost"], c && e["btn-block"], l && e["btn-loading"], p);
|
|
8
|
+
return /* @__PURE__ */ r("button", {
|
|
9
|
+
type: f,
|
|
10
|
+
className: g,
|
|
11
|
+
disabled: u,
|
|
12
|
+
"aria-busy": l || void 0,
|
|
13
|
+
...h,
|
|
14
|
+
children: [d && !l && /* @__PURE__ */ n("span", {
|
|
15
|
+
className: e["btn-icon"],
|
|
16
|
+
children: d
|
|
17
|
+
}), m && /* @__PURE__ */ n("span", { children: m })]
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
i.displayName = "Button";
|
|
21
|
+
//#endregion
|
|
22
|
+
export { i as Button };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
//#region packages/react/src/components/Button/button.module.less
|
|
2
|
+
var e = "_btn_18xhb_1", t = {
|
|
3
|
+
btn: e,
|
|
4
|
+
"btn-small": "_btn-small_18xhb_29",
|
|
5
|
+
"btn-middle": "_btn-middle_18xhb_34",
|
|
6
|
+
"btn-large": "_btn-large_18xhb_39",
|
|
7
|
+
"btn-default": "_btn-default_18xhb_44",
|
|
8
|
+
"btn-primary": "_btn-primary_18xhb_61",
|
|
9
|
+
"btn-ghost": "_btn-ghost_18xhb_79",
|
|
10
|
+
"btn-dashed": "_btn-dashed_18xhb_83",
|
|
11
|
+
"btn-text": "_btn-text_18xhb_99",
|
|
12
|
+
"btn-link": "_btn-link_18xhb_111",
|
|
13
|
+
"btn-danger": "_btn-danger_18xhb_123",
|
|
14
|
+
"btn-block": "_btn-block_18xhb_178",
|
|
15
|
+
"btn-loading": "_btn-loading_18xhb_182",
|
|
16
|
+
"btn-icon": "_btn-icon_18xhb_187"
|
|
17
|
+
};
|
|
18
|
+
//#endregion
|
|
19
|
+
export { e as btn, t as default };
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* 表面处理(结构语义,非「长相」):
|
|
4
|
+
* - `outlined` 内容卡:描边 + 极淡升起影(结构主力卡);
|
|
5
|
+
* - `elevated` 浮动卡:无边、有阴影(真正抬起的浮层卡);
|
|
6
|
+
* - `filled` 中性卡:填充底、无边无影(扁平中性卡);
|
|
7
|
+
* - `dashed` 虚线卡:虚线描边。
|
|
8
|
+
*/
|
|
9
|
+
export type CardVariant = 'outlined' | 'elevated' | 'filled' | 'dashed';
|
|
10
|
+
/**
|
|
11
|
+
* 颜色 = 语义状态 + 强调面 + 抽象分类槽(非「长相制」):
|
|
12
|
+
* - `default`:中性面(跟随 variant 的底/描边);
|
|
13
|
+
* - `accent`:强调面(走契约 `--stitch-bg-accent` + `--stitch-text-on-accent`);
|
|
14
|
+
* - 语义:`danger` / `success` / `warning` / `info`,走状态角色变量(软底 + 深同色字);
|
|
15
|
+
* - 分类:`cat-1…cat-6`,走契约分类色槽 `--stitch-cat-*`,只为「互相区分」而非表状态。
|
|
16
|
+
*/
|
|
17
|
+
export type CardColor = 'default' | 'accent' | 'danger' | 'success' | 'warning' | 'info' | 'cat-1' | 'cat-2' | 'cat-3' | 'cat-4' | 'cat-5' | 'cat-6';
|
|
18
|
+
/**
|
|
19
|
+
* 容器卡片:`children` 内容 + `variant` 表面处理 + `color` 颜色 + `hoverable`。
|
|
20
|
+
* `extends HTMLAttributes<HTMLDivElement>`,`...rest` 透传到根 `<div>`
|
|
21
|
+
* (`onClick` / `style` / `role` / `aria-*` / `tabIndex`);无内部状态或 hook。
|
|
22
|
+
*
|
|
23
|
+
* 跨-prop 注意事项:
|
|
24
|
+
* - **文字色与面色分离,保证可读 ≥AA**:任何 `color` 下文字都不直取身份色,而是由面色
|
|
25
|
+
* 派生出足够深的墨色(语义色、分类槽、`accent` 强调面同理)——消费者无需自行处理对比。
|
|
26
|
+
* - **可聚焦焦点环**:当消费者用 `tabIndex` / `onClick` 令卡片可聚焦时,焦点环自动走
|
|
27
|
+
* `--stitch-focus-ring` 呈现。
|
|
28
|
+
* - `color` 与 `variant` 正交:颜色只改面/字/描边三个局部变量,任一 `variant` 都能承载任一 `color`。
|
|
29
|
+
*/
|
|
30
|
+
export interface CardProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
31
|
+
/**
|
|
32
|
+
* 表面处理(描边 / 阴影 / 填充语义)
|
|
33
|
+
* @default 'outlined'
|
|
34
|
+
*/
|
|
35
|
+
variant?: CardVariant;
|
|
36
|
+
/**
|
|
37
|
+
* 颜色(语义状态 + 强调面 + 抽象分类槽)
|
|
38
|
+
* @default 'default'
|
|
39
|
+
*/
|
|
40
|
+
color?: CardColor;
|
|
41
|
+
/**
|
|
42
|
+
* 是否启用 hover 效果(cursor pointer + 抬起 -2px + 阴影)。
|
|
43
|
+
* 默认 `false`(只读卡片);设为 `true` 开启(可点击卡片 / 列表项等交互场景)。
|
|
44
|
+
* @default false
|
|
45
|
+
*/
|
|
46
|
+
hoverable?: boolean;
|
|
47
|
+
/** 自定义内容 */
|
|
48
|
+
children?: React.ReactNode;
|
|
49
|
+
}
|
|
50
|
+
export declare const Card: React.FC<CardProps>;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import e from "./card.module.js";
|
|
2
|
+
import "react";
|
|
3
|
+
import t from "clsx";
|
|
4
|
+
import { jsx as n } from "react/jsx-runtime";
|
|
5
|
+
//#region packages/react/src/components/Card/Card.tsx
|
|
6
|
+
var r = {
|
|
7
|
+
outlined: e["card-outlined"],
|
|
8
|
+
elevated: e["card-elevated"],
|
|
9
|
+
filled: e["card-filled"],
|
|
10
|
+
dashed: e["card-dashed"]
|
|
11
|
+
}, i = (t) => t === "default" ? "" : e[`color-${t}`], a = ({ variant: a = "outlined", color: o = "default", hoverable: s = !1, className: c, children: l, ...u }) => {
|
|
12
|
+
let d = t(e.card, r[a], i(o), s && e["card-hoverable"], c);
|
|
13
|
+
return /* @__PURE__ */ n("div", {
|
|
14
|
+
className: d,
|
|
15
|
+
...u,
|
|
16
|
+
children: l
|
|
17
|
+
});
|
|
18
|
+
};
|
|
19
|
+
a.displayName = "Card";
|
|
20
|
+
//#endregion
|
|
21
|
+
export { a as Card };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
//#region packages/react/src/components/Card/card.module.less
|
|
2
|
+
var e = "_card_yd0px_1", t = {
|
|
3
|
+
card: e,
|
|
4
|
+
"card-outlined": "_card-outlined_yd0px_20",
|
|
5
|
+
"card-elevated": "_card-elevated_yd0px_24",
|
|
6
|
+
"card-filled": "_card-filled_yd0px_27",
|
|
7
|
+
"card-dashed": "_card-dashed_yd0px_30",
|
|
8
|
+
"color-accent": "_color-accent_yd0px_35",
|
|
9
|
+
"color-danger": "_color-danger_yd0px_40",
|
|
10
|
+
"color-success": "_color-success_yd0px_45",
|
|
11
|
+
"color-warning": "_color-warning_yd0px_50",
|
|
12
|
+
"color-info": "_color-info_yd0px_55",
|
|
13
|
+
"color-cat-1": "_color-cat-1_yd0px_60",
|
|
14
|
+
"color-cat-2": "_color-cat-2_yd0px_65",
|
|
15
|
+
"color-cat-3": "_color-cat-3_yd0px_70",
|
|
16
|
+
"color-cat-4": "_color-cat-4_yd0px_75",
|
|
17
|
+
"color-cat-5": "_color-cat-5_yd0px_80",
|
|
18
|
+
"color-cat-6": "_color-cat-6_yd0px_85",
|
|
19
|
+
"card-hoverable": "_card-hoverable_yd0px_90"
|
|
20
|
+
};
|
|
21
|
+
//#endregion
|
|
22
|
+
export { e as card, t as default };
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export type CheckboxSize = 'small' | 'middle' | 'large';
|
|
3
|
+
export interface CheckboxOption {
|
|
4
|
+
/** 选项标签 */
|
|
5
|
+
label: React.ReactNode;
|
|
6
|
+
/** 选项值 */
|
|
7
|
+
value: string | number;
|
|
8
|
+
/** 是否禁用该选项 */
|
|
9
|
+
disabled?: boolean;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* 多选组(Ant `Checkbox.Group` 语义):`options` + `value` / `defaultValue` 为**数组**、
|
|
13
|
+
* `onChange` 收整组选中值数组。与 Radio(单选、标量)成对——多选用勾标记、单选用圆点。
|
|
14
|
+
*
|
|
15
|
+
* 跨-prop 注意事项:
|
|
16
|
+
* - **受控/非受控双模式**:给 `value` 由父管,只给 `defaultValue` 组件自管。
|
|
17
|
+
* - **勾选标记走 `<Icon name="check">`**(装饰 `aria-hidden`),非裸 `<svg>`;勾色随
|
|
18
|
+
* `--stitch-accent-text`(与填充面成对比)。选中态为纯淡入,无爆闪/勾线动画。
|
|
19
|
+
* - **键盘**:原生 `<input type="checkbox">`,Tab 可聚焦、Space 切换;聚焦环
|
|
20
|
+
* `:focus-visible` + `--stitch-focus-ring`。
|
|
21
|
+
* - **盒子结构**:1px 边框(`--stitch-border`,hover 未选中项 → `--stitch-border-strong`),
|
|
22
|
+
* 填充白面 `--stitch-bg-elevated`;选中填 `--stitch-accent` + 边 `--stitch-accent-active`。
|
|
23
|
+
* 圆角走表单控件档 `--stitch-radius-input`(随主题变)。
|
|
24
|
+
*/
|
|
25
|
+
export interface CheckboxProps {
|
|
26
|
+
/** 选中的值列表(受控) */
|
|
27
|
+
value?: Array<string | number>;
|
|
28
|
+
/** 默认选中的值列表(非受控) */
|
|
29
|
+
defaultValue?: Array<string | number>;
|
|
30
|
+
/** 选项列表 */
|
|
31
|
+
options: CheckboxOption[];
|
|
32
|
+
/** 尺寸 */
|
|
33
|
+
size?: CheckboxSize;
|
|
34
|
+
/** 禁用全部 */
|
|
35
|
+
disabled?: boolean;
|
|
36
|
+
/** 布局方向 */
|
|
37
|
+
direction?: 'horizontal' | 'vertical';
|
|
38
|
+
/** 变化回调 */
|
|
39
|
+
onChange?: (values: Array<string | number>) => void;
|
|
40
|
+
/** 自定义类名 */
|
|
41
|
+
className?: string;
|
|
42
|
+
/** 自定义样式 */
|
|
43
|
+
style?: React.CSSProperties;
|
|
44
|
+
}
|
|
45
|
+
export declare const Checkbox: React.FC<CheckboxProps>;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { Icon as e } from "../Icon/Icon.js";
|
|
2
|
+
import t from "./checkbox.module.js";
|
|
3
|
+
import { useCallback as n, useId as r, useState as i } from "react";
|
|
4
|
+
import a from "clsx";
|
|
5
|
+
import { jsx as o, jsxs as s } from "react/jsx-runtime";
|
|
6
|
+
//#region packages/react/src/components/Checkbox/Checkbox.tsx
|
|
7
|
+
var c = {
|
|
8
|
+
small: 12,
|
|
9
|
+
middle: 15,
|
|
10
|
+
large: 19
|
|
11
|
+
}, l = ({ value: l, defaultValue: u = [], options: d, size: f = "middle", disabled: p = !1, direction: m = "horizontal", onChange: h, className: g, style: _ }) => {
|
|
12
|
+
let [v, y] = i(u), b = l !== void 0, x = b ? l : v, S = `stitch-cbx-${r().replace(/:/g, "")}`, C = n((e, t) => {
|
|
13
|
+
if (p || t) return;
|
|
14
|
+
let n = x.includes(e) ? x.filter((t) => t !== e) : [...x, e];
|
|
15
|
+
b || y(n), h?.(n);
|
|
16
|
+
}, [
|
|
17
|
+
p,
|
|
18
|
+
x,
|
|
19
|
+
b,
|
|
20
|
+
h
|
|
21
|
+
]);
|
|
22
|
+
return /* @__PURE__ */ o("div", {
|
|
23
|
+
role: "group",
|
|
24
|
+
className: a(t.checkboxGroup, t[m], p && t.groupDisabled, g),
|
|
25
|
+
style: _,
|
|
26
|
+
children: d.map((n, r) => {
|
|
27
|
+
let i = x.includes(n.value), l = p || n.disabled, u = `${S}-${r}`;
|
|
28
|
+
return /* @__PURE__ */ s("label", {
|
|
29
|
+
className: a(t.checkboxItem, t[f], {
|
|
30
|
+
[t.checked]: i,
|
|
31
|
+
[t.disabled]: l
|
|
32
|
+
}),
|
|
33
|
+
children: [/* @__PURE__ */ s("span", {
|
|
34
|
+
className: t.cbx,
|
|
35
|
+
children: [/* @__PURE__ */ o("input", {
|
|
36
|
+
id: u,
|
|
37
|
+
type: "checkbox",
|
|
38
|
+
checked: i,
|
|
39
|
+
disabled: l,
|
|
40
|
+
onChange: () => C(n.value, n.disabled)
|
|
41
|
+
}), /* @__PURE__ */ o(e, {
|
|
42
|
+
name: "check",
|
|
43
|
+
size: c[f],
|
|
44
|
+
className: t.check
|
|
45
|
+
})]
|
|
46
|
+
}), /* @__PURE__ */ o("span", {
|
|
47
|
+
className: t.label,
|
|
48
|
+
children: n.label
|
|
49
|
+
})]
|
|
50
|
+
}, String(n.value));
|
|
51
|
+
})
|
|
52
|
+
});
|
|
53
|
+
};
|
|
54
|
+
l.displayName = "Checkbox";
|
|
55
|
+
//#endregion
|
|
56
|
+
export { l as Checkbox };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
//#region packages/react/src/components/Checkbox/checkbox.module.less
|
|
2
|
+
var e = "_checkboxGroup_19g9k_1", t = "_horizontal_19g9k_7", n = "_vertical_19g9k_10", r = "_checkboxItem_19g9k_14", i = "_small_19g9k_22", a = "_label_19g9k_25", o = "_middle_19g9k_28", s = "_large_19g9k_34", c = "_cbx_19g9k_40", l = "_check_19g9k_1", u = "_disabled_19g9k_97", d = "_groupDisabled_19g9k_111", f = {
|
|
3
|
+
checkboxGroup: e,
|
|
4
|
+
horizontal: t,
|
|
5
|
+
vertical: n,
|
|
6
|
+
checkboxItem: r,
|
|
7
|
+
small: i,
|
|
8
|
+
label: a,
|
|
9
|
+
middle: o,
|
|
10
|
+
large: s,
|
|
11
|
+
cbx: c,
|
|
12
|
+
check: l,
|
|
13
|
+
disabled: u,
|
|
14
|
+
groupDisabled: d
|
|
15
|
+
};
|
|
16
|
+
//#endregion
|
|
17
|
+
export { c as cbx, l as check, e as checkboxGroup, r as checkboxItem, f as default, u as disabled, d as groupDisabled, t as horizontal, a as label, s as large, o as middle, i as small, n as vertical };
|