@bysages/react 0.2.1 → 0.2.3

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 (263) hide show
  1. package/dist/ai-response-jZy-0Tvv.mjs +127 -0
  2. package/dist/chevron-BeHvt46K.mjs +17 -0
  3. package/dist/components/accordion/index.d.mts +7 -0
  4. package/dist/components/accordion/index.mjs +10 -0
  5. package/dist/components/affix/index.d.mts +20 -0
  6. package/dist/components/affix/index.mjs +18 -0
  7. package/dist/components/ai/index.d.mts +2 -0
  8. package/dist/components/ai/index.mjs +65 -0
  9. package/dist/components/ai-action/index.d.mts +14 -0
  10. package/dist/components/ai-action/index.mjs +18 -0
  11. package/dist/components/ai-attachments/index.d.mts +19 -0
  12. package/dist/components/ai-attachments/index.mjs +106 -0
  13. package/dist/components/ai-message/index.d.mts +11 -0
  14. package/dist/components/ai-message/index.mjs +15 -0
  15. package/dist/components/ai-prompt-input/index.d.mts +47 -0
  16. package/dist/components/ai-prompt-input/index.mjs +135 -0
  17. package/dist/components/ai-reasoning/index.d.mts +13 -0
  18. package/dist/components/ai-reasoning/index.mjs +19 -0
  19. package/dist/components/ai-response/index.d.mts +22 -0
  20. package/dist/components/ai-response/index.mjs +2 -0
  21. package/dist/components/ai-source/index.d.mts +17 -0
  22. package/dist/components/ai-source/index.mjs +27 -0
  23. package/dist/components/ai-suggestion/index.d.mts +13 -0
  24. package/dist/components/ai-suggestion/index.mjs +16 -0
  25. package/dist/components/ai-tool/index.d.mts +21 -0
  26. package/dist/components/ai-tool/index.mjs +36 -0
  27. package/dist/components/alert/index.d.mts +23 -0
  28. package/dist/components/alert/index.mjs +80 -0
  29. package/dist/components/angle-slider/index.d.mts +16 -0
  30. package/dist/components/angle-slider/index.mjs +21 -0
  31. package/dist/components/aspect-ratio/index.d.mts +10 -0
  32. package/dist/components/aspect-ratio/index.mjs +17 -0
  33. package/dist/components/autocomplete/index.d.mts +21 -0
  34. package/dist/components/autocomplete/index.mjs +35 -0
  35. package/dist/components/avatar/index.d.mts +20 -0
  36. package/dist/components/avatar/index.mjs +14 -0
  37. package/dist/components/avatar-group/index.d.mts +11 -0
  38. package/dist/components/avatar-group/index.mjs +15 -0
  39. package/dist/components/back-top/index.d.mts +29 -0
  40. package/dist/components/back-top/index.mjs +82 -0
  41. package/dist/components/badge/index.d.mts +10 -0
  42. package/dist/components/badge/index.mjs +15 -0
  43. package/dist/components/banner/index.d.mts +31 -0
  44. package/dist/components/banner/index.mjs +63 -0
  45. package/dist/components/breadcrumb/index.d.mts +32 -0
  46. package/dist/components/breadcrumb/index.mjs +35 -0
  47. package/dist/components/button/index.d.mts +19 -0
  48. package/dist/components/button/index.mjs +29 -0
  49. package/dist/components/button-group/index.d.mts +24 -0
  50. package/dist/components/button-group/index.mjs +25 -0
  51. package/dist/components/calendar/index.d.mts +17 -0
  52. package/dist/components/calendar/index.mjs +96 -0
  53. package/dist/components/card/index.d.mts +46 -0
  54. package/dist/components/card/index.mjs +44 -0
  55. package/dist/components/carousel/index.d.mts +9 -0
  56. package/dist/components/carousel/index.mjs +12 -0
  57. package/dist/components/cascade-select/index.d.mts +31 -0
  58. package/dist/components/cascade-select/index.mjs +223 -0
  59. package/dist/components/checkbox/index.d.mts +16 -0
  60. package/dist/components/checkbox/index.mjs +21 -0
  61. package/dist/components/checkbox-group/index.d.mts +28 -0
  62. package/dist/components/checkbox-group/index.mjs +65 -0
  63. package/dist/components/chip/index.d.mts +12 -0
  64. package/dist/components/chip/index.mjs +17 -0
  65. package/dist/components/client-only/index.d.mts +2 -0
  66. package/dist/components/client-only/index.mjs +2 -0
  67. package/dist/components/clipboard/index.d.mts +17 -0
  68. package/dist/components/clipboard/index.mjs +17 -0
  69. package/dist/components/collapsible/index.d.mts +7 -0
  70. package/dist/components/collapsible/index.mjs +10 -0
  71. package/dist/components/collection/index.d.mts +2 -0
  72. package/dist/components/collection/index.mjs +2 -0
  73. package/dist/components/color-picker/index.d.mts +20 -0
  74. package/dist/components/color-picker/index.mjs +25 -0
  75. package/dist/components/combobox/index.d.mts +17 -0
  76. package/dist/components/combobox/index.mjs +18 -0
  77. package/dist/components/command/index.d.mts +43 -0
  78. package/dist/components/command/index.mjs +137 -0
  79. package/dist/components/comment/index.d.mts +17 -0
  80. package/dist/components/comment/index.mjs +47 -0
  81. package/dist/components/config-provider/index.d.mts +46 -0
  82. package/dist/components/config-provider/index.mjs +41 -0
  83. package/dist/components/container/index.d.mts +13 -0
  84. package/dist/components/container/index.mjs +15 -0
  85. package/dist/components/date-input/index.d.mts +17 -0
  86. package/dist/components/date-input/index.mjs +21 -0
  87. package/dist/components/date-picker/index.d.mts +19 -0
  88. package/dist/components/date-picker/index.mjs +23 -0
  89. package/dist/components/descriptions/index.d.mts +25 -0
  90. package/dist/components/descriptions/index.mjs +32 -0
  91. package/dist/components/dialog/index.d.mts +9 -0
  92. package/dist/components/dialog/index.mjs +11 -0
  93. package/dist/components/download-trigger/index.d.mts +2 -0
  94. package/dist/components/download-trigger/index.mjs +2 -0
  95. package/dist/components/drawer/index.d.mts +9 -0
  96. package/dist/components/drawer/index.mjs +12 -0
  97. package/dist/components/dynamic-input/index.d.mts +28 -0
  98. package/dist/components/dynamic-input/index.mjs +83 -0
  99. package/dist/components/editable/index.d.mts +16 -0
  100. package/dist/components/editable/index.mjs +17 -0
  101. package/dist/components/ellipsis/index.d.mts +10 -0
  102. package/dist/components/ellipsis/index.mjs +19 -0
  103. package/dist/components/empty/index.d.mts +28 -0
  104. package/dist/components/empty/index.mjs +32 -0
  105. package/dist/components/field/index.d.mts +8 -0
  106. package/dist/components/field/index.mjs +11 -0
  107. package/dist/components/fieldset/index.d.mts +7 -0
  108. package/dist/components/fieldset/index.mjs +10 -0
  109. package/dist/components/file-upload/index.d.mts +18 -0
  110. package/dist/components/file-upload/index.mjs +23 -0
  111. package/dist/components/float-button/index.d.mts +59 -0
  112. package/dist/components/float-button/index.mjs +90 -0
  113. package/dist/components/floating-panel/index.d.mts +9 -0
  114. package/dist/components/floating-panel/index.mjs +12 -0
  115. package/dist/components/focus-trap/index.d.mts +2 -0
  116. package/dist/components/focus-trap/index.mjs +2 -0
  117. package/dist/components/form/index.d.mts +2 -0
  118. package/dist/components/form/index.mjs +67 -0
  119. package/dist/components/format/index.d.mts +9 -0
  120. package/dist/components/format/index.mjs +10 -0
  121. package/dist/components/frame/index.d.mts +10 -0
  122. package/dist/components/frame/index.mjs +12 -0
  123. package/dist/components/grid/index.d.mts +13 -0
  124. package/dist/components/grid/index.mjs +31 -0
  125. package/dist/components/highlight/index.d.mts +7 -0
  126. package/dist/components/highlight/index.mjs +11 -0
  127. package/dist/components/hover-card/index.d.mts +7 -0
  128. package/dist/components/hover-card/index.mjs +10 -0
  129. package/dist/components/icon/index.d.mts +19 -0
  130. package/dist/components/icon/index.mjs +26 -0
  131. package/dist/components/image/index.d.mts +17 -0
  132. package/dist/components/image/index.mjs +57 -0
  133. package/dist/components/image-cropper/index.d.mts +8 -0
  134. package/dist/components/image-cropper/index.mjs +11 -0
  135. package/dist/components/image-viewer/index.d.mts +18 -0
  136. package/dist/components/image-viewer/index.mjs +110 -0
  137. package/dist/components/input/index.d.mts +16 -0
  138. package/dist/components/input/index.mjs +21 -0
  139. package/dist/components/input-group/index.d.mts +17 -0
  140. package/dist/components/input-group/index.mjs +31 -0
  141. package/dist/components/json-tree-view/index.d.mts +7 -0
  142. package/dist/components/json-tree-view/index.mjs +10 -0
  143. package/dist/components/kbd/index.d.mts +6 -0
  144. package/dist/components/kbd/index.mjs +14 -0
  145. package/dist/components/layout/index.d.mts +63 -0
  146. package/dist/components/layout/index.mjs +133 -0
  147. package/dist/components/link/index.d.mts +10 -0
  148. package/dist/components/link/index.mjs +18 -0
  149. package/dist/components/list/index.d.mts +39 -0
  150. package/dist/components/list/index.mjs +66 -0
  151. package/dist/components/listbox/index.d.mts +18 -0
  152. package/dist/components/listbox/index.mjs +18 -0
  153. package/dist/components/marquee/index.d.mts +7 -0
  154. package/dist/components/marquee/index.mjs +10 -0
  155. package/dist/components/masonry/index.d.mts +11 -0
  156. package/dist/components/masonry/index.mjs +29 -0
  157. package/dist/components/mentions/index.d.mts +2 -0
  158. package/dist/components/mentions/index.mjs +2 -0
  159. package/dist/components/menu/index.d.mts +20 -0
  160. package/dist/components/menu/index.mjs +37 -0
  161. package/dist/components/menubar/index.d.mts +32 -0
  162. package/dist/components/menubar/index.mjs +35 -0
  163. package/dist/components/meter/index.d.mts +26 -0
  164. package/dist/components/meter/index.mjs +59 -0
  165. package/dist/components/navigation-menu/index.d.mts +8 -0
  166. package/dist/components/navigation-menu/index.mjs +11 -0
  167. package/dist/components/number-input/index.d.mts +16 -0
  168. package/dist/components/number-input/index.mjs +21 -0
  169. package/dist/components/page-header/index.d.mts +32 -0
  170. package/dist/components/page-header/index.mjs +34 -0
  171. package/dist/components/pagination/index.d.mts +18 -0
  172. package/dist/components/pagination/index.mjs +23 -0
  173. package/dist/components/password-input/index.d.mts +16 -0
  174. package/dist/components/password-input/index.mjs +21 -0
  175. package/dist/components/pin-input/index.d.mts +15 -0
  176. package/dist/components/pin-input/index.mjs +20 -0
  177. package/dist/components/popconfirm/index.d.mts +20 -0
  178. package/dist/components/popconfirm/index.mjs +44 -0
  179. package/dist/components/popover/index.d.mts +8 -0
  180. package/dist/components/popover/index.mjs +11 -0
  181. package/dist/components/presence/index.d.mts +2 -0
  182. package/dist/components/presence/index.mjs +2 -0
  183. package/dist/components/progress/index.d.mts +16 -0
  184. package/dist/components/progress/index.mjs +21 -0
  185. package/dist/components/progress-group/index.d.mts +22 -0
  186. package/dist/components/progress-group/index.mjs +56 -0
  187. package/dist/components/qr-code/index.d.mts +8 -0
  188. package/dist/components/qr-code/index.mjs +11 -0
  189. package/dist/components/radio-group/index.d.mts +16 -0
  190. package/dist/components/radio-group/index.mjs +21 -0
  191. package/dist/components/rating-group/index.d.mts +16 -0
  192. package/dist/components/rating-group/index.mjs +21 -0
  193. package/dist/components/scroll-area/index.d.mts +7 -0
  194. package/dist/components/scroll-area/index.mjs +10 -0
  195. package/dist/components/segment-group/index.d.mts +18 -0
  196. package/dist/components/segment-group/index.mjs +20 -0
  197. package/dist/components/select/index.d.mts +17 -0
  198. package/dist/components/select/index.mjs +18 -0
  199. package/dist/components/separator/index.d.mts +11 -0
  200. package/dist/components/separator/index.mjs +16 -0
  201. package/dist/components/signature-pad/index.d.mts +8 -0
  202. package/dist/components/signature-pad/index.mjs +11 -0
  203. package/dist/components/skeleton/index.d.mts +7 -0
  204. package/dist/components/skeleton/index.mjs +13 -0
  205. package/dist/components/slider/index.d.mts +16 -0
  206. package/dist/components/slider/index.mjs +21 -0
  207. package/dist/components/spinner/index.d.mts +9 -0
  208. package/dist/components/spinner/index.mjs +36 -0
  209. package/dist/components/split-button/index.d.mts +36 -0
  210. package/dist/components/split-button/index.mjs +71 -0
  211. package/dist/components/splitter/index.d.mts +7 -0
  212. package/dist/components/splitter/index.mjs +10 -0
  213. package/dist/components/stack/index.d.mts +11 -0
  214. package/dist/components/stack/index.mjs +32 -0
  215. package/dist/components/stat/index.d.mts +29 -0
  216. package/dist/components/stat/index.mjs +37 -0
  217. package/dist/components/steps/index.d.mts +19 -0
  218. package/dist/components/steps/index.mjs +24 -0
  219. package/dist/components/swap/index.d.mts +8 -0
  220. package/dist/components/swap/index.mjs +11 -0
  221. package/dist/components/switch/index.d.mts +16 -0
  222. package/dist/components/switch/index.mjs +21 -0
  223. package/dist/components/table/index.d.mts +79 -0
  224. package/dist/components/table/index.mjs +688 -0
  225. package/dist/components/tabs/index.d.mts +18 -0
  226. package/dist/components/tabs/index.mjs +23 -0
  227. package/dist/components/tags-input/index.d.mts +17 -0
  228. package/dist/components/tags-input/index.mjs +22 -0
  229. package/dist/components/textarea/index.d.mts +14 -0
  230. package/dist/components/textarea/index.mjs +20 -0
  231. package/dist/components/timeline/index.d.mts +24 -0
  232. package/dist/components/timeline/index.mjs +30 -0
  233. package/dist/components/timer/index.d.mts +8 -0
  234. package/dist/components/timer/index.mjs +11 -0
  235. package/dist/components/toast/index.d.mts +11 -0
  236. package/dist/components/toast/index.mjs +13 -0
  237. package/dist/components/toc/index.d.mts +7 -0
  238. package/dist/components/toc/index.mjs +10 -0
  239. package/dist/components/toggle/index.d.mts +7 -0
  240. package/dist/components/toggle/index.mjs +10 -0
  241. package/dist/components/toggle-group/index.d.mts +15 -0
  242. package/dist/components/toggle-group/index.mjs +20 -0
  243. package/dist/components/tooltip/index.d.mts +7 -0
  244. package/dist/components/tooltip/index.mjs +10 -0
  245. package/dist/components/tour/index.d.mts +11 -0
  246. package/dist/components/tour/index.mjs +13 -0
  247. package/dist/components/transfer/index.d.mts +23 -0
  248. package/dist/components/transfer/index.mjs +154 -0
  249. package/dist/components/tree-select/index.d.mts +28 -0
  250. package/dist/components/tree-select/index.mjs +157 -0
  251. package/dist/components/tree-view/index.d.mts +19 -0
  252. package/dist/components/tree-view/index.mjs +18 -0
  253. package/dist/components/typography/index.d.mts +32 -0
  254. package/dist/components/typography/index.mjs +34 -0
  255. package/dist/components/watermark/index.d.mts +16 -0
  256. package/dist/components/watermark/index.mjs +80 -0
  257. package/dist/index-DaAbbSz9.d.mts +13416 -0
  258. package/dist/index-Uefyw7Im.d.mts +108 -0
  259. package/dist/index-uPyYiWaL.d.mts +1813 -0
  260. package/dist/index.d.mts +128 -15218
  261. package/dist/index.mjs +128 -4556
  262. package/dist/mentions-DMIBCBOd.mjs +181 -0
  263. package/package.json +77 -3
@@ -0,0 +1,157 @@
1
+ import { Input } from "../input/index.mjs";
2
+ import { injectComponentStyle } from "@bysages/core";
3
+ import { jsx, jsxs } from "react/jsx-runtime";
4
+ import { useMemo, useState } from "react";
5
+ import { Popover } from "@ark-ui/react/popover";
6
+ import { Portal } from "@ark-ui/react/portal";
7
+ import { useFilter } from "@ark-ui/react/locale";
8
+ import { TreeView, createTreeCollection } from "@ark-ui/react/tree-view";
9
+ //#region src/components/tree-select/index.tsx
10
+ const chevron = /* @__PURE__ */ jsx("svg", {
11
+ viewBox: "0 0 24 24",
12
+ fill: "none",
13
+ stroke: "currentColor",
14
+ strokeWidth: 2,
15
+ strokeLinecap: "round",
16
+ strokeLinejoin: "round",
17
+ "aria-hidden": "true",
18
+ children: /* @__PURE__ */ jsx("path", { d: "m9 18 6-6-6-6" })
19
+ });
20
+ const chevronDown = /* @__PURE__ */ jsx("span", {
21
+ "data-part": "chevron",
22
+ "aria-hidden": "true",
23
+ children: chevron
24
+ });
25
+ function TreeSelectRow({ node, indexPath }) {
26
+ return /* @__PURE__ */ jsx(TreeView.NodeProvider, {
27
+ node,
28
+ indexPath,
29
+ children: node.children ? /* @__PURE__ */ jsxs(TreeView.Branch, { children: [/* @__PURE__ */ jsxs(TreeView.BranchControl, { children: [/* @__PURE__ */ jsx(TreeView.BranchIndicator, { children: chevron }), /* @__PURE__ */ jsx(TreeView.BranchText, { children: node.label })] }), /* @__PURE__ */ jsxs(TreeView.BranchContent, { children: [/* @__PURE__ */ jsx(TreeView.BranchIndentGuide, {}), node.children.map((child, index) => /* @__PURE__ */ jsx(TreeSelectRow, {
30
+ node: child,
31
+ indexPath: [...indexPath, index]
32
+ }, child.value))] })] }) : /* @__PURE__ */ jsx(TreeView.Item, {
33
+ asChild: true,
34
+ children: /* @__PURE__ */ jsx("span", {
35
+ style: {
36
+ display: "flex",
37
+ inlineSize: "100%"
38
+ },
39
+ children: /* @__PURE__ */ jsx(TreeView.ItemText, { children: node.label })
40
+ })
41
+ })
42
+ });
43
+ }
44
+ function TreeSelect({ value, data, placeholder = "Select…", filterable = false, disabled = false, size = "md", onValueChange, ...rest }) {
45
+ injectComponentStyle("tree-select");
46
+ injectComponentStyle("tree-view");
47
+ const [open, setOpen] = useState(false);
48
+ const [query, setQuery] = useState("");
49
+ const filterFns = useFilter({ sensitivity: "base" });
50
+ const collection = useMemo(() => createTreeCollection({
51
+ nodeToValue: (node) => node.value,
52
+ nodeToString: (node) => node.label,
53
+ rootNode: {
54
+ value: "ROOT",
55
+ label: "",
56
+ children: data
57
+ }
58
+ }), [data]);
59
+ const filtering = filterable && query.trim().length > 0;
60
+ /** The collection pruned to the matches — each hit keeping its
61
+ * ancestors, so a deep match still reads inside its hierarchy. */
62
+ const visibleCollection = useMemo(() => filtering ? collection.filter((node) => filterFns.contains(node.label, query.trim())) : collection, [
63
+ filtering,
64
+ collection,
65
+ filterFns,
66
+ query
67
+ ]);
68
+ const firstLevel = data.map((node) => node.value);
69
+ const expandedWhileFiltering = useMemo(() => {
70
+ if (!filtering) return void 0;
71
+ const values = [];
72
+ const walk = (nodes) => {
73
+ for (const node of nodes) if (node.children?.length) {
74
+ values.push(node.value);
75
+ walk(node.children);
76
+ }
77
+ };
78
+ walk(visibleCollection.rootNode.children ?? []);
79
+ return values;
80
+ }, [filtering, visibleCollection]);
81
+ let found;
82
+ const walk = (nodes) => {
83
+ for (const node of nodes ?? []) {
84
+ if (node.value === value) found = node.label;
85
+ walk(node.children);
86
+ }
87
+ };
88
+ walk(data);
89
+ const label = found;
90
+ function pick(details) {
91
+ const [selected] = details.selectedValue;
92
+ if (selected == null) return;
93
+ onValueChange?.(selected);
94
+ setOpen(false);
95
+ }
96
+ return /* @__PURE__ */ jsxs(Popover.Root, {
97
+ ...rest,
98
+ open,
99
+ onOpenChange: (details) => {
100
+ setOpen(details.open);
101
+ if (!details.open) setQuery("");
102
+ },
103
+ positioning: {
104
+ sameWidth: true,
105
+ placement: "bottom-start"
106
+ },
107
+ children: [/* @__PURE__ */ jsx(Popover.Trigger, {
108
+ asChild: true,
109
+ disabled,
110
+ children: /* @__PURE__ */ jsxs("button", {
111
+ type: "button",
112
+ "data-scope": "tree-select",
113
+ "data-part": "control",
114
+ "data-size": size,
115
+ "data-open": open ? "" : void 0,
116
+ "data-placeholder": label == null ? "" : void 0,
117
+ disabled,
118
+ children: [label ?? placeholder, chevronDown]
119
+ })
120
+ }), /* @__PURE__ */ jsx(Portal, { children: /* @__PURE__ */ jsx(Popover.Positioner, { children: /* @__PURE__ */ jsxs(Popover.Content, {
121
+ "data-scope": "tree-select",
122
+ "data-part": "content",
123
+ "data-size": size,
124
+ children: [filterable ? /* @__PURE__ */ jsx("div", {
125
+ "data-scope": "tree-select",
126
+ "data-part": "search",
127
+ children: /* @__PURE__ */ jsx(Input, {
128
+ size: "sm",
129
+ value: query,
130
+ onValueChange: setQuery,
131
+ placeholder: "Filter…",
132
+ "aria-label": "Filter options"
133
+ })
134
+ }) : null, /* @__PURE__ */ jsx("div", {
135
+ "data-scope": "tree-select",
136
+ "data-part": "body",
137
+ children: (visibleCollection.rootNode.children ?? []).length === 0 ? /* @__PURE__ */ jsx("p", {
138
+ "data-scope": "tree-select",
139
+ "data-part": "empty",
140
+ children: "Nothing matches"
141
+ }) : /* @__PURE__ */ jsx(TreeView.Root, {
142
+ collection: visibleCollection,
143
+ selectionMode: "single",
144
+ selectedValue: value ? [value] : [],
145
+ ...filtering ? { expandedValue: expandedWhileFiltering } : { defaultExpandedValue: firstLevel },
146
+ onSelectionChange: pick,
147
+ children: /* @__PURE__ */ jsx(TreeView.Tree, { children: visibleCollection.rootNode.children?.map((node, index) => /* @__PURE__ */ jsx(TreeSelectRow, {
148
+ node,
149
+ indexPath: [index]
150
+ }, node.value)) })
151
+ })
152
+ })]
153
+ }) }) })]
154
+ });
155
+ }
156
+ //#endregion
157
+ export { TreeSelect };
@@ -0,0 +1,19 @@
1
+ import { CollectionItem } from "@ark-ui/react/collection";
2
+ import { TreeView as TreeView$1, TreeViewRootComponentProps } from "@ark-ui/react/tree-view";
3
+ //#region src/components/tree-view/index.d.ts
4
+ /** Ark's TreeView, dressed in the paper-and-ink system: quiet rows where
5
+ * selection is pure light on the paper, one hairline plumb line per depth,
6
+ * and branches that swing open on the spring. The API is Ark's own —
7
+ * Root, Label, Tree, NodeProvider, NodeContext, Branch, BranchControl,
8
+ * BranchTrigger, BranchIndicator, BranchText, BranchContent,
9
+ * BranchIndentGuide, Item, ItemText, ItemIndicator, NodeCheckbox,
10
+ * NodeRenameInput, plus createTreeCollection. */
11
+ type TreeViewOwnProps = {
12
+ /** One rung of the row register: the rows' breathing room follows it. */
13
+ size?: "sm" | "md" | "lg";
14
+ };
15
+ declare function TreeViewRoot<T extends CollectionItem>(props: TreeViewRootComponentProps<T, TreeViewOwnProps>): import("react").JSX.Element;
16
+ export declare const TreeView: Omit<typeof TreeView$1, "Root"> & {
17
+ Root: typeof TreeViewRoot;
18
+ };
19
+ //#endregion
@@ -0,0 +1,18 @@
1
+ import { injectComponentStyle } from "@bysages/core";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import { TreeView as TreeView$1 } from "@ark-ui/react/tree-view";
4
+ //#region src/components/tree-view/index.tsx
5
+ function TreeViewRoot(props) {
6
+ const { size = "md", ...rest } = props;
7
+ return /* @__PURE__ */ jsx(TreeView$1.Root, {
8
+ ...rest,
9
+ "data-size": size
10
+ });
11
+ }
12
+ const TreeView = {
13
+ ...TreeView$1,
14
+ Root: TreeViewRoot
15
+ };
16
+ injectComponentStyle("tree-view");
17
+ //#endregion
18
+ export { TreeView };
@@ -0,0 +1,32 @@
1
+ import { HTMLAttributes } from "react";
2
+ //#region src/components/typography/index.d.ts
3
+ export declare const Typography: {
4
+ ({ children, ...rest }: HTMLAttributes<HTMLElement>): import("react").JSX.Element;
5
+ displayName: string;
6
+ } & {
7
+ Display: {
8
+ ({ children, ...rest }: HTMLAttributes<HTMLElement>): import("react").JSX.Element;
9
+ displayName: string;
10
+ };
11
+ Heading: {
12
+ ({ children, ...rest }: HTMLAttributes<HTMLElement>): import("react").JSX.Element;
13
+ displayName: string;
14
+ };
15
+ Lead: {
16
+ ({ children, ...rest }: HTMLAttributes<HTMLElement>): import("react").JSX.Element;
17
+ displayName: string;
18
+ };
19
+ Body: {
20
+ ({ children, ...rest }: HTMLAttributes<HTMLElement>): import("react").JSX.Element;
21
+ displayName: string;
22
+ };
23
+ Muted: {
24
+ ({ children, ...rest }: HTMLAttributes<HTMLElement>): import("react").JSX.Element;
25
+ displayName: string;
26
+ };
27
+ Label: {
28
+ ({ children, ...rest }: HTMLAttributes<HTMLElement>): import("react").JSX.Element;
29
+ displayName: string;
30
+ };
31
+ };
32
+ //#endregion
@@ -0,0 +1,34 @@
1
+ import { injectComponentStyle } from "@bysages/core";
2
+ import { jsx } from "react/jsx-runtime";
3
+ //#region src/components/typography/index.tsx
4
+ /** The typographic voices, named so prose can ask for one: display and
5
+ * heading ride the song-serif, the rest ride the hei. Nothing here is
6
+ * decorative — hierarchy is size, weight, and space. */
7
+ function part(name, tag) {
8
+ const Tag = tag;
9
+ const Component = ({ children, ...rest }) => /* @__PURE__ */ jsx(Tag, {
10
+ ...rest,
11
+ "data-scope": "typography",
12
+ "data-part": name.toLowerCase(),
13
+ children
14
+ });
15
+ Component.displayName = "Typography" + name;
16
+ return Component;
17
+ }
18
+ const Display = part("Display", "p");
19
+ const Heading = part("Heading", "p");
20
+ const Lead = part("Lead", "p");
21
+ const Body = part("Body", "p");
22
+ const Muted = part("Muted", "p");
23
+ const Label = part("Label", "p");
24
+ const Typography = Object.assign(Display, {
25
+ Display,
26
+ Heading,
27
+ Lead,
28
+ Body,
29
+ Muted,
30
+ Label
31
+ });
32
+ injectComponentStyle("typography");
33
+ //#endregion
34
+ export { Typography };
@@ -0,0 +1,16 @@
1
+ import { HTMLAttributes } from "react";
2
+ //#region src/components/watermark/index.d.ts
3
+ export interface WatermarkProps extends HTMLAttributes<HTMLDivElement> {
4
+ content: string;
5
+ opacity?: number;
6
+ rotate?: number;
7
+ fontSize?: string;
8
+ }
9
+ /**
10
+ * The paper bears its seal beneath the content: a canvas draws the
11
+ * text once into a tile (rotated, faint, crisp at the screen's pixel
12
+ * density) and the marks layer repeats it over the children. The seal
13
+ * redraws itself when a prop turns — and it never takes a pointer.
14
+ */
15
+ export declare function Watermark({ content, opacity, rotate, fontSize, children, ...rest }: WatermarkProps): import("react").JSX.Element;
16
+ //#endregion
@@ -0,0 +1,80 @@
1
+ import { injectComponentStyle } from "@bysages/core";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { useEffect, useState } from "react";
4
+ //#region src/components/watermark/index.tsx
5
+ /** Font-relative measures ride the root's own measure; absolute units
6
+ * pass through untouched — the canvas needs a number, the prop may
7
+ * speak in CSS. */
8
+ function toPx(size) {
9
+ const root = Number.parseFloat(getComputedStyle(document.documentElement).fontSize) || 16;
10
+ const value = Number.parseFloat(size) || 0;
11
+ if (size.includes("em")) return value * root;
12
+ return value;
13
+ }
14
+ /**
15
+ * The paper bears its seal beneath the content: a canvas draws the
16
+ * text once into a tile (rotated, faint, crisp at the screen's pixel
17
+ * density) and the marks layer repeats it over the children. The seal
18
+ * redraws itself when a prop turns — and it never takes a pointer.
19
+ */
20
+ function Watermark({ content, opacity = .06, rotate = -20, fontSize = "0.875rem", children, ...rest }) {
21
+ injectComponentStyle("watermark");
22
+ const [root, setRoot] = useState(null);
23
+ const [tile, setTile] = useState("");
24
+ useEffect(() => {
25
+ if (!root) return;
26
+ const canvas = document.createElement("canvas");
27
+ const paint = canvas.getContext("2d");
28
+ if (!paint) return;
29
+ const styles = getComputedStyle(root);
30
+ const fontSizePx = toPx(fontSize);
31
+ const font = `${styles.fontWeight} ${fontSizePx}px ${styles.fontFamily}`;
32
+ paint.font = font;
33
+ const textWidth = paint.measureText(content).width;
34
+ const margin = fontSizePx;
35
+ const boxWidth = Math.ceil(textWidth + margin * 2);
36
+ const boxHeight = Math.ceil(fontSizePx + margin * 2);
37
+ const radian = rotate * Math.PI / 180;
38
+ const cos = Math.cos(radian);
39
+ const sin = Math.sin(radian);
40
+ const width = Math.ceil(Math.abs(boxWidth * cos) + Math.abs(boxHeight * sin));
41
+ const height = Math.ceil(Math.abs(boxWidth * sin) + Math.abs(boxHeight * cos));
42
+ const dpr = window.devicePixelRatio || 1;
43
+ canvas.width = width * dpr;
44
+ canvas.height = height * dpr;
45
+ paint.scale(dpr, dpr);
46
+ paint.translate(width / 2, height / 2);
47
+ paint.rotate(radian);
48
+ paint.globalAlpha = opacity;
49
+ paint.font = font;
50
+ paint.textAlign = "center";
51
+ paint.textBaseline = "middle";
52
+ paint.fillStyle = styles.getPropertyValue("--bs-color-text-tertiary").trim() || styles.color;
53
+ paint.fillText(content, 0, 0);
54
+ setTile(`url(${canvas.toDataURL()})`);
55
+ }, [
56
+ root,
57
+ content,
58
+ opacity,
59
+ rotate,
60
+ fontSize
61
+ ]);
62
+ return /* @__PURE__ */ jsxs("div", {
63
+ ...rest,
64
+ ref: setRoot,
65
+ "data-scope": "watermark",
66
+ "data-part": "root",
67
+ children: [/* @__PURE__ */ jsx("div", {
68
+ "data-scope": "watermark",
69
+ "data-part": "content",
70
+ children
71
+ }), /* @__PURE__ */ jsx("div", {
72
+ "data-scope": "watermark",
73
+ "data-part": "marks",
74
+ "aria-hidden": "true",
75
+ style: { backgroundImage: tile }
76
+ })]
77
+ });
78
+ }
79
+ //#endregion
80
+ export { Watermark };