@bysages/solid 0.2.3 → 0.3.1

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 (154) hide show
  1. package/README.md +16 -2
  2. package/dist/{ai-response-B_586r27.mjs → ai-response-slzE03wh.mjs} +19 -17
  3. package/dist/chevron-D5RzcayK.mjs +9 -0
  4. package/dist/components/affix/index.mjs +15 -17
  5. package/dist/components/ai/index.d.mts +1 -1
  6. package/dist/components/ai/index.mjs +21 -22
  7. package/dist/components/ai-action/index.mjs +2 -2
  8. package/dist/components/ai-attachments/index.mjs +52 -38
  9. package/dist/components/ai-message/index.mjs +11 -13
  10. package/dist/components/ai-prompt-input/index.mjs +81 -55
  11. package/dist/components/ai-reasoning/index.mjs +10 -6
  12. package/dist/components/ai-response/index.mjs +1 -1
  13. package/dist/components/ai-source/index.mjs +23 -23
  14. package/dist/components/ai-suggestion/index.mjs +1 -1
  15. package/dist/components/ai-tool/index.mjs +29 -17
  16. package/dist/components/alert/index.mjs +37 -42
  17. package/dist/components/angle-slider/index.mjs +2 -2
  18. package/dist/components/aspect-ratio/index.mjs +14 -16
  19. package/dist/components/autocomplete/index.mjs +8 -3
  20. package/dist/components/avatar/index.d.mts +3 -0
  21. package/dist/components/avatar/index.mjs +10 -5
  22. package/dist/components/avatar-group/index.mjs +11 -13
  23. package/dist/components/back-top/index.mjs +31 -27
  24. package/dist/components/badge/index.mjs +14 -16
  25. package/dist/components/banner/index.mjs +26 -28
  26. package/dist/components/bento/index.d.mts +24 -0
  27. package/dist/components/bento/index.mjs +51 -0
  28. package/dist/components/block-ui/index.d.mts +12 -0
  29. package/dist/components/block-ui/index.mjs +43 -0
  30. package/dist/components/breadcrumb/index.mjs +12 -10
  31. package/dist/components/browser/index.d.mts +21 -0
  32. package/dist/components/browser/index.mjs +87 -0
  33. package/dist/components/button/index.mjs +27 -29
  34. package/dist/components/button-group/index.mjs +18 -20
  35. package/dist/components/calendar/index.mjs +141 -129
  36. package/dist/components/card/index.mjs +2 -2
  37. package/dist/components/cascade-select/index.mjs +167 -121
  38. package/dist/components/checkbox/index.mjs +2 -2
  39. package/dist/components/checkbox-group/index.mjs +53 -55
  40. package/dist/components/chip/index.mjs +22 -20
  41. package/dist/components/clipboard/index.mjs +2 -2
  42. package/dist/components/color-picker/index.mjs +2 -2
  43. package/dist/components/combobox/index.mjs +2 -2
  44. package/dist/components/command/index.mjs +83 -59
  45. package/dist/components/comment/index.mjs +77 -62
  46. package/dist/components/config-provider/index.d.mts +4 -1
  47. package/dist/components/config-provider/index.mjs +13 -9
  48. package/dist/components/container/index.mjs +14 -16
  49. package/dist/components/data-view/index.d.mts +18 -0
  50. package/dist/components/data-view/index.mjs +116 -0
  51. package/dist/components/date-input/index.mjs +2 -2
  52. package/dist/components/date-picker/index.mjs +2 -2
  53. package/dist/components/deferred-content/index.d.mts +16 -0
  54. package/dist/components/deferred-content/index.mjs +52 -0
  55. package/dist/components/descriptions/index.d.mts +9 -1
  56. package/dist/components/descriptions/index.mjs +43 -16
  57. package/dist/components/dock/index.d.mts +22 -0
  58. package/dist/components/dock/index.mjs +64 -0
  59. package/dist/components/dynamic-input/index.mjs +75 -68
  60. package/dist/components/editable/index.mjs +2 -2
  61. package/dist/components/ellipsis/index.mjs +17 -19
  62. package/dist/components/empty/index.mjs +2 -2
  63. package/dist/components/file-upload/index.d.mts +7 -1
  64. package/dist/components/file-upload/index.mjs +13 -3
  65. package/dist/components/float-button/index.mjs +42 -39
  66. package/dist/components/form/index.d.mts +1 -1
  67. package/dist/components/form/index.mjs +52 -37
  68. package/dist/components/grid/index.mjs +19 -21
  69. package/dist/components/icon/index.d.mts +9 -4
  70. package/dist/components/icon/index.mjs +37 -36
  71. package/dist/components/image/index.d.mts +4 -0
  72. package/dist/components/image/index.mjs +50 -43
  73. package/dist/components/image-viewer/index.d.mts +4 -0
  74. package/dist/components/image-viewer/index.mjs +54 -37
  75. package/dist/components/input/index.d.mts +3 -0
  76. package/dist/components/input/index.mjs +1 -41
  77. package/dist/components/input-group/index.mjs +14 -18
  78. package/dist/components/json-tree-view/index.d.mts +5 -2
  79. package/dist/components/json-tree-view/index.mjs +25 -2
  80. package/dist/components/kbd/index.mjs +8 -10
  81. package/dist/components/layout/index.mjs +81 -77
  82. package/dist/components/link/index.mjs +12 -13
  83. package/dist/components/list/index.d.mts +2 -1
  84. package/dist/components/list/index.mjs +62 -48
  85. package/dist/components/listbox/index.mjs +2 -2
  86. package/dist/components/masonry/index.mjs +15 -17
  87. package/dist/components/mentions/index.mjs +1 -1
  88. package/dist/components/menu/index.mjs +2 -2
  89. package/dist/components/menubar/index.mjs +59 -57
  90. package/dist/components/meter/index.mjs +41 -41
  91. package/dist/components/number-input/index.mjs +2 -2
  92. package/dist/components/order-list/index.d.mts +21 -0
  93. package/dist/components/order-list/index.mjs +168 -0
  94. package/dist/components/page-header/index.mjs +2 -2
  95. package/dist/components/pagination/index.mjs +2 -2
  96. package/dist/components/password-input/index.mjs +2 -2
  97. package/dist/components/pin-input/index.mjs +2 -2
  98. package/dist/components/popconfirm/index.mjs +19 -12
  99. package/dist/components/progress/index.mjs +2 -2
  100. package/dist/components/progress-group/index.mjs +65 -58
  101. package/dist/components/radio-group/index.mjs +2 -2
  102. package/dist/components/rating-group/index.mjs +2 -2
  103. package/dist/components/result/index.d.mts +22 -0
  104. package/dist/components/result/index.mjs +66 -0
  105. package/dist/components/select/index.d.mts +2 -17
  106. package/dist/components/select/index.mjs +2 -18
  107. package/dist/components/separator/index.mjs +17 -19
  108. package/dist/components/skeleton/index.mjs +8 -10
  109. package/dist/components/slider/index.mjs +2 -2
  110. package/dist/components/spinner/index.mjs +17 -17
  111. package/dist/components/split-button/index.mjs +88 -83
  112. package/dist/components/spotlight/index.d.mts +11 -0
  113. package/dist/components/spotlight/index.mjs +38 -0
  114. package/dist/components/stack/index.mjs +20 -22
  115. package/dist/components/stat/index.mjs +12 -14
  116. package/dist/components/steps/index.d.mts +6 -1
  117. package/dist/components/steps/index.mjs +9 -3
  118. package/dist/components/switch/index.mjs +2 -2
  119. package/dist/components/table/index.mjs +323 -214
  120. package/dist/components/tabs/index.d.mts +2 -0
  121. package/dist/components/tabs/index.mjs +10 -5
  122. package/dist/components/tags-input/index.mjs +2 -2
  123. package/dist/components/terminal/index.d.mts +17 -0
  124. package/dist/components/terminal/index.mjs +86 -0
  125. package/dist/components/textarea/index.mjs +8 -8
  126. package/dist/components/timeline/index.d.mts +9 -3
  127. package/dist/components/timeline/index.mjs +18 -3
  128. package/dist/components/toc/index.d.mts +2 -7
  129. package/dist/components/toc/index.mjs +1 -9
  130. package/dist/components/toggle-group/index.mjs +2 -2
  131. package/dist/components/toolbar/index.d.mts +17 -0
  132. package/dist/components/toolbar/index.mjs +46 -0
  133. package/dist/components/transfer/index.mjs +126 -107
  134. package/dist/components/tree-select/index.mjs +36 -25
  135. package/dist/components/tree-view/index.d.mts +8 -1
  136. package/dist/components/tree-view/index.mjs +29 -3
  137. package/dist/components/typography/index.mjs +2 -2
  138. package/dist/components/user/index.d.mts +19 -0
  139. package/dist/components/user/index.mjs +68 -0
  140. package/dist/components/virtual-list/index.d.mts +17 -0
  141. package/dist/components/virtual-list/index.mjs +72 -0
  142. package/dist/components/watermark/index.mjs +19 -13
  143. package/dist/index-DdsnfV4f.d.mts +16 -0
  144. package/dist/{index-B4XS2n2y.d.mts → index-IfofF-SW.d.mts} +718 -3773
  145. package/dist/index-YPUiqD3n.d.mts +42 -0
  146. package/dist/index.d.mts +17 -4
  147. package/dist/index.mjs +22 -9
  148. package/dist/input-DoFQ7RXh.mjs +78 -0
  149. package/dist/{mentions-xbI6vJAP.mjs → mentions-f5Js_2W7.mjs} +76 -70
  150. package/dist/select-CX6OuQlU.mjs +123 -0
  151. package/dist/toc-CZmYEaQR.mjs +21 -0
  152. package/dist/use-component-messages-C4SCVYjD.mjs +17 -0
  153. package/package.json +28 -7
  154. package/dist/chevron-GWEoEYdO.mjs +0 -9
@@ -1,7 +1,7 @@
1
- import { createComponent, insert, mergeProps, spread, template } from "solid-js/web";
1
+ import { createComponent, insert, spread, template } from "@solidjs/web";
2
2
  import { createContext, splitProps, useContext } from "solid-js";
3
3
  //#region src/components/config-provider/index.tsx
4
- var _tmpl$ = /*#__PURE__*/ template(`<div>`);
4
+ var _tmpl$ = /* @__PURE__ */ template(`<div>`);
5
5
  /** Solid context for the provider's snapshot — a custom part reads it
6
6
  * with `useContext(ConfigContextKey)`. */
7
7
  const ConfigContextKey = createContext(() => ({}));
@@ -25,6 +25,7 @@ function ConfigProvider(props) {
25
25
  "accent",
26
26
  "dir",
27
27
  "locale",
28
+ "messages",
28
29
  "children"
29
30
  ]);
30
31
  return createComponent(ConfigContextKey.Provider, {
@@ -33,20 +34,21 @@ function ConfigProvider(props) {
33
34
  scene: own.scene,
34
35
  accent: own.accent,
35
36
  dir: own.dir,
36
- locale: own.locale
37
+ locale: own.locale,
38
+ messages: own.messages
37
39
  }),
38
40
  get children() {
39
41
  var _el$ = _tmpl$();
40
- spread(_el$, mergeProps(rest, {
42
+ spread(_el$, [rest, {
41
43
  "data-scope": "config-provider",
42
44
  "data-part": "root",
43
- get ["data-density"]() {
45
+ get "data-density"() {
44
46
  return own.density;
45
47
  },
46
- get ["data-scene"]() {
48
+ get "data-scene"() {
47
49
  return own.scene;
48
50
  },
49
- get ["data-accent"]() {
51
+ get "data-accent"() {
50
52
  return own.accent;
51
53
  },
52
54
  get dir() {
@@ -55,8 +57,10 @@ function ConfigProvider(props) {
55
57
  get lang() {
56
58
  return own.locale;
57
59
  }
58
- }), false, true);
59
- insert(_el$, () => own.children);
60
+ }], true);
61
+ insert(_el$, () => {
62
+ return own.children;
63
+ });
60
64
  return _el$;
61
65
  }
62
66
  });
@@ -1,25 +1,23 @@
1
1
  import { injectComponentStyle } from "@bysages/core";
2
- import { mergeProps, spread, template } from "solid-js/web";
2
+ import { spread, template } from "@solidjs/web";
3
3
  import { splitProps } from "solid-js";
4
4
  //#region src/components/container/index.tsx
5
- var _tmpl$ = /*#__PURE__*/ template(`<div>`);
5
+ var _tmpl$ = /* @__PURE__ */ template(`<div>`);
6
6
  function Container(props) {
7
7
  injectComponentStyle("container");
8
8
  const [own, rest] = splitProps(props, ["size", "padding"]);
9
- return (() => {
10
- var _el$ = _tmpl$();
11
- spread(_el$, mergeProps(rest, {
12
- "data-scope": "container",
13
- "data-part": "root",
14
- get ["data-size"]() {
15
- return own.size ?? "readable";
16
- },
17
- get ["data-padding"]() {
18
- return own.padding === false ? void 0 : "";
19
- }
20
- }), false, false);
21
- return _el$;
22
- })();
9
+ var _el$ = _tmpl$();
10
+ spread(_el$, [rest, {
11
+ "data-scope": "container",
12
+ "data-part": "root",
13
+ get "data-size"() {
14
+ return own.size ?? "readable";
15
+ },
16
+ get "data-padding"() {
17
+ return own.padding === false ? void 0 : "";
18
+ }
19
+ }], false);
20
+ return _el$;
23
21
  }
24
22
  //#endregion
25
23
  export { Container };
@@ -0,0 +1,18 @@
1
+ import { JSX } from "solid-js";
2
+ //#region src/components/data-view/index.d.ts
3
+ export interface DataViewProps extends JSX.HTMLAttributes<HTMLDivElement> {
4
+ items: unknown[];
5
+ /** Ledger rows or a lattice of cards. */
6
+ layout?: "list" | "grid";
7
+ /** Records per page; leave unset to show everything at once. */
8
+ pageSize?: number;
9
+ /** Renders one record; the view lays the returned nodes out. */
10
+ renderItem?: (item: unknown, index: number) => JSX.Element;
11
+ header?: JSX.Element;
12
+ }
13
+ /** One vessel, two layouts: the caller renders each record through
14
+ * renderItem, the view lays the records out as a ledger or a lattice
15
+ * and — when a page size is given — pages them with the pagination
16
+ * family's own parts rather than a second implementation. */
17
+ export declare function DataView(props: DataViewProps): JSX.Element;
18
+ //#endregion
@@ -0,0 +1,116 @@
1
+ import { n as useComponentMessages } from "../../use-component-messages-C4SCVYjD.mjs";
2
+ import { Pagination } from "../pagination/index.mjs";
3
+ import { injectComponentStyle } from "@bysages/core";
4
+ import { createComponent, effect, insert, memo, setAttribute, spread, template } from "@solidjs/web";
5
+ import { For, Show, createSignal, createUniqueId, splitProps } from "solid-js";
6
+ //#region src/components/data-view/index.tsx
7
+ var _tmpl$ = /* @__PURE__ */ template(`<div data-scope=data-view data-part=pager>`);
8
+ var _tmpl$2 = /* @__PURE__ */ template(`<div><div data-scope=data-view data-part=content></div><!>`);
9
+ var _tmpl$3 = /* @__PURE__ */ template(`<div data-scope=data-view data-part=cell>`);
10
+ /** One vessel, two layouts: the caller renders each record through
11
+ * renderItem, the view lays the records out as a ledger or a lattice
12
+ * and — when a page size is given — pages them with the pagination
13
+ * family's own parts rather than a second implementation. */
14
+ function DataView(props) {
15
+ injectComponentStyle("data-view");
16
+ const uid = createUniqueId();
17
+ const [own, rest] = splitProps(props, [
18
+ "items",
19
+ "layout",
20
+ "pageSize",
21
+ "renderItem",
22
+ "header"
23
+ ]);
24
+ const messages = useComponentMessages();
25
+ const [page, setPage] = createSignal(1);
26
+ const pageCount = () => own.pageSize ? Math.max(1, Math.ceil(own.items.length / own.pageSize)) : 1;
27
+ const visible = () => own.pageSize ? own.items.slice((page() - 1) * own.pageSize, page() * own.pageSize) : own.items;
28
+ var _el$ = _tmpl$2();
29
+ var _el$2 = _el$.firstChild;
30
+ var _el$4 = _el$2.nextSibling;
31
+ spread(_el$, [rest, {
32
+ "data-scope": "data-view",
33
+ "data-part": "root",
34
+ "data-uid": uid
35
+ }], true);
36
+ insert(_el$, () => {
37
+ return own.header;
38
+ }, _el$2);
39
+ insert(_el$2, createComponent(For, {
40
+ get each() {
41
+ return visible();
42
+ },
43
+ children: (item, index) => (() => {
44
+ var _el$5 = _tmpl$3();
45
+ insert(_el$5, () => {
46
+ return own.renderItem?.(item, index());
47
+ });
48
+ return _el$5;
49
+ })()
50
+ }));
51
+ insert(_el$, createComponent(Show, {
52
+ get when() {
53
+ return memo(() => {
54
+ return !!own.pageSize;
55
+ })() ? pageCount() > 1 : own.pageSize;
56
+ },
57
+ get children() {
58
+ var _el$3 = _tmpl$();
59
+ insert(_el$3, createComponent(Pagination.Root, {
60
+ get count() {
61
+ return own.items.length;
62
+ },
63
+ get pageSize() {
64
+ return own.pageSize;
65
+ },
66
+ get page() {
67
+ return page();
68
+ },
69
+ siblingCount: 1,
70
+ onPageChange: (details) => setPage(details.page),
71
+ get children() {
72
+ return [
73
+ createComponent(Pagination.PrevTrigger, {
74
+ get "aria-label"() {
75
+ return messages().pagination.previous;
76
+ },
77
+ children: "‹"
78
+ }),
79
+ createComponent(Pagination.Context, { children: (pagination) => createComponent(For, {
80
+ get each() {
81
+ return pagination().pages;
82
+ },
83
+ children: (entry, index) => entry.type === "ellipsis" ? createComponent(Pagination.Ellipsis, {
84
+ get index() {
85
+ return index();
86
+ },
87
+ children: "…"
88
+ }) : createComponent(Pagination.Item, {
89
+ type: "page",
90
+ get value() {
91
+ return entry.value;
92
+ },
93
+ get children() {
94
+ return entry.value;
95
+ }
96
+ })
97
+ }) }),
98
+ createComponent(Pagination.NextTrigger, {
99
+ get "aria-label"() {
100
+ return messages().pagination.next;
101
+ },
102
+ children: "›"
103
+ })
104
+ ];
105
+ }
106
+ }));
107
+ return _el$3;
108
+ }
109
+ }), _el$4);
110
+ effect(() => own.layout ?? "list", (_v$) => {
111
+ setAttribute(_el$2, "data-layout", _v$);
112
+ });
113
+ return _el$;
114
+ }
115
+ //#endregion
116
+ export { DataView };
@@ -1,11 +1,11 @@
1
1
  import { injectComponentStyle } from "@bysages/core";
2
- import { createComponent, mergeProps } from "solid-js/web";
2
+ import { createComponent, mergeProps } from "@solidjs/web";
3
3
  import { splitProps } from "solid-js";
4
4
  import { DateInput as DateInput$1 } from "@ark-ui/solid/date-input";
5
5
  //#region src/components/date-input/index.tsx
6
6
  function DateInputRoot(props) {
7
7
  const [own, rest] = splitProps(props, ["size"]);
8
- return createComponent(DateInput$1.Root, mergeProps(rest, { get ["data-size"]() {
8
+ return createComponent(DateInput$1.Root, mergeProps(rest, { get "data-size"() {
9
9
  return own.size ?? "md";
10
10
  } }));
11
11
  }
@@ -1,11 +1,11 @@
1
1
  import { injectComponentStyle } from "@bysages/core";
2
- import { createComponent, mergeProps } from "solid-js/web";
2
+ import { createComponent, mergeProps } from "@solidjs/web";
3
3
  import { splitProps } from "solid-js";
4
4
  import { DatePicker as DatePicker$1 } from "@ark-ui/solid/date-picker";
5
5
  //#region src/components/date-picker/index.tsx
6
6
  function DatePickerRoot(props) {
7
7
  const [own, rest] = splitProps(props, ["size"]);
8
- return createComponent(DatePicker$1.Root, mergeProps(rest, { get ["data-size"]() {
8
+ return createComponent(DatePicker$1.Root, mergeProps(rest, { get "data-size"() {
9
9
  return own.size ?? "md";
10
10
  } }));
11
11
  }
@@ -0,0 +1,16 @@
1
+ import { JSX } from "solid-js";
2
+ //#region src/components/deferred-content/index.d.ts
3
+ export interface DeferredContentProps extends JSX.HTMLAttributes<HTMLDivElement> {
4
+ /** How much of the placeholder must be visible before the content
5
+ * mounts, from 0 (any pixel) to 1 (the whole box). */
6
+ threshold?: number;
7
+ /** Drawn until the box approaches the viewport. */
8
+ placeholder?: JSX.Element;
9
+ children?: JSX.Element;
10
+ }
11
+ /** Content that waits to be worth rendering: the slot stays off the
12
+ * tree until the placeholder scrolls near the viewport, then mounts
13
+ * once and stays. The placeholder is drawn by the caller, so the late
14
+ * arrival costs no layout shift it cannot predict. */
15
+ export declare function DeferredContent(props: DeferredContentProps): JSX.Element;
16
+ //#endregion
@@ -0,0 +1,52 @@
1
+ import { injectComponentStyle } from "@bysages/core";
2
+ import { createComponent, insert, ref, spread, template } from "@solidjs/web";
3
+ import { Show, createSignal, onCleanup, onMount, splitProps } from "solid-js";
4
+ //#region src/components/deferred-content/index.tsx
5
+ var _tmpl$ = /* @__PURE__ */ template(`<div>`);
6
+ /** Content that waits to be worth rendering: the slot stays off the
7
+ * tree until the placeholder scrolls near the viewport, then mounts
8
+ * once and stays. The placeholder is drawn by the caller, so the late
9
+ * arrival costs no layout shift it cannot predict. */
10
+ function DeferredContent(props) {
11
+ injectComponentStyle("deferred-content");
12
+ const [own, rest] = splitProps(props, [
13
+ "threshold",
14
+ "placeholder",
15
+ "children"
16
+ ]);
17
+ const [host, setHost] = createSignal(null);
18
+ const [active, setActive] = createSignal(false);
19
+ onMount(() => {
20
+ const observer = new IntersectionObserver((entries) => {
21
+ if (entries.some((entry) => entry.isIntersecting)) {
22
+ setActive(true);
23
+ observer.disconnect();
24
+ }
25
+ }, { threshold: own.threshold ?? .2 });
26
+ const node = host();
27
+ if (node) observer.observe(node);
28
+ onCleanup(() => observer.disconnect());
29
+ });
30
+ var _el$ = _tmpl$();
31
+ ref(() => {
32
+ return setHost;
33
+ }, _el$);
34
+ spread(_el$, [rest, {
35
+ "data-scope": "deferred-content",
36
+ "data-part": "root"
37
+ }], true);
38
+ insert(_el$, createComponent(Show, {
39
+ get when() {
40
+ return active();
41
+ },
42
+ get fallback() {
43
+ return own.placeholder;
44
+ },
45
+ get children() {
46
+ return own.children;
47
+ }
48
+ }));
49
+ return _el$;
50
+ }
51
+ //#endregion
52
+ export { DeferredContent };
@@ -7,11 +7,19 @@ import { JSX } from "solid-js";
7
7
  */
8
8
  export interface DescriptionsRootProps extends JSX.HTMLAttributes<HTMLDListElement> {
9
9
  layout?: "horizontal" | "vertical";
10
+ /** The framed register: one hairline round the whole, terms on
11
+ * inset paper. */
12
+ bordered?: boolean;
13
+ /** Pairs across the grid: one ledger per column. */
14
+ column?: number;
10
15
  }
11
16
  declare function Root(props: DescriptionsRootProps): JSX.Element;
17
+ declare function Item(props: JSX.HTMLAttributes<HTMLDivElement> & {
18
+ span?: number;
19
+ }): JSX.Element;
12
20
  export declare const Descriptions: typeof Root & {
13
21
  Root: typeof Root;
14
- Item: (props: JSX.HTMLAttributes<HTMLDivElement>) => JSX.Element;
22
+ Item: typeof Item;
15
23
  Term: (props: JSX.HTMLAttributes<HTMLDivElement>) => JSX.Element;
16
24
  Detail: (props: JSX.HTMLAttributes<HTMLDivElement>) => JSX.Element;
17
25
  };
@@ -1,34 +1,61 @@
1
1
  import { injectComponentStyle } from "@bysages/core";
2
- import { createComponent, mergeProps, spread, template } from "solid-js/web";
2
+ import { createComponent, mergeProps, spread, template } from "@solidjs/web";
3
3
  import { splitProps } from "solid-js";
4
4
  //#region src/components/descriptions/index.tsx
5
- var _tmpl$ = /*#__PURE__*/ template(`<dl>`);
5
+ var _tmpl$ = /* @__PURE__ */ template(`<dl>`);
6
+ var _tmpl$2 = /* @__PURE__ */ template(`<div>`);
6
7
  function Root(props) {
7
- const [own, rest] = splitProps(props, ["layout"]);
8
- return (() => {
9
- var _el$ = _tmpl$();
10
- spread(_el$, mergeProps(rest, {
11
- "data-scope": "descriptions",
12
- "data-part": "root",
13
- get ["data-layout"]() {
14
- return own.layout ?? "horizontal";
15
- }
16
- }), false, false);
17
- return _el$;
18
- })();
8
+ const [own, rest] = splitProps(props, [
9
+ "layout",
10
+ "bordered",
11
+ "column",
12
+ "style"
13
+ ]);
14
+ var _el$ = _tmpl$();
15
+ spread(_el$, [rest, {
16
+ get style() {
17
+ return {
18
+ ...own.style,
19
+ "--bs-desc-columns": String(own.column ?? 1)
20
+ };
21
+ },
22
+ "data-scope": "descriptions",
23
+ "data-part": "root",
24
+ get "data-layout"() {
25
+ return own.layout ?? "horizontal";
26
+ },
27
+ get "data-bordered"() {
28
+ return own.bordered || void 0;
29
+ }
30
+ }], false);
31
+ return _el$;
19
32
  }
20
33
  function part(name, tag) {
21
34
  function Component(props) {
22
35
  return createComponent(tag, mergeProps(props, {
23
36
  "data-scope": "descriptions",
24
- get ["data-part"]() {
37
+ get "data-part"() {
25
38
  return name.toLowerCase();
26
39
  }
27
40
  }));
28
41
  }
29
42
  return Component;
30
43
  }
31
- const Item = part("Item", "div");
44
+ function Item(props) {
45
+ const [own, rest] = splitProps(props, ["span", "style"]);
46
+ var _el$2 = _tmpl$2();
47
+ spread(_el$2, [rest, {
48
+ get style() {
49
+ return {
50
+ ...own.style,
51
+ "--bs-desc-span": String((own.span ?? 1) * 2)
52
+ };
53
+ },
54
+ "data-scope": "descriptions",
55
+ "data-part": "item"
56
+ }], false);
57
+ return _el$2;
58
+ }
32
59
  const Term = part("Term", "dt");
33
60
  const Detail = part("Detail", "dd");
34
61
  const Descriptions = Object.assign(Root, {
@@ -0,0 +1,22 @@
1
+ import { JSX } from "solid-js";
2
+ //#region src/components/dock/index.d.ts
3
+ export interface DockProps extends JSX.HTMLAttributes<HTMLDivElement> {
4
+ /** The tallest an item swells under the hand — 1 stands still. */
5
+ maxScale?: number;
6
+ /** How far the hand reaches, in px, before an item stops answering. */
7
+ radius?: number;
8
+ }
9
+ export interface DockItemProps extends JSX.HTMLAttributes<HTMLDivElement> {}
10
+ /** The magnifying dock: a floating rail whose icons swell toward the
11
+ * hand. The wrapper measures per item and writes --bs-dock-scale; CSS
12
+ * eases the chase, so no spring engine rides along. */
13
+ export declare function DockRoot(props: DockProps): JSX.Element;
14
+ /** One moored place in the rail: whatever slots in grows from the
15
+ * floor, never from its center. */
16
+ export declare function DockItem(props: DockItemProps): JSX.Element;
17
+ /** The whole family under one handle — Dock.Root, Dock.Item. */
18
+ export declare const Dock: typeof DockRoot & {
19
+ Root: typeof DockRoot;
20
+ Item: typeof DockItem;
21
+ };
22
+ //#endregion
@@ -0,0 +1,64 @@
1
+ import { injectComponentStyle } from "@bysages/core";
2
+ import { insert, spread, template } from "@solidjs/web";
3
+ import { splitProps } from "solid-js";
4
+ //#region src/components/dock/index.tsx
5
+ var _tmpl$ = /* @__PURE__ */ template(`<div>`);
6
+ const ITEM = "[data-scope=\"dock\"][data-part=\"item\"]";
7
+ /** The magnifying dock: a floating rail whose icons swell toward the
8
+ * hand. The wrapper measures per item and writes --bs-dock-scale; CSS
9
+ * eases the chase, so no spring engine rides along. */
10
+ function DockRoot(props) {
11
+ injectComponentStyle("dock");
12
+ const [own, rest] = splitProps(props, ["maxScale", "radius"]);
13
+ const maxScale = () => own.maxScale ?? 1.5;
14
+ const radius = () => own.radius ?? 96;
15
+ const magnify = (event) => {
16
+ for (const item of event.currentTarget.querySelectorAll(ITEM)) {
17
+ const rect = item.getBoundingClientRect();
18
+ const dist = Math.abs(event.clientX - (rect.left + rect.width / 2));
19
+ const t = Math.max(0, 1 - dist / radius());
20
+ item.style.setProperty("--bs-dock-scale", (1 + (maxScale() - 1) * t * t).toFixed(4));
21
+ }
22
+ };
23
+ const reset = (event) => {
24
+ for (const item of event.currentTarget.querySelectorAll(ITEM)) item.style.removeProperty("--bs-dock-scale");
25
+ };
26
+ var _el$ = _tmpl$();
27
+ spread(_el$, [rest, {
28
+ "data-scope": "dock",
29
+ "data-part": "root",
30
+ get style() {
31
+ return {
32
+ ...rest.style,
33
+ "--bs-dock-max-scale": String(maxScale())
34
+ };
35
+ },
36
+ onPointerMove: magnify,
37
+ onPointerLeave: reset
38
+ }], true);
39
+ insert(_el$, () => {
40
+ return rest.children;
41
+ });
42
+ return _el$;
43
+ }
44
+ /** One moored place in the rail: whatever slots in grows from the
45
+ * floor, never from its center. */
46
+ function DockItem(props) {
47
+ injectComponentStyle("dock");
48
+ var _el$2 = _tmpl$();
49
+ spread(_el$2, [props, {
50
+ "data-scope": "dock",
51
+ "data-part": "item"
52
+ }], true);
53
+ insert(_el$2, () => {
54
+ return props.children;
55
+ });
56
+ return _el$2;
57
+ }
58
+ /** The whole family under one handle — Dock.Root, Dock.Item. */
59
+ const Dock = Object.assign(DockRoot, {
60
+ Root: DockRoot,
61
+ Item: DockItem
62
+ });
63
+ //#endregion
64
+ export { Dock, DockItem, DockRoot };