@nexdom/uimed-vue 2.0.0-beta.7 → 2.0.0-beta.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/AGENTS.md CHANGED
@@ -30,7 +30,7 @@ Add the Vite plugin:
30
30
 
31
31
  ```ts
32
32
  // vite.config.ts
33
- import { vitePluginUimed } from "@nexdom/uimed-vue/plugins.ts";
33
+ import { vitePluginUimed } from "@nexdom/uimed-vue/plugins";
34
34
 
35
35
  // ...
36
36
 
@@ -55,18 +55,18 @@ createApp(App).use(uimed).mount("#app");
55
55
 
56
56
  ### Usage
57
57
 
58
- Place the `Root` component at the top of `App.vue`, then add other components as needed:
58
+ Place the `UMain` component at the top of `App.vue`, then add other components as needed:
59
59
 
60
60
  ```vue
61
61
  <!-- App.vue -->
62
62
  <template>
63
- <root>
63
+ <u-main>
64
64
  <!-- ... -->
65
- </root>
65
+ </u-main>
66
66
  </template>
67
67
 
68
68
  <script setup lang="ts">
69
- import { Root } from "@nexdom/uimed-vue/components";
69
+ import { UMain } from "@nexdom/uimed-vue/components";
70
70
  </script>
71
71
  ```
72
72
 
@@ -102,24 +102,70 @@ vp env setup # create shims like vpr and vpx
102
102
  vp install # install dependencies
103
103
  ```
104
104
 
105
+ On Windows, prefer VSCode's "Dev Containers: Clone Repository in Container Volume" over opening a folder cloned on the host:
106
+
107
+ - A host clone with `core.autocrlf=true` checks files out with CRLF, and `vpr check` then reports formatting issues on every file. `.gitattributes` enforces LF, but clones made before it was added need `git rm -rq --cached . && git reset --hard` to be re-normalized (commit or stash local changes first, since `reset --hard` discards them).
108
+ - A host folder bind-mounted into the container is roughly 10x slower (unit tests alone go from seconds to minutes), which makes Stryker's initial test run time out.
109
+
105
110
  ## Commands
106
111
 
107
- - `vpr check` — lint, formatter, and type-check (requires `build`/`pack` to have run first for the type-check step)
112
+ - `vpr check` — lint, formatter, and type-check (builds the library first, since the type-check reads `dist`)
108
113
  - `vp test --coverage` — unit tests with coverage (Vitest, jsdom, 100% coverage threshold enforced)
109
- - `vpr test:mutations` — mutation tests (Stryker; thresholds: high 100, low 95, break 95)
110
- - `vpr test:e2e` — E2E tests (Playwright, runs against the built docs preview site)
114
+ - `vpr test:mutations` — mutation tests (Stryker; thresholds: high 100, low 100, break 100). It starts one test runner per CPU core; on machines with limited memory, run `vpx stryker run --concurrency 4` instead
115
+ - `vpr test:e2e` — E2E tests (Playwright, runs against the built docs preview site). Outside CI it reuses any server already on port 4173, which is also `vpr docs:dev`'s port: stop the dev server first, or the tests run against it instead of the built site
111
116
  - `vpr depcruise` — architecture/dependency rules (dependency-cruiser)
112
117
  - `vp pack` / `vpr build` — build the library
113
118
  - `vpr docs` / `vpr docs:dev` — run docs site (imports the lib from `dist`, not `src` — run `vpr dev` in a second terminal to keep `dist` updated while iterating)
114
119
 
115
120
  CI (`.github/workflows/ci.yml`) runs, in order: commitlint on PR commits, `vp pack`, `vpr check`, `vpr depcruise`, `vp test --coverage`, `vpr test:mutations`, `vpr test:e2e`. Match this locally before opening a PR.
116
121
 
122
+ ### Focused runs while iterating
123
+
124
+ The full suite takes minutes; while working on a single component or composable, scope each step to it (`button` below is an example) and run the full suite only before opening a PR:
125
+
126
+ ```bash
127
+ # Unit tests of one or more folders
128
+ vp test src/components/button
129
+
130
+ # Same, with coverage limited to the files you changed. Without `--coverage.include`, files that
131
+ # are only imported (e.g. the children of `main.vue`) count as uncovered and fail the 100% threshold
132
+ vp test src/components/button --coverage --coverage.include="src/components/button/**"
133
+
134
+ # Mutation tests of specific files. List several files in a single comma-separated `--mutate`
135
+ # (repeating the flag keeps only the last one)
136
+ vpx stryker run --mutate "src/components/button/button.vue,src/composables/button/button.ts"
137
+
138
+ # One E2E spec
139
+ vpr test:e2e e2e/components/button.spec.ts
140
+ ```
141
+
142
+ ## Adding a new component
143
+
144
+ Use an existing component (e.g. `button`) as the reference, and deliver all of the following in the same PR:
145
+
146
+ 1. `src/components/<name>/<name>.vue` (following the pattern in [Code conventions](#code-conventions)), `types.ts` and `__tests__/<name>.test.ts`.
147
+ 2. The `U`-prefixed export in `src/components/index.ts`.
148
+ 3. A usage guide at `docs/guide/components/<name>.md`, with `<demo>` examples (and a `<playground>` section when the component has configurable props), and an API reference at `docs/api/components/<name>.md` (props, events and slots tables). Both in Portuguese.
149
+ 4. Both pages registered in the sidebar at `docs/.vitepress/config.ts`.
150
+ 5. `e2e/components/<name>.spec.ts` covering the guide's interactive examples and a "UI consistency" screenshot check (plus accessible snapshots where relevant). Commit the generated files under `__snapshots__`/`__screenshot__`.
151
+ 6. The full CI sequence passing locally.
152
+
153
+ ## Adding a new composable
154
+
155
+ Use an existing composable (e.g. `use-toast`) as the reference, and deliver in the same PR:
156
+
157
+ 1. `src/composables/<group>/<name>.ts` and `__tests__/<name>.test.ts`, plus the types in the group's `types.ts`. If it relies on an internal component (as `useToast` relies on the internal `Toast` rendered by `UMain`), that component follows the component layout but isn't exported.
158
+ 2. The export in `src/composables/index.ts`, and its assertion in `src/composables/__tests__/index.test.ts`.
159
+ 3. A usage guide at `docs/guide/composables/<name>.md` and an API reference at `docs/api/composables/<name>.md`, both in Portuguese, registered in both sidebars at `docs/.vitepress/config.ts` and listed in `docs/api/index.md` and in the table of `docs/guide/index.md`. If it relies on `UMain` (like `useToast`), also mention it in `UMain`'s guide and API pages.
160
+ 4. `e2e/composables/<name>.spec.ts` covering the guide's examples and a "UI consistency" screenshot check.
161
+ 5. The full CI sequence passing locally.
162
+
117
163
  ## Code conventions
118
164
 
119
165
  - All `src` code is written in English. `docs` content is written in Portuguese (aimed at Brazilian users), even though file/dir names stay in English.
120
166
  - `docs` must not mention Vuetify
121
167
  - A new component/composable must be listed in its guide page (`docs/guide/…`), its API page (`docs/api/…`), both sidebars in `docs/.vitepress/config.ts`, the guide index table (`docs/guide/index.md`) and the API index list (`docs/api/index.md`).
122
- - Never write CSS, classes or any kind of styling. Always use component props.
168
+ - Never write CSS or `<style>` blocks, and expose styling to consumers only through props. Inside the library's own components, a Vuetify utility class is acceptable when no Vuetify prop covers the need (e.g. `text-wrap` on a card title), with a comment saying why.
123
169
  - Path aliases: `@/*` → `src/*`, `@e2e/*` → `e2e/*`.
124
170
  - Every public component follows this pattern to block access to internals and give it an editor-hover description:
125
171
 
@@ -139,8 +185,9 @@ CI (`.github/workflows/ci.yml`) runs, in order: commitlint on PR commits, `vp pa
139
185
  </script>
140
186
  ```
141
187
 
142
- - Component layout: `src/components/<name>/<name>.vue`, `types.ts` for prop/option types, `__tests__/<name>.test.ts` for unit tests. Composables follow the same shape under `src/composables/<name>/`.
143
- - Public components/composables/types are re-exported from `src/components/index.ts` and `src/composables/index.ts`.
188
+ - Component layout: `src/components/<name>/<name>.vue`, `types.ts` for prop/option types, `__tests__/<name>.test.ts` for unit tests. Components that belong to a group live in the group's folder (e.g. the internal `src/components/dialogs/toast.vue`).
189
+ - Composables live in a group folder: `src/composables/<group>/<name>.ts`, with `types.ts` and `__tests__/` in the group folder (e.g. `src/composables/dialogs/use-toast.ts`).
190
+ - Public components/composables are re-exported from `src/components/index.ts` and `src/composables/index.ts`. Prop types stay internal (`types.ts` is not re-exported); consumers derive them with `ComponentProps` (see [Usage](#usage)).
144
191
  - Every publicly exported component must use the `U` prefix on its export identifier (e.g., `UButton`, `UMain`), while internal file names and component names remain unprefixed.
145
192
  - Use [JSDoc](https://jsdoc.app/about-getting-started) on every method/prop/type intended to be part of the public API — it's the primary documentation surface and supports markdown/code examples.
146
193
  - Known workarounds (see CONTRIBUTING.md before touching related config): `stryker-vue-ignorer` patches a Stryker/Vue macro-hoisting issue; `vue-tsc` is used for type-check instead of Vite+'s built-in one due to an oxlint/Vue support gap. Both are meant to be removed once their upstream issues are fixed — don't build further on top of them without checking if they're still needed.
@@ -149,8 +196,34 @@ CI (`.github/workflows/ci.yml`) runs, in order: commitlint on PR commits, `vp pa
149
196
 
150
197
  - Unit tests use Vitest + `@vue/test-utils`, with `vueTestUtilsPluginUimed()` from `@/unit-test.ts` to mount a Vuetify instance.
151
198
  - Global unit test setup (`src/__tests__/setup.ts`) stubs `visualViewport`, uses fake timers, and silences `console.error/warn/log`.
152
- - Coverage threshold is 100%; mutation testing threshold is 100% (break at 100). Don't add code paths without covering tests.
199
+ - With fake timers in jsdom, Vuetify transitions (e.g. of `VDialog`, `VMenu`) don't finish on their own. Emit the transition events on the Vuetify component (`wrapper.findComponent(VDialog).vm.$emit("afterLeave")`) or advance the timers with `await vi.runAllTimersAsync()`.
200
+ - Coverage threshold is 100%; mutation testing threshold is 100% (break at 100). Don't add code paths without covering tests. Mutants that don't compile are reported as compile errors and don't count toward the score.
153
201
  - E2E tests (Playwright, `e2e/`) run against the built docs preview (`http://localhost:4173/uimed-vue/`). Snapshots/screenshots live under `__snapshots__`/`__screenshot__` next to each spec.
202
+ - In E2E, a paused `page.clock` also freezes transitions, so overlays never finish leaving. Use `page.clock.pauseAt` to hold time-based work (e.g. a demo action with `setTimeout`), `page.clock.fastForward` to complete it, then `page.clock.resume()` before expecting the overlay to be hidden (see `e2e/composables/use-confirm.spec.ts`).
203
+
204
+ ## Library documentation and dependencies
205
+
206
+ The stack is newer than most AI models' training data (Vue 3.5, Vuetify 4, Vue Router 5, Vite+ 0.2, Vitest 4, TypeScript 6, VitePress 2 alpha, Stryker 10, Playwright 1.62), so don't rely on memory for library APIs.
207
+
208
+ - Before using an API this repo doesn't use yet, or implementing something from scratch, look it up in the version declared in `package.json`. The project's `.mcp.json` provides two servers for that:
209
+ - `context7`, with these library IDs: Vue `/websites/vuejs`, Vuetify `/websites/vuetifyjs_en`, Vue Router `/websites/router_vuejs`, Vite+ `/websites/viteplus_dev`, Vitest `/vitest-dev/vitest`, Vue Test Utils `/vuejs/test-utils`, Playwright `/microsoft/playwright`, VitePress `/vuejs/vitepress`, Stryker `/stryker-mutator/stryker-js`.
210
+ - `vuetify`, Vuetify's own server, for component and composable APIs and release notes. Its tools that create or update bins, links, playgrounds or bug reports publish content outside the repo and are denied in `.claude/settings.json`.
211
+ - Queries to both servers leave your machine: describe what you need in generic terms and never include source code or business rules.
212
+ - Before adding a dependency, check whether Vuetify, `@nexdom/shared` or the current dependencies already cover the need. If not, confirm with the requester, check the package's docs, maintenance and license, and declare runtime dependencies as `peerDependencies` (enforced by dependency-cruiser's `use-peer-deps` rule).
213
+ - Vuetify is an internal detail: consumers use the library's props, and `docs` never mention Vuetify.
214
+
215
+ ## AI agents
216
+
217
+ Besides this file, the repo ships Claude Code subagents in `.claude/agents/`:
218
+
219
+ - `issue-planner`: turns an issue into an API proposal plus open questions, before any code is written.
220
+ - `issue-implementer`: implements an issue end to end (source, tests, docs, E2E).
221
+ - `code-reviewer`: reviews a branch or PR against these conventions, without changing code.
222
+ - `dependency-updater`: evaluates and applies dependency updates, such as Dependabot PRs.
223
+
224
+ Issues and PRs live in `nexdom-healthtech/uimed-vue`. Pass `-R nexdom-healthtech/uimed-vue` to `gh`, since clones from forks have issues disabled, and read issues with `gh issue view <number> -R nexdom-healthtech/uimed-vue --json title,body,comments` (`--comments` prints nothing in non-interactive shells).
225
+
226
+ To resolve an issue, run `/resolve-issue <number>` (`.claude/skills/resolve-issue/`). It chains planner, implementer and reviewer, asks you about open questions and waits for your approval of the public API before any code is written.
154
227
 
155
228
  ## Git workflow
156
229
 
package/README.md CHANGED
@@ -41,7 +41,7 @@ Add Vite config:
41
41
 
42
42
  ```ts
43
43
  // vite.config.ts
44
- import { vitePluginUimed } from "@nexdom/uimed-vue/plugins.ts";
44
+ import { vitePluginUimed } from "@nexdom/uimed-vue/plugins";
45
45
 
46
46
  /// ...
47
47
 
@@ -1,4 +1,4 @@
1
- import { t as ColorVariant } from "./types-BPXXtbmW.js";
1
+ import { t as ButtonProps } from "./types-HPMP8IrV.js";
2
2
  import { RouteLocationRaw } from "vue-router";
3
3
  //#region src/components/app-bar/types.d.ts
4
4
  /**
@@ -171,8 +171,8 @@ type MainProps = {
171
171
  *
172
172
  * @see {@link https://nexdom-healthtech.github.io/uimed-vue/guide/components/main | Main Guide}
173
173
  */
174
- declare const _default$6: typeof __VLS_export$11;
175
- declare const __VLS_export$11: __VLS_WithSlots$8<import("vue", { with: { "resolution-mode": "import" } }).DefineComponent<MainProps & {
174
+ declare const _default$7: typeof __VLS_export$12;
175
+ declare const __VLS_export$12: __VLS_WithSlots$8<import("vue", { with: { "resolution-mode": "import" } }).DefineComponent<MainProps & {
176
176
  notificationsOpen?: boolean;
177
177
  }, {}, {}, {}, {}, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, {
178
178
  "update:notificationsOpen": (value: boolean) => any;
@@ -189,50 +189,6 @@ type __VLS_WithSlots$8<T, S> = T & {
189
189
  };
190
190
  };
191
191
  //#endregion
192
- //#region src/components/button/types.d.ts
193
- type ButtonVariant = "primary" | "secondary" | "ghost";
194
- /**
195
- * Props exposed by the {@link Button} component.
196
- */
197
- type ButtonProps = {
198
- /**
199
- * Applies a distinct style variation to the button.
200
- * One of `primary`, `secondary`, or `ghost`.
201
- * @default "primary"
202
- */
203
- variant?: ButtonVariant;
204
- /**
205
- * Applies a distinct behavior to the button.
206
- * One of `button` or `submit`.
207
- * @default "button"
208
- */
209
- type?: "submit" | "button";
210
- /**
211
- * Applies a color to the button.
212
- * One of `primary`, `secondary`, `positive`, `informative`, `caution`, or `danger`.
213
- * @default "primary"
214
- */
215
- 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
- /**
231
- * Component id to use on automated tests.
232
- */
233
- dataTestid?: string;
234
- };
235
- //#endregion
236
192
  //#region src/components/button/button.vue.d.ts
237
193
  /**
238
194
  * Button component to be used throughout the application.
@@ -248,8 +204,8 @@ type ButtonProps = {
248
204
  *
249
205
  * @see {@link https://nexdom-healthtech.github.io/uimed-vue/guide/components/button | Button Guide}
250
206
  */
251
- declare const _default: typeof __VLS_export$10;
252
- declare const __VLS_export$10: __VLS_WithSlots$7<import("vue", { with: { "resolution-mode": "import" } }).DefineComponent<ButtonProps, {}, {}, {}, {}, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, {} & {
207
+ declare const _default$1: typeof __VLS_export$11;
208
+ declare const __VLS_export$11: __VLS_WithSlots$7<import("vue", { with: { "resolution-mode": "import" } }).DefineComponent<ButtonProps, {}, {}, {}, {}, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, {} & {
253
209
  click: (event: MouseEvent) => any;
254
210
  }, string, import("vue", { with: { "resolution-mode": "import" } }).PublicProps, Readonly<ButtonProps> & Readonly<{
255
211
  onClick?: ((event: MouseEvent) => any) | undefined;
@@ -326,6 +282,118 @@ type TextFieldProps = {
326
282
  dataTestid?: string;
327
283
  };
328
284
  //#endregion
285
+ //#region src/components/inputs/autocomplete-field/types.d.ts
286
+ /**
287
+ * Autocomplete/Combobox item type that can be either a string or an object with label and value.
288
+ */
289
+ type AutocompleteItem<T = string> = string | {
290
+ label: string;
291
+ value: T;
292
+ };
293
+ /**
294
+ * Props exposed by the {@link AutocompleteField} component.
295
+ */
296
+ type AutocompleteFieldProps<T = string, Multiple extends boolean = false> = {
297
+ /**
298
+ * Applies a distinct style variation to the field.
299
+ * One of `primary` or `secondary`.
300
+ * @default "primary"
301
+ */
302
+ variant?: TextFieldVariant;
303
+ /**
304
+ * Removes the ability to click or target the field.
305
+ * @default false
306
+ */
307
+ disabled?: boolean;
308
+ /**
309
+ * Displays a loading indicator on the input.
310
+ * @default false
311
+ */
312
+ loading?: boolean;
313
+ /**
314
+ * Displays clear action.
315
+ * @default false
316
+ */
317
+ clearable?: boolean;
318
+ /**
319
+ * Prevent value changes.
320
+ * @default false
321
+ */
322
+ readonly?: boolean;
323
+ /**
324
+ * Add rules to require field to be filled before form submission.
325
+ * @default false
326
+ */
327
+ required?: boolean;
328
+ /**
329
+ * Field label.
330
+ */
331
+ label?: string;
332
+ /**
333
+ * Field placeholder.
334
+ */
335
+ placeholder?: string;
336
+ /**
337
+ * Field message to show and direct user to fill field correctly.
338
+ *
339
+ * This message will be replaced when there's an error message to be shown.
340
+ */
341
+ hint?: string;
342
+ /**
343
+ * Component id to use on automated tests.
344
+ */
345
+ dataTestid?: string;
346
+ /**
347
+ * Used to prevent user from adding new values to the list.
348
+ * @default false
349
+ */
350
+ strict?: boolean;
351
+ /**
352
+ * Allow selecting/typing more than one value.
353
+ *
354
+ * Passing the literal `true` narrows `modelValue` and `update:modelValue`
355
+ * to `T[]` instead of `T`.
356
+ * @default false
357
+ */
358
+ multiple?: Multiple;
359
+ /**
360
+ * List of autocomplete items. Can be strings or objects with label and value.
361
+ * @default []
362
+ */
363
+ items?: AutocompleteItem<T>[];
364
+ };
365
+ //#endregion
366
+ //#region src/components/inputs/autocomplete-field/autocomplete-field.vue.d.ts
367
+ /**
368
+ * Select field component to be used throughout the application.
369
+ *
370
+ * @example
371
+ * ```vue
372
+ * <template>
373
+ * <u-autocomplete-field label="Country" :items="['Brazil', 'Argentina']" />
374
+ * </template>
375
+ * ```
376
+ *
377
+ * @see {@link https://nexdom-healthtech.github.io/uimed-vue/guide/components/autocomplete-field | AutocompleteField Guide}
378
+ */
379
+ declare const _default: typeof __VLS_export$10;
380
+ declare const __VLS_export$10: <T = string, Multiple extends boolean = false>(__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<{
381
+ props: import("vue").PublicProps & __VLS_PrettifyLocal$1<(AutocompleteFieldProps<T, Multiple> & {
382
+ modelValue?: Multiple extends true ? T[] : T;
383
+ }) & {
384
+ "onUpdate:modelValue"?: ((value: Multiple extends true ? T[] : T | undefined) => any) | undefined;
385
+ }> & (typeof globalThis extends {
386
+ __VLS_PROPS_FALLBACK: infer P;
387
+ } ? P : {});
388
+ expose: (exposed: {}) => void;
389
+ attrs: any;
390
+ slots: {};
391
+ emit: (event: "update:modelValue", value: Multiple extends true ? T[] : T | undefined) => void;
392
+ }>) => import("vue").VNode & {
393
+ __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
394
+ };
395
+ type __VLS_PrettifyLocal$1<T> = (T extends any ? { [K in keyof T]: T[K]; } : { [K in keyof T as K]: T[K]; }) & {};
396
+ //#endregion
329
397
  //#region src/components/inputs/text-field/text-field.vue.d.ts
330
398
  /**
331
399
  * Text field component to be used throughout the application.
@@ -339,7 +407,7 @@ type TextFieldProps = {
339
407
  *
340
408
  * @see {@link https://nexdom-healthtech.github.io/uimed-vue/guide/components/text-field | TextField Guide}
341
409
  */
342
- declare const _default$11: typeof __VLS_export$9;
410
+ declare const _default$12: typeof __VLS_export$9;
343
411
  declare const __VLS_export$9: import("vue", { with: { "resolution-mode": "import" } }).DefineComponent<TextFieldProps & {
344
412
  modelValue?: string;
345
413
  }, {}, {}, {}, {}, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, {
@@ -402,7 +470,7 @@ type CheckboxProps<T = boolean> = {
402
470
  *
403
471
  * @see {@link https://nexdom-healthtech.github.io/uimed-vue/guide/components/checkbox | Checkbox Guide}
404
472
  */
405
- declare const _default$1: typeof __VLS_export$8;
473
+ declare const _default$2: typeof __VLS_export$8;
406
474
  declare const __VLS_export$8: <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
475
  props: import("vue").PublicProps & __VLS_PrettifyLocal<(CheckboxProps<boolean | T> & {
408
476
  modelValue?: T;
@@ -446,7 +514,7 @@ type ContainerProps = {
446
514
  *
447
515
  * @see {@link https://nexdom-healthtech.github.io/uimed-vue/guide/components/layout | Container Guide}
448
516
  */
449
- declare const _default$3: typeof __VLS_export$7;
517
+ declare const _default$4: typeof __VLS_export$7;
450
518
  declare const __VLS_export$7: __VLS_WithSlots$6<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
519
  default?: (props: {}) => any;
452
520
  }>;
@@ -484,7 +552,7 @@ type RowProps = {
484
552
  *
485
553
  * @see {@link https://nexdom-healthtech.github.io/uimed-vue/guide/components/layout | Row Guide}
486
554
  */
487
- declare const _default$7: typeof __VLS_export$6;
555
+ declare const _default$8: typeof __VLS_export$6;
488
556
  declare const __VLS_export$6: __VLS_WithSlots$5<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
557
  default?: (props: {}) => any;
490
558
  }>;
@@ -533,7 +601,7 @@ type Cols = "auto" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10"
533
601
  *
534
602
  * @see {@link https://nexdom-healthtech.github.io/uimed-vue/guide/components/layout | Column Guide}
535
603
  */
536
- declare const _default$2: typeof __VLS_export$5;
604
+ declare const _default$3: typeof __VLS_export$5;
537
605
  declare const __VLS_export$5: __VLS_WithSlots$4<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
606
  cols: "12" | "auto" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11";
539
607
  }, {}, {}, {}, string, import("vue", { with: { "resolution-mode": "import" } }).ComponentProvideOptions, false, {}, any>, {
@@ -576,7 +644,7 @@ type FormProps = {
576
644
  *
577
645
  * @see {@link https://nexdom-healthtech.github.io/uimed-vue/guide/components/form | Form Guide}
578
646
  */
579
- declare const _default$5: typeof __VLS_export$4;
647
+ declare const _default$6: typeof __VLS_export$4;
580
648
  declare const __VLS_export$4: __VLS_WithSlots$3<import("vue", { with: { "resolution-mode": "import" } }).DefineComponent<FormProps, {}, {}, {}, {}, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, {} & {
581
649
  submit: (event: SubmitEvent) => any;
582
650
  }, string, import("vue", { with: { "resolution-mode": "import" } }).PublicProps, Readonly<FormProps> & Readonly<{
@@ -606,7 +674,7 @@ type __VLS_WithSlots$3<T, S> = T & {
606
674
  *
607
675
  * @see {@link https://nexdom-healthtech.github.io/uimed-vue/guide/components/section | Section Guide}
608
676
  */
609
- declare const _default$9: typeof __VLS_export$3;
677
+ declare const _default$10: typeof __VLS_export$3;
610
678
  declare const __VLS_export$3: __VLS_WithSlots$2<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
679
  default?: (props: {}) => any;
612
680
  }>;
@@ -692,7 +760,7 @@ interface SectionAction extends ButtonProps {
692
760
  *
693
761
  * @see {@link https://nexdom-healthtech.github.io/uimed-vue/guide/components/section | Section Guide}
694
762
  */
695
- declare const _default$8: typeof __VLS_export$2;
763
+ declare const _default$9: typeof __VLS_export$2;
696
764
  declare const __VLS_export$2: __VLS_WithSlots$1<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
765
  default?: (props: {}) => any;
698
766
  }>;
@@ -767,7 +835,7 @@ type TableProps = {
767
835
  *
768
836
  * @see {@link https://nexdom-healthtech.github.io/uimed-vue/guide/components/table | Table Guide}
769
837
  */
770
- declare const _default$10: typeof __VLS_export$1;
838
+ declare const _default$11: typeof __VLS_export$1;
771
839
  declare const __VLS_export$1: 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>;
772
840
  //#endregion
773
841
  //#region src/components/details/types.d.ts
@@ -815,7 +883,7 @@ type DetailsProps = {
815
883
  *
816
884
  * @see {@link https://nexdom-healthtech.github.io/uimed-vue/guide/components/details | Details Guide}
817
885
  */
818
- declare const _default$4: typeof __VLS_export;
886
+ declare const _default$5: typeof __VLS_export;
819
887
  declare const __VLS_export: __VLS_WithSlots<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>, {
820
888
  default?: (props: {}) => any;
821
889
  }>;
@@ -825,4 +893,4 @@ type __VLS_WithSlots<T, S> = T & {
825
893
  };
826
894
  };
827
895
  //#endregion
828
- export { _default as UButton, _default$1 as UCheckbox, _default$2 as UColumn, _default$3 as UContainer, _default$4 as UDetails, _default$5 as UForm, _default$6 as UMain, _default$7 as URow, _default$8 as USection, _default$9 as USectionContent, _default$10 as UTable, _default$11 as UTextField };
896
+ export { _default as UAutocompleteField, _default$1 as UButton, _default$2 as UCheckbox, _default$3 as UColumn, _default$4 as UContainer, _default$5 as UDetails, _default$6 as UForm, _default$7 as UMain, _default$8 as URow, _default$9 as USection, _default$10 as USectionContent, _default$11 as UTable, _default$12 as UTextField };