@aleph-alpha/ui-library 1.11.0 → 1.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -2
- package/dist/system/index.d.ts +860 -179
- package/dist/system/lib.js +33936 -9729
- package/package.json +1 -2
- package/src/compositions/UiDataTable/UiDataTable.stories.ts +6 -7
- package/src/compositions/UiDataTable/UiDataTableColumnHeader.vue +22 -8
- package/src/compositions/UiDataTable/UiDataTablePagination.vue +5 -5
- package/src/compositions/UiDatePicker/UiDatePicker.vue +2 -2
- package/src/primitives/UiAlert/UiAlert.stories.ts +8 -8
- package/src/primitives/UiBadge/UiBadge.stories.ts +9 -9
- package/src/primitives/UiButton/UiButton.stories.ts +12 -12
- package/src/primitives/UiCalendar/UiCalendar.stories.ts +4 -4
- package/src/primitives/UiDropdownMenu/UiDropdownMenu.stories.ts +2 -2
- package/src/primitives/UiIcon/UiIcon.stories.ts +59 -13
- package/src/primitives/UiIcon/UiIcon.vue +41 -3
- package/src/primitives/UiIcon/__tests__/UiIcon.test.ts +33 -4
- package/src/primitives/UiIcon/index.ts +1 -0
- package/src/primitives/UiIcon/types.ts +24 -5
- package/src/primitives/UiIconButton/UiIconButton.stories.ts +36 -36
- package/src/primitives/UiKbd/UiKbd.stories.ts +551 -0
- package/src/primitives/UiKbd/UiKbd.vue +62 -0
- package/src/primitives/UiKbd/UiKbdGroup.vue +16 -0
- package/src/primitives/UiKbd/__tests__/UiKbd.test.ts +46 -0
- package/src/primitives/UiKbd/index.ts +3 -0
- package/src/primitives/UiKbd/types.ts +32 -0
- package/src/primitives/UiLabel/UiLabel.stories.ts +192 -0
- package/src/primitives/UiLabel/UiLabel.vue +16 -0
- package/src/primitives/UiLabel/__tests__/UiLabel.test.ts +43 -0
- package/src/primitives/UiLabel/index.ts +2 -0
- package/src/primitives/UiLabel/types.ts +16 -0
- package/src/primitives/UiListbox/UiListbox.stories.ts +607 -0
- package/src/primitives/UiListbox/UiListbox.vue +30 -0
- package/src/primitives/UiListbox/UiListboxContent.vue +16 -0
- package/src/primitives/UiListbox/UiListboxFilter.vue +16 -0
- package/src/primitives/UiListbox/UiListboxGroup.vue +16 -0
- package/src/primitives/UiListbox/UiListboxGroupLabel.vue +16 -0
- package/src/primitives/UiListbox/UiListboxItem.vue +20 -0
- package/src/primitives/UiListbox/UiListboxItemIndicator.vue +16 -0
- package/src/primitives/UiListbox/__tests__/UiListbox.test.ts +42 -0
- package/src/primitives/UiListbox/index.ts +8 -0
- package/src/primitives/UiListbox/types.ts +119 -0
- package/src/primitives/UiPopover/index.ts +1 -0
- package/src/primitives/UiSeparator/UiSeparator.stories.ts +177 -0
- package/src/primitives/UiSeparator/UiSeparator.vue +17 -0
- package/src/primitives/UiSeparator/__tests__/UiSeparator.test.ts +34 -0
- package/src/primitives/UiSeparator/index.ts +2 -0
- package/src/primitives/UiSeparator/types.ts +23 -0
- package/src/primitives/UiSkeleton/UiSkeleton.stories.ts +247 -0
- package/src/primitives/UiSkeleton/UiSkeleton.vue +24 -0
- package/src/primitives/UiSkeleton/__tests__/UiSkeleton.test.ts +47 -0
- package/src/primitives/UiSkeleton/index.ts +2 -0
- package/src/primitives/UiSkeleton/types.ts +26 -0
- package/src/primitives/UiTable/UiTable.stories.ts +2 -2
- package/src/primitives/UiTagsInput/UiTagsInput.stories.ts +538 -0
- package/src/primitives/UiTagsInput/UiTagsInput.vue +27 -0
- package/src/primitives/UiTagsInput/UiTagsInputInput.vue +14 -0
- package/src/primitives/UiTagsInput/UiTagsInputItem.vue +16 -0
- package/src/primitives/UiTagsInput/UiTagsInputItemDelete.vue +16 -0
- package/src/primitives/UiTagsInput/UiTagsInputItemText.vue +14 -0
- package/src/primitives/UiTagsInput/__tests__/UiTagsInput.test.ts +44 -0
- package/src/primitives/UiTagsInput/index.ts +6 -0
- package/src/primitives/UiTagsInput/types.ts +60 -0
- package/src/primitives/UiToggle/UiToggle.stories.ts +370 -0
- package/src/primitives/UiToggle/UiToggle.vue +28 -0
- package/src/primitives/UiToggle/__tests__/UiToggle.test.ts +62 -0
- package/src/primitives/UiToggle/index.ts +2 -0
- package/src/primitives/UiToggle/types.ts +35 -0
- package/src/primitives/UiTooltip/UiTooltip.stories.ts +8 -8
- package/src/primitives/index.ts +7 -0
- package/src/primitives/shadcn/accordion/AccordionTrigger.vue +5 -4
- package/src/primitives/shadcn/calendar/CalendarNextButton.vue +2 -2
- package/src/primitives/shadcn/calendar/CalendarPrevButton.vue +2 -2
- package/src/primitives/shadcn/checkbox/Checkbox.vue +2 -2
- package/src/primitives/shadcn/dropdown-menu/DropdownMenuCheckboxItem.vue +2 -2
- package/src/primitives/shadcn/dropdown-menu/DropdownMenuSubTrigger.vue +2 -2
- package/src/primitives/shadcn/kbd/Kbd.vue +20 -0
- package/src/primitives/shadcn/kbd/KbdGroup.vue +12 -0
- package/src/primitives/shadcn/kbd/index.ts +2 -0
- package/src/primitives/shadcn/listbox/Listbox.vue +23 -0
- package/src/primitives/shadcn/listbox/ListboxContent.vue +26 -0
- package/src/primitives/shadcn/listbox/ListboxFilter.vue +30 -0
- package/src/primitives/shadcn/listbox/ListboxGroup.vue +26 -0
- package/src/primitives/shadcn/listbox/ListboxGroupLabel.vue +26 -0
- package/src/primitives/shadcn/listbox/ListboxItem.vue +32 -0
- package/src/primitives/shadcn/listbox/ListboxItemIndicator.vue +40 -0
- package/src/primitives/shadcn/listbox/index.ts +7 -0
- package/src/primitives/shadcn/native-select/NativeSelect.vue +5 -4
- package/src/primitives/shadcn/range-calendar/RangeCalendarNextButton.vue +2 -2
- package/src/primitives/shadcn/range-calendar/RangeCalendarPrevButton.vue +2 -2
- package/src/primitives/shadcn/select/SelectItem.vue +2 -2
- package/src/primitives/shadcn/select/SelectScrollDownButton.vue +2 -2
- package/src/primitives/shadcn/select/SelectScrollUpButton.vue +2 -2
- package/src/primitives/shadcn/select/SelectTrigger.vue +2 -2
- package/src/primitives/shadcn/skeleton/Skeleton.vue +10 -0
- package/src/primitives/shadcn/skeleton/index.ts +1 -0
- package/src/primitives/shadcn/spinner/Spinner.vue +5 -4
- package/src/primitives/shadcn/tags-input/TagsInput.vue +33 -0
- package/src/primitives/shadcn/tags-input/TagsInputInput.vue +24 -0
- package/src/primitives/shadcn/tags-input/TagsInputItem.vue +31 -0
- package/src/primitives/shadcn/tags-input/TagsInputItemDelete.vue +46 -0
- package/src/primitives/shadcn/tags-input/TagsInputItemText.vue +24 -0
- package/src/primitives/shadcn/tags-input/index.ts +5 -0
- package/src/primitives/shadcn/toggle/Toggle.vue +34 -0
- package/src/primitives/shadcn/toggle/index.ts +27 -0
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/vue3-vite';
|
|
2
|
+
import UiSkeleton from './UiSkeleton.vue';
|
|
3
|
+
|
|
4
|
+
const meta: Meta<typeof UiSkeleton> = {
|
|
5
|
+
title: 'Primitives/UiSkeleton',
|
|
6
|
+
component: UiSkeleton,
|
|
7
|
+
tags: ['autodocs'],
|
|
8
|
+
argTypes: {
|
|
9
|
+
width: {
|
|
10
|
+
control: 'text',
|
|
11
|
+
description: 'Custom width for the skeleton. @default undefined',
|
|
12
|
+
},
|
|
13
|
+
height: {
|
|
14
|
+
control: 'text',
|
|
15
|
+
description: 'Custom height for the skeleton. @default undefined',
|
|
16
|
+
},
|
|
17
|
+
rounded: {
|
|
18
|
+
control: 'boolean',
|
|
19
|
+
description: 'Whether to render as a rounded. @default false',
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
args: {
|
|
23
|
+
rounded: false,
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
export default meta;
|
|
28
|
+
|
|
29
|
+
type Story = StoryObj<typeof UiSkeleton>;
|
|
30
|
+
|
|
31
|
+
const defaultTemplateSource = `<script setup lang="ts">
|
|
32
|
+
import { UiSkeleton } from '@aleph-alpha/ui-library'
|
|
33
|
+
</script>
|
|
34
|
+
|
|
35
|
+
<template>
|
|
36
|
+
<div class="flex items-center space-x-4">
|
|
37
|
+
<UiSkeleton class="h-12 w-12" rounded />
|
|
38
|
+
<div class="space-y-2">
|
|
39
|
+
<UiSkeleton class="h-4 w-[250px]" />
|
|
40
|
+
<UiSkeleton class="h-4 w-[200px]" />
|
|
41
|
+
</div>
|
|
42
|
+
</div>
|
|
43
|
+
</template>`;
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Default skeleton with avatar and text lines.
|
|
47
|
+
*/
|
|
48
|
+
export const Default: Story = {
|
|
49
|
+
render: (args) => ({
|
|
50
|
+
components: { UiSkeleton },
|
|
51
|
+
setup() {
|
|
52
|
+
return { args };
|
|
53
|
+
},
|
|
54
|
+
template: `<div class="flex items-center space-x-4">
|
|
55
|
+
<UiSkeleton class="h-12 w-12" v-bind="args" />
|
|
56
|
+
<div class="space-y-2">
|
|
57
|
+
<UiSkeleton class="h-4 w-[250px]" />
|
|
58
|
+
<UiSkeleton class="h-4 w-[200px]" />
|
|
59
|
+
</div>
|
|
60
|
+
</div>`,
|
|
61
|
+
}),
|
|
62
|
+
parameters: {
|
|
63
|
+
docs: {
|
|
64
|
+
source: {
|
|
65
|
+
code: defaultTemplateSource,
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
const cardTemplateSource = `<script setup lang="ts">
|
|
72
|
+
import { UiSkeleton } from '@aleph-alpha/ui-library'
|
|
73
|
+
</script>
|
|
74
|
+
|
|
75
|
+
<template>
|
|
76
|
+
<div class="flex flex-col space-y-3">
|
|
77
|
+
<UiSkeleton class="h-[125px] w-[250px] rounded-xl" />
|
|
78
|
+
<div class="space-y-2">
|
|
79
|
+
<UiSkeleton class="h-4 w-[250px]" />
|
|
80
|
+
<UiSkeleton class="h-4 w-[200px]" />
|
|
81
|
+
</div>
|
|
82
|
+
</div>
|
|
83
|
+
</template>`;
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Card skeleton with image placeholder.
|
|
87
|
+
*/
|
|
88
|
+
export const Card: Story = {
|
|
89
|
+
render: (args) => ({
|
|
90
|
+
components: { UiSkeleton },
|
|
91
|
+
setup() {
|
|
92
|
+
return { args };
|
|
93
|
+
},
|
|
94
|
+
template: `<div class="flex flex-col space-y-3">
|
|
95
|
+
<UiSkeleton class="h-[125px] w-[250px] rounded-xl" />
|
|
96
|
+
<div class="space-y-2">
|
|
97
|
+
<UiSkeleton class="h-4 w-[250px]" />
|
|
98
|
+
<UiSkeleton class="h-4 w-[200px]" />
|
|
99
|
+
</div>
|
|
100
|
+
</div>`,
|
|
101
|
+
}),
|
|
102
|
+
parameters: {
|
|
103
|
+
docs: {
|
|
104
|
+
source: {
|
|
105
|
+
code: cardTemplateSource,
|
|
106
|
+
},
|
|
107
|
+
},
|
|
108
|
+
},
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
const textTemplateSource = `<script setup lang="ts">
|
|
112
|
+
import { UiSkeleton } from '@aleph-alpha/ui-library'
|
|
113
|
+
</script>
|
|
114
|
+
|
|
115
|
+
<template>
|
|
116
|
+
<div class="space-y-2">
|
|
117
|
+
<UiSkeleton class="h-4 w-full" />
|
|
118
|
+
<UiSkeleton class="h-4 w-full" />
|
|
119
|
+
<UiSkeleton class="h-4 w-3/4" />
|
|
120
|
+
</div>
|
|
121
|
+
</template>`;
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Text paragraph skeleton.
|
|
125
|
+
*/
|
|
126
|
+
export const TextBlock: Story = {
|
|
127
|
+
render: (args) => ({
|
|
128
|
+
components: { UiSkeleton },
|
|
129
|
+
setup() {
|
|
130
|
+
return { args };
|
|
131
|
+
},
|
|
132
|
+
template: `<div class="space-y-2 w-[300px]">
|
|
133
|
+
<UiSkeleton class="h-4 w-full" />
|
|
134
|
+
<UiSkeleton class="h-4 w-full" />
|
|
135
|
+
<UiSkeleton class="h-4 w-3/4" />
|
|
136
|
+
</div>`,
|
|
137
|
+
}),
|
|
138
|
+
parameters: {
|
|
139
|
+
docs: {
|
|
140
|
+
source: {
|
|
141
|
+
code: textTemplateSource,
|
|
142
|
+
},
|
|
143
|
+
},
|
|
144
|
+
},
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
const avatarTemplateSource = `<script setup lang="ts">
|
|
148
|
+
import { UiSkeleton } from '@aleph-alpha/ui-library'
|
|
149
|
+
</script>
|
|
150
|
+
|
|
151
|
+
<template>
|
|
152
|
+
<div class="flex space-x-2">
|
|
153
|
+
<UiSkeleton class="h-10 w-10" rounded />
|
|
154
|
+
<UiSkeleton class="h-10 w-10" rounded />
|
|
155
|
+
<UiSkeleton class="h-10 w-10" rounded />
|
|
156
|
+
</div>
|
|
157
|
+
</template>`;
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Avatar skeleton roundeds.
|
|
161
|
+
*/
|
|
162
|
+
export const Avatars: Story = {
|
|
163
|
+
render: (args) => ({
|
|
164
|
+
components: { UiSkeleton },
|
|
165
|
+
setup() {
|
|
166
|
+
return { args };
|
|
167
|
+
},
|
|
168
|
+
template: `<div class="flex space-x-2">
|
|
169
|
+
<UiSkeleton class="h-10 w-10" rounded />
|
|
170
|
+
<UiSkeleton class="h-10 w-10" rounded />
|
|
171
|
+
<UiSkeleton class="h-10 w-10" rounded />
|
|
172
|
+
</div>`,
|
|
173
|
+
}),
|
|
174
|
+
parameters: {
|
|
175
|
+
docs: {
|
|
176
|
+
source: {
|
|
177
|
+
code: avatarTemplateSource,
|
|
178
|
+
},
|
|
179
|
+
},
|
|
180
|
+
},
|
|
181
|
+
};
|
|
182
|
+
|
|
183
|
+
const tableTemplateSource = `<script setup lang="ts">
|
|
184
|
+
import { UiSkeleton } from '@aleph-alpha/ui-library'
|
|
185
|
+
</script>
|
|
186
|
+
|
|
187
|
+
<template>
|
|
188
|
+
<div class="space-y-4">
|
|
189
|
+
<div class="flex space-x-4">
|
|
190
|
+
<UiSkeleton class="h-8 w-[100px]" />
|
|
191
|
+
<UiSkeleton class="h-8 w-[150px]" />
|
|
192
|
+
<UiSkeleton class="h-8 w-[100px]" />
|
|
193
|
+
<UiSkeleton class="h-8 w-[80px]" />
|
|
194
|
+
</div>
|
|
195
|
+
<div class="flex space-x-4">
|
|
196
|
+
<UiSkeleton class="h-6 w-[100px]" />
|
|
197
|
+
<UiSkeleton class="h-6 w-[150px]" />
|
|
198
|
+
<UiSkeleton class="h-6 w-[100px]" />
|
|
199
|
+
<UiSkeleton class="h-6 w-[80px]" />
|
|
200
|
+
</div>
|
|
201
|
+
<div class="flex space-x-4">
|
|
202
|
+
<UiSkeleton class="h-6 w-[100px]" />
|
|
203
|
+
<UiSkeleton class="h-6 w-[150px]" />
|
|
204
|
+
<UiSkeleton class="h-6 w-[100px]" />
|
|
205
|
+
<UiSkeleton class="h-6 w-[80px]" />
|
|
206
|
+
</div>
|
|
207
|
+
</div>
|
|
208
|
+
</template>`;
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* Table skeleton with header and rows.
|
|
212
|
+
*/
|
|
213
|
+
export const Table: Story = {
|
|
214
|
+
render: (args) => ({
|
|
215
|
+
components: { UiSkeleton },
|
|
216
|
+
setup() {
|
|
217
|
+
return { args };
|
|
218
|
+
},
|
|
219
|
+
template: `<div class="space-y-4">
|
|
220
|
+
<div class="flex space-x-4">
|
|
221
|
+
<UiSkeleton class="h-8 w-[100px]" />
|
|
222
|
+
<UiSkeleton class="h-8 w-[150px]" />
|
|
223
|
+
<UiSkeleton class="h-8 w-[100px]" />
|
|
224
|
+
<UiSkeleton class="h-8 w-[80px]" />
|
|
225
|
+
</div>
|
|
226
|
+
<div class="flex space-x-4">
|
|
227
|
+
<UiSkeleton class="h-6 w-[100px]" />
|
|
228
|
+
<UiSkeleton class="h-6 w-[150px]" />
|
|
229
|
+
<UiSkeleton class="h-6 w-[100px]" />
|
|
230
|
+
<UiSkeleton class="h-6 w-[80px]" />
|
|
231
|
+
</div>
|
|
232
|
+
<div class="flex space-x-4">
|
|
233
|
+
<UiSkeleton class="h-6 w-[100px]" />
|
|
234
|
+
<UiSkeleton class="h-6 w-[150px]" />
|
|
235
|
+
<UiSkeleton class="h-6 w-[100px]" />
|
|
236
|
+
<UiSkeleton class="h-6 w-[80px]" />
|
|
237
|
+
</div>
|
|
238
|
+
</div>`,
|
|
239
|
+
}),
|
|
240
|
+
parameters: {
|
|
241
|
+
docs: {
|
|
242
|
+
source: {
|
|
243
|
+
code: tableTemplateSource,
|
|
244
|
+
},
|
|
245
|
+
},
|
|
246
|
+
},
|
|
247
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { Skeleton as ShadcnSkeleton } from '@/primitives/shadcn/skeleton';
|
|
3
|
+
import { computed } from 'vue';
|
|
4
|
+
import type { UiSkeletonProps } from './types';
|
|
5
|
+
|
|
6
|
+
defineOptions({
|
|
7
|
+
name: 'UiSkeleton',
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
const props = withDefaults(defineProps<UiSkeletonProps>(), {
|
|
11
|
+
rounded: false,
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
const style = computed(() => ({
|
|
15
|
+
width: props.width,
|
|
16
|
+
height: props.height,
|
|
17
|
+
}));
|
|
18
|
+
|
|
19
|
+
const classes = computed(() => (props.rounded ? 'rounded-full' : ''));
|
|
20
|
+
</script>
|
|
21
|
+
|
|
22
|
+
<template>
|
|
23
|
+
<ShadcnSkeleton :class="classes" :style="style" />
|
|
24
|
+
</template>
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { render } from '@testing-library/vue';
|
|
2
|
+
import { describe, expect, test } from 'vitest';
|
|
3
|
+
import UiSkeleton from '../UiSkeleton.vue';
|
|
4
|
+
|
|
5
|
+
describe('UiSkeleton', () => {
|
|
6
|
+
test('renders skeleton element', () => {
|
|
7
|
+
const { container } = render(UiSkeleton);
|
|
8
|
+
const skeleton = container.querySelector('[data-slot="skeleton"]');
|
|
9
|
+
expect(skeleton).toBeInTheDocument();
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
test('applies animate-pulse class for loading animation', () => {
|
|
13
|
+
const { container } = render(UiSkeleton);
|
|
14
|
+
const skeleton = container.querySelector('[data-slot="skeleton"]');
|
|
15
|
+
expect(skeleton).toHaveClass('animate-pulse');
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
test('applies rounded-full class when rounded prop is true', () => {
|
|
19
|
+
const { container } = render(UiSkeleton, {
|
|
20
|
+
props: { rounded: true },
|
|
21
|
+
});
|
|
22
|
+
const skeleton = container.querySelector('[data-slot="skeleton"]');
|
|
23
|
+
expect(skeleton).toHaveClass('rounded-full');
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
test('does not apply rounded-full class by default', () => {
|
|
27
|
+
const { container } = render(UiSkeleton);
|
|
28
|
+
const skeleton = container.querySelector('[data-slot="skeleton"]');
|
|
29
|
+
expect(skeleton).not.toHaveClass('rounded-full');
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
test('applies custom width style', () => {
|
|
33
|
+
const { container } = render(UiSkeleton, {
|
|
34
|
+
props: { width: '200px' },
|
|
35
|
+
});
|
|
36
|
+
const skeleton = container.querySelector('[data-slot="skeleton"]');
|
|
37
|
+
expect(skeleton).toHaveStyle({ width: '200px' });
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
test('applies custom height style', () => {
|
|
41
|
+
const { container } = render(UiSkeleton, {
|
|
42
|
+
props: { height: '50px' },
|
|
43
|
+
});
|
|
44
|
+
const skeleton = container.querySelector('[data-slot="skeleton"]');
|
|
45
|
+
expect(skeleton).toHaveStyle({ height: '50px' });
|
|
46
|
+
});
|
|
47
|
+
});
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A placeholder loading state for content. Use to indicate
|
|
3
|
+
* loading state while preserving layout structure.
|
|
4
|
+
*
|
|
5
|
+
* @category Feedback
|
|
6
|
+
* @useCases loading state, content placeholder, lazy loading, data fetching
|
|
7
|
+
* @keywords skeleton, loading, placeholder, shimmer, pulse, loader
|
|
8
|
+
* @related UiSpinner, UiProgress
|
|
9
|
+
*/
|
|
10
|
+
export interface UiSkeletonProps {
|
|
11
|
+
/**
|
|
12
|
+
* Custom width for the skeleton.
|
|
13
|
+
* Can be any valid CSS width value.
|
|
14
|
+
*/
|
|
15
|
+
width?: string;
|
|
16
|
+
/**
|
|
17
|
+
* Custom height for the skeleton.
|
|
18
|
+
* Can be any valid CSS height value.
|
|
19
|
+
*/
|
|
20
|
+
height?: string;
|
|
21
|
+
/**
|
|
22
|
+
* Whether to render as a rounded.
|
|
23
|
+
* @default false
|
|
24
|
+
*/
|
|
25
|
+
rounded?: boolean;
|
|
26
|
+
}
|
|
@@ -238,7 +238,7 @@ const invoices = [
|
|
|
238
238
|
<UiDropdownMenuTrigger as-child>
|
|
239
239
|
<UiButton variant="ghost" size="icon" class="h-8 w-8 p-0">
|
|
240
240
|
<span class="sr-only">Open menu</span>
|
|
241
|
-
<UiIcon
|
|
241
|
+
<UiIcon name="more-horizontal" :size="16" />
|
|
242
242
|
</UiButton>
|
|
243
243
|
</UiDropdownMenuTrigger>
|
|
244
244
|
<UiDropdownMenuContent align="end">
|
|
@@ -277,7 +277,7 @@ const withRowActionsTemplate = `
|
|
|
277
277
|
<UiDropdownMenuTrigger as-child>
|
|
278
278
|
<UiButton variant="ghost" size="icon" class="h-8 w-8 p-0">
|
|
279
279
|
<span class="sr-only">Open menu</span>
|
|
280
|
-
<UiIcon
|
|
280
|
+
<UiIcon name="more-horizontal" :size="16" />
|
|
281
281
|
</UiButton>
|
|
282
282
|
</UiDropdownMenuTrigger>
|
|
283
283
|
<UiDropdownMenuContent align="end">
|