@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.
Files changed (184) hide show
  1. package/README.md +7 -0
  2. package/dist/components/Accordion/Accordion.d.ts +45 -0
  3. package/dist/components/Accordion/Accordion.js +26 -0
  4. package/dist/components/Accordion/accordion.module.js +4 -0
  5. package/dist/components/Accordion/index.d.ts +2 -0
  6. package/dist/components/AlertDialog/AlertDialog.d.ts +45 -0
  7. package/dist/components/AlertDialog/AlertDialog.js +32 -0
  8. package/dist/components/AlertDialog/alert-dialog.module.js +4 -0
  9. package/dist/components/AlertDialog/index.d.ts +2 -0
  10. package/dist/components/AspectRatio/AspectRatio.d.ts +29 -0
  11. package/dist/components/AspectRatio/AspectRatio.js +15 -0
  12. package/dist/components/AspectRatio/aspect-ratio.module.js +4 -0
  13. package/dist/components/AspectRatio/index.d.ts +2 -0
  14. package/dist/components/Avatar/Avatar.d.ts +42 -0
  15. package/dist/components/Avatar/Avatar.js +21 -0
  16. package/dist/components/Avatar/avatar.module.js +13 -0
  17. package/dist/components/Avatar/index.d.ts +2 -0
  18. package/dist/components/Button/Button.d.ts +60 -0
  19. package/dist/components/Button/Button.js +22 -0
  20. package/dist/components/Button/button.module.js +19 -0
  21. package/dist/components/Button/index.d.ts +2 -0
  22. package/dist/components/Card/Card.d.ts +50 -0
  23. package/dist/components/Card/Card.js +21 -0
  24. package/dist/components/Card/card.module.js +22 -0
  25. package/dist/components/Card/index.d.ts +2 -0
  26. package/dist/components/Checkbox/Checkbox.d.ts +45 -0
  27. package/dist/components/Checkbox/Checkbox.js +56 -0
  28. package/dist/components/Checkbox/checkbox.module.js +17 -0
  29. package/dist/components/Checkbox/index.d.ts +2 -0
  30. package/dist/components/CodeBlock/CodeBlock.d.ts +10 -0
  31. package/dist/components/CodeBlock/CodeBlock.js +50 -0
  32. package/dist/components/CodeBlock/codeblock.module.js +17 -0
  33. package/dist/components/CodeBlock/index.d.ts +2 -0
  34. package/dist/components/Collapse/Collapse.d.ts +38 -0
  35. package/dist/components/Collapse/Collapse.js +50 -0
  36. package/dist/components/Collapse/collapse.module.js +13 -0
  37. package/dist/components/Collapse/index.d.ts +2 -0
  38. package/dist/components/ContextMenu/ContextMenu.d.ts +47 -0
  39. package/dist/components/ContextMenu/ContextMenu.js +50 -0
  40. package/dist/components/ContextMenu/context-menu.module.js +13 -0
  41. package/dist/components/ContextMenu/index.d.ts +2 -0
  42. package/dist/components/Divider/Divider.d.ts +50 -0
  43. package/dist/components/Divider/Divider.js +23 -0
  44. package/dist/components/Divider/divider.module.js +14 -0
  45. package/dist/components/Divider/index.d.ts +2 -0
  46. package/dist/components/Drawer/Drawer.d.ts +36 -0
  47. package/dist/components/Drawer/Drawer.js +76 -0
  48. package/dist/components/Drawer/drawer.module.js +21 -0
  49. package/dist/components/Drawer/index.d.ts +2 -0
  50. package/dist/components/DropdownMenu/DropdownMenu.d.ts +55 -0
  51. package/dist/components/DropdownMenu/DropdownMenu.js +54 -0
  52. package/dist/components/DropdownMenu/dropdown-menu.module.js +13 -0
  53. package/dist/components/DropdownMenu/index.d.ts +2 -0
  54. package/dist/components/Form/Form.d.ts +20 -0
  55. package/dist/components/Form/Form.js +105 -0
  56. package/dist/components/Form/FormItem.d.ts +3 -0
  57. package/dist/components/Form/FormItem.js +96 -0
  58. package/dist/components/Form/context.d.ts +22 -0
  59. package/dist/components/Form/context.js +5 -0
  60. package/dist/components/Form/form.module.js +25 -0
  61. package/dist/components/Form/index.d.ts +7 -0
  62. package/dist/components/Form/types.d.ts +164 -0
  63. package/dist/components/Form/types.js +6 -0
  64. package/dist/components/Form/useForm.d.ts +15 -0
  65. package/dist/components/Form/useForm.js +188 -0
  66. package/dist/components/Form/validators.d.ts +3 -0
  67. package/dist/components/Form/validators.js +73 -0
  68. package/dist/components/HoverCard/HoverCard.d.ts +47 -0
  69. package/dist/components/HoverCard/HoverCard.js +26 -0
  70. package/dist/components/HoverCard/hover-card.module.js +9 -0
  71. package/dist/components/HoverCard/index.d.ts +2 -0
  72. package/dist/components/Icon/Icon.d.ts +100 -0
  73. package/dist/components/Icon/Icon.js +150 -0
  74. package/dist/components/Icon/icon.module.js +7 -0
  75. package/dist/components/Icon/index.d.ts +2 -0
  76. package/dist/components/Image/Image.d.ts +50 -0
  77. package/dist/components/Image/Image.js +95 -0
  78. package/dist/components/Image/image.module.js +27 -0
  79. package/dist/components/Image/index.d.ts +2 -0
  80. package/dist/components/Input/Input.d.ts +41 -0
  81. package/dist/components/Input/Input.js +62 -0
  82. package/dist/components/Input/index.d.ts +2 -0
  83. package/dist/components/Input/input.module.js +17 -0
  84. package/dist/components/Label/Label.d.ts +28 -0
  85. package/dist/components/Label/Label.js +15 -0
  86. package/dist/components/Label/index.d.ts +2 -0
  87. package/dist/components/Label/label.module.js +4 -0
  88. package/dist/components/Loading/Loading.d.ts +22 -0
  89. package/dist/components/Loading/Loading.js +32 -0
  90. package/dist/components/Loading/index.d.ts +2 -0
  91. package/dist/components/Loading/loading.module.js +14 -0
  92. package/dist/components/Menubar/Menubar.d.ts +64 -0
  93. package/dist/components/Menubar/Menubar.js +70 -0
  94. package/dist/components/Menubar/index.d.ts +2 -0
  95. package/dist/components/Menubar/menubar.module.js +15 -0
  96. package/dist/components/Modal/Modal.d.ts +38 -0
  97. package/dist/components/Modal/Modal.js +68 -0
  98. package/dist/components/Modal/index.d.ts +2 -0
  99. package/dist/components/Modal/modal.module.js +13 -0
  100. package/dist/components/NavigationMenu/NavigationMenu.d.ts +47 -0
  101. package/dist/components/NavigationMenu/NavigationMenu.js +47 -0
  102. package/dist/components/NavigationMenu/index.d.ts +2 -0
  103. package/dist/components/NavigationMenu/navigation-menu.module.js +16 -0
  104. package/dist/components/Notification/Notification.d.ts +14 -0
  105. package/dist/components/Notification/Notification.js +87 -0
  106. package/dist/components/Notification/NotificationPortal.d.ts +29 -0
  107. package/dist/components/Notification/NotificationPortal.js +90 -0
  108. package/dist/components/Notification/index.d.ts +4 -0
  109. package/dist/components/Notification/notification.module.js +31 -0
  110. package/dist/components/Notification/types.d.ts +44 -0
  111. package/dist/components/OtpField/OtpField.d.ts +40 -0
  112. package/dist/components/OtpField/OtpField.js +20 -0
  113. package/dist/components/OtpField/index.d.ts +2 -0
  114. package/dist/components/OtpField/otp-field.module.js +7 -0
  115. package/dist/components/PasswordInput/PasswordInput.d.ts +36 -0
  116. package/dist/components/PasswordInput/PasswordInput.js +28 -0
  117. package/dist/components/PasswordInput/index.d.ts +2 -0
  118. package/dist/components/PasswordInput/password-input.module.js +4 -0
  119. package/dist/components/Popover/Popover.d.ts +42 -0
  120. package/dist/components/Popover/Popover.js +24 -0
  121. package/dist/components/Popover/index.d.ts +2 -0
  122. package/dist/components/Popover/popover.module.js +9 -0
  123. package/dist/components/Progress/Progress.d.ts +44 -0
  124. package/dist/components/Progress/Progress.js +55 -0
  125. package/dist/components/Progress/index.d.ts +2 -0
  126. package/dist/components/Progress/progress.module.js +21 -0
  127. package/dist/components/Radio/Radio.d.ts +47 -0
  128. package/dist/components/Radio/Radio.js +102 -0
  129. package/dist/components/Radio/index.d.ts +2 -0
  130. package/dist/components/Radio/radio.module.js +17 -0
  131. package/dist/components/ScrollArea/ScrollArea.d.ts +34 -0
  132. package/dist/components/ScrollArea/ScrollArea.js +34 -0
  133. package/dist/components/ScrollArea/index.d.ts +2 -0
  134. package/dist/components/ScrollArea/scroll-area.module.js +10 -0
  135. package/dist/components/Select/Select.d.ts +54 -0
  136. package/dist/components/Select/Select.js +118 -0
  137. package/dist/components/Select/index.d.ts +2 -0
  138. package/dist/components/Select/select.module.js +24 -0
  139. package/dist/components/Skeleton/Skeleton.d.ts +71 -0
  140. package/dist/components/Skeleton/Skeleton.js +147 -0
  141. package/dist/components/Skeleton/index.d.ts +2 -0
  142. package/dist/components/Skeleton/skeleton.module.js +16 -0
  143. package/dist/components/Slider/Slider.d.ts +58 -0
  144. package/dist/components/Slider/Slider.js +33 -0
  145. package/dist/components/Slider/index.d.ts +2 -0
  146. package/dist/components/Slider/slider.module.js +9 -0
  147. package/dist/components/Switch/Switch.d.ts +50 -0
  148. package/dist/components/Switch/Switch.js +43 -0
  149. package/dist/components/Switch/index.d.ts +2 -0
  150. package/dist/components/Switch/switch.module.js +15 -0
  151. package/dist/components/Table/Table.d.ts +65 -0
  152. package/dist/components/Table/Table.js +75 -0
  153. package/dist/components/Table/index.d.ts +2 -0
  154. package/dist/components/Table/table.module.js +21 -0
  155. package/dist/components/Tabs/Tabs.d.ts +37 -0
  156. package/dist/components/Tabs/Tabs.js +68 -0
  157. package/dist/components/Tabs/index.d.ts +2 -0
  158. package/dist/components/Tabs/tabs.module.js +13 -0
  159. package/dist/components/Tag/Tag.d.ts +67 -0
  160. package/dist/components/Tag/Tag.js +54 -0
  161. package/dist/components/Tag/index.d.ts +2 -0
  162. package/dist/components/Tag/tag.module.js +28 -0
  163. package/dist/components/Toggle/Toggle.d.ts +39 -0
  164. package/dist/components/Toggle/Toggle.js +29 -0
  165. package/dist/components/Toggle/index.d.ts +2 -0
  166. package/dist/components/Toggle/toggle.module.js +7 -0
  167. package/dist/components/ToggleGroup/ToggleGroup.d.ts +88 -0
  168. package/dist/components/ToggleGroup/ToggleGroup.js +42 -0
  169. package/dist/components/ToggleGroup/index.d.ts +2 -0
  170. package/dist/components/ToggleGroup/toggle-group.module.js +8 -0
  171. package/dist/components/Toolbar/Toolbar.d.ts +116 -0
  172. package/dist/components/Toolbar/Toolbar.js +72 -0
  173. package/dist/components/Toolbar/index.d.ts +2 -0
  174. package/dist/components/Toolbar/toolbar.module.js +14 -0
  175. package/dist/components/Tooltip/Tooltip.d.ts +41 -0
  176. package/dist/components/Tooltip/Tooltip.js +38 -0
  177. package/dist/components/Tooltip/index.d.ts +2 -0
  178. package/dist/components/Tooltip/tooltip.module.js +21 -0
  179. package/dist/components/_internal/useOverlay.d.ts +15 -0
  180. package/dist/components/_internal/useOverlay.js +55 -0
  181. package/dist/index.d.ts +82 -0
  182. package/dist/index.js +43 -0
  183. package/dist/style.css +3693 -0
  184. package/package.json +36 -0
@@ -0,0 +1,68 @@
1
+ import e from "./tabs.module.js";
2
+ import { useCallback as t, useId as n, useRef as r, useState as i } from "react";
3
+ import a from "clsx";
4
+ import { jsx as o, jsxs as s } from "react/jsx-runtime";
5
+ //#region packages/react/src/components/Tabs/Tabs.tsx
6
+ var c = ({ items: c, defaultActiveKey: l, activeKey: u, onChange: d, className: f, "aria-label": p, ...m }) => {
7
+ let [h, g] = i(l ?? c[0]?.key), _ = u !== void 0, v = _ ? u : h, y = `stitch-tabs-${n().replace(/:/g, "")}`, b = (e) => `${y}-tab-${e}`, x = (e) => `${y}-panel-${e}`, S = r(/* @__PURE__ */ new Map()), C = t((e) => {
8
+ _ || g(e), d?.(e);
9
+ }, [_, d]), w = t((e) => {
10
+ let { key: t } = e;
11
+ if (t !== "ArrowRight" && t !== "ArrowLeft" && t !== "Home" && t !== "End") return;
12
+ e.preventDefault();
13
+ let n = c.findIndex((e) => e.key === v);
14
+ if (n < 0) return;
15
+ let r = n;
16
+ t === "ArrowRight" ? r = (n + 1) % c.length : t === "ArrowLeft" ? r = (n - 1 + c.length) % c.length : t === "Home" ? r = 0 : t === "End" && (r = c.length - 1);
17
+ let i = c[r].key;
18
+ C(i), S.current.get(i)?.focus();
19
+ }, [
20
+ c,
21
+ v,
22
+ C
23
+ ]), T = c.find((e) => e.key === v);
24
+ return /* @__PURE__ */ s("div", {
25
+ className: a(e.tabs, f),
26
+ ...m,
27
+ children: [/* @__PURE__ */ o("div", {
28
+ className: e.tabList,
29
+ role: "tablist",
30
+ "aria-label": p,
31
+ "aria-orientation": "horizontal",
32
+ onKeyDown: w,
33
+ children: c.map((t) => {
34
+ let n = t.key === v;
35
+ return /* @__PURE__ */ o("button", {
36
+ ref: (e) => {
37
+ e ? S.current.set(t.key, e) : S.current.delete(t.key);
38
+ },
39
+ id: b(t.key),
40
+ type: "button",
41
+ role: "tab",
42
+ "aria-selected": n,
43
+ "aria-controls": x(t.key),
44
+ tabIndex: n ? 0 : -1,
45
+ className: a(e.tabItem, n && e.active),
46
+ onClick: () => C(t.key),
47
+ children: /* @__PURE__ */ o("span", {
48
+ className: e.tabLabel,
49
+ children: t.label
50
+ })
51
+ }, t.key);
52
+ })
53
+ }), /* @__PURE__ */ o("div", {
54
+ className: e.tabContent,
55
+ role: "tabpanel",
56
+ id: T ? x(T.key) : void 0,
57
+ "aria-labelledby": T ? b(T.key) : void 0,
58
+ tabIndex: 0,
59
+ children: /* @__PURE__ */ o("div", {
60
+ className: e.tabContentInner,
61
+ children: T?.children
62
+ }, T?.key)
63
+ })]
64
+ });
65
+ };
66
+ c.displayName = "Tabs";
67
+ //#endregion
68
+ export { c as Tabs };
@@ -0,0 +1,2 @@
1
+ export { Tabs } from './Tabs';
2
+ export type { TabsProps, TabItem } from './Tabs';
@@ -0,0 +1,13 @@
1
+ //#region packages/react/src/components/Tabs/tabs.module.less
2
+ var e = "_tabs_oy7wm_1", t = "_tabList_oy7wm_9", n = "_tabItem_oy7wm_16", r = "_active_oy7wm_30", i = "_tabLabel_oy7wm_44", a = "_tabContent_oy7wm_48", o = "_tabContentInner_oy7wm_55", s = "_fadeIn_oy7wm_1", c = {
3
+ tabs: e,
4
+ tabList: t,
5
+ tabItem: n,
6
+ active: r,
7
+ tabLabel: i,
8
+ tabContent: a,
9
+ tabContentInner: o,
10
+ fadeIn: s
11
+ };
12
+ //#endregion
13
+ export { r as active, c as default, s as fadeIn, a as tabContent, o as tabContentInner, n as tabItem, i as tabLabel, t as tabList, e as tabs };
@@ -0,0 +1,67 @@
1
+ import React from 'react';
2
+ export type TagSize = 'small' | 'middle' | 'large';
3
+ export type TagVariant = 'solid' | 'outlined' | 'dashed' | 'soft' | 'text';
4
+ /**
5
+ * 颜色 = 语义状态 + 抽象分类槽(非「长相制」):
6
+ * - 语义:`default`(中性)/ `danger` / `success` / `warning` / `info`,走状态角色变量;
7
+ * - 分类:`cat-1…cat-6`,走契约的分类色槽 `--stitch-cat-*`,只为「互相区分」而非表状态。
8
+ */
9
+ export type TagColor = 'default' | 'danger' | 'success' | 'warning' | 'info' | 'cat-1' | 'cat-2' | 'cat-3' | 'cat-4' | 'cat-5' | 'cat-6';
10
+ /**
11
+ * 标签 / 徽章(Ant `Tag` 语义):`children` 内容 + `size` + `variant` + `color` +
12
+ * `closable`/`onClose` + `onClick`(可点击)+ `disabled`。`variant` 有
13
+ * `solid`/`outlined`/`dashed`/`soft`/`text` 五档(`text` = 无底无框 ghost 排版标签),与
14
+ * `color` 正交。
15
+ *
16
+ * 跨-prop 注意事项:
17
+ * - **文字色与身份色分离,保证可读(关键)**:文字**绝不**直接用身份色——分类槽
18
+ * `--stitch-cat-*` 各主题可能填浅色,浅色当文字必失对比。故语义色文字 = 身份色混黑、分类色
19
+ * 文字 = 身份色混 `--stitch-text-primary`(兜底墨色 + 一丝色相),任意浅色都拉到可读 ≥AA;
20
+ * 身份色只用于描边 + soft/solid 底的淡色派生。`solid` = 「亮填充 + 深字」(非饱和填充白字),
21
+ * soft 比 solid 更淡,两档拉开强弱层级。
22
+ * - **可点击**:给 `onClick` → `role="button"` + `tabIndex=0` + 键盘 Enter/Space 触发
23
+ * (`:focus-visible` 焦点环走 `--stitch-focus-ring`);关闭按钮 `stopPropagation` 防冒泡到
24
+ * `onClick`。
25
+ * - **关闭图标走 `<Icon name="close">`**(`size="1em"` 跟随字号),非 emoji / Unicode `×` /
26
+ * 裸 `<svg>`;关闭按钮自带 `aria-label="close"`,内层 Icon 无 label → `aria-hidden`。
27
+ * - **无固定高度**:`inline-flex` + 纵向 padding + `line-height:1`,高度随字号自然生成;不套
28
+ * `--stitch-height-*`(那是表单控件对齐用)。
29
+ */
30
+ export interface TagProps {
31
+ /** 标签内容 */
32
+ children?: React.ReactNode;
33
+ /**
34
+ * 尺寸
35
+ * @default 'middle'
36
+ */
37
+ size?: TagSize;
38
+ /**
39
+ * 风格变体:solid 填充、outlined 描边、dashed 虚线、soft 软底、text 无底无框(ghost 排版标签)
40
+ * @default 'soft'
41
+ */
42
+ variant?: TagVariant;
43
+ /**
44
+ * 颜色(语义状态 + 分类槽)
45
+ * @default 'default'
46
+ */
47
+ color?: TagColor;
48
+ /**
49
+ * 是否可关闭(渲染关闭按钮)
50
+ * @default false
51
+ */
52
+ closable?: boolean;
53
+ /** 关闭回调 */
54
+ onClose?: (e: React.MouseEvent<HTMLElement>) => void;
55
+ /** 点击回调,开启后标签渲染为可点击(role=button + 键盘可达) */
56
+ onClick?: (e: React.MouseEvent<HTMLElement>) => void;
57
+ /**
58
+ * 禁用状态
59
+ * @default false
60
+ */
61
+ disabled?: boolean;
62
+ /** 自定义类名 */
63
+ className?: string;
64
+ /** 自定义样式 */
65
+ style?: React.CSSProperties;
66
+ }
67
+ export declare const Tag: React.FC<TagProps>;
@@ -0,0 +1,54 @@
1
+ import { Icon as e } from "../Icon/Icon.js";
2
+ import t from "./tag.module.js";
3
+ import { useCallback as n } from "react";
4
+ import r from "clsx";
5
+ import { Fragment as i, jsx as a, jsxs as o } from "react/jsx-runtime";
6
+ //#region packages/react/src/components/Tag/Tag.tsx
7
+ var s = {
8
+ small: t["size-small"],
9
+ middle: t["size-middle"],
10
+ large: t["size-large"]
11
+ }, c = {
12
+ solid: t["variant-solid"],
13
+ outlined: t["variant-outlined"],
14
+ dashed: t["variant-dashed"],
15
+ soft: t["variant-soft"],
16
+ text: t["variant-text"]
17
+ }, l = (e) => e === "default" ? "" : t[`color-${e}`], u = ({ children: u, size: d = "middle", variant: f = "soft", color: p = "default", closable: m = !1, onClose: h, onClick: g, disabled: _ = !1, className: v, style: y }) => {
18
+ let b = n((e) => {
19
+ e.stopPropagation(), !_ && h?.(e);
20
+ }, [_, h]), x = n((e) => {
21
+ _ || g?.(e);
22
+ }, [_, g]), S = n((e) => {
23
+ _ || (e.key === "Enter" || e.key === " ") && (e.preventDefault(), g?.(e));
24
+ }, [_, g]), C = !!g && !_, w = r(t.tag, s[d], c[f], l(p), _ && t["is-disabled"], C && t["is-clickable"], v), T = /* @__PURE__ */ o(i, { children: [/* @__PURE__ */ a("span", {
25
+ className: t.text,
26
+ children: u
27
+ }), m && /* @__PURE__ */ a("button", {
28
+ type: "button",
29
+ className: t.close,
30
+ "aria-label": "close",
31
+ onClick: b,
32
+ disabled: _,
33
+ children: /* @__PURE__ */ a(e, {
34
+ name: "close",
35
+ size: "1em"
36
+ })
37
+ })] });
38
+ return C ? /* @__PURE__ */ a("span", {
39
+ className: w,
40
+ style: y,
41
+ onClick: x,
42
+ role: "button",
43
+ tabIndex: 0,
44
+ onKeyDown: S,
45
+ children: T
46
+ }) : /* @__PURE__ */ a("span", {
47
+ className: w,
48
+ style: y,
49
+ children: T
50
+ });
51
+ };
52
+ u.displayName = "Tag";
53
+ //#endregion
54
+ export { u as Tag };
@@ -0,0 +1,2 @@
1
+ export { Tag } from './Tag';
2
+ export type { TagProps, TagSize, TagVariant, TagColor } from './Tag';
@@ -0,0 +1,28 @@
1
+ //#region packages/react/src/components/Tag/tag.module.less
2
+ var e = "_tag_1nt6s_1", t = "_text_1nt6s_119", n = "_close_1nt6s_126", r = {
3
+ tag: e,
4
+ "size-small": "_size-small_1nt6s_19",
5
+ "size-middle": "_size-middle_1nt6s_23",
6
+ "size-large": "_size-large_1nt6s_27",
7
+ "variant-solid": "_variant-solid_1nt6s_31",
8
+ "variant-outlined": "_variant-outlined_1nt6s_36",
9
+ "variant-dashed": "_variant-dashed_1nt6s_41",
10
+ "variant-soft": "_variant-soft_1nt6s_47",
11
+ "variant-text": "_variant-text_1nt6s_52",
12
+ "color-danger": "_color-danger_1nt6s_59",
13
+ "color-success": "_color-success_1nt6s_65",
14
+ "color-warning": "_color-warning_1nt6s_71",
15
+ "color-info": "_color-info_1nt6s_77",
16
+ "color-cat-1": "_color-cat-1_1nt6s_83",
17
+ "color-cat-2": "_color-cat-2_1nt6s_89",
18
+ "color-cat-3": "_color-cat-3_1nt6s_95",
19
+ "color-cat-4": "_color-cat-4_1nt6s_101",
20
+ "color-cat-5": "_color-cat-5_1nt6s_107",
21
+ "color-cat-6": "_color-cat-6_1nt6s_113",
22
+ text: t,
23
+ close: n,
24
+ "is-clickable": "_is-clickable_1nt6s_153",
25
+ "is-disabled": "_is-disabled_1nt6s_167"
26
+ };
27
+ //#endregion
28
+ export { n as close, r as default, e as tag, t as text };
@@ -0,0 +1,39 @@
1
+ import React from 'react';
2
+ import { type ButtonProps } from '../Button';
3
+ /**
4
+ * 两态按钮(toggle):在底件 `Button` 之上只加「按下态」那一层——底 `<button>` / 尺寸 / 图标插槽 /
5
+ * `type`·`danger`·`ghost`·`block` 皮全复用 `Button`(不重写)。相对普通 `Button` 补两点:
6
+ *
7
+ * - 内部持 `pressed` 态(**受控/非受控双模式**:`pressed` / `defaultPressed` / `onPressedChange`);
8
+ * 渲染 `aria-pressed={pressed}` + 按下选中样式(accent 填充,与 Switch/Checkbox/Radio 选中同源),
9
+ * 点击翻转。底件是原生 `<button>`,Space/Enter 天然触发翻转,无需额外键处理。
10
+ *
11
+ * 与已有 `Switch` 的边界(**别混用**):
12
+ * - **`Switch`**(`role="switch"` + `aria-checked`)= 改「设置 / 状态」的开关(如「深色模式 开/关」「通知 开/关」)——
13
+ * 语义是「打开或关闭某项功能」,通常带 on/off 视觉隐喻(轨 + 滑块)。
14
+ * - **`Toggle`**(两态按钮 + `aria-pressed`)= 工具栏里「可按住的操作按钮」(如富文本的 加粗 / 斜体,
15
+ * 或视图切换按钮)——语义是「这个动作当前处于激活/按下」,长得就是个高亮起来的按钮。
16
+ * 要「一组互斥」(如对齐 左/中/右)属 `toggle-group`,不在本件范围。
17
+ *
18
+ * 跨-prop 注意事项:
19
+ * - **受控/非受控双模式**:给 `pressed` 由父管、组件不自持;只给 `defaultPressed` 则组件自管。
20
+ * 两种模式下点击都会回调 `onPressedChange(next)`。
21
+ * - **透传底件 `Button`**:`type` / `size` / `danger` / `ghost` / `block` / `icon` / `disabled` /
22
+ * 原生 `<button>` 属性(`onClick` 等)全部透传(`onClick` 会在翻转前先被调用)。默认 `type` 沿用
23
+ * Button 的 `'default'`(有边框);工具栏场景可传 `type="text"` 取更安静的底。
24
+ * - **按下选中样式只读 `var(--stitch-accent*)`**——每站个性由 adapter 灌值,组件不硬编码 hex/圆角/字体。
25
+ * - **Accessibility**:纯图标 Toggle 请传 `aria-label`;图标一律走 `<Icon>`,**Do NOT** 传
26
+ * emoji / Unicode 符号 / 裸 `<svg>`。
27
+ */
28
+ export interface ToggleProps extends ButtonProps {
29
+ /** 是否按下(受控) */
30
+ pressed?: boolean;
31
+ /**
32
+ * 默认是否按下(非受控)
33
+ * @default false
34
+ */
35
+ defaultPressed?: boolean;
36
+ /** 按下态变化回调 */
37
+ onPressedChange?: (pressed: boolean) => void;
38
+ }
39
+ export declare const Toggle: React.FC<ToggleProps>;
@@ -0,0 +1,29 @@
1
+ import { Button as e } from "../Button/Button.js";
2
+ import t from "./toggle.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/Toggle/Toggle.tsx
7
+ var o = ({ pressed: o, defaultPressed: s = !1, onPressedChange: c, disabled: l = !1, onClick: u, className: d, ...f }) => {
8
+ let [p, m] = r(s), h = o !== void 0, g = h ? o : p, _ = n((e) => {
9
+ if (u?.(e), l) return;
10
+ let t = !g;
11
+ h || m(t), c?.(t);
12
+ }, [
13
+ u,
14
+ l,
15
+ g,
16
+ h,
17
+ c
18
+ ]);
19
+ return /* @__PURE__ */ a(e, {
20
+ ...f,
21
+ disabled: l,
22
+ "aria-pressed": g,
23
+ onClick: _,
24
+ className: i(t.toggle, g && t.pressed, d)
25
+ });
26
+ };
27
+ o.displayName = "Toggle";
28
+ //#endregion
29
+ export { o as Toggle };
@@ -0,0 +1,2 @@
1
+ export { Toggle } from './Toggle';
2
+ export type { ToggleProps } from './Toggle';
@@ -0,0 +1,7 @@
1
+ //#region packages/react/src/components/Toggle/toggle.module.less
2
+ var e = "_toggle_prlua_1", t = "_pressed_prlua_1", n = {
3
+ toggle: e,
4
+ pressed: t
5
+ };
6
+ //#endregion
7
+ export { n as default, t as pressed, e as toggle };
@@ -0,0 +1,88 @@
1
+ import React from 'react';
2
+ import { type IconName } from '../Icon';
3
+ /** 分段组里的一项 */
4
+ export interface ToggleGroupItem {
5
+ /** 该项的值(组内唯一) */
6
+ value: string;
7
+ /** 文本标签(纯图标项可省,此时以 value 作可访问名) */
8
+ label?: React.ReactNode;
9
+ /** 图标(走 <Icon>,禁裸 svg / emoji) */
10
+ icon?: IconName;
11
+ /** 单独禁用该项 */
12
+ disabled?: boolean;
13
+ }
14
+ /**
15
+ * 分段切换组(toolbar segmented control):一排相邻拼接的两态按钮,`single` 单选
16
+ * (如文本对齐 左/中/右)或 `multiple` 多选(如富文本 加粗/斜体/下划线)。组合
17
+ * Radix `ToggleGroup.Root/Item`,每项按下态用 Radix `data-state`(`on`/`off`)——
18
+ * 按下选中皮 = **软 accent 底**(`--stitch-bg-accent` + `--stitch-text-on-accent`,与
19
+ * `Toolbar` 内分段选中态同源,紧凑小圆角);**不**走 CTA 填充青,也**不**走 ink 重填充
20
+ * (那是胶囊 Tab 的语言、归 `Tabs`)——同一个分段开关独立用或嵌进 `Toolbar` 都长一样。
21
+ *
22
+ * 精确 props 分 `type` 两支:单选见 `ToggleGroupSingleProps`(值为**标量**),多选见
23
+ * `ToggleGroupMultipleProps`(值为**数组**);本接口是两支共有的基座(`items` / `disabled`
24
+ * / 命名 / 样式)。
25
+ *
26
+ * ARIA(Radix 按 `type` 自动挂,非本层控制):`single` → 根 `role="radiogroup"` + 项
27
+ * `role="radio"`(`aria-checked`);`multiple` → 根 `role="toolbar"` + 项为普通 `<button>`
28
+ * (`aria-pressed`)。
29
+ *
30
+ * 与相邻件的边界(**别混用**):
31
+ * - **vs Toggle**——那是**单个**两态按钮;ToggleGroup 是**一组**拼接的分段。
32
+ * - **vs Radio**——两者单选态 ARIA 同为 radiogroup/radio,但 **Radio 是表单控件**(真
33
+ * `<input type=radio>` + `name`、随表单提交、纵向选项列表);ToggleGroup 是**工具栏视觉分段**
34
+ * (一排 `<button>` 拼接、表达「当前视图 / 格式激活哪几段」),**不进表单、不提交**。选表单字段用
35
+ * Radio,选工具栏分段用 ToggleGroup。
36
+ * - **vs Tabs**——Tabs 切换页内**面板内容**、长相是**胶囊 Tab(ink 药丸)**;ToggleGroup 不关联
37
+ * 面板、只表达选中态,长相是**紧凑分段开关(软 accent 底)**。要「一排药丸切视图/切页」用 Tabs,
38
+ * 要「一簇格式/对齐开关」用 ToggleGroup。
39
+ * - **vs Toolbar**——Toolbar 是**容器**(一整条工具条,混排按钮/链接/分隔/分段);ToggleGroup 是
40
+ * **一簇分段控件**,可独立用、也可作为 `Toolbar.ToggleGroup` 嵌进 Toolbar。两处选中皮一致。
41
+ *
42
+ * 跨-prop 注意事项:
43
+ * - **值按 `type` 归一**:`type="single"` 时 `value`/`defaultValue`/`onChange` 全走**标量**
44
+ * (取消选中回 `''`);`type="multiple"` 时全走**数组**。底层 Radix `onValueChange` 已按
45
+ * `type` 回对应形状,本层直接映射成我们的 `onChange`。
46
+ * - **受控/非受控双模式**:给 `value` 由父管、只给 `defaultValue` 组件自管(透传底层,
47
+ * 不自持 state)。
48
+ * - **按下选中皮只读 `var(--stitch-bg-accent)` / `var(--stitch-text-on-accent)`**——每站个性由
49
+ * adapter 灌值,组件不硬编码 hex / 圆角 / 字体。
50
+ * - **Accessibility**:整组传 `aria-label` / `aria-labelledby` 命名;纯图标项(只给 `icon`
51
+ * 不给 `label`)自动以 `value` 作可访问名。图标一律走 `<Icon>`,**Do NOT** 传 emoji /
52
+ * Unicode 符号 / 裸 `<svg>`。键盘(方向键在项间漫游 + Space/Enter 翻转)/ 焦点 / ARIA 归 Radix。
53
+ */
54
+ export interface ToggleGroupProps {
55
+ /** 一排分段项 */
56
+ items: ToggleGroupItem[];
57
+ /** 禁用整组 */
58
+ disabled?: boolean;
59
+ /** 自定义类名(挂到根上) */
60
+ className?: string;
61
+ /** 自定义样式(挂根) */
62
+ style?: React.CSSProperties;
63
+ /** 整组可访问名 */
64
+ 'aria-label'?: string;
65
+ /** 整组可访问名(引用其它元素 id) */
66
+ 'aria-labelledby'?: string;
67
+ }
68
+ /** 单选分段:值为**标量**,同一时刻至多一项按下(如对齐 左/中/右) */
69
+ export interface ToggleGroupSingleProps extends ToggleGroupProps {
70
+ type: 'single';
71
+ /** 当前按下项的值(受控);未按下为 `''` */
72
+ value?: string;
73
+ /** 默认按下项的值(非受控) */
74
+ defaultValue?: string;
75
+ /** 变化回调,回**标量**(取消选中时回 `''`) */
76
+ onChange?: (value: string) => void;
77
+ }
78
+ /** 多选分段:值为**数组**,可多项同时按下(如 加粗/斜体/下划线) */
79
+ export interface ToggleGroupMultipleProps extends ToggleGroupProps {
80
+ type: 'multiple';
81
+ /** 当前按下项的值集合(受控) */
82
+ value?: string[];
83
+ /** 默认按下项的值集合(非受控) */
84
+ defaultValue?: string[];
85
+ /** 变化回调,回**数组** */
86
+ onChange?: (value: string[]) => void;
87
+ }
88
+ export declare const ToggleGroup: React.FC<ToggleGroupSingleProps | ToggleGroupMultipleProps>;
@@ -0,0 +1,42 @@
1
+ import { Icon as e } from "../Icon/Icon.js";
2
+ import t from "./toggle-group.module.js";
3
+ import "react";
4
+ import n from "clsx";
5
+ import { jsx as r, jsxs as i } from "react/jsx-runtime";
6
+ import { ToggleGroup as a } from "radix-ui";
7
+ //#region packages/react/src/components/ToggleGroup/ToggleGroup.tsx
8
+ var o = (o) => {
9
+ let { items: s, disabled: c, className: l, style: u, "aria-label": d, "aria-labelledby": f } = o, p = o.type === "single" ? {
10
+ type: "single",
11
+ value: o.value,
12
+ defaultValue: o.defaultValue,
13
+ onValueChange: o.onChange
14
+ } : {
15
+ type: "multiple",
16
+ value: o.value,
17
+ defaultValue: o.defaultValue,
18
+ onValueChange: o.onChange
19
+ };
20
+ return /* @__PURE__ */ r(a.Root, {
21
+ ...p,
22
+ disabled: c,
23
+ className: n(t.group, l),
24
+ style: u,
25
+ "aria-label": d,
26
+ "aria-labelledby": f,
27
+ children: s.map((n) => /* @__PURE__ */ i(a.Item, {
28
+ value: n.value,
29
+ disabled: n.disabled,
30
+ className: t.item,
31
+ "aria-label": n.label == null ? n.value : void 0,
32
+ children: [n.icon && /* @__PURE__ */ r(e, {
33
+ name: n.icon,
34
+ size: "1em",
35
+ className: t.itemIcon
36
+ }), n.label]
37
+ }, n.value))
38
+ });
39
+ };
40
+ o.displayName = "ToggleGroup";
41
+ //#endregion
42
+ export { o as ToggleGroup };
@@ -0,0 +1,2 @@
1
+ export { ToggleGroup } from './ToggleGroup';
2
+ export type { ToggleGroupProps, ToggleGroupSingleProps, ToggleGroupMultipleProps, ToggleGroupItem, } from './ToggleGroup';
@@ -0,0 +1,8 @@
1
+ //#region packages/react/src/components/ToggleGroup/toggle-group.module.less
2
+ var e = "_group_iw3i7_1", t = "_item_iw3i7_5", n = "_itemIcon_iw3i7_61", r = {
3
+ group: e,
4
+ item: t,
5
+ itemIcon: n
6
+ };
7
+ //#endregion
8
+ export { r as default, e as group, t as item, n as itemIcon };
@@ -0,0 +1,116 @@
1
+ import React from 'react';
2
+ import { type ToggleGroupItem } from '../ToggleGroup/ToggleGroup';
3
+ /**
4
+ * 工具栏容器(编排件):一条横向容器,盛放异构混排的动作控件——按钮 / 链接 / 分隔线 / 分段
5
+ * 切换组,统一键盘(方向键在控件间 roving)+ 给 `role="toolbar"`。组合 Radix
6
+ * `Toolbar.Root/Button/Link/Separator/ToggleGroup/ToggleItem`。**唯一走 children + 静态挂载
7
+ * 子组件**的组件(照 `Form.Item` 先例):`<Toolbar>` + `Toolbar.Button` / `Toolbar.Link` /
8
+ * `Toolbar.Separator` / `Toolbar.ToggleGroup`,**不用 `items` 数组**(Radix Toolbar 本身就是
9
+ * 异构混排、无统一 item 数据模型,数组化会很别扭)。
10
+ *
11
+ * 跨-prop 注意事项:
12
+ * - **vs 单纯并排放 `<Button>`**:Toolbar 多了 `role="toolbar"` + 方向键 roving 键盘编排
13
+ * (一次 Tab 进整条栏、方向键在控件间移动,而非每个按钮各占一个 Tab 站)。只想并排几个按钮、
14
+ * 不需要 roving/`role`,直接并排 `<Button>` 即可;需要工具栏语义与键盘编排才用 Toolbar。
15
+ * - **工具栏控件 ≠ 独立 `<Button>`(自有安静命令皮,非复用 Button 药丸皮)**:工具栏控件是
16
+ * 密集条里的紧凑安静控件(透明底 + 中性字 + hover 软底 + **小圆角 `--stitch-radius-input`,非
17
+ * 药丸**),照 `Menubar` 命令栏按钮先例,**不**套独立 Button/ToggleGroup 的填充药丸皮——否则一排
18
+ * 药丸看着像并排的独立 CTA、与工具栏认知冲突。`Toolbar.ToggleGroup` 分段选中态走**软 accent 底**
19
+ * (`data-state='on'`,同成熟工具栏参照 Radix / Docs 的激活格式钮——软色底 + accent 文字,
20
+ * 非 Tab-Pill 的 ink 重填充),圆角同样收到 `--stitch-radius-input`。
21
+ * - **方向由 `orientation`**:默认 `horizontal`(横排);`vertical` 时容器纵排、分隔线转横发丝线
22
+ * (底层在各 part 挂 `[data-orientation]`,皮据此切)。
23
+ * - **键盘 / 焦点 / ARIA / roving**(Tab 进栏、方向键在控件间移动、`role="toolbar"`)由底层
24
+ * Radix 保证,组件不重复实现。
25
+ */
26
+ export interface ToolbarProps {
27
+ /** 工具栏内容:混排 `Toolbar.Button` / `Toolbar.Link` / `Toolbar.Separator` / `Toolbar.ToggleGroup` */
28
+ children?: React.ReactNode;
29
+ /** 排布方向 @default 'horizontal' */
30
+ orientation?: 'horizontal' | 'vertical';
31
+ /** 自定义类名(挂到 `role="toolbar"` 根容器上) */
32
+ className?: string;
33
+ /** 自定义样式(挂根) */
34
+ style?: React.CSSProperties;
35
+ /** 给工具栏(`role="toolbar"`)的无障碍标签 */
36
+ 'aria-label'?: string;
37
+ /** 给工具栏的无障碍标签(引用其它元素 id) */
38
+ 'aria-labelledby'?: string;
39
+ }
40
+ /**
41
+ * 工具栏里的动作按钮:组合 Radix `Toolbar.Button`(roving 项),走**安静命令控件皮**(透明底 +
42
+ * 中性字 + hover 软底 + 小圆角,照 `Menubar` 命令按钮先例,**非**独立 Button 的填充药丸皮)。
43
+ * `danger` 危险动作走 `--stitch-danger`;图标一律走 `<Icon>`——**Do NOT** 传 emoji / Unicode
44
+ * 符号 / 裸 `<svg>`。
45
+ */
46
+ export interface ToolbarButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
47
+ /** 危险动作样式(文字走 `--stitch-danger`、hover 软底 `--stitch-danger-bg`) @default false */
48
+ danger?: boolean;
49
+ /** 图标节点(传入自己的 `<Icon>`;不接受裸 svg) */
50
+ icon?: React.ReactNode;
51
+ children?: React.ReactNode;
52
+ }
53
+ declare const ToolbarButton: React.FC<ToolbarButtonProps>;
54
+ /**
55
+ * 工具栏里的文字链接:组合 Radix `Toolbar.Link`(渲染 `<a>`、也是 roving 项),走安静导航
56
+ * 文字皮(同 NavigationMenu Link)。用于「帮助 / 文档」这类跳转,与触发动作的 `Toolbar.Button` 区分。
57
+ */
58
+ export interface ToolbarLinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {
59
+ children?: React.ReactNode;
60
+ }
61
+ declare const ToolbarLink: React.FC<ToolbarLinkProps>;
62
+ /**
63
+ * 工具栏分隔线:组合 Radix `Toolbar.Separator`(`role="separator"`),横排工具栏里渲染成一条
64
+ * 竖发丝线、把相邻控件分组。
65
+ */
66
+ export type ToolbarSeparatorProps = React.HTMLAttributes<HTMLDivElement>;
67
+ declare const ToolbarSeparator: React.FC<ToolbarSeparatorProps>;
68
+ /**
69
+ * 工具栏里的分段切换组:组合 Radix `Toolbar.ToggleGroup`/`Toolbar.ToggleItem`(工具栏内建的
70
+ * roving 分段),走工具栏安静命令控件皮,选中态(`data-state='on'`)= 软 accent 底 + accent 文字
71
+ * (同成熟工具栏参照 Radix / Docs 激活格式钮,圆角同样收到 `--stitch-radius-input` 与整条栏协调)。`type` 分单选
72
+ * (值为标量,如对齐 左/中/右)/ 多选(值为数组,如 加粗/斜体/下划线);底层 `onValueChange`
73
+ * 已按 `type` 回对应形状,本层直接映射我们的 `onChange`。
74
+ */
75
+ interface ToolbarToggleGroupBaseProps {
76
+ /** 一排分段项(复用 ToggleGroup 的 item 结构:`{ value, label?, icon?, disabled? }`) */
77
+ items: ToggleGroupItem[];
78
+ /** 禁用整组 */
79
+ disabled?: boolean;
80
+ /** 自定义类名(挂到分段组根上) */
81
+ className?: string;
82
+ /** 整组可访问名 */
83
+ 'aria-label'?: string;
84
+ /** 整组可访问名(引用其它元素 id) */
85
+ 'aria-labelledby'?: string;
86
+ }
87
+ /** 单选分段:值为**标量**,同一时刻至多一项按下 */
88
+ export interface ToolbarToggleGroupSingleProps extends ToolbarToggleGroupBaseProps {
89
+ type: 'single';
90
+ /** 当前按下项的值(受控);未按下为 `''` */
91
+ value?: string;
92
+ /** 默认按下项的值(非受控) */
93
+ defaultValue?: string;
94
+ /** 变化回调,回**标量**(取消选中时回 `''`) */
95
+ onChange?: (value: string) => void;
96
+ }
97
+ /** 多选分段:值为**数组**,可多项同时按下 */
98
+ export interface ToolbarToggleGroupMultipleProps extends ToolbarToggleGroupBaseProps {
99
+ type: 'multiple';
100
+ /** 当前按下项的值集合(受控) */
101
+ value?: string[];
102
+ /** 默认按下项的值集合(非受控) */
103
+ defaultValue?: string[];
104
+ /** 变化回调,回**数组** */
105
+ onChange?: (value: string[]) => void;
106
+ }
107
+ export type ToolbarToggleGroupProps = ToolbarToggleGroupSingleProps | ToolbarToggleGroupMultipleProps;
108
+ declare const ToolbarToggleGroup: React.FC<ToolbarToggleGroupProps>;
109
+ interface ToolbarComponent extends React.FC<ToolbarProps> {
110
+ Button: typeof ToolbarButton;
111
+ Link: typeof ToolbarLink;
112
+ Separator: typeof ToolbarSeparator;
113
+ ToggleGroup: typeof ToolbarToggleGroup;
114
+ }
115
+ export declare const Toolbar: ToolbarComponent;
116
+ export {};
@@ -0,0 +1,72 @@
1
+ import { Icon as e } from "../Icon/Icon.js";
2
+ import t from "./toolbar.module.js";
3
+ import "react";
4
+ import n from "clsx";
5
+ import { jsx as r, jsxs as i } from "react/jsx-runtime";
6
+ import { Toolbar as a } from "radix-ui";
7
+ //#region packages/react/src/components/Toolbar/Toolbar.tsx
8
+ var o = ({ danger: e = !1, icon: o, className: s, children: c, ...l }) => /* @__PURE__ */ i(a.Button, {
9
+ className: n(t.button, e && t.buttonDanger, s),
10
+ ...l,
11
+ children: [o && /* @__PURE__ */ r("span", {
12
+ className: t.buttonIcon,
13
+ children: o
14
+ }), c && /* @__PURE__ */ r("span", { children: c })]
15
+ });
16
+ o.displayName = "Toolbar.Button";
17
+ var s = ({ className: e, children: i, ...o }) => /* @__PURE__ */ r(a.Link, {
18
+ className: n(t.link, e),
19
+ ...o,
20
+ children: i
21
+ });
22
+ s.displayName = "Toolbar.Link";
23
+ var c = ({ className: e, ...i }) => /* @__PURE__ */ r(a.Separator, {
24
+ className: n(t.separator, e),
25
+ ...i
26
+ });
27
+ c.displayName = "Toolbar.Separator";
28
+ var l = (o) => {
29
+ let { items: s, disabled: c, className: l, "aria-label": u, "aria-labelledby": d } = o, f = o.type === "single" ? {
30
+ type: "single",
31
+ value: o.value,
32
+ defaultValue: o.defaultValue,
33
+ onValueChange: o.onChange
34
+ } : {
35
+ type: "multiple",
36
+ value: o.value,
37
+ defaultValue: o.defaultValue,
38
+ onValueChange: o.onChange
39
+ };
40
+ return /* @__PURE__ */ r(a.ToggleGroup, {
41
+ ...f,
42
+ disabled: c,
43
+ className: n(t.toggleGroup, l),
44
+ "aria-label": u,
45
+ "aria-labelledby": d,
46
+ children: s.map((n) => /* @__PURE__ */ i(a.ToggleItem, {
47
+ value: n.value,
48
+ disabled: n.disabled,
49
+ className: t.toggleItem,
50
+ "aria-label": n.label == null ? n.value : void 0,
51
+ children: [n.icon && /* @__PURE__ */ r(e, {
52
+ name: n.icon,
53
+ size: "1em",
54
+ className: t.itemIcon
55
+ }), n.label]
56
+ }, n.value))
57
+ });
58
+ };
59
+ l.displayName = "Toolbar.ToggleGroup";
60
+ var u = ({ children: e, orientation: i = "horizontal", className: o, style: s, "aria-label": c, "aria-labelledby": l }) => /* @__PURE__ */ r(a.Root, {
61
+ orientation: i,
62
+ className: n(t.root, o),
63
+ style: s,
64
+ "aria-label": c,
65
+ "aria-labelledby": l,
66
+ children: e
67
+ });
68
+ u.displayName = "Toolbar";
69
+ var d = u;
70
+ d.Button = o, d.Link = s, d.Separator = c, d.ToggleGroup = l;
71
+ //#endregion
72
+ export { d as Toolbar };