+
@@ -238,6 +239,7 @@ defineExpose({
:validate-on="validateOn"
:disabled="disabled"
:loading-auto="loadingAuto"
+ data-slot="form"
:class="ui.form({ class: props.ui?.form })"
v-bind="$attrs"
@submit="onSubmit"
@@ -251,12 +253,14 @@ defineExpose({
@@ -264,6 +268,7 @@ defineExpose({
v-else-if="field.type === 'otp'"
:id="field.name"
v-model="state[field.name]"
+ data-slot="otp"
:class="ui.otp({ class: props.ui?.otp })"
v-bind="(Object.assign({}, omitFieldProps(field), typeof (field as AuthFormOtpField).otp === 'object' ? (field as AuthFormOtpField).otp : {}) as any)"
otp
@@ -272,6 +277,7 @@ defineExpose({
v-else-if="field.type === 'password'"
ref="passwordRef"
v-model="state[field.name]"
+ data-slot="password"
:class="ui.password({ class: props.ui?.password })"
v-bind="(omitFieldProps(field) as AuthFormInputField<'password'>)"
:type="passwordVisibility ? 'text' : 'password'"
@@ -292,6 +298,7 @@ defineExpose({
@@ -329,7 +336,7 @@ defineExpose({
-
+
diff --git a/src/runtime/components/Avatar.vue b/src/runtime/components/Avatar.vue
index e75eb6726f..2a0a94f938 100644
--- a/src/runtime/components/Avatar.vue
+++ b/src/runtime/components/Avatar.vue
@@ -98,6 +98,7 @@ function onError() {
:is="props.chip ? UChip : Primitive"
:as="as.root"
v-bind="props.chip ? (typeof props.chip === 'object' ? { inset: true, ...props.chip } : { inset: true }) : {}"
+ data-slot="root"
:class="ui.root({ class: [props.ui?.root, props.class] })"
:style="props.style"
>
@@ -109,14 +110,15 @@ function onError() {
:width="sizePx"
:height="sizePx"
v-bind="$attrs"
+ data-slot="image"
:class="ui.image({ class: props.ui?.image })"
@error="onError"
/>
-
- {{ fallback || ' ' }}
+
+ {{ fallback || ' ' }}
diff --git a/src/runtime/components/AvatarGroup.vue b/src/runtime/components/AvatarGroup.vue
index 722d5519ae..f55d355c60 100644
--- a/src/runtime/components/AvatarGroup.vue
+++ b/src/runtime/components/AvatarGroup.vue
@@ -93,8 +93,8 @@ provide(avatarGroupInjectionKey, computed(() => ({
-
-
-
+
+
+
diff --git a/src/runtime/components/Badge.vue b/src/runtime/components/Badge.vue
index 65f2148627..b7a92099c2 100644
--- a/src/runtime/components/Badge.vue
+++ b/src/runtime/components/Badge.vue
@@ -68,20 +68,20 @@ const ui = computed(() => tv({ extend: tv(theme), ...(appConfig.ui?.badge || {})
-
+
-
-
+
+
-
+
{{ label }}
-
+
diff --git a/src/runtime/components/Banner.vue b/src/runtime/components/Banner.vue
index 6b68d05756..fbb05a7add 100644
--- a/src/runtime/components/Banner.vue
+++ b/src/runtime/components/Banner.vue
@@ -119,7 +119,7 @@ function onClose() {
-
+
-
-
+
+
-
+
-
+
-
+
{{ title }}
-
-
+
diff --git a/src/runtime/components/BlogPost.vue b/src/runtime/components/BlogPost.vue
index 5d5c50a1e4..4009c16a33 100644
--- a/src/runtime/components/BlogPost.vue
+++ b/src/runtime/components/BlogPost.vue
@@ -115,18 +115,19 @@ const ariaLabel = computed(() => {
-
-
+
+
-
+
{
-
+
-
+
-
-
+
{{ title }}
-
+
{{ description }}
-
+
@@ -172,6 +180,7 @@ const ariaLabel = computed(() => {
:key="index"
:to="author.to"
:target="author.target"
+ data-slot="avatar"
:class="ui.avatar({ class: props.ui?.avatar, to: !!author.to })"
raw
>
@@ -185,7 +194,7 @@ const ariaLabel = computed(() => {
-
+
diff --git a/src/runtime/components/Breadcrumb.vue b/src/runtime/components/Breadcrumb.vue
index aa275dc3c7..433d0fa5bd 100644
--- a/src/runtime/components/Breadcrumb.vue
+++ b/src/runtime/components/Breadcrumb.vue
@@ -86,19 +86,19 @@ const ui = computed(() => tv({ extend: tv(theme), ...(appConfig.ui?.breadcrumb |
-
-
+
+
- -
+
-
-
+
-
-
+
+
-
+
{{ get(item, props.labelKey as string) }}
@@ -110,9 +110,9 @@ const ui = computed(() => tv({ extend: tv(theme), ...(appConfig.ui?.breadcrumb |
- -
+
-
-
+
diff --git a/src/runtime/components/Button.vue b/src/runtime/components/Button.vue
index c79fb7d4d2..defb42f768 100644
--- a/src/runtime/components/Button.vue
+++ b/src/runtime/components/Button.vue
@@ -124,6 +124,7 @@ const ui = computed(() => tv({
>
-
-
+
+
-
+
{{ label }}
-
+
diff --git a/src/runtime/components/Calendar.vue b/src/runtime/components/Calendar.vue
index 26f880b584..171de5f1c8 100644
--- a/src/runtime/components/Calendar.vue
+++ b/src/runtime/components/Calendar.vue
@@ -160,16 +160,17 @@ const Calendar = computed(() => props.range ? RangeCalendar : SingleCalendar)
v-bind="rootProps"
:model-value="(modelValue as DateValue | DateValue[])"
:default-value="(defaultValue as DateValue)"
+ data-slot="root"
:class="ui.root({ class: [props.ui?.root, props.class] })"
>
-
+
-
+
{{ headingValue }}
@@ -181,17 +182,19 @@ const Calendar = computed(() => props.range ? RangeCalendar : SingleCalendar)
-
+
-
+
@@ -200,21 +203,24 @@ const Calendar = computed(() => props.range ? RangeCalendar : SingleCalendar)
-
+
diff --git a/src/runtime/components/Card.vue b/src/runtime/components/Card.vue
index 2e53d39dcc..7fe8ceb53e 100644
--- a/src/runtime/components/Card.vue
+++ b/src/runtime/components/Card.vue
@@ -43,16 +43,16 @@ const ui = computed(() => tv({ extend: tv(theme), ...(appConfig.ui?.card || {})
-
-
+
+
-
+
-
+
diff --git a/src/runtime/components/Carousel.vue b/src/runtime/components/Carousel.vue
index 75191d0031..ae416d53cb 100644
--- a/src/runtime/components/Carousel.vue
+++ b/src/runtime/components/Carousel.vue
@@ -315,15 +315,17 @@ defineExpose({
aria-roledescription="carousel"
:data-orientation="orientation"
tabindex="0"
+ data-slot="root"
:class="ui.root({ class: [props.ui?.root, props.class] })"
@keydown="onKeyDown"
>
-
-
+
+
@@ -331,8 +333,8 @@ defineExpose({
-
-
+
+
@@ -350,18 +353,20 @@ defineExpose({
variant="outline"
:aria-label="t('carousel.next')"
v-bind="typeof next === 'object' ? next : undefined"
+ data-slot="next"
:class="ui.next({ class: props.ui?.next })"
@click="scrollNext"
/>
-
+