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