@bysages/react 0.4.4 → 0.6.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-B0o-dsAf.mjs +309 -0
- package/dist/ai-prompt-input-Cl9ulICF.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 +5 -3
- package/dist/components/autocomplete/index.mjs +12 -10
- package/dist/components/avatar/index.d.mts +1 -2
- package/dist/components/avatar/index.mjs +2 -3
- 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 +1 -2
- package/dist/components/banner/index.mjs +3 -4
- 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 +1 -2
- package/dist/components/breadcrumb/index.mjs +2 -3
- 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 +5 -3
- package/dist/components/cascade-select/index.mjs +42 -40
- 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 +10 -3
- package/dist/components/color-picker/index.mjs +39 -33
- package/dist/components/combobox/index.d.mts +10 -3
- package/dist/components/combobox/index.mjs +17 -12
- package/dist/components/command/index.d.mts +5 -3
- package/dist/components/command/index.mjs +74 -72
- 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 +9 -3
- package/dist/components/date-picker/index.mjs +30 -25
- 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 +49 -5
- package/dist/components/dialog/index.mjs +67 -20
- 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 +20 -5
- package/dist/components/drawer/index.mjs +21 -16
- 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 +3 -4
- package/dist/components/float-button/index.d.mts +1 -2
- package/dist/components/float-button/index.mjs +3 -4
- package/dist/components/floating-panel/index.d.mts +20 -5
- package/dist/components/floating-panel/index.mjs +37 -32
- 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 +18 -5
- package/dist/components/hover-card/index.mjs +16 -11
- 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 +11 -4
- package/dist/components/menu/index.mjs +15 -10
- package/dist/components/menubar/index.d.mts +5 -3
- package/dist/components/menubar/index.mjs +14 -12
- 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 +10 -3
- package/dist/components/navigation-menu/index.mjs +9 -4
- 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 +6 -4
- package/dist/components/popconfirm/index.mjs +33 -31
- package/dist/components/popover/index.d.mts +1 -1
- package/dist/components/popover/index.mjs +23 -18
- 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 +5 -3
- package/dist/components/split-button/index.mjs +16 -14
- 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 +21 -3
- package/dist/components/table/index.mjs +28 -14
- 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 +4 -5
- 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 +18 -5
- package/dist/components/tooltip/index.mjs +10 -5
- package/dist/components/tour/index.d.mts +20 -5
- package/dist/components/tour/index.mjs +18 -13
- 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 +6 -4
- package/dist/components/tree-select/index.mjs +43 -41
- 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 +9 -7
- package/dist/components/typography/index.mjs +10 -3
- 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/floating-BhcDRgnx.d.mts +7 -0
- package/dist/floating-CMR7cvmA.mjs +33 -0
- package/dist/generative/index.d.mts +0 -2
- package/dist/generative/index.mjs +28 -53
- 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-BPTApdoP.mjs} +50 -52
- package/dist/index-CEYybyEQ.d.mts +163 -0
- package/dist/index-CjO4Ggf0.d.mts +115 -0
- package/dist/{index-BcRdWGY-.d.mts → index-DIZEFqJM.d.mts} +0 -8
- package/dist/{index-D_iKc2Uw.d.mts → index-DZ2S5rMj.d.mts} +10 -6
- package/dist/index-j02dTkfc.d.mts +37 -0
- package/dist/index-lCsvE2Vl.d.mts +37 -0
- package/dist/{index-Dj8S4eyJ.d.mts → index-n9VlNO7D.d.mts} +4 -5
- package/dist/index.d.mts +13 -13
- package/dist/index.mjs +10 -10
- package/dist/{input-BDpQ0e6G.mjs → input-YRjehBhU.mjs} +3 -5
- package/dist/{media-player-C0WcjVI-.mjs → media-player-DxG0EYz7.mjs} +7 -12
- package/dist/mentions-B59tQDPt.mjs +341 -0
- package/dist/{messages-1jJWtaYU.mjs → messages-B6n0lVyt.mjs} +1 -2
- package/dist/{select-D_soVdWK.mjs → select-BLFqfeVw.mjs} +24 -20
- package/package.json +17 -17
- package/dist/index-B4twHAQC.d.mts +0 -10456
- package/dist/index-Bbg4heDO.d.mts +0 -113
- package/dist/index-Eu-Bttta.d.mts +0 -24
- package/dist/mentions-BwnyvdXz.mjs +0 -213
|
@@ -1,4 +1,4 @@
|
|
|
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";
|
|
@@ -7,12 +7,12 @@ import { Banner } from "../components/banner/index.mjs";
|
|
|
7
7
|
import { Spinner } from "../components/spinner/index.mjs";
|
|
8
8
|
import { Breadcrumb } from "../components/breadcrumb/index.mjs";
|
|
9
9
|
import { Card } from "../components/card/index.mjs";
|
|
10
|
-
import { t as Input } from "../input-
|
|
10
|
+
import { t as Input } from "../input-YRjehBhU.mjs";
|
|
11
11
|
import { Checkbox } from "../components/checkbox/index.mjs";
|
|
12
12
|
import { FloatButton } from "../components/float-button/index.mjs";
|
|
13
13
|
import { Progress } from "../components/progress/index.mjs";
|
|
14
14
|
import { RadioGroup } from "../components/radio-group/index.mjs";
|
|
15
|
-
import { t as Select } from "../select-
|
|
15
|
+
import { t as Select } from "../select-BLFqfeVw.mjs";
|
|
16
16
|
import { Separator } from "../components/separator/index.mjs";
|
|
17
17
|
import { Slider } from "../components/slider/index.mjs";
|
|
18
18
|
import { Stack } from "../components/stack/index.mjs";
|
|
@@ -26,7 +26,7 @@ import { z } from "zod";
|
|
|
26
26
|
import { defineRegistry, useBoundProp } from "@json-render/react";
|
|
27
27
|
import { defineCatalog } from "@json-render/core";
|
|
28
28
|
import { schema } from "@json-render/react/schema";
|
|
29
|
-
|
|
29
|
+
// \0rolldown/runtime.js
|
|
30
30
|
var __defProp = Object.defineProperty;
|
|
31
31
|
var __exportAll = (all, no_symbols) => {
|
|
32
32
|
let target = {};
|
|
@@ -37,8 +37,7 @@ var __exportAll = (all, no_symbols) => {
|
|
|
37
37
|
if (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" });
|
|
38
38
|
return target;
|
|
39
39
|
};
|
|
40
|
-
|
|
41
|
-
//#region src/generative/faces.generated.ts
|
|
40
|
+
// src/generative/faces.generated.ts
|
|
42
41
|
/** Name the faces a family contributes; the identity keeps inference
|
|
43
42
|
* honest at the call site. */
|
|
44
43
|
function defineFace(faces) {
|
|
@@ -351,8 +350,7 @@ const faces$1 = defineFace({
|
|
|
351
350
|
description: "A multi-line field for prose-length answers."
|
|
352
351
|
}
|
|
353
352
|
});
|
|
354
|
-
|
|
355
|
-
//#region src/generative/shared.ts
|
|
353
|
+
// src/generative/shared.ts
|
|
356
354
|
/** Name the entries a family contributes; the identity keeps inference
|
|
357
355
|
* honest at the call site. */
|
|
358
356
|
function defineEntry(entries) {
|
|
@@ -373,24 +371,21 @@ function useBound(value, path) {
|
|
|
373
371
|
function labelled(label, control) {
|
|
374
372
|
return label ? createElement(Stack, { gap: "xs" }, createElement(Typography.Label, null, label), control) : control;
|
|
375
373
|
}
|
|
376
|
-
|
|
377
|
-
//#region src/components/alert/generative.ts
|
|
374
|
+
// src/components/alert/generative.ts
|
|
378
375
|
var generative_exports$20 = /* @__PURE__ */ __exportAll({ default: () => generative_default$20 });
|
|
379
376
|
/** A bordered notice; status picks the pigment. */
|
|
380
377
|
var generative_default$20 = defineEntry({ Alert: {
|
|
381
378
|
...faces$1.Alert,
|
|
382
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))
|
|
383
380
|
} });
|
|
384
|
-
|
|
385
|
-
//#region src/components/avatar/generative.ts
|
|
381
|
+
// src/components/avatar/generative.ts
|
|
386
382
|
var generative_exports$19 = /* @__PURE__ */ __exportAll({ default: () => generative_default$19 });
|
|
387
383
|
/** A person's seal: image when given, initials as the fallback. */
|
|
388
384
|
var generative_default$19 = defineEntry({ Avatar: {
|
|
389
385
|
...faces$1.Avatar,
|
|
390
386
|
component: ({ props }) => createElement(Avatar, { ...props })
|
|
391
387
|
} });
|
|
392
|
-
|
|
393
|
-
//#region src/components/badge/generative.ts
|
|
388
|
+
// src/components/badge/generative.ts
|
|
394
389
|
var generative_exports$18 = /* @__PURE__ */ __exportAll({ default: () => generative_default$18 });
|
|
395
390
|
/** A small status seal beside content; reads at a glance. */
|
|
396
391
|
var generative_default$18 = defineEntry({ Badge: {
|
|
@@ -400,8 +395,7 @@ var generative_default$18 = defineEntry({ Badge: {
|
|
|
400
395
|
variant: props.variant
|
|
401
396
|
}, props.text)
|
|
402
397
|
} });
|
|
403
|
-
|
|
404
|
-
//#region src/components/banner/generative.ts
|
|
398
|
+
// src/components/banner/generative.ts
|
|
405
399
|
var generative_exports$17 = /* @__PURE__ */ __exportAll({ default: () => generative_default$17 });
|
|
406
400
|
/** A full-width notice that speaks once across the page. */
|
|
407
401
|
var generative_default$17 = defineEntry({ Banner: {
|
|
@@ -411,8 +405,7 @@ var generative_default$17 = defineEntry({ Banner: {
|
|
|
411
405
|
dismissible: true
|
|
412
406
|
})
|
|
413
407
|
} });
|
|
414
|
-
|
|
415
|
-
//#region src/components/breadcrumb/generative.ts
|
|
408
|
+
// src/components/breadcrumb/generative.ts
|
|
416
409
|
var generative_exports$16 = /* @__PURE__ */ __exportAll({ default: () => generative_default$16 });
|
|
417
410
|
/** A trail of waymarks from home to the current page. */
|
|
418
411
|
var generative_default$16 = defineEntry({ Breadcrumb: {
|
|
@@ -430,8 +423,7 @@ var generative_default$16 = defineEntry({ Breadcrumb: {
|
|
|
430
423
|
return createElement(Breadcrumb, { items });
|
|
431
424
|
}
|
|
432
425
|
} });
|
|
433
|
-
|
|
434
|
-
//#region src/components/button/generative.ts
|
|
426
|
+
// src/components/button/generative.ts
|
|
435
427
|
var generative_exports$15 = /* @__PURE__ */ __exportAll({ default: () => generative_default$15 });
|
|
436
428
|
/** The primary action register: solid ink for the one main action, outline, ghost, or subtle for the rest. */
|
|
437
429
|
var generative_default$15 = defineEntry({ Button: {
|
|
@@ -444,8 +436,7 @@ var generative_default$15 = defineEntry({ Button: {
|
|
|
444
436
|
onClick: () => emit("press")
|
|
445
437
|
}, props.label)
|
|
446
438
|
} });
|
|
447
|
-
|
|
448
|
-
//#region src/components/card/generative.ts
|
|
439
|
+
// src/components/card/generative.ts
|
|
449
440
|
var generative_exports$14 = /* @__PURE__ */ __exportAll({ default: () => generative_default$14 });
|
|
450
441
|
/** Grouping vessel. Give title and description instead of hand-building a header; children render in the body; footer holds actions. */
|
|
451
442
|
var generative_default$14 = defineEntry({ Card: {
|
|
@@ -456,8 +447,7 @@ var generative_default$14 = defineEntry({ Card: {
|
|
|
456
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);
|
|
457
448
|
}
|
|
458
449
|
} });
|
|
459
|
-
|
|
460
|
-
//#region src/components/checkbox/generative.ts
|
|
450
|
+
// src/components/checkbox/generative.ts
|
|
461
451
|
var generative_exports$13 = /* @__PURE__ */ __exportAll({ default: () => generative_default$13 });
|
|
462
452
|
/** One independent box with its label. */
|
|
463
453
|
var generative_default$13 = defineEntry({ Checkbox: {
|
|
@@ -474,8 +464,7 @@ var generative_default$13 = defineEntry({ Checkbox: {
|
|
|
474
464
|
]);
|
|
475
465
|
}
|
|
476
466
|
} });
|
|
477
|
-
|
|
478
|
-
//#region src/components/float-button/generative.ts
|
|
467
|
+
// src/components/float-button/generative.ts
|
|
479
468
|
var generative_exports$12 = /* @__PURE__ */ __exportAll({ default: () => generative_default$12 });
|
|
480
469
|
/** A floating action cluster; named actions fan out from one corner. */
|
|
481
470
|
var generative_default$12 = defineEntry({ FloatButton: {
|
|
@@ -492,8 +481,7 @@ var generative_default$12 = defineEntry({ FloatButton: {
|
|
|
492
481
|
});
|
|
493
482
|
}
|
|
494
483
|
} });
|
|
495
|
-
|
|
496
|
-
//#region src/components/input/generative.ts
|
|
484
|
+
// src/components/input/generative.ts
|
|
497
485
|
var generative_exports$11 = /* @__PURE__ */ __exportAll({ default: () => generative_default$11 });
|
|
498
486
|
/** A single-line field; rely on border, surface and the focus halo. */
|
|
499
487
|
var generative_default$11 = defineEntry({ Input: {
|
|
@@ -509,8 +497,7 @@ var generative_default$11 = defineEntry({ Input: {
|
|
|
509
497
|
}));
|
|
510
498
|
}
|
|
511
499
|
} });
|
|
512
|
-
|
|
513
|
-
//#region src/components/progress/generative.ts
|
|
500
|
+
// src/components/progress/generative.ts
|
|
514
501
|
var generative_exports$10 = /* @__PURE__ */ __exportAll({ default: () => generative_default$10 });
|
|
515
502
|
/** A working track that fills toward done. */
|
|
516
503
|
var generative_default$10 = defineEntry({ Progress: {
|
|
@@ -520,8 +507,7 @@ var generative_default$10 = defineEntry({ Progress: {
|
|
|
520
507
|
max: props.max
|
|
521
508
|
}, props.label != null ? createElement(Progress.Label, null, props.label) : null, createElement(Progress.Track, null, createElement(Progress.Range)))
|
|
522
509
|
} });
|
|
523
|
-
|
|
524
|
-
//#region src/components/radio-group/generative.ts
|
|
510
|
+
// src/components/radio-group/generative.ts
|
|
525
511
|
var generative_exports$9 = /* @__PURE__ */ __exportAll({ default: () => generative_default$9 });
|
|
526
512
|
/** Several boxes where exactly one may hold. */
|
|
527
513
|
var generative_default$9 = defineEntry({ RadioGroup: {
|
|
@@ -538,8 +524,7 @@ var generative_default$9 = defineEntry({ RadioGroup: {
|
|
|
538
524
|
}, createElement(RadioGroup.ItemControl), createElement(RadioGroup.ItemText, null, value), createElement(RadioGroup.ItemHiddenInput))))));
|
|
539
525
|
}
|
|
540
526
|
} });
|
|
541
|
-
|
|
542
|
-
//#region src/components/select/generative.tsx
|
|
527
|
+
// src/components/select/generative.tsx
|
|
543
528
|
var generative_exports$8 = /* @__PURE__ */ __exportAll({ default: () => generative_default$8 });
|
|
544
529
|
/** A choice field that opens a ruled list; options carry label and value. */
|
|
545
530
|
var generative_default$8 = defineEntry({ Select: {
|
|
@@ -557,8 +542,7 @@ var generative_default$8 = defineEntry({ Select: {
|
|
|
557
542
|
});
|
|
558
543
|
}
|
|
559
544
|
} });
|
|
560
|
-
|
|
561
|
-
//#region src/components/separator/generative.ts
|
|
545
|
+
// src/components/separator/generative.ts
|
|
562
546
|
var generative_exports$7 = /* @__PURE__ */ __exportAll({ default: () => generative_default$7 });
|
|
563
547
|
/** Hairline divider between sections. */
|
|
564
548
|
var generative_default$7 = defineEntry({ Separator: {
|
|
@@ -568,8 +552,7 @@ var generative_default$7 = defineEntry({ Separator: {
|
|
|
568
552
|
decorative: true
|
|
569
553
|
})
|
|
570
554
|
} });
|
|
571
|
-
|
|
572
|
-
//#region src/components/slider/generative.ts
|
|
555
|
+
// src/components/slider/generative.ts
|
|
573
556
|
var generative_exports$6 = /* @__PURE__ */ __exportAll({ default: () => generative_default$6 });
|
|
574
557
|
/** A ruled track the hand slides between bounds. */
|
|
575
558
|
var generative_default$6 = defineEntry({ Slider: {
|
|
@@ -584,8 +567,7 @@ var generative_default$6 = defineEntry({ Slider: {
|
|
|
584
567
|
key: 0
|
|
585
568
|
})])]))
|
|
586
569
|
} });
|
|
587
|
-
|
|
588
|
-
//#region src/components/spinner/generative.ts
|
|
570
|
+
// src/components/spinner/generative.ts
|
|
589
571
|
var generative_exports$5 = /* @__PURE__ */ __exportAll({ default: () => generative_default$5 });
|
|
590
572
|
/** A quiet wheel for work still settling. */
|
|
591
573
|
var generative_default$5 = defineEntry({ Spinner: {
|
|
@@ -595,8 +577,7 @@ var generative_default$5 = defineEntry({ Spinner: {
|
|
|
595
577
|
"aria-label": props.label
|
|
596
578
|
})
|
|
597
579
|
} });
|
|
598
|
-
|
|
599
|
-
//#region src/components/stack/generative.ts
|
|
580
|
+
// src/components/stack/generative.ts
|
|
600
581
|
var generative_exports$4 = /* @__PURE__ */ __exportAll({ default: () => generative_default$4 });
|
|
601
582
|
/** Flex container for layout. direction column stacks vertically, row lays side by side. gap is a named spacing step. */
|
|
602
583
|
var generative_default$4 = defineEntry({ Stack: {
|
|
@@ -609,8 +590,7 @@ var generative_default$4 = defineEntry({ Stack: {
|
|
|
609
590
|
wrap: props.wrap
|
|
610
591
|
}, children)
|
|
611
592
|
} });
|
|
612
|
-
|
|
613
|
-
//#region src/components/stat/generative.ts
|
|
593
|
+
// src/components/stat/generative.ts
|
|
614
594
|
var generative_exports$3 = /* @__PURE__ */ __exportAll({ default: () => generative_default$3 });
|
|
615
595
|
/** One loud figure with its quiet label and an optional delta. */
|
|
616
596
|
var generative_default$3 = defineEntry({ Stat: {
|
|
@@ -621,8 +601,7 @@ var generative_default$3 = defineEntry({ Stat: {
|
|
|
621
601
|
props.change != null ? createElement(Stat.Delta, { direction: props.direction ?? "flat" }, props.change) : null
|
|
622
602
|
])
|
|
623
603
|
} });
|
|
624
|
-
|
|
625
|
-
//#region src/components/switch/generative.ts
|
|
604
|
+
// src/components/switch/generative.ts
|
|
626
605
|
var generative_exports$2 = /* @__PURE__ */ __exportAll({ default: () => generative_default$2 });
|
|
627
606
|
/** An instant on/off; label names what it switches. */
|
|
628
607
|
var generative_default$2 = defineEntry({ Switch: {
|
|
@@ -640,8 +619,7 @@ var generative_default$2 = defineEntry({ Switch: {
|
|
|
640
619
|
]);
|
|
641
620
|
}
|
|
642
621
|
} });
|
|
643
|
-
|
|
644
|
-
//#region src/components/textarea/generative.ts
|
|
622
|
+
// src/components/textarea/generative.ts
|
|
645
623
|
var generative_exports$1 = /* @__PURE__ */ __exportAll({ default: () => generative_default$1 });
|
|
646
624
|
/** A multi-line field for prose-length answers. */
|
|
647
625
|
var generative_default$1 = defineEntry({ Textarea: {
|
|
@@ -657,8 +635,7 @@ var generative_default$1 = defineEntry({ Textarea: {
|
|
|
657
635
|
}));
|
|
658
636
|
}
|
|
659
637
|
} });
|
|
660
|
-
|
|
661
|
-
//#region src/components/typography/generative.ts
|
|
638
|
+
// src/components/typography/generative.ts
|
|
662
639
|
var generative_exports = /* @__PURE__ */ __exportAll({ default: () => generative_default });
|
|
663
640
|
/** Section heading. One per view at level 1; do not skip levels. */
|
|
664
641
|
var generative_default = defineEntry({
|
|
@@ -674,8 +651,7 @@ var generative_default = defineEntry({
|
|
|
674
651
|
}
|
|
675
652
|
}
|
|
676
653
|
});
|
|
677
|
-
|
|
678
|
-
//#region src/generative/index.ts
|
|
654
|
+
// src/generative/index.ts
|
|
679
655
|
/** Every family writes its own generative face beside the component —
|
|
680
656
|
* `components/<family>/generative.ts` — and this module is where they
|
|
681
657
|
* meet: one glob picks the faces up, so a family that lands in the
|
|
@@ -731,5 +707,4 @@ const { registry } = defineRegistry(catalog, {
|
|
|
731
707
|
* several names - Layout plus its parts, Bento plus its cell - and the
|
|
732
708
|
* palette groups by provenance, never by guessing from the name. */
|
|
733
709
|
const faceFamilies = Object.fromEntries(Object.entries(entries).map(([name, entry]) => [name, entry._from]));
|
|
734
|
-
//#endregion
|
|
735
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
|
+
import { t as FloatingPortal } from "./floating-CMR7cvmA.mjs";
|
|
5
6
|
import { ButtonGroup } from "./components/button-group/index.mjs";
|
|
6
7
|
import { Dialog as Dialog$1 } from "./components/dialog/index.mjs";
|
|
8
|
+
import { createImageViewerGestures } from "@bysages/core";
|
|
7
9
|
import { injectComponentStyle } from "@bysages/core/styling";
|
|
8
10
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
9
|
-
import { useEffect, useState } from "react";
|
|
10
|
-
import { Portal } from "@ark-ui/react/portal";
|
|
11
|
+
import { useEffect, useRef, useState } from "react";
|
|
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",
|
|
@@ -47,30 +45,28 @@ const TOOL_ICONS = {
|
|
|
47
45
|
rotate: "rotate-cw",
|
|
48
46
|
close: "x"
|
|
49
47
|
};
|
|
50
|
-
function ImageViewerImpl({ src, alt = "", open, zoomable = true, width, height, children, onOpenChange, id }) {
|
|
48
|
+
function ImageViewerImpl({ portal = true, src, alt = "", open, zoomable = true, width, height, children, onOpenChange, id }) {
|
|
51
49
|
injectComponentStyle("image-viewer");
|
|
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",
|
|
@@ -104,38 +100,40 @@ function ImageViewerImpl({ src, alt = "", open, zoomable = true, width, height,
|
|
|
104
100
|
"data-scope": "image-viewer",
|
|
105
101
|
"data-part": "trigger",
|
|
106
102
|
children: children ?? /* @__PURE__ */ jsx(ImageViewerPreview, {})
|
|
107
|
-
}), /* @__PURE__ */ jsxs(
|
|
108
|
-
|
|
109
|
-
children: /* @__PURE__ */
|
|
110
|
-
className: "bs-image-viewer-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
103
|
+
}), /* @__PURE__ */ jsxs(FloatingPortal, {
|
|
104
|
+
portal,
|
|
105
|
+
children: [/* @__PURE__ */ jsx(Dialog.Backdrop, { className: "bs-image-viewer-backdrop" }), /* @__PURE__ */ jsx(Dialog.Positioner, {
|
|
106
|
+
className: "bs-image-viewer-positioner",
|
|
107
|
+
children: /* @__PURE__ */ jsxs(Dialog.Content, {
|
|
108
|
+
className: "bs-image-viewer-content",
|
|
109
|
+
"aria-label": alt || "Image preview",
|
|
110
|
+
onClick: (event) => {
|
|
111
|
+
if (event.target === event.currentTarget) setOpen(false);
|
|
112
|
+
},
|
|
113
|
+
children: [/* @__PURE__ */ jsx("img", {
|
|
114
|
+
"data-scope": "image-viewer",
|
|
115
|
+
"data-part": "viewport",
|
|
116
|
+
src,
|
|
117
|
+
alt,
|
|
118
|
+
width,
|
|
119
|
+
height,
|
|
120
|
+
ref: viewportRef
|
|
121
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
122
|
+
"data-scope": "image-viewer",
|
|
123
|
+
"data-part": "toolbar",
|
|
124
|
+
children: /* @__PURE__ */ jsxs(ButtonGroup, { children: [
|
|
125
|
+
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,
|
|
126
|
+
toolButton(messages.imageViewer.rotate, TOOL_ICONS.rotate, () => gesturesRef.current?.rotate()),
|
|
127
|
+
closeToolButton(messages.imageViewer.close, TOOL_ICONS.close)
|
|
128
|
+
] })
|
|
129
|
+
})]
|
|
130
|
+
})
|
|
131
|
+
})]
|
|
132
|
+
})]
|
|
134
133
|
});
|
|
135
134
|
}
|
|
136
135
|
const ImageViewer = Object.assign(ImageViewerImpl, {
|
|
137
136
|
...Dialog$1,
|
|
138
137
|
Preview: ImageViewerPreview
|
|
139
138
|
});
|
|
140
|
-
//#endregion
|
|
141
139
|
export { ImageViewer as t };
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { n as FloatingPortalTarget } from "./floating-BhcDRgnx.mjs";
|
|
2
|
+
import { t as Popover } from "./index-j02dTkfc.mjs";
|
|
3
|
+
import { HTMLAttributes } from "react";
|
|
4
|
+
type MentionCommitKey = "Enter" | "Tab" | " ";
|
|
5
|
+
interface UseMentionsOptions {
|
|
6
|
+
/** The candidates offered once a trigger character is typed. */
|
|
7
|
+
items: MentionEntry[];
|
|
8
|
+
/** The character that summons the candidates. */
|
|
9
|
+
trigger?: string;
|
|
10
|
+
/** One or more summoning characters; the longest token closest to the
|
|
11
|
+
* caret wins when several triggers are active. */
|
|
12
|
+
triggers?: string | string[];
|
|
13
|
+
/** Keys that choose the highlighted candidate. */
|
|
14
|
+
commitKeys?: MentionCommitKey[];
|
|
15
|
+
}
|
|
16
|
+
interface UseMentionsHandlers {
|
|
17
|
+
/** The text the field holds right now — read at keystroke time, never
|
|
18
|
+
* from a controlled prop that lags a render behind the caret. */
|
|
19
|
+
getText: () => string;
|
|
20
|
+
/** Writes the field's next text: a mention inserted at the token. */
|
|
21
|
+
setText: (value: string) => void;
|
|
22
|
+
/** The absolute text offset of the field caret; a rich editor supplies this.
|
|
23
|
+
* A textarea is read from its own selection when omitted. */
|
|
24
|
+
getCaret?: () => number | undefined;
|
|
25
|
+
/** Called before insertion. Return `false` to record the choice without
|
|
26
|
+
* rewriting composer text — useful for slash commands and context chips. */
|
|
27
|
+
select?: (entry: MentionEntry) => boolean | void;
|
|
28
|
+
/** Replaces default insertion so rich editors can commit their own token. */
|
|
29
|
+
commit?: (entry: MentionEntry) => void;
|
|
30
|
+
}
|
|
31
|
+
/** Whatever carries a key press — a native KeyboardEvent or a React
|
|
32
|
+
* synthetic one; the detector only needs the key's name and the power
|
|
33
|
+
* to hold the key back. */
|
|
34
|
+
interface MentionKeyEvent {
|
|
35
|
+
key: string;
|
|
36
|
+
preventDefault: () => void;
|
|
37
|
+
}
|
|
38
|
+
/** The detection machinery behind a mention field: watch the caret,
|
|
39
|
+
* offer the matching candidates, and answer for the keys that drive
|
|
40
|
+
* them. The field element arrives as a getter because hosts wrap it
|
|
41
|
+
* differently (a bare textarea, a field part's ref).
|
|
42
|
+
*
|
|
43
|
+
* `onKeydown` answers whether the vessel consumed the key, so a host
|
|
44
|
+
* with its own Enter semantics — a composer that sends — can yield to
|
|
45
|
+
* the candidates first and act only when the vessel stands down. */
|
|
46
|
+
declare function useMentions(options: UseMentionsOptions | (() => UseMentionsOptions), textarea: () => HTMLTextAreaElement | null, handlers: UseMentionsHandlers): {
|
|
47
|
+
open: boolean;
|
|
48
|
+
matches: MentionEntry[];
|
|
49
|
+
active: number;
|
|
50
|
+
setActive: import("react").Dispatch<import("react").SetStateAction<number>>;
|
|
51
|
+
anchorIndex: import("react").RefObject<number>;
|
|
52
|
+
caretIndex: import("react").RefObject<number>;
|
|
53
|
+
activeTrigger: import("react").RefObject<string>;
|
|
54
|
+
insert: (entry: MentionEntry) => void;
|
|
55
|
+
close: () => void;
|
|
56
|
+
onInput: () => void;
|
|
57
|
+
onKeydown: (event: MentionKeyEvent) => boolean;
|
|
58
|
+
};
|
|
59
|
+
interface MentionEntry {
|
|
60
|
+
/** Stable identity for tests, popups and business handlers. */
|
|
61
|
+
id?: string;
|
|
62
|
+
/** The primary words shown in the popup and inserted by default. */
|
|
63
|
+
label: string;
|
|
64
|
+
/** The semantic value reported by the field. */
|
|
65
|
+
value: string;
|
|
66
|
+
/** One line of supporting copy under the label. */
|
|
67
|
+
description?: string;
|
|
68
|
+
/** A curated core icon name. */
|
|
69
|
+
icon?: string;
|
|
70
|
+
/** Optional section heading; entries with the same heading travel together. */
|
|
71
|
+
group?: string;
|
|
72
|
+
/** The consumer's coarse entry type, such as `file`, `agent` or `command`. */
|
|
73
|
+
kind?: string;
|
|
74
|
+
/** A visible candidate the keyboard and pointer cannot choose. */
|
|
75
|
+
disabled?: boolean;
|
|
76
|
+
/** Exact composer text to insert; it bypasses `trigger + label`. */
|
|
77
|
+
insertText?: string;
|
|
78
|
+
/** Extra consumer data carried back through `onSelect`. */
|
|
79
|
+
meta?: Record<string, unknown>;
|
|
80
|
+
}
|
|
81
|
+
type MentionTriggers = string | string[];
|
|
82
|
+
type MentionPlacement = "bottom-start" | "top-start";
|
|
83
|
+
interface MentionsVesselProps {
|
|
84
|
+
/** Portal after hydration; `false` keeps the vessel inline. */
|
|
85
|
+
portal?: FloatingPortalTarget;
|
|
86
|
+
id?: string;
|
|
87
|
+
/** The host field's rung, so the rows keep the field's register. */
|
|
88
|
+
size?: "sm" | "md" | "lg";
|
|
89
|
+
/** Whether the candidates are up. */
|
|
90
|
+
open?: boolean;
|
|
91
|
+
/** The candidates on offer. */
|
|
92
|
+
matches?: MentionEntry[];
|
|
93
|
+
/** The keyboard's active row. */
|
|
94
|
+
active?: number;
|
|
95
|
+
/** The rectangle the vessel points at — the host's textarea. */
|
|
96
|
+
anchor?: HTMLElement | null;
|
|
97
|
+
/** Which side of the anchor hosts the candidates. */
|
|
98
|
+
placement?: MentionPlacement;
|
|
99
|
+
/** A candidate was chosen. */
|
|
100
|
+
onInsert?: (entry: MentionEntry) => void;
|
|
101
|
+
/** The pointer moved to a row. */
|
|
102
|
+
onActiveChange?: (index: number) => void;
|
|
103
|
+
/** The vessel was dismissed. */
|
|
104
|
+
onOpenChange?: (open: boolean) => void;
|
|
105
|
+
}
|
|
106
|
+
/** The vessel: the candidates themselves as a floating card. The anchor
|
|
107
|
+
* is virtual — a live rectangle off the host's field — so a host keeps
|
|
108
|
+
* its own anatomy (the textarea rides where the host puts it) and the
|
|
109
|
+
* vessel still points at the right place. Shares the detection state
|
|
110
|
+
* with the host through `useMentions`. */
|
|
111
|
+
declare function MentionsVesselImpl({ portal, size, open, matches, active, anchor, placement, onInsert, onActiveChange, onOpenChange, id }: MentionsVesselProps): import("react").JSX.Element;
|
|
112
|
+
declare const MentionsVessel: typeof MentionsVesselImpl & {
|
|
113
|
+
Root: typeof MentionsVesselImpl;
|
|
114
|
+
};
|
|
115
|
+
/**
|
|
116
|
+
* Mentions: a textarea that, when the text before the caret ends with a
|
|
117
|
+
* trigger character followed by a token, offers matching candidates in a
|
|
118
|
+
* small anchored vessel. Entries may carry descriptions, icons, groups
|
|
119
|
+
* and consumer metadata. Selecting reports the whole entry; by default it
|
|
120
|
+
* also replaces the token with `trigger + label`.
|
|
121
|
+
*
|
|
122
|
+
* The field is the shared `Field.Textarea` — field wiring (label ids,
|
|
123
|
+
* the invalid state, autoresize) rides on it for free — and the vessel
|
|
124
|
+
* anchors through the popover's own `Anchor` part wrapped around the
|
|
125
|
+
* field, so the machine, not a local rectangle, points the popup at the
|
|
126
|
+
* input. Composers that keep their own field anatomy (the AI prompt
|
|
127
|
+
* input) skip this shell and wire `useMentions` plus `MentionsVessel`
|
|
128
|
+
* themselves.
|
|
129
|
+
*/
|
|
130
|
+
interface MentionsProps extends Omit<HTMLAttributes<HTMLDivElement>, "onSelect"> {
|
|
131
|
+
/** Portal after hydration; `false` keeps the vessel inline. */
|
|
132
|
+
portal?: FloatingPortalTarget;
|
|
133
|
+
/** The candidates offered once a trigger character is typed. */
|
|
134
|
+
items?: MentionEntry[];
|
|
135
|
+
/** The text held by the field. Supply it to control the field;
|
|
136
|
+
* changes are reported via `onValueChange`. */
|
|
137
|
+
value?: string;
|
|
138
|
+
/** The character that summons the candidates. */
|
|
139
|
+
trigger?: string;
|
|
140
|
+
/** One or more summoning characters, such as `@` and `/`. */
|
|
141
|
+
triggers?: MentionTriggers;
|
|
142
|
+
/** Keep composer text untouched when a candidate is selected. */
|
|
143
|
+
insertOnSelect?: boolean;
|
|
144
|
+
/** Keys that choose the highlighted candidate. */
|
|
145
|
+
commitKeys?: MentionCommitKey[];
|
|
146
|
+
/** Which side of the field hosts the candidates. */
|
|
147
|
+
placement?: MentionPlacement;
|
|
148
|
+
placeholder?: string;
|
|
149
|
+
/** Let the field grow with its text instead of holding `rows`. */
|
|
150
|
+
autoresize?: boolean;
|
|
151
|
+
/** Standing alone, the field styles itself from this flag; inside a
|
|
152
|
+
* `Field.Root` the field's own invalid state takes over. */
|
|
153
|
+
invalid?: boolean;
|
|
154
|
+
/** One rung of the control-height ladder for the resting field. */
|
|
155
|
+
size?: "sm" | "md" | "lg";
|
|
156
|
+
/** Reports the field's next text. */
|
|
157
|
+
onValueChange?: (value: string) => void;
|
|
158
|
+
/** Reports the whole selected entry. */
|
|
159
|
+
onSelect?: (entry: MentionEntry) => void;
|
|
160
|
+
}
|
|
161
|
+
declare function MentionsImpl({ portal, items, value, trigger, triggers, insertOnSelect, commitKeys, placement, placeholder, autoresize, invalid, size, onValueChange, onSelect, children, ...rest }: MentionsProps): import("react").JSX.Element;
|
|
162
|
+
declare const Mentions: typeof MentionsImpl & typeof Popover;
|
|
163
|
+
export { MentionsProps as a, MentionCommitKey as c, useMentions as d, Mentions as i, UseMentionsHandlers as l, MentionPlacement as n, MentionsVessel as o, MentionTriggers as r, MentionsVesselProps as s, MentionEntry as t, UseMentionsOptions as u };
|