@lovince/ui-vue 0.0.0-stage → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +134 -2
  3. package/dist/components/accordion.d.ts +197 -0
  4. package/dist/components/avatar.d.ts +90 -0
  5. package/dist/components/calendar.d.ts +421 -0
  6. package/dist/components/carousel.d.ts +293 -0
  7. package/dist/components/combobox.d.ts +431 -0
  8. package/dist/components/command.d.ts +252 -0
  9. package/dist/components/dialog.d.ts +242 -0
  10. package/dist/components/disclosure.d.ts +120 -0
  11. package/dist/components/emoji-picker.d.ts +359 -0
  12. package/dist/components/menu.d.ts +493 -0
  13. package/dist/components/navigation-menu.d.ts +275 -0
  14. package/dist/components/number-field.d.ts +202 -0
  15. package/dist/components/pin-input.d.ts +174 -0
  16. package/dist/components/popover.d.ts +213 -0
  17. package/dist/components/progress.d.ts +82 -0
  18. package/dist/components/radio-group.d.ts +167 -0
  19. package/dist/components/select.d.ts +418 -0
  20. package/dist/components/slider.d.ts +222 -0
  21. package/dist/components/sortable.d.ts +140 -0
  22. package/dist/components/splitter.d.ts +167 -0
  23. package/dist/components/tabs.d.ts +183 -0
  24. package/dist/components/toast.d.ts +192 -0
  25. package/dist/components/toggle-group.d.ts +205 -0
  26. package/dist/components/toggles.d.ts +232 -0
  27. package/dist/components/tooltip.d.ts +370 -0
  28. package/dist/components/tree.d.ts +147 -0
  29. package/dist/composables/data-table.d.ts +25 -0
  30. package/dist/composables/observers.d.ts +42 -0
  31. package/dist/composables/presence.d.ts +7 -0
  32. package/dist/index.d.ts +37 -0
  33. package/dist/index.js +4094 -0
  34. package/dist/shared/context.d.ts +2 -0
  35. package/dist/shared/dismiss.d.ts +17 -0
  36. package/dist/shared/element.d.ts +6 -0
  37. package/dist/shared/floating-props.d.ts +27 -0
  38. package/dist/shared/list.d.ts +17 -0
  39. package/dist/shared/machine.d.ts +38 -0
  40. package/dist/shared/parts.d.ts +8 -0
  41. package/dist/shared/portal.d.ts +34 -0
  42. package/dist/shared/primitive.d.ts +57 -0
  43. package/package.json +68 -4
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Lovince Tech
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,3 +1,135 @@
1
- # Temporary Holding Version
1
+ # @lovince/ui-vue
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ Accessible, unstyled Vue 3 components for Lovince UI. Every component is a
4
+ state machine from [`@lovince/ui-headless`](../ui-headless); its browser
5
+ effects run through [`@lovince/ui-dom`](../ui-dom). This package subscribes to
6
+ the machine, feeds props in, and renders what `connect()` returns. It holds no
7
+ behaviour of its own.
8
+
9
+ > **Status: `0.1.0`, experimental.** The API may change before `1.0`.
10
+
11
+ ```bash
12
+ bun add @lovince/ui-vue
13
+ ```
14
+
15
+ Requires Vue 3.5+ (for SSR-stable `useId`). No CSS ships with the package. Style
16
+ it with classes and the `data-*` state attributes, or use
17
+ [`@lovince/themes`](../themes) for tokens.
18
+
19
+ ## Components
20
+
21
+ | Group | Component | Parts |
22
+ |---|---|---|
23
+ | Disclosure | Disclosure | `DisclosureRoot`, `DisclosureTrigger`, `DisclosureContent` |
24
+ | | Accordion | `AccordionRoot`, `AccordionItem`, `AccordionHeader`, `AccordionTrigger`, `AccordionContent` |
25
+ | | Tabs | `TabsRoot`, `TabsList`, `TabsTrigger`, `TabsContent` |
26
+ | Overlays | Dialog | `DialogRoot`, `DialogTrigger`, `DialogPortal`, `DialogOverlay`, `DialogContent`, `DialogTitle`, `DialogDescription`, `DialogClose` |
27
+ | | Popover | `PopoverRoot`, `PopoverTrigger`, `PopoverAnchor`, `PopoverPortal`, `PopoverContent`, `PopoverClose` |
28
+ | | Tooltip | `TooltipRoot`, `TooltipTrigger`, `TooltipPortal`, `TooltipContent` |
29
+ | | Hover card | `HoverCardRoot`, `HoverCardTrigger`, `HoverCardPortal`, `HoverCardContent` |
30
+ | | Menu | `DropdownMenuRoot`, `DropdownMenuTrigger`, `DropdownMenuContent`, `DropdownMenuItem`, `DropdownMenuCheckboxItem`, `DropdownMenuRadioGroup`, `DropdownMenuRadioItem`, `DropdownMenuItemIndicator`, `DropdownMenuLabel`, `DropdownMenuGroup`, `DropdownMenuSeparator`, `ContextMenuTrigger` |
31
+ | | Navigation menu | `NavigationMenuRoot`, `NavigationMenuList`, `NavigationMenuItem`, `NavigationMenuTrigger`, `NavigationMenuContent`, `NavigationMenuLink` |
32
+ | | Toast | `ToastViewport`, `ToastRoot`, `ToastTitle`, `ToastDescription`, `ToastAction`, `ToastClose`, plus `toast()` |
33
+ | Choice | Checkbox, Switch | `CheckboxRoot`, `CheckboxIndicator`, `SwitchRoot`, `SwitchThumb` |
34
+ | | Radio group | `RadioGroupRoot`, `RadioGroupItem`, `RadioGroupIndicator` |
35
+ | | Toggle, toggle group | `ToggleRoot`, `ToggleGroupRoot`, `ToggleGroupItem` |
36
+ | | Select | `SelectRoot`, `SelectTrigger`, `SelectValue`, `SelectContent`, `SelectItem`, `SelectItemText`, `SelectItemIndicator`, `SelectGroup`, `SelectLabel`, `SelectSeparator` |
37
+ | | Combobox | `ComboboxRoot`, `ComboboxAnchor`, `ComboboxInput`, `ComboboxTrigger`, `ComboboxClear`, `ComboboxContent`, `ComboboxItem`, `ComboboxItemIndicator`, `ComboboxEmpty` |
38
+ | | Command palette | `CommandRoot`, `CommandInput`, `CommandList`, `CommandGroup`, `CommandItem`, `CommandEmpty`, `CommandSeparator` |
39
+ | | Emoji picker | `EmojiPickerRoot`, `EmojiPickerSearch`, `EmojiPickerList`, `EmojiPickerGroup`, `EmojiPickerItem`, `EmojiPickerNav`… |
40
+ | Input | Slider | `SliderRoot`, `SliderTrack`, `SliderRange`, `SliderThumb` |
41
+ | | Number field | `NumberFieldRoot`, `NumberFieldInput`, `NumberFieldIncrement`, `NumberFieldDecrement` |
42
+ | | PIN input | `PinInputRoot`, `PinInputInput` |
43
+ | | Calendar | `CalendarRoot`, `CalendarHeading`, `CalendarPrev`, `CalendarNext`, `CalendarGrid`, `CalendarHeadCell`, `CalendarCell`, `CalendarDay` |
44
+ | Layout | Splitter | `SplitterGroup`, `SplitterPanel`, `SplitterHandle` |
45
+ | | Tree | `TreeRoot`, `TreeItem`, `TreeGroup` |
46
+ | | Carousel | `CarouselRoot`, `CarouselViewport`, `CarouselSlide`, `CarouselPrevious`, `CarouselNext`, `CarouselIndicators`, `CarouselIndicator` |
47
+ | | Sortable | `SortableRoot`, `SortableItem`, `SortableHandle` |
48
+ | Display | Avatar, Progress | `AvatarRoot`, `AvatarImage`, `AvatarFallback`, `ProgressRoot`, `ProgressIndicator` |
49
+
50
+ Composables: `useDataTable`, `useVirtualList`, `useInView`, `useScrollEdges`,
51
+ `useActiveSection`, `useClipboard`, plus the building blocks below.
52
+
53
+ The package is `sideEffects: false`. An app importing only `DialogRoot` ships
54
+ no menu, select or table code, and a test enforces this.
55
+
56
+ ## Shared conventions
57
+
58
+ - **`as` and `asChild`.** Every part renders a sensible element and takes `as`
59
+ to change it. With `asChild`, the part renders your single child instead,
60
+ merging its attributes and handlers in.
61
+ - **Controlled or not.** Leave `v-model` off and the component owns its state.
62
+ Bind it and your value is the source of truth. Every accepted change is
63
+ emitted, and setting a model to `undefined` clears it.
64
+ - **Your ids are respected.** Give any part an `id` and the ARIA references
65
+ elsewhere follow it.
66
+ - **Exit animations play.** Closing content stays mounted, with
67
+ `data-state="closed"`, until its CSS animation ends. With no animation, or
68
+ reduced motion, it unmounts at once.
69
+ - **Hydration-safe portals.** Overlays teleport only after mount, so server and
70
+ client renders always agree.
71
+ - **Cancellable dismissal.** Overlays emit `escapeKeyDown` and
72
+ `pointerDownOutside` (Dialog also `focusOutside`) before closing. Call
73
+ `event.preventDefault()` to keep them open.
74
+
75
+ ## Lovince-specific behaviour
76
+
77
+ Two behaviours differ from the Doitrix components these were ported from:
78
+
79
+ - **Disclosure content and tab panels stay in the DOM** with `hidden` while
80
+ closed, so find-in-page and `aria-controls` keep working.
81
+ - **Tabs select the first enabled tab** when no value is given, including during
82
+ server rendering.
83
+
84
+ Modal dialogs also make the rest of the page `inert`, not just focus-trapped.
85
+
86
+ ## Building blocks
87
+
88
+ Every component in this package is built the same way:
89
+
90
+ ```ts
91
+ const machine = useMachine(dialogMachine, initialContext, {
92
+ controlled: { open: () => props.open }, // a v-model, synced in
93
+ onChange: (next, previous) => emit(…), // accepted changes, never echoes of props
94
+ beforeSend: dismiss.filter, // e.g. cancellable dismissal
95
+ })
96
+ const api = computed(() => connectDialog(machine.snapshot.value, machine.send))
97
+ // h(Primitive, normalizeProps(api.value.contentProps), slots)
98
+ ```
99
+
100
+ - `useMachine` starts effects on mount (none on the server), stops them on
101
+ unmount, keeps a controlled value the source of truth, and provides the
102
+ `query` that `connect` reads the page through. Components never touch the
103
+ DOM themselves.
104
+ - `normalizeProps` turns the engine's neutral props (`onKeyDown`) into Vue's
105
+ (`onKeydown`). A React adapter would ship its own, against the same machines.
106
+ - `useListEnv` reads a list's items from the DOM, in visual order, for machines
107
+ that navigate lists.
108
+ - `Primitive`, `Slot`, `Portal`, `usePresence`, `useIdWatch` handle
109
+ rendering concerns: `as`/`asChild`, hydration-safe portals, exit animations,
110
+ consumer ids.
111
+
112
+ ## State attributes
113
+
114
+ | Attribute | Values |
115
+ |---|---|
116
+ | `data-state` | `open` / `closed`, `checked` / `unchecked` / `indeterminate`, `active` / `inactive` |
117
+ | `data-disabled`, `data-readonly` | present when set |
118
+ | `data-orientation` | `horizontal` / `vertical` |
119
+ | `data-side`, `data-align` | where floating content was placed after collision handling |
120
+
121
+ Floating content carries `data-anchor-hidden` while its anchor is scrolled out
122
+ of view, and exposes `--lovince-floating-available-height`,
123
+ `--lovince-floating-available-width` and `--lovince-anchor-width`. Disclosure
124
+ content exposes `--lovince-collapsible-height` and `-width` for height animations.
125
+
126
+ ## Known limitations
127
+
128
+ - Positioning is the engine's own (see [`@lovince/ui-headless`](../ui-headless#positioning)):
129
+ it respects scrolling containers and transformed ancestors, and hides content
130
+ whose anchor has scrolled away (`data-anchor-hidden`). Arrows are not built in.
131
+ - See [`@lovince/ui-dom`](../ui-dom#known-limitations) for `inert` and scroll-lock browser caveats.
132
+
133
+ ## License
134
+
135
+ MIT
@@ -0,0 +1,197 @@
1
+ import { PropType } from 'vue';
2
+ import { AccordionType } from '@lovince/ui-headless';
3
+ export type { AccordionType };
4
+ /**
5
+ * Stacked disclosures. `single` keeps at most one open (`v-model` is a string);
6
+ * `multiple` lets any number open (`v-model` is an array).
7
+ */
8
+ export declare const AccordionRoot: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
9
+ type: {
10
+ type: PropType<AccordionType>;
11
+ default: string;
12
+ };
13
+ modelValue: {
14
+ type: PropType<string | string[]>;
15
+ default: undefined;
16
+ };
17
+ defaultValue: {
18
+ type: PropType<string | string[]>;
19
+ default: undefined;
20
+ };
21
+ /** Single mode only: let the open item close, leaving none open. */
22
+ collapsible: {
23
+ type: BooleanConstructor;
24
+ default: boolean;
25
+ };
26
+ disabled: {
27
+ type: BooleanConstructor;
28
+ default: boolean;
29
+ };
30
+ as: {
31
+ readonly type: PropType<string | import('vue').Component>;
32
+ readonly default: "div";
33
+ };
34
+ asChild: {
35
+ readonly type: BooleanConstructor;
36
+ readonly default: false;
37
+ };
38
+ }>, () => import('vue').VNode<import('vue').RendererNode, import('vue').RendererElement, {
39
+ [key: string]: any;
40
+ }>, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
41
+ 'update:modelValue': (value: string | string[] | undefined) => boolean;
42
+ }, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
43
+ type: {
44
+ type: PropType<AccordionType>;
45
+ default: string;
46
+ };
47
+ modelValue: {
48
+ type: PropType<string | string[]>;
49
+ default: undefined;
50
+ };
51
+ defaultValue: {
52
+ type: PropType<string | string[]>;
53
+ default: undefined;
54
+ };
55
+ /** Single mode only: let the open item close, leaving none open. */
56
+ collapsible: {
57
+ type: BooleanConstructor;
58
+ default: boolean;
59
+ };
60
+ disabled: {
61
+ type: BooleanConstructor;
62
+ default: boolean;
63
+ };
64
+ as: {
65
+ readonly type: PropType<string | import('vue').Component>;
66
+ readonly default: "div";
67
+ };
68
+ asChild: {
69
+ readonly type: BooleanConstructor;
70
+ readonly default: false;
71
+ };
72
+ }>> & Readonly<{
73
+ "onUpdate:modelValue"?: ((value: string | string[] | undefined) => any) | undefined;
74
+ }>, {
75
+ as: string | import('vue').Component;
76
+ asChild: boolean;
77
+ type: AccordionType;
78
+ disabled: boolean;
79
+ collapsible: boolean;
80
+ modelValue: string | string[];
81
+ defaultValue: string | string[];
82
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
83
+ /** Each item is a disclosure, controlled by the accordion's machine. */
84
+ export declare const AccordionItem: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
85
+ value: {
86
+ type: StringConstructor;
87
+ required: true;
88
+ };
89
+ disabled: {
90
+ type: BooleanConstructor;
91
+ default: boolean;
92
+ };
93
+ as: {
94
+ readonly type: PropType<string | import('vue').Component>;
95
+ readonly default: "div";
96
+ };
97
+ asChild: {
98
+ readonly type: BooleanConstructor;
99
+ readonly default: false;
100
+ };
101
+ }>, () => import('vue').VNode<import('vue').RendererNode, import('vue').RendererElement, {
102
+ [key: string]: any;
103
+ }>, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
104
+ value: {
105
+ type: StringConstructor;
106
+ required: true;
107
+ };
108
+ disabled: {
109
+ type: BooleanConstructor;
110
+ default: boolean;
111
+ };
112
+ as: {
113
+ readonly type: PropType<string | import('vue').Component>;
114
+ readonly default: "div";
115
+ };
116
+ asChild: {
117
+ readonly type: BooleanConstructor;
118
+ readonly default: false;
119
+ };
120
+ }>> & Readonly<{}>, {
121
+ as: string | import('vue').Component;
122
+ asChild: boolean;
123
+ disabled: boolean;
124
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
125
+ export declare const AccordionHeader: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
126
+ as: {
127
+ default: string;
128
+ type: PropType<string | import('vue').Component>;
129
+ };
130
+ asChild: {
131
+ readonly type: BooleanConstructor;
132
+ readonly default: false;
133
+ };
134
+ }>, () => import('vue').VNode<import('vue').RendererNode, import('vue').RendererElement, {
135
+ [key: string]: any;
136
+ }>, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
137
+ as: {
138
+ default: string;
139
+ type: PropType<string | import('vue').Component>;
140
+ };
141
+ asChild: {
142
+ readonly type: BooleanConstructor;
143
+ readonly default: false;
144
+ };
145
+ }>> & Readonly<{}>, {
146
+ as: string | import('vue').Component;
147
+ asChild: boolean;
148
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
149
+ /** Arrow keys move between the headers; Home and End go to the first and last. */
150
+ export declare const AccordionTrigger: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
151
+ as: {
152
+ default: string;
153
+ type: PropType<string | import('vue').Component>;
154
+ };
155
+ asChild: {
156
+ readonly type: BooleanConstructor;
157
+ readonly default: false;
158
+ };
159
+ }>, () => import('vue').VNode<import('vue').RendererNode, import('vue').RendererElement, {
160
+ [key: string]: any;
161
+ }>, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
162
+ as: {
163
+ default: string;
164
+ type: PropType<string | import('vue').Component>;
165
+ };
166
+ asChild: {
167
+ readonly type: BooleanConstructor;
168
+ readonly default: false;
169
+ };
170
+ }>> & Readonly<{}>, {
171
+ as: string | import('vue').Component;
172
+ asChild: boolean;
173
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
174
+ export declare const AccordionContent: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
175
+ readonly as: {
176
+ readonly type: PropType<string | import('vue').Component>;
177
+ readonly default: "div";
178
+ };
179
+ readonly asChild: {
180
+ readonly type: BooleanConstructor;
181
+ readonly default: false;
182
+ };
183
+ }>, () => import('vue').VNode<import('vue').RendererNode, import('vue').RendererElement, {
184
+ [key: string]: any;
185
+ }>, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
186
+ readonly as: {
187
+ readonly type: PropType<string | import('vue').Component>;
188
+ readonly default: "div";
189
+ };
190
+ readonly asChild: {
191
+ readonly type: BooleanConstructor;
192
+ readonly default: false;
193
+ };
194
+ }>> & Readonly<{}>, {
195
+ readonly as: string | import('vue').Component;
196
+ readonly asChild: boolean;
197
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
@@ -0,0 +1,90 @@
1
+ import { ImageStatus } from '@lovince/ui-headless';
2
+ export type { ImageStatus };
3
+ export declare const AvatarRoot: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
4
+ as: {
5
+ default: string;
6
+ type: import('vue').PropType<string | import('vue').Component>;
7
+ };
8
+ asChild: {
9
+ readonly type: BooleanConstructor;
10
+ readonly default: false;
11
+ };
12
+ }>, () => import('vue').VNode<import('vue').RendererNode, import('vue').RendererElement, {
13
+ [key: string]: any;
14
+ }>, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
15
+ as: {
16
+ default: string;
17
+ type: import('vue').PropType<string | import('vue').Component>;
18
+ };
19
+ asChild: {
20
+ readonly type: BooleanConstructor;
21
+ readonly default: false;
22
+ };
23
+ }>> & Readonly<{}>, {
24
+ as: string | import('vue').Component;
25
+ asChild: boolean;
26
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
27
+ /** Renders only once the machine has seen the image load; the fallback shows until then. */
28
+ export declare const AvatarImage: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
29
+ src: {
30
+ type: StringConstructor;
31
+ default: undefined;
32
+ };
33
+ alt: {
34
+ type: StringConstructor;
35
+ default: string;
36
+ };
37
+ }>, () => import('vue').VNode<import('vue').RendererNode, import('vue').RendererElement, {
38
+ [key: string]: any;
39
+ }> | null, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
40
+ status: (status: ImageStatus) => boolean;
41
+ }, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
42
+ src: {
43
+ type: StringConstructor;
44
+ default: undefined;
45
+ };
46
+ alt: {
47
+ type: StringConstructor;
48
+ default: string;
49
+ };
50
+ }>> & Readonly<{
51
+ onStatus?: ((status: ImageStatus) => any) | undefined;
52
+ }>, {
53
+ src: string;
54
+ alt: string;
55
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
56
+ export declare const AvatarFallback: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
57
+ as: {
58
+ default: string;
59
+ type: import('vue').PropType<string | import('vue').Component>;
60
+ };
61
+ /** Wait before showing, so a fast image does not flash initials first. */
62
+ delayMs: {
63
+ type: NumberConstructor;
64
+ default: number;
65
+ };
66
+ asChild: {
67
+ readonly type: BooleanConstructor;
68
+ readonly default: false;
69
+ };
70
+ }>, () => import('vue').VNode<import('vue').RendererNode, import('vue').RendererElement, {
71
+ [key: string]: any;
72
+ }> | null, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
73
+ as: {
74
+ default: string;
75
+ type: import('vue').PropType<string | import('vue').Component>;
76
+ };
77
+ /** Wait before showing, so a fast image does not flash initials first. */
78
+ delayMs: {
79
+ type: NumberConstructor;
80
+ default: number;
81
+ };
82
+ asChild: {
83
+ readonly type: BooleanConstructor;
84
+ readonly default: false;
85
+ };
86
+ }>> & Readonly<{}>, {
87
+ as: string | import('vue').Component;
88
+ asChild: boolean;
89
+ delayMs: number;
90
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;