@raylang/vue 0.8.0 → 0.10.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.
@@ -4,6 +4,6 @@ import "@raylang/elements/code";
4
4
  import { createComponent } from "../create.js";
5
5
 
6
6
  export const RayCode = /*#__PURE__*/ createComponent("RayCode", "ray-code", {
7
- properties: ["code", "language", "filename", "lineNumbers", "highlight", "wrap", "maxHeight", "expanded", "hideCopy", "hideHeader", "size", "radius", "copyLabel", "copiedLabel"],
8
- booleans: ["lineNumbers", "wrap", "expanded", "hideCopy", "hideHeader"],
7
+ properties: ["code", "language", "filename", "lineNumbers", "highlight", "wrap", "verbatim", "maxHeight", "expanded", "hideCopy", "hideHeader", "size", "radius", "copyLabel", "copiedLabel"],
8
+ booleans: ["lineNumbers", "wrap", "verbatim", "expanded", "hideCopy", "hideHeader"],
9
9
  });
@@ -4,7 +4,7 @@ import "@raylang/elements/command-palette";
4
4
  import { createComponent } from "../create.js";
5
5
 
6
6
  export const RayCommandPalette = /*#__PURE__*/ createComponent("RayCommandPalette", "ray-command-palette", {
7
- properties: ["open", "actions", "query", "placeholder", "hotkey", "limit", "emptyLabel", "label", "hideHint", "nativeMenus", "overlayBlur"],
7
+ properties: ["open", "actions", "query", "placeholder", "hotkey", "limit", "emptyLabel", "label", "hideHint", "navigateLabel", "runLabel", "closeLabel", "nativeMenus", "overlayBlur"],
8
8
  booleans: ["open", "hideHint", "nativeMenus"],
9
9
  model: { prop: "open", events: ["ray-open", "ray-close"] },
10
10
  });
@@ -0,0 +1,13 @@
1
+ // Generated by ray-elements tools from component.toml files. Do not edit.
2
+
3
+ import "@raylang/elements/doc-tabs";
4
+ import { createComponent } from "../create.js";
5
+
6
+ export const RayDocTabs = /*#__PURE__*/ createComponent("RayDocTabs", "ray-doc-tabs", {
7
+ properties: ["value", "panel", "label", "closeLabel", "dirtyLabel"],
8
+ booleans: [],
9
+ });
10
+ export const RayDocTab = /*#__PURE__*/ createComponent("RayDocTab", "ray-doc-tab", {
11
+ properties: ["value", "dirty", "hideClose"],
12
+ booleans: ["dirty", "hideClose"],
13
+ });
@@ -4,7 +4,7 @@ import "@raylang/elements/input";
4
4
  import { createComponent } from "../create.js";
5
5
 
6
6
  export const RayInput = /*#__PURE__*/ createComponent("RayInput", "ray-input", {
7
- properties: ["value", "type", "name", "label", "description", "descriptionPosition", "error", "placeholder", "required", "disabled", "readonly", "size", "radius", "variant"],
7
+ properties: ["value", "type", "name", "label", "description", "descriptionPosition", "error", "placeholder", "required", "disabled", "readonly", "size", "radius", "variant", "highlight", "complete", "suggestionsLabel"],
8
8
  booleans: ["required", "disabled", "readonly"],
9
9
  model: { prop: "value", events: ["input"] },
10
10
  });
@@ -9,8 +9,8 @@ export const RayMenu = /*#__PURE__*/ createComponent("RayMenu", "ray-menu", {
9
9
  model: { prop: "open", events: ["ray-open", "ray-close"] },
10
10
  });
11
11
  export const RayMenuItem = /*#__PURE__*/ createComponent("RayMenuItem", "ray-menu-item", {
12
- properties: ["value", "disabled", "color"],
13
- booleans: ["disabled"],
12
+ properties: ["value", "disabled", "color", "type", "checked", "name"],
13
+ booleans: ["disabled", "checked"],
14
14
  });
15
15
  export const RayMenuLabel = /*#__PURE__*/ createComponent("RayMenuLabel", "ray-menu-label", {
16
16
  properties: [],
@@ -0,0 +1,9 @@
1
+ // Generated by ray-elements tools from component.toml files. Do not edit.
2
+
3
+ import "@raylang/elements/mode-input";
4
+ import { createComponent } from "../create.js";
5
+
6
+ export const RayModeInput = /*#__PURE__*/ createComponent("RayModeInput", "ray-mode-input", {
7
+ properties: ["mode", "options", "display", "position", "menuLabel", "nativeMenu", "value", "type", "name", "label", "description", "descriptionPosition", "error", "placeholder", "required", "disabled", "readonly", "size", "radius", "variant", "highlight", "complete", "suggestionsLabel"],
8
+ booleans: ["nativeMenu", "required", "disabled", "readonly"],
9
+ });
@@ -4,6 +4,6 @@ import "@raylang/elements/password-input";
4
4
  import { createComponent } from "../create.js";
5
5
 
6
6
  export const RayPasswordInput = /*#__PURE__*/ createComponent("RayPasswordInput", "ray-password-input", {
7
- properties: ["visible", "showLabel", "hideLabel", "value", "type", "name", "label", "description", "descriptionPosition", "error", "placeholder", "required", "disabled", "readonly", "size", "radius", "variant"],
7
+ properties: ["visible", "showLabel", "hideLabel", "value", "type", "name", "label", "description", "descriptionPosition", "error", "placeholder", "required", "disabled", "readonly", "size", "radius", "variant", "highlight", "complete", "suggestionsLabel"],
8
8
  booleans: ["visible", "required", "disabled", "readonly"],
9
9
  });
@@ -4,6 +4,6 @@ import "@raylang/elements/path-input";
4
4
  import { createComponent } from "../create.js";
5
5
 
6
6
  export const RayPathInput = /*#__PURE__*/ createComponent("RayPathInput", "ray-path-input", {
7
- properties: ["mode", "accept", "browseLabel", "dialogTitle", "value", "type", "name", "label", "description", "descriptionPosition", "error", "placeholder", "required", "disabled", "readonly", "size", "radius", "variant"],
7
+ properties: ["mode", "accept", "browseLabel", "dialogTitle", "value", "type", "name", "label", "description", "descriptionPosition", "error", "placeholder", "required", "disabled", "readonly", "size", "radius", "variant", "highlight", "complete", "suggestionsLabel"],
8
8
  booleans: ["required", "disabled", "readonly"],
9
9
  });
@@ -4,8 +4,8 @@ import "@raylang/elements/sidebar";
4
4
  import { createComponent } from "../create.js";
5
5
 
6
6
  export const RaySidebar = /*#__PURE__*/ createComponent("RaySidebar", "ray-sidebar", {
7
- properties: ["collapsed", "open", "side", "variant", "width", "collapsedWidth", "breakpoint", "label"],
8
- booleans: ["collapsed", "open"],
7
+ properties: ["collapsed", "collapse", "open", "side", "variant", "width", "collapsedWidth", "breakpoint", "label", "resizable", "minWidth", "maxWidth", "autosave", "resizeLabel"],
8
+ booleans: ["collapsed", "open", "resizable"],
9
9
  });
10
10
  export const RaySidebarGroup = /*#__PURE__*/ createComponent("RaySidebarGroup", "ray-sidebar-group", {
11
11
  properties: ["label"],
@@ -4,12 +4,12 @@ import "@raylang/elements/tabs";
4
4
  import { createComponent } from "../create.js";
5
5
 
6
6
  export const RayTabs = /*#__PURE__*/ createComponent("RayTabs", "ray-tabs", {
7
- properties: ["value", "variant", "orientation", "color", "activation", "grow"],
7
+ properties: ["value", "variant", "orientation", "color", "size", "activation", "grow"],
8
8
  booleans: ["grow"],
9
9
  model: { prop: "value", events: ["change"] },
10
10
  });
11
11
  export const RayTab = /*#__PURE__*/ createComponent("RayTab", "ray-tab", {
12
- properties: ["value", "disabled"],
12
+ properties: ["value", "disabled", "count"],
13
13
  booleans: ["disabled"],
14
14
  });
15
15
  export const RayTabPanel = /*#__PURE__*/ createComponent("RayTabPanel", "ray-tab-panel", {
@@ -4,7 +4,7 @@ import "@raylang/elements/textarea";
4
4
  import { createComponent } from "../create.js";
5
5
 
6
6
  export const RayTextarea = /*#__PURE__*/ createComponent("RayTextarea", "ray-textarea", {
7
- properties: ["value", "rows", "autosize", "maxRows", "name", "label", "description", "descriptionPosition", "error", "required", "disabled", "readonly", "size", "variant", "radius"],
7
+ properties: ["value", "rows", "autosize", "maxRows", "name", "label", "description", "descriptionPosition", "error", "required", "disabled", "readonly", "size", "variant", "highlight", "complete", "suggestionsLabel", "radius"],
8
8
  booleans: ["autosize", "required", "disabled", "readonly"],
9
9
  model: { prop: "value", events: ["input"] },
10
10
  });
package/index.d.ts CHANGED
@@ -531,6 +531,12 @@ export interface RayInputProps {
531
531
  radius?: "xs" | "sm" | "md" | "lg" | "xl" | "full";
532
532
  /** Box style. */
533
533
  variant?: "default" | "filled" | "unstyled";
534
+ /** Marks ranges of the text, painted behind it: called with the text on every change (typed or set), it returns { start, end, kind?, title? } offsets. kind "error" is red with a wavy underline; any other kind is styled with ::part(highlight-<kind>); title is the tooltip over the range. Ranges must not overlap. */
535
+ highlight?: ((text: string) => Ray.HighlightRange[]) | null;
536
+ /** Inline suggestions: called as the user types (and on Ctrl+Space) with the text and the caret, it returns the part of the text a suggestion would replace and the suggestions ({ from, to, items }), or null for none. A list opens under that part (ArrowUp/Down, Enter or Tab to accept, Escape to close); the chosen item's value replaces from–to as an undoable edit, then ray-complete fires. The field becomes a combobox (aria-autocomplete, aria-expanded, aria-activedescendant). */
537
+ complete?: ((text: string, caret: number) => Ray.CompletionResult | null | Promise<Ray.CompletionResult | null>) | null;
538
+ /** Accessible name of the suggestion list. */
539
+ suggestionsLabel?: string;
534
540
  /** v-model: the element's `value`. */
535
541
  modelValue?: string;
536
542
  "onUpdate:modelValue"?: (value: string) => void;
@@ -556,6 +562,8 @@ export interface RayInputProps {
556
562
  enterkeyhint?: string;
557
563
  /** Id of a <datalist> with suggestions. */
558
564
  list?: string;
565
+ /** A suggestion was accepted (the text already has it). */
566
+ onRayComplete?: (event: CustomEvent<{ item: Ray.CompletionItem; from: number; to: number }>) => void;
559
567
  /** On every edit (value already updated). */
560
568
  onInput?: (event: Event) => void;
561
569
  /** When an edit is committed (blur, Enter). */
@@ -564,6 +572,87 @@ export interface RayInputProps {
564
572
  /** <ray-input> as a Vue component. */
565
573
  export declare const RayInput: DefineComponent<RayInputProps>;
566
574
 
575
+ export interface RayModeInputProps {
576
+ /** The chosen mode's value (default: the first). Setting it applies that mode without ray-mode-change. */
577
+ mode?: string;
578
+ /** The modes; when not set, the <option> children. */
579
+ options?: Ray.ModeOption[];
580
+ /** What the trigger shows: the mode's hint or label, its icon, or both. Default: the icon when the mode has one, else the label. */
581
+ display?: "label" | "icon" | "both";
582
+ /** The side of the field the trigger sits on. */
583
+ position?: "start" | "end";
584
+ /** The trigger's accessible name, read with the current mode ("Mode: File"). */
585
+ menuLabel?: string;
586
+ /** With a native host (a std/ui window with the bridge), the system's menu (no descriptions there). */
587
+ nativeMenu?: boolean;
588
+ /** Current value. The value attribute is the initial value (restored on form reset). */
589
+ value?: string;
590
+ /** Input type. */
591
+ type?: "text" | "email" | "password" | "search" | "number" | "url" | "tel";
592
+ /** Form field name. */
593
+ name?: string;
594
+ /** Visible label (also the accessible name). */
595
+ label?: string;
596
+ /** Help text under the label. */
597
+ description?: string;
598
+ /** The description before the control (help first) or after it, with the error (fields in a row stay aligned). */
599
+ descriptionPosition?: "above" | "below";
600
+ /** Error text; marks the field invalid (display only — does not block submit). */
601
+ error?: string;
602
+ /** Placeholder text. */
603
+ placeholder?: string;
604
+ /** Required for form submission; shows an asterisk. */
605
+ required?: boolean;
606
+ /** Not editable nor submitted. */
607
+ disabled?: boolean;
608
+ /** Not editable, still submitted. */
609
+ readonly?: boolean;
610
+ /** Height and font size. */
611
+ size?: "xs" | "sm" | "md" | "lg" | "xl";
612
+ /** Corner radius. */
613
+ radius?: "xs" | "sm" | "md" | "lg" | "xl" | "full";
614
+ /** Box style. */
615
+ variant?: "default" | "filled" | "unstyled";
616
+ /** Marks ranges of the text, painted behind it: called with the text on every change (typed or set), it returns { start, end, kind?, title? } offsets. kind "error" is red with a wavy underline; any other kind is styled with ::part(highlight-<kind>); title is the tooltip over the range. Ranges must not overlap. */
617
+ highlight?: ((text: string) => Ray.HighlightRange[]) | null;
618
+ /** Inline suggestions: called as the user types (and on Ctrl+Space) with the text and the caret, it returns the part of the text a suggestion would replace and the suggestions ({ from, to, items }), or null for none. A list opens under that part (ArrowUp/Down, Enter or Tab to accept, Escape to close); the chosen item's value replaces from–to as an undoable edit, then ray-complete fires. The field becomes a combobox (aria-autocomplete, aria-expanded, aria-activedescendant). */
619
+ complete?: ((text: string, caret: number) => Ray.CompletionResult | null | Promise<Ray.CompletionResult | null>) | null;
620
+ /** Accessible name of the suggestion list. */
621
+ suggestionsLabel?: string;
622
+ /** Forwarded to the inner input. */
623
+ autocomplete?: string;
624
+ /** Virtual keyboard hint. */
625
+ inputmode?: string;
626
+ /** Validation pattern (regular expression). */
627
+ pattern?: string;
628
+ /** Minimum (number/date types). */
629
+ min?: string;
630
+ /** Maximum (number/date types). */
631
+ max?: string;
632
+ /** Step (number types). */
633
+ step?: string;
634
+ /** Minimum length. */
635
+ minlength?: string;
636
+ /** Maximum length. */
637
+ maxlength?: string;
638
+ /** Mobile auto-capitalization. */
639
+ autocapitalize?: string;
640
+ /** Label of the Enter key on virtual keyboards. */
641
+ enterkeyhint?: string;
642
+ /** Id of a <datalist> with suggestions. */
643
+ list?: string;
644
+ /** The user chose a mode (mode is already the new one); cancelable: preventDefault keeps the previous mode. */
645
+ onRayModeChange?: (event: CustomEvent<{ mode: string; previous: string | null; option: Ray.ModeOption }>) => void;
646
+ /** A suggestion was accepted (the text already has it). */
647
+ onRayComplete?: (event: CustomEvent<{ item: Ray.CompletionItem; from: number; to: number }>) => void;
648
+ /** On every edit (value already updated). */
649
+ onInput?: (event: Event) => void;
650
+ /** When an edit is committed (blur, Enter). */
651
+ onChange?: (event: Event) => void;
652
+ }
653
+ /** <ray-mode-input> as a Vue component. */
654
+ export declare const RayModeInput: DefineComponent<RayModeInputProps>;
655
+
567
656
  export interface RayNumberInputProps {
568
657
  /** The number (undefined when empty). */
569
658
  value?: number;
@@ -659,6 +748,12 @@ export interface RayPasswordInputProps {
659
748
  radius?: "xs" | "sm" | "md" | "lg" | "xl" | "full";
660
749
  /** Box style. */
661
750
  variant?: "default" | "filled" | "unstyled";
751
+ /** Marks ranges of the text, painted behind it: called with the text on every change (typed or set), it returns { start, end, kind?, title? } offsets. kind "error" is red with a wavy underline; any other kind is styled with ::part(highlight-<kind>); title is the tooltip over the range. Ranges must not overlap. */
752
+ highlight?: ((text: string) => Ray.HighlightRange[]) | null;
753
+ /** Inline suggestions: called as the user types (and on Ctrl+Space) with the text and the caret, it returns the part of the text a suggestion would replace and the suggestions ({ from, to, items }), or null for none. A list opens under that part (ArrowUp/Down, Enter or Tab to accept, Escape to close); the chosen item's value replaces from–to as an undoable edit, then ray-complete fires. The field becomes a combobox (aria-autocomplete, aria-expanded, aria-activedescendant). */
754
+ complete?: ((text: string, caret: number) => Ray.CompletionResult | null | Promise<Ray.CompletionResult | null>) | null;
755
+ /** Accessible name of the suggestion list. */
756
+ suggestionsLabel?: string;
662
757
  /** Forwarded to the inner input. */
663
758
  autocomplete?: string;
664
759
  /** Virtual keyboard hint. */
@@ -683,6 +778,8 @@ export interface RayPasswordInputProps {
683
778
  list?: string;
684
779
  /** The user showed or hid the password. */
685
780
  onRayVisibilityChange?: (event: CustomEvent<{ visible: boolean }>) => void;
781
+ /** A suggestion was accepted (the text already has it). */
782
+ onRayComplete?: (event: CustomEvent<{ item: Ray.CompletionItem; from: number; to: number }>) => void;
686
783
  /** On every edit (value already updated). */
687
784
  onInput?: (event: Event) => void;
688
785
  /** When an edit is committed (blur, Enter). */
@@ -728,6 +825,12 @@ export interface RayPathInputProps {
728
825
  radius?: "xs" | "sm" | "md" | "lg" | "xl" | "full";
729
826
  /** Box style. */
730
827
  variant?: "default" | "filled" | "unstyled";
828
+ /** Marks ranges of the text, painted behind it: called with the text on every change (typed or set), it returns { start, end, kind?, title? } offsets. kind "error" is red with a wavy underline; any other kind is styled with ::part(highlight-<kind>); title is the tooltip over the range. Ranges must not overlap. */
829
+ highlight?: ((text: string) => Ray.HighlightRange[]) | null;
830
+ /** Inline suggestions: called as the user types (and on Ctrl+Space) with the text and the caret, it returns the part of the text a suggestion would replace and the suggestions ({ from, to, items }), or null for none. A list opens under that part (ArrowUp/Down, Enter or Tab to accept, Escape to close); the chosen item's value replaces from–to as an undoable edit, then ray-complete fires. The field becomes a combobox (aria-autocomplete, aria-expanded, aria-activedescendant). */
831
+ complete?: ((text: string, caret: number) => Ray.CompletionResult | null | Promise<Ray.CompletionResult | null>) | null;
832
+ /** Accessible name of the suggestion list. */
833
+ suggestionsLabel?: string;
731
834
  /** Forwarded to the inner input. */
732
835
  autocomplete?: string;
733
836
  /** Virtual keyboard hint. */
@@ -754,6 +857,8 @@ export interface RayPathInputProps {
754
857
  onChange?: (event: Event) => void;
755
858
  /** The system dialog failed. */
756
859
  onRayError?: (event: CustomEvent<{ error: Error }>) => void;
860
+ /** A suggestion was accepted (the text already has it). */
861
+ onRayComplete?: (event: CustomEvent<{ item: Ray.CompletionItem; from: number; to: number }>) => void;
757
862
  /** On every edit (value already updated). */
758
863
  onInput?: (event: Event) => void;
759
864
  }
@@ -1071,6 +1176,12 @@ export interface RayTextareaProps {
1071
1176
  size?: "xs" | "sm" | "md" | "lg" | "xl";
1072
1177
  /** Box style. */
1073
1178
  variant?: "default" | "filled" | "unstyled";
1179
+ /** Marks ranges of the text, painted behind it: called with the text on every change (typed or set), it returns { start, end, kind?, title? } offsets. kind "error" is red with a wavy underline; any other kind is styled with ::part(highlight-<kind>); title is the tooltip over the range. Ranges must not overlap. */
1180
+ highlight?: ((text: string) => Ray.HighlightRange[]) | null;
1181
+ /** Inline suggestions: called as the user types (and on Ctrl+Space) with the text and the caret, it returns the part of the text a suggestion would replace and the suggestions ({ from, to, items }), or null for none. A list opens under that part (ArrowUp/Down, Enter or Tab to accept, Escape to close); the chosen item's value replaces from–to as an undoable edit, then ray-complete fires. The field becomes a combobox (aria-autocomplete, aria-expanded, aria-activedescendant). */
1182
+ complete?: ((text: string, caret: number) => Ray.CompletionResult | null | Promise<Ray.CompletionResult | null>) | null;
1183
+ /** Accessible name of the suggestion list. */
1184
+ suggestionsLabel?: string;
1074
1185
  /** Corner radius. */
1075
1186
  radius?: "xs" | "sm" | "md" | "lg" | "xl" | "full";
1076
1187
  /** v-model: the element's `value`. */
@@ -1086,6 +1197,8 @@ export interface RayTextareaProps {
1086
1197
  maxlength?: string;
1087
1198
  /** soft or hard. */
1088
1199
  wrap?: string;
1200
+ /** A suggestion was accepted (the text already has it). */
1201
+ onRayComplete?: (event: CustomEvent<{ item: Ray.CompletionItem; from: number; to: number }>) => void;
1089
1202
  /** On every edit. */
1090
1203
  onInput?: (event: Event) => void;
1091
1204
  /** When an edit is committed. */
@@ -1169,6 +1282,36 @@ export interface RayBreadcrumbProps {
1169
1282
  /** <ray-breadcrumb> as a Vue component. */
1170
1283
  export declare const RayBreadcrumb: DefineComponent<RayBreadcrumbProps>;
1171
1284
 
1285
+ export interface RayDocTabsProps {
1286
+ /** Value of the selected tab (default: the first). */
1287
+ value?: string;
1288
+ /** The id of the shared panel: it gets role=tabpanel and aria-labelledby the selected tab; the tabs get aria-controls. */
1289
+ panel?: string;
1290
+ /** Accessible name of the tab list ("Open requests"). */
1291
+ label?: string;
1292
+ /** Tooltip of the ×. */
1293
+ closeLabel?: string;
1294
+ /** What assistive technology hears after the name of a dirty tab. */
1295
+ dirtyLabel?: string;
1296
+ /** The selected tab changed: a click, the arrow keys, or the selected tab removed. */
1297
+ onChange?: (event: Event) => void;
1298
+ /** The × was clicked, the tab middle-clicked, or Delete/Backspace pressed on it: remove the tab to close it (not fired for hide-close tabs). */
1299
+ onRayRequestClose?: (event: CustomEvent<{ value: string; tab: Ray.RayDocTab; source: "button" | "middle" | "key" }>) => void;
1300
+ }
1301
+ /** <ray-doc-tabs> as a Vue component. */
1302
+ export declare const RayDocTabs: DefineComponent<RayDocTabsProps>;
1303
+
1304
+ export interface RayDocTabProps {
1305
+ /** Identifies the document (ray-doc-tabs value). */
1306
+ value?: string;
1307
+ /** Unsaved changes: a dot in place of the ×, which comes back under the pointer. */
1308
+ dirty?: boolean;
1309
+ /** Cannot be closed: no ×, no middle click, no Delete. */
1310
+ hideClose?: boolean;
1311
+ }
1312
+ /** <ray-doc-tab> as a Vue component. */
1313
+ export declare const RayDocTab: DefineComponent<RayDocTabProps>;
1314
+
1172
1315
  export interface RayNavLinkProps {
1173
1316
  /** Text. */
1174
1317
  label?: string;
@@ -1230,8 +1373,10 @@ export interface RayPaginationProps {
1230
1373
  export declare const RayPagination: DefineComponent<RayPaginationProps>;
1231
1374
 
1232
1375
  export interface RaySidebarProps {
1233
- /** Wide screens: an icon rail instead of the full panel. */
1376
+ /** Wide screens: collapsed as collapse says (an icon rail, or out of view). */
1234
1377
  collapsed?: boolean;
1378
+ /** What collapsed does on wide screens: icon, a rail of the nav links' icons; offcanvas, hidden entirely (no width, out of the tab order). */
1379
+ collapse?: "icon" | "offcanvas";
1235
1380
  /** Narrow screens: the drawer is shown (modal, focus trapped; Escape, backdrop click or a followed link close it). */
1236
1381
  open?: boolean;
1237
1382
  /** The edge it sits on (its border faces the content, its narrow-screen drawer slides from there): start/end follow the writing direction; left/right are sides of the screen. */
@@ -1246,6 +1391,18 @@ export interface RaySidebarProps {
1246
1391
  breakpoint?: string;
1247
1392
  /** Accessible name of its navigation. */
1248
1393
  label?: string;
1394
+ /** Wide screens, expanded: its inner edge drags (or, focused, arrow-keys; Shift is faster, Home/End go to the limits) the width between min-width and max-width. */
1395
+ resizable?: boolean;
1396
+ /** Narrowest width when resizing, in px. */
1397
+ minWidth?: number;
1398
+ /** Widest width when resizing, in px. */
1399
+ maxWidth?: number;
1400
+ /** A key: the resized width is saved in localStorage and restored. A later change of width wins. */
1401
+ autosave?: string;
1402
+ /** Accessible name of the resize edge. */
1403
+ resizeLabel?: string;
1404
+ /** After a drag or a key resized it (resizable). */
1405
+ onRayResize?: (event: CustomEvent<{ width: number }>) => void;
1249
1406
  /** After toggle(). */
1250
1407
  onRayToggle?: (event: CustomEvent<{ collapsed: boolean; open: boolean; mobile: boolean }>) => void;
1251
1408
  /** The drawer opened (narrow screens). */
@@ -1317,6 +1474,8 @@ export interface RayTabsProps {
1317
1474
  orientation?: "horizontal" | "vertical";
1318
1475
  /** Active indicator color. */
1319
1476
  color?: string;
1477
+ /** Height, font size and padding of the tabs (xs for a compact bar). */
1478
+ size?: "xs" | "sm" | "md" | "lg" | "xl";
1320
1479
  /** manual: arrows move focus, Enter/Space activates. */
1321
1480
  activation?: "auto" | "manual";
1322
1481
  /** Tabs share the full width. */
@@ -1335,6 +1494,8 @@ export interface RayTabProps {
1335
1494
  value?: string;
1336
1495
  /** Cannot be activated. */
1337
1496
  disabled?: boolean;
1497
+ /** A small number after the label ("3", "99+"), lighter than a badge; part of the tab's accessible name. Empty: none. */
1498
+ count?: string;
1338
1499
  }
1339
1500
  /** <ray-tab> as a Vue component. */
1340
1501
  export declare const RayTab: DefineComponent<RayTabProps>;
@@ -1365,6 +1526,12 @@ export interface RayCommandPaletteProps {
1365
1526
  label?: string;
1366
1527
  /** No keyboard hint at the bottom. */
1367
1528
  hideHint?: boolean;
1529
+ /** The keyboard hint's word for ↑↓. */
1530
+ navigateLabel?: string;
1531
+ /** The keyboard hint's word for ↵. */
1532
+ runLabel?: string;
1533
+ /** The keyboard hint's word for esc. */
1534
+ closeLabel?: string;
1368
1535
  /** With a native host (ray-elements/core/raylang.js in a std/ui window, menus declared with elements/bridge), also lists the app's menu bar, grouped by menu with its shortcuts; running one gives the program the menu's own event. */
1369
1536
  nativeMenus?: boolean;
1370
1537
  /** Blur of the page behind: px ("8"), a CSS length or "none". Default: --ray-overlay-blur ([overlay] blur in tokens.toml). */
@@ -1468,6 +1635,8 @@ export interface RayMenuProps {
1468
1635
  "onUpdate:modelValue"?: (value: boolean) => void;
1469
1636
  /** An item was chosen; detail: { value, item }. */
1470
1637
  onRaySelect?: (event: CustomEvent<{ value: string; item: Ray.RayMenuItem }>) => void;
1638
+ /** Its trigger is about to open it (click, Arrow keys, right click), before the items are read, native menu included: fill items that depend on what was clicked here. Cancelable (preventDefault keeps it closed). Not fired by show() or open = true. detail: { event }. */
1639
+ onRayRequestOpen?: (event: CustomEvent<{ event: Event }>) => void;
1471
1640
  /** After it opened. */
1472
1641
  onRayOpen?: (event: CustomEvent<unknown>) => void;
1473
1642
  /** After it closed. */
@@ -1483,6 +1652,12 @@ export interface RayMenuItemProps {
1483
1652
  disabled?: boolean;
1484
1653
  /** Text and hover color (e.g. red for destructive actions). */
1485
1654
  color?: string;
1655
+ /** checkbox: choosing it toggles checked (menuitemcheckbox); radio: choosing it checks it and unchecks the radio items of the menu with the same name (menuitemradio). Both show a check mark when checked, in the native menu too. */
1656
+ type?: "item" | "checkbox" | "radio";
1657
+ /** Checked (checkbox and radio items). Already updated when ray-select fires. */
1658
+ checked?: boolean;
1659
+ /** The group of a radio item: one checked per name in the menu. */
1660
+ name?: string;
1486
1661
  }
1487
1662
  /** <ray-menu-item> as a Vue component. */
1488
1663
  export declare const RayMenuItem: DefineComponent<RayMenuItemProps>;
@@ -1712,6 +1887,8 @@ export interface RayCodeProps {
1712
1887
  highlight?: string;
1713
1888
  /** Wraps long lines instead of scrolling sideways. */
1714
1889
  wrap?: boolean;
1890
+ /** Shows and copies the text exactly as given: no common indentation or blank first and last lines removed. For data (a response body, a log) rather than code written in the page. */
1891
+ verbatim?: boolean;
1715
1892
  /** Height before it scrolls: px as a number, or a CSS length. A taller block gets a "Show all N lines" button. */
1716
1893
  maxHeight?: string;
1717
1894
  /** Shown whole, past max-height. */
@@ -2205,7 +2382,7 @@ export interface RaySplitProps {
2205
2382
  collapsed?: boolean;
2206
2383
  /** The divider cannot be moved. */
2207
2384
  disabled?: boolean;
2208
- /** A key: the size is saved in localStorage and restored. */
2385
+ /** A key: the size and the collapsed state are saved in localStorage and restored (a saved state wins over the collapsed attribute). */
2209
2386
  autosave?: string;
2210
2387
  /** After a drag, a key or a collapse. */
2211
2388
  onRayResize?: (event: CustomEvent<{ size: number; collapsed: boolean }>) => void;
@@ -2266,6 +2443,7 @@ export declare const components: {
2266
2443
  RayCalendar: typeof RayCalendar;
2267
2444
  RayFileUpload: typeof RayFileUpload;
2268
2445
  RayInput: typeof RayInput;
2446
+ RayModeInput: typeof RayModeInput;
2269
2447
  RayNumberInput: typeof RayNumberInput;
2270
2448
  RayPasswordInput: typeof RayPasswordInput;
2271
2449
  RayPathInput: typeof RayPathInput;
@@ -2282,6 +2460,8 @@ export declare const components: {
2282
2460
  RayBottomNavItem: typeof RayBottomNavItem;
2283
2461
  RayBreadcrumbs: typeof RayBreadcrumbs;
2284
2462
  RayBreadcrumb: typeof RayBreadcrumb;
2463
+ RayDocTabs: typeof RayDocTabs;
2464
+ RayDocTab: typeof RayDocTab;
2285
2465
  RayNavLink: typeof RayNavLink;
2286
2466
  RayPagination: typeof RayPagination;
2287
2467
  RaySidebar: typeof RaySidebar;
@@ -2361,6 +2541,7 @@ declare module "vue" {
2361
2541
  RayCalendar: typeof RayCalendar;
2362
2542
  RayFileUpload: typeof RayFileUpload;
2363
2543
  RayInput: typeof RayInput;
2544
+ RayModeInput: typeof RayModeInput;
2364
2545
  RayNumberInput: typeof RayNumberInput;
2365
2546
  RayPasswordInput: typeof RayPasswordInput;
2366
2547
  RayPathInput: typeof RayPathInput;
@@ -2377,6 +2558,8 @@ declare module "vue" {
2377
2558
  RayBottomNavItem: typeof RayBottomNavItem;
2378
2559
  RayBreadcrumbs: typeof RayBreadcrumbs;
2379
2560
  RayBreadcrumb: typeof RayBreadcrumb;
2561
+ RayDocTabs: typeof RayDocTabs;
2562
+ RayDocTab: typeof RayDocTab;
2380
2563
  RayNavLink: typeof RayNavLink;
2381
2564
  RayPagination: typeof RayPagination;
2382
2565
  RaySidebar: typeof RaySidebar;
package/index.js CHANGED
@@ -16,6 +16,7 @@ import { RayCombobox } from "./components/combobox.js";
16
16
  import { RayDatePicker, RayCalendar } from "./components/date-picker.js";
17
17
  import { RayFileUpload } from "./components/file-upload.js";
18
18
  import { RayInput } from "./components/input.js";
19
+ import { RayModeInput } from "./components/mode-input.js";
19
20
  import { RayNumberInput } from "./components/number-input.js";
20
21
  import { RayPasswordInput } from "./components/password-input.js";
21
22
  import { RayPathInput } from "./components/path-input.js";
@@ -28,6 +29,7 @@ import { RaySwitch } from "./components/switch.js";
28
29
  import { RayTextarea } from "./components/textarea.js";
29
30
  import { RayBottomNav, RayBottomNavItem } from "./components/bottom-nav.js";
30
31
  import { RayBreadcrumbs, RayBreadcrumb } from "./components/breadcrumbs.js";
32
+ import { RayDocTabs, RayDocTab } from "./components/doc-tabs.js";
31
33
  import { RayNavLink } from "./components/nav-link.js";
32
34
  import { RayPagination } from "./components/pagination.js";
33
35
  import { RaySidebar, RaySidebarGroup } from "./components/sidebar.js";
@@ -77,9 +79,9 @@ import { RayThemeToggle } from "./components/theme-toggle.js";
77
79
 
78
80
  // The factories, to wrap your own custom elements the same way.
79
81
  export { createComponent, createPlugin } from "./create.js";
80
- export { RayButton, RayButtonGroup, RayIconButton, RayToggle, RayToggleGroup, RayCheckbox, RayCheckboxGroup, RayColorPicker, RayColorInput, RayCombobox, RayDatePicker, RayCalendar, RayFileUpload, RayInput, RayNumberInput, RayPasswordInput, RayPathInput, RayRadioGroup, RayRadio, RayRadioCard, RaySearch, RaySegmentedControl, RaySelect, RaySlider, RaySwitch, RayTextarea, RayBottomNav, RayBottomNavItem, RayBreadcrumbs, RayBreadcrumb, RayNavLink, RayPagination, RaySidebar, RaySidebarGroup, RayStepper, RayStep, RayTabs, RayTab, RayTabPanel, RayCommandPalette, RayDialog, RayDrawer, RayMenu, RayMenuItem, RayMenuLabel, RayMenuDivider, RayPopover, RayTooltip, RayAccordion, RayAccordionItem, RayAttachment, RayAttachments, RayAvatar, RayBadge, RayBlockquote, RayCarousel, RayCode, RayIcon, RayIndicator, RayKbd, RayStat, RayTable, RayTimeline, RayTimelineItem, RayAlert, RayEmptyState, RayNotification, RayToaster, RayProgress, RayRingProgress, RaySkeleton, RaySpinner, RayStepDots, RayAppBar, RayAppShell, RayAspectRatio, RayCard, RayCenter, RayContainer, RayGrid, RayGroup, RayScrollArea, RaySeparator, RaySplit, RayStack, RayStatusbar, RayStatusbarItem, RayThemeToggle };
82
+ export { RayButton, RayButtonGroup, RayIconButton, RayToggle, RayToggleGroup, RayCheckbox, RayCheckboxGroup, RayColorPicker, RayColorInput, RayCombobox, RayDatePicker, RayCalendar, RayFileUpload, RayInput, RayModeInput, RayNumberInput, RayPasswordInput, RayPathInput, RayRadioGroup, RayRadio, RayRadioCard, RaySearch, RaySegmentedControl, RaySelect, RaySlider, RaySwitch, RayTextarea, RayBottomNav, RayBottomNavItem, RayBreadcrumbs, RayBreadcrumb, RayDocTabs, RayDocTab, RayNavLink, RayPagination, RaySidebar, RaySidebarGroup, RayStepper, RayStep, RayTabs, RayTab, RayTabPanel, RayCommandPalette, RayDialog, RayDrawer, RayMenu, RayMenuItem, RayMenuLabel, RayMenuDivider, RayPopover, RayTooltip, RayAccordion, RayAccordionItem, RayAttachment, RayAttachments, RayAvatar, RayBadge, RayBlockquote, RayCarousel, RayCode, RayIcon, RayIndicator, RayKbd, RayStat, RayTable, RayTimeline, RayTimelineItem, RayAlert, RayEmptyState, RayNotification, RayToaster, RayProgress, RayRingProgress, RaySkeleton, RaySpinner, RayStepDots, RayAppBar, RayAppShell, RayAspectRatio, RayCard, RayCenter, RayContainer, RayGrid, RayGroup, RayScrollArea, RaySeparator, RaySplit, RayStack, RayStatusbar, RayStatusbarItem, RayThemeToggle };
81
83
 
82
- export const components = { RayButton, RayButtonGroup, RayIconButton, RayToggle, RayToggleGroup, RayCheckbox, RayCheckboxGroup, RayColorPicker, RayColorInput, RayCombobox, RayDatePicker, RayCalendar, RayFileUpload, RayInput, RayNumberInput, RayPasswordInput, RayPathInput, RayRadioGroup, RayRadio, RayRadioCard, RaySearch, RaySegmentedControl, RaySelect, RaySlider, RaySwitch, RayTextarea, RayBottomNav, RayBottomNavItem, RayBreadcrumbs, RayBreadcrumb, RayNavLink, RayPagination, RaySidebar, RaySidebarGroup, RayStepper, RayStep, RayTabs, RayTab, RayTabPanel, RayCommandPalette, RayDialog, RayDrawer, RayMenu, RayMenuItem, RayMenuLabel, RayMenuDivider, RayPopover, RayTooltip, RayAccordion, RayAccordionItem, RayAttachment, RayAttachments, RayAvatar, RayBadge, RayBlockquote, RayCarousel, RayCode, RayIcon, RayIndicator, RayKbd, RayStat, RayTable, RayTimeline, RayTimelineItem, RayAlert, RayEmptyState, RayNotification, RayToaster, RayProgress, RayRingProgress, RaySkeleton, RaySpinner, RayStepDots, RayAppBar, RayAppShell, RayAspectRatio, RayCard, RayCenter, RayContainer, RayGrid, RayGroup, RayScrollArea, RaySeparator, RaySplit, RayStack, RayStatusbar, RayStatusbarItem, RayThemeToggle };
84
+ export const components = { RayButton, RayButtonGroup, RayIconButton, RayToggle, RayToggleGroup, RayCheckbox, RayCheckboxGroup, RayColorPicker, RayColorInput, RayCombobox, RayDatePicker, RayCalendar, RayFileUpload, RayInput, RayModeInput, RayNumberInput, RayPasswordInput, RayPathInput, RayRadioGroup, RayRadio, RayRadioCard, RaySearch, RaySegmentedControl, RaySelect, RaySlider, RaySwitch, RayTextarea, RayBottomNav, RayBottomNavItem, RayBreadcrumbs, RayBreadcrumb, RayDocTabs, RayDocTab, RayNavLink, RayPagination, RaySidebar, RaySidebarGroup, RayStepper, RayStep, RayTabs, RayTab, RayTabPanel, RayCommandPalette, RayDialog, RayDrawer, RayMenu, RayMenuItem, RayMenuLabel, RayMenuDivider, RayPopover, RayTooltip, RayAccordion, RayAccordionItem, RayAttachment, RayAttachments, RayAvatar, RayBadge, RayBlockquote, RayCarousel, RayCode, RayIcon, RayIndicator, RayKbd, RayStat, RayTable, RayTimeline, RayTimelineItem, RayAlert, RayEmptyState, RayNotification, RayToaster, RayProgress, RayRingProgress, RaySkeleton, RaySpinner, RayStepDots, RayAppBar, RayAppShell, RayAspectRatio, RayCard, RayCenter, RayContainer, RayGrid, RayGroup, RayScrollArea, RaySeparator, RaySplit, RayStack, RayStatusbar, RayStatusbarItem, RayThemeToggle };
83
85
 
84
86
  /** app.use(RayElements) registers every component globally. */
85
87
  export const RayElements = /*#__PURE__*/ createPlugin(components);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@raylang/vue",
3
- "version": "0.8.0",
3
+ "version": "0.10.0",
4
4
  "description": "Vue 3 wrappers (with v-model) of the ray-elements web components",
5
5
  "license": "Apache-2.0",
6
6
  "keywords": ["web-components", "design-system", "ui", "raylang", "vue"],
@@ -28,7 +28,7 @@
28
28
  },
29
29
  "sideEffects": false,
30
30
  "peerDependencies": {
31
- "@raylang/elements": "^0.8.0",
31
+ "@raylang/elements": "^0.10.0",
32
32
  "vue": ">=3.3"
33
33
  }
34
34
  }