@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,175 @@
|
|
|
1
|
+
import { Button } from "../button/index.mjs";
|
|
2
|
+
import { t as Input } from "../../input-DoFQ7RXh.mjs";
|
|
3
|
+
import { injectComponentStyle } from "@bysages/core";
|
|
4
|
+
import { createComponent, insert, setAttribute, spread, template } from "@solidjs/web";
|
|
5
|
+
import { For, Show, createSignal, splitProps } from "solid-js";
|
|
6
|
+
import { Checkbox } from "@ark-ui/solid/checkbox";
|
|
7
|
+
//#region src/components/transfer/index.tsx
|
|
8
|
+
var _tmpl$ = /* @__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">`);
|
|
9
|
+
var _tmpl$2 = /* @__PURE__ */ template(`<svg viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=1.75 stroke-linecap=round stroke-linejoin=round aria-hidden=true><path>`);
|
|
10
|
+
var _tmpl$3 = /* @__PURE__ */ template(`<div data-scope=transfer data-part=search>`);
|
|
11
|
+
var _tmpl$4 = /* @__PURE__ */ template(`<div data-scope=transfer data-part=panel><div data-scope=transfer data-part=head><span data-scope=transfer data-part=title></span><span data-scope=transfer data-part=count></span></div><div data-scope=transfer data-part=list>`);
|
|
12
|
+
var _tmpl$5 = /* @__PURE__ */ template(`<p data-scope=transfer data-part=empty>Nothing here`);
|
|
13
|
+
var _tmpl$6 = /* @__PURE__ */ template(`<div><div data-scope=transfer data-part=operations><!><!></div><!>`);
|
|
14
|
+
function checkGlyph() {
|
|
15
|
+
return _tmpl$();
|
|
16
|
+
}
|
|
17
|
+
function arrowGlyph(direction) {
|
|
18
|
+
var _el$2 = _tmpl$2();
|
|
19
|
+
var _el$3 = _el$2.firstChild;
|
|
20
|
+
setAttribute(_el$3, "d", direction === "right" ? "M5 12h14m-6-6 6 6-6 6" : "M19 12H5m6-6-6 6 6 6");
|
|
21
|
+
return _el$2;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Two ledgers and a crossing: items sit in the source column until the
|
|
25
|
+
* reader checks them and walks them across — and back, the same way.
|
|
26
|
+
* `value` is the target column's value list; everything else in
|
|
27
|
+
* `data` stays on the left. `searchable` adds a filter line to each
|
|
28
|
+
* panel.
|
|
29
|
+
*/
|
|
30
|
+
function Transfer(props) {
|
|
31
|
+
injectComponentStyle("transfer");
|
|
32
|
+
injectComponentStyle("checkbox");
|
|
33
|
+
const [own, rest] = splitProps(props, [
|
|
34
|
+
"value",
|
|
35
|
+
"data",
|
|
36
|
+
"titles",
|
|
37
|
+
"searchable",
|
|
38
|
+
"disabled",
|
|
39
|
+
"onValueChange"
|
|
40
|
+
]);
|
|
41
|
+
const [checkedSource, setCheckedSource] = createSignal(/* @__PURE__ */ new Set());
|
|
42
|
+
const [checkedTarget, setCheckedTarget] = createSignal(/* @__PURE__ */ new Set());
|
|
43
|
+
const [sourceQuery, setSourceQuery] = createSignal("");
|
|
44
|
+
const [targetQuery, setTargetQuery] = createSignal("");
|
|
45
|
+
const target = () => new Set(own.value ?? []);
|
|
46
|
+
function panelItems(values, inTarget, query) {
|
|
47
|
+
return values.filter((item) => item.label.toLowerCase().includes(query.toLowerCase()) && target().has(item.value) === inTarget);
|
|
48
|
+
}
|
|
49
|
+
function toggle(set, value, setChecked) {
|
|
50
|
+
const next = new Set(set);
|
|
51
|
+
if (next.has(value)) next.delete(value);
|
|
52
|
+
else next.add(value);
|
|
53
|
+
setChecked(next);
|
|
54
|
+
}
|
|
55
|
+
function move(toTarget) {
|
|
56
|
+
const moving = toTarget ? checkedSource() : checkedTarget();
|
|
57
|
+
if (moving.size === 0) return;
|
|
58
|
+
const next = toTarget ? [...own.value ?? [], ...moving].filter((value, index, all) => all.indexOf(value) === index) : (own.value ?? []).filter((value) => !moving.has(value));
|
|
59
|
+
(toTarget ? setCheckedSource : setCheckedTarget)(/* @__PURE__ */ new Set());
|
|
60
|
+
own.onValueChange?.(next);
|
|
61
|
+
}
|
|
62
|
+
function panel(side, title, query, setQuery, checked, setChecked, items) {
|
|
63
|
+
var _el$4 = _tmpl$4();
|
|
64
|
+
var _el$5 = _el$4.firstChild;
|
|
65
|
+
var _el$6 = _el$5.firstChild;
|
|
66
|
+
var _el$7 = _el$6.nextSibling;
|
|
67
|
+
var _el$9 = _el$5.nextSibling;
|
|
68
|
+
setAttribute(_el$4, "data-side", side);
|
|
69
|
+
insert(_el$6, title);
|
|
70
|
+
insert(_el$7, () => {
|
|
71
|
+
return String(items.length);
|
|
72
|
+
});
|
|
73
|
+
insert(_el$4, createComponent(Show, {
|
|
74
|
+
get when() {
|
|
75
|
+
return own.searchable;
|
|
76
|
+
},
|
|
77
|
+
get children() {
|
|
78
|
+
var _el$8 = _tmpl$3();
|
|
79
|
+
insert(_el$8, createComponent(Input, {
|
|
80
|
+
size: "sm",
|
|
81
|
+
get value() {
|
|
82
|
+
return query();
|
|
83
|
+
},
|
|
84
|
+
onValueChange: setQuery,
|
|
85
|
+
placeholder: "Filter…",
|
|
86
|
+
"aria-label": `Filter ${title}`
|
|
87
|
+
}));
|
|
88
|
+
return _el$8;
|
|
89
|
+
}
|
|
90
|
+
}), _el$9);
|
|
91
|
+
insert(_el$9, createComponent(Show, {
|
|
92
|
+
get when() {
|
|
93
|
+
return items.length > 0;
|
|
94
|
+
},
|
|
95
|
+
get fallback() {
|
|
96
|
+
return _tmpl$5();
|
|
97
|
+
},
|
|
98
|
+
get children() {
|
|
99
|
+
return createComponent(For, {
|
|
100
|
+
each: items,
|
|
101
|
+
children: (item) => createComponent(Checkbox.Root, {
|
|
102
|
+
get checked() {
|
|
103
|
+
return checked().has(item.value);
|
|
104
|
+
},
|
|
105
|
+
get disabled() {
|
|
106
|
+
return own.disabled || item.disabled === true;
|
|
107
|
+
},
|
|
108
|
+
onCheckedChange: () => toggle(checked(), item.value, setChecked),
|
|
109
|
+
get children() {
|
|
110
|
+
return [
|
|
111
|
+
createComponent(Checkbox.Control, { get children() {
|
|
112
|
+
return createComponent(Checkbox.Indicator, { get children() {
|
|
113
|
+
return checkGlyph();
|
|
114
|
+
} });
|
|
115
|
+
} }),
|
|
116
|
+
createComponent(Checkbox.Label, {
|
|
117
|
+
"data-part": "label",
|
|
118
|
+
get children() {
|
|
119
|
+
return item.label;
|
|
120
|
+
}
|
|
121
|
+
}),
|
|
122
|
+
createComponent(Checkbox.HiddenInput, {})
|
|
123
|
+
];
|
|
124
|
+
}
|
|
125
|
+
})
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
}));
|
|
129
|
+
return _el$4;
|
|
130
|
+
}
|
|
131
|
+
var _el$11 = _tmpl$6();
|
|
132
|
+
var _el$12 = _el$11.firstChild;
|
|
133
|
+
var _el$13 = _el$12.firstChild;
|
|
134
|
+
var _el$14 = _el$13.nextSibling;
|
|
135
|
+
var _el$15 = _el$12.nextSibling;
|
|
136
|
+
spread(_el$11, [rest, {
|
|
137
|
+
"data-scope": "transfer",
|
|
138
|
+
"data-part": "root"
|
|
139
|
+
}], true);
|
|
140
|
+
insert(_el$11, () => {
|
|
141
|
+
return panel("source", own.titles?.[0] ?? "Source", sourceQuery, setSourceQuery, checkedSource, setCheckedSource, panelItems(own.data, false, sourceQuery()));
|
|
142
|
+
}, _el$12);
|
|
143
|
+
insert(_el$12, createComponent(Button, {
|
|
144
|
+
variant: "outline",
|
|
145
|
+
size: "sm",
|
|
146
|
+
square: true,
|
|
147
|
+
get disabled() {
|
|
148
|
+
return checkedSource().size === 0 || own.disabled;
|
|
149
|
+
},
|
|
150
|
+
"aria-label": "Move right",
|
|
151
|
+
onClick: () => move(true),
|
|
152
|
+
get children() {
|
|
153
|
+
return arrowGlyph("right");
|
|
154
|
+
}
|
|
155
|
+
}), _el$13);
|
|
156
|
+
insert(_el$12, createComponent(Button, {
|
|
157
|
+
variant: "outline",
|
|
158
|
+
size: "sm",
|
|
159
|
+
square: true,
|
|
160
|
+
get disabled() {
|
|
161
|
+
return checkedTarget().size === 0 || own.disabled;
|
|
162
|
+
},
|
|
163
|
+
"aria-label": "Move left",
|
|
164
|
+
onClick: () => move(false),
|
|
165
|
+
get children() {
|
|
166
|
+
return arrowGlyph("left");
|
|
167
|
+
}
|
|
168
|
+
}), _el$14);
|
|
169
|
+
insert(_el$11, () => {
|
|
170
|
+
return panel("target", own.titles?.[1] ?? "Target", targetQuery, setTargetQuery, checkedTarget, setCheckedTarget, panelItems(own.data, true, targetQuery()));
|
|
171
|
+
}, _el$15);
|
|
172
|
+
return _el$11;
|
|
173
|
+
}
|
|
174
|
+
//#endregion
|
|
175
|
+
export { Transfer };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { JSX } from "solid-js";
|
|
2
|
+
//#region src/components/tree-select/index.d.ts
|
|
3
|
+
export interface TreeSelectNode {
|
|
4
|
+
label: string;
|
|
5
|
+
value: string;
|
|
6
|
+
children?: TreeSelectNode[];
|
|
7
|
+
disabled?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface TreeSelectProps extends JSX.HTMLAttributes<HTMLDivElement> {
|
|
10
|
+
value?: string;
|
|
11
|
+
data: TreeSelectNode[];
|
|
12
|
+
placeholder?: string;
|
|
13
|
+
filterable?: boolean;
|
|
14
|
+
/** One rung of the ladder: the trigger height and the vessel's
|
|
15
|
+
* row register follow it together. */
|
|
16
|
+
size?: "sm" | "md" | "lg";
|
|
17
|
+
disabled?: boolean;
|
|
18
|
+
onValueChange?: (value: string) => void;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* A tree behind a field: the control reads like an input, the vessel
|
|
22
|
+
* below walks the hierarchy, and one leaf click closes the deal. Single
|
|
23
|
+
* selection — the chosen label rides on the control, its value rides in
|
|
24
|
+
* `value`. `filterable` puts a filter line at the top of the vessel;
|
|
25
|
+
* matches keep their ancestors and the branches fan open.
|
|
26
|
+
*/
|
|
27
|
+
export declare function TreeSelect(props: TreeSelectProps): JSX.Element;
|
|
28
|
+
//#endregion
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
import { t as Input } from "../../input-DoFQ7RXh.mjs";
|
|
2
|
+
import { injectComponentStyle } from "@bysages/core";
|
|
3
|
+
import { createComponent, insert, memo, mergeProps, spread, template } from "@solidjs/web";
|
|
4
|
+
import { For, Show, createMemo, createSignal, splitProps } from "solid-js";
|
|
5
|
+
import { Portal } from "solid-js/web";
|
|
6
|
+
import { useFilter } from "@ark-ui/solid/locale";
|
|
7
|
+
import { Popover } from "@ark-ui/solid/popover";
|
|
8
|
+
import { TreeView, createTreeCollection } from "@ark-ui/solid/tree-view";
|
|
9
|
+
//#region src/components/tree-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="m9 18 6-6-6-6">`);
|
|
11
|
+
var _tmpl$2 = /* @__PURE__ */ template(`<span>`);
|
|
12
|
+
var _tmpl$3 = /* @__PURE__ */ template(`<div data-scope=tree-select data-part=search>`);
|
|
13
|
+
var _tmpl$4 = /* @__PURE__ */ template(`<div data-scope=tree-select data-part=body>`);
|
|
14
|
+
var _tmpl$5 = /* @__PURE__ */ template(`<button><span data-part=chevron aria-hidden=true>`);
|
|
15
|
+
var _tmpl$6 = /* @__PURE__ */ template(`<p data-scope=tree-select data-part=empty>Nothing matches`);
|
|
16
|
+
function chevron() {
|
|
17
|
+
return _tmpl$();
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* A tree behind a field: the control reads like an input, the vessel
|
|
21
|
+
* below walks the hierarchy, and one leaf click closes the deal. Single
|
|
22
|
+
* selection — the chosen label rides on the control, its value rides in
|
|
23
|
+
* `value`. `filterable` puts a filter line at the top of the vessel;
|
|
24
|
+
* matches keep their ancestors and the branches fan open.
|
|
25
|
+
*/
|
|
26
|
+
function TreeSelect(props) {
|
|
27
|
+
injectComponentStyle("tree-select");
|
|
28
|
+
injectComponentStyle("tree-view");
|
|
29
|
+
const [own, rest] = splitProps(props, [
|
|
30
|
+
"value",
|
|
31
|
+
"data",
|
|
32
|
+
"placeholder",
|
|
33
|
+
"filterable",
|
|
34
|
+
"disabled",
|
|
35
|
+
"size",
|
|
36
|
+
"onValueChange"
|
|
37
|
+
]);
|
|
38
|
+
const [open, setOpen] = createSignal(false);
|
|
39
|
+
const [query, setQuery] = createSignal("");
|
|
40
|
+
const filterFns = useFilter({ sensitivity: "base" });
|
|
41
|
+
const collection = createMemo(() => createTreeCollection({
|
|
42
|
+
nodeToValue: (node) => node.value,
|
|
43
|
+
nodeToString: (node) => node.label,
|
|
44
|
+
rootNode: {
|
|
45
|
+
value: "ROOT",
|
|
46
|
+
label: "",
|
|
47
|
+
children: own.data
|
|
48
|
+
}
|
|
49
|
+
}));
|
|
50
|
+
const filtering = () => own.filterable && query().trim().length > 0;
|
|
51
|
+
/** The collection pruned to the matches — each hit keeping its
|
|
52
|
+
* ancestors, so a deep match still reads inside its hierarchy. */
|
|
53
|
+
const visibleCollection = createMemo(() => filtering() ? collection().filter((node) => filterFns().contains(node.label, query().trim())) : collection());
|
|
54
|
+
const firstLevel = () => (own.data ?? []).map((node) => node.value);
|
|
55
|
+
const expandedWhileFiltering = () => {
|
|
56
|
+
if (!filtering()) return void 0;
|
|
57
|
+
const values = [];
|
|
58
|
+
const walk = (nodes) => {
|
|
59
|
+
for (const node of nodes) if (node.children?.length) {
|
|
60
|
+
values.push(node.value);
|
|
61
|
+
walk(node.children);
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
walk(visibleCollection().rootNode.children ?? []);
|
|
65
|
+
return values;
|
|
66
|
+
};
|
|
67
|
+
const label = () => {
|
|
68
|
+
let found;
|
|
69
|
+
const walk = (nodes) => {
|
|
70
|
+
for (const node of nodes ?? []) {
|
|
71
|
+
if (node.value === own.value) found = node.label;
|
|
72
|
+
walk(node.children);
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
walk(own.data);
|
|
76
|
+
return found;
|
|
77
|
+
};
|
|
78
|
+
function pick(details) {
|
|
79
|
+
const [value] = details.selectedValue;
|
|
80
|
+
if (value == null) return;
|
|
81
|
+
own.onValueChange?.(value);
|
|
82
|
+
setOpen(false);
|
|
83
|
+
}
|
|
84
|
+
function Row(rowProps) {
|
|
85
|
+
return createComponent(TreeView.NodeProvider, {
|
|
86
|
+
get node() {
|
|
87
|
+
return rowProps.node;
|
|
88
|
+
},
|
|
89
|
+
get indexPath() {
|
|
90
|
+
return rowProps.indexPath;
|
|
91
|
+
},
|
|
92
|
+
get children() {
|
|
93
|
+
return createComponent(Show, {
|
|
94
|
+
get when() {
|
|
95
|
+
return rowProps.node.children;
|
|
96
|
+
},
|
|
97
|
+
get fallback() {
|
|
98
|
+
return createComponent(TreeView.Item, { asChild: (propsFn) => (() => {
|
|
99
|
+
var _el$2 = _tmpl$2();
|
|
100
|
+
spread(_el$2, [propsFn, { style: {
|
|
101
|
+
display: "flex",
|
|
102
|
+
"inline-size": "100%"
|
|
103
|
+
} }], true);
|
|
104
|
+
insert(_el$2, createComponent(TreeView.ItemText, { get children() {
|
|
105
|
+
return rowProps.node.label;
|
|
106
|
+
} }));
|
|
107
|
+
return _el$2;
|
|
108
|
+
})() });
|
|
109
|
+
},
|
|
110
|
+
get children() {
|
|
111
|
+
return createComponent(TreeView.Branch, { get children() {
|
|
112
|
+
return [createComponent(TreeView.BranchControl, { get children() {
|
|
113
|
+
return [createComponent(TreeView.BranchIndicator, { get children() {
|
|
114
|
+
return chevron();
|
|
115
|
+
} }), createComponent(TreeView.BranchText, { get children() {
|
|
116
|
+
return rowProps.node.label;
|
|
117
|
+
} })];
|
|
118
|
+
} }), createComponent(TreeView.BranchContent, { get children() {
|
|
119
|
+
return [createComponent(TreeView.BranchIndentGuide, {}), createComponent(For, {
|
|
120
|
+
get each() {
|
|
121
|
+
return rowProps.node.children;
|
|
122
|
+
},
|
|
123
|
+
children: (child, index) => createComponent(Row, {
|
|
124
|
+
node: child,
|
|
125
|
+
get indexPath() {
|
|
126
|
+
return [...rowProps.indexPath, index()];
|
|
127
|
+
}
|
|
128
|
+
})
|
|
129
|
+
})];
|
|
130
|
+
} })];
|
|
131
|
+
} });
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
return createComponent(Popover.Root, mergeProps(rest, {
|
|
138
|
+
get open() {
|
|
139
|
+
return open();
|
|
140
|
+
},
|
|
141
|
+
onOpenChange: (details) => {
|
|
142
|
+
setOpen(details.open);
|
|
143
|
+
if (!details.open) setQuery("");
|
|
144
|
+
},
|
|
145
|
+
positioning: {
|
|
146
|
+
sameWidth: true,
|
|
147
|
+
placement: "bottom-start"
|
|
148
|
+
},
|
|
149
|
+
get children() {
|
|
150
|
+
return [createComponent(Popover.Trigger, { asChild: (propsFn) => (() => {
|
|
151
|
+
var _el$5 = _tmpl$5();
|
|
152
|
+
var _el$6 = _el$5.firstChild;
|
|
153
|
+
spread(_el$5, [propsFn, {
|
|
154
|
+
type: "button",
|
|
155
|
+
"data-scope": "tree-select",
|
|
156
|
+
"data-part": "control",
|
|
157
|
+
get "data-size"() {
|
|
158
|
+
return own.size ?? "md";
|
|
159
|
+
},
|
|
160
|
+
get "data-open"() {
|
|
161
|
+
return open() ? "" : void 0;
|
|
162
|
+
},
|
|
163
|
+
get "data-placeholder"() {
|
|
164
|
+
return label() == null ? "" : void 0;
|
|
165
|
+
},
|
|
166
|
+
get disabled() {
|
|
167
|
+
return own.disabled;
|
|
168
|
+
}
|
|
169
|
+
}], true);
|
|
170
|
+
insert(_el$5, () => {
|
|
171
|
+
return label() ?? own.placeholder ?? "Select…";
|
|
172
|
+
}, _el$6);
|
|
173
|
+
insert(_el$6, chevron);
|
|
174
|
+
return _el$5;
|
|
175
|
+
})() }), createComponent(Portal, { get children() {
|
|
176
|
+
return createComponent(Popover.Positioner, { get children() {
|
|
177
|
+
return createComponent(Popover.Content, {
|
|
178
|
+
"data-scope": "tree-select",
|
|
179
|
+
"data-part": "content",
|
|
180
|
+
get "data-size"() {
|
|
181
|
+
return own.size ?? "md";
|
|
182
|
+
},
|
|
183
|
+
get children() {
|
|
184
|
+
return [createComponent(Show, {
|
|
185
|
+
get when() {
|
|
186
|
+
return own.filterable;
|
|
187
|
+
},
|
|
188
|
+
get children() {
|
|
189
|
+
var _el$3 = _tmpl$3();
|
|
190
|
+
insert(_el$3, createComponent(Input, {
|
|
191
|
+
size: "sm",
|
|
192
|
+
get value() {
|
|
193
|
+
return query();
|
|
194
|
+
},
|
|
195
|
+
onValueChange: setQuery,
|
|
196
|
+
placeholder: "Filter…",
|
|
197
|
+
"aria-label": "Filter options"
|
|
198
|
+
}));
|
|
199
|
+
return _el$3;
|
|
200
|
+
}
|
|
201
|
+
}), (() => {
|
|
202
|
+
var _el$4 = _tmpl$4();
|
|
203
|
+
insert(_el$4, createComponent(Show, {
|
|
204
|
+
get when() {
|
|
205
|
+
return (visibleCollection().rootNode.children ?? []).length > 0;
|
|
206
|
+
},
|
|
207
|
+
get fallback() {
|
|
208
|
+
return _tmpl$6();
|
|
209
|
+
},
|
|
210
|
+
get children() {
|
|
211
|
+
return createComponent(TreeView.Root, mergeProps({
|
|
212
|
+
get collection() {
|
|
213
|
+
return visibleCollection();
|
|
214
|
+
},
|
|
215
|
+
selectionMode: "single",
|
|
216
|
+
get selectedValue() {
|
|
217
|
+
return memo(() => {
|
|
218
|
+
return !!own.value;
|
|
219
|
+
})() ? [own.value] : [];
|
|
220
|
+
}
|
|
221
|
+
}, () => {
|
|
222
|
+
return filtering() ? { expandedValue: expandedWhileFiltering() } : { defaultExpandedValue: firstLevel() };
|
|
223
|
+
}, {
|
|
224
|
+
onSelectionChange: pick,
|
|
225
|
+
get children() {
|
|
226
|
+
return createComponent(TreeView.Tree, { get children() {
|
|
227
|
+
return createComponent(For, {
|
|
228
|
+
get each() {
|
|
229
|
+
return visibleCollection().rootNode.children;
|
|
230
|
+
},
|
|
231
|
+
children: (node, index) => createComponent(Row, {
|
|
232
|
+
node,
|
|
233
|
+
get indexPath() {
|
|
234
|
+
return [index()];
|
|
235
|
+
}
|
|
236
|
+
})
|
|
237
|
+
});
|
|
238
|
+
} });
|
|
239
|
+
}
|
|
240
|
+
}));
|
|
241
|
+
}
|
|
242
|
+
}));
|
|
243
|
+
return _el$4;
|
|
244
|
+
})()];
|
|
245
|
+
}
|
|
246
|
+
});
|
|
247
|
+
} });
|
|
248
|
+
} })];
|
|
249
|
+
}
|
|
250
|
+
}));
|
|
251
|
+
}
|
|
252
|
+
//#endregion
|
|
253
|
+
export { TreeSelect };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { TreeNode, TreeView as TreeView$1, TreeViewRootProps } from "@ark-ui/solid/tree-view";
|
|
2
|
+
//#region src/components/tree-view/index.d.ts
|
|
3
|
+
/** Ark's TreeView, dressed in the paper-and-ink system: quiet rows where
|
|
4
|
+
* selection is pure light on the paper, one hairline plumb line per depth,
|
|
5
|
+
* and branches that swing open on the spring. The API is Ark's own —
|
|
6
|
+
* Root, Label, Tree, NodeProvider, NodeContext, Branch, BranchControl,
|
|
7
|
+
* BranchTrigger, BranchIndicator, BranchText, BranchContent,
|
|
8
|
+
* BranchIndentGuide, Item, ItemText, ItemIndicator, NodeCheckbox,
|
|
9
|
+
* NodeRenameInput, plus createTreeCollection. */
|
|
10
|
+
type TreeViewOwnProps = {
|
|
11
|
+
/** One rung of the row register: the rows' breathing room follows it. */
|
|
12
|
+
size?: "sm" | "md" | "lg";
|
|
13
|
+
};
|
|
14
|
+
declare function TreeViewRoot<T extends TreeNode>(props: TreeViewRootProps<T> & TreeViewOwnProps): import("solid-js").JSX.Element;
|
|
15
|
+
export declare const TreeView: Omit<typeof TreeView$1, "Root"> & {
|
|
16
|
+
Root: typeof TreeViewRoot;
|
|
17
|
+
};
|
|
18
|
+
//#endregion
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { injectComponentStyle } from "@bysages/core";
|
|
2
|
+
import { createComponent, mergeProps } from "@solidjs/web";
|
|
3
|
+
import { splitProps } from "solid-js";
|
|
4
|
+
import { TreeView as TreeView$1 } from "@ark-ui/solid/tree-view";
|
|
5
|
+
//#region src/components/tree-view/index.tsx
|
|
6
|
+
const ArkRoot = TreeView$1.Root;
|
|
7
|
+
function TreeViewRoot(props) {
|
|
8
|
+
const [own, rest] = splitProps(props, ["size"]);
|
|
9
|
+
return createComponent(ArkRoot, mergeProps(rest, { get "data-size"() {
|
|
10
|
+
return own.size ?? "md";
|
|
11
|
+
} }));
|
|
12
|
+
}
|
|
13
|
+
const TreeView = {
|
|
14
|
+
...TreeView$1,
|
|
15
|
+
Root: TreeViewRoot
|
|
16
|
+
};
|
|
17
|
+
injectComponentStyle("tree-view");
|
|
18
|
+
//#endregion
|
|
19
|
+
export { TreeView };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { JSX } from "solid-js";
|
|
2
|
+
//#region src/components/typography/index.d.ts
|
|
3
|
+
export declare const Typography: ((props: JSX.HTMLAttributes<HTMLParagraphElement>) => JSX.Element) & {
|
|
4
|
+
Display: (props: JSX.HTMLAttributes<HTMLParagraphElement>) => JSX.Element;
|
|
5
|
+
Heading: (props: JSX.HTMLAttributes<HTMLParagraphElement>) => JSX.Element;
|
|
6
|
+
Lead: (props: JSX.HTMLAttributes<HTMLParagraphElement>) => JSX.Element;
|
|
7
|
+
Body: (props: JSX.HTMLAttributes<HTMLParagraphElement>) => JSX.Element;
|
|
8
|
+
Muted: (props: JSX.HTMLAttributes<HTMLParagraphElement>) => JSX.Element;
|
|
9
|
+
Label: (props: JSX.HTMLAttributes<HTMLParagraphElement>) => JSX.Element;
|
|
10
|
+
};
|
|
11
|
+
//#endregion
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { injectComponentStyle } from "@bysages/core";
|
|
2
|
+
import { createComponent, mergeProps } from "@solidjs/web";
|
|
3
|
+
//#region src/components/typography/index.tsx
|
|
4
|
+
/** The typographic voices, named so prose can ask for one: display and
|
|
5
|
+
* heading ride the song-serif, the rest ride the hei. Nothing here is
|
|
6
|
+
* decorative — hierarchy is size, weight, and space. */
|
|
7
|
+
function part(name, tag) {
|
|
8
|
+
function Component(props) {
|
|
9
|
+
return createComponent(tag, mergeProps(props, {
|
|
10
|
+
"data-scope": "typography",
|
|
11
|
+
get "data-part"() {
|
|
12
|
+
return name.toLowerCase();
|
|
13
|
+
}
|
|
14
|
+
}));
|
|
15
|
+
}
|
|
16
|
+
return Component;
|
|
17
|
+
}
|
|
18
|
+
const Display = part("Display", "p");
|
|
19
|
+
const Heading = part("Heading", "p");
|
|
20
|
+
const Lead = part("Lead", "p");
|
|
21
|
+
const Body = part("Body", "p");
|
|
22
|
+
const Muted = part("Muted", "p");
|
|
23
|
+
const Label = part("Label", "p");
|
|
24
|
+
const Typography = Object.assign(Display, {
|
|
25
|
+
Display,
|
|
26
|
+
Heading,
|
|
27
|
+
Lead,
|
|
28
|
+
Body,
|
|
29
|
+
Muted,
|
|
30
|
+
Label
|
|
31
|
+
});
|
|
32
|
+
injectComponentStyle("typography");
|
|
33
|
+
//#endregion
|
|
34
|
+
export { Typography };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { JSX } from "solid-js";
|
|
2
|
+
//#region src/components/user/index.d.ts
|
|
3
|
+
export interface UserProps extends JSX.HTMLAttributes<HTMLDivElement> {
|
|
4
|
+
/** The person's name — the loud line. */
|
|
5
|
+
name: string;
|
|
6
|
+
/** The quiet echo beneath the name: a role, a title, an address. */
|
|
7
|
+
description?: string;
|
|
8
|
+
/** Seal diameter: one rung of the Avatar's own ladder. */
|
|
9
|
+
size?: "sm" | "md" | "lg";
|
|
10
|
+
src?: string;
|
|
11
|
+
shape?: "circle" | "square";
|
|
12
|
+
children?: JSX.Element;
|
|
13
|
+
}
|
|
14
|
+
/** A person on one line: the seal before the words, the name and its
|
|
15
|
+
* quiet echo beneath. The mark is the Avatar itself — one component
|
|
16
|
+
* renders it here, so every size and shape the Avatar knows the user
|
|
17
|
+
* inherits; this row only lays the words out beside it. */
|
|
18
|
+
export declare function User(props: UserProps): JSX.Element;
|
|
19
|
+
//#endregion
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { injectComponentStyle } from "@bysages/core";
|
|
2
|
+
import { createComponent, insert, memo, spread, template } from "@solidjs/web";
|
|
3
|
+
import { splitProps } from "solid-js";
|
|
4
|
+
import { Avatar } from "@ark-ui/solid/avatar";
|
|
5
|
+
//#region src/components/user/index.tsx
|
|
6
|
+
var _tmpl$ = /* @__PURE__ */ template(`<div><div data-scope=user data-part=meta><span data-scope=user data-part=name></span><!><!>`);
|
|
7
|
+
var _tmpl$2 = /* @__PURE__ */ template(`<span data-scope=user data-part=description>`);
|
|
8
|
+
/** A person on one line: the seal before the words, the name and its
|
|
9
|
+
* quiet echo beneath. The mark is the Avatar itself — one component
|
|
10
|
+
* renders it here, so every size and shape the Avatar knows the user
|
|
11
|
+
* inherits; this row only lays the words out beside it. */
|
|
12
|
+
function User(props) {
|
|
13
|
+
injectComponentStyle("user");
|
|
14
|
+
const [own, rest] = splitProps(props, [
|
|
15
|
+
"name",
|
|
16
|
+
"description",
|
|
17
|
+
"size",
|
|
18
|
+
"src",
|
|
19
|
+
"shape",
|
|
20
|
+
"children"
|
|
21
|
+
]);
|
|
22
|
+
const initials = () => own.name.split(/\s+/).filter(Boolean).slice(0, 2).map((word) => word[0]?.toUpperCase() ?? "").join("");
|
|
23
|
+
var _el$ = _tmpl$();
|
|
24
|
+
var _el$2 = _el$.firstChild;
|
|
25
|
+
var _el$3 = _el$2.firstChild;
|
|
26
|
+
var _el$4 = _el$3.nextSibling;
|
|
27
|
+
var _el$5 = _el$4.nextSibling;
|
|
28
|
+
spread(_el$, [rest, {
|
|
29
|
+
"data-scope": "user",
|
|
30
|
+
"data-part": "root"
|
|
31
|
+
}], true);
|
|
32
|
+
insert(_el$, createComponent(Avatar.Root, {
|
|
33
|
+
get "data-size"() {
|
|
34
|
+
return own.size;
|
|
35
|
+
},
|
|
36
|
+
get "data-shape"() {
|
|
37
|
+
return own.shape ?? "circle";
|
|
38
|
+
},
|
|
39
|
+
get children() {
|
|
40
|
+
return createComponent(Avatar.Fallback, { get children() {
|
|
41
|
+
return initials();
|
|
42
|
+
} });
|
|
43
|
+
}
|
|
44
|
+
}), _el$2);
|
|
45
|
+
insert(_el$3, () => {
|
|
46
|
+
return own.name;
|
|
47
|
+
});
|
|
48
|
+
insert(_el$2, (() => {
|
|
49
|
+
var _c$ = memo(() => {
|
|
50
|
+
return !!own.description;
|
|
51
|
+
});
|
|
52
|
+
return () => {
|
|
53
|
+
return _c$() ? (() => {
|
|
54
|
+
var _el$6 = _tmpl$2();
|
|
55
|
+
insert(_el$6, () => {
|
|
56
|
+
return own.description;
|
|
57
|
+
});
|
|
58
|
+
return _el$6;
|
|
59
|
+
})() : null;
|
|
60
|
+
};
|
|
61
|
+
})(), _el$4);
|
|
62
|
+
insert(_el$2, () => {
|
|
63
|
+
return own.children;
|
|
64
|
+
}, _el$5);
|
|
65
|
+
return _el$;
|
|
66
|
+
}
|
|
67
|
+
//#endregion
|
|
68
|
+
export { User };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { JSX } from "solid-js";
|
|
2
|
+
//#region src/components/virtual-list/index.d.ts
|
|
3
|
+
export interface VirtualListProps extends JSX.HTMLAttributes<HTMLDivElement> {
|
|
4
|
+
items: unknown[];
|
|
5
|
+
/** The height every row occupies — fixed rows keep it simple. */
|
|
6
|
+
itemHeight?: number;
|
|
7
|
+
/** The viewport height the ledger scrolls within. */
|
|
8
|
+
height?: number | string;
|
|
9
|
+
/** Renders one record into its positioned row. */
|
|
10
|
+
renderItem?: (item: unknown, index: number) => JSX.Element;
|
|
11
|
+
}
|
|
12
|
+
/** A ledger that only mounts the rows on stage: the viewport keeps its
|
|
13
|
+
* scroll length by a spacer sized from the row height, the rows
|
|
14
|
+
* themselves are positioned against it — a ten-thousand-row list
|
|
15
|
+
* costs the DOM a window, not the ledger. */
|
|
16
|
+
export declare function VirtualList(props: VirtualListProps): JSX.Element;
|
|
17
|
+
//#endregion
|