@nuxt/ui 4.10.0 → 4.11.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/.nuxt/ui.static.css +11 -11
- package/README.md +1 -0
- package/cli/commands/make/locale.mjs +40 -11
- package/cli/templates.mjs +2 -2
- package/dist/module.d.mts +1 -1
- package/dist/module.json +2 -2
- package/dist/module.mjs +5 -2
- package/dist/runtime/components/AuthForm.d.vue.ts +7 -7
- package/dist/runtime/components/AuthForm.vue.d.ts +7 -7
- package/dist/runtime/components/Button.vue +11 -2
- package/dist/runtime/components/Carousel.d.vue.ts +6 -6
- package/dist/runtime/components/Carousel.vue.d.ts +6 -6
- package/dist/runtime/components/ChatMessages.d.vue.ts +2 -2
- package/dist/runtime/components/ChatMessages.vue.d.ts +2 -2
- package/dist/runtime/components/ChatPromptSubmit.d.vue.ts +2 -2
- package/dist/runtime/components/ChatPromptSubmit.vue.d.ts +2 -2
- package/dist/runtime/components/Checkbox.d.vue.ts +1 -1
- package/dist/runtime/components/Checkbox.vue +12 -6
- package/dist/runtime/components/Checkbox.vue.d.ts +1 -1
- package/dist/runtime/components/CheckboxGroup.d.vue.ts +6 -0
- package/dist/runtime/components/CheckboxGroup.vue +10 -4
- package/dist/runtime/components/CheckboxGroup.vue.d.ts +6 -0
- package/dist/runtime/components/Editor.vue +4 -1
- package/dist/runtime/components/Error.d.vue.ts +1 -1
- package/dist/runtime/components/Error.vue.d.ts +1 -1
- package/dist/runtime/components/FileUpload.vue +17 -10
- package/dist/runtime/components/Form.vue +1 -1
- package/dist/runtime/components/Input.vue +12 -7
- package/dist/runtime/components/InputDate.vue +12 -8
- package/dist/runtime/components/InputMenu.vue +25 -11
- package/dist/runtime/components/InputNumber.vue +22 -14
- package/dist/runtime/components/InputRating.vue +10 -7
- package/dist/runtime/components/InputTags.vue +12 -7
- package/dist/runtime/components/InputTime.vue +12 -7
- package/dist/runtime/components/Link.vue +61 -7
- package/dist/runtime/components/Listbox.vue +10 -6
- package/dist/runtime/components/Modal.vue +12 -5
- package/dist/runtime/components/NavigationMenu.vue +10 -10
- package/dist/runtime/components/PinInput.vue +13 -8
- package/dist/runtime/components/Popover.vue +0 -1
- package/dist/runtime/components/PricingTable.d.vue.ts +1 -1
- package/dist/runtime/components/PricingTable.vue.d.ts +1 -1
- package/dist/runtime/components/Progress.d.vue.ts +2 -1
- package/dist/runtime/components/Progress.vue +5 -6
- package/dist/runtime/components/Progress.vue.d.ts +2 -1
- package/dist/runtime/components/ProgressGroup.d.vue.ts +91 -0
- package/dist/runtime/components/ProgressGroup.vue +99 -0
- package/dist/runtime/components/ProgressGroup.vue.d.ts +91 -0
- package/dist/runtime/components/RadioGroup.d.vue.ts +7 -1
- package/dist/runtime/components/RadioGroup.vue +14 -5
- package/dist/runtime/components/RadioGroup.vue.d.ts +7 -1
- package/dist/runtime/components/Select.d.vue.ts +2 -0
- package/dist/runtime/components/Select.vue +23 -8
- package/dist/runtime/components/Select.vue.d.ts +2 -0
- package/dist/runtime/components/SelectMenu.d.vue.ts +3 -0
- package/dist/runtime/components/SelectMenu.vue +35 -14
- package/dist/runtime/components/SelectMenu.vue.d.ts +3 -0
- package/dist/runtime/components/Slider.vue +15 -8
- package/dist/runtime/components/Splitter.d.vue.ts +266 -0
- package/dist/runtime/components/Splitter.vue +99 -0
- package/dist/runtime/components/Splitter.vue.d.ts +266 -0
- package/dist/runtime/components/Switch.vue +8 -4
- package/dist/runtime/components/Table.vue +5 -5
- package/dist/runtime/components/Textarea.vue +17 -7
- package/dist/runtime/components/Theme.d.vue.ts +1 -1
- package/dist/runtime/components/Theme.vue +4 -3
- package/dist/runtime/components/Theme.vue.d.ts +1 -1
- package/dist/runtime/components/Tree.vue +1 -1
- package/dist/runtime/components/color-mode/ColorModeSelect.vue +1 -0
- package/dist/runtime/components/content/ContentNavigation.vue +8 -1
- package/dist/runtime/components/content/ContentToc.vue +4 -1
- package/dist/runtime/components/locale/LocaleSelect.vue +1 -0
- package/dist/runtime/components/prose/CodeTree.vue +31 -18
- package/dist/runtime/composables/useComponentProps.d.ts +1 -1
- package/dist/runtime/composables/useComponentProps.js +6 -0
- package/dist/runtime/composables/useFormField.d.ts +10 -4
- package/dist/runtime/composables/useFormField.js +10 -3
- package/dist/runtime/keyframes.css +1 -1
- package/dist/runtime/locale/da.js +1 -1
- package/dist/runtime/locale/de_at.js +7 -0
- package/dist/runtime/locale/de_ch.js +1 -1
- package/dist/runtime/locale/eu.js +1 -1
- package/dist/runtime/locale/fi.js +1 -1
- package/dist/runtime/locale/he.js +1 -1
- package/dist/runtime/locale/hi.js +1 -1
- package/dist/runtime/locale/index.d.ts +2 -1
- package/dist/runtime/locale/index.js +2 -1
- package/dist/runtime/locale/is.js +1 -1
- package/dist/runtime/locale/lb.js +1 -1
- package/dist/runtime/locale/tg.d.ts +3 -0
- package/dist/runtime/locale/{tj.js → tg.js} +1 -1
- package/dist/runtime/locale/ur.js +1 -1
- package/dist/runtime/types/form.d.ts +1 -1
- package/dist/runtime/types/html.d.ts +3 -1
- package/dist/runtime/types/index.d.ts +2 -0
- package/dist/runtime/types/index.js +2 -0
- package/dist/runtime/types/theme.d.ts +2 -0
- package/dist/runtime/types/tv.d.ts +6 -2
- package/dist/runtime/utils/form.d.ts +1 -1
- package/dist/runtime/utils/form.js +3 -1
- package/dist/runtime/utils/link-keys.d.ts +1 -0
- package/dist/runtime/utils/link-keys.js +40 -0
- package/dist/runtime/utils/link.d.ts +2 -1
- package/dist/runtime/utils/link.js +2 -40
- package/dist/runtime/utils/prefetch.d.ts +5 -0
- package/dist/runtime/utils/prefetch.js +45 -0
- package/dist/runtime/utils/search.js +11 -18
- package/dist/runtime/utils/tv.d.ts +1 -1
- package/dist/runtime/utils/tv.js +103 -25
- package/dist/runtime/vue/components/Icon.vue +5 -2
- package/dist/runtime/vue/components/color-mode/ColorModeSelect.vue +1 -0
- package/dist/shared/{ui.XkBrgXFP.mjs → ui.DCJ9twx8.mjs} +597 -220
- package/dist/unplugin.d.mts +1 -1
- package/dist/unplugin.mjs +22 -6
- package/dist/vite.mjs +4 -4
- package/package.json +54 -53
- /package/dist/runtime/locale/{tj.d.ts → de_at.d.ts} +0 -0
|
@@ -359,7 +359,7 @@ defineExpose({
|
|
|
359
359
|
</tr>
|
|
360
360
|
|
|
361
361
|
<tr v-if="row.getIsExpanded()" data-slot="tr" :class="ui.tr({ class: [props.ui?.tr] })">
|
|
362
|
-
<td :colspan="row.
|
|
362
|
+
<td :colspan="row.getVisibleCells().length" data-slot="td" :class="ui.td({ class: [props.ui?.td] })">
|
|
363
363
|
<slot name="expanded" :row="row" />
|
|
364
364
|
</td>
|
|
365
365
|
</tr>
|
|
@@ -412,7 +412,7 @@ defineExpose({
|
|
|
412
412
|
|
|
413
413
|
<template v-if="virtualizer">
|
|
414
414
|
<tr v-if="virtualPaddingTop > 0" :style="{ height: `${virtualPaddingTop}px` }" aria-hidden="true">
|
|
415
|
-
<td :colspan="tableApi.
|
|
415
|
+
<td :colspan="tableApi.getVisibleLeafColumns().length" />
|
|
416
416
|
</tr>
|
|
417
417
|
<template v-for="virtualRow in virtualItems" :key="centerRows[virtualRow.index]?.id ?? `virtual-${virtualRow.index}`">
|
|
418
418
|
<ReuseRowTemplate
|
|
@@ -422,7 +422,7 @@ defineExpose({
|
|
|
422
422
|
/>
|
|
423
423
|
</template>
|
|
424
424
|
<tr v-if="virtualPaddingBottom > 0" :style="{ height: `${virtualPaddingBottom}px` }" aria-hidden="true">
|
|
425
|
-
<td :colspan="tableApi.
|
|
425
|
+
<td :colspan="tableApi.getVisibleLeafColumns().length" />
|
|
426
426
|
</tr>
|
|
427
427
|
</template>
|
|
428
428
|
|
|
@@ -434,13 +434,13 @@ defineExpose({
|
|
|
434
434
|
</template>
|
|
435
435
|
|
|
436
436
|
<tr v-else-if="props.loading && !!slots['loading']">
|
|
437
|
-
<td :colspan="tableApi.
|
|
437
|
+
<td :colspan="tableApi.getVisibleLeafColumns().length" data-slot="loading" :class="ui.loading({ class: props.ui?.loading })">
|
|
438
438
|
<slot name="loading" />
|
|
439
439
|
</td>
|
|
440
440
|
</tr>
|
|
441
441
|
|
|
442
442
|
<tr v-else>
|
|
443
|
-
<td :colspan="tableApi.
|
|
443
|
+
<td :colspan="tableApi.getVisibleLeafColumns().length" data-slot="empty" :class="ui.empty({ class: props.ui?.empty })">
|
|
444
444
|
<slot name="empty">
|
|
445
445
|
{{ props.empty || t("table.noData") }}
|
|
446
446
|
</slot>
|
|
@@ -3,7 +3,7 @@ import theme from "#build/ui/textarea";
|
|
|
3
3
|
</script>
|
|
4
4
|
|
|
5
5
|
<script setup>
|
|
6
|
-
import { useTemplateRef, computed, onMounted, nextTick, watch } from "vue";
|
|
6
|
+
import { useTemplateRef, computed, onMounted, onScopeDispose, nextTick, watch } from "vue";
|
|
7
7
|
import { Primitive } from "reka-ui";
|
|
8
8
|
import { useVModel } from "@vueuse/core";
|
|
9
9
|
import { useAppConfig } from "#imports";
|
|
@@ -52,14 +52,18 @@ const slots = defineSlots();
|
|
|
52
52
|
const props = useComponentProps("textarea", _props);
|
|
53
53
|
const modelValue = useVModel(props, "modelValue", emits, { defaultValue: props.defaultValue });
|
|
54
54
|
const appConfig = useAppConfig();
|
|
55
|
-
const { emitFormFocus, emitFormBlur, emitFormInput, emitFormChange, size, color, id, name, highlight, disabled, ariaAttrs } = useFormField(_props, { deferInputValidation: true });
|
|
55
|
+
const { emitFormFocus, emitFormBlur, emitFormInput, emitFormChange, size: formFieldSize, color: formFieldColor, id, name, highlight: formFieldHighlight, disabled: formFieldDisabled, ariaAttrs } = useFormField(_props, { deferInputValidation: true });
|
|
56
|
+
const color = computed(() => formFieldColor.value ?? props.color);
|
|
57
|
+
const highlight = computed(() => formFieldHighlight.value ?? props.highlight);
|
|
58
|
+
const size = computed(() => formFieldSize.value ?? props.size);
|
|
59
|
+
const disabled = computed(() => formFieldDisabled.value ?? props.disabled);
|
|
56
60
|
const { isLeading, isTrailing, leadingIconName, trailingIconName } = useComponentIcons(props);
|
|
57
61
|
const ui = computed(() => tv({ extend: theme, ...appConfig.ui?.textarea || {} })({
|
|
58
|
-
color: color.value
|
|
62
|
+
color: color.value,
|
|
59
63
|
variant: props.variant,
|
|
60
|
-
size: size
|
|
64
|
+
size: size.value,
|
|
61
65
|
loading: props.loading,
|
|
62
|
-
highlight: highlight.value
|
|
66
|
+
highlight: highlight.value,
|
|
63
67
|
fixed: props.fixed,
|
|
64
68
|
autoresize: props.autoresize,
|
|
65
69
|
leading: isLeading.value || !!props.avatar || !!slots.leading,
|
|
@@ -129,15 +133,21 @@ function autoResize() {
|
|
|
129
133
|
watch(modelValue, () => {
|
|
130
134
|
nextTick(autoResize);
|
|
131
135
|
});
|
|
136
|
+
let autofocusTimeoutId;
|
|
137
|
+
let autoresizeTimeoutId;
|
|
132
138
|
onMounted(() => {
|
|
133
|
-
setTimeout(() => {
|
|
139
|
+
autofocusTimeoutId = setTimeout(() => {
|
|
134
140
|
autoFocus();
|
|
135
141
|
}, props.autofocusDelay);
|
|
136
|
-
setTimeout(async () => {
|
|
142
|
+
autoresizeTimeoutId = setTimeout(async () => {
|
|
137
143
|
await nextTick();
|
|
138
144
|
autoResize();
|
|
139
145
|
}, props.autoresizeDelay);
|
|
140
146
|
});
|
|
147
|
+
onScopeDispose(() => {
|
|
148
|
+
clearTimeout(autofocusTimeoutId);
|
|
149
|
+
clearTimeout(autoresizeTimeoutId);
|
|
150
|
+
});
|
|
141
151
|
defineExpose({
|
|
142
152
|
textareaRef,
|
|
143
153
|
autoResize
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
<script>
|
|
2
|
-
|
|
3
|
-
import defu from "defu";
|
|
4
|
-
import { injectThemeContext, provideThemeContext } from "../composables/useComponentProps";
|
|
2
|
+
|
|
5
3
|
</script>
|
|
6
4
|
|
|
7
5
|
<script setup>
|
|
6
|
+
import { computed } from "vue";
|
|
7
|
+
import defu from "defu";
|
|
8
|
+
import { injectThemeContext, provideThemeContext } from "../composables/useComponentProps";
|
|
8
9
|
const _props = defineProps({
|
|
9
10
|
props: { type: Object, required: false },
|
|
10
11
|
ui: { type: null, required: false }
|
|
@@ -142,7 +142,7 @@ defineExpose({
|
|
|
142
142
|
:disabled="item.disabled || props.disabled"
|
|
143
143
|
data-slot="link"
|
|
144
144
|
:class="ui.link({ class: [props.ui?.link, item.ui?.link, item.class], selected: isSelected, disabled: item.disabled || props.disabled })"
|
|
145
|
-
:style="!nested && level > 1 ? {
|
|
145
|
+
:style="!nested && level > 1 ? { paddingInlineStart: flattenedPaddingFormula(level) } : void 0"
|
|
146
146
|
>
|
|
147
147
|
<slot
|
|
148
148
|
:name="item.slot || 'item'"
|
|
@@ -32,6 +32,7 @@ const props = defineProps({
|
|
|
32
32
|
modelModifiers: { type: null, required: false },
|
|
33
33
|
multiple: { type: Boolean, required: false },
|
|
34
34
|
highlight: { type: Boolean, required: false },
|
|
35
|
+
fixed: { type: Boolean, required: false },
|
|
35
36
|
createItem: { type: [Boolean, String, Object], required: false },
|
|
36
37
|
filterFields: { type: Array, required: false },
|
|
37
38
|
ignoreFilter: { type: Boolean, required: false },
|
|
@@ -106,7 +106,14 @@ const defaultValue = computed(() => {
|
|
|
106
106
|
</DefineLinkTemplate>
|
|
107
107
|
|
|
108
108
|
<Primitive :as="props.as" data-slot="root" v-bind="$attrs" :as-child="props.level > 0" :class="ui.root({ class: [props.ui?.root, props.class] })">
|
|
109
|
-
<AccordionRoot
|
|
109
|
+
<AccordionRoot
|
|
110
|
+
as="ul"
|
|
111
|
+
:disabled="disabled"
|
|
112
|
+
v-bind="rootProps"
|
|
113
|
+
:model-value="disabled ? defaultValue : void 0"
|
|
114
|
+
:default-value="disabled ? void 0 : defaultValue"
|
|
115
|
+
:class="props.level > 0 ? ui.listWithChildren({ class: props.ui?.listWithChildren }) : ui.list({ class: props.ui?.list })"
|
|
116
|
+
>
|
|
110
117
|
<template v-for="(link, index) in props.navigation" :key="`${index}-${link.path}`">
|
|
111
118
|
<AccordionItem
|
|
112
119
|
v-if="link.children?.length"
|
|
@@ -76,6 +76,9 @@ const activeIndex = computed(() => {
|
|
|
76
76
|
}
|
|
77
77
|
return flattenLinks(props.links || []).findIndex((link) => activeHeadings.value.includes(link.id));
|
|
78
78
|
});
|
|
79
|
+
const listStyle = computed(() => ({
|
|
80
|
+
"--list-height": `${flattenLinks(props.links || []).length * linkHeight}rem`
|
|
81
|
+
}));
|
|
79
82
|
const indicatorStyle = computed(() => {
|
|
80
83
|
if (!activeHeadings.value?.length) {
|
|
81
84
|
return;
|
|
@@ -219,7 +222,7 @@ onUnmounted(() => {
|
|
|
219
222
|
<ReuseTriggerTemplate :open="open" />
|
|
220
223
|
</p>
|
|
221
224
|
|
|
222
|
-
<div ref="contentRef" data-slot="content" :class="ui.content({ class: [props.ui?.content, prefix('hidden lg:flex')] })" :style="scrollShadowStyle">
|
|
225
|
+
<div ref="contentRef" data-slot="content" :class="ui.content({ class: [props.ui?.content, prefix('hidden lg:flex')] })" :style="[listStyle, scrollShadowStyle]">
|
|
223
226
|
<ReuseContentTemplate />
|
|
224
227
|
</div>
|
|
225
228
|
</template>
|
|
@@ -31,6 +31,7 @@ const props = defineProps({
|
|
|
31
31
|
modelModifiers: { type: null, required: false },
|
|
32
32
|
multiple: { type: Boolean, required: false },
|
|
33
33
|
highlight: { type: Boolean, required: false },
|
|
34
|
+
fixed: { type: Boolean, required: false },
|
|
34
35
|
createItem: { type: [Boolean, String, Object], required: false },
|
|
35
36
|
filterFields: { type: Array, required: false },
|
|
36
37
|
ignoreFilter: { type: Boolean, required: false },
|
|
@@ -3,7 +3,7 @@ import theme from "#build/ui/prose/code-tree";
|
|
|
3
3
|
</script>
|
|
4
4
|
|
|
5
5
|
<script setup>
|
|
6
|
-
import { computed, watch, onBeforeUpdate, ref } from "vue";
|
|
6
|
+
import { computed, watch, onBeforeUpdate, onMounted, ref } from "vue";
|
|
7
7
|
import { TreeRoot, TreeItem } from "reka-ui";
|
|
8
8
|
import { createReusableTemplate } from "@vueuse/core";
|
|
9
9
|
import { useAppConfig } from "#imports";
|
|
@@ -28,7 +28,6 @@ const [DefineTreeTemplate, ReuseTreeTemplate] = createReusableTemplate();
|
|
|
28
28
|
const ui = computed(() => tv({ extend: theme, ...appConfig.ui?.prose?.codeTree || {} })());
|
|
29
29
|
const initialPath = props.modelValue ?? props.defaultValue;
|
|
30
30
|
const model = ref(initialPath ? { path: initialPath } : void 0);
|
|
31
|
-
const lastSelectedItem = ref();
|
|
32
31
|
watch(model, (value) => {
|
|
33
32
|
if (value?.path !== props.modelValue) {
|
|
34
33
|
emits("update:modelValue", value?.path);
|
|
@@ -37,12 +36,13 @@ watch(model, (value) => {
|
|
|
37
36
|
watch(() => props.modelValue, (value) => {
|
|
38
37
|
if (value === model.value?.path) return;
|
|
39
38
|
model.value = value ? { path: value } : void 0;
|
|
40
|
-
const
|
|
41
|
-
for (const path of
|
|
42
|
-
if (!
|
|
43
|
-
|
|
39
|
+
const next = [...expanded.value];
|
|
40
|
+
for (const path of getExpandedPaths(value)) {
|
|
41
|
+
if (!next.includes(path)) {
|
|
42
|
+
next.push(path);
|
|
44
43
|
}
|
|
45
44
|
}
|
|
45
|
+
expanded.value = next;
|
|
46
46
|
});
|
|
47
47
|
const rerenderCount = ref(1);
|
|
48
48
|
const flatItems = computed(() => {
|
|
@@ -101,21 +101,34 @@ function getExpandedPaths(path) {
|
|
|
101
101
|
const parts = path.split("/");
|
|
102
102
|
return parts.slice(0, -1).map((_, index) => parts.slice(0, index + 1).join("/"));
|
|
103
103
|
}
|
|
104
|
-
const
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
if (newLabels !== oldLabels) {
|
|
110
|
-
expanded.value = getExpandedPaths();
|
|
104
|
+
const expandedOverride = ref(props.expandAll ? null : getExpandedPaths(model.value?.path));
|
|
105
|
+
const expanded = computed({
|
|
106
|
+
get: () => expandedOverride.value ?? getExpandedPaths(),
|
|
107
|
+
set: (value) => {
|
|
108
|
+
expandedOverride.value = value;
|
|
111
109
|
}
|
|
112
110
|
});
|
|
113
|
-
watch(
|
|
114
|
-
|
|
111
|
+
watch(() => props.expandAll, (value) => {
|
|
112
|
+
expandedOverride.value = value ? null : getExpandedPaths(model.value?.path);
|
|
113
|
+
});
|
|
114
|
+
onMounted(() => {
|
|
115
|
+
watch(flatItems, (newItems, oldItems) => {
|
|
116
|
+
if (!props.expandAll) return;
|
|
117
|
+
const newLabels = newItems.map((i) => i.label).join("\n");
|
|
118
|
+
const oldLabels = oldItems?.map((i) => i.label).join("\n") ?? "";
|
|
119
|
+
if (newLabels !== oldLabels) {
|
|
120
|
+
expandedOverride.value = null;
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
let lastFile;
|
|
125
|
+
const currentFile = computed(() => {
|
|
126
|
+
const item = flatItems.value.find((item2) => model.value?.path === item2.label);
|
|
115
127
|
if (item?.component) {
|
|
116
|
-
|
|
128
|
+
lastFile = item;
|
|
117
129
|
}
|
|
118
|
-
|
|
130
|
+
return lastFile;
|
|
131
|
+
});
|
|
119
132
|
onBeforeUpdate(() => rerenderCount.value++);
|
|
120
133
|
</script>
|
|
121
134
|
|
|
@@ -183,7 +196,7 @@ onBeforeUpdate(() => rerenderCount.value++);
|
|
|
183
196
|
</TreeRoot>
|
|
184
197
|
|
|
185
198
|
<div :class="ui.content({ class: props.ui?.content })">
|
|
186
|
-
<component :is="
|
|
199
|
+
<component :is="currentFile?.component" />
|
|
187
200
|
</div>
|
|
188
201
|
</div>
|
|
189
202
|
</template>
|
|
@@ -20,7 +20,7 @@ export { provideThemeContext };
|
|
|
20
20
|
* defaults. The component's tv() `defaultVariants` are intentionally left out
|
|
21
21
|
* of the proxy fallback — they continue to drive `tv()`-internal class
|
|
22
22
|
* resolution (the original semantics) without leaking into prop reads. The
|
|
23
|
-
* `ui`
|
|
23
|
+
* `ui` and `class` props are merged (explicit classes override theme classes)
|
|
24
24
|
* instead of being replaced.
|
|
25
25
|
*/
|
|
26
26
|
export declare function useComponentProps<T extends object>(name: string, props: T): T;
|
|
@@ -37,6 +37,12 @@ export function useComponentProps(name, props) {
|
|
|
37
37
|
if (!raw && !themeUi) return raw;
|
|
38
38
|
return defu(raw ?? {}, themeUi ?? {});
|
|
39
39
|
}
|
|
40
|
+
if (prop === "class") {
|
|
41
|
+
const themeClass = themeEntry?.class;
|
|
42
|
+
if (themeClass === void 0) return raw;
|
|
43
|
+
if (raw === void 0) return themeClass;
|
|
44
|
+
return [themeClass, raw];
|
|
45
|
+
}
|
|
40
46
|
if (vm && propIsDefined(vm.vnode, prop)) return raw;
|
|
41
47
|
const themeValue = themeEntry?.[prop];
|
|
42
48
|
if (themeValue !== void 0) return themeValue;
|
|
@@ -37,10 +37,16 @@ export declare const formErrorsInjectionKey: InjectionKey<Readonly<Ref<FormError
|
|
|
37
37
|
* ```ts
|
|
38
38
|
* size: size.value ?? props.size,
|
|
39
39
|
* color: color.value ?? props.color,
|
|
40
|
-
* highlight: highlight.value ?? props.highlight
|
|
40
|
+
* highlight: highlight.value ?? props.highlight,
|
|
41
|
+
* disabled: disabled.value ?? props.disabled
|
|
41
42
|
* ```
|
|
42
43
|
*
|
|
43
|
-
*
|
|
44
|
+
* `highlight` and `disabled` are Boolean props, which Vue auto-casts to `false`
|
|
45
|
+
* when unset, so they are normalized back to `undefined` here. Otherwise the
|
|
46
|
+
* `??` above would short-circuit on `false` and the proxy would never be read.
|
|
47
|
+
*
|
|
48
|
+
* Final precedence: `explicit > FormField > <UTheme :props> > app.config > withDefaults > tv defaults`,
|
|
49
|
+
* matching what `useComponentProps` resolves.
|
|
44
50
|
*/
|
|
45
51
|
export declare function useFormField<T>(props?: Props<T>, opts?: {
|
|
46
52
|
bind?: boolean;
|
|
@@ -50,8 +56,8 @@ export declare function useFormField<T>(props?: Props<T>, opts?: {
|
|
|
50
56
|
name: ComputedRef<string | undefined>;
|
|
51
57
|
size: ComputedRef<"xs" | "sm" | "md" | "lg" | "xl" | NonNullable<GetObjectField<T, "size">> | undefined>;
|
|
52
58
|
color: ComputedRef<"error" | GetObjectField<T, "color"> | undefined>;
|
|
53
|
-
highlight: ComputedRef<
|
|
54
|
-
disabled: ComputedRef<
|
|
59
|
+
highlight: ComputedRef<true | undefined>;
|
|
60
|
+
disabled: ComputedRef<true | undefined>;
|
|
55
61
|
emitFormBlur: () => void;
|
|
56
62
|
emitFormInput: import("@vueuse/shared").UseDebounceFnReturn<() => void>;
|
|
57
63
|
emitFormChange: () => void;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { inject, computed, provide } from "vue";
|
|
1
|
+
import { inject, computed, provide, getCurrentScope, onScopeDispose } from "vue";
|
|
2
2
|
import { useDebounceFn } from "@vueuse/core";
|
|
3
3
|
export const formOptionsInjectionKey = Symbol("nuxt-ui.form-options");
|
|
4
4
|
export const formBusInjectionKey = Symbol("nuxt-ui.form-events");
|
|
@@ -35,8 +35,15 @@ export function useFormField(props, opts) {
|
|
|
35
35
|
function emitFormChange() {
|
|
36
36
|
emitFormEvent("change", formField?.value.name);
|
|
37
37
|
}
|
|
38
|
+
let disposed = false;
|
|
39
|
+
if (getCurrentScope()) {
|
|
40
|
+
onScopeDispose(() => {
|
|
41
|
+
disposed = true;
|
|
42
|
+
});
|
|
43
|
+
}
|
|
38
44
|
const emitFormInput = useDebounceFn(
|
|
39
45
|
() => {
|
|
46
|
+
if (disposed) return;
|
|
40
47
|
emitFormEvent("input", formField?.value.name, !opts?.deferInputValidation || formField?.value.eagerValidation);
|
|
41
48
|
},
|
|
42
49
|
formField?.value.validateOnInputDelay ?? formOptions?.value.validateOnInputDelay ?? 0
|
|
@@ -46,8 +53,8 @@ export function useFormField(props, opts) {
|
|
|
46
53
|
name: computed(() => props?.name ?? formField?.value.name),
|
|
47
54
|
size: computed(() => props?.size ?? formField?.value.size),
|
|
48
55
|
color: computed(() => formField?.value.error ? "error" : props?.color),
|
|
49
|
-
highlight: computed(() => formField?.value.error ? true : props?.highlight),
|
|
50
|
-
disabled: computed(() => formOptions?.value.disabled || props?.disabled),
|
|
56
|
+
highlight: computed(() => formField?.value.error ? true : props?.highlight || void 0),
|
|
57
|
+
disabled: computed(() => formOptions?.value.disabled || props?.disabled || void 0),
|
|
51
58
|
emitFormBlur,
|
|
52
59
|
emitFormInput,
|
|
53
60
|
emitFormChange,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
@keyframes accordion-up{0%{height:var(--reka-accordion-content-height);overflow:hidden}to{height:0;overflow:hidden}}@keyframes accordion-down{0%{height:0;overflow:hidden}to{height:var(--reka-accordion-content-height);overflow:hidden}}@keyframes collapsible-up{0%{height:var(--reka-collapsible-content-height);overflow:hidden}to{height:0;overflow:hidden}}@keyframes collapsible-down{0%{height:0;overflow:hidden}to{height:var(--reka-collapsible-content-height);overflow:hidden}}@keyframes toast-slide-in-from-top{0%{transform:translateY(-100%)}to{transform:var(--transform)}}@keyframes toast-slide-in-from-bottom{0%{transform:translateY(100%)}to{transform:var(--transform)}}@keyframes toast-slide-up{0%{transform:translateX(0) translateY(var(--translate))}to{transform:translateX(0) translateY(calc(var(--translate) - 100%))}}@keyframes toast-slide-down{0%{transform:translateX(0) translateY(var(--translate))}to{transform:translateX(0) translateY(calc(var(--translate) + 100%))}}@keyframes toast-pulse-a{0%,to{scale:1}50%{scale:1.04}}@keyframes toast-pulse-b{0%,to{scale:1}50%{scale:1.04}}@keyframes toast-collapsed-closed{0%{transform:var(--transform)}to{transform:translateY(calc((var(--before) - var(--height))*var(--gap))) scale(var(--scale))}}@keyframes toast-closed{0%{transform:var(--transform)}to{transform:translateY(calc((var(--offset) - var(--height))*var(--translate-factor)))}}@keyframes toast-slide-left{0%{transform:translateX(0) translateY(var(--translate))}to{transform:translateX(-100%) translateY(var(--translate))}}@keyframes toast-slide-right{0%{transform:translateX(0) translateY(var(--translate))}to{transform:translateX(100%) translateY(var(--translate))}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes fade-out{0%{opacity:1}to{opacity:0}}@keyframes scale-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes scale-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.95)}}@keyframes slide-in-from-top{0%{transform:translateY(-100%)}to{transform:translateY(0)}}@keyframes slide-out-to-top{0%{transform:translateY(0)}to{transform:translateY(-100%)}}@keyframes slide-in-from-right{0%{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes slide-out-to-right{0%{transform:translateX(0)}to{transform:translateX(100%)}}@keyframes slide-in-from-bottom{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slide-out-to-bottom{0%{transform:translateY(0)}to{transform:translateY(100%)}}@keyframes slide-in-from-left{0%{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes slide-out-to-left{0%{transform:translateX(0)}to{transform:translateX(-100%)}}@keyframes slide-in-from-top-and-fade{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@keyframes slide-out-to-top-and-fade{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-4px)}}@keyframes slide-in-from-right-and-fade{0%{opacity:0;transform:translateX(4px)}to{opacity:1;transform:translateX(0)}}@keyframes slide-out-to-right-and-fade{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(4px)}}@keyframes slide-in-from-bottom-and-fade{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes slide-out-to-bottom-and-fade{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(4px)}}@keyframes slide-in-from-left-and-fade{0%{opacity:0;transform:translateX(-4px)}to{opacity:1;transform:translateX(0)}}@keyframes slide-out-to-left-and-fade{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-4px)}}@keyframes enter-from-right{0%{opacity:0;transform:translateX(200px)}to{opacity:1;transform:translateX(0)}}@keyframes enter-from-left{0%{opacity:0;transform:translateX(-200px)}to{opacity:1;transform:translateX(0)}}@keyframes exit-to-right{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(200px)}}@keyframes exit-to-left{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-200px)}}@keyframes carousel{0%,to{width:50%}0%{transform:translateX(-100%)}to{transform:translateX(200%)}}@keyframes carousel-rtl{0%,to{width:50%}0%{transform:translateX(100%)}to{transform:translateX(-200%)}}@keyframes carousel-vertical{0%,to{height:50%}0%{transform:translateY(-100%)}to{transform:translateY(200%)}}@keyframes carousel-inverse{0%,to{width:50%}0%{transform:translateX(200%)}to{transform:translateX(-100%)}}@keyframes carousel-inverse-rtl{0%,to{width:50%}0%{transform:translateX(-200%)}to{transform:translateX(100%)}}@keyframes carousel-inverse-vertical{0%,to{height:50%}0%{transform:translateY(200%)}to{transform:translateY(-100%)}}@keyframes swing{0%,to{width:50%}0%,to{transform:translateX(-25%)}50%{transform:translateX(125%)}}@keyframes swing-vertical{0%,to{height:50%}0%,to{transform:translateY(-25%)}50%{transform:translateY(125%)}}@keyframes elastic{0%,to{
|
|
1
|
+
@keyframes accordion-up{0%{height:var(--reka-accordion-content-height);overflow:hidden}to{height:0;overflow:hidden}}@keyframes accordion-down{0%{height:0;overflow:hidden}to{height:var(--reka-accordion-content-height);overflow:hidden}}@keyframes collapsible-up{0%{height:var(--reka-collapsible-content-height);overflow:hidden}to{height:0;overflow:hidden}}@keyframes collapsible-down{0%{height:0;overflow:hidden}to{height:var(--reka-collapsible-content-height);overflow:hidden}}@keyframes toast-slide-in-from-top{0%{transform:translateY(-100%)}to{transform:var(--transform)}}@keyframes toast-slide-in-from-bottom{0%{transform:translateY(100%)}to{transform:var(--transform)}}@keyframes toast-slide-up{0%{transform:translateX(0) translateY(var(--translate))}to{transform:translateX(0) translateY(calc(var(--translate) - 100%))}}@keyframes toast-slide-down{0%{transform:translateX(0) translateY(var(--translate))}to{transform:translateX(0) translateY(calc(var(--translate) + 100%))}}@keyframes toast-pulse-a{0%,to{scale:1}50%{scale:1.04}}@keyframes toast-pulse-b{0%,to{scale:1}50%{scale:1.04}}@keyframes toast-collapsed-closed{0%{transform:var(--transform)}to{transform:translateY(calc((var(--before) - var(--height))*var(--gap))) scale(var(--scale))}}@keyframes toast-closed{0%{transform:var(--transform)}to{transform:translateY(calc((var(--offset) - var(--height))*var(--translate-factor)))}}@keyframes toast-slide-left{0%{transform:translateX(0) translateY(var(--translate))}to{transform:translateX(-100%) translateY(var(--translate))}}@keyframes toast-slide-right{0%{transform:translateX(0) translateY(var(--translate))}to{transform:translateX(100%) translateY(var(--translate))}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes fade-out{0%{opacity:1}to{opacity:0}}@keyframes scale-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes scale-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.95)}}@keyframes slide-in-from-top{0%{transform:translateY(-100%)}to{transform:translateY(0)}}@keyframes slide-out-to-top{0%{transform:translateY(0)}to{transform:translateY(-100%)}}@keyframes slide-in-from-right{0%{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes slide-out-to-right{0%{transform:translateX(0)}to{transform:translateX(100%)}}@keyframes slide-in-from-bottom{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slide-out-to-bottom{0%{transform:translateY(0)}to{transform:translateY(100%)}}@keyframes slide-in-from-left{0%{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes slide-out-to-left{0%{transform:translateX(0)}to{transform:translateX(-100%)}}@keyframes slide-in-from-top-and-fade{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@keyframes slide-out-to-top-and-fade{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-4px)}}@keyframes slide-in-from-right-and-fade{0%{opacity:0;transform:translateX(4px)}to{opacity:1;transform:translateX(0)}}@keyframes slide-out-to-right-and-fade{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(4px)}}@keyframes slide-in-from-bottom-and-fade{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes slide-out-to-bottom-and-fade{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(4px)}}@keyframes slide-in-from-left-and-fade{0%{opacity:0;transform:translateX(-4px)}to{opacity:1;transform:translateX(0)}}@keyframes slide-out-to-left-and-fade{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-4px)}}@keyframes enter-from-right{0%{opacity:0;transform:translateX(200px)}to{opacity:1;transform:translateX(0)}}@keyframes enter-from-left{0%{opacity:0;transform:translateX(-200px)}to{opacity:1;transform:translateX(0)}}@keyframes exit-to-right{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(200px)}}@keyframes exit-to-left{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-200px)}}@keyframes carousel{0%,to{width:50%}0%{transform:translateX(-100%)}to{transform:translateX(200%)}}@keyframes carousel-rtl{0%,to{width:50%}0%{transform:translateX(100%)}to{transform:translateX(-200%)}}@keyframes carousel-vertical{0%,to{height:50%}0%{transform:translateY(-100%)}to{transform:translateY(200%)}}@keyframes carousel-inverse{0%,to{width:50%}0%{transform:translateX(200%)}to{transform:translateX(-100%)}}@keyframes carousel-inverse-rtl{0%,to{width:50%}0%{transform:translateX(-200%)}to{transform:translateX(100%)}}@keyframes carousel-inverse-vertical{0%,to{height:50%}0%{transform:translateY(200%)}to{transform:translateY(-100%)}}@keyframes swing{0%,to{width:50%}0%,to{transform:translateX(-25%)}50%{transform:translateX(125%)}}@keyframes swing-vertical{0%,to{height:50%}0%,to{transform:translateY(-25%)}50%{transform:translateY(125%)}}@keyframes elastic{0%,to{left:25%;width:50%}50%{left:0;width:100%}}@keyframes elastic-vertical{0%,to{height:50%;top:25%}50%{height:100%;top:0}}@keyframes marquee{0%{transform:translateZ(0)}to{transform:translate3d(calc(-100% - var(--gap)),0,0)}}@keyframes marquee-rtl{0%{transform:translateZ(0)}to{transform:translate3d(calc(100% + var(--gap)),0,0)}}@keyframes marquee-vertical{0%{transform:translateZ(0)}to{transform:translate3d(0,calc(-100% - var(--gap)),0)}}@keyframes shimmer{0%{background-position:100%}to{background-position:0}}@keyframes shimmer-rtl{0%{background-position:0}to{background-position:100%}}@media (prefers-reduced-motion:reduce){@keyframes scale-in{0%{opacity:0}to{opacity:1}}@keyframes scale-out{0%{opacity:1}to{opacity:0}}@keyframes slide-in-from-top{0%{opacity:0}to{opacity:1}}@keyframes slide-out-to-top{0%{opacity:1}to{opacity:0}}@keyframes slide-in-from-right{0%{opacity:0}to{opacity:1}}@keyframes slide-out-to-right{0%{opacity:1}to{opacity:0}}@keyframes slide-in-from-bottom{0%{opacity:0}to{opacity:1}}@keyframes slide-out-to-bottom{0%{opacity:1}to{opacity:0}}@keyframes slide-in-from-left{0%{opacity:0}to{opacity:1}}@keyframes slide-out-to-left{0%{opacity:1}to{opacity:0}}@keyframes slide-in-from-top-and-fade{0%{opacity:0}to{opacity:1}}@keyframes slide-out-to-top-and-fade{0%{opacity:1}to{opacity:0}}@keyframes slide-in-from-right-and-fade{0%{opacity:0}to{opacity:1}}@keyframes slide-out-to-right-and-fade{0%{opacity:1}to{opacity:0}}@keyframes slide-in-from-bottom-and-fade{0%{opacity:0}to{opacity:1}}@keyframes slide-out-to-bottom-and-fade{0%{opacity:1}to{opacity:0}}@keyframes slide-in-from-left-and-fade{0%{opacity:0}to{opacity:1}}@keyframes slide-out-to-left-and-fade{0%{opacity:1}to{opacity:0}}@keyframes enter-from-right{0%{opacity:0}to{opacity:1}}@keyframes enter-from-left{0%{opacity:0}to{opacity:1}}@keyframes exit-to-right{0%{opacity:1}to{opacity:0}}@keyframes exit-to-left{0%{opacity:1}to{opacity:0}}@keyframes toast-slide-in-from-top{0%{opacity:0}to{opacity:1}}@keyframes toast-slide-in-from-bottom{0%{opacity:0}to{opacity:1}}@keyframes toast-closed{0%{opacity:1}to{opacity:0}}@keyframes toast-collapsed-closed{0%{opacity:1}to{opacity:0}}}
|
|
@@ -8,6 +8,7 @@ export { default as ckb } from './ckb';
|
|
|
8
8
|
export { default as cs } from './cs';
|
|
9
9
|
export { default as da } from './da';
|
|
10
10
|
export { default as de } from './de';
|
|
11
|
+
export { default as de_at } from './de_at';
|
|
11
12
|
export { default as de_ch } from './de_ch';
|
|
12
13
|
export { default as el } from './el';
|
|
13
14
|
export { default as en } from './en';
|
|
@@ -50,8 +51,8 @@ export { default as sk } from './sk';
|
|
|
50
51
|
export { default as sl } from './sl';
|
|
51
52
|
export { default as sq } from './sq';
|
|
52
53
|
export { default as sv } from './sv';
|
|
54
|
+
export { default as tg } from './tg';
|
|
53
55
|
export { default as th } from './th';
|
|
54
|
-
export { default as tj } from './tj';
|
|
55
56
|
export { default as tr } from './tr';
|
|
56
57
|
export { default as ug_cn } from './ug_cn';
|
|
57
58
|
export { default as uk } from './uk';
|
|
@@ -8,6 +8,7 @@ export { default as ckb } from "./ckb.js";
|
|
|
8
8
|
export { default as cs } from "./cs.js";
|
|
9
9
|
export { default as da } from "./da.js";
|
|
10
10
|
export { default as de } from "./de.js";
|
|
11
|
+
export { default as de_at } from "./de_at.js";
|
|
11
12
|
export { default as de_ch } from "./de_ch.js";
|
|
12
13
|
export { default as el } from "./el.js";
|
|
13
14
|
export { default as en } from "./en.js";
|
|
@@ -50,8 +51,8 @@ export { default as sk } from "./sk.js";
|
|
|
50
51
|
export { default as sl } from "./sl.js";
|
|
51
52
|
export { default as sq } from "./sq.js";
|
|
52
53
|
export { default as sv } from "./sv.js";
|
|
54
|
+
export { default as tg } from "./tg.js";
|
|
53
55
|
export { default as th } from "./th.js";
|
|
54
|
-
export { default as tj } from "./tj.js";
|
|
55
56
|
export { default as tr } from "./tr.js";
|
|
56
57
|
export { default as ug_cn } from "./ug_cn.js";
|
|
57
58
|
export { default as uk } from "./uk.js";
|
|
@@ -22,7 +22,7 @@ export interface Form<S extends FormSchema> {
|
|
|
22
22
|
blurredFields: ReadonlySet<DeepReadonly<keyof FormData<S, false>>>;
|
|
23
23
|
}
|
|
24
24
|
export type FormSchema<I extends object = object, O extends object = I> = SuperstructSchema<any, any> | StandardSchemaV1<I, O>;
|
|
25
|
-
export type InferInput<Schema> = Schema extends StandardSchemaV1 ? StandardSchemaV1.InferInput<Schema> : Schema extends SuperstructSchema<infer I, any> ? I :
|
|
25
|
+
export type InferInput<Schema> = Schema extends StandardSchemaV1 ? StandardSchemaV1.InferInput<Schema> : Schema extends SuperstructSchema<infer I, any> ? I : never;
|
|
26
26
|
export type InferOutput<Schema> = Schema extends StandardSchemaV1 ? StandardSchemaV1.InferOutput<Schema> : Schema extends SuperstructSchema<infer O, any> ? O : never;
|
|
27
27
|
export type FormData<S extends FormSchema, T extends boolean = true> = T extends true ? InferOutput<S> : InferInput<S>;
|
|
28
28
|
export type FormInputEvents = 'input' | 'blur' | 'change' | 'focus';
|
|
@@ -2,7 +2,9 @@ import type { AnchorHTMLAttributes as VueAnchorHTMLAttributes, ButtonHTMLAttribu
|
|
|
2
2
|
export type AnchorHTMLAttributes = Pick<VueAnchorHTMLAttributes, 'download' | 'href' | 'hreflang' | 'media' | 'ping' | 'rel' | 'target' | 'type' | 'referrerpolicy'>;
|
|
3
3
|
export type ButtonHTMLAttributes = Pick<VueButtonHTMLAttributes, 'autofocus' | 'disabled' | 'form' | 'formaction' | 'formenctype' | 'formmethod' | 'formnovalidate' | 'formtarget' | 'name' | 'type'>;
|
|
4
4
|
export type FormHTMLAttributes = Pick<VueFormHTMLAttributes, 'acceptcharset' | 'action' | 'autocomplete' | 'enctype' | 'method' | 'name' | 'novalidate' | 'target'>;
|
|
5
|
-
export type ImgHTMLAttributes = Pick<VueImgHTMLAttributes, 'alt' | '
|
|
5
|
+
export type ImgHTMLAttributes = Pick<VueImgHTMLAttributes, 'alt' | 'decoding' | 'height' | 'loading' | 'referrerpolicy' | 'sizes' | 'src' | 'srcset' | 'usemap' | 'width'> & {
|
|
6
|
+
crossorigin?: 'anonymous' | 'use-credentials';
|
|
7
|
+
};
|
|
6
8
|
export type InputHTMLAttributes = Pick<VueInputHTMLAttributes, 'autofocus' | 'disabled' | 'enterKeyHint' | 'form' | 'formaction' | 'formenctype' | 'formmethod' | 'formnovalidate' | 'formtarget' | 'list' | 'max' | 'maxlength' | 'min' | 'minlength' | 'name' | 'pattern' | 'placeholder' | 'readonly' | 'required' | 'size' | 'step' | 'type'> & {
|
|
7
9
|
autocomplete?: 'on' | 'off' | (string & {});
|
|
8
10
|
};
|
|
@@ -95,6 +95,7 @@ export * from '../components/PricingPlan.vue';
|
|
|
95
95
|
export * from '../components/PricingPlans.vue';
|
|
96
96
|
export * from '../components/PricingTable.vue';
|
|
97
97
|
export * from '../components/Progress.vue';
|
|
98
|
+
export * from '../components/ProgressGroup.vue';
|
|
98
99
|
export * from '../components/RadioGroup.vue';
|
|
99
100
|
export * from '../components/ScrollArea.vue';
|
|
100
101
|
export * from '../components/Select.vue';
|
|
@@ -104,6 +105,7 @@ export * from '../components/Sidebar.vue';
|
|
|
104
105
|
export * from '../components/Skeleton.vue';
|
|
105
106
|
export * from '../components/Slideover.vue';
|
|
106
107
|
export * from '../components/Slider.vue';
|
|
108
|
+
export * from '../components/Splitter.vue';
|
|
107
109
|
export * from '../components/Stepper.vue';
|
|
108
110
|
export * from '../components/Switch.vue';
|
|
109
111
|
export * from '../components/Table.vue';
|
|
@@ -95,6 +95,7 @@ export * from "../components/PricingPlan.vue";
|
|
|
95
95
|
export * from "../components/PricingPlans.vue";
|
|
96
96
|
export * from "../components/PricingTable.vue";
|
|
97
97
|
export * from "../components/Progress.vue";
|
|
98
|
+
export * from "../components/ProgressGroup.vue";
|
|
98
99
|
export * from "../components/RadioGroup.vue";
|
|
99
100
|
export * from "../components/ScrollArea.vue";
|
|
100
101
|
export * from "../components/Select.vue";
|
|
@@ -104,6 +105,7 @@ export * from "../components/Sidebar.vue";
|
|
|
104
105
|
export * from "../components/Skeleton.vue";
|
|
105
106
|
export * from "../components/Slideover.vue";
|
|
106
107
|
export * from "../components/Slider.vue";
|
|
108
|
+
export * from "../components/Splitter.vue";
|
|
107
109
|
export * from "../components/Stepper.vue";
|
|
108
110
|
export * from "../components/Switch.vue";
|
|
109
111
|
export * from "../components/Table.vue";
|
|
@@ -124,6 +124,7 @@ export interface ThemeDefaults {
|
|
|
124
124
|
pricingPlans?: Partial<ComponentTypes.PricingPlansProps>;
|
|
125
125
|
pricingTable?: Partial<ComponentTypes.PricingTableProps>;
|
|
126
126
|
progress?: Partial<ComponentTypes.ProgressProps>;
|
|
127
|
+
progressGroup?: Partial<ComponentTypes.ProgressGroupProps>;
|
|
127
128
|
/**
|
|
128
129
|
* Prose components that expose overridable props, under a `prose` namespace
|
|
129
130
|
* (mirrors `app.config.ui.prose` and `useComponentProps('prose.<tag>', …)`).
|
|
@@ -164,6 +165,7 @@ export interface ThemeDefaults {
|
|
|
164
165
|
skeleton?: Partial<ComponentTypes.SkeletonProps>;
|
|
165
166
|
slideover?: Partial<ComponentTypes.SlideoverProps>;
|
|
166
167
|
slider?: Partial<ComponentTypes.SliderProps>;
|
|
168
|
+
splitter?: Partial<ComponentTypes.SplitterProps>;
|
|
167
169
|
stepper?: Partial<ComponentTypes.StepperProps>;
|
|
168
170
|
switch?: Partial<ComponentTypes.SwitchProps>;
|
|
169
171
|
table?: Partial<ComponentTypes.TableProps>;
|