@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,197 @@
1
+ import { injectComponentStyle } from "@bysages/core";
2
+ import { createComponent, effect, insert, memo, mergeProps, spread, style, template } from "solid-js/web";
3
+ import { For, Show, splitProps } from "solid-js";
4
+ import { DatePicker } from "@ark-ui/solid/date-picker";
5
+ //#region src/components/calendar/index.tsx
6
+ var _tmpl$ = /*#__PURE__*/ template(`<svg width=16 height=16 viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=1.75 aria-hidden=true><path d="m9 5 7 7-7 7">`);
7
+ var _tmpl$2 = /*#__PURE__*/ template(`<div data-scope=calendar data-part=header>`);
8
+ var _tmpl$3 = /*#__PURE__*/ template(`<div>`);
9
+ function chevron(dir) {
10
+ return (() => {
11
+ var _el$ = _tmpl$();
12
+ effect((_$p) => style(_el$, dir === "left" ? { transform: "rotate(180deg)" } : void 0, _$p));
13
+ return _el$;
14
+ })();
15
+ }
16
+ /** The date-picker's month grid, standing on the page without its
17
+ * popup: always open, the trigger gone, the vessel a quiet card. The
18
+ * title zooms out through month and year grids; the grids themselves
19
+ * are the shared machinery — value, range selection, and focus ride
20
+ * Ark's own contract. */
21
+ function Calendar(props) {
22
+ injectComponentStyle("calendar");
23
+ injectComponentStyle("date-picker");
24
+ const [own, rest] = splitProps(props, [
25
+ "value",
26
+ "min",
27
+ "max",
28
+ "onValueChange"
29
+ ]);
30
+ const title = (dp) => {
31
+ const api = dp();
32
+ const d = api.focusedValue;
33
+ if (!d) return "";
34
+ if (api.view === "day") return api.format(d, {
35
+ month: "long",
36
+ year: "numeric"
37
+ });
38
+ if (api.view === "month") return api.format(d, { year: "numeric" });
39
+ const decade = Math.floor(d.year / 10) * 10;
40
+ return `${decade} - ${decade + 9}`;
41
+ };
42
+ const header = () => (() => {
43
+ var _el$2 = _tmpl$2();
44
+ insert(_el$2, createComponent(DatePicker.ViewControl, { get children() {
45
+ return [
46
+ createComponent(DatePicker.PrevTrigger, { get children() {
47
+ return chevron("left");
48
+ } }),
49
+ createComponent(DatePicker.Context, { children: (dp) => createComponent(DatePicker.ViewTrigger, { get children() {
50
+ return title(dp);
51
+ } }) }),
52
+ createComponent(DatePicker.NextTrigger, { get children() {
53
+ return chevron("right");
54
+ } })
55
+ ];
56
+ } }));
57
+ return _el$2;
58
+ })();
59
+ return (() => {
60
+ var _el$3 = _tmpl$3();
61
+ spread(_el$3, mergeProps(rest, {
62
+ "data-scope": "calendar",
63
+ "data-part": "root"
64
+ }), false, true);
65
+ insert(_el$3, createComponent(DatePicker.Root, mergeProps({
66
+ open: true,
67
+ closeOnSelect: true,
68
+ inline: true
69
+ }, () => own.value !== void 0 ? { value: own.value } : {}, () => own.min !== void 0 ? { min: own.min } : {}, () => own.max !== void 0 ? { max: own.max } : {}, {
70
+ onValueChange: (details) => own.onValueChange?.(details.value),
71
+ get children() {
72
+ return [
73
+ createComponent(DatePicker.View, {
74
+ view: "day",
75
+ get children() {
76
+ return [memo(() => header()), createComponent(DatePicker.Table, { get children() {
77
+ return [createComponent(DatePicker.TableHead, { get children() {
78
+ return createComponent(DatePicker.TableRow, { get children() {
79
+ return createComponent(DatePicker.Context, { children: (dp) => createComponent(For, {
80
+ get each() {
81
+ return dp().weekDays;
82
+ },
83
+ children: (day) => createComponent(DatePicker.TableHeader, {
84
+ get ["aria-label"]() {
85
+ return day.long;
86
+ },
87
+ get children() {
88
+ return day.narrow;
89
+ }
90
+ })
91
+ }) });
92
+ } });
93
+ } }), createComponent(DatePicker.TableBody, { get children() {
94
+ return createComponent(DatePicker.Context, { children: (dp) => createComponent(For, {
95
+ get each() {
96
+ return dp().weeks;
97
+ },
98
+ children: (week) => createComponent(DatePicker.TableRow, { get children() {
99
+ return createComponent(For, {
100
+ each: week,
101
+ children: (day) => createComponent(DatePicker.TableCell, {
102
+ value: day,
103
+ get children() {
104
+ return createComponent(DatePicker.TableCellTrigger, { get children() {
105
+ return day.day;
106
+ } });
107
+ }
108
+ })
109
+ });
110
+ } })
111
+ }) });
112
+ } })];
113
+ } })];
114
+ }
115
+ }),
116
+ createComponent(DatePicker.View, {
117
+ view: "month",
118
+ get children() {
119
+ return [memo(() => header()), createComponent(DatePicker.Table, {
120
+ columns: 3,
121
+ get children() {
122
+ return createComponent(DatePicker.TableBody, { get children() {
123
+ return createComponent(DatePicker.Context, { children: (dp) => createComponent(For, {
124
+ get each() {
125
+ return dp().getMonthsGrid({ columns: 3 });
126
+ },
127
+ children: (months) => createComponent(DatePicker.TableRow, { get children() {
128
+ return createComponent(For, {
129
+ each: months,
130
+ children: (month) => createComponent(DatePicker.TableCell, {
131
+ get value() {
132
+ return month.value;
133
+ },
134
+ columns: 3,
135
+ get children() {
136
+ return createComponent(DatePicker.TableCellTrigger, { get children() {
137
+ return month.label;
138
+ } });
139
+ }
140
+ })
141
+ });
142
+ } })
143
+ }) });
144
+ } });
145
+ }
146
+ })];
147
+ }
148
+ }),
149
+ createComponent(DatePicker.View, {
150
+ view: "year",
151
+ get children() {
152
+ return [memo(() => header()), createComponent(DatePicker.Table, {
153
+ columns: 3,
154
+ get children() {
155
+ return createComponent(DatePicker.TableBody, { get children() {
156
+ return createComponent(DatePicker.Context, { children: (dp) => createComponent(For, {
157
+ get each() {
158
+ return dp().getYearsGrid({ columns: 3 });
159
+ },
160
+ children: (years) => createComponent(DatePicker.TableRow, { get children() {
161
+ return createComponent(For, {
162
+ each: years,
163
+ children: (year) => createComponent(DatePicker.TableCell, {
164
+ get value() {
165
+ return year.value;
166
+ },
167
+ columns: 3,
168
+ get children() {
169
+ return createComponent(DatePicker.TableCellTrigger, { get children() {
170
+ return year.label;
171
+ } });
172
+ }
173
+ })
174
+ });
175
+ } })
176
+ }) });
177
+ } });
178
+ }
179
+ })];
180
+ }
181
+ })
182
+ ];
183
+ }
184
+ })), null);
185
+ insert(_el$3, createComponent(Show, {
186
+ get when() {
187
+ return rest.children;
188
+ },
189
+ get children() {
190
+ return rest.children;
191
+ }
192
+ }), null);
193
+ return _el$3;
194
+ })();
195
+ }
196
+ //#endregion
197
+ export { Calendar };
@@ -0,0 +1,11 @@
1
+ import { Component } from "solid-js";
2
+ //#region src/components/card/index.d.ts
3
+ export declare const Card: Component<Record<string, unknown>> & {
4
+ Root: Component<Record<string, unknown>>;
5
+ Header: Component<Record<string, unknown>>;
6
+ Title: Component<Record<string, unknown>>;
7
+ Description: Component<Record<string, unknown>>;
8
+ Content: Component<Record<string, unknown>>;
9
+ Footer: Component<Record<string, unknown>>;
10
+ };
11
+ //#endregion
@@ -0,0 +1,33 @@
1
+ import { injectComponentStyle } from "@bysages/core";
2
+ import { createComponent, mergeProps } from "solid-js/web";
3
+ //#region src/components/card/index.tsx
4
+ /** A vessel: round, resting at the first elevation, one hairline for its
5
+ * edge. Root, Header, Title, Description, Content, Footer — sections
6
+ * carry their own whitespace, so any subset composes. */
7
+ function part(name, tag) {
8
+ return ((props) => {
9
+ return createComponent(tag, mergeProps(props, {
10
+ "data-scope": "card",
11
+ get ["data-part"]() {
12
+ return name.toLowerCase();
13
+ }
14
+ }));
15
+ });
16
+ }
17
+ const Root = part("Root", "section");
18
+ const Header = part("Header", "header");
19
+ const Title = part("Title", "h3");
20
+ const Description = part("Description", "p");
21
+ const Content = part("Content", "div");
22
+ const Footer = part("Footer", "footer");
23
+ const Card = Object.assign(Root, {
24
+ Root,
25
+ Header,
26
+ Title,
27
+ Description,
28
+ Content,
29
+ Footer
30
+ });
31
+ injectComponentStyle("card");
32
+ //#endregion
33
+ export { Card };
@@ -0,0 +1,9 @@
1
+ import { Carousel as Carousel$1 } from "@ark-ui/solid/carousel";
2
+ //#region src/components/carousel/index.d.ts
3
+ /** Ark's Carousel, dressed in the paper-and-ink system: slides ride in one
4
+ * hairline-clipped lane, the triggers are quiet outline controls, and the
5
+ * current indicator alone carries the ink. The API is Ark's own — Root,
6
+ * Control, PrevTrigger, NextTrigger, ItemGroup, Item, IndicatorGroup,
7
+ * Indicator, AutoplayTrigger, ProgressText. */
8
+ export declare const Carousel: typeof Carousel$1;
9
+ //#endregion
@@ -0,0 +1,12 @@
1
+ import { injectComponentStyle } from "@bysages/core";
2
+ import { Carousel as Carousel$1 } from "@ark-ui/solid/carousel";
3
+ //#region src/components/carousel/index.ts
4
+ /** Ark's Carousel, dressed in the paper-and-ink system: slides ride in one
5
+ * hairline-clipped lane, the triggers are quiet outline controls, and the
6
+ * current indicator alone carries the ink. The API is Ark's own — Root,
7
+ * Control, PrevTrigger, NextTrigger, ItemGroup, Item, IndicatorGroup,
8
+ * Indicator, AutoplayTrigger, ProgressText. */
9
+ const Carousel = Carousel$1;
10
+ injectComponentStyle("carousel");
11
+ //#endregion
12
+ export { Carousel };
@@ -0,0 +1,31 @@
1
+ import { JSX } from "solid-js";
2
+ //#region src/components/cascade-select/index.d.ts
3
+ export interface CascadeSelectNode {
4
+ label: string;
5
+ value: string;
6
+ children?: CascadeSelectNode[];
7
+ disabled?: boolean;
8
+ }
9
+ export interface CascadeSelectProps extends JSX.HTMLAttributes<HTMLDivElement> {
10
+ value?: string[][];
11
+ data: CascadeSelectNode[];
12
+ placeholder?: string;
13
+ highlightTrigger?: "click" | "hover";
14
+ filterable?: boolean;
15
+ multiple?: boolean;
16
+ disabled?: boolean;
17
+ /** One rung of the control-height ladder for the trigger. */
18
+ size?: "sm" | "md" | "lg";
19
+ onValueChange?: (value: string[][]) => void;
20
+ }
21
+ /**
22
+ * A corridor of linked columns: pick a branch and the next column
23
+ * dissolves open beside it, until a leaf click settles the whole path.
24
+ * `value` is the selected path (or paths, when `multiple`) — the
25
+ * joined labels ride the trigger. `highlightTrigger: "hover"` turns the
26
+ * classic cascading menu: pointing is enough to unfold. `filterable`
27
+ * swaps the corridor for a flat list of matching paths while a query
28
+ * runs — each hit still reads as its full route.
29
+ */
30
+ export declare function CascadeSelect(props: CascadeSelectProps): JSX.Element;
31
+ //#endregion
@@ -0,0 +1,265 @@
1
+ import { Input } from "../input/index.mjs";
2
+ import { injectComponentStyle } from "@bysages/core";
3
+ import { Portal, createComponent, delegateEvents, effect, insert, mergeProps, setAttribute, spread, template } from "solid-js/web";
4
+ import { For, Show, createMemo, createSignal, createUniqueId, mergeProps as mergeProps$1, splitProps } from "solid-js";
5
+ import { useEnvironmentContext } from "@ark-ui/solid/environment";
6
+ import { useFilter, useLocaleContext } from "@ark-ui/solid/locale";
7
+ import * as cascade from "@zag-js/cascade-select";
8
+ import { normalizeProps, useMachine } from "@zag-js/solid";
9
+ //#region src/components/cascade-select/index.tsx
10
+ 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="m6 9 6 6 6-6">`);
11
+ var _tmpl$2 = /*#__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">`);
12
+ var _tmpl$3 = /*#__PURE__*/ template(`<svg viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=3 stroke-linecap=round stroke-linejoin=round aria-hidden=true><path d="m5 12.5 5 5L19 7">`);
13
+ var _tmpl$4 = /*#__PURE__*/ template(`<ul>`);
14
+ var _tmpl$5 = /*#__PURE__*/ template(`<span data-part=branch-indicator aria-hidden=true>`);
15
+ var _tmpl$6 = /*#__PURE__*/ template(`<li><span></span><span>`);
16
+ var _tmpl$7 = /*#__PURE__*/ template(`<div data-part=search>`);
17
+ var _tmpl$8 = /*#__PURE__*/ template(`<div><div><div data-part=corridor>`);
18
+ var _tmpl$9 = /*#__PURE__*/ template(`<div><div><button><span></span><span>`);
19
+ var _tmpl$0 = /*#__PURE__*/ template(`<p data-part=empty>Nothing matches`);
20
+ var _tmpl$1 = /*#__PURE__*/ template(`<button type=button data-part=match>`);
21
+ function chevronDown() {
22
+ return _tmpl$();
23
+ }
24
+ function chevronRight() {
25
+ return _tmpl$2();
26
+ }
27
+ function checkGlyph() {
28
+ return _tmpl$3();
29
+ }
30
+ /**
31
+ * A corridor of linked columns: pick a branch and the next column
32
+ * dissolves open beside it, until a leaf click settles the whole path.
33
+ * `value` is the selected path (or paths, when `multiple`) — the
34
+ * joined labels ride the trigger. `highlightTrigger: "hover"` turns the
35
+ * classic cascading menu: pointing is enough to unfold. `filterable`
36
+ * swaps the corridor for a flat list of matching paths while a query
37
+ * runs — each hit still reads as its full route.
38
+ */
39
+ function CascadeSelect(props) {
40
+ injectComponentStyle("cascade-select");
41
+ const [own, rest] = splitProps(props, [
42
+ "value",
43
+ "data",
44
+ "placeholder",
45
+ "highlightTrigger",
46
+ "filterable",
47
+ "multiple",
48
+ "disabled",
49
+ "size",
50
+ "onValueChange"
51
+ ]);
52
+ const id = createUniqueId();
53
+ const locale = useLocaleContext();
54
+ const env = useEnvironmentContext();
55
+ const collection = createMemo(() => cascade.collection({
56
+ nodeToValue: (node) => node.value,
57
+ nodeToString: (node) => node.label,
58
+ nodeToChildren: (node) => node.children ?? [],
59
+ rootNode: {
60
+ value: "ROOT",
61
+ label: "",
62
+ children: own.data
63
+ }
64
+ }));
65
+ const service = useMachine(cascade.machine, () => ({
66
+ id,
67
+ collection: collection(),
68
+ dir: locale().dir,
69
+ getRootNode: env().getRootNode.bind(env()),
70
+ disabled: own.disabled || void 0,
71
+ multiple: own.multiple || void 0,
72
+ ...own.value !== void 0 ? { value: own.value } : {},
73
+ ...own.highlightTrigger != null ? { highlightTrigger: own.highlightTrigger } : {},
74
+ onValueChange(details) {
75
+ own.onValueChange?.(details.value);
76
+ }
77
+ }));
78
+ const api = createMemo(() => cascade.connect(service, normalizeProps));
79
+ const [query, setQuery] = createSignal("");
80
+ const filterFns = useFilter({ sensitivity: "base" });
81
+ const filtering = () => own.filterable && query().trim().length > 0;
82
+ /** The corridor's answer to a query: every leaf whose route matches —
83
+ * the query may land on any hop, and the whole route still shows. */
84
+ const matchPaths = createMemo(() => {
85
+ if (!filtering()) return [];
86
+ const q = query().trim();
87
+ const hits = [];
88
+ const walk = (nodes, path, labels, matched) => {
89
+ for (const node of nodes ?? []) {
90
+ const hit = matched || filterFns().contains(node.label, q);
91
+ const nextPath = [...path, node.value];
92
+ const nextLabels = [...labels, node.label];
93
+ if (node.children?.length) walk(node.children, nextPath, nextLabels, hit);
94
+ else if (hit) hits.push({
95
+ path: nextPath,
96
+ labels: nextLabels
97
+ });
98
+ }
99
+ };
100
+ walk(own.data, [], [], false);
101
+ return hits;
102
+ });
103
+ const isSelected = (path) => (own.value ?? []).some((p) => p.join("/") === path.join("/"));
104
+ function pickMatch(path) {
105
+ if (own.multiple) {
106
+ const current = own.value ?? [];
107
+ const key = path.join("/");
108
+ const next = current.some((p) => p.join("/") === key) ? current.filter((p) => p.join("/") !== key) : [...current, path];
109
+ api().setValue(next);
110
+ } else {
111
+ api().selectValue(path);
112
+ api().setOpen(false);
113
+ }
114
+ }
115
+ /** The machine's `valueAsString` only updates through its select
116
+ * event, so an externally-set `value` would render the
117
+ * placeholder forever — resolve the labels from the data instead. */
118
+ function labelsFor(path) {
119
+ const out = [];
120
+ let nodes = own.data;
121
+ for (const value of path) {
122
+ const node = nodes?.find((n) => n.value === value);
123
+ if (!node) return null;
124
+ out.push(node.label);
125
+ nodes = node.children;
126
+ }
127
+ return out;
128
+ }
129
+ const display = () => {
130
+ const parts = (own.value ?? []).map((path) => labelsFor(path)?.join(" / ")).filter((label) => label != null);
131
+ return parts.length > 0 ? parts.join(", ") : null;
132
+ };
133
+ /** One column per walk of the highlighted path — the list binds to
134
+ * the node, the next column hangs off its highlighted child. */
135
+ function renderColumn(node, indexPath, valuePath) {
136
+ const nodeProps = {
137
+ item: node,
138
+ indexPath,
139
+ value: valuePath
140
+ };
141
+ const nodeState = () => api().getItemState(nodeProps);
142
+ const children = collection().getNodeChildren(node);
143
+ const list = (() => {
144
+ var _el$4 = _tmpl$4();
145
+ spread(_el$4, mergeProps(() => mergeProps$1(() => api().getListProps(nodeProps))), false, true);
146
+ insert(_el$4, createComponent(For, {
147
+ each: children,
148
+ children: (item, index) => {
149
+ const itemValue = collection().getNodeValue(item);
150
+ const itemProps = {
151
+ item,
152
+ indexPath: [...indexPath, index()],
153
+ value: [...valuePath, itemValue]
154
+ };
155
+ const itemState = () => api().getItemState(itemProps);
156
+ return (() => {
157
+ var _el$5 = _tmpl$6(), _el$6 = _el$5.firstChild, _el$8 = _el$6.nextSibling;
158
+ spread(_el$5, mergeProps(() => mergeProps$1(() => api().getItemProps(itemProps))), false, true);
159
+ spread(_el$6, mergeProps(() => mergeProps$1(() => api().getItemTextProps(itemProps))), false, true);
160
+ insert(_el$6, () => item.label);
161
+ insert(_el$5, createComponent(Show, {
162
+ get when() {
163
+ return itemState().hasChildren;
164
+ },
165
+ get children() {
166
+ var _el$7 = _tmpl$5();
167
+ insert(_el$7, chevronRight);
168
+ return _el$7;
169
+ }
170
+ }), _el$8);
171
+ spread(_el$8, mergeProps(() => mergeProps$1(() => api().getItemIndicatorProps(itemProps))), false, true);
172
+ insert(_el$8, checkGlyph);
173
+ return _el$5;
174
+ })();
175
+ }
176
+ }));
177
+ return _el$4;
178
+ })();
179
+ const next = nodeState().highlightedChild;
180
+ return [list, next != null && collection().isBranchNode(next) ? renderColumn(next, [...indexPath, nodeState().highlightedIndex], [...valuePath, collection().getNodeValue(next)]) : null];
181
+ }
182
+ return (() => {
183
+ var _el$9 = _tmpl$9(), _el$0 = _el$9.firstChild, _el$1 = _el$0.firstChild, _el$10 = _el$1.firstChild, _el$11 = _el$10.nextSibling;
184
+ spread(_el$9, mergeProps(rest, () => mergeProps$1(() => api().getRootProps()), { get ["data-size"]() {
185
+ return own.size ?? "md";
186
+ } }), false, true);
187
+ spread(_el$0, mergeProps(() => mergeProps$1(() => api().getControlProps())), false, true);
188
+ spread(_el$1, mergeProps(() => mergeProps$1(() => api().getTriggerProps(), {
189
+ get disabled() {
190
+ return own.disabled || void 0;
191
+ },
192
+ onclick(event) {
193
+ api().getTriggerProps().onclick?.(event);
194
+ setQuery("");
195
+ }
196
+ })), false, true);
197
+ spread(_el$10, mergeProps(() => mergeProps$1(() => api().getValueTextProps())), false, true);
198
+ insert(_el$10, () => display() ?? own.placeholder ?? "Select…");
199
+ spread(_el$11, mergeProps(() => mergeProps$1(() => api().getIndicatorProps())), false, true);
200
+ insert(_el$11, chevronDown);
201
+ insert(_el$9, createComponent(Portal, { get children() {
202
+ var _el$12 = _tmpl$8(), _el$13 = _el$12.firstChild, _el$15 = _el$13.firstChild;
203
+ spread(_el$12, mergeProps(() => mergeProps$1(() => api().getPositionerProps())), false, true);
204
+ spread(_el$13, mergeProps(() => mergeProps$1(() => api().getContentProps()), { get ["data-size"]() {
205
+ return own.size ?? "md";
206
+ } }), false, true);
207
+ insert(_el$13, createComponent(Show, {
208
+ get when() {
209
+ return own.filterable;
210
+ },
211
+ get children() {
212
+ var _el$14 = _tmpl$7();
213
+ insert(_el$14, createComponent(Input, {
214
+ size: "sm",
215
+ get value() {
216
+ return query();
217
+ },
218
+ onValueChange: setQuery,
219
+ placeholder: "Filter…",
220
+ "aria-label": "Filter options"
221
+ }));
222
+ return _el$14;
223
+ }
224
+ }), _el$15);
225
+ insert(_el$15, createComponent(Show, {
226
+ get when() {
227
+ return !filtering();
228
+ },
229
+ get fallback() {
230
+ return createComponent(Show, {
231
+ get when() {
232
+ return matchPaths().length > 0;
233
+ },
234
+ get fallback() {
235
+ return _tmpl$0();
236
+ },
237
+ get children() {
238
+ return createComponent(For, {
239
+ get each() {
240
+ return matchPaths();
241
+ },
242
+ children: (hit) => (() => {
243
+ var _el$17 = _tmpl$1();
244
+ _el$17.$$click = () => pickMatch(hit.path);
245
+ insert(_el$17, () => hit.labels.join(" / "));
246
+ effect(() => setAttribute(_el$17, "data-selected", isSelected(hit.path) || void 0));
247
+ return _el$17;
248
+ })()
249
+ });
250
+ }
251
+ });
252
+ },
253
+ get children() {
254
+ return renderColumn(collection().rootNode, [], []);
255
+ }
256
+ }));
257
+ effect(() => setAttribute(_el$15, "data-flow", filtering() ? "flat" : "columns"));
258
+ return _el$12;
259
+ } }), null);
260
+ return _el$9;
261
+ })();
262
+ }
263
+ delegateEvents(["click"]);
264
+ //#endregion
265
+ export { CascadeSelect };
@@ -0,0 +1,15 @@
1
+ import { Checkbox as Checkbox$1, CheckboxRootProps } from "@ark-ui/solid/checkbox";
2
+ //#region src/components/checkbox/index.d.ts
3
+ /** Ark's Checkbox, dressed in the paper-and-ink system: a square-cut seal
4
+ * that fills flat with primary ink when ticked, the mark springing into
5
+ * place. The API is Ark's own — Root, Label, Control, Indicator,
6
+ * HiddenInput. */
7
+ type CheckboxOwnProps = {
8
+ /** One rung for the control's box: the tick scales with it. */
9
+ size?: "sm" | "md" | "lg";
10
+ };
11
+ declare function CheckboxRoot(props: CheckboxRootProps & CheckboxOwnProps): import("solid-js").JSX.Element;
12
+ export declare const Checkbox: Omit<typeof Checkbox$1, "Root"> & {
13
+ Root: typeof CheckboxRoot;
14
+ };
15
+ //#endregion
@@ -0,0 +1,18 @@
1
+ import { injectComponentStyle } from "@bysages/core";
2
+ import { createComponent, mergeProps } from "solid-js/web";
3
+ import { splitProps } from "solid-js";
4
+ import { Checkbox as Checkbox$1 } from "@ark-ui/solid/checkbox";
5
+ //#region src/components/checkbox/index.tsx
6
+ function CheckboxRoot(props) {
7
+ const [own, rest] = splitProps(props, ["size"]);
8
+ return createComponent(Checkbox$1.Root, mergeProps(rest, { get ["data-size"]() {
9
+ return own.size ?? "md";
10
+ } }));
11
+ }
12
+ const Checkbox = {
13
+ ...Checkbox$1,
14
+ Root: CheckboxRoot
15
+ };
16
+ injectComponentStyle("checkbox");
17
+ //#endregion
18
+ export { Checkbox };
@@ -0,0 +1,28 @@
1
+ import { JSX } from "solid-js";
2
+ //#region src/components/checkbox-group/index.d.ts
3
+ export interface CheckboxOption {
4
+ label: string;
5
+ value: string;
6
+ disabled?: boolean;
7
+ }
8
+ export interface CheckboxGroupProps extends JSX.HTMLAttributes<HTMLDivElement> {
9
+ value?: string[];
10
+ options: CheckboxOption[];
11
+ layout?: "vertical" | "horizontal";
12
+ /** One register for every box: falls onto each root's data-size for
13
+ * the stylesheet to retune. */
14
+ size?: "sm" | "md" | "lg";
15
+ invalid?: boolean;
16
+ disabled?: boolean;
17
+ onValueChange?: (value: string[]) => void;
18
+ }
19
+ /**
20
+ * One question, many answers: a labelled stack (or row) of the seal-cut
21
+ * checkboxes bound to a single array. Toggling a box adds or removes its
22
+ * value; the group itself is semantics (`role="group"`), the boxes stay
23
+ * the machine-driven originals. Inside a `Field.Root` the group picks up
24
+ * the field context, so the invalid and disabled states a Form routes to
25
+ * its name dress every box at once.
26
+ */
27
+ export declare function CheckboxGroup(props: CheckboxGroupProps): JSX.Element;
28
+ //#endregion