@webx-ui/core 0.37.1 → 0.39.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.
Files changed (31) hide show
  1. package/dist/components/Actions/Actions.d.ts +1 -0
  2. package/dist/components/Actions/types.d.ts +5 -0
  3. package/dist/components/DatePicker/DatePicker.d.ts +1 -0
  4. package/dist/components/DatePicker/types.d.ts +10 -0
  5. package/dist/components/FileCard/FileCard.d.ts +32 -2
  6. package/dist/components/FileCard/types.d.ts +24 -0
  7. package/dist/components/Icon/icons.d.ts +2 -0
  8. package/dist/components/Indicator/Indicator.d.ts +1 -1
  9. package/dist/components/Input/Input.d.ts +8 -0
  10. package/dist/components/Input/types.d.ts +2 -1
  11. package/dist/components/RichText/RichText.d.ts +6 -0
  12. package/dist/components/RichText/source.d.ts +18 -0
  13. package/dist/components/RichText/tools.d.ts +2 -0
  14. package/dist/components/RichText/types.d.ts +17 -4
  15. package/dist/components/SelectionArea/SelectionArea.d.ts +1 -0
  16. package/dist/components/SelectionArea/types.d.ts +6 -0
  17. package/dist/components/Table/types.d.ts +2 -0
  18. package/dist/components/Textarea/Textarea.d.ts +6 -0
  19. package/dist/components/Textarea/types.d.ts +2 -1
  20. package/dist/components/Tooltip/Tooltip.d.ts +94 -2
  21. package/dist/components/Tree/types.d.ts +4 -0
  22. package/dist/composables/useDateTimezone.d.ts +26 -0
  23. package/dist/composables/useFormField.d.ts +5 -0
  24. package/dist/composables/useTokens.d.ts +94 -0
  25. package/dist/index.d.ts +2 -0
  26. package/dist/index.js +7760 -6857
  27. package/dist/index.js.map +1 -1
  28. package/dist/internal/TokenButton.d.ts +10 -0
  29. package/dist/internal/TokenMenu.d.ts +23 -0
  30. package/dist/style.css +1 -1
  31. package/package.json +2 -2
@@ -38,6 +38,7 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_PublicProps,
38
38
  align: import('./types').ActionsAlign;
39
39
  ariaLabel: string;
40
40
  collapse: boolean | "always";
41
+ moreLabel: string;
41
42
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
42
43
  root: HTMLDivElement;
43
44
  row: HTMLDivElement;
@@ -17,6 +17,11 @@ export interface ActionsProps {
17
17
  collapse?: boolean | 'always';
18
18
  /** Accessible name of the group, e.g. "Row actions". */
19
19
  ariaLabel?: string;
20
+ /**
21
+ * The name of the button the folded-up menu opens from — its tip and its accessible name.
22
+ * English by default, like every word of a component: whoever places it knows the language.
23
+ */
24
+ moreLabel?: string;
20
25
  }
21
26
  export interface ActionsEmits {
22
27
  /** The row collapsed into the dropdown, or came back out of it. */
@@ -42,6 +42,7 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_PublicProps,
42
42
  seconds: boolean;
43
43
  minutesIncrement: number;
44
44
  is24: boolean;
45
+ timezone: string;
45
46
  weekStart: number;
46
47
  autoApply: boolean;
47
48
  textInput: boolean;
@@ -30,6 +30,16 @@ export interface DatePickerProps {
30
30
  * `provideDateLocale`, then to the browser's own language.
31
31
  */
32
32
  locale?: string | DateFnsLocale;
33
+ /**
34
+ * The IANA zone a moment is shown and picked in, e.g. `'Asia/Hong_Kong'`: the field reads
35
+ * the wall clock of that zone whatever the reader's machine is set to, and the value goes
36
+ * back with that zone's offset. Applies only when `valueFormat` carries an offset (`XXX`,
37
+ * `xxx`) — a value without one is a wall clock already and has no zone to move between.
38
+ * Defaults to what the application provided with `provideDateTimezone`, then to the
39
+ * reader's own zone. Under the default display format, a time is followed by the zone's
40
+ * offset whenever it is not the reader's.
41
+ */
42
+ timezone?: string;
33
43
  /** First day of the week: 0 is Sunday, 1 is Monday. */
34
44
  weekStart?: number;
35
45
  /** Apply the value as soon as it is picked, with no confirm button. */
@@ -40,6 +40,9 @@ declare function __VLS_template(): {
40
40
  readonly autocomplete?: string | undefined;
41
41
  readonly ariaLabel?: string | undefined;
42
42
  readonly localized?: boolean | undefined;
43
+ readonly tokens?: import('../..').TokenOption[] | undefined;
44
+ readonly tokensTitle?: string | undefined;
45
+ readonly tokensLabel?: string | undefined;
43
46
  readonly onChange?: ((value: string) => any) | undefined;
44
47
  readonly "onUpdate:modelValue"?: ((value: import('..').InputModelValue) => any) | undefined;
45
48
  readonly onInput?: ((value: string) => any) | undefined;
@@ -51,7 +54,9 @@ declare function __VLS_template(): {
51
54
  $refs: {
52
55
  [x: string]: unknown;
53
56
  } & {
57
+ rootRef: HTMLDivElement;
54
58
  inputRef: HTMLInputElement;
59
+ mirrorRef: HTMLSpanElement;
55
60
  };
56
61
  $slots: Readonly<{
57
62
  [name: string]: import('vue').Slot<any> | undefined;
@@ -96,6 +101,9 @@ declare function __VLS_template(): {
96
101
  maxlength: number;
97
102
  showCount: boolean;
98
103
  localized: boolean;
104
+ tokens: import('../..').TokenOption[];
105
+ tokensTitle: string;
106
+ tokensLabel: string;
99
107
  }, {}, string, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, import('vue').ComponentProvideOptions> & {
100
108
  beforeCreate?: (() => void) | (() => void)[];
101
109
  created?: (() => void) | (() => void)[];
@@ -130,6 +138,9 @@ declare function __VLS_template(): {
130
138
  maxlength: number;
131
139
  showCount: boolean;
132
140
  localized: boolean;
141
+ tokens: import('../..').TokenOption[];
142
+ tokensTitle: string;
143
+ tokensLabel: string;
133
144
  }> & Omit<Readonly<{
134
145
  modelValue?: import('..').InputModelValue;
135
146
  } & import('..').InputProps> & Readonly<{
@@ -139,7 +150,7 @@ declare function __VLS_template(): {
139
150
  onClear?: (() => any) | undefined;
140
151
  onBlur?: ((event: FocusEvent) => any) | undefined;
141
152
  onFocus?: ((event: FocusEvent) => any) | undefined;
142
- }>, "input" | "select" | "blur" | "focus" | ("size" | "disabled" | "type" | "placeholder" | "ariaLabel" | "clearable" | "status" | "id" | "readonly" | "autocomplete" | "maxlength" | "showCount" | "localized")> & {
153
+ }>, "input" | "select" | "blur" | "focus" | ("size" | "disabled" | "type" | "placeholder" | "ariaLabel" | "clearable" | "status" | "id" | "readonly" | "autocomplete" | "maxlength" | "showCount" | "localized" | "tokens" | "tokensTitle" | "tokensLabel")> & {
143
154
  focus: () => void | undefined;
144
155
  blur: () => void | undefined;
145
156
  select: () => void | undefined;
@@ -158,12 +169,14 @@ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
158
169
  declare const __VLS_component: import('vue').DefineComponent<FileCardProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
159
170
  edit: () => any;
160
171
  copy: (url: string) => any;
172
+ view: () => any;
161
173
  remove: () => any;
162
174
  rename: (name: string) => any;
163
175
  "copy-error": (error: unknown) => any;
164
176
  }, string, import('vue').PublicProps, Readonly<FileCardProps> & Readonly<{
165
177
  onEdit?: (() => any) | undefined;
166
178
  onCopy?: ((url: string) => any) | undefined;
179
+ onView?: (() => any) | undefined;
167
180
  onRemove?: (() => any) | undefined;
168
181
  onRename?: ((name: string) => any) | undefined;
169
182
  "onCopy-error"?: ((error: unknown) => any) | undefined;
@@ -172,11 +185,15 @@ declare const __VLS_component: import('vue').DefineComponent<FileCardProps, {},
172
185
  disabled: boolean;
173
186
  type: string;
174
187
  icon: import('..').IconName;
188
+ moreLabel: string;
175
189
  url: string;
176
190
  selected: boolean;
177
191
  thumbnail: string;
192
+ extension: string;
193
+ showExtension: boolean;
178
194
  renamable: boolean;
179
195
  editable: boolean;
196
+ viewable: boolean;
180
197
  removable: boolean;
181
198
  confirmRemove: boolean;
182
199
  copyable: boolean;
@@ -186,11 +203,13 @@ declare const __VLS_component: import('vue').DefineComponent<FileCardProps, {},
186
203
  saveLabel: string;
187
204
  cancelLabel: string;
188
205
  editLabel: string;
206
+ viewLabel: string;
189
207
  removeLabel: string;
190
208
  removeConfirmText: string;
191
209
  copyLabel: string;
192
210
  downloadLabel: string;
193
211
  copiedLabel: string;
212
+ actionsLabel: string;
194
213
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
195
214
  field: ({
196
215
  $: import('vue').ComponentInternalInstance;
@@ -210,6 +229,9 @@ declare const __VLS_component: import('vue').DefineComponent<FileCardProps, {},
210
229
  readonly autocomplete?: string | undefined;
211
230
  readonly ariaLabel?: string | undefined;
212
231
  readonly localized?: boolean | undefined;
232
+ readonly tokens?: import('../..').TokenOption[] | undefined;
233
+ readonly tokensTitle?: string | undefined;
234
+ readonly tokensLabel?: string | undefined;
213
235
  readonly onChange?: ((value: string) => any) | undefined;
214
236
  readonly "onUpdate:modelValue"?: ((value: import('..').InputModelValue) => any) | undefined;
215
237
  readonly onInput?: ((value: string) => any) | undefined;
@@ -221,7 +243,9 @@ declare const __VLS_component: import('vue').DefineComponent<FileCardProps, {},
221
243
  $refs: {
222
244
  [x: string]: unknown;
223
245
  } & {
246
+ rootRef: HTMLDivElement;
224
247
  inputRef: HTMLInputElement;
248
+ mirrorRef: HTMLSpanElement;
225
249
  };
226
250
  $slots: Readonly<{
227
251
  [name: string]: import('vue').Slot<any> | undefined;
@@ -266,6 +290,9 @@ declare const __VLS_component: import('vue').DefineComponent<FileCardProps, {},
266
290
  maxlength: number;
267
291
  showCount: boolean;
268
292
  localized: boolean;
293
+ tokens: import('../..').TokenOption[];
294
+ tokensTitle: string;
295
+ tokensLabel: string;
269
296
  }, {}, string, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, import('vue').ComponentProvideOptions> & {
270
297
  beforeCreate?: (() => void) | (() => void)[];
271
298
  created?: (() => void) | (() => void)[];
@@ -300,6 +327,9 @@ declare const __VLS_component: import('vue').DefineComponent<FileCardProps, {},
300
327
  maxlength: number;
301
328
  showCount: boolean;
302
329
  localized: boolean;
330
+ tokens: import('../..').TokenOption[];
331
+ tokensTitle: string;
332
+ tokensLabel: string;
303
333
  }> & Omit<Readonly<{
304
334
  modelValue?: import('..').InputModelValue;
305
335
  } & import('..').InputProps> & Readonly<{
@@ -309,7 +339,7 @@ declare const __VLS_component: import('vue').DefineComponent<FileCardProps, {},
309
339
  onClear?: (() => any) | undefined;
310
340
  onBlur?: ((event: FocusEvent) => any) | undefined;
311
341
  onFocus?: ((event: FocusEvent) => any) | undefined;
312
- }>, "input" | "select" | "blur" | "focus" | ("size" | "disabled" | "type" | "placeholder" | "ariaLabel" | "clearable" | "status" | "id" | "readonly" | "autocomplete" | "maxlength" | "showCount" | "localized")> & {
342
+ }>, "input" | "select" | "blur" | "focus" | ("size" | "disabled" | "type" | "placeholder" | "ariaLabel" | "clearable" | "status" | "id" | "readonly" | "autocomplete" | "maxlength" | "showCount" | "localized" | "tokens" | "tokensTitle" | "tokensLabel")> & {
313
343
  focus: () => void | undefined;
314
344
  blur: () => void | undefined;
315
345
  select: () => void | undefined;
@@ -17,6 +17,17 @@ export interface FileCardProps {
17
17
  type?: string;
18
18
  /** Icon to draw instead of the one the extension picks. */
19
19
  icon?: IconName;
20
+ /**
21
+ * The extension, for a `name` that does not carry one — a library that shows titles rather
22
+ * than file names. Given, it picks the glyph and the word under it instead of the name.
23
+ */
24
+ extension?: string;
25
+ /**
26
+ * Puts the extension in a corner of a picture too, not only under a glyph. A grid of
27
+ * thumbnails looks alike whether the files are JPEGs or PNGs, and the format is often
28
+ * exactly what somebody is looking for.
29
+ */
30
+ showExtension?: boolean;
20
31
  /** Draws the card as chosen. The choosing itself belongs to whatever holds the cards. */
21
32
  selected?: boolean;
22
33
  size?: FileCardSize;
@@ -30,6 +41,12 @@ export interface FileCardProps {
30
41
  * nothing to open for a `.zip`.
31
42
  */
32
43
  editable?: boolean;
44
+ /**
45
+ * Offers the view action — "show this picture large" — which the card only reports: a
46
+ * lightbox over one file is a poorer thing than one over the grid it is in, and only whoever
47
+ * holds the cards knows the grid. Pictures only.
48
+ */
49
+ viewable?: boolean;
33
50
  removable?: boolean;
34
51
  /**
35
52
  * Asks before deleting. On, because a file deleted from a grid of thumbnails is a file
@@ -57,6 +74,7 @@ export interface FileCardProps {
57
74
  saveLabel?: string;
58
75
  cancelLabel?: string;
59
76
  editLabel?: string;
77
+ viewLabel?: string;
60
78
  removeLabel?: string;
61
79
  /** The question `confirmRemove` asks. The file name is worth putting in it. */
62
80
  removeConfirmText?: string;
@@ -64,12 +82,18 @@ export interface FileCardProps {
64
82
  downloadLabel?: string;
65
83
  /** Shown on the copy action for a moment after it worked. */
66
84
  copiedLabel?: string;
85
+ /** The button the folded-up actions open from. */
86
+ moreLabel?: string;
87
+ /** The accessible name of the actions, said with the file's name in it. */
88
+ actionsLabel?: string;
67
89
  }
68
90
  export interface FileCardEmits {
69
91
  /** A new name was committed. The file is not renamed until the caller says so. */
70
92
  rename: [name: string];
71
93
  /** Open this picture in an editor. */
72
94
  edit: [];
95
+ /** Show this picture large. */
96
+ view: [];
73
97
  remove: [];
74
98
  /** The URL reached the clipboard. */
75
99
  copy: [url: string];
@@ -16,6 +16,8 @@ export declare const builtinIcons: {
16
16
  readonly edit: "<path d=\"M4 20h4L19.5 8.5a2.83 2.83 0 0 0-4-4L4 16v4Z\"/><path d=\"m14.5 5.5 4 4\"/>";
17
17
  readonly trash: "<path d=\"M4 7h16M10 7V5.5A1.5 1.5 0 0 1 11.5 4h1A1.5 1.5 0 0 1 14 5.5V7M6.5 7l.8 11.6a2 2 0 0 0 2 1.9h5.4a2 2 0 0 0 2-1.9L17.5 7\"/><path d=\"M10 11v5.5M14 11v5.5\"/>";
18
18
  readonly copy: "<rect x=\"8.5\" y=\"8.5\" width=\"11\" height=\"11\" rx=\"2.2\"/><path d=\"M15.5 8.5v-2a2 2 0 0 0-2-2h-7a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h2\"/>";
19
+ readonly clipboard: "<rect x=\"8.5\" y=\"2.8\" width=\"7\" height=\"3.6\" rx=\"1\"/><path d=\"M15.5 4.6H17a2 2 0 0 1 2 2V19a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6.6a2 2 0 0 1 2-2h1.5\"/>";
20
+ readonly 'clipboard-paste': "<rect x=\"8.5\" y=\"2.8\" width=\"7\" height=\"3.6\" rx=\"1\"/><path d=\"M15.5 4.6H17a2 2 0 0 1 2 2V19a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6.6a2 2 0 0 1 2-2h1.5\"/><path d=\"M12 10v7M9.2 14.4 12 17.2l2.8-2.8\"/>";
19
21
  readonly search: "<circle cx=\"11\" cy=\"11\" r=\"6.5\"/><path d=\"m16 16 4.5 4.5\"/>";
20
22
  readonly 'zoom-in': "<circle cx=\"11\" cy=\"11\" r=\"6.5\"/><path d=\"m16 16 4.5 4.5M8.5 11h5M11 8.5v5\"/>";
21
23
  readonly 'zoom-out': "<circle cx=\"11\" cy=\"11\" r=\"6.5\"/><path d=\"m16 16 4.5 4.5M8.5 11h5\"/>";
@@ -17,8 +17,8 @@ declare const __VLS_component: import('vue').DefineComponent<IndicatorProps, {},
17
17
  hidden: boolean;
18
18
  max: number;
19
19
  dot: boolean;
20
- showZero: boolean;
21
20
  placement: import('./types').IndicatorPlacement;
21
+ showZero: boolean;
22
22
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLSpanElement>;
23
23
  declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
24
24
  export default _default;
@@ -1,3 +1,4 @@
1
+ import { TokenOption } from '../../composables/useTokens';
1
2
  import { InputModelValue, InputProps } from './types';
2
3
  type __VLS_Props = InputProps;
3
4
  type __VLS_PublicProps = {
@@ -10,7 +11,9 @@ declare function __VLS_template(): {
10
11
  suffix?(_: {}): any;
11
12
  };
12
13
  refs: {
14
+ rootRef: HTMLDivElement;
13
15
  inputRef: HTMLInputElement;
16
+ mirrorRef: HTMLSpanElement;
14
17
  };
15
18
  rootEl: any;
16
19
  };
@@ -48,8 +51,13 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_PublicProps,
48
51
  maxlength: number;
49
52
  showCount: boolean;
50
53
  localized: boolean;
54
+ tokens: TokenOption[];
55
+ tokensTitle: string;
56
+ tokensLabel: string;
51
57
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
58
+ rootRef: HTMLDivElement;
52
59
  inputRef: HTMLInputElement;
60
+ mirrorRef: HTMLSpanElement;
53
61
  }, any>;
54
62
  declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
55
63
  export default _default;
@@ -1,8 +1,9 @@
1
1
  import { LocalizedFieldProps, LocalizedValue } from '../../composables/useLocalized';
2
+ import { TokenFieldProps } from '../../composables/useTokens';
2
3
  export type InputSize = 'sm' | 'md' | 'lg';
3
4
  export type InputStatus = 'default' | 'success' | 'warning' | 'error';
4
5
  export type InputNativeType = 'text' | 'password' | 'email' | 'number' | 'search' | 'tel' | 'url';
5
- export interface InputProps extends LocalizedFieldProps {
6
+ export interface InputProps extends LocalizedFieldProps, TokenFieldProps {
6
7
  /** Overrides the id generated for the control (and used by a WxFormItem label). */
7
8
  id?: string;
8
9
  /** `type` attribute of the underlying `<input>`. */
@@ -1,3 +1,4 @@
1
+ import { TokenOption } from '../../composables/useTokens';
1
2
  import { RichTextLabels, RichTextModelValue, RichTextProps, RichTextTool } from './types';
2
3
  type __VLS_Props = RichTextProps;
3
4
  type __VLS_PublicProps = {
@@ -27,14 +28,19 @@ declare const _default: import('vue').DefineComponent<__VLS_PublicProps, {
27
28
  ariaLabel: string;
28
29
  status: import('../..').ControlStatus;
29
30
  id: string;
31
+ inline: boolean;
30
32
  readonly: boolean;
31
33
  minHeight: string;
32
34
  localized: boolean;
35
+ tokens: TokenOption[];
36
+ tokensTitle: string;
37
+ tokensLabel: string;
33
38
  tools: RichTextTool[];
34
39
  pickImage: import('./types').RichTextImagePicker;
35
40
  accept: string[];
36
41
  labels: RichTextLabels;
37
42
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
43
+ rootRef: HTMLDivElement;
38
44
  fileInput: HTMLInputElement;
39
45
  }, any>;
40
46
  export default _default;
@@ -0,0 +1,18 @@
1
+ /**
2
+ * The HTML behind the editor, as a person reads and edits it.
3
+ *
4
+ * Tiptap writes the document as one line, which is unreadable past a paragraph. Blocks go on
5
+ * lines of their own here, and whatever holds other blocks indents them. Whitespace between
6
+ * blocks means nothing to the parser, so the document that comes back is the one that went in.
7
+ */
8
+ export declare function formatHtml(html: string, indent?: string): string;
9
+ /**
10
+ * What a document loses on its way into the editor: the tags and attributes the editor's schema
11
+ * does not know, each named once. ProseMirror drops them without a word, which is fine for a
12
+ * paste and not for markup a person has just typed by hand.
13
+ *
14
+ * Counted rather than merely listed, so that one `<span>` the editor keeps does not vouch for
15
+ * the nine it drops. What the editor adds — a paragraph around bare text, its own `rel` on a
16
+ * link — is not a loss and is not reported.
17
+ */
18
+ export declare function lostMarkup(before: string, after: string): string[];
@@ -4,6 +4,8 @@ import { RichTextTableTool, RichTextTool } from './types';
4
4
  * declared inside `<script setup>` — it is hoisted out of `setup()`.
5
5
  */
6
6
  export declare const DEFAULT_TOOLS: RichTextTool[];
7
+ /** What an inline field offers: the marks a line of a heading is ever given. */
8
+ export declare const INLINE_TOOLS: RichTextTool[];
7
9
  export declare const DEFAULT_ACCEPT: string[];
8
10
  export interface ToolMeta {
9
11
  label: string;
@@ -1,17 +1,24 @@
1
1
  import { ControlSize, ControlStatus } from '../../composables/useFormField';
2
2
  import { LocalizedFieldProps, LocalizedValue } from '../../composables/useLocalized';
3
- export type RichTextTool = 'bold' | 'italic' | 'strike' | 'code' | 'h2' | 'h3' | 'h4' | 'bulletList' | 'orderedList' | 'blockquote' | 'hr' | 'link' | 'table' | 'image' | 'youtube' | 'undo' | 'redo'
3
+ import { TokenFieldProps } from '../../composables/useTokens';
4
+ export type RichTextTool = 'bold' | 'italic'
5
+ /** The accent of an inline field: a bare `<span>` the site's styles colour. */
6
+ | 'accent' | 'strike' | 'code' | 'h2' | 'h3' | 'h4' | 'bulletList' | 'orderedList' | 'blockquote' | 'hr' | 'link' | 'table' | 'image' | 'youtube' | 'undo' | 'redo'
7
+ /** Shows the document as HTML to read and edit by hand. */
8
+ | 'source'
4
9
  /** A vertical rule between groups. */
5
10
  | 'divider';
6
11
  /** The keys of the second toolbar, the one that appears inside a table. */
7
12
  export type RichTextTableTool = 'addRowAfter' | 'addRowBefore' | 'addColumnAfter' | 'addColumnBefore' | 'deleteRow' | 'deleteColumn' | 'mergeOrSplit' | 'deleteTable';
8
13
  /**
9
14
  * Everything this editor says out loud: a tooltip on every button, the two lines of the link
10
- * bar, and the word shown while a file is going up.
15
+ * bar, the word shown while a file is going up, and the warning the source view gives.
11
16
  */
12
17
  export type RichTextLabelKey = Exclude<RichTextTool, 'divider'> | RichTextTableTool
13
18
  /** The accessible name of the toolbar itself. */
14
- | 'toolbar' | 'linkAddress' | 'youtubeAddress' | 'apply' | 'cancel' | 'uploading';
19
+ | 'toolbar' | 'linkAddress' | 'youtubeAddress' | 'apply' | 'cancel' | 'uploading'
20
+ /** The warning before the editor drops markup typed in the source, and its two answers. */
21
+ | 'sourceLoss' | 'sourceDrop' | 'sourceKeep';
15
22
  /**
16
23
  * What the editor calls its own buttons. It knows nothing about the panel it is opened in, so
17
24
  * whoever opens it translates it; a key left out stays English.
@@ -42,7 +49,7 @@ export type RichTextUpload = (file: File) => Promise<RichTextImage>;
42
49
  export type RichTextImagePicker = () => Promise<RichTextImage | string | null>;
43
50
  /** One language's HTML, or every language's when the field is localized. */
44
51
  export type RichTextModelValue = string | LocalizedValue;
45
- export interface RichTextProps extends LocalizedFieldProps {
52
+ export interface RichTextProps extends LocalizedFieldProps, TokenFieldProps {
46
53
  placeholder?: string;
47
54
  disabled?: boolean;
48
55
  readonly?: boolean;
@@ -51,6 +58,12 @@ export interface RichTextProps extends LocalizedFieldProps {
51
58
  id?: string;
52
59
  /** Accessible label used when there is no visible `<label>`. */
53
60
  ariaLabel?: string;
61
+ /**
62
+ * One line of text with a few marks instead of a document: no paragraphs, no Enter, and the
63
+ * value is the bare line — `Deeply heard<span>.</span> Gently guided` — for a heading or a
64
+ * caption that carries a touch of markup. The toolbar defaults to bold, italic and accent.
65
+ */
66
+ inline?: boolean;
54
67
  /** Height of the editing area before it starts growing. */
55
68
  minHeight?: string;
56
69
  /** Which buttons the toolbar shows, in order. */
@@ -37,6 +37,7 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_PublicProps,
37
37
  threshold: number;
38
38
  touch: boolean;
39
39
  clickSelect: boolean;
40
+ dragItems: boolean;
40
41
  edgeScroll: number;
41
42
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
42
43
  root: HTMLDivElement;
@@ -18,6 +18,12 @@ export interface SelectionAreaProps {
18
18
  * because on a touch screen a drag means scroll — a tap still picks either way.
19
19
  */
20
20
  touch?: boolean;
21
+ /**
22
+ * Items can be dragged somewhere else — onto a folder, into another list — with the
23
+ * browser's own drag and drop. A press on an item then never becomes a box (the drag is
24
+ * the item's), and a box starts from the background only. A click still picks.
25
+ */
26
+ dragItems?: boolean;
21
27
  /** How near the scroller's edge the pointer scrolls it, in pixels. `0` never does. */
22
28
  edgeScroll?: number;
23
29
  disabled?: boolean;
@@ -175,6 +175,8 @@ export interface TableProps<T = TableRow> {
175
175
  /** How long typing settles before `search` fires. Zero reports every keystroke. */
176
176
  searchDebounce?: number;
177
177
  loading?: boolean;
178
+ /** The words beside the spinner while `loading`; English by default, translated by the caller. */
179
+ loadingText?: string;
178
180
  /** Shown in place of the rows when there are none. */
179
181
  emptyText?: string;
180
182
  /** Accessible name of each row's checkbox. */
@@ -1,3 +1,4 @@
1
+ import { TokenOption } from '../../composables/useTokens';
1
2
  import { TextareaModelValue, TextareaProps } from './types';
2
3
  type __VLS_Props = TextareaProps;
3
4
  type __VLS_PublicProps = {
@@ -32,9 +33,14 @@ declare const _default: import('vue').DefineComponent<__VLS_PublicProps, {
32
33
  maxlength: number;
33
34
  showCount: boolean;
34
35
  localized: boolean;
36
+ tokens: TokenOption[];
37
+ tokensTitle: string;
38
+ tokensLabel: string;
35
39
  rows: number;
36
40
  autosize: boolean | import('./types').AutosizeOptions;
37
41
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
42
+ rootRef: HTMLDivElement;
38
43
  textareaRef: HTMLTextAreaElement;
44
+ mirrorRef: HTMLDivElement;
39
45
  }, any>;
40
46
  export default _default;
@@ -1,10 +1,11 @@
1
1
  import { ControlSize, ControlStatus } from '../../composables/useFormField';
2
2
  import { LocalizedFieldProps, LocalizedValue } from '../../composables/useLocalized';
3
+ import { TokenFieldProps } from '../../composables/useTokens';
3
4
  export interface AutosizeOptions {
4
5
  minRows?: number;
5
6
  maxRows?: number;
6
7
  }
7
- export interface TextareaProps extends LocalizedFieldProps {
8
+ export interface TextareaProps extends LocalizedFieldProps, TokenFieldProps {
8
9
  size?: ControlSize;
9
10
  status?: ControlStatus;
10
11
  id?: string;
@@ -16,7 +16,53 @@ declare function __VLS_template(): {
16
16
  /** The tip itself, when the text is not enough. */
17
17
  content?: () => unknown;
18
18
  };
19
- refs: {};
19
+ refs: {
20
+ trigger: ({
21
+ $: import('vue').ComponentInternalInstance;
22
+ $data: {};
23
+ $props: {
24
+ readonly reference?: import('reka-ui').ReferenceElement | undefined;
25
+ readonly asChild?: boolean | undefined;
26
+ readonly as?: (import('reka-ui').AsTag | import('vue').Component) | undefined;
27
+ } & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps;
28
+ $attrs: import('vue').Attrs;
29
+ $refs: {
30
+ [x: string]: unknown;
31
+ };
32
+ $slots: Readonly<{
33
+ [name: string]: import('vue').Slot<any> | undefined;
34
+ }>;
35
+ $root: import('vue').ComponentPublicInstance | null;
36
+ $parent: import('vue').ComponentPublicInstance | null;
37
+ $host: Element | null;
38
+ $emit: (event: string, ...args: any[]) => void;
39
+ $el: any;
40
+ $options: import('vue').ComponentOptionsBase<Readonly<import('reka-ui').TooltipTriggerProps> & Readonly<{}>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, {}, {}, string, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, import('vue').ComponentProvideOptions> & {
41
+ beforeCreate?: (() => void) | (() => void)[];
42
+ created?: (() => void) | (() => void)[];
43
+ beforeMount?: (() => void) | (() => void)[];
44
+ mounted?: (() => void) | (() => void)[];
45
+ beforeUpdate?: (() => void) | (() => void)[];
46
+ updated?: (() => void) | (() => void)[];
47
+ activated?: (() => void) | (() => void)[];
48
+ deactivated?: (() => void) | (() => void)[];
49
+ beforeDestroy?: (() => void) | (() => void)[];
50
+ beforeUnmount?: (() => void) | (() => void)[];
51
+ destroyed?: (() => void) | (() => void)[];
52
+ unmounted?: (() => void) | (() => void)[];
53
+ renderTracked?: ((e: import('vue').DebuggerEvent) => void) | ((e: import('vue').DebuggerEvent) => void)[];
54
+ renderTriggered?: ((e: import('vue').DebuggerEvent) => void) | ((e: import('vue').DebuggerEvent) => void)[];
55
+ errorCaptured?: ((err: unknown, instance: import('vue').ComponentPublicInstance | null, info: string) => boolean | void) | ((err: unknown, instance: import('vue').ComponentPublicInstance | null, info: string) => boolean | void)[];
56
+ };
57
+ $forceUpdate: () => void;
58
+ $nextTick: typeof import('vue').nextTick;
59
+ $watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (...args: [R, R, import('@vue/reactivity').OnCleanup]) => any : (...args: [any, any, import('@vue/reactivity').OnCleanup]) => any, options?: import('vue').WatchOptions): import('vue').WatchStopHandle;
60
+ } & Readonly<{}> & Omit<Readonly<import('reka-ui').TooltipTriggerProps> & Readonly<{}>, never> & {} & import('vue').ComponentCustomProperties & {} & {
61
+ $slots: {
62
+ default?: (props: {}) => any;
63
+ };
64
+ }) | null;
65
+ };
20
66
  rootEl: any;
21
67
  };
22
68
  type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
@@ -34,7 +80,53 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_PublicProps,
34
80
  arrow: boolean;
35
81
  maxWidth: number | string;
36
82
  teleport: boolean;
37
- }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
83
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
84
+ trigger: ({
85
+ $: import('vue').ComponentInternalInstance;
86
+ $data: {};
87
+ $props: {
88
+ readonly reference?: import('reka-ui').ReferenceElement | undefined;
89
+ readonly asChild?: boolean | undefined;
90
+ readonly as?: (import('reka-ui').AsTag | import('vue').Component) | undefined;
91
+ } & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps;
92
+ $attrs: import('vue').Attrs;
93
+ $refs: {
94
+ [x: string]: unknown;
95
+ };
96
+ $slots: Readonly<{
97
+ [name: string]: import('vue').Slot<any> | undefined;
98
+ }>;
99
+ $root: import('vue').ComponentPublicInstance | null;
100
+ $parent: import('vue').ComponentPublicInstance | null;
101
+ $host: Element | null;
102
+ $emit: (event: string, ...args: any[]) => void;
103
+ $el: any;
104
+ $options: import('vue').ComponentOptionsBase<Readonly<import('reka-ui').TooltipTriggerProps> & Readonly<{}>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, {}, {}, string, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, import('vue').ComponentProvideOptions> & {
105
+ beforeCreate?: (() => void) | (() => void)[];
106
+ created?: (() => void) | (() => void)[];
107
+ beforeMount?: (() => void) | (() => void)[];
108
+ mounted?: (() => void) | (() => void)[];
109
+ beforeUpdate?: (() => void) | (() => void)[];
110
+ updated?: (() => void) | (() => void)[];
111
+ activated?: (() => void) | (() => void)[];
112
+ deactivated?: (() => void) | (() => void)[];
113
+ beforeDestroy?: (() => void) | (() => void)[];
114
+ beforeUnmount?: (() => void) | (() => void)[];
115
+ destroyed?: (() => void) | (() => void)[];
116
+ unmounted?: (() => void) | (() => void)[];
117
+ renderTracked?: ((e: import('vue').DebuggerEvent) => void) | ((e: import('vue').DebuggerEvent) => void)[];
118
+ renderTriggered?: ((e: import('vue').DebuggerEvent) => void) | ((e: import('vue').DebuggerEvent) => void)[];
119
+ errorCaptured?: ((err: unknown, instance: import('vue').ComponentPublicInstance | null, info: string) => boolean | void) | ((err: unknown, instance: import('vue').ComponentPublicInstance | null, info: string) => boolean | void)[];
120
+ };
121
+ $forceUpdate: () => void;
122
+ $nextTick: typeof import('vue').nextTick;
123
+ $watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (...args: [R, R, import('@vue/reactivity').OnCleanup]) => any : (...args: [any, any, import('@vue/reactivity').OnCleanup]) => any, options?: import('vue').WatchOptions): import('vue').WatchStopHandle;
124
+ } & Readonly<{}> & Omit<Readonly<import('reka-ui').TooltipTriggerProps> & Readonly<{}>, never> & {} & import('vue').ComponentCustomProperties & {} & {
125
+ $slots: {
126
+ default?: (props: {}) => any;
127
+ };
128
+ }) | null;
129
+ }, any>;
38
130
  declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
39
131
  export default _default;
40
132
  type __VLS_WithTemplateSlots<T, S> = T & {
@@ -85,6 +85,10 @@ export interface TreeProps<T = TreeNode> {
85
85
  emptyText?: string;
86
86
  /** What the drag handle is called, before the name of the node it holds. */
87
87
  dragLabel?: string;
88
+ /** What the button that opens a branch is called, before the node's name. */
89
+ expandLabel?: string;
90
+ /** What the same button is called while the branch is open. */
91
+ collapseLabel?: string;
88
92
  /** Accessible name for the tree. */
89
93
  ariaLabel?: string;
90
94
  }
@@ -0,0 +1,26 @@
1
+ import { ComputedRef, InjectionKey, Ref } from 'vue';
2
+ /** An IANA zone such as `'Asia/Hong_Kong'`, or something that reads one — or nothing yet. */
3
+ export type DateTimezoneSource = string | Ref<string | null | undefined> | ComputedRef<string | null | undefined>;
4
+ /**
5
+ * The zone every date picker below shows and takes a *moment* in.
6
+ *
7
+ * A moment travels with its offset (`2026-10-12T09:30:00+08:00`), and without a zone the
8
+ * picker draws it on the reader's own clock: an event at half past nine in Hong Kong reads
9
+ * 04:30 to an editor in Moscow, and whatever they pick goes back with Moscow's offset. A site
10
+ * has one clock — the one its events, opening hours and publication times are written in — so
11
+ * a panel provides that zone here and every picker of a moment follows it. A `timezone` prop on
12
+ * the picker still wins over what is provided.
13
+ */
14
+ export declare const dateTimezoneKey: InjectionKey<DateTimezoneSource>;
15
+ /**
16
+ * Tells every date picker below which zone a moment is shown and entered in.
17
+ *
18
+ * ```ts
19
+ * app.provide(dateTimezoneKey, computed(() => manifest.value?.timezone))
20
+ * ```
21
+ */
22
+ export declare function provideDateTimezone(timezone: DateTimezoneSource): void;
23
+ /** The zone: the `timezone` prop, then the application's, then none — the reader's own. */
24
+ export declare function useDateTimezone(timezone: () => string | undefined): ComputedRef<string | undefined>;
25
+ /** The zone this browser keeps its clock in, or an empty string where it will not say. */
26
+ export declare function readersTimezone(): string;