@nexdom/uimed-vue 2.0.0-beta.5 → 2.0.0-beta.51

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.
@@ -1,4 +1,4 @@
1
- import { t as ColorVariant } from "./types-BPXXtbmW.js";
1
+ import { r as ColorVariant, t as ButtonProps } from "./types-BbWo6RIy.js";
2
2
  import { RouteLocationRaw } from "vue-router";
3
3
  //#region src/components/app-bar/types.d.ts
4
4
  /**
@@ -43,13 +43,15 @@ interface AppBarNotification {
43
43
  */
44
44
  read?: boolean;
45
45
  /**
46
- * Date the notification was generated.
46
+ * Free text telling when the notification was generated, shown as is (e.g.
47
+ * `"10:30"`, `"Ontem"` or `"28/09/2026"`). Hidden when omitted or empty.
47
48
  */
48
- date?: Date;
49
+ when?: string;
49
50
  }
50
51
  interface AppBarUserProps {
51
52
  /**
52
- * Major identifier, like the user full name.
53
+ * Major identifier, like the user full name. Without an `img`, the
54
+ * avatar shows its initials (e.g. `"RP"` for `"Rafael Perini"`).
53
55
  */
54
56
  title?: string;
55
57
  /**
@@ -57,7 +59,8 @@ interface AppBarUserProps {
57
59
  */
58
60
  subtitle?: string;
59
61
  /**
60
- * URL leading to a user picture.
62
+ * URL leading to a user picture. When omitted, the avatar shows the initials
63
+ * of the `title`, or a generic icon when there's no title either.
61
64
  */
62
65
  img?: string;
63
66
  /**
@@ -92,6 +95,84 @@ interface Option {
92
95
  action?: () => void;
93
96
  }
94
97
  //#endregion
98
+ //#region src/consts/icons.d.ts
99
+ /**
100
+ * SVG path of each icon, by its name, in the order the "Ícones" guide page lists them. The paths
101
+ * come from `@mdi/js`, which exports one constant per icon, so the apps' bundles only take the
102
+ * icons used here.
103
+ *
104
+ * Every name can be passed to the components that accept an icon (e.g. `UIconButton` and the items
105
+ * of the navigation menu). The map is also the set of icon aliases of the underlying components,
106
+ * which draw some icons by name on their own (e.g. `close`, the arrows of the pagination and the
107
+ * checkbox marks): those names must match the aliases exactly, and a component that renders an
108
+ * alias missing here draws an empty icon. The unit tests of `src/consts/icons.ts` check each
109
+ * component that renders one.
110
+ *
111
+ * - The first names describe the icon's drawing. A name ending in `Alternative` is an alternative
112
+ * version of the same drawing (currently, outlined).
113
+ * - The others describe what the components use the icon for.
114
+ *
115
+ * To add an icon, add it here and to the list on the "Ícones" guide page (`docs/guide/icons.md`).
116
+ */
117
+ declare const icons: {
118
+ home: string;
119
+ homeAlternative: string;
120
+ account: string;
121
+ accountAlternative: string;
122
+ accountGroup: string;
123
+ accountGroupAlternative: string;
124
+ calendar: string;
125
+ calendarAlternative: string;
126
+ clipboardText: string;
127
+ clipboardTextAlternative: string;
128
+ fileDocument: string;
129
+ fileDocumentAlternative: string;
130
+ flask: string;
131
+ flaskAlternative: string;
132
+ folder: string;
133
+ folderAlternative: string;
134
+ chartBox: string;
135
+ chartBoxAlternative: string;
136
+ wallet: string;
137
+ walletAlternative: string;
138
+ cog: string;
139
+ cogAlternative: string;
140
+ stethoscope: string;
141
+ pill: string;
142
+ hospital: string;
143
+ help: string;
144
+ notifications: string;
145
+ menu: string;
146
+ search: string;
147
+ showPassword: string;
148
+ hidePassword: string;
149
+ close: string;
150
+ clear: string;
151
+ dropdown: string;
152
+ subgroup: string;
153
+ expand: string;
154
+ collapse: string;
155
+ prev: string;
156
+ next: string;
157
+ checkboxOn: string;
158
+ checkboxOff: string;
159
+ success: string;
160
+ info: string;
161
+ warning: string;
162
+ error: string;
163
+ };
164
+ //#endregion
165
+ //#region src/consts/types.d.ts
166
+ /**
167
+ * Name of an icon available to the components that accept one (e.g. `UIconButton` and the items
168
+ * of the navigation menu): the content icons, such as `home` and `calendar`, and the icons the
169
+ * components draw on their own, such as `close` and `search`. The full list, with a preview of
170
+ * each icon, is on the "Ícones" guide page.
171
+ *
172
+ * @see {@link https://nexdom-healthtech.github.io/uimed-vue/guide/icons | Icons Guide}
173
+ */
174
+ type Icon = keyof typeof icons;
175
+ //#endregion
95
176
  //#region src/components/navigation-menu/types.d.ts
96
177
  /**
97
178
  * Props exposed by the {@link NavigationMenu} component.
@@ -113,6 +194,13 @@ type NavigationMenuParentItem = {
113
194
  * Text to present for the group.
114
195
  */
115
196
  description: string;
197
+ /**
198
+ * Icon shown before the group's description. One of the names listed on the "Ícones" guide
199
+ * page.
200
+ *
201
+ * @see {@link https://nexdom-healthtech.github.io/uimed-vue/guide/icons | Icons Guide}
202
+ */
203
+ icon?: Icon;
116
204
  /**
117
205
  * Child {@link NavigationMenuItem} list.
118
206
  */
@@ -123,6 +211,13 @@ interface NavigationMenuItem {
123
211
  * Text to present for the item.
124
212
  */
125
213
  description: string;
214
+ /**
215
+ * Icon shown before the item's description. One of the names listed on the "Ícones" guide
216
+ * page.
217
+ *
218
+ * @see {@link https://nexdom-healthtech.github.io/uimed-vue/guide/icons | Icons Guide}
219
+ */
220
+ icon?: Icon;
126
221
  /**
127
222
  * Route to navigate when item is clicked.
128
223
  */
@@ -133,6 +228,22 @@ interface NavigationMenuItem {
133
228
  action?: () => void;
134
229
  }
135
230
  //#endregion
231
+ //#region src/components/footer/types.d.ts
232
+ /**
233
+ * Props of the footer shown by the {@link Main} component.
234
+ */
235
+ type FooterProps = {
236
+ /**
237
+ * Text shown in the footer, e.g. the application version ("Versão 1.4.2").
238
+ * The footer is hidden when it's empty or omitted.
239
+ */
240
+ description?: string;
241
+ /**
242
+ * Component id to use on automated tests.
243
+ */
244
+ dataTestid?: string;
245
+ };
246
+ //#endregion
136
247
  //#region src/components/main/types.d.ts
137
248
  /**
138
249
  * Props exposed by the {@link Main} component.
@@ -144,6 +255,9 @@ type MainProps = {
144
255
  dataTestid?: string;
145
256
  /**
146
257
  * URL to logo image.
258
+ *
259
+ * The logo is decorative (`alt=""`): screen readers identify the app by
260
+ * the app bar title (`appBar.title`).
147
261
  */
148
262
  logo?: string;
149
263
  /**
@@ -154,6 +268,35 @@ type MainProps = {
154
268
  * Navigation menu properties.
155
269
  */
156
270
  navigationMenu?: NavigationMenuProps;
271
+ /**
272
+ * Footer properties. The footer is fixed at the bottom of the screen and
273
+ * is hidden when it's omitted or its `description` is empty.
274
+ *
275
+ * @example
276
+ * ```vue
277
+ * <u-main :footer="{ description: `Versão ${version}` }" />
278
+ * ```
279
+ */
280
+ footer?: FooterProps;
281
+ /**
282
+ * Shows skeleton loaders in place of the user-related parts of the app bar
283
+ * and of the navigation menu items while their data is being loaded.
284
+ * The main content (default slot) isn't affected.
285
+ * @default false
286
+ */
287
+ loading?: boolean;
288
+ /**
289
+ * Applies a color to the background of the whole app, e.g. on landing pages. Text placed
290
+ * directly on the background takes the color the theme pairs with it (white or black), while
291
+ * the app bar, the footer, sections and dialogs keep their own backgrounds. When omitted, the
292
+ * app uses the theme's default background.
293
+ *
294
+ * @example
295
+ * ```vue
296
+ * <u-main background="primary" />
297
+ * ```
298
+ */
299
+ background?: ColorVariant;
157
300
  };
158
301
  //#endregion
159
302
  //#region src/components/main/main.vue.d.ts
@@ -171,8 +314,8 @@ type MainProps = {
171
314
  *
172
315
  * @see {@link https://nexdom-healthtech.github.io/uimed-vue/guide/components/main | Main Guide}
173
316
  */
174
- declare const _default$5: typeof __VLS_export$10;
175
- declare const __VLS_export$10: __VLS_WithSlots$7<import("vue", { with: { "resolution-mode": "import" } }).DefineComponent<MainProps & {
317
+ declare const _default$14: typeof __VLS_export$20;
318
+ declare const __VLS_export$20: __VLS_WithSlots$11<import("vue", { with: { "resolution-mode": "import" } }).DefineComponent<MainProps & {
176
319
  notificationsOpen?: boolean;
177
320
  }, {}, {}, {}, {}, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, {
178
321
  "update:notificationsOpen": (value: boolean) => any;
@@ -183,84 +326,91 @@ declare const __VLS_export$10: __VLS_WithSlots$7<import("vue", { with: { "resolu
183
326
  }>, {}, {}, {}, {}, string, import("vue", { with: { "resolution-mode": "import" } }).ComponentProvideOptions, false, {}, any>, {
184
327
  default?: (props: {}) => any;
185
328
  }>;
186
- type __VLS_WithSlots$7<T, S> = T & {
329
+ type __VLS_WithSlots$11<T, S> = T & {
330
+ new (): {
331
+ $slots: S;
332
+ };
333
+ };
334
+ //#endregion
335
+ //#region src/components/button/button.vue.d.ts
336
+ /**
337
+ * Button component to be used throughout the application.
338
+ *
339
+ * @example
340
+ * ```vue
341
+ * <template>
342
+ * <u-button color="danger" @click="onClick">
343
+ * Confirmar
344
+ * </u-button>
345
+ * </template>
346
+ * ```
347
+ *
348
+ * @see {@link https://nexdom-healthtech.github.io/uimed-vue/guide/components/button | Button Guide}
349
+ */
350
+ declare const _default$1: typeof __VLS_export$19;
351
+ declare const __VLS_export$19: __VLS_WithSlots$10<import("vue", { with: { "resolution-mode": "import" } }).DefineComponent<ButtonProps, {}, {}, {}, {}, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, {} & {
352
+ click: (event: MouseEvent) => any;
353
+ }, string, import("vue", { with: { "resolution-mode": "import" } }).PublicProps, Readonly<ButtonProps> & Readonly<{
354
+ onClick?: ((event: MouseEvent) => any) | undefined;
355
+ }>, {}, {}, {}, {}, string, import("vue", { with: { "resolution-mode": "import" } }).ComponentProvideOptions, false, {}, any>, {
356
+ default?: (props: {}) => any;
357
+ }>;
358
+ type __VLS_WithSlots$10<T, S> = T & {
187
359
  new (): {
188
360
  $slots: S;
189
361
  };
190
362
  };
191
363
  //#endregion
192
- //#region src/components/button/types.d.ts
193
- type ButtonVariant = "primary" | "secondary" | "ghost";
364
+ //#region src/components/icon-button/types.d.ts
194
365
  /**
195
- * Props exposed by the {@link Button} component.
366
+ * Props exposed by the {@link IconButton} component.
196
367
  */
197
- type ButtonProps = {
368
+ type IconButtonProps = {
198
369
  /**
199
- * Applies a distinct style variation to the button.
200
- * One of `primary`, `secondary`, or `ghost`.
201
- * @default "primary"
370
+ * Icon drawn on the button. One of the names listed on the "Ícones" guide page. Assistive
371
+ * technologies ignore it and read `label` instead.
372
+ *
373
+ * @see {@link https://nexdom-healthtech.github.io/uimed-vue/guide/icons | Icons Guide}
202
374
  */
203
- variant?: ButtonVariant;
375
+ icon: Icon;
204
376
  /**
205
- * Applies a distinct behavior to the button.
206
- * One of `button` or `submit`.
207
- * @default "button"
377
+ * Accessible name of the button, read by assistive technologies instead of the icon. Describe
378
+ * the action the button performs (e.g. "Editar paciente"), not the icon's drawing (e.g.
379
+ * "Lápis").
208
380
  */
209
- type?: "submit" | "button";
381
+ label: string;
210
382
  /**
211
383
  * Applies a color to the button.
212
384
  * One of `primary`, `secondary`, `positive`, `informative`, `caution`, or `danger`.
213
385
  * @default "primary"
214
386
  */
215
387
  color?: ColorVariant;
216
- /**
217
- * Removes the ability to click or target the button.
218
- * @default false
219
- */
220
- disabled?: boolean;
221
- /**
222
- * Displays a loading indicator on the button, disabling interaction.
223
- * @default false
224
- */
225
- loading?: boolean;
226
- /**
227
- * Associated [form](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Attributes/form) id.
228
- */
229
- form?: string;
230
388
  /**
231
389
  * Component id to use on automated tests.
232
390
  */
233
391
  dataTestid?: string;
234
392
  };
235
393
  //#endregion
236
- //#region src/components/button/button.vue.d.ts
394
+ //#region src/components/icon-button/icon-button.vue.d.ts
237
395
  /**
238
- * Button component to be used throughout the application.
396
+ * Button that shows only an icon, for actions whose icon is enough to identify them, such as
397
+ * editing a record of a list. Its `label` is the name assistive technologies read.
239
398
  *
240
399
  * @example
241
400
  * ```vue
242
401
  * <template>
243
- * <u-button color="danger" @click="onClick">
244
- * Confirmar
245
- * </u-button>
402
+ * <u-icon-button icon="cog" label="Configurações" @click="onClick" />
246
403
  * </template>
247
404
  * ```
248
405
  *
249
- * @see {@link https://nexdom-healthtech.github.io/uimed-vue/guide/components/button | Button Guide}
406
+ * @see {@link https://nexdom-healthtech.github.io/uimed-vue/guide/components/icon-button | IconButton Guide}
250
407
  */
251
- declare const _default: typeof __VLS_export$9;
252
- declare const __VLS_export$9: __VLS_WithSlots$6<import("vue", { with: { "resolution-mode": "import" } }).DefineComponent<ButtonProps, {}, {}, {}, {}, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, {} & {
408
+ declare const _default$11: typeof __VLS_export$18;
409
+ declare const __VLS_export$18: import("vue", { with: { "resolution-mode": "import" } }).DefineComponent<IconButtonProps, {}, {}, {}, {}, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, {} & {
253
410
  click: (event: MouseEvent) => any;
254
- }, string, import("vue", { with: { "resolution-mode": "import" } }).PublicProps, Readonly<ButtonProps> & Readonly<{
411
+ }, string, import("vue", { with: { "resolution-mode": "import" } }).PublicProps, Readonly<IconButtonProps> & Readonly<{
255
412
  onClick?: ((event: MouseEvent) => any) | undefined;
256
- }>, {}, {}, {}, {}, string, import("vue", { with: { "resolution-mode": "import" } }).ComponentProvideOptions, false, {}, any>, {
257
- default?: (props: {}) => any;
258
- }>;
259
- type __VLS_WithSlots$6<T, S> = T & {
260
- new (): {
261
- $slots: S;
262
- };
263
- };
413
+ }>, {}, {}, {}, {}, string, import("vue", { with: { "resolution-mode": "import" } }).ComponentProvideOptions, false, {}, any>;
264
414
  //#endregion
265
415
  //#region src/components/inputs/text-field/types.d.ts
266
416
  type TextFieldVariant = "primary" | "secondary";
@@ -278,6 +428,10 @@ type TextFieldProps = {
278
428
  /**
279
429
  * Applies a distinct behavior to the field.
280
430
  * One of `text`, `phone`, `email`, `url`, `password` or `search`.
431
+ *
432
+ * With `password`, the field hides its value and shows a "Mostrar senha"
433
+ * button that toggles between showing and hiding it. The value hides again
434
+ * when the button is pressed again or the type changes.
281
435
  * @default "text"
282
436
  */
283
437
  type?: TextFieldType;
@@ -287,7 +441,9 @@ type TextFieldProps = {
287
441
  */
288
442
  disabled?: boolean;
289
443
  /**
290
- * Displays a loading indicator on the input.
444
+ * Displays a loading indicator on the input. The field keeps its label as
445
+ * accessible name and is marked as busy, and assistive technologies ignore
446
+ * the indicator.
291
447
  * @default false
292
448
  */
293
449
  loading?: boolean;
@@ -326,6 +482,120 @@ type TextFieldProps = {
326
482
  dataTestid?: string;
327
483
  };
328
484
  //#endregion
485
+ //#region src/components/inputs/autocomplete-field/types.d.ts
486
+ /**
487
+ * Autocomplete/Combobox item type that can be either a string or an object with label and value.
488
+ */
489
+ type AutocompleteItem<T = string> = string | {
490
+ label: string;
491
+ value: T;
492
+ };
493
+ /**
494
+ * Props exposed by the {@link AutocompleteField} component.
495
+ */
496
+ type AutocompleteFieldProps<T = string, Multiple extends boolean = false> = {
497
+ /**
498
+ * Applies a distinct style variation to the field.
499
+ * One of `primary` or `secondary`.
500
+ * @default "primary"
501
+ */
502
+ variant?: TextFieldVariant;
503
+ /**
504
+ * Removes the ability to click or target the field.
505
+ * @default false
506
+ */
507
+ disabled?: boolean;
508
+ /**
509
+ * Displays a loading indicator on the input. The field keeps its label as
510
+ * accessible name and is marked as busy, and assistive technologies ignore
511
+ * the indicator.
512
+ * @default false
513
+ */
514
+ loading?: boolean;
515
+ /**
516
+ * Displays clear action.
517
+ * @default false
518
+ */
519
+ clearable?: boolean;
520
+ /**
521
+ * Prevent value changes.
522
+ * @default false
523
+ */
524
+ readonly?: boolean;
525
+ /**
526
+ * Add rules to require field to be filled before form submission.
527
+ * @default false
528
+ */
529
+ required?: boolean;
530
+ /**
531
+ * Field label.
532
+ */
533
+ label?: string;
534
+ /**
535
+ * Field placeholder.
536
+ */
537
+ placeholder?: string;
538
+ /**
539
+ * Field message to show and direct user to fill field correctly.
540
+ *
541
+ * This message will be replaced when there's an error message to be shown.
542
+ */
543
+ hint?: string;
544
+ /**
545
+ * Component id to use on automated tests.
546
+ */
547
+ dataTestid?: string;
548
+ /**
549
+ * Used to prevent user from adding new values to the list.
550
+ * @default false
551
+ */
552
+ strict?: boolean;
553
+ /**
554
+ * Allow selecting/typing more than one value.
555
+ *
556
+ * Passing the literal `true` narrows `modelValue` and `update:modelValue`
557
+ * to `T[]` instead of `T`.
558
+ * @default false
559
+ */
560
+ multiple?: Multiple;
561
+ /**
562
+ * List of autocomplete items. Can be strings or objects with label and value.
563
+ * @default []
564
+ */
565
+ items?: AutocompleteItem<T>[];
566
+ };
567
+ //#endregion
568
+ //#region src/components/inputs/autocomplete-field/autocomplete-field.vue.d.ts
569
+ /**
570
+ * Select field component to be used throughout the application.
571
+ *
572
+ * @example
573
+ * ```vue
574
+ * <template>
575
+ * <u-autocomplete-field label="Country" :items="['Brazil', 'Argentina']" />
576
+ * </template>
577
+ * ```
578
+ *
579
+ * @see {@link https://nexdom-healthtech.github.io/uimed-vue/guide/components/autocomplete-field | AutocompleteField Guide}
580
+ */
581
+ declare const _default: typeof __VLS_export$17;
582
+ declare const __VLS_export$17: <T = string, Multiple extends boolean = false>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal$2<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
583
+ props: import("vue").PublicProps & __VLS_PrettifyLocal$2<(AutocompleteFieldProps<T, Multiple> & {
584
+ modelValue?: Multiple extends true ? T[] : T;
585
+ }) & {
586
+ "onUpdate:modelValue"?: ((value: Multiple extends true ? T[] : T | undefined) => any) | undefined;
587
+ }> & (typeof globalThis extends {
588
+ __VLS_PROPS_FALLBACK: infer P;
589
+ } ? P : {});
590
+ expose: (exposed: {}) => void;
591
+ attrs: any;
592
+ slots: {};
593
+ emit: (event: "update:modelValue", value: Multiple extends true ? T[] : T | undefined) => void;
594
+ }>) => import("vue").VNode & {
595
+ __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
596
+ };
597
+ type __VLS_PrettifyLocal$2<T> = (T extends any ? { [K in keyof T]: T[K]; } : { [K in keyof T as K]: T[K]; }) & {};
598
+ //#endregion
329
599
  //#region src/components/inputs/text-field/text-field.vue.d.ts
330
600
  /**
331
601
  * Text field component to be used throughout the application.
@@ -339,8 +609,8 @@ type TextFieldProps = {
339
609
  *
340
610
  * @see {@link https://nexdom-healthtech.github.io/uimed-vue/guide/components/text-field | TextField Guide}
341
611
  */
342
- declare const _default$10: typeof __VLS_export$8;
343
- declare const __VLS_export$8: import("vue", { with: { "resolution-mode": "import" } }).DefineComponent<TextFieldProps & {
612
+ declare const _default$20: typeof __VLS_export$16;
613
+ declare const __VLS_export$16: import("vue", { with: { "resolution-mode": "import" } }).DefineComponent<TextFieldProps & {
344
614
  modelValue?: string;
345
615
  }, {}, {}, {}, {}, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, {
346
616
  "update:modelValue": (value: string) => any;
@@ -402,9 +672,9 @@ type CheckboxProps<T = boolean> = {
402
672
  *
403
673
  * @see {@link https://nexdom-healthtech.github.io/uimed-vue/guide/components/checkbox | Checkbox Guide}
404
674
  */
405
- declare const _default$1: typeof __VLS_export$7;
406
- declare const __VLS_export$7: <T = any>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
407
- props: import("vue").PublicProps & __VLS_PrettifyLocal<(CheckboxProps<boolean | T> & {
675
+ declare const _default$2: typeof __VLS_export$15;
676
+ declare const __VLS_export$15: <T = any>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal$1<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
677
+ props: import("vue").PublicProps & __VLS_PrettifyLocal$1<(CheckboxProps<boolean | T> & {
408
678
  modelValue?: T;
409
679
  }) & {
410
680
  "onUpdate:modelValue"?: ((value: T) => any) | undefined;
@@ -418,49 +688,378 @@ declare const __VLS_export$7: <T = any>(__VLS_props: NonNullable<Awaited<typeof
418
688
  }>) => import("vue").VNode & {
419
689
  __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
420
690
  };
421
- type __VLS_PrettifyLocal<T> = (T extends any ? { [K in keyof T]: T[K]; } : { [K in keyof T as K]: T[K]; }) & {};
691
+ type __VLS_PrettifyLocal$1<T> = (T extends any ? { [K in keyof T]: T[K]; } : { [K in keyof T as K]: T[K]; }) & {};
422
692
  //#endregion
423
- //#region src/components/grid/container/types.d.ts
693
+ //#region src/components/inputs/date-time-field/types.d.ts
694
+ type DateTimeFieldVariant = TextFieldVariant;
695
+ type DateTimeFieldType = "date" | "time" | "datetime";
424
696
  /**
425
- * Props exposed by the {@link Container} component.
697
+ * Props exposed by the {@link DateTimeField} component.
426
698
  */
427
- type ContainerProps = {
699
+ type DateTimeFieldProps = {
700
+ /**
701
+ * Applies a distinct style variation to the field.
702
+ * One of `primary` or `secondary`.
703
+ * @default "primary"
704
+ */
705
+ variant?: DateTimeFieldVariant;
706
+ /**
707
+ * Defines which pickers are available and the format of the value.
708
+ *
709
+ * - `date`: value formatted as `YYYY-MM-DD` (e.g. `2026-09-24`);
710
+ * - `time`: value formatted as `HH:mm`, 24h (e.g. `14:30`);
711
+ * - `datetime`: value formatted as `YYYY-MM-DDTHH:mm` (e.g. `2026-09-24T14:30`).
712
+ * @default "datetime"
713
+ */
714
+ type?: DateTimeFieldType;
715
+ /**
716
+ * Minimum allowed value, in the same format as the value for the current `type`.
717
+ *
718
+ * Earlier options can't be picked, and an earlier value shows an error message.
719
+ * For `datetime`, the time limit only applies to the minimum's own date.
720
+ */
721
+ min?: string;
722
+ /**
723
+ * Maximum allowed value, in the same format as the value for the current `type`.
724
+ *
725
+ * Later options can't be picked, and a later value shows an error message.
726
+ * For `datetime`, the time limit only applies to the maximum's own date.
727
+ */
728
+ max?: string;
729
+ /**
730
+ * Removes the ability to click or target the field.
731
+ * @default false
732
+ */
733
+ disabled?: boolean;
734
+ /**
735
+ * Displays a loading indicator on the input. The field keeps its label as
736
+ * accessible name and is marked as busy, and assistive technologies ignore
737
+ * the indicator.
738
+ * @default false
739
+ */
740
+ loading?: boolean;
741
+ /**
742
+ * Displays clear action, which is hidden while the field is `readonly`.
743
+ * @default false
744
+ */
745
+ clearable?: boolean;
746
+ /**
747
+ * Prevent value changes. The pickers won't open.
748
+ * @default false
749
+ */
750
+ readonly?: boolean;
751
+ /**
752
+ * Add `rules` to require field to be filled before form submission.
753
+ * @default false
754
+ */
755
+ required?: boolean;
756
+ /**
757
+ * Field label.
758
+ */
759
+ label?: string;
760
+ /**
761
+ * Field placeholder.
762
+ */
763
+ placeholder?: string;
764
+ /**
765
+ * Field message to show and direct user to fill field correctly.
766
+ *
767
+ * This message will be replaced when there's an error message to be shown.
768
+ */
769
+ hint?: string;
428
770
  /**
429
771
  * Component id to use on automated tests.
430
772
  */
431
773
  dataTestid?: string;
432
774
  };
433
775
  //#endregion
434
- //#region src/components/grid/container/container.vue.d.ts
776
+ //#region src/components/inputs/date-time-field/date-time-field.vue.d.ts
435
777
  /**
436
- * Container component to be placed at the top of the component tree.
778
+ * Date and/or time field component to be used throughout the application.
779
+ *
780
+ * Its value uses the native input formats: `YYYY-MM-DD` for `date`, `HH:mm`
781
+ * for `time` and `YYYY-MM-DDTHH:mm` for `datetime`.
437
782
  *
438
783
  * @example
439
784
  * ```vue
440
785
  * <template>
441
- * <u-container>
442
- * <!-- uimed-components -->
443
- * </u-container>
786
+ * <u-date-time-field v-model="birthDate" label="Data de nascimento" type="date" />
444
787
  * <template>
445
788
  * ```
446
789
  *
447
- * @see {@link https://nexdom-healthtech.github.io/uimed-vue/guide/components/layout | Container Guide}
790
+ * @see {@link https://nexdom-healthtech.github.io/uimed-vue/guide/components/date-time-field | DateTimeField Guide}
448
791
  */
449
- declare const _default$3: typeof __VLS_export$6;
450
- declare const __VLS_export$6: __VLS_WithSlots$5<import("vue", { with: { "resolution-mode": "import" } }).DefineComponent<ContainerProps, {}, {}, {}, {}, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, {}, string, import("vue", { with: { "resolution-mode": "import" } }).PublicProps, Readonly<ContainerProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue", { with: { "resolution-mode": "import" } }).ComponentProvideOptions, false, {}, any>, {
451
- default?: (props: {}) => any;
452
- }>;
453
- type __VLS_WithSlots$5<T, S> = T & {
454
- new (): {
455
- $slots: S;
456
- };
457
- };
792
+ declare const _default$7: typeof __VLS_export$14;
793
+ declare const __VLS_export$14: import("vue", { with: { "resolution-mode": "import" } }).DefineComponent<DateTimeFieldProps & {
794
+ modelValue?: string;
795
+ }, {}, {}, {}, {}, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, {
796
+ "update:modelValue": (value: string) => any;
797
+ }, string, import("vue", { with: { "resolution-mode": "import" } }).PublicProps, Readonly<DateTimeFieldProps & {
798
+ modelValue?: string;
799
+ }> & Readonly<{
800
+ "onUpdate:modelValue"?: ((value: string) => any) | undefined;
801
+ }>, {
802
+ variant: DateTimeFieldVariant;
803
+ type: DateTimeFieldType;
804
+ }, {}, {}, {}, string, import("vue", { with: { "resolution-mode": "import" } }).ComponentProvideOptions, false, {}, any>;
458
805
  //#endregion
459
- //#region src/components/grid/row/types.d.ts
806
+ //#region src/components/inputs/mask-field/types.d.ts
807
+ type MaskFieldVariant = TextFieldVariant;
460
808
  /**
461
- * Props exposed by the {@link Row} component.
809
+ * Masks the library provides:
810
+ *
811
+ * - `cpf`: `###.###.###-##` (e.g. `123.456.789-09`);
812
+ * - `cnpj`: `##.###.###/####-##`, where the first 12 positions also accept
813
+ * letters, typed in uppercase or lowercase and kept in uppercase (e.g.
814
+ * `12.345.678/0001-95` or the alphanumeric `12.ABC.345/01DE-35`);
815
+ * - `cep`: `#####-###` (e.g. `01310-100`);
816
+ * - `phone`: `(##) #####-####` (e.g. `(11) 91234-5678`);
817
+ * - `date`: `##/##/####` (e.g. `31/12/2026`), formatting only.
818
+ */
819
+ type MaskFieldPreset = "cpf" | "cnpj" | "cep" | "phone" | "date";
820
+ /**
821
+ * A preset name, or the mask itself, where `#` is a digit (0–9) and any other
822
+ * character, letters included, is a literal inserted automatically (e.g.
823
+ * `####-##/####` or `Nº ####`).
824
+ *
825
+ * A custom mask must contain at least one `#`, so a misspelled preset (e.g.
826
+ * `"cpff"`) is a type error.
827
+ *
828
+ * @example
829
+ * ```ts
830
+ * const preset: MaskFieldMask = "cpf";
831
+ * const custom: MaskFieldMask = "####-##/####";
832
+ * const withLetters: MaskFieldMask = "Nº ####";
833
+ * ```
834
+ */
835
+ type MaskFieldMask = MaskFieldPreset | `${string}#${string}`;
836
+ /**
837
+ * Props exposed by the {@link MaskField} component.
838
+ */
839
+ type MaskFieldProps = {
840
+ /**
841
+ * Applies a distinct style variation to the field.
842
+ * One of `primary` or `secondary`.
843
+ * @default "primary"
844
+ */
845
+ variant?: MaskFieldVariant;
846
+ /**
847
+ * Mask applied to the value while the user types. One of the presets
848
+ * (`cpf`, `cnpj`, `cep`, `phone` or `date`), or the mask itself, where `#`
849
+ * is a digit (0–9) and any other character, letters included, is a literal
850
+ * inserted automatically (e.g. `####-##/####` or `Nº ####`). A custom mask
851
+ * must contain at least one `#`.
852
+ *
853
+ * Only digits are accepted, up to the number of `#` in the mask, except in
854
+ * the first 12 positions of `cnpj`, which also accept letters (A–Z, without
855
+ * accents, typed in uppercase or lowercase) for the alphanumeric CNPJ (only
856
+ * with `cnpj`: the custom mask `##.###.###/####-##` accepts only digits). The
857
+ * `v-model` holds only these characters, with letters in uppercase (e.g.
858
+ * `12345678909` for `cpf`, and `12345678000195` or `12ABC34501DE35` for
859
+ * `cnpj`). A literal the user could also type, such as a fixed digit
860
+ * (`0800 ###-####`), isn't supported: where the literal is expected, the
861
+ * same character is read as the literal.
862
+ *
863
+ * Editing in the middle of the value shifts the characters after it, and one
864
+ * that doesn't fit its new position (e.g. a letter of `cnpj` shifted into
865
+ * the last 2 positions) is discarded.
866
+ *
867
+ * The `cpf` and `cnpj` masks don't validate check digits.
868
+ *
869
+ * Changing it keeps the `v-model`: a value that doesn't fit the new mask
870
+ * (e.g. longer than it) is displayed cut and fails validation with "Valor
871
+ * inválido".
872
+ */
873
+ mask: MaskFieldMask;
874
+ /**
875
+ * Removes the ability to click or target the field.
876
+ * @default false
877
+ */
878
+ disabled?: boolean;
879
+ /**
880
+ * Displays a loading indicator on the input. The field keeps its label as
881
+ * accessible name and is marked as busy, and assistive technologies ignore
882
+ * the indicator.
883
+ * @default false
884
+ */
885
+ loading?: boolean;
886
+ /**
887
+ * Displays clear action.
888
+ * @default false
889
+ */
890
+ clearable?: boolean;
891
+ /**
892
+ * Prevent value changes.
893
+ * @default false
894
+ */
895
+ readonly?: boolean;
896
+ /**
897
+ * Add `rules` to require field to be filled before form submission.
898
+ * @default false
899
+ */
900
+ required?: boolean;
901
+ /**
902
+ * Field label.
903
+ */
904
+ label?: string;
905
+ /**
906
+ * Field placeholder. Defaults to the mask, with `0` in place of each `#`,
907
+ * e.g. `000.000.000-00` for `cpf`, `00.000.000/0000-00` for `cnpj` and
908
+ * `Nº 0000` for `Nº ####`.
909
+ */
910
+ placeholder?: string;
911
+ /**
912
+ * Field message to show and direct user to fill field correctly.
913
+ *
914
+ * This message will be replaced when there's an error message to be shown.
915
+ */
916
+ hint?: string;
917
+ /**
918
+ * Component id to use on automated tests.
919
+ */
920
+ dataTestid?: string;
921
+ };
922
+ //#endregion
923
+ //#region src/components/inputs/mask-field/mask-field.vue.d.ts
924
+ /**
925
+ * Text field that masks the value while the user types, such as CPF, CNPJ
926
+ * (numeric or alphanumeric), CEP, phone or a custom mask. Its value holds only
927
+ * the typed characters, without the mask's literals and with letters in
928
+ * uppercase.
929
+ *
930
+ * @example
931
+ * ```vue
932
+ * <template>
933
+ * <u-mask-field v-model="cpf" label="CPF" mask="cpf" />
934
+ * <u-mask-field v-model="protocol" label="Protocolo" mask="####-##/####" />
935
+ * </template>
936
+ * ```
937
+ *
938
+ * @see {@link https://nexdom-healthtech.github.io/uimed-vue/guide/components/mask-field | MaskField Guide}
939
+ */
940
+ declare const _default$15: typeof __VLS_export$13;
941
+ declare const __VLS_export$13: import("vue", { with: { "resolution-mode": "import" } }).DefineComponent<MaskFieldProps & {
942
+ modelValue?: string;
943
+ }, {}, {}, {}, {}, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, {
944
+ "update:modelValue": (value: string) => any;
945
+ }, string, import("vue", { with: { "resolution-mode": "import" } }).PublicProps, Readonly<MaskFieldProps & {
946
+ modelValue?: string;
947
+ }> & Readonly<{
948
+ "onUpdate:modelValue"?: ((value: string) => any) | undefined;
949
+ }>, {
950
+ variant: MaskFieldVariant;
951
+ }, {}, {}, {}, string, import("vue", { with: { "resolution-mode": "import" } }).ComponentProvideOptions, false, {}, any>;
952
+ //#endregion
953
+ //#region src/components/grid/container/types.d.ts
954
+ /**
955
+ * Props exposed by the {@link Container} component.
956
+ */
957
+ type ContainerProps = {
958
+ /**
959
+ * Stretches the container to the whole height of its parent, which must have a height of its
960
+ * own, e.g. the content area of `UMain`.
961
+ * @default false
962
+ */
963
+ fullHeight?: boolean;
964
+ /**
965
+ * Component id to use on automated tests.
966
+ */
967
+ dataTestid?: string;
968
+ };
969
+ //#endregion
970
+ //#region src/components/grid/container/container.vue.d.ts
971
+ /**
972
+ * Container component to be placed at the top of the component tree.
973
+ *
974
+ * @example
975
+ * ```vue
976
+ * <template>
977
+ * <u-container>
978
+ * <!-- uimed-components -->
979
+ * </u-container>
980
+ * <template>
981
+ * ```
982
+ *
983
+ * @see {@link https://nexdom-healthtech.github.io/uimed-vue/guide/components/layout | Container Guide}
984
+ */
985
+ declare const _default$4: typeof __VLS_export$12;
986
+ declare const __VLS_export$12: __VLS_WithSlots$9<import("vue", { with: { "resolution-mode": "import" } }).DefineComponent<ContainerProps, {}, {}, {}, {}, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, {}, string, import("vue", { with: { "resolution-mode": "import" } }).PublicProps, Readonly<ContainerProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue", { with: { "resolution-mode": "import" } }).ComponentProvideOptions, false, {}, any>, {
987
+ default?: (props: {}) => any;
988
+ }>;
989
+ type __VLS_WithSlots$9<T, S> = T & {
990
+ new (): {
991
+ $slots: S;
992
+ };
993
+ };
994
+ //#endregion
995
+ //#region src/composables/alignment/types.d.ts
996
+ /**
997
+ * Horizontal alignment of a component's items: to the start, to the center or to the end,
998
+ * following the text direction.
999
+ */
1000
+ type AlignX = "start" | "center" | "end";
1001
+ /**
1002
+ * Vertical alignment of a component's items: to the top, to the center, to the bottom, or
1003
+ * stretched to the whole height available.
1004
+ */
1005
+ type AlignY = "start" | "center" | "end" | "stretch";
1006
+ //#endregion
1007
+ //#region src/components/grid/row/types.d.ts
1008
+ /**
1009
+ * Props exposed by the {@link Row} component.
462
1010
  */
463
1011
  type RowProps = {
1012
+ /**
1013
+ * Horizontal alignment of the row's columns on each line.
1014
+ * Available options are:
1015
+ * - `"start"`: aligns the columns to the start of the line;
1016
+ * - `"center"`: centers the columns horizontally;
1017
+ * - `"end"`: aligns the columns to the end of the line.
1018
+ *
1019
+ * `"start"` and `"end"` follow the text direction. It only has a visible effect when the
1020
+ * columns of a line don't fill it, e.g. with `cols="auto"` or sizes adding up to less than 12.
1021
+ * When the columns wrap into several lines, each line is aligned on its own.
1022
+ *
1023
+ * Columns sit side by side only from the `sm` breakpoint up. Below it, each column takes a
1024
+ * whole line, so the alignment has no visible effect.
1025
+ * @default "start"
1026
+ */
1027
+ alignX?: AlignX;
1028
+ /**
1029
+ * Vertical alignment of the row's columns, relative to the tallest column on the same line.
1030
+ * Available options are:
1031
+ * - `"start"`: aligns the columns to the top;
1032
+ * - `"center"`: centers the columns vertically;
1033
+ * - `"end"`: aligns the columns to the bottom;
1034
+ * - `"stretch"`: stretches every column to the height of the tallest one.
1035
+ *
1036
+ * Use `"stretch"` to keep side by side columns at the same height, e.g. cards made of
1037
+ * `USection`s with `fullHeight`.
1038
+ *
1039
+ * Columns sit side by side only from the `sm` breakpoint up. Below it, each column takes a
1040
+ * whole line, so the alignment has no visible effect, unless the row has `fullHeight`: then
1041
+ * the columns, as a group, are aligned within the row's height.
1042
+ * @default "start"
1043
+ */
1044
+ alignY?: AlignY;
1045
+ /**
1046
+ * Stretches the row to the whole height of its parent: the visible content area of `UMain`
1047
+ * (below its app bar) or a `UContainer` with `fullHeight`.
1048
+ *
1049
+ * Combine it with `alignY` to place the columns within that height, e.g. `alignY="center"`
1050
+ * and `alignX="center"` to center a login form on the screen. A row with `fullHeight` takes
1051
+ * the whole height by itself, so other rows next to it are pushed below the visible area.
1052
+ * @default false
1053
+ */
1054
+ fullHeight?: boolean;
1055
+ /**
1056
+ * Renders the row as a list (`<ul>`), without the list's default indentation
1057
+ * and bullets, so assistive technologies announce its columns as the items
1058
+ * of a list. Use it for a grid of records that is, semantically, a list,
1059
+ * like cards of patients, and set `listItem` on each of its `UColumn`s.
1060
+ * @default false
1061
+ */
1062
+ list?: boolean;
464
1063
  /**
465
1064
  * Component id to use on automated tests.
466
1065
  */
@@ -475,7 +1074,7 @@ type RowProps = {
475
1074
  * ```vue
476
1075
  * <template>
477
1076
  * <u-container>
478
- * <u-row>
1077
+ * <u-row align-x="center" align-y="center">
479
1078
  * <!-- uimed-column -->
480
1079
  * </u-row>
481
1080
  * </u-container>
@@ -484,11 +1083,11 @@ type RowProps = {
484
1083
  *
485
1084
  * @see {@link https://nexdom-healthtech.github.io/uimed-vue/guide/components/layout | Row Guide}
486
1085
  */
487
- declare const _default$6: typeof __VLS_export$5;
488
- declare const __VLS_export$5: __VLS_WithSlots$4<import("vue", { with: { "resolution-mode": "import" } }).DefineComponent<RowProps, {}, {}, {}, {}, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, {}, string, import("vue", { with: { "resolution-mode": "import" } }).PublicProps, Readonly<RowProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue", { with: { "resolution-mode": "import" } }).ComponentProvideOptions, false, {}, any>, {
1086
+ declare const _default$16: typeof __VLS_export$11;
1087
+ declare const __VLS_export$11: __VLS_WithSlots$8<import("vue", { with: { "resolution-mode": "import" } }).DefineComponent<RowProps, {}, {}, {}, {}, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, {}, string, import("vue", { with: { "resolution-mode": "import" } }).PublicProps, Readonly<RowProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue", { with: { "resolution-mode": "import" } }).ComponentProvideOptions, false, {}, any>, {
489
1088
  default?: (props: {}) => any;
490
1089
  }>;
491
- type __VLS_WithSlots$4<T, S> = T & {
1090
+ type __VLS_WithSlots$8<T, S> = T & {
492
1091
  new (): {
493
1092
  $slots: S;
494
1093
  };
@@ -507,6 +1106,13 @@ type ColumnProps = {
507
1106
  * @default "12"
508
1107
  */
509
1108
  cols?: Cols;
1109
+ /**
1110
+ * Renders the column as an item of a list (`<li>`), without its bullet.
1111
+ * Use it on every column of a `URow` with `list`, whose records are,
1112
+ * semantically, the items of a list.
1113
+ * @default false
1114
+ */
1115
+ listItem?: boolean;
510
1116
  /**
511
1117
  * Component id to use on automated tests.
512
1118
  */
@@ -533,13 +1139,13 @@ type Cols = "auto" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10"
533
1139
  *
534
1140
  * @see {@link https://nexdom-healthtech.github.io/uimed-vue/guide/components/layout | Column Guide}
535
1141
  */
536
- declare const _default$2: typeof __VLS_export$4;
537
- declare const __VLS_export$4: __VLS_WithSlots$3<import("vue", { with: { "resolution-mode": "import" } }).DefineComponent<ColumnProps, {}, {}, {}, {}, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, {}, string, import("vue", { with: { "resolution-mode": "import" } }).PublicProps, Readonly<ColumnProps> & Readonly<{}>, {
1142
+ declare const _default$3: typeof __VLS_export$10;
1143
+ declare const __VLS_export$10: __VLS_WithSlots$7<import("vue", { with: { "resolution-mode": "import" } }).DefineComponent<ColumnProps, {}, {}, {}, {}, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, {}, string, import("vue", { with: { "resolution-mode": "import" } }).PublicProps, Readonly<ColumnProps> & Readonly<{}>, {
538
1144
  cols: "12" | "auto" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11";
539
1145
  }, {}, {}, {}, string, import("vue", { with: { "resolution-mode": "import" } }).ComponentProvideOptions, false, {}, any>, {
540
1146
  default?: (props: {}) => any;
541
1147
  }>;
542
- type __VLS_WithSlots$3<T, S> = T & {
1148
+ type __VLS_WithSlots$7<T, S> = T & {
543
1149
  new (): {
544
1150
  $slots: S;
545
1151
  };
@@ -576,15 +1182,15 @@ type FormProps = {
576
1182
  *
577
1183
  * @see {@link https://nexdom-healthtech.github.io/uimed-vue/guide/components/form | Form Guide}
578
1184
  */
579
- declare const _default$4: typeof __VLS_export$3;
580
- declare const __VLS_export$3: __VLS_WithSlots$2<import("vue", { with: { "resolution-mode": "import" } }).DefineComponent<FormProps, {}, {}, {}, {}, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, {} & {
1185
+ declare const _default$10: typeof __VLS_export$9;
1186
+ declare const __VLS_export$9: __VLS_WithSlots$6<import("vue", { with: { "resolution-mode": "import" } }).DefineComponent<FormProps, {}, {}, {}, {}, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, {} & {
581
1187
  submit: (event: SubmitEvent) => any;
582
1188
  }, string, import("vue", { with: { "resolution-mode": "import" } }).PublicProps, Readonly<FormProps> & Readonly<{
583
1189
  onSubmit?: ((event: SubmitEvent) => any) | undefined;
584
1190
  }>, {}, {}, {}, {}, string, import("vue", { with: { "resolution-mode": "import" } }).ComponentProvideOptions, false, {}, any>, {
585
1191
  default?: (props: {}) => any;
586
1192
  }>;
587
- type __VLS_WithSlots$2<T, S> = T & {
1193
+ type __VLS_WithSlots$6<T, S> = T & {
588
1194
  new (): {
589
1195
  $slots: S;
590
1196
  };
@@ -606,11 +1212,11 @@ type __VLS_WithSlots$2<T, S> = T & {
606
1212
  *
607
1213
  * @see {@link https://nexdom-healthtech.github.io/uimed-vue/guide/components/section | Section Guide}
608
1214
  */
609
- declare const _default$8: typeof __VLS_export$2;
610
- declare const __VLS_export$2: __VLS_WithSlots$1<import("vue", { with: { "resolution-mode": "import" } }).DefineComponent<{}, {}, {}, {}, {}, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, {}, string, import("vue", { with: { "resolution-mode": "import" } }).PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue", { with: { "resolution-mode": "import" } }).ComponentProvideOptions, true, {}, any>, {
1215
+ declare const _default$18: typeof __VLS_export$8;
1216
+ declare const __VLS_export$8: __VLS_WithSlots$5<import("vue", { with: { "resolution-mode": "import" } }).DefineComponent<{}, {}, {}, {}, {}, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, {}, string, import("vue", { with: { "resolution-mode": "import" } }).PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue", { with: { "resolution-mode": "import" } }).ComponentProvideOptions, true, {}, any>, {
611
1217
  default?: (props: {}) => any;
612
1218
  }>;
613
- type __VLS_WithSlots$1<T, S> = T & {
1219
+ type __VLS_WithSlots$5<T, S> = T & {
614
1220
  new (): {
615
1221
  $slots: S;
616
1222
  };
@@ -618,6 +1224,7 @@ type __VLS_WithSlots$1<T, S> = T & {
618
1224
  //#endregion
619
1225
  //#region src/components/sections/section/types.d.ts
620
1226
  type SectionVariant = "primary" | "secondary";
1227
+ type SectionTextAlign = "start" | "center" | "end";
621
1228
  /**
622
1229
  * Props exposed by the {@link Section} component.
623
1230
  */
@@ -636,6 +1243,20 @@ type SectionProps = {
636
1243
  * Subtitle displayed below the title.
637
1244
  */
638
1245
  subtitle?: string;
1246
+ /**
1247
+ * Horizontal alignment of the section's title, subtitle, content and actions.
1248
+ * Available options are:
1249
+ * - `"start"`: aligns the text to the start (left in left-to-right languages)
1250
+ * and keeps the actions at the end;
1251
+ * - `"center"`: centers the text and the actions;
1252
+ * - `"end"`: aligns the text and the actions to the end.
1253
+ *
1254
+ * Uses `start`/`end` instead of `left`/`right`, so it follows the text
1255
+ * direction in right-to-left languages. Nested components inherit the
1256
+ * alignment, unless they define their own.
1257
+ * @default "start"
1258
+ */
1259
+ textAlign?: SectionTextAlign;
639
1260
  /**
640
1261
  * List of actions displayed at the bottom of the section, inside
641
1262
  * `v-card-actions`. When undefined or empty, no actions area is rendered.
@@ -648,6 +1269,9 @@ type SectionProps = {
648
1269
  fullWidth?: boolean;
649
1270
  /**
650
1271
  * Makes the section occupy 100% of its parent's height.
1272
+ *
1273
+ * Inside a `URow`, set its `alignY` to `"stretch"` so the section takes the height of the
1274
+ * tallest column on the same line.
651
1275
  * @default false
652
1276
  */
653
1277
  fullHeight?: boolean;
@@ -671,7 +1295,8 @@ interface SectionAction extends ButtonProps {
671
1295
  */
672
1296
  label: string;
673
1297
  /**
674
- * Called when the action button is clicked.
1298
+ * Called when the action button is clicked. Not called while the action is `disabled` or
1299
+ * `loading`.
675
1300
  */
676
1301
  onClick?: (event: MouseEvent) => void;
677
1302
  }
@@ -692,11 +1317,11 @@ interface SectionAction extends ButtonProps {
692
1317
  *
693
1318
  * @see {@link https://nexdom-healthtech.github.io/uimed-vue/guide/components/section | Section Guide}
694
1319
  */
695
- declare const _default$7: typeof __VLS_export$1;
696
- declare const __VLS_export$1: __VLS_WithSlots<import("vue", { with: { "resolution-mode": "import" } }).DefineComponent<SectionProps, {}, {}, {}, {}, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, {}, string, import("vue", { with: { "resolution-mode": "import" } }).PublicProps, Readonly<SectionProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue", { with: { "resolution-mode": "import" } }).ComponentProvideOptions, false, {}, any>, {
1320
+ declare const _default$17: typeof __VLS_export$7;
1321
+ declare const __VLS_export$7: __VLS_WithSlots$4<import("vue", { with: { "resolution-mode": "import" } }).DefineComponent<SectionProps, {}, {}, {}, {}, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, {}, string, import("vue", { with: { "resolution-mode": "import" } }).PublicProps, Readonly<SectionProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue", { with: { "resolution-mode": "import" } }).ComponentProvideOptions, false, {}, any>, {
697
1322
  default?: (props: {}) => any;
698
1323
  }>;
699
- type __VLS_WithSlots<T, S> = T & {
1324
+ type __VLS_WithSlots$4<T, S> = T & {
700
1325
  new (): {
701
1326
  $slots: S;
702
1327
  };
@@ -767,7 +1392,437 @@ type TableProps = {
767
1392
  *
768
1393
  * @see {@link https://nexdom-healthtech.github.io/uimed-vue/guide/components/table | Table Guide}
769
1394
  */
1395
+ declare const _default$19: typeof __VLS_export$6;
1396
+ declare const __VLS_export$6: import("vue", { with: { "resolution-mode": "import" } }).DefineComponent<TableProps, {}, {}, {}, {}, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, {}, string, import("vue", { with: { "resolution-mode": "import" } }).PublicProps, Readonly<TableProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue", { with: { "resolution-mode": "import" } }).ComponentProvideOptions, false, {}, any>;
1397
+ //#endregion
1398
+ //#region src/components/details/types.d.ts
1399
+ type DetailsVariant = "primary" | "secondary";
1400
+ /**
1401
+ * Props exposed by the {@link Details} component.
1402
+ */
1403
+ type DetailsProps = {
1404
+ /**
1405
+ * Applies a distinct style variation to the details.
1406
+ * One of `primary` or `secondary`.
1407
+ * @default "primary"
1408
+ */
1409
+ variant?: DetailsVariant;
1410
+ /**
1411
+ * Title displayed on the header, which expands or collapses the content
1412
+ * when clicked. The header stays clickable even without a title.
1413
+ */
1414
+ title?: string;
1415
+ /**
1416
+ * Shows a skeleton loader in place of the details while data is being
1417
+ * loaded.
1418
+ * @default false
1419
+ */
1420
+ loading?: boolean;
1421
+ /**
1422
+ * Component id to use on automated tests.
1423
+ */
1424
+ dataTestid?: string;
1425
+ };
1426
+ //#endregion
1427
+ //#region src/components/details/details.vue.d.ts
1428
+ /**
1429
+ * Details component to show content that can be expanded or collapsed by
1430
+ * clicking on its title. Starts collapsed.
1431
+ *
1432
+ * @example
1433
+ * ```vue
1434
+ * <template>
1435
+ * <u-details title="Title">
1436
+ * Content
1437
+ * </u-details>
1438
+ * </template>
1439
+ * ```
1440
+ *
1441
+ * @see {@link https://nexdom-healthtech.github.io/uimed-vue/guide/components/details | Details Guide}
1442
+ */
1443
+ declare const _default$8: typeof __VLS_export$5;
1444
+ declare const __VLS_export$5: __VLS_WithSlots$3<import("vue", { with: { "resolution-mode": "import" } }).DefineComponent<DetailsProps, {}, {}, {}, {}, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, {}, string, import("vue", { with: { "resolution-mode": "import" } }).PublicProps, Readonly<DetailsProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue", { with: { "resolution-mode": "import" } }).ComponentProvideOptions, false, {}, any>, {
1445
+ default?: (props: {}) => any;
1446
+ }>;
1447
+ type __VLS_WithSlots$3<T, S> = T & {
1448
+ new (): {
1449
+ $slots: S;
1450
+ };
1451
+ };
1452
+ //#endregion
1453
+ //#region src/components/img/types.d.ts
1454
+ /**
1455
+ * Props exposed by the {@link Img} component.
1456
+ */
1457
+ type ImgProps = {
1458
+ /**
1459
+ * Path or URL of the image.
1460
+ */
1461
+ src: string;
1462
+ /**
1463
+ * Width of the image. A number sets it in pixels, and a string sets it in
1464
+ * any CSS unit (e.g. `"100%"`). Shrinks to fit the available width when
1465
+ * it's larger (e.g. inside a narrow `UColumn`).
1466
+ */
1467
+ width?: number | string;
1468
+ /**
1469
+ * Height of the image. A number sets it in pixels, and a string sets it in
1470
+ * any CSS unit (e.g. `"10rem"`).
1471
+ */
1472
+ height?: number | string;
1473
+ /**
1474
+ * Proportion between width and height (e.g. `16 / 9`), used to reserve the
1475
+ * image's space before it loads. Ignored when `height` is set.
1476
+ */
1477
+ aspectRatio?: number;
1478
+ /**
1479
+ * Fills the image's area, cropping the image when its proportion differs
1480
+ * from the area's. By default, the whole image is shown inside the area.
1481
+ * @default false
1482
+ */
1483
+ cover?: boolean;
1484
+ /**
1485
+ * Loads the image right away, instead of when it's about to become
1486
+ * visible. Use it for images visible when the page opens, such as a logo.
1487
+ * @default false
1488
+ */
1489
+ eager?: boolean;
1490
+ /**
1491
+ * Component id to use on automated tests.
1492
+ */
1493
+ dataTestid?: string;
1494
+ };
1495
+ //#endregion
1496
+ //#region src/components/img/img.vue.d.ts
1497
+ /**
1498
+ * Decorative image, ignored by assistive technologies, loaded when it's about
1499
+ * to become visible. Set its dimensions to reserve its space before it loads.
1500
+ *
1501
+ * @example
1502
+ * ```vue
1503
+ * <template>
1504
+ * <u-row>
1505
+ * <u-column cols="12">
1506
+ * <u-img src="/logo.svg" :width="380" :height="88" eager />
1507
+ * </u-column>
1508
+ * </u-row>
1509
+ * </template>
1510
+ * ```
1511
+ *
1512
+ * @see {@link https://nexdom-healthtech.github.io/uimed-vue/guide/components/img | Img Guide}
1513
+ */
1514
+ declare const _default$12: typeof __VLS_export$4;
1515
+ declare const __VLS_export$4: import("vue", { with: { "resolution-mode": "import" } }).DefineComponent<ImgProps, {}, {}, {}, {}, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, {}, string, import("vue", { with: { "resolution-mode": "import" } }).PublicProps, Readonly<ImgProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue", { with: { "resolution-mode": "import" } }).ComponentProvideOptions, false, {}, any>;
1516
+ //#endregion
1517
+ //#region src/components/link/types.d.ts
1518
+ /**
1519
+ * Props exposed by the {@link Link} component.
1520
+ */
1521
+ type LinkProps = {
1522
+ /**
1523
+ * Where the link goes. A route inside the app (`"/login"`,
1524
+ * `{ name: "forgot-password" }`) navigates through the app's router; a URL
1525
+ * starting with `http` navigates through the browser, in the same tab.
1526
+ */
1527
+ route: RouteLocationRaw;
1528
+ /**
1529
+ * Component id to use on automated tests.
1530
+ */
1531
+ dataTestid?: string;
1532
+ };
1533
+ //#endregion
1534
+ //#region src/components/link/link.vue.d.ts
1535
+ /**
1536
+ * Standalone text link, such as "Forgot your password?" below a login form.
1537
+ * Routes inside the app navigate through the app's router, and URLs starting
1538
+ * with `http` navigate through the browser, in the same tab.
1539
+ *
1540
+ * @example
1541
+ * ```vue
1542
+ * <template>
1543
+ * <u-link route="/forgot-password">Forgot your password?</u-link>
1544
+ * </template>
1545
+ * ```
1546
+ *
1547
+ * @see {@link https://nexdom-healthtech.github.io/uimed-vue/guide/components/link | Link Guide}
1548
+ */
1549
+ declare const _default$13: typeof __VLS_export$3;
1550
+ declare const __VLS_export$3: __VLS_WithSlots$2<import("vue", { with: { "resolution-mode": "import" } }).DefineComponent<LinkProps, {}, {}, {}, {}, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, {}, string, import("vue", { with: { "resolution-mode": "import" } }).PublicProps, Readonly<LinkProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue", { with: { "resolution-mode": "import" } }).ComponentProvideOptions, false, {}, any>, {
1551
+ default?: (props: {}) => any;
1552
+ }>;
1553
+ type __VLS_WithSlots$2<T, S> = T & {
1554
+ new (): {
1555
+ $slots: S;
1556
+ };
1557
+ };
1558
+ //#endregion
1559
+ //#region src/components/data-sets/data-set/types.d.ts
1560
+ /**
1561
+ * Number of records shown side by side on each row of a {@link DataSet}.
1562
+ */
1563
+ type DataSetColumns = 1 | 2 | 3 | 4 | 6;
1564
+ /**
1565
+ * Props exposed by the {@link DataSet} component.
1566
+ */
1567
+ type DataSetProps<T extends object> = {
1568
+ /**
1569
+ * Records to be listed. Each record of the current page is passed, as is,
1570
+ * to the default slot.
1571
+ * @default []
1572
+ */
1573
+ items?: T[];
1574
+ /**
1575
+ * Maximum number of records shown side by side on each row of the grid.
1576
+ * One of `1`, `2`, `3`, `4` or `6`.
1577
+ *
1578
+ * It's reduced to the largest of these values that keeps each record's card
1579
+ * at least 240px wide within the data set's own width, so narrow
1580
+ * containers, like dialogs or side panels, show fewer records per row, down
1581
+ * to a single one. On extra small screens, each record always takes the
1582
+ * full width.
1583
+ * @default 3
1584
+ */
1585
+ columns?: DataSetColumns;
1586
+ /**
1587
+ * Maximum number of records shown per page. Page controls are only shown
1588
+ * when there's more than one page.
1589
+ * @default 10
1590
+ */
1591
+ itemsPerPage?: number;
1592
+ /**
1593
+ * Shows a search field above the records, bound to `v-model:search`.
1594
+ * @default false
1595
+ */
1596
+ searchable?: boolean;
1597
+ /**
1598
+ * Record properties considered by the search. When undefined or empty,
1599
+ * every property of the record is considered.
1600
+ */
1601
+ searchKeys?: Array<Extract<keyof T, string>>;
1602
+ /**
1603
+ * Message shown when there are no records to list, either because `items`
1604
+ * is empty or because no record matches the search.
1605
+ * @default "Nenhum registro encontrado."
1606
+ */
1607
+ noDataText?: string;
1608
+ /**
1609
+ * Shows a skeleton loader in place of the records while data is being
1610
+ * loaded.
1611
+ * @default false
1612
+ */
1613
+ loading?: boolean;
1614
+ /**
1615
+ * Component id to use on automated tests.
1616
+ */
1617
+ dataTestid?: string;
1618
+ };
1619
+ /**
1620
+ * Slots exposed by the {@link DataSet} component.
1621
+ */
1622
+ type DataSetSlots<T extends object> = {
1623
+ /**
1624
+ * Renders each record of the current page in its own grid column, usually
1625
+ * with `UDataSetItem`.
1626
+ * @param props.item The original record, from `items`.
1627
+ * @param props.index Position of the record inside the current page.
1628
+ */
1629
+ default?: (props: {
1630
+ item: T;
1631
+ index: number;
1632
+ }) => unknown;
1633
+ };
1634
+ //#endregion
1635
+ //#region src/components/data-sets/data-set/data-set.vue.d.ts
1636
+ /**
1637
+ * Data set component to list records as a responsive grid of cards, with
1638
+ * client-side pagination and an optional search field. Each record of the
1639
+ * current page is rendered by the default slot, usually with `UDataSetItem`.
1640
+ *
1641
+ * @example
1642
+ * ```vue
1643
+ * <template>
1644
+ * <u-data-set :items="patients" :columns="4" searchable>
1645
+ * <template #default="{ item }">
1646
+ * <u-data-set-item :title="item.name" :subtitle="item.plan" />
1647
+ * </template>
1648
+ * </u-data-set>
1649
+ * </template>
1650
+ * ```
1651
+ *
1652
+ * @see {@link https://nexdom-healthtech.github.io/uimed-vue/guide/components/data-set | DataSet Guide}
1653
+ */
1654
+ declare const _default$5: typeof __VLS_export$2;
1655
+ declare const __VLS_export$2: <T extends object>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
1656
+ props: import("vue").PublicProps & __VLS_PrettifyLocal<(DataSetProps<T> & {
1657
+ page?: number;
1658
+ search?: string;
1659
+ }) & {
1660
+ "onUpdate:page"?: ((value: number) => any) | undefined;
1661
+ "onUpdate:search"?: ((value: string) => any) | undefined;
1662
+ }> & (typeof globalThis extends {
1663
+ __VLS_PROPS_FALLBACK: infer P;
1664
+ } ? P : {});
1665
+ expose: (exposed: {}) => void;
1666
+ attrs: any;
1667
+ slots: DataSetSlots<T>;
1668
+ emit: ((event: "update:page", value: number) => void) & ((event: "update:search", value: string) => void);
1669
+ }>) => import("vue").VNode & {
1670
+ __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
1671
+ };
1672
+ type __VLS_PrettifyLocal<T> = (T extends any ? { [K in keyof T]: T[K]; } : { [K in keyof T as K]: T[K]; }) & {};
1673
+ //#endregion
1674
+ //#region src/components/data-sets/data-set-item/types.d.ts
1675
+ /**
1676
+ * Props exposed by the {@link DataSetItem} component.
1677
+ */
1678
+ type DataSetItemProps = {
1679
+ /**
1680
+ * Title displayed at the top of the record's card.
1681
+ */
1682
+ title?: string;
1683
+ /**
1684
+ * Short description displayed below the title.
1685
+ */
1686
+ subtitle?: string;
1687
+ /**
1688
+ * Applies a distinct style variation to the record's card, just like on
1689
+ * `USection`. One of `primary` or `secondary`.
1690
+ * @default "primary"
1691
+ */
1692
+ variant?: SectionVariant;
1693
+ /**
1694
+ * Actions of the record, like "Editar" and "Excluir", displayed at the
1695
+ * bottom of its card, just like on `USection`. When undefined or empty, no
1696
+ * actions area is rendered.
1697
+ */
1698
+ actions?: SectionAction[];
1699
+ /**
1700
+ * Component id to use on automated tests.
1701
+ */
1702
+ dataTestid?: string;
1703
+ };
1704
+ /**
1705
+ * Slots exposed by the {@link DataSetItem} component.
1706
+ */
1707
+ type DataSetItemSlots = {
1708
+ /**
1709
+ * Details of the record, displayed below the title and subtitle, like a
1710
+ * vertical `UTable` with some of its fields.
1711
+ */
1712
+ default?: () => unknown;
1713
+ };
1714
+ //#endregion
1715
+ //#region src/components/data-sets/data-set-item/data-set-item.vue.d.ts
1716
+ /**
1717
+ * Card of a single record listed by a {@link DataSet}, built on `USection`.
1718
+ * It fills the height of its grid column, so the cards of a row line up. Its
1719
+ * details, like a vertical `UTable`, go in the default slot.
1720
+ *
1721
+ * @example
1722
+ * ```vue
1723
+ * <template>
1724
+ * <u-data-set :items="patients">
1725
+ * <template #default="{ item }">
1726
+ * <u-data-set-item
1727
+ * :title="item.name"
1728
+ * subtitle="Beneficiário"
1729
+ * :actions="[{ label: 'Editar', variant: 'secondary', onClick: () => edit(item) }]"
1730
+ * >
1731
+ * <u-table :headers="['Plano', 'Idade']" :items="[[item.plan, item.age]]" vertical />
1732
+ * </u-data-set-item>
1733
+ * </template>
1734
+ * </u-data-set>
1735
+ * </template>
1736
+ * ```
1737
+ *
1738
+ * @see {@link https://nexdom-healthtech.github.io/uimed-vue/guide/components/data-set | DataSet Guide}
1739
+ */
1740
+ declare const _default$6: typeof __VLS_export$1;
1741
+ declare const __VLS_export$1: __VLS_WithSlots$1<import("vue", { with: { "resolution-mode": "import" } }).DefineComponent<DataSetItemProps, {}, {}, {}, {}, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, {}, string, import("vue", { with: { "resolution-mode": "import" } }).PublicProps, Readonly<DataSetItemProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue", { with: { "resolution-mode": "import" } }).ComponentProvideOptions, false, {}, any>, DataSetItemSlots>;
1742
+ type __VLS_WithSlots$1<T, S> = T & {
1743
+ new (): {
1744
+ $slots: S;
1745
+ };
1746
+ };
1747
+ //#endregion
1748
+ //#region src/components/dialogs/dialog/types.d.ts
1749
+ type DialogSize = "small" | "medium" | "large";
1750
+ /**
1751
+ * Props exposed by the {@link Dialog} component.
1752
+ */
1753
+ type DialogProps = {
1754
+ /**
1755
+ * Plain text displayed as the dialog's title, in a single line. HTML isn't interpreted.
1756
+ * Also used as the dialog's accessible name. Without it, the content is the accessible name.
1757
+ */
1758
+ title?: string;
1759
+ /**
1760
+ * Buttons displayed at the bottom of the dialog, right-aligned, in the given order.
1761
+ * Place the main action last. When undefined or empty, no actions area is rendered.
1762
+ * Clicking an action doesn't close the dialog: set `v-model` to `false` in `onClick`.
1763
+ * While any action is `loading`, the user can't close the dialog with `Esc`, a click outside or
1764
+ * the browser's back button, but setting `v-model` to `false` still closes it.
1765
+ */
1766
+ actions?: DialogButtonAction[];
1767
+ /**
1768
+ * Maximum width of the dialog.
1769
+ * One of `small` (400px), `medium` (560px), or `large` (800px).
1770
+ * @default "medium"
1771
+ */
1772
+ size?: DialogSize;
1773
+ /**
1774
+ * Component id to use on automated tests.
1775
+ */
1776
+ dataTestid?: string;
1777
+ };
1778
+ /**
1779
+ * A single action rendered inside {@link Dialog}'s actions area. Same shape as `USection`'s
1780
+ * actions. While it's `loading`, the user can't close the dialog, but setting `v-model` to `false` still does.
1781
+ */
1782
+ interface DialogButtonAction extends ButtonProps {
1783
+ /**
1784
+ * Text displayed on the action button.
1785
+ */
1786
+ label: string;
1787
+ /**
1788
+ * Called when the action button is clicked. Not called while the action is `disabled` or
1789
+ * `loading`. The dialog stays open.
1790
+ */
1791
+ onClick?: (event: MouseEvent) => void;
1792
+ }
1793
+ //#endregion
1794
+ //#region src/components/dialogs/dialog/dialog.vue.d.ts
1795
+ /**
1796
+ * Dialog component to display content in a modal window, over the page, until it's closed.
1797
+ * Its title and actions stay in place while the content scrolls.
1798
+ *
1799
+ * @example
1800
+ * ```vue
1801
+ * <template>
1802
+ * <u-dialog v-model="open" title="Title" :actions="[{ label: 'Close', onClick: () => (open = false) }]">
1803
+ * Content
1804
+ * </u-dialog>
1805
+ * </template>
1806
+ * ```
1807
+ *
1808
+ * @see {@link https://nexdom-healthtech.github.io/uimed-vue/guide/components/dialog | Dialog Guide}
1809
+ */
770
1810
  declare const _default$9: typeof __VLS_export;
771
- declare const __VLS_export: import("vue", { with: { "resolution-mode": "import" } }).DefineComponent<TableProps, {}, {}, {}, {}, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, {}, string, import("vue", { with: { "resolution-mode": "import" } }).PublicProps, Readonly<TableProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue", { with: { "resolution-mode": "import" } }).ComponentProvideOptions, false, {}, any>;
1811
+ declare const __VLS_export: __VLS_WithSlots<import("vue", { with: { "resolution-mode": "import" } }).DefineComponent<DialogProps & {
1812
+ modelValue?: boolean;
1813
+ }, {}, {}, {}, {}, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, {
1814
+ "update:modelValue": (value: boolean) => any;
1815
+ }, string, import("vue", { with: { "resolution-mode": "import" } }).PublicProps, Readonly<DialogProps & {
1816
+ modelValue?: boolean;
1817
+ }> & Readonly<{
1818
+ "onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
1819
+ }>, {}, {}, {}, {}, string, import("vue", { with: { "resolution-mode": "import" } }).ComponentProvideOptions, false, {}, any>, {
1820
+ default?: (props: {}) => any;
1821
+ }>;
1822
+ type __VLS_WithSlots<T, S> = T & {
1823
+ new (): {
1824
+ $slots: S;
1825
+ };
1826
+ };
772
1827
  //#endregion
773
- export { _default as UButton, _default$1 as UCheckbox, _default$2 as UColumn, _default$3 as UContainer, _default$4 as UForm, _default$5 as UMain, _default$6 as URow, _default$7 as USection, _default$8 as USectionContent, _default$9 as UTable, _default$10 as UTextField };
1828
+ export { _default as UAutocompleteField, _default$1 as UButton, _default$2 as UCheckbox, _default$3 as UColumn, _default$4 as UContainer, _default$5 as UDataSet, _default$6 as UDataSetItem, _default$7 as UDateTimeField, _default$8 as UDetails, _default$9 as UDialog, _default$10 as UForm, _default$11 as UIconButton, _default$12 as UImg, _default$13 as ULink, _default$14 as UMain, _default$15 as UMaskField, _default$16 as URow, _default$17 as USection, _default$18 as USectionContent, _default$19 as UTable, _default$20 as UTextField };