@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.
- package/LICENSE +21 -0
- package/README.md +134 -2
- package/dist/components/accordion.d.ts +197 -0
- package/dist/components/avatar.d.ts +90 -0
- package/dist/components/calendar.d.ts +421 -0
- package/dist/components/carousel.d.ts +293 -0
- package/dist/components/combobox.d.ts +431 -0
- package/dist/components/command.d.ts +252 -0
- package/dist/components/dialog.d.ts +242 -0
- package/dist/components/disclosure.d.ts +120 -0
- package/dist/components/emoji-picker.d.ts +359 -0
- package/dist/components/menu.d.ts +493 -0
- package/dist/components/navigation-menu.d.ts +275 -0
- package/dist/components/number-field.d.ts +202 -0
- package/dist/components/pin-input.d.ts +174 -0
- package/dist/components/popover.d.ts +213 -0
- package/dist/components/progress.d.ts +82 -0
- package/dist/components/radio-group.d.ts +167 -0
- package/dist/components/select.d.ts +418 -0
- package/dist/components/slider.d.ts +222 -0
- package/dist/components/sortable.d.ts +140 -0
- package/dist/components/splitter.d.ts +167 -0
- package/dist/components/tabs.d.ts +183 -0
- package/dist/components/toast.d.ts +192 -0
- package/dist/components/toggle-group.d.ts +205 -0
- package/dist/components/toggles.d.ts +232 -0
- package/dist/components/tooltip.d.ts +370 -0
- package/dist/components/tree.d.ts +147 -0
- package/dist/composables/data-table.d.ts +25 -0
- package/dist/composables/observers.d.ts +42 -0
- package/dist/composables/presence.d.ts +7 -0
- package/dist/index.d.ts +37 -0
- package/dist/index.js +4094 -0
- package/dist/shared/context.d.ts +2 -0
- package/dist/shared/dismiss.d.ts +17 -0
- package/dist/shared/element.d.ts +6 -0
- package/dist/shared/floating-props.d.ts +27 -0
- package/dist/shared/list.d.ts +17 -0
- package/dist/shared/machine.d.ts +38 -0
- package/dist/shared/parts.d.ts +8 -0
- package/dist/shared/portal.d.ts +34 -0
- package/dist/shared/primitive.d.ts +57 -0
- 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
|
-
#
|
|
1
|
+
# @lovince/ui-vue
|
|
2
2
|
|
|
3
|
-
|
|
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>;
|