@bysages/react 0.4.3 → 0.5.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/dist/ai-B3vbpXlK.mjs +309 -0
- package/dist/ai-prompt-input-k34KssHJ.mjs +401 -0
- package/dist/{ai-response-CjjjprMY.mjs → ai-response-DTxdL5rX.mjs} +9 -11
- package/dist/{chevron-BA7kV9m7.mjs → chevron-DnImlNip.mjs} +2 -3
- package/dist/components/accordion/index.d.mts +1 -2
- package/dist/components/accordion/index.mjs +3 -4
- package/dist/components/affix/index.d.mts +1 -2
- package/dist/components/affix/index.mjs +2 -3
- package/dist/components/ai/index.d.mts +107 -2
- package/dist/components/ai/index.mjs +7 -82
- package/dist/components/ai-action/index.d.mts +0 -2
- package/dist/components/ai-action/index.mjs +2 -3
- package/dist/components/ai-attachments/index.d.mts +0 -2
- package/dist/components/ai-attachments/index.mjs +4 -5
- package/dist/components/ai-message/index.d.mts +2 -14
- package/dist/components/ai-message/index.mjs +5 -4
- package/dist/components/ai-prompt-input/index.d.mts +14 -18
- package/dist/components/ai-prompt-input/index.mjs +1 -126
- package/dist/components/ai-reasoning/index.d.mts +0 -2
- package/dist/components/ai-reasoning/index.mjs +3 -4
- package/dist/components/ai-response/index.d.mts +1 -3
- package/dist/components/ai-response/index.mjs +1 -2
- package/dist/components/ai-source/index.d.mts +0 -2
- package/dist/components/ai-source/index.mjs +2 -3
- package/dist/components/ai-suggestion/index.d.mts +0 -2
- package/dist/components/ai-suggestion/index.mjs +2 -3
- package/dist/components/ai-tool/index.d.mts +2 -24
- package/dist/components/ai-tool/index.mjs +46 -14
- package/dist/components/alert/index.d.mts +1 -2
- package/dist/components/alert/index.mjs +2 -3
- package/dist/components/angle-slider/index.d.mts +1 -2
- package/dist/components/angle-slider/index.mjs +2 -3
- package/dist/components/aspect-ratio/index.d.mts +1 -2
- package/dist/components/aspect-ratio/index.mjs +2 -3
- package/dist/components/autocomplete/index.d.mts +1 -2
- package/dist/components/autocomplete/index.mjs +3 -4
- package/dist/components/avatar/index.d.mts +13 -4
- package/dist/components/avatar/index.mjs +20 -6
- package/dist/components/avatar-group/index.d.mts +1 -2
- package/dist/components/avatar-group/index.mjs +2 -3
- package/dist/components/back-top/index.d.mts +1 -2
- package/dist/components/back-top/index.mjs +3 -4
- package/dist/components/badge/index.d.mts +1 -2
- package/dist/components/badge/index.mjs +2 -3
- package/dist/components/banner/index.d.mts +17 -4
- package/dist/components/banner/index.mjs +21 -6
- package/dist/components/bento/index.d.mts +1 -3
- package/dist/components/bento/index.mjs +1 -2
- package/dist/components/block-ui/index.d.mts +1 -2
- package/dist/components/block-ui/index.mjs +2 -3
- package/dist/components/breadcrumb/index.d.mts +16 -3
- package/dist/components/breadcrumb/index.mjs +22 -5
- package/dist/components/browser/index.d.mts +1 -3
- package/dist/components/browser/index.mjs +1 -2
- package/dist/components/button/index.d.mts +1 -2
- package/dist/components/button/index.mjs +2 -3
- package/dist/components/button-group/index.d.mts +1 -2
- package/dist/components/button-group/index.mjs +1 -2
- package/dist/components/calendar/index.d.mts +1 -2
- package/dist/components/calendar/index.mjs +3 -4
- package/dist/components/card/index.d.mts +1 -3
- package/dist/components/card/index.mjs +1 -2
- package/dist/components/carousel/index.d.mts +1 -2
- package/dist/components/carousel/index.mjs +3 -4
- package/dist/components/cascade-select/index.d.mts +1 -2
- package/dist/components/cascade-select/index.mjs +6 -7
- package/dist/components/checkbox/index.d.mts +1 -2
- package/dist/components/checkbox/index.mjs +3 -4
- package/dist/components/checkbox-group/index.d.mts +1 -2
- package/dist/components/checkbox-group/index.mjs +3 -4
- package/dist/components/chip/index.d.mts +1 -2
- package/dist/components/chip/index.mjs +2 -3
- package/dist/components/client-only/index.d.mts +0 -2
- package/dist/components/client-only/index.mjs +2 -3
- package/dist/components/clipboard/index.d.mts +1 -2
- package/dist/components/clipboard/index.mjs +3 -4
- package/dist/components/collapsible/index.d.mts +1 -2
- package/dist/components/collapsible/index.mjs +3 -4
- package/dist/components/collection/index.mjs +1 -2
- package/dist/components/color-picker/index.d.mts +3 -2
- package/dist/components/color-picker/index.mjs +38 -25
- package/dist/components/combobox/index.d.mts +1 -2
- package/dist/components/combobox/index.mjs +3 -4
- package/dist/components/command/index.d.mts +1 -2
- package/dist/components/command/index.mjs +3 -4
- package/dist/components/comment/index.d.mts +1 -2
- package/dist/components/comment/index.mjs +2 -3
- package/dist/components/config-provider/index.d.mts +1 -2
- package/dist/components/config-provider/index.mjs +2 -3
- package/dist/components/container/index.d.mts +1 -2
- package/dist/components/container/index.mjs +2 -3
- package/dist/components/data-view/index.d.mts +1 -2
- package/dist/components/data-view/index.mjs +3 -4
- package/dist/components/date-input/index.d.mts +0 -2
- package/dist/components/date-input/index.mjs +2 -3
- package/dist/components/date-picker/index.d.mts +0 -2
- package/dist/components/date-picker/index.mjs +3 -4
- package/dist/components/deferred-content/index.d.mts +1 -2
- package/dist/components/deferred-content/index.mjs +2 -3
- package/dist/components/descriptions/index.d.mts +1 -2
- package/dist/components/descriptions/index.mjs +2 -3
- package/dist/components/dialog/index.d.mts +31 -4
- package/dist/components/dialog/index.mjs +41 -10
- package/dist/components/dock/index.d.mts +1 -3
- package/dist/components/dock/index.mjs +1 -2
- package/dist/components/download-trigger/index.d.mts +0 -2
- package/dist/components/download-trigger/index.mjs +2 -3
- package/dist/components/drawer/index.d.mts +1 -2
- package/dist/components/drawer/index.mjs +3 -4
- package/dist/components/dynamic-input/index.d.mts +1 -2
- package/dist/components/dynamic-input/index.mjs +5 -6
- package/dist/components/editable/index.d.mts +1 -2
- package/dist/components/editable/index.mjs +3 -4
- package/dist/components/ellipsis/index.d.mts +1 -2
- package/dist/components/ellipsis/index.mjs +2 -3
- package/dist/components/empty/index.d.mts +1 -3
- package/dist/components/empty/index.mjs +1 -2
- package/dist/components/field/index.d.mts +1 -2
- package/dist/components/field/index.mjs +2 -3
- package/dist/components/fieldset/index.d.mts +1 -2
- package/dist/components/fieldset/index.mjs +2 -3
- package/dist/components/file-upload/index.d.mts +1 -2
- package/dist/components/file-upload/index.mjs +4 -9
- package/dist/components/float-button/index.d.mts +23 -3
- package/dist/components/float-button/index.mjs +30 -5
- package/dist/components/floating-panel/index.d.mts +1 -2
- package/dist/components/floating-panel/index.mjs +8 -4
- package/dist/components/focus-trap/index.d.mts +0 -2
- package/dist/components/focus-trap/index.mjs +2 -3
- package/dist/components/form/index.d.mts +0 -2
- package/dist/components/form/index.mjs +2 -3
- package/dist/components/format/index.d.mts +1 -3
- package/dist/components/format/index.mjs +1 -2
- package/dist/components/frame/index.d.mts +1 -3
- package/dist/components/frame/index.mjs +3 -4
- package/dist/components/grid/index.d.mts +1 -2
- package/dist/components/grid/index.mjs +2 -3
- package/dist/components/highlight/index.d.mts +1 -3
- package/dist/components/highlight/index.mjs +2 -3
- package/dist/components/hover-card/index.d.mts +1 -2
- package/dist/components/hover-card/index.mjs +2 -3
- package/dist/components/icon/index.d.mts +1 -2
- package/dist/components/icon/index.mjs +2 -3
- package/dist/components/image/index.d.mts +1 -2
- package/dist/components/image/index.mjs +3 -4
- package/dist/components/image-cropper/index.d.mts +1 -2
- package/dist/components/image-cropper/index.mjs +2 -3
- package/dist/components/image-viewer/index.d.mts +1 -1
- package/dist/components/image-viewer/index.mjs +1 -2
- package/dist/components/input/index.d.mts +1 -3
- package/dist/components/input/index.mjs +1 -2
- package/dist/components/input-group/index.d.mts +1 -3
- package/dist/components/input-group/index.mjs +1 -2
- package/dist/components/json-tree-view/index.d.mts +1 -2
- package/dist/components/json-tree-view/index.mjs +3 -4
- package/dist/components/kbd/index.d.mts +1 -2
- package/dist/components/kbd/index.mjs +2 -3
- package/dist/components/layout/index.d.mts +1 -2
- package/dist/components/layout/index.mjs +19 -15
- package/dist/components/link/index.d.mts +1 -2
- package/dist/components/link/index.mjs +2 -3
- package/dist/components/list/index.d.mts +1 -2
- package/dist/components/list/index.mjs +1 -2
- package/dist/components/listbox/index.d.mts +0 -2
- package/dist/components/listbox/index.mjs +3 -4
- package/dist/components/marquee/index.d.mts +1 -2
- package/dist/components/marquee/index.mjs +2 -3
- package/dist/components/masonry/index.d.mts +1 -2
- package/dist/components/masonry/index.mjs +2 -3
- package/dist/components/media-player/index.d.mts +1 -1
- package/dist/components/media-player/index.mjs +1 -2
- package/dist/components/mentions/index.d.mts +2 -2
- package/dist/components/mentions/index.mjs +1 -2
- package/dist/components/menu/index.d.mts +1 -2
- package/dist/components/menu/index.mjs +3 -4
- package/dist/components/menubar/index.d.mts +1 -2
- package/dist/components/menubar/index.mjs +2 -3
- package/dist/components/meter/index.d.mts +1 -3
- package/dist/components/meter/index.mjs +1 -2
- package/dist/components/navigation-menu/index.d.mts +1 -2
- package/dist/components/navigation-menu/index.mjs +2 -3
- package/dist/components/number-input/index.d.mts +1 -2
- package/dist/components/number-input/index.mjs +3 -4
- package/dist/components/order-list/index.d.mts +1 -2
- package/dist/components/order-list/index.mjs +4 -5
- package/dist/components/page-header/index.d.mts +1 -3
- package/dist/components/page-header/index.mjs +1 -2
- package/dist/components/pagination/index.d.mts +3 -4
- package/dist/components/pagination/index.mjs +3 -4
- package/dist/components/password-input/index.d.mts +1 -2
- package/dist/components/password-input/index.mjs +3 -4
- package/dist/components/pin-input/index.d.mts +1 -2
- package/dist/components/pin-input/index.mjs +2 -3
- package/dist/components/popconfirm/index.d.mts +2 -3
- package/dist/components/popconfirm/index.mjs +2 -3
- package/dist/components/popover/index.d.mts +1 -1
- package/dist/components/popover/index.mjs +3 -4
- package/dist/components/presence/index.d.mts +0 -2
- package/dist/components/presence/index.mjs +2 -3
- package/dist/components/progress/index.d.mts +1 -2
- package/dist/components/progress/index.mjs +2 -3
- package/dist/components/progress-group/index.d.mts +1 -2
- package/dist/components/progress-group/index.mjs +2 -3
- package/dist/components/qr-code/index.d.mts +1 -2
- package/dist/components/qr-code/index.mjs +2 -3
- package/dist/components/radio-group/index.d.mts +1 -2
- package/dist/components/radio-group/index.mjs +2 -3
- package/dist/components/rating-group/index.d.mts +1 -2
- package/dist/components/rating-group/index.mjs +3 -4
- package/dist/components/result/index.d.mts +1 -2
- package/dist/components/result/index.mjs +2 -3
- package/dist/components/scroll-area/index.d.mts +8 -3
- package/dist/components/scroll-area/index.mjs +7 -6
- package/dist/components/segment-group/index.d.mts +1 -2
- package/dist/components/segment-group/index.mjs +2 -3
- package/dist/components/select/index.d.mts +1 -1
- package/dist/components/select/index.mjs +1 -2
- package/dist/components/separator/index.d.mts +1 -2
- package/dist/components/separator/index.mjs +2 -3
- package/dist/components/signature-pad/index.d.mts +1 -2
- package/dist/components/signature-pad/index.mjs +3 -4
- package/dist/components/skeleton/index.d.mts +1 -2
- package/dist/components/skeleton/index.mjs +2 -3
- package/dist/components/slider/index.d.mts +1 -2
- package/dist/components/slider/index.mjs +2 -3
- package/dist/components/spinner/index.d.mts +1 -2
- package/dist/components/spinner/index.mjs +3 -4
- package/dist/components/split-button/index.d.mts +1 -2
- package/dist/components/split-button/index.mjs +4 -5
- package/dist/components/splitter/index.d.mts +1 -2
- package/dist/components/splitter/index.mjs +2 -3
- package/dist/components/spotlight/index.d.mts +1 -2
- package/dist/components/spotlight/index.mjs +2 -3
- package/dist/components/stack/index.d.mts +1 -2
- package/dist/components/stack/index.mjs +2 -3
- package/dist/components/stat/index.d.mts +1 -3
- package/dist/components/stat/index.mjs +1 -2
- package/dist/components/steps/index.d.mts +0 -2
- package/dist/components/steps/index.mjs +2 -3
- package/dist/components/swap/index.d.mts +1 -2
- package/dist/components/swap/index.mjs +3 -4
- package/dist/components/switch/index.d.mts +1 -2
- package/dist/components/switch/index.mjs +2 -3
- package/dist/components/table/index.d.mts +0 -2
- package/dist/components/table/index.mjs +5 -6
- package/dist/components/tabs/index.d.mts +9 -3
- package/dist/components/tabs/index.mjs +36 -8
- package/dist/components/tag/index.d.mts +1 -2
- package/dist/components/tag/index.mjs +3 -4
- package/dist/components/tags-input/index.d.mts +1 -2
- package/dist/components/tags-input/index.mjs +3 -4
- package/dist/components/terminal/index.d.mts +4 -3
- package/dist/components/terminal/index.mjs +8 -7
- package/dist/components/textarea/index.d.mts +1 -2
- package/dist/components/textarea/index.mjs +2 -3
- package/dist/components/timeline/index.d.mts +1 -2
- package/dist/components/timeline/index.mjs +1 -2
- package/dist/components/timer/index.d.mts +1 -2
- package/dist/components/timer/index.mjs +2 -3
- package/dist/components/toast/index.d.mts +0 -2
- package/dist/components/toast/index.mjs +18 -6
- package/dist/components/toc/index.d.mts +1 -2
- package/dist/components/toc/index.mjs +2 -3
- package/dist/components/toggle/index.d.mts +1 -2
- package/dist/components/toggle/index.mjs +2 -3
- package/dist/components/toggle-group/index.d.mts +1 -2
- package/dist/components/toggle-group/index.mjs +3 -4
- package/dist/components/toolbar/index.d.mts +1 -2
- package/dist/components/toolbar/index.mjs +2 -3
- package/dist/components/tooltip/index.d.mts +1 -2
- package/dist/components/tooltip/index.mjs +2 -3
- package/dist/components/tour/index.d.mts +0 -2
- package/dist/components/tour/index.mjs +2 -3
- package/dist/components/transfer/index.d.mts +1 -2
- package/dist/components/transfer/index.mjs +5 -6
- package/dist/components/tree-select/index.d.mts +2 -3
- package/dist/components/tree-select/index.mjs +5 -6
- package/dist/components/tree-view/index.d.mts +15 -5
- package/dist/components/tree-view/index.mjs +30 -12
- package/dist/components/typography/index.d.mts +1 -3
- package/dist/components/typography/index.mjs +1 -2
- package/dist/components/user/index.d.mts +1 -2
- package/dist/components/user/index.mjs +2 -3
- package/dist/components/virtual-list/index.d.mts +1 -2
- package/dist/components/virtual-list/index.mjs +2 -3
- package/dist/components/watermark/index.d.mts +1 -2
- package/dist/components/watermark/index.mjs +2 -3
- package/dist/{family-DE_GQeeM.mjs → family-Co1YsN4N.mjs} +1 -2
- package/dist/generative/index.d.mts +0 -2
- package/dist/generative/index.mjs +146 -106
- package/dist/{icon-Cri0-7-x.mjs → icon-C9udWCyz.mjs} +1 -2
- package/dist/{id-C37UYLwJ.mjs → id-Ctic_3o8.mjs} +1 -2
- package/dist/{image-viewer-D4FuYrk6.mjs → image-viewer-BYiXpi1X.mjs} +21 -26
- package/dist/{index-Eu-Bttta.d.mts → index-BVdkcSSY.d.mts} +0 -2
- package/dist/index-CjO4Ggf0.d.mts +115 -0
- package/dist/{index-Dj8S4eyJ.d.mts → index-D4C52fI7.d.mts} +0 -4
- package/dist/{index-BcRdWGY-.d.mts → index-DIZEFqJM.d.mts} +0 -8
- package/dist/{index-Bbg4heDO.d.mts → index-DcpvCyt6.d.mts} +63 -18
- package/dist/{index-D_iKc2Uw.d.mts → index-DczfbPCg.d.mts} +0 -4
- package/dist/index-lCsvE2Vl.d.mts +37 -0
- package/dist/index.d.mts +14 -14
- package/dist/index.mjs +10 -10
- package/dist/{input-BDpQ0e6G.mjs → input-YRjehBhU.mjs} +3 -5
- package/dist/{media-player-C0WcjVI-.mjs → media-player-CO2Cczl-.mjs} +7 -12
- package/dist/mentions-De7ChJbl.mjs +335 -0
- package/dist/{messages-1jJWtaYU.mjs → messages-B6n0lVyt.mjs} +1 -2
- package/dist/{select-D_soVdWK.mjs → select-DQ5669_K.mjs} +4 -6
- package/package.json +17 -17
- package/dist/index-B4twHAQC.d.mts +0 -10456
- package/dist/mentions-BwnyvdXz.mjs +0 -213
|
@@ -1,15 +1,18 @@
|
|
|
1
|
-
import { r as iconNode } from "../icon-
|
|
1
|
+
import { r as iconNode } from "../icon-C9udWCyz.mjs";
|
|
2
2
|
import { Button } from "../components/button/index.mjs";
|
|
3
3
|
import { Alert } from "../components/alert/index.mjs";
|
|
4
4
|
import { Avatar } from "../components/avatar/index.mjs";
|
|
5
5
|
import { Badge } from "../components/badge/index.mjs";
|
|
6
|
+
import { Banner } from "../components/banner/index.mjs";
|
|
6
7
|
import { Spinner } from "../components/spinner/index.mjs";
|
|
8
|
+
import { Breadcrumb } from "../components/breadcrumb/index.mjs";
|
|
7
9
|
import { Card } from "../components/card/index.mjs";
|
|
8
|
-
import { t as Input } from "../input-
|
|
10
|
+
import { t as Input } from "../input-YRjehBhU.mjs";
|
|
9
11
|
import { Checkbox } from "../components/checkbox/index.mjs";
|
|
12
|
+
import { FloatButton } from "../components/float-button/index.mjs";
|
|
10
13
|
import { Progress } from "../components/progress/index.mjs";
|
|
11
14
|
import { RadioGroup } from "../components/radio-group/index.mjs";
|
|
12
|
-
import { t as Select } from "../select-
|
|
15
|
+
import { t as Select } from "../select-DQ5669_K.mjs";
|
|
13
16
|
import { Separator } from "../components/separator/index.mjs";
|
|
14
17
|
import { Slider } from "../components/slider/index.mjs";
|
|
15
18
|
import { Stack } from "../components/stack/index.mjs";
|
|
@@ -17,14 +20,13 @@ import { Stat } from "../components/stat/index.mjs";
|
|
|
17
20
|
import { Switch } from "../components/switch/index.mjs";
|
|
18
21
|
import { Textarea } from "../components/textarea/index.mjs";
|
|
19
22
|
import { Typography } from "../components/typography/index.mjs";
|
|
20
|
-
import { jsx
|
|
23
|
+
import { jsx } from "react/jsx-runtime";
|
|
21
24
|
import { createElement } from "react";
|
|
22
|
-
import { createListCollection } from "@ark-ui/react/collection";
|
|
23
25
|
import { z } from "zod";
|
|
24
26
|
import { defineRegistry, useBoundProp } from "@json-render/react";
|
|
25
27
|
import { defineCatalog } from "@json-render/core";
|
|
26
28
|
import { schema } from "@json-render/react/schema";
|
|
27
|
-
|
|
29
|
+
// \0rolldown/runtime.js
|
|
28
30
|
var __defProp = Object.defineProperty;
|
|
29
31
|
var __exportAll = (all, no_symbols) => {
|
|
30
32
|
let target = {};
|
|
@@ -35,8 +37,7 @@ var __exportAll = (all, no_symbols) => {
|
|
|
35
37
|
if (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" });
|
|
36
38
|
return target;
|
|
37
39
|
};
|
|
38
|
-
|
|
39
|
-
//#region src/generative/faces.generated.ts
|
|
40
|
+
// src/generative/faces.generated.ts
|
|
40
41
|
/** Name the faces a family contributes; the identity keeps inference
|
|
41
42
|
* honest at the call site. */
|
|
42
43
|
function defineFace(faces) {
|
|
@@ -52,9 +53,6 @@ const headingClass = {
|
|
|
52
53
|
"5": "text-lg",
|
|
53
54
|
"6": "text-base"
|
|
54
55
|
};
|
|
55
|
-
function initials(name) {
|
|
56
|
-
return name.split(/\s+/).filter(Boolean).slice(0, 2).map((part) => part[0]?.toUpperCase() ?? "").join("");
|
|
57
|
-
}
|
|
58
56
|
function slug(value) {
|
|
59
57
|
return value.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/(^-|-$)/g, "") || value;
|
|
60
58
|
}
|
|
@@ -88,6 +86,25 @@ const faces$1 = defineFace({
|
|
|
88
86
|
}),
|
|
89
87
|
description: "A person's seal: image when given, initials as the fallback."
|
|
90
88
|
},
|
|
89
|
+
Banner: {
|
|
90
|
+
props: z.object({
|
|
91
|
+
status: z.enum([
|
|
92
|
+
"ink",
|
|
93
|
+
"info",
|
|
94
|
+
"success",
|
|
95
|
+
"warning",
|
|
96
|
+
"danger"
|
|
97
|
+
]).optional(),
|
|
98
|
+
title: z.string().optional(),
|
|
99
|
+
message: z.string().optional(),
|
|
100
|
+
dismissible: z.boolean().optional()
|
|
101
|
+
}),
|
|
102
|
+
description: "A full-width notice that speaks once across the page."
|
|
103
|
+
},
|
|
104
|
+
Breadcrumb: {
|
|
105
|
+
props: z.object({ items: z.array(z.string()).optional() }),
|
|
106
|
+
description: "A trail of waymarks from home to the current page."
|
|
107
|
+
},
|
|
91
108
|
Badge: {
|
|
92
109
|
props: z.object({
|
|
93
110
|
text: z.string(),
|
|
@@ -152,6 +169,29 @@ const faces$1 = defineFace({
|
|
|
152
169
|
}),
|
|
153
170
|
description: "One independent box with its label."
|
|
154
171
|
},
|
|
172
|
+
FloatButton: {
|
|
173
|
+
props: z.object({
|
|
174
|
+
label: z.string().optional(),
|
|
175
|
+
actions: z.array(z.object({
|
|
176
|
+
label: z.string(),
|
|
177
|
+
icon: z.string().optional(),
|
|
178
|
+
disabled: z.boolean().optional()
|
|
179
|
+
})).optional(),
|
|
180
|
+
placement: z.enum([
|
|
181
|
+
"bottom-end",
|
|
182
|
+
"bottom-start",
|
|
183
|
+
"top-end",
|
|
184
|
+
"top-start"
|
|
185
|
+
]).optional(),
|
|
186
|
+
size: z.enum([
|
|
187
|
+
"sm",
|
|
188
|
+
"md",
|
|
189
|
+
"lg"
|
|
190
|
+
]).optional(),
|
|
191
|
+
defaultOpen: z.boolean().optional()
|
|
192
|
+
}),
|
|
193
|
+
description: "A floating action and its fanned alternatives; actions use curated icon names."
|
|
194
|
+
},
|
|
155
195
|
Heading: {
|
|
156
196
|
props: z.object({
|
|
157
197
|
text: z.string(),
|
|
@@ -310,8 +350,7 @@ const faces$1 = defineFace({
|
|
|
310
350
|
description: "A multi-line field for prose-length answers."
|
|
311
351
|
}
|
|
312
352
|
});
|
|
313
|
-
|
|
314
|
-
//#region src/generative/shared.ts
|
|
353
|
+
// src/generative/shared.ts
|
|
315
354
|
/** Name the entries a family contributes; the identity keeps inference
|
|
316
355
|
* honest at the call site. */
|
|
317
356
|
function defineEntry(entries) {
|
|
@@ -328,55 +367,66 @@ const textVoices = {
|
|
|
328
367
|
function useBound(value, path) {
|
|
329
368
|
return useBoundProp(value, path);
|
|
330
369
|
}
|
|
331
|
-
const collectionCache = /* @__PURE__ */ new Map();
|
|
332
|
-
function collectionFor(options) {
|
|
333
|
-
const key = JSON.stringify(options);
|
|
334
|
-
let collection = collectionCache.get(key);
|
|
335
|
-
if (!collection) {
|
|
336
|
-
collection = createListCollection({ items: options });
|
|
337
|
-
collectionCache.set(key, collection);
|
|
338
|
-
}
|
|
339
|
-
return collection;
|
|
340
|
-
}
|
|
341
370
|
/** A labelled field: the label whispers above, the control answers. */
|
|
342
371
|
function labelled(label, control) {
|
|
343
372
|
return label ? createElement(Stack, { gap: "xs" }, createElement(Typography.Label, null, label), control) : control;
|
|
344
373
|
}
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
var generative_exports$17 = /* @__PURE__ */ __exportAll({ default: () => generative_default$17 });
|
|
374
|
+
// src/components/alert/generative.ts
|
|
375
|
+
var generative_exports$20 = /* @__PURE__ */ __exportAll({ default: () => generative_default$20 });
|
|
348
376
|
/** A bordered notice; status picks the pigment. */
|
|
349
|
-
var generative_default$
|
|
377
|
+
var generative_default$20 = defineEntry({ Alert: {
|
|
350
378
|
...faces$1.Alert,
|
|
351
379
|
component: ({ props }) => createElement(Alert.Root, { status: props.status ?? "ink" }, createElement(Alert.Icon), createElement(Alert.Body, null, createElement(Alert.Title, null, props.title), props.message != null ? createElement(Alert.Description, null, props.message) : null))
|
|
352
380
|
} });
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
var generative_exports$16 = /* @__PURE__ */ __exportAll({ default: () => generative_default$16 });
|
|
381
|
+
// src/components/avatar/generative.ts
|
|
382
|
+
var generative_exports$19 = /* @__PURE__ */ __exportAll({ default: () => generative_default$19 });
|
|
356
383
|
/** A person's seal: image when given, initials as the fallback. */
|
|
357
|
-
var generative_default$
|
|
384
|
+
var generative_default$19 = defineEntry({ Avatar: {
|
|
358
385
|
...faces$1.Avatar,
|
|
359
|
-
component: ({ props }) => createElement(Avatar
|
|
360
|
-
src: props.src,
|
|
361
|
-
alt: props.name
|
|
362
|
-
}) : null, createElement(Avatar.Fallback, null, initials(props.name))])
|
|
386
|
+
component: ({ props }) => createElement(Avatar, { ...props })
|
|
363
387
|
} });
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
var generative_exports$15 = /* @__PURE__ */ __exportAll({ default: () => generative_default$15 });
|
|
388
|
+
// src/components/badge/generative.ts
|
|
389
|
+
var generative_exports$18 = /* @__PURE__ */ __exportAll({ default: () => generative_default$18 });
|
|
367
390
|
/** A small status seal beside content; reads at a glance. */
|
|
368
|
-
var generative_default$
|
|
391
|
+
var generative_default$18 = defineEntry({ Badge: {
|
|
369
392
|
...faces$1.Badge,
|
|
370
393
|
component: ({ props }) => createElement(Badge, {
|
|
371
394
|
tone: props.tone,
|
|
372
395
|
variant: props.variant
|
|
373
396
|
}, props.text)
|
|
374
397
|
} });
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
398
|
+
// src/components/banner/generative.ts
|
|
399
|
+
var generative_exports$17 = /* @__PURE__ */ __exportAll({ default: () => generative_default$17 });
|
|
400
|
+
/** A full-width notice that speaks once across the page. */
|
|
401
|
+
var generative_default$17 = defineEntry({ Banner: {
|
|
402
|
+
...faces$1.Banner,
|
|
403
|
+
component: ({ props }) => createElement(Banner, {
|
|
404
|
+
...props,
|
|
405
|
+
dismissible: true
|
|
406
|
+
})
|
|
407
|
+
} });
|
|
408
|
+
// src/components/breadcrumb/generative.ts
|
|
409
|
+
var generative_exports$16 = /* @__PURE__ */ __exportAll({ default: () => generative_default$16 });
|
|
410
|
+
/** A trail of waymarks from home to the current page. */
|
|
411
|
+
var generative_default$16 = defineEntry({ Breadcrumb: {
|
|
412
|
+
...faces$1.Breadcrumb,
|
|
413
|
+
component: ({ props }) => {
|
|
414
|
+
const labels = props.items ?? [
|
|
415
|
+
"Home",
|
|
416
|
+
"Guides",
|
|
417
|
+
"Ink"
|
|
418
|
+
];
|
|
419
|
+
const items = labels.map((label, index) => index === labels.length - 1 ? { label } : {
|
|
420
|
+
label,
|
|
421
|
+
href: `#${slug(label)}`
|
|
422
|
+
});
|
|
423
|
+
return createElement(Breadcrumb, { items });
|
|
424
|
+
}
|
|
425
|
+
} });
|
|
426
|
+
// src/components/button/generative.ts
|
|
427
|
+
var generative_exports$15 = /* @__PURE__ */ __exportAll({ default: () => generative_default$15 });
|
|
378
428
|
/** The primary action register: solid ink for the one main action, outline, ghost, or subtle for the rest. */
|
|
379
|
-
var generative_default$
|
|
429
|
+
var generative_default$15 = defineEntry({ Button: {
|
|
380
430
|
...faces$1.Button,
|
|
381
431
|
component: ({ props, emit }) => createElement(Button, {
|
|
382
432
|
variant: props.variant ?? "solid",
|
|
@@ -386,11 +436,10 @@ var generative_default$14 = defineEntry({ Button: {
|
|
|
386
436
|
onClick: () => emit("press")
|
|
387
437
|
}, props.label)
|
|
388
438
|
} });
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
var generative_exports$13 = /* @__PURE__ */ __exportAll({ default: () => generative_default$13 });
|
|
439
|
+
// src/components/card/generative.ts
|
|
440
|
+
var generative_exports$14 = /* @__PURE__ */ __exportAll({ default: () => generative_default$14 });
|
|
392
441
|
/** Grouping vessel. Give title and description instead of hand-building a header; children render in the body; footer holds actions. */
|
|
393
|
-
var generative_default$
|
|
442
|
+
var generative_default$14 = defineEntry({ Card: {
|
|
394
443
|
...faces$1.Card,
|
|
395
444
|
component: ({ props, children, slots }) => {
|
|
396
445
|
const header = slots?.header ?? null;
|
|
@@ -398,11 +447,10 @@ var generative_default$13 = defineEntry({ Card: {
|
|
|
398
447
|
return createElement(Card.Root, null, header ? createElement(Card.Header, null, header) : props.title != null || props.description != null ? createElement(Card.Header, null, props.title != null ? createElement(Card.Title, null, props.title) : null, props.description != null ? createElement(Card.Description, null, props.description) : null) : null, createElement(Card.Content, null, children), footer ? createElement(Card.Footer, null, footer) : null);
|
|
399
448
|
}
|
|
400
449
|
} });
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
var generative_exports$12 = /* @__PURE__ */ __exportAll({ default: () => generative_default$12 });
|
|
450
|
+
// src/components/checkbox/generative.ts
|
|
451
|
+
var generative_exports$13 = /* @__PURE__ */ __exportAll({ default: () => generative_default$13 });
|
|
404
452
|
/** One independent box with its label. */
|
|
405
|
-
var generative_default$
|
|
453
|
+
var generative_default$13 = defineEntry({ Checkbox: {
|
|
406
454
|
...faces$1.Checkbox,
|
|
407
455
|
component: ({ props }) => {
|
|
408
456
|
const mark = iconNode("check");
|
|
@@ -416,8 +464,24 @@ var generative_default$12 = defineEntry({ Checkbox: {
|
|
|
416
464
|
]);
|
|
417
465
|
}
|
|
418
466
|
} });
|
|
419
|
-
|
|
420
|
-
|
|
467
|
+
// src/components/float-button/generative.ts
|
|
468
|
+
var generative_exports$12 = /* @__PURE__ */ __exportAll({ default: () => generative_default$12 });
|
|
469
|
+
/** A floating action cluster; named actions fan out from one corner. */
|
|
470
|
+
var generative_default$12 = defineEntry({ FloatButton: {
|
|
471
|
+
...faces$1.FloatButton,
|
|
472
|
+
component: ({ props }) => {
|
|
473
|
+
const actions = Array.isArray(props.actions) ? props.actions : [{ label: "Edit" }];
|
|
474
|
+
return createElement(FloatButton, {
|
|
475
|
+
...props,
|
|
476
|
+
actions: actions.map((action) => ({
|
|
477
|
+
...action,
|
|
478
|
+
icon: action.icon ?? "pencil"
|
|
479
|
+
})),
|
|
480
|
+
defaultOpen: true
|
|
481
|
+
});
|
|
482
|
+
}
|
|
483
|
+
} });
|
|
484
|
+
// src/components/input/generative.ts
|
|
421
485
|
var generative_exports$11 = /* @__PURE__ */ __exportAll({ default: () => generative_default$11 });
|
|
422
486
|
/** A single-line field; rely on border, surface and the focus halo. */
|
|
423
487
|
var generative_default$11 = defineEntry({ Input: {
|
|
@@ -433,8 +497,7 @@ var generative_default$11 = defineEntry({ Input: {
|
|
|
433
497
|
}));
|
|
434
498
|
}
|
|
435
499
|
} });
|
|
436
|
-
|
|
437
|
-
//#region src/components/progress/generative.ts
|
|
500
|
+
// src/components/progress/generative.ts
|
|
438
501
|
var generative_exports$10 = /* @__PURE__ */ __exportAll({ default: () => generative_default$10 });
|
|
439
502
|
/** A working track that fills toward done. */
|
|
440
503
|
var generative_default$10 = defineEntry({ Progress: {
|
|
@@ -444,8 +507,7 @@ var generative_default$10 = defineEntry({ Progress: {
|
|
|
444
507
|
max: props.max
|
|
445
508
|
}, props.label != null ? createElement(Progress.Label, null, props.label) : null, createElement(Progress.Track, null, createElement(Progress.Range)))
|
|
446
509
|
} });
|
|
447
|
-
|
|
448
|
-
//#region src/components/radio-group/generative.ts
|
|
510
|
+
// src/components/radio-group/generative.ts
|
|
449
511
|
var generative_exports$9 = /* @__PURE__ */ __exportAll({ default: () => generative_default$9 });
|
|
450
512
|
/** Several boxes where exactly one may hold. */
|
|
451
513
|
var generative_default$9 = defineEntry({ RadioGroup: {
|
|
@@ -462,41 +524,25 @@ var generative_default$9 = defineEntry({ RadioGroup: {
|
|
|
462
524
|
}, createElement(RadioGroup.ItemControl), createElement(RadioGroup.ItemText, null, value), createElement(RadioGroup.ItemHiddenInput))))));
|
|
463
525
|
}
|
|
464
526
|
} });
|
|
465
|
-
|
|
466
|
-
//#region src/components/select/generative.tsx
|
|
527
|
+
// src/components/select/generative.tsx
|
|
467
528
|
var generative_exports$8 = /* @__PURE__ */ __exportAll({ default: () => generative_default$8 });
|
|
468
529
|
/** A choice field that opens a ruled list; options carry label and value. */
|
|
469
530
|
var generative_default$8 = defineEntry({ Select: {
|
|
470
531
|
...faces$1.Select,
|
|
471
532
|
component: ({ props, bindings }) => {
|
|
472
533
|
const [value, setValue] = useBound(props.value, bindings?.value);
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
value: selectedValue,
|
|
478
|
-
disabled: props.disabled,
|
|
534
|
+
return /* @__PURE__ */ jsx(Select, {
|
|
535
|
+
label: props.label,
|
|
536
|
+
placeholder: props.placeholder,
|
|
537
|
+
options: props.options,
|
|
479
538
|
multiple: props.multiple,
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
height: 14
|
|
485
|
-
}) })] }),
|
|
486
|
-
/* @__PURE__ */ jsx(Select.Positioner, { children: /* @__PURE__ */ jsx(Select.Content, { children: /* @__PURE__ */ jsx(Select.ItemGroup, { children: props.options.map((option) => /* @__PURE__ */ jsxs(Select.Item, {
|
|
487
|
-
item: option,
|
|
488
|
-
children: [/* @__PURE__ */ jsx(Select.ItemText, { children: option.label }), /* @__PURE__ */ jsx(Select.ItemIndicator, { children: iconNode("check", {
|
|
489
|
-
width: 14,
|
|
490
|
-
height: 14
|
|
491
|
-
}) })]
|
|
492
|
-
}, option.value)) }) }) }),
|
|
493
|
-
/* @__PURE__ */ jsx(Select.HiddenSelect, {})
|
|
494
|
-
]
|
|
495
|
-
}));
|
|
539
|
+
disabled: props.disabled,
|
|
540
|
+
value: props.multiple ? Array.isArray(value) ? value : value ? [value] : void 0 : Array.isArray(value) ? value.at(0) ?? "" : value,
|
|
541
|
+
onValueChange: setValue
|
|
542
|
+
});
|
|
496
543
|
}
|
|
497
544
|
} });
|
|
498
|
-
|
|
499
|
-
//#region src/components/separator/generative.ts
|
|
545
|
+
// src/components/separator/generative.ts
|
|
500
546
|
var generative_exports$7 = /* @__PURE__ */ __exportAll({ default: () => generative_default$7 });
|
|
501
547
|
/** Hairline divider between sections. */
|
|
502
548
|
var generative_default$7 = defineEntry({ Separator: {
|
|
@@ -506,8 +552,7 @@ var generative_default$7 = defineEntry({ Separator: {
|
|
|
506
552
|
decorative: true
|
|
507
553
|
})
|
|
508
554
|
} });
|
|
509
|
-
|
|
510
|
-
//#region src/components/slider/generative.ts
|
|
555
|
+
// src/components/slider/generative.ts
|
|
511
556
|
var generative_exports$6 = /* @__PURE__ */ __exportAll({ default: () => generative_default$6 });
|
|
512
557
|
/** A ruled track the hand slides between bounds. */
|
|
513
558
|
var generative_default$6 = defineEntry({ Slider: {
|
|
@@ -522,8 +567,7 @@ var generative_default$6 = defineEntry({ Slider: {
|
|
|
522
567
|
key: 0
|
|
523
568
|
})])]))
|
|
524
569
|
} });
|
|
525
|
-
|
|
526
|
-
//#region src/components/spinner/generative.ts
|
|
570
|
+
// src/components/spinner/generative.ts
|
|
527
571
|
var generative_exports$5 = /* @__PURE__ */ __exportAll({ default: () => generative_default$5 });
|
|
528
572
|
/** A quiet wheel for work still settling. */
|
|
529
573
|
var generative_default$5 = defineEntry({ Spinner: {
|
|
@@ -533,8 +577,7 @@ var generative_default$5 = defineEntry({ Spinner: {
|
|
|
533
577
|
"aria-label": props.label
|
|
534
578
|
})
|
|
535
579
|
} });
|
|
536
|
-
|
|
537
|
-
//#region src/components/stack/generative.ts
|
|
580
|
+
// src/components/stack/generative.ts
|
|
538
581
|
var generative_exports$4 = /* @__PURE__ */ __exportAll({ default: () => generative_default$4 });
|
|
539
582
|
/** Flex container for layout. direction column stacks vertically, row lays side by side. gap is a named spacing step. */
|
|
540
583
|
var generative_default$4 = defineEntry({ Stack: {
|
|
@@ -547,8 +590,7 @@ var generative_default$4 = defineEntry({ Stack: {
|
|
|
547
590
|
wrap: props.wrap
|
|
548
591
|
}, children)
|
|
549
592
|
} });
|
|
550
|
-
|
|
551
|
-
//#region src/components/stat/generative.ts
|
|
593
|
+
// src/components/stat/generative.ts
|
|
552
594
|
var generative_exports$3 = /* @__PURE__ */ __exportAll({ default: () => generative_default$3 });
|
|
553
595
|
/** One loud figure with its quiet label and an optional delta. */
|
|
554
596
|
var generative_default$3 = defineEntry({ Stat: {
|
|
@@ -559,8 +601,7 @@ var generative_default$3 = defineEntry({ Stat: {
|
|
|
559
601
|
props.change != null ? createElement(Stat.Delta, { direction: props.direction ?? "flat" }, props.change) : null
|
|
560
602
|
])
|
|
561
603
|
} });
|
|
562
|
-
|
|
563
|
-
//#region src/components/switch/generative.ts
|
|
604
|
+
// src/components/switch/generative.ts
|
|
564
605
|
var generative_exports$2 = /* @__PURE__ */ __exportAll({ default: () => generative_default$2 });
|
|
565
606
|
/** An instant on/off; label names what it switches. */
|
|
566
607
|
var generative_default$2 = defineEntry({ Switch: {
|
|
@@ -578,8 +619,7 @@ var generative_default$2 = defineEntry({ Switch: {
|
|
|
578
619
|
]);
|
|
579
620
|
}
|
|
580
621
|
} });
|
|
581
|
-
|
|
582
|
-
//#region src/components/textarea/generative.ts
|
|
622
|
+
// src/components/textarea/generative.ts
|
|
583
623
|
var generative_exports$1 = /* @__PURE__ */ __exportAll({ default: () => generative_default$1 });
|
|
584
624
|
/** A multi-line field for prose-length answers. */
|
|
585
625
|
var generative_default$1 = defineEntry({ Textarea: {
|
|
@@ -595,8 +635,7 @@ var generative_default$1 = defineEntry({ Textarea: {
|
|
|
595
635
|
}));
|
|
596
636
|
}
|
|
597
637
|
} });
|
|
598
|
-
|
|
599
|
-
//#region src/components/typography/generative.ts
|
|
638
|
+
// src/components/typography/generative.ts
|
|
600
639
|
var generative_exports = /* @__PURE__ */ __exportAll({ default: () => generative_default });
|
|
601
640
|
/** Section heading. One per view at level 1; do not skip levels. */
|
|
602
641
|
var generative_default = defineEntry({
|
|
@@ -612,19 +651,21 @@ var generative_default = defineEntry({
|
|
|
612
651
|
}
|
|
613
652
|
}
|
|
614
653
|
});
|
|
615
|
-
|
|
616
|
-
//#region src/generative/index.ts
|
|
654
|
+
// src/generative/index.ts
|
|
617
655
|
/** Every family writes its own generative face beside the component —
|
|
618
656
|
* `components/<family>/generative.ts` — and this module is where they
|
|
619
657
|
* meet: one glob picks the faces up, so a family that lands in the
|
|
620
658
|
* package is in the vocabulary without anyone editing this file. */
|
|
621
659
|
const modules = /* #__PURE__ */ Object.assign({
|
|
622
|
-
"../components/alert/generative.ts": generative_exports$
|
|
623
|
-
"../components/avatar/generative.ts": generative_exports$
|
|
624
|
-
"../components/badge/generative.ts": generative_exports$
|
|
625
|
-
"../components/
|
|
626
|
-
"../components/
|
|
627
|
-
"../components/
|
|
660
|
+
"../components/alert/generative.ts": generative_exports$20,
|
|
661
|
+
"../components/avatar/generative.ts": generative_exports$19,
|
|
662
|
+
"../components/badge/generative.ts": generative_exports$18,
|
|
663
|
+
"../components/banner/generative.ts": generative_exports$17,
|
|
664
|
+
"../components/breadcrumb/generative.ts": generative_exports$16,
|
|
665
|
+
"../components/button/generative.ts": generative_exports$15,
|
|
666
|
+
"../components/card/generative.ts": generative_exports$14,
|
|
667
|
+
"../components/checkbox/generative.ts": generative_exports$13,
|
|
668
|
+
"../components/float-button/generative.ts": generative_exports$12,
|
|
628
669
|
"../components/input/generative.ts": generative_exports$11,
|
|
629
670
|
"../components/progress/generative.ts": generative_exports$10,
|
|
630
671
|
"../components/radio-group/generative.ts": generative_exports$9,
|
|
@@ -666,5 +707,4 @@ const { registry } = defineRegistry(catalog, {
|
|
|
666
707
|
* several names - Layout plus its parts, Bento plus its cell - and the
|
|
667
708
|
* palette groups by provenance, never by guessing from the name. */
|
|
668
709
|
const faceFamilies = Object.fromEntries(Object.entries(entries).map(([name, entry]) => [name, entry._from]));
|
|
669
|
-
//#endregion
|
|
670
710
|
export { catalog, faceFamilies, registry };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { getIcon } from "@bysages/core/icons";
|
|
2
2
|
import { jsx } from "react/jsx-runtime";
|
|
3
|
-
|
|
3
|
+
// src/internal/icon.tsx
|
|
4
4
|
/** Render a curated registry icon as a bare svg element — the components
|
|
5
5
|
* own default icons. No span shell: the part rules size the svg directly.
|
|
6
6
|
* Extra body appends after the icon's own body, for composed marks. */
|
|
@@ -34,5 +34,4 @@ function iconHtml(name, attrs = {}, extraBody = "") {
|
|
|
34
34
|
};
|
|
35
35
|
return `<svg${Object.entries(attributes).map(([key, value]) => ` ${key}="${value}"`).join("")}>${icon.body + extraBody}</svg>`;
|
|
36
36
|
}
|
|
37
|
-
//#endregion
|
|
38
37
|
export { iconHtml as n, iconNode as r, iconBody as t };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useId } from "react";
|
|
2
|
-
|
|
2
|
+
// src/internal/id.ts
|
|
3
3
|
/** Zag composes owned-part ids with separators, so React's generated id
|
|
4
4
|
* is narrowed to characters that survive both markup and selectors. */
|
|
5
5
|
const UNSAFE_ID_CHARACTERS = /[^a-zA-Z0-9_-]/g;
|
|
@@ -9,5 +9,4 @@ function useElementId(scope, props = {}) {
|
|
|
9
9
|
const explicit = props.id;
|
|
10
10
|
return typeof explicit === "string" && explicit ? explicit : `bs-${scope}-${generated.replace(UNSAFE_ID_CHARACTERS, "-")}`;
|
|
11
11
|
}
|
|
12
|
-
//#endregion
|
|
13
12
|
export { useElementId as t };
|
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
import { r as iconNode } from "./icon-
|
|
2
|
-
import { t as useElementId } from "./id-
|
|
3
|
-
import { n as useComponentMessages } from "./messages-
|
|
1
|
+
import { r as iconNode } from "./icon-C9udWCyz.mjs";
|
|
2
|
+
import { t as useElementId } from "./id-Ctic_3o8.mjs";
|
|
3
|
+
import { n as useComponentMessages } from "./messages-B6n0lVyt.mjs";
|
|
4
4
|
import { Button } from "./components/button/index.mjs";
|
|
5
5
|
import { ButtonGroup } from "./components/button-group/index.mjs";
|
|
6
6
|
import { Dialog as Dialog$1 } from "./components/dialog/index.mjs";
|
|
7
|
+
import { createImageViewerGestures } from "@bysages/core";
|
|
7
8
|
import { injectComponentStyle } from "@bysages/core/styling";
|
|
8
9
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
9
|
-
import { useEffect, useState } from "react";
|
|
10
|
+
import { useEffect, useRef, useState } from "react";
|
|
10
11
|
import { Portal } from "@ark-ui/react/portal";
|
|
11
12
|
import { Dialog } from "@ark-ui/react/dialog";
|
|
12
|
-
|
|
13
|
+
// src/components/image-viewer/preview.tsx
|
|
13
14
|
/** The default doorway is the curated preview icon; custom content keeps
|
|
14
15
|
* that icon as its hover and focus affordance. */
|
|
15
16
|
function ImageViewerPreview({ label, children, "data-part": dataPart, ...rest }) {
|
|
@@ -36,10 +37,7 @@ function ImageViewerPreview({ label, children, "data-part": dataPart, ...rest })
|
|
|
36
37
|
})]
|
|
37
38
|
});
|
|
38
39
|
}
|
|
39
|
-
|
|
40
|
-
//#region src/components/image-viewer/index.tsx
|
|
41
|
-
const MIN_SCALE = .5;
|
|
42
|
-
const MAX_SCALE = 3;
|
|
40
|
+
// src/components/image-viewer/index.tsx
|
|
43
41
|
const SCALE_STEP = .25;
|
|
44
42
|
const TOOL_ICONS = {
|
|
45
43
|
zoomIn: "zoom-in",
|
|
@@ -52,25 +50,23 @@ function ImageViewerImpl({ src, alt = "", open, zoomable = true, width, height,
|
|
|
52
50
|
const hostId = useElementId("image-viewer", { id });
|
|
53
51
|
const messages = useComponentMessages();
|
|
54
52
|
const [localOpen, setLocalOpen] = useState(false);
|
|
55
|
-
const
|
|
56
|
-
const
|
|
53
|
+
const viewportRef = useRef(null);
|
|
54
|
+
const gesturesRef = useRef(null);
|
|
57
55
|
const isOpen = open ?? localOpen;
|
|
58
56
|
const setOpen = (value) => {
|
|
59
57
|
if (open === void 0) setLocalOpen(value);
|
|
60
58
|
onOpenChange?.(value);
|
|
61
59
|
};
|
|
62
60
|
useEffect(() => {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
setRotation((current) => (current + 90) % 360);
|
|
73
|
-
}
|
|
61
|
+
const node = viewportRef.current;
|
|
62
|
+
if (!node) return;
|
|
63
|
+
const gestures = createImageViewerGestures(node, { zoomable });
|
|
64
|
+
gesturesRef.current = gestures;
|
|
65
|
+
return () => {
|
|
66
|
+
gesturesRef.current = null;
|
|
67
|
+
gestures.stop();
|
|
68
|
+
};
|
|
69
|
+
}, [isOpen, zoomable]);
|
|
74
70
|
function toolButton(label, icon, onClick) {
|
|
75
71
|
return /* @__PURE__ */ jsx(Button, {
|
|
76
72
|
variant: "ghost",
|
|
@@ -119,13 +115,13 @@ function ImageViewerImpl({ src, alt = "", open, zoomable = true, width, height,
|
|
|
119
115
|
alt,
|
|
120
116
|
width,
|
|
121
117
|
height,
|
|
122
|
-
|
|
118
|
+
ref: viewportRef
|
|
123
119
|
}), /* @__PURE__ */ jsx("div", {
|
|
124
120
|
"data-scope": "image-viewer",
|
|
125
121
|
"data-part": "toolbar",
|
|
126
122
|
children: /* @__PURE__ */ jsxs(ButtonGroup, { children: [
|
|
127
|
-
zoomable ? [toolButton(messages.imageViewer.zoomIn, TOOL_ICONS.zoomIn, () =>
|
|
128
|
-
toolButton(messages.imageViewer.rotate, TOOL_ICONS.rotate, rotate),
|
|
123
|
+
zoomable ? [toolButton(messages.imageViewer.zoomIn, TOOL_ICONS.zoomIn, () => gesturesRef.current?.zoomBy(SCALE_STEP)), toolButton(messages.imageViewer.zoomOut, TOOL_ICONS.zoomOut, () => gesturesRef.current?.zoomBy(-.25))] : null,
|
|
124
|
+
toolButton(messages.imageViewer.rotate, TOOL_ICONS.rotate, () => gesturesRef.current?.rotate()),
|
|
129
125
|
closeToolButton(messages.imageViewer.close, TOOL_ICONS.close)
|
|
130
126
|
] })
|
|
131
127
|
})]
|
|
@@ -137,5 +133,4 @@ const ImageViewer = Object.assign(ImageViewerImpl, {
|
|
|
137
133
|
...Dialog$1,
|
|
138
134
|
Preview: ImageViewerPreview
|
|
139
135
|
});
|
|
140
|
-
//#endregion
|
|
141
136
|
export { ImageViewer as t };
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { ReactNode } from "react";
|
|
2
2
|
import { Popover } from "@ark-ui/react/popover";
|
|
3
|
-
//#region src/components/popover/index.d.ts
|
|
4
3
|
type PopoverPlacement = "top" | "top-start" | "top-end" | "bottom" | "bottom-start" | "bottom-end" | "left" | "left-start" | "left-end" | "right" | "right-start" | "right-end";
|
|
5
4
|
interface PopoverFacadeProps {
|
|
6
5
|
open?: boolean;
|
|
@@ -20,5 +19,4 @@ declare namespace PopoverFacade {
|
|
|
20
19
|
}
|
|
21
20
|
type PopoverParts = typeof Popover;
|
|
22
21
|
declare const Popover$1: typeof PopoverFacade & PopoverParts;
|
|
23
|
-
//#endregion
|
|
24
22
|
export { PopoverFacadeProps as n, Popover$1 as t };
|