@bysages/solid 0.2.2 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -2
- package/dist/ai-response-ClGGptX3.mjs +139 -0
- package/dist/chevron-D5RzcayK.mjs +9 -0
- package/dist/components/accordion/index.d.mts +7 -0
- package/dist/components/accordion/index.mjs +10 -0
- package/dist/components/affix/index.d.mts +20 -0
- package/dist/components/affix/index.mjs +33 -0
- package/dist/components/ai/index.d.mts +2 -0
- package/dist/components/ai/index.mjs +71 -0
- package/dist/components/ai-action/index.d.mts +13 -0
- package/dist/components/ai-action/index.mjs +27 -0
- package/dist/components/ai-attachments/index.d.mts +20 -0
- package/dist/components/ai-attachments/index.mjs +110 -0
- package/dist/components/ai-message/index.d.mts +13 -0
- package/dist/components/ai-message/index.mjs +22 -0
- package/dist/components/ai-prompt-input/index.d.mts +45 -0
- package/dist/components/ai-prompt-input/index.mjs +153 -0
- package/dist/components/ai-reasoning/index.d.mts +13 -0
- package/dist/components/ai-reasoning/index.mjs +38 -0
- package/dist/components/ai-response/index.d.mts +20 -0
- package/dist/components/ai-response/index.mjs +2 -0
- package/dist/components/ai-source/index.d.mts +13 -0
- package/dist/components/ai-source/index.mjs +36 -0
- package/dist/components/ai-suggestion/index.d.mts +13 -0
- package/dist/components/ai-suggestion/index.mjs +22 -0
- package/dist/components/ai-tool/index.d.mts +23 -0
- package/dist/components/ai-tool/index.mjs +90 -0
- package/dist/components/alert/index.d.mts +22 -0
- package/dist/components/alert/index.mjs +87 -0
- package/dist/components/angle-slider/index.d.mts +15 -0
- package/dist/components/angle-slider/index.mjs +18 -0
- package/dist/components/aspect-ratio/index.d.mts +10 -0
- package/dist/components/aspect-ratio/index.mjs +23 -0
- package/dist/components/autocomplete/index.d.mts +21 -0
- package/dist/components/autocomplete/index.mjs +76 -0
- package/dist/components/avatar/index.d.mts +23 -0
- package/dist/components/avatar/index.mjs +20 -0
- package/dist/components/avatar-group/index.d.mts +11 -0
- package/dist/components/avatar-group/index.mjs +20 -0
- package/dist/components/back-top/index.d.mts +29 -0
- package/dist/components/back-top/index.mjs +93 -0
- package/dist/components/badge/index.d.mts +10 -0
- package/dist/components/badge/index.mjs +23 -0
- package/dist/components/banner/index.d.mts +24 -0
- package/dist/components/banner/index.mjs +67 -0
- package/dist/components/bento/index.d.mts +24 -0
- package/dist/components/bento/index.mjs +51 -0
- package/dist/components/block-ui/index.d.mts +12 -0
- package/dist/components/block-ui/index.mjs +43 -0
- package/dist/components/breadcrumb/index.d.mts +11 -0
- package/dist/components/breadcrumb/index.mjs +45 -0
- package/dist/components/browser/index.d.mts +21 -0
- package/dist/components/browser/index.mjs +87 -0
- package/dist/components/button/index.d.mts +15 -0
- package/dist/components/button/index.mjs +43 -0
- package/dist/components/button-group/index.d.mts +23 -0
- package/dist/components/button-group/index.mjs +38 -0
- package/dist/components/calendar/index.d.mts +17 -0
- package/dist/components/calendar/index.mjs +209 -0
- package/dist/components/card/index.d.mts +11 -0
- package/dist/components/card/index.mjs +33 -0
- package/dist/components/carousel/index.d.mts +9 -0
- package/dist/components/carousel/index.mjs +12 -0
- package/dist/components/cascade-select/index.d.mts +31 -0
- package/dist/components/cascade-select/index.mjs +304 -0
- package/dist/components/checkbox/index.d.mts +15 -0
- package/dist/components/checkbox/index.mjs +18 -0
- package/dist/components/checkbox-group/index.d.mts +28 -0
- package/dist/components/checkbox-group/index.mjs +97 -0
- package/dist/components/chip/index.d.mts +12 -0
- package/dist/components/chip/index.mjs +36 -0
- package/dist/components/client-only/index.d.mts +2 -0
- package/dist/components/client-only/index.mjs +2 -0
- package/dist/components/clipboard/index.d.mts +16 -0
- package/dist/components/clipboard/index.mjs +19 -0
- package/dist/components/collapsible/index.d.mts +7 -0
- package/dist/components/collapsible/index.mjs +10 -0
- package/dist/components/collection/index.d.mts +2 -0
- package/dist/components/collection/index.mjs +2 -0
- package/dist/components/color-picker/index.d.mts +19 -0
- package/dist/components/color-picker/index.mjs +18 -0
- package/dist/components/combobox/index.d.mts +17 -0
- package/dist/components/combobox/index.mjs +18 -0
- package/dist/components/command/index.d.mts +43 -0
- package/dist/components/command/index.mjs +253 -0
- package/dist/components/comment/index.d.mts +17 -0
- package/dist/components/comment/index.mjs +101 -0
- package/dist/components/config-provider/index.d.mts +48 -0
- package/dist/components/config-provider/index.mjs +67 -0
- package/dist/components/container/index.d.mts +13 -0
- package/dist/components/container/index.mjs +23 -0
- package/dist/components/data-view/index.d.mts +18 -0
- package/dist/components/data-view/index.mjs +110 -0
- package/dist/components/date-input/index.d.mts +15 -0
- package/dist/components/date-input/index.mjs +18 -0
- package/dist/components/date-picker/index.d.mts +17 -0
- package/dist/components/date-picker/index.mjs +18 -0
- package/dist/components/deferred-content/index.d.mts +16 -0
- package/dist/components/deferred-content/index.mjs +52 -0
- package/dist/components/descriptions/index.d.mts +26 -0
- package/dist/components/descriptions/index.mjs +69 -0
- package/dist/components/dialog/index.d.mts +9 -0
- package/dist/components/dialog/index.mjs +11 -0
- package/dist/components/dock/index.d.mts +22 -0
- package/dist/components/dock/index.mjs +64 -0
- package/dist/components/download-trigger/index.d.mts +2 -0
- package/dist/components/download-trigger/index.mjs +2 -0
- package/dist/components/drawer/index.d.mts +9 -0
- package/dist/components/drawer/index.mjs +12 -0
- package/dist/components/dynamic-input/index.d.mts +30 -0
- package/dist/components/dynamic-input/index.mjs +119 -0
- package/dist/components/editable/index.d.mts +15 -0
- package/dist/components/editable/index.mjs +18 -0
- package/dist/components/ellipsis/index.d.mts +10 -0
- package/dist/components/ellipsis/index.mjs +27 -0
- package/dist/components/empty/index.d.mts +10 -0
- package/dist/components/empty/index.mjs +31 -0
- package/dist/components/field/index.d.mts +8 -0
- package/dist/components/field/index.mjs +11 -0
- package/dist/components/fieldset/index.d.mts +7 -0
- package/dist/components/fieldset/index.mjs +10 -0
- package/dist/components/file-upload/index.d.mts +17 -0
- package/dist/components/file-upload/index.mjs +18 -0
- package/dist/components/float-button/index.d.mts +61 -0
- package/dist/components/float-button/index.mjs +129 -0
- package/dist/components/floating-panel/index.d.mts +9 -0
- package/dist/components/floating-panel/index.mjs +12 -0
- package/dist/components/focus-trap/index.d.mts +2 -0
- package/dist/components/focus-trap/index.mjs +2 -0
- package/dist/components/form/index.d.mts +2 -0
- package/dist/components/form/index.mjs +125 -0
- package/dist/components/format/index.d.mts +9 -0
- package/dist/components/format/index.mjs +10 -0
- package/dist/components/frame/index.d.mts +10 -0
- package/dist/components/frame/index.mjs +12 -0
- package/dist/components/grid/index.d.mts +13 -0
- package/dist/components/grid/index.mjs +42 -0
- package/dist/components/highlight/index.d.mts +7 -0
- package/dist/components/highlight/index.mjs +11 -0
- package/dist/components/hover-card/index.d.mts +7 -0
- package/dist/components/hover-card/index.mjs +10 -0
- package/dist/components/icon/index.d.mts +24 -0
- package/dist/components/icon/index.mjs +54 -0
- package/dist/components/image/index.d.mts +17 -0
- package/dist/components/image/index.mjs +70 -0
- package/dist/components/image-cropper/index.d.mts +8 -0
- package/dist/components/image-cropper/index.mjs +11 -0
- package/dist/components/image-viewer/index.d.mts +19 -0
- package/dist/components/image-viewer/index.mjs +152 -0
- package/dist/components/input/index.d.mts +19 -0
- package/dist/components/input/index.mjs +2 -0
- package/dist/components/input-group/index.d.mts +18 -0
- package/dist/components/input-group/index.mjs +36 -0
- package/dist/components/json-tree-view/index.d.mts +7 -0
- package/dist/components/json-tree-view/index.mjs +10 -0
- package/dist/components/kbd/index.d.mts +6 -0
- package/dist/components/kbd/index.mjs +15 -0
- package/dist/components/layout/index.d.mts +60 -0
- package/dist/components/layout/index.mjs +192 -0
- package/dist/components/link/index.d.mts +10 -0
- package/dist/components/link/index.mjs +24 -0
- package/dist/components/list/index.d.mts +26 -0
- package/dist/components/list/index.mjs +97 -0
- package/dist/components/listbox/index.d.mts +17 -0
- package/dist/components/listbox/index.mjs +19 -0
- package/dist/components/marquee/index.d.mts +7 -0
- package/dist/components/marquee/index.mjs +10 -0
- package/dist/components/masonry/index.d.mts +11 -0
- package/dist/components/masonry/index.mjs +34 -0
- package/dist/components/mentions/index.d.mts +2 -0
- package/dist/components/mentions/index.mjs +3 -0
- package/dist/components/menu/index.d.mts +13 -0
- package/dist/components/menu/index.mjs +38 -0
- package/dist/components/menubar/index.d.mts +32 -0
- package/dist/components/menubar/index.mjs +83 -0
- package/dist/components/meter/index.d.mts +21 -0
- package/dist/components/meter/index.mjs +95 -0
- package/dist/components/navigation-menu/index.d.mts +8 -0
- package/dist/components/navigation-menu/index.mjs +11 -0
- package/dist/components/number-input/index.d.mts +15 -0
- package/dist/components/number-input/index.mjs +18 -0
- package/dist/components/order-list/index.d.mts +21 -0
- package/dist/components/order-list/index.mjs +160 -0
- package/dist/components/page-header/index.d.mts +11 -0
- package/dist/components/page-header/index.mjs +34 -0
- package/dist/components/pagination/index.d.mts +17 -0
- package/dist/components/pagination/index.mjs +18 -0
- package/dist/components/password-input/index.d.mts +15 -0
- package/dist/components/password-input/index.mjs +18 -0
- package/dist/components/pin-input/index.d.mts +14 -0
- package/dist/components/pin-input/index.mjs +18 -0
- package/dist/components/popconfirm/index.d.mts +17 -0
- package/dist/components/popconfirm/index.mjs +85 -0
- package/dist/components/popover/index.d.mts +8 -0
- package/dist/components/popover/index.mjs +11 -0
- package/dist/components/presence/index.d.mts +2 -0
- package/dist/components/presence/index.mjs +2 -0
- package/dist/components/progress/index.d.mts +15 -0
- package/dist/components/progress/index.mjs +18 -0
- package/dist/components/progress-group/index.d.mts +22 -0
- package/dist/components/progress-group/index.mjs +84 -0
- package/dist/components/qr-code/index.d.mts +8 -0
- package/dist/components/qr-code/index.mjs +11 -0
- package/dist/components/radio-group/index.d.mts +15 -0
- package/dist/components/radio-group/index.mjs +18 -0
- package/dist/components/rating-group/index.d.mts +15 -0
- package/dist/components/rating-group/index.mjs +18 -0
- package/dist/components/result/index.d.mts +22 -0
- package/dist/components/result/index.mjs +66 -0
- package/dist/components/scroll-area/index.d.mts +7 -0
- package/dist/components/scroll-area/index.mjs +10 -0
- package/dist/components/segment-group/index.d.mts +17 -0
- package/dist/components/segment-group/index.mjs +23 -0
- package/dist/components/select/index.d.mts +2 -0
- package/dist/components/select/index.mjs +2 -0
- package/dist/components/separator/index.d.mts +11 -0
- package/dist/components/separator/index.mjs +27 -0
- package/dist/components/signature-pad/index.d.mts +8 -0
- package/dist/components/signature-pad/index.mjs +11 -0
- package/dist/components/skeleton/index.d.mts +7 -0
- package/dist/components/skeleton/index.mjs +15 -0
- package/dist/components/slider/index.d.mts +15 -0
- package/dist/components/slider/index.mjs +18 -0
- package/dist/components/spinner/index.d.mts +9 -0
- package/dist/components/spinner/index.mjs +26 -0
- package/dist/components/split-button/index.d.mts +36 -0
- package/dist/components/split-button/index.mjs +124 -0
- package/dist/components/splitter/index.d.mts +7 -0
- package/dist/components/splitter/index.mjs +10 -0
- package/dist/components/spotlight/index.d.mts +11 -0
- package/dist/components/spotlight/index.mjs +38 -0
- package/dist/components/stack/index.d.mts +11 -0
- package/dist/components/stack/index.mjs +45 -0
- package/dist/components/stat/index.d.mts +17 -0
- package/dist/components/stat/index.mjs +44 -0
- package/dist/components/steps/index.d.mts +18 -0
- package/dist/components/steps/index.mjs +18 -0
- package/dist/components/swap/index.d.mts +8 -0
- package/dist/components/swap/index.mjs +11 -0
- package/dist/components/switch/index.d.mts +15 -0
- package/dist/components/switch/index.mjs +18 -0
- package/dist/components/table/index.d.mts +77 -0
- package/dist/components/table/index.mjs +837 -0
- package/dist/components/tabs/index.d.mts +19 -0
- package/dist/components/tabs/index.mjs +23 -0
- package/dist/components/tags-input/index.d.mts +16 -0
- package/dist/components/tags-input/index.mjs +18 -0
- package/dist/components/terminal/index.d.mts +17 -0
- package/dist/components/terminal/index.mjs +84 -0
- package/dist/components/textarea/index.d.mts +14 -0
- package/dist/components/textarea/index.mjs +37 -0
- package/dist/components/timeline/index.d.mts +15 -0
- package/dist/components/timeline/index.mjs +44 -0
- package/dist/components/timer/index.d.mts +8 -0
- package/dist/components/timer/index.mjs +11 -0
- package/dist/components/toast/index.d.mts +11 -0
- package/dist/components/toast/index.mjs +13 -0
- package/dist/components/toc/index.d.mts +7 -0
- package/dist/components/toc/index.mjs +10 -0
- package/dist/components/toggle/index.d.mts +7 -0
- package/dist/components/toggle/index.mjs +10 -0
- package/dist/components/toggle-group/index.d.mts +14 -0
- package/dist/components/toggle-group/index.mjs +18 -0
- package/dist/components/toolbar/index.d.mts +17 -0
- package/dist/components/toolbar/index.mjs +46 -0
- package/dist/components/tooltip/index.d.mts +7 -0
- package/dist/components/tooltip/index.mjs +10 -0
- package/dist/components/tour/index.d.mts +11 -0
- package/dist/components/tour/index.mjs +13 -0
- package/dist/components/transfer/index.d.mts +24 -0
- package/dist/components/transfer/index.mjs +175 -0
- package/dist/components/tree-select/index.d.mts +28 -0
- package/dist/components/tree-select/index.mjs +253 -0
- package/dist/components/tree-view/index.d.mts +18 -0
- package/dist/components/tree-view/index.mjs +19 -0
- package/dist/components/typography/index.d.mts +11 -0
- package/dist/components/typography/index.mjs +34 -0
- package/dist/components/user/index.d.mts +19 -0
- package/dist/components/user/index.mjs +68 -0
- package/dist/components/virtual-list/index.d.mts +17 -0
- package/dist/components/virtual-list/index.mjs +71 -0
- package/dist/components/watermark/index.d.mts +17 -0
- package/dist/components/watermark/index.mjs +77 -0
- package/dist/index-B1xiJ5ki.d.mts +1811 -0
- package/dist/index-DDX7x8aT.d.mts +95 -0
- package/dist/index-IfofF-SW.d.mts +10356 -0
- package/dist/index-YPUiqD3n.d.mts +42 -0
- package/dist/index.d.mts +141 -15209
- package/dist/index.mjs +141 -6171
- package/dist/input-DoFQ7RXh.mjs +78 -0
- package/dist/mentions-f5Js_2W7.mjs +263 -0
- package/dist/select-CHaXbzLX.mjs +115 -0
- package/package.json +101 -7
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { injectComponentStyle } from "@bysages/core";
|
|
2
|
+
import { spread, template } from "@solidjs/web";
|
|
3
|
+
import { mergeProps as mergeProps$1, splitProps } from "solid-js";
|
|
4
|
+
import { useFieldContext } from "@ark-ui/solid/field";
|
|
5
|
+
//#region src/components/input/mask.ts
|
|
6
|
+
function accepts(slot, ch) {
|
|
7
|
+
if (slot === "9") return /\d/.test(ch);
|
|
8
|
+
if (slot === "a") return /[a-zA-Z]/.test(ch);
|
|
9
|
+
return /[\da-zA-Z]/.test(ch);
|
|
10
|
+
}
|
|
11
|
+
/** Apply the entry mask: `9` takes a digit, `a` a letter, `*` either;
|
|
12
|
+
* every other character is literal. A literal already typed is consumed,
|
|
13
|
+
* not duplicated; a literal met out of place holds the walk and lets its
|
|
14
|
+
* own slot claim it — so deleting through the middle reflows the shape
|
|
15
|
+
* instead of corrupting it. */
|
|
16
|
+
function applyMask(raw, mask) {
|
|
17
|
+
const literals = new Set(mask.split("").filter((s) => s !== "9" && s !== "a" && s !== "*"));
|
|
18
|
+
let out = "";
|
|
19
|
+
let at = 0;
|
|
20
|
+
slots: for (const slot of mask) {
|
|
21
|
+
if (at >= raw.length) break;
|
|
22
|
+
if (slot === "9" || slot === "a" || slot === "*") {
|
|
23
|
+
let ch = raw[at];
|
|
24
|
+
while (ch !== void 0 && !accepts(slot, ch)) {
|
|
25
|
+
if (literals.has(ch)) continue slots;
|
|
26
|
+
at += 1;
|
|
27
|
+
ch = raw[at];
|
|
28
|
+
}
|
|
29
|
+
if (ch === void 0) break;
|
|
30
|
+
out += ch;
|
|
31
|
+
at += 1;
|
|
32
|
+
} else if (raw[at] === slot) {
|
|
33
|
+
at += 1;
|
|
34
|
+
out += slot;
|
|
35
|
+
} else out += slot;
|
|
36
|
+
}
|
|
37
|
+
return out;
|
|
38
|
+
}
|
|
39
|
+
//#endregion
|
|
40
|
+
//#region src/components/input/index.tsx
|
|
41
|
+
var _tmpl$ = /* @__PURE__ */ template(`<input>`);
|
|
42
|
+
/** The bare text input: the field recipe — border, surface, focus halo —
|
|
43
|
+
* on a native control. Standing alone it styles itself from the `invalid`
|
|
44
|
+
* prop; inside a `Field.Root` it consumes the field context, picking up
|
|
45
|
+
* the label id, the described-by wiring and the invalid state for free,
|
|
46
|
+
* which is also the seam the Form validation layer will drive. Disabled
|
|
47
|
+
* rides the native attribute. */
|
|
48
|
+
function Input(props) {
|
|
49
|
+
injectComponentStyle("input");
|
|
50
|
+
const field = useFieldContext();
|
|
51
|
+
const [own, rest] = splitProps(props, [
|
|
52
|
+
"value",
|
|
53
|
+
"size",
|
|
54
|
+
"invalid",
|
|
55
|
+
"mask",
|
|
56
|
+
"onValueChange"
|
|
57
|
+
]);
|
|
58
|
+
var _el$ = _tmpl$();
|
|
59
|
+
spread(_el$, () => {
|
|
60
|
+
return mergeProps$1(() => field?.().getInputProps() ?? {}, rest, {
|
|
61
|
+
get value() {
|
|
62
|
+
return own.value;
|
|
63
|
+
},
|
|
64
|
+
"data-scope": "input",
|
|
65
|
+
"data-part": "root",
|
|
66
|
+
get "data-size"() {
|
|
67
|
+
return own.size ?? "md";
|
|
68
|
+
},
|
|
69
|
+
get "data-invalid"() {
|
|
70
|
+
return own.invalid || field?.().getInputProps()["data-invalid"] != null ? "" : void 0;
|
|
71
|
+
},
|
|
72
|
+
onInput: (event) => own.onValueChange?.(own.mask ? applyMask(event.currentTarget.value, own.mask) : event.currentTarget.value)
|
|
73
|
+
});
|
|
74
|
+
}, false);
|
|
75
|
+
return _el$;
|
|
76
|
+
}
|
|
77
|
+
//#endregion
|
|
78
|
+
export { Input as t };
|
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
import { Textarea } from "./components/textarea/index.mjs";
|
|
2
|
+
import { injectComponentStyle } from "@bysages/core";
|
|
3
|
+
import { createComponent, delegateEvents, effect, insert, setAttribute, spread, template } from "@solidjs/web";
|
|
4
|
+
import { For, createEffect, createSignal, splitProps } from "solid-js";
|
|
5
|
+
import { Portal } from "solid-js/web";
|
|
6
|
+
import { Popover } from "@ark-ui/solid/popover";
|
|
7
|
+
//#region src/components/mentions/use-mentions.ts
|
|
8
|
+
/** The @-detection machinery behind a mention field: watch the caret,
|
|
9
|
+
* offer the matching candidates, and answer for the keys that drive
|
|
10
|
+
* them. The field element arrives as an accessor because hosts wrap it
|
|
11
|
+
* differently (a bare textarea, a field's own part).
|
|
12
|
+
*
|
|
13
|
+
* `onKeydown` answers whether the vessel consumed the key, so a host
|
|
14
|
+
* with its own Enter semantics — a composer that sends — can yield to
|
|
15
|
+
* the candidates first and act only when the vessel stands down. */
|
|
16
|
+
function useMentions(options, textarea, handlers) {
|
|
17
|
+
const [popupOpen, setPopupOpen] = createSignal(false);
|
|
18
|
+
const [matches, setMatches] = createSignal([]);
|
|
19
|
+
const [active, setActive] = createSignal(0);
|
|
20
|
+
const [anchorIndex, setAnchorIndex] = createSignal(0);
|
|
21
|
+
const [caretIndex, setCaretIndex] = createSignal(0);
|
|
22
|
+
const closePopup = () => {
|
|
23
|
+
setPopupOpen(false);
|
|
24
|
+
setMatches([]);
|
|
25
|
+
};
|
|
26
|
+
const detect = () => {
|
|
27
|
+
const text = handlers.getText();
|
|
28
|
+
const caret = textarea()?.selectionStart ?? text.length;
|
|
29
|
+
setCaretIndex(caret);
|
|
30
|
+
const head = text.slice(0, caret);
|
|
31
|
+
const char = options().trigger ?? "@";
|
|
32
|
+
const anchor = head.lastIndexOf(char);
|
|
33
|
+
const token = anchor === -1 ? "" : head.slice(anchor + char.length);
|
|
34
|
+
if (anchor === -1 || /\s/.test(token)) {
|
|
35
|
+
closePopup();
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
const found = options().items.filter((entry) => entry.label.toLowerCase().startsWith(token.toLowerCase()));
|
|
39
|
+
setMatches(found);
|
|
40
|
+
setActive(0);
|
|
41
|
+
setAnchorIndex(anchor);
|
|
42
|
+
setPopupOpen(found.length > 0);
|
|
43
|
+
};
|
|
44
|
+
const insert = (entry) => {
|
|
45
|
+
const text = handlers.getText();
|
|
46
|
+
const char = options().trigger ?? "@";
|
|
47
|
+
const next = text.slice(0, anchorIndex()) + char + entry.label + " " + text.slice(caretIndex());
|
|
48
|
+
handlers.setText(next);
|
|
49
|
+
closePopup();
|
|
50
|
+
queueMicrotask(() => {
|
|
51
|
+
const el = textarea();
|
|
52
|
+
if (!el) return;
|
|
53
|
+
const caret = anchorIndex() + char.length + entry.label.length + 1;
|
|
54
|
+
el.focus();
|
|
55
|
+
el.setSelectionRange(caret, caret);
|
|
56
|
+
});
|
|
57
|
+
};
|
|
58
|
+
/** Feed the field's input events through here — the vessel watches
|
|
59
|
+
* the text as it lands, from the element itself. */
|
|
60
|
+
const onInput = () => detect();
|
|
61
|
+
/** Arrows move, Enter inserts, Escape dismisses. Answers `true` when
|
|
62
|
+
* the vessel consumed the key. */
|
|
63
|
+
const onKeydown = (event) => {
|
|
64
|
+
if (!popupOpen() || matches().length === 0) return false;
|
|
65
|
+
if (event.key === "ArrowDown") {
|
|
66
|
+
event.preventDefault();
|
|
67
|
+
setActive((active() + 1) % matches().length);
|
|
68
|
+
} else if (event.key === "ArrowUp") {
|
|
69
|
+
event.preventDefault();
|
|
70
|
+
setActive((active() - 1 + matches().length) % matches().length);
|
|
71
|
+
} else if (event.key === "Enter") {
|
|
72
|
+
event.preventDefault();
|
|
73
|
+
insert(matches()[active()]);
|
|
74
|
+
} else if (event.key === "Escape") closePopup();
|
|
75
|
+
else return false;
|
|
76
|
+
return true;
|
|
77
|
+
};
|
|
78
|
+
return {
|
|
79
|
+
open: popupOpen,
|
|
80
|
+
matches,
|
|
81
|
+
active,
|
|
82
|
+
setActive,
|
|
83
|
+
insert,
|
|
84
|
+
close: closePopup,
|
|
85
|
+
onInput,
|
|
86
|
+
onKeydown
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
//#endregion
|
|
90
|
+
//#region src/components/mentions/index.tsx
|
|
91
|
+
var _tmpl$ = /* @__PURE__ */ template(`<div>`);
|
|
92
|
+
var _tmpl$2 = /* @__PURE__ */ template(`<div data-scope=mentions data-part=option>`);
|
|
93
|
+
var _tmpl$3 = /* @__PURE__ */ template(`<div><!><!>`);
|
|
94
|
+
/** The vessel: the candidates themselves as a floating card. The anchor
|
|
95
|
+
* is virtual — a live rectangle off the host's field — so a host keeps
|
|
96
|
+
* its own anatomy (the textarea rides where the host puts it) and the
|
|
97
|
+
* vessel still points at the right place. Shares the detection state
|
|
98
|
+
* with the host through `useMentions`. */
|
|
99
|
+
function MentionsVessel(props) {
|
|
100
|
+
injectComponentStyle("mentions");
|
|
101
|
+
return createComponent(Popover.Root, {
|
|
102
|
+
get open() {
|
|
103
|
+
return props.open ?? false;
|
|
104
|
+
},
|
|
105
|
+
onOpenChange: (details) => props.onOpenChange?.(details.open),
|
|
106
|
+
positioning: {
|
|
107
|
+
placement: "bottom-start",
|
|
108
|
+
getAnchorRect: () => props.anchor?.getBoundingClientRect() ?? null
|
|
109
|
+
},
|
|
110
|
+
get children() {
|
|
111
|
+
return createComponent(Portal, { get children() {
|
|
112
|
+
return createComponent(Popover.Positioner, { get children() {
|
|
113
|
+
return createComponent(Popover.Content, { asChild: (contentProps) => (() => {
|
|
114
|
+
var _el$ = _tmpl$();
|
|
115
|
+
spread(_el$, [contentProps, {
|
|
116
|
+
"data-scope": "mentions",
|
|
117
|
+
"data-part": "popup",
|
|
118
|
+
get "data-size"() {
|
|
119
|
+
return props.size ?? "md";
|
|
120
|
+
}
|
|
121
|
+
}], true);
|
|
122
|
+
insert(_el$, createComponent(For, {
|
|
123
|
+
get each() {
|
|
124
|
+
return props.matches ?? [];
|
|
125
|
+
},
|
|
126
|
+
children: (entry, index) => (() => {
|
|
127
|
+
var _el$2 = _tmpl$2();
|
|
128
|
+
_el$2._$$click = () => props.onInsert?.(entry);
|
|
129
|
+
_el$2._$$mousedown = (event) => event.preventDefault();
|
|
130
|
+
_el$2.addEventListener("mouseenter", () => props.onActiveChange?.(index()));
|
|
131
|
+
insert(_el$2, () => {
|
|
132
|
+
return entry.label;
|
|
133
|
+
});
|
|
134
|
+
effect(() => index() === (props.active ?? 0) ? "" : void 0, (_v$) => {
|
|
135
|
+
setAttribute(_el$2, "data-active", _v$);
|
|
136
|
+
});
|
|
137
|
+
return _el$2;
|
|
138
|
+
})()
|
|
139
|
+
}));
|
|
140
|
+
return _el$;
|
|
141
|
+
})() });
|
|
142
|
+
} });
|
|
143
|
+
} });
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* @-mentions: a plain textarea that, when the text before the caret ends
|
|
149
|
+
* with the trigger character followed by a token, offers the matching
|
|
150
|
+
* candidates in a small anchored vessel; choosing one replaces the token
|
|
151
|
+
* with `trigger + label` and hands the whole text back through
|
|
152
|
+
* `onValueChange`. Arrows move, Enter inserts, Escape dismisses.
|
|
153
|
+
*
|
|
154
|
+
* The field is the shared `Textarea` — field wiring (label ids, the
|
|
155
|
+
* invalid state) rides on it for free — and the vessel anchors to the
|
|
156
|
+
* field as a whole (popover machinery), not to the caret coordinates;
|
|
157
|
+
* caret-precise positioning would need a second positioning system for
|
|
158
|
+
* no practical gain at typical field sizes. Composers that keep their
|
|
159
|
+
* own field anatomy (the AI prompt input) skip this shell and wire
|
|
160
|
+
* `useMentions` plus `MentionsVessel` themselves.
|
|
161
|
+
*/
|
|
162
|
+
function Mentions(props) {
|
|
163
|
+
const [own, rest] = splitProps(props, [
|
|
164
|
+
"items",
|
|
165
|
+
"value",
|
|
166
|
+
"trigger",
|
|
167
|
+
"placeholder",
|
|
168
|
+
"autoresize",
|
|
169
|
+
"invalid",
|
|
170
|
+
"size",
|
|
171
|
+
"onValueChange"
|
|
172
|
+
]);
|
|
173
|
+
const [internal, setInternal] = createSignal("");
|
|
174
|
+
const [fieldEl, setFieldEl] = createSignal(null);
|
|
175
|
+
const value = () => own.value ?? internal();
|
|
176
|
+
const mentions = useMentions(() => ({
|
|
177
|
+
items: own.items ?? [],
|
|
178
|
+
trigger: own.trigger
|
|
179
|
+
}), fieldEl, {
|
|
180
|
+
getText: () => fieldEl()?.value ?? value(),
|
|
181
|
+
setText: (next) => {
|
|
182
|
+
setInternal(next);
|
|
183
|
+
own.onValueChange?.(next);
|
|
184
|
+
}
|
|
185
|
+
});
|
|
186
|
+
createEffect(() => {
|
|
187
|
+
value();
|
|
188
|
+
const node = fieldEl();
|
|
189
|
+
if (!node || !(own.autoresize ?? false)) return;
|
|
190
|
+
node.style.height = "auto";
|
|
191
|
+
node.style.height = `${node.scrollHeight}px`;
|
|
192
|
+
});
|
|
193
|
+
const onInput = () => {
|
|
194
|
+
const node = fieldEl();
|
|
195
|
+
if (!node) return;
|
|
196
|
+
setInternal(node.value);
|
|
197
|
+
own.onValueChange?.(node.value);
|
|
198
|
+
mentions.onInput();
|
|
199
|
+
};
|
|
200
|
+
var _el$3 = _tmpl$3();
|
|
201
|
+
var _el$4 = _el$3.firstChild;
|
|
202
|
+
var _el$5 = _el$4.nextSibling;
|
|
203
|
+
spread(_el$3, [rest, {
|
|
204
|
+
"data-scope": "mentions",
|
|
205
|
+
"data-part": "root",
|
|
206
|
+
get "data-size"() {
|
|
207
|
+
return own.size ?? "md";
|
|
208
|
+
}
|
|
209
|
+
}], true);
|
|
210
|
+
insert(_el$3, createComponent(Textarea, {
|
|
211
|
+
ref: (node) => setFieldEl(node),
|
|
212
|
+
get invalid() {
|
|
213
|
+
return own.invalid;
|
|
214
|
+
},
|
|
215
|
+
rows: 3,
|
|
216
|
+
get placeholder() {
|
|
217
|
+
return own.placeholder;
|
|
218
|
+
},
|
|
219
|
+
get value() {
|
|
220
|
+
return value();
|
|
221
|
+
},
|
|
222
|
+
onValueChange: (next) => {
|
|
223
|
+
setInternal(next);
|
|
224
|
+
own.onValueChange?.(next);
|
|
225
|
+
},
|
|
226
|
+
onInput,
|
|
227
|
+
onKeyDown: (event) => {
|
|
228
|
+
mentions.onKeydown(event);
|
|
229
|
+
},
|
|
230
|
+
"data-scope": "mentions",
|
|
231
|
+
"data-part": "textarea"
|
|
232
|
+
}), _el$4);
|
|
233
|
+
insert(_el$3, createComponent(MentionsVessel, {
|
|
234
|
+
get open() {
|
|
235
|
+
return mentions.open();
|
|
236
|
+
},
|
|
237
|
+
get matches() {
|
|
238
|
+
return mentions.matches();
|
|
239
|
+
},
|
|
240
|
+
get active() {
|
|
241
|
+
return mentions.active();
|
|
242
|
+
},
|
|
243
|
+
get size() {
|
|
244
|
+
return own.size ?? "md";
|
|
245
|
+
},
|
|
246
|
+
get anchor() {
|
|
247
|
+
return fieldEl();
|
|
248
|
+
},
|
|
249
|
+
get onInsert() {
|
|
250
|
+
return mentions.insert;
|
|
251
|
+
},
|
|
252
|
+
get onActiveChange() {
|
|
253
|
+
return mentions.setActive;
|
|
254
|
+
},
|
|
255
|
+
onOpenChange: (open) => {
|
|
256
|
+
if (!open) mentions.close();
|
|
257
|
+
}
|
|
258
|
+
}), _el$5);
|
|
259
|
+
return _el$3;
|
|
260
|
+
}
|
|
261
|
+
delegateEvents(["mousedown", "click"]);
|
|
262
|
+
//#endregion
|
|
263
|
+
export { MentionsVessel as n, useMentions as r, Mentions as t };
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { injectComponentStyle } from "@bysages/core";
|
|
2
|
+
import { createComponent, effect, insert, mergeProps, ref, setAttribute, spread, template } from "@solidjs/web";
|
|
3
|
+
import { For, Show, createEffect, createSignal, onMount, splitProps } from "solid-js";
|
|
4
|
+
import { useFieldContext } from "@ark-ui/solid/field";
|
|
5
|
+
import { Select } from "@ark-ui/solid/select";
|
|
6
|
+
//#region src/components/select/native.tsx
|
|
7
|
+
var _tmpl$ = /* @__PURE__ */ template(`<option value disabled>`);
|
|
8
|
+
var _tmpl$2 = /* @__PURE__ */ template(`<span><select><!><!></select><svg data-scope=select data-part=native-icon viewBox="0 0 16 16"aria-hidden=true><path d="M4 6l4 4 4-4"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round>`);
|
|
9
|
+
var _tmpl$3 = /* @__PURE__ */ template(`<option>`);
|
|
10
|
+
function NativeSelect(props) {
|
|
11
|
+
injectComponentStyle("select");
|
|
12
|
+
const field = useFieldContext();
|
|
13
|
+
const [own, rest] = splitProps(props, [
|
|
14
|
+
"value",
|
|
15
|
+
"options",
|
|
16
|
+
"size",
|
|
17
|
+
"invalid",
|
|
18
|
+
"placeholder",
|
|
19
|
+
"disabled",
|
|
20
|
+
"onValueChange"
|
|
21
|
+
]);
|
|
22
|
+
const [select, setSelect] = createSignal(null);
|
|
23
|
+
onMount(() => {
|
|
24
|
+
createEffect(() => {
|
|
25
|
+
const el = select();
|
|
26
|
+
if (el) el.value = own.value ?? "";
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
const fieldProps = field?.().getInputProps() ?? {};
|
|
30
|
+
const empty = () => own.value == null || own.value === "";
|
|
31
|
+
const off = () => own.disabled || field?.().disabled;
|
|
32
|
+
var _el$ = _tmpl$2();
|
|
33
|
+
var _el$2 = _el$.firstChild;
|
|
34
|
+
var _el$4 = _el$2.firstChild;
|
|
35
|
+
var _el$5 = _el$4.nextSibling;
|
|
36
|
+
spread(_el$, [rest, {
|
|
37
|
+
"data-scope": "select",
|
|
38
|
+
"data-part": "native-root",
|
|
39
|
+
get "data-size"() {
|
|
40
|
+
return own.size ?? "md";
|
|
41
|
+
},
|
|
42
|
+
get "data-invalid"() {
|
|
43
|
+
return own.invalid || field?.().invalid ? "" : void 0;
|
|
44
|
+
},
|
|
45
|
+
get "data-disabled"() {
|
|
46
|
+
return off() ? "" : void 0;
|
|
47
|
+
},
|
|
48
|
+
get "data-placeholder-shown"() {
|
|
49
|
+
return empty() ? "" : void 0;
|
|
50
|
+
}
|
|
51
|
+
}], true);
|
|
52
|
+
ref(() => {
|
|
53
|
+
return setSelect;
|
|
54
|
+
}, _el$2);
|
|
55
|
+
spread(_el$2, [fieldProps, {
|
|
56
|
+
"data-scope": "select",
|
|
57
|
+
"data-part": "native",
|
|
58
|
+
get disabled() {
|
|
59
|
+
return off() || void 0;
|
|
60
|
+
},
|
|
61
|
+
onChange: (event) => own.onValueChange?.(event.currentTarget.value)
|
|
62
|
+
}], true);
|
|
63
|
+
insert(_el$2, createComponent(Show, {
|
|
64
|
+
get when() {
|
|
65
|
+
return own.placeholder;
|
|
66
|
+
},
|
|
67
|
+
get children() {
|
|
68
|
+
var _el$3 = _tmpl$();
|
|
69
|
+
insert(_el$3, () => {
|
|
70
|
+
return own.placeholder;
|
|
71
|
+
});
|
|
72
|
+
effect(() => empty() ? void 0 : true, (_v$) => {
|
|
73
|
+
setAttribute(_el$3, "hidden", _v$);
|
|
74
|
+
});
|
|
75
|
+
return _el$3;
|
|
76
|
+
}
|
|
77
|
+
}), _el$4);
|
|
78
|
+
insert(_el$2, createComponent(For, {
|
|
79
|
+
get each() {
|
|
80
|
+
return own.options;
|
|
81
|
+
},
|
|
82
|
+
children: (option) => (() => {
|
|
83
|
+
var _el$6 = _tmpl$3();
|
|
84
|
+
insert(_el$6, () => {
|
|
85
|
+
return option.label;
|
|
86
|
+
});
|
|
87
|
+
effect(() => {
|
|
88
|
+
return {
|
|
89
|
+
e: option.value,
|
|
90
|
+
t: option.disabled
|
|
91
|
+
};
|
|
92
|
+
}, ({ e, t }, _p$) => {
|
|
93
|
+
_el$6.value = e;
|
|
94
|
+
t !== _p$?.t && setAttribute(_el$6, "disabled", t);
|
|
95
|
+
});
|
|
96
|
+
return _el$6;
|
|
97
|
+
})()
|
|
98
|
+
}), _el$5);
|
|
99
|
+
return _el$;
|
|
100
|
+
}
|
|
101
|
+
//#endregion
|
|
102
|
+
//#region src/components/select/index.tsx
|
|
103
|
+
function SelectRoot(props) {
|
|
104
|
+
const [own, rest] = splitProps(props, ["size"]);
|
|
105
|
+
return createComponent(Select.Root, mergeProps(rest, { get "data-size"() {
|
|
106
|
+
return own.size ?? "md";
|
|
107
|
+
} }));
|
|
108
|
+
}
|
|
109
|
+
const Select$1 = {
|
|
110
|
+
...Select,
|
|
111
|
+
Root: SelectRoot
|
|
112
|
+
};
|
|
113
|
+
injectComponentStyle("select");
|
|
114
|
+
//#endregion
|
|
115
|
+
export { NativeSelect as n, Select$1 as t };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bysages/solid",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "By Sages Elements components for Solid — styled by the paper-and-ink design tokens",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"accessible",
|
|
@@ -32,31 +32,125 @@
|
|
|
32
32
|
"dist"
|
|
33
33
|
],
|
|
34
34
|
"type": "module",
|
|
35
|
+
"sideEffects": [
|
|
36
|
+
"./dist/components/accordion/index.mjs",
|
|
37
|
+
"./dist/components/ai/index.mjs",
|
|
38
|
+
"./dist/components/alert/index.mjs",
|
|
39
|
+
"./dist/components/angle-slider/index.mjs",
|
|
40
|
+
"./dist/components/avatar/index.mjs",
|
|
41
|
+
"./dist/components/banner/index.mjs",
|
|
42
|
+
"./dist/components/breadcrumb/index.mjs",
|
|
43
|
+
"./dist/components/card/index.mjs",
|
|
44
|
+
"./dist/components/carousel/index.mjs",
|
|
45
|
+
"./dist/components/checkbox/index.mjs",
|
|
46
|
+
"./dist/components/clipboard/index.mjs",
|
|
47
|
+
"./dist/components/collapsible/index.mjs",
|
|
48
|
+
"./dist/components/color-picker/index.mjs",
|
|
49
|
+
"./dist/components/combobox/index.mjs",
|
|
50
|
+
"./dist/components/date-input/index.mjs",
|
|
51
|
+
"./dist/components/date-picker/index.mjs",
|
|
52
|
+
"./dist/components/descriptions/index.mjs",
|
|
53
|
+
"./dist/components/dialog/index.mjs",
|
|
54
|
+
"./dist/components/drawer/index.mjs",
|
|
55
|
+
"./dist/components/editable/index.mjs",
|
|
56
|
+
"./dist/components/empty/index.mjs",
|
|
57
|
+
"./dist/components/field/index.mjs",
|
|
58
|
+
"./dist/components/fieldset/index.mjs",
|
|
59
|
+
"./dist/components/file-upload/index.mjs",
|
|
60
|
+
"./dist/components/float-button/index.mjs",
|
|
61
|
+
"./dist/components/floating-panel/index.mjs",
|
|
62
|
+
"./dist/components/highlight/index.mjs",
|
|
63
|
+
"./dist/components/hover-card/index.mjs",
|
|
64
|
+
"./dist/components/image-cropper/index.mjs",
|
|
65
|
+
"./dist/components/input-group/index.mjs",
|
|
66
|
+
"./dist/components/json-tree-view/index.mjs",
|
|
67
|
+
"./dist/components/layout/index.mjs",
|
|
68
|
+
"./dist/components/list/index.mjs",
|
|
69
|
+
"./dist/components/listbox/index.mjs",
|
|
70
|
+
"./dist/components/marquee/index.mjs",
|
|
71
|
+
"./dist/components/menu/index.mjs",
|
|
72
|
+
"./dist/components/meter/index.mjs",
|
|
73
|
+
"./dist/components/navigation-menu/index.mjs",
|
|
74
|
+
"./dist/components/number-input/index.mjs",
|
|
75
|
+
"./dist/components/page-header/index.mjs",
|
|
76
|
+
"./dist/components/pagination/index.mjs",
|
|
77
|
+
"./dist/components/password-input/index.mjs",
|
|
78
|
+
"./dist/components/pin-input/index.mjs",
|
|
79
|
+
"./dist/components/popover/index.mjs",
|
|
80
|
+
"./dist/components/progress/index.mjs",
|
|
81
|
+
"./dist/components/qr-code/index.mjs",
|
|
82
|
+
"./dist/components/radio-group/index.mjs",
|
|
83
|
+
"./dist/components/rating-group/index.mjs",
|
|
84
|
+
"./dist/components/scroll-area/index.mjs",
|
|
85
|
+
"./dist/components/segment-group/index.mjs",
|
|
86
|
+
"./dist/components/select/index.mjs",
|
|
87
|
+
"./dist/components/signature-pad/index.mjs",
|
|
88
|
+
"./dist/components/slider/index.mjs",
|
|
89
|
+
"./dist/components/splitter/index.mjs",
|
|
90
|
+
"./dist/components/stat/index.mjs",
|
|
91
|
+
"./dist/components/steps/index.mjs",
|
|
92
|
+
"./dist/components/swap/index.mjs",
|
|
93
|
+
"./dist/components/switch/index.mjs",
|
|
94
|
+
"./dist/components/tabs/index.mjs",
|
|
95
|
+
"./dist/components/tags-input/index.mjs",
|
|
96
|
+
"./dist/components/timeline/index.mjs",
|
|
97
|
+
"./dist/components/timer/index.mjs",
|
|
98
|
+
"./dist/components/toast/index.mjs",
|
|
99
|
+
"./dist/components/toc/index.mjs",
|
|
100
|
+
"./dist/components/toggle/index.mjs",
|
|
101
|
+
"./dist/components/toggle-group/index.mjs",
|
|
102
|
+
"./dist/components/tooltip/index.mjs",
|
|
103
|
+
"./dist/components/tour/index.mjs",
|
|
104
|
+
"./dist/components/tree-view/index.mjs",
|
|
105
|
+
"./dist/components/typography/index.mjs"
|
|
106
|
+
],
|
|
35
107
|
"main": "dist/index.mjs",
|
|
36
108
|
"types": "dist/index.d.mts",
|
|
37
109
|
"exports": {
|
|
38
110
|
".": {
|
|
39
111
|
"types": "./dist/index.d.mts",
|
|
40
112
|
"import": "./dist/index.mjs"
|
|
113
|
+
},
|
|
114
|
+
"./generative": {
|
|
115
|
+
"types": "./dist/generative/index.d.mts",
|
|
116
|
+
"import": "./dist/generative/index.mjs"
|
|
41
117
|
}
|
|
42
118
|
},
|
|
43
119
|
"dependencies": {
|
|
44
120
|
"@ark-ui/solid": "5.39.2",
|
|
45
|
-
"@tanstack/markdown": "0.0
|
|
121
|
+
"@tanstack/markdown": "1.0.0",
|
|
122
|
+
"@tanstack/solid-form": "1.33.5",
|
|
46
123
|
"@tanstack/solid-table": "9.2.4",
|
|
47
124
|
"@tanstack/solid-virtual": "3.13.40",
|
|
48
125
|
"@zag-js/cascade-select": "1.44.0",
|
|
49
126
|
"@zag-js/solid": "1.44.0",
|
|
50
|
-
"@bysages/icons": "0.
|
|
51
|
-
"@bysages/core": "0.
|
|
127
|
+
"@bysages/icons": "0.3.0",
|
|
128
|
+
"@bysages/core": "0.3.0"
|
|
52
129
|
},
|
|
53
130
|
"devDependencies": {
|
|
54
|
-
"
|
|
131
|
+
"@json-render/core": "0.21.0",
|
|
132
|
+
"@json-render/solid": "0.21.0",
|
|
133
|
+
"ai": "7.0.126",
|
|
55
134
|
"solid-js": "1.9.15",
|
|
56
|
-
"unplugin-solid": "
|
|
135
|
+
"unplugin-solid": "3.0.0",
|
|
136
|
+
"zod": "4.6.5"
|
|
57
137
|
},
|
|
58
138
|
"peerDependencies": {
|
|
59
|
-
"
|
|
139
|
+
"@json-render/core": "^0.21.0",
|
|
140
|
+
"@json-render/solid": "^0.21.0",
|
|
141
|
+
"solid-js": "^1.9",
|
|
142
|
+
"zod": "^4.0"
|
|
143
|
+
},
|
|
144
|
+
"peerDependenciesMeta": {
|
|
145
|
+
"@json-render/core": {
|
|
146
|
+
"optional": true
|
|
147
|
+
},
|
|
148
|
+
"@json-render/solid": {
|
|
149
|
+
"optional": true
|
|
150
|
+
},
|
|
151
|
+
"zod": {
|
|
152
|
+
"optional": true
|
|
153
|
+
}
|
|
60
154
|
},
|
|
61
155
|
"scripts": {
|
|
62
156
|
"dev": "basis build --stub",
|