@eslamdevui/ui 3.2.0 → 3.2.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/alert.ts +5 -0
- package/.nuxt/ui/auth-form.ts +20 -0
- package/.nuxt/ui/badge.ts +5 -0
- package/.nuxt/ui/banner.ts +105 -0
- package/.nuxt/ui/blog-post.ts +140 -0
- package/.nuxt/ui/blog-posts.ts +14 -0
- package/.nuxt/ui/button-group.ts +13 -0
- package/.nuxt/ui/button.ts +5 -0
- package/.nuxt/ui/carousel.ts +5 -0
- package/.nuxt/ui/changelog-version.ts +41 -0
- package/.nuxt/ui/changelog-versions.ts +8 -0
- package/.nuxt/ui/chat-palette.ts +8 -0
- package/.nuxt/ui/content/content-navigation.ts +341 -0
- package/.nuxt/ui/content/content-search-button.ts +6 -0
- package/.nuxt/ui/content/content-search.ts +6 -0
- package/.nuxt/ui/content/content-surround.ts +39 -0
- package/.nuxt/ui/content/content-toc.ts +150 -0
- package/.nuxt/ui/content/index.ts +5 -0
- package/.nuxt/ui/content-navigation.ts +6 -4
- package/.nuxt/ui/content-surround.ts +5 -0
- package/.nuxt/ui/dashboard-navbar.ts +5 -0
- package/.nuxt/ui/dashboard-sidebar-collapse.ts +5 -0
- package/.nuxt/ui/dashboard-sidebar-toggle.ts +5 -0
- package/.nuxt/ui/dashboard-sidebar.ts +10 -0
- package/.nuxt/ui/error.ts +9 -0
- package/.nuxt/ui/footer-columns.ts +28 -0
- package/.nuxt/ui/footer.ts +11 -0
- package/.nuxt/ui/header.ts +30 -0
- package/.nuxt/ui/index.ts +80 -2
- package/.nuxt/ui/input-menu.ts +9 -0
- package/.nuxt/ui/input-number.ts +5 -0
- package/.nuxt/ui/input-tags.ts +9 -0
- package/.nuxt/ui/input.ts +9 -0
- package/.nuxt/ui/main.ts +3 -0
- package/.nuxt/ui/page-accordion.ts +7 -0
- package/.nuxt/ui/page-anchors.ts +30 -0
- package/.nuxt/ui/page-aside.ts +10 -0
- package/.nuxt/ui/page-body.ts +3 -0
- package/.nuxt/ui/page-card.ts +276 -0
- package/.nuxt/ui/page-columns.ts +3 -0
- package/.nuxt/ui/page-cta.ts +72 -0
- package/.nuxt/ui/page-feature.ts +31 -0
- package/.nuxt/ui/page-grid.ts +3 -0
- package/.nuxt/ui/page-header.ts +18 -0
- package/.nuxt/ui/page-hero.ts +46 -0
- package/.nuxt/ui/page-links.ts +25 -0
- package/.nuxt/ui/page-list.ts +8 -0
- package/.nuxt/ui/page-logos.ts +15 -0
- package/.nuxt/ui/page-marquee.ts +66 -0
- package/.nuxt/ui/page-section.ts +88 -0
- package/.nuxt/ui/page.ts +32 -0
- package/.nuxt/ui/pricing-plan.ts +101 -0
- package/.nuxt/ui/pricing-plans.ts +27 -0
- package/.nuxt/ui/pricing-table.ts +51 -0
- package/.nuxt/ui/prose/a.ts +6 -0
- package/.nuxt/ui/prose/accordion-item.ts +3 -0
- package/.nuxt/ui/prose/accordion.ts +6 -0
- package/.nuxt/ui/prose/badge.ts +3 -0
- package/.nuxt/ui/prose/blockquote.ts +3 -0
- package/.nuxt/ui/prose/callout.ts +129 -0
- package/.nuxt/ui/prose/card-group.ts +3 -0
- package/.nuxt/ui/prose/card.ts +119 -0
- package/.nuxt/ui/prose/code-collapse.ts +19 -0
- package/.nuxt/ui/prose/code-group.ts +13 -0
- package/.nuxt/ui/prose/code-icon.ts +66 -0
- package/.nuxt/ui/prose/code-preview.ts +14 -0
- package/.nuxt/ui/prose/code-tree.ts +28 -0
- package/.nuxt/ui/prose/code.ts +27 -0
- package/.nuxt/ui/prose/collapsible.ts +12 -0
- package/.nuxt/ui/prose/em.ts +3 -0
- package/.nuxt/ui/prose/field-group.ts +3 -0
- package/.nuxt/ui/prose/field.ts +11 -0
- package/.nuxt/ui/prose/h1.ts +6 -0
- package/.nuxt/ui/prose/h2.ts +14 -0
- package/.nuxt/ui/prose/h3.ts +14 -0
- package/.nuxt/ui/prose/h4.ts +6 -0
- package/.nuxt/ui/prose/hr.ts +3 -0
- package/.nuxt/ui/prose/icon.ts +3 -0
- package/.nuxt/ui/prose/img.ts +3 -0
- package/.nuxt/ui/prose/index.ts +41 -0
- package/.nuxt/ui/prose/kbd.ts +3 -0
- package/.nuxt/ui/prose/li.ts +3 -0
- package/.nuxt/ui/prose/ol.ts +3 -0
- package/.nuxt/ui/prose/p.ts +3 -0
- package/.nuxt/ui/prose/pre.ts +17 -0
- package/.nuxt/ui/prose/steps.ts +19 -0
- package/.nuxt/ui/prose/strong.ts +3 -0
- package/.nuxt/ui/prose/table.ts +6 -0
- package/.nuxt/ui/prose/tabs-item.ts +3 -0
- package/.nuxt/ui/prose/tabs.ts +5 -0
- package/.nuxt/ui/prose/tbody.ts +3 -0
- package/.nuxt/ui/prose/td.ts +3 -0
- package/.nuxt/ui/prose/th.ts +3 -0
- package/.nuxt/ui/prose/thead.ts +3 -0
- package/.nuxt/ui/prose/tr.ts +3 -0
- package/.nuxt/ui/prose/ul.ts +3 -0
- package/.nuxt/ui/select-menu.ts +9 -0
- package/.nuxt/ui/select.ts +9 -0
- package/.nuxt/ui/textarea.ts +9 -0
- package/.nuxt/ui/toast.ts +5 -0
- package/.nuxt/ui/user.ts +106 -0
- package/dist/module.json +1 -1
- package/dist/module.mjs +2 -2
- package/dist/runtime/components/AuthForm.vue +195 -0
- package/dist/runtime/components/AuthForm.vue.d.ts +85 -0
- package/dist/runtime/components/Banner.vue +113 -0
- package/dist/runtime/components/Banner.vue.d.ts +68 -0
- package/dist/runtime/components/BlogPost.vue +141 -0
- package/dist/runtime/components/BlogPost.vue.d.ts +59 -0
- package/dist/runtime/components/BlogPosts.vue +33 -0
- package/dist/runtime/components/BlogPosts.vue.d.ts +30 -0
- package/dist/runtime/components/ChangelogVersion.vue +165 -0
- package/dist/runtime/components/ChangelogVersion.vue.d.ts +58 -0
- package/dist/runtime/components/ChangelogVersions.vue +54 -0
- package/dist/runtime/components/ChangelogVersions.vue.d.ts +74 -0
- package/dist/runtime/components/ChatPalette.vue +32 -0
- package/dist/runtime/components/ChatPalette.vue.d.ts +24 -0
- package/dist/runtime/components/ChatPrompt.vue.d.ts +1 -1
- package/dist/runtime/components/CommandPalette.vue.d.ts +3 -3
- package/dist/runtime/components/DashboardSidebarToggle.vue.d.ts +1 -1
- package/dist/runtime/components/Error.vue.d.ts +1 -1
- package/dist/runtime/components/Footer.vue +44 -0
- package/dist/runtime/components/Footer.vue.d.ts +29 -0
- package/dist/runtime/components/FooterColumns.vue +68 -0
- package/dist/runtime/components/FooterColumns.vue.d.ts +52 -0
- package/dist/runtime/components/Header.vue +137 -0
- package/dist/runtime/components/Header.vue.d.ts +72 -0
- package/dist/runtime/components/InputMenu.vue.d.ts +3 -3
- package/dist/runtime/components/Main.vue +23 -0
- package/dist/runtime/components/Main.vue.d.ts +20 -0
- package/dist/runtime/components/Page.vue +37 -0
- package/dist/runtime/components/Page.vue.d.ts +25 -0
- package/dist/runtime/components/PageAccordion.vue +26 -0
- package/dist/runtime/components/PageAccordion.vue.d.ts +21 -0
- package/dist/runtime/components/PageAnchors.vue +50 -0
- package/dist/runtime/components/PageAnchors.vue.d.ts +42 -0
- package/dist/runtime/components/PageAside.vue +36 -0
- package/dist/runtime/components/PageAside.vue.d.ts +27 -0
- package/dist/runtime/components/PageBody.vue +23 -0
- package/dist/runtime/components/PageBody.vue.d.ts +18 -0
- package/dist/runtime/components/PageCTA.vue +58 -0
- package/dist/runtime/components/PageCTA.vue.d.ts +49 -0
- package/dist/runtime/components/PageCard.vue +121 -0
- package/dist/runtime/components/PageCard.vue.d.ts +71 -0
- package/dist/runtime/components/PageColumns.vue +23 -0
- package/dist/runtime/components/PageColumns.vue.d.ts +18 -0
- package/dist/runtime/components/PageFeature.vue +71 -0
- package/dist/runtime/components/PageFeature.vue.d.ts +43 -0
- package/dist/runtime/components/PageGrid.vue +23 -0
- package/dist/runtime/components/PageGrid.vue.d.ts +18 -0
- package/dist/runtime/components/PageHeader.vue +58 -0
- package/dist/runtime/components/PageHeader.vue.d.ts +35 -0
- package/dist/runtime/components/PageHero.vue +67 -0
- package/dist/runtime/components/PageHero.vue.d.ts +49 -0
- package/dist/runtime/components/PageLinks.vue +55 -0
- package/dist/runtime/components/PageLinks.vue.d.ts +44 -0
- package/dist/runtime/components/PageList.vue +24 -0
- package/dist/runtime/components/PageList.vue.d.ts +21 -0
- package/dist/runtime/components/PageLogos.vue +64 -0
- package/dist/runtime/components/PageLogos.vue.d.ts +32 -0
- package/dist/runtime/components/PageMarquee.vue +40 -0
- package/dist/runtime/components/PageMarquee.vue.d.ts +30 -0
- package/dist/runtime/components/PageSection.vue +88 -0
- package/dist/runtime/components/PageSection.vue.d.ts +64 -0
- package/dist/runtime/components/PricingPlan.vue +129 -0
- package/dist/runtime/components/PricingPlan.vue.d.ts +109 -0
- package/dist/runtime/components/PricingPlans.vue +45 -0
- package/dist/runtime/components/PricingPlans.vue.d.ts +41 -0
- package/dist/runtime/components/PricingTable.vue +235 -0
- package/dist/runtime/components/PricingTable.vue.d.ts +98 -0
- package/dist/runtime/components/SelectMenu.vue.d.ts +3 -3
- package/dist/runtime/components/Tabs.vue +1 -0
- package/dist/runtime/components/User.vue +69 -0
- package/dist/runtime/components/User.vue.d.ts +46 -0
- package/dist/runtime/components/content/ContentSearchButton.vue.d.ts +57 -11
- package/dist/runtime/components/content/ContentSurround.vue +2 -2
- package/dist/runtime/components/content/ContentSurround.vue.d.ts +45 -52
- package/dist/runtime/components/content/ContentToc.vue +27 -15
- package/dist/runtime/components/content/ContentToc.vue.d.ts +79 -81
- package/dist/runtime/types/index.d.ts +33 -0
- package/dist/runtime/types/index.js +33 -0
- package/dist/shared/{ui.DQZ75GCP.mjs → ui.DErCA3YU.mjs} +1247 -50
- package/dist/unplugin.mjs +1 -1
- package/dist/vite.mjs +1 -1
- package/package.json +1 -1
- package/.nuxt/ui/prose.ts +0 -321
|
@@ -49,8 +49,8 @@ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<ChatPrompt
|
|
|
49
49
|
}>, {
|
|
50
50
|
as: any;
|
|
51
51
|
autofocus: boolean;
|
|
52
|
-
autoresize: boolean;
|
|
53
52
|
rows: number;
|
|
53
|
+
autoresize: boolean;
|
|
54
54
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, ChatPromptSlots>;
|
|
55
55
|
export default _default;
|
|
56
56
|
type __VLS_WithSlots<T, S> = T & {
|
|
@@ -160,11 +160,11 @@ export type CommandPaletteSlots<G extends CommandPaletteGroup<T> = CommandPalett
|
|
|
160
160
|
declare const _default: <G extends CommandPaletteGroup<T>, T extends CommandPaletteItem>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
|
|
161
161
|
props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{
|
|
162
162
|
readonly "onUpdate:open"?: ((value: boolean) => any) | undefined;
|
|
163
|
-
readonly "onUpdate:modelValue"?: ((value: T) => any) | undefined;
|
|
164
163
|
readonly onHighlight?: ((payload: {
|
|
165
164
|
ref: HTMLElement;
|
|
166
165
|
value: T;
|
|
167
166
|
} | undefined) => any) | undefined;
|
|
167
|
+
readonly "onUpdate:modelValue"?: ((value: T) => any) | undefined;
|
|
168
168
|
readonly "onUpdate:searchTerm"?: ((value: string) => any) | undefined;
|
|
169
169
|
readonly onEntryFocus?: ((event: CustomEvent<any>) => any) | undefined;
|
|
170
170
|
readonly onLeave?: ((event: Event) => any) | undefined;
|
|
@@ -174,10 +174,10 @@ declare const _default: <G extends CommandPaletteGroup<T>, T extends CommandPale
|
|
|
174
174
|
expose(exposed: import("vue").ShallowUnwrapRef<{}>): void;
|
|
175
175
|
attrs: any;
|
|
176
176
|
slots: CommandPaletteSlots<G, T>;
|
|
177
|
-
emit: (((evt: "update:open", value: boolean) => void) & ((evt: "
|
|
177
|
+
emit: (((evt: "update:open", value: boolean) => void) & ((evt: "highlight", payload: {
|
|
178
178
|
ref: HTMLElement;
|
|
179
179
|
value: T;
|
|
180
|
-
} | undefined) => void) & ((evt: "entryFocus", event: CustomEvent<any>) => void) & ((evt: "leave", event: Event) => void)) & ((evt: "update:searchTerm", value: string) => void);
|
|
180
|
+
} | undefined) => void) & ((evt: "update:modelValue", value: T) => void) & ((evt: "entryFocus", event: CustomEvent<any>) => void) & ((evt: "leave", event: Event) => void)) & ((evt: "update:searchTerm", value: string) => void);
|
|
181
181
|
}>) => import("vue").VNode & {
|
|
182
182
|
__ctx?: Awaited<typeof __VLS_setup>;
|
|
183
183
|
};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
import theme from "#build/ui/footer";
|
|
3
|
+
</script>
|
|
4
|
+
|
|
5
|
+
<script setup>
|
|
6
|
+
import { computed } from "vue";
|
|
7
|
+
import { Primitive } from "reka-ui";
|
|
8
|
+
import { useAppConfig } from "#imports";
|
|
9
|
+
import { tv } from "../utils/tv";
|
|
10
|
+
const props = defineProps({
|
|
11
|
+
as: { type: null, required: false, default: "footer" },
|
|
12
|
+
class: { type: null, required: false },
|
|
13
|
+
ui: { type: null, required: false }
|
|
14
|
+
});
|
|
15
|
+
const slots = defineSlots();
|
|
16
|
+
const appConfig = useAppConfig();
|
|
17
|
+
const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.footer || {} })());
|
|
18
|
+
</script>
|
|
19
|
+
|
|
20
|
+
<template>
|
|
21
|
+
<Primitive :as="as" :class="ui.root({ class: [props.ui?.root, props.class] })">
|
|
22
|
+
<div v-if="!!slots.top" :class="ui.top({ class: props.ui?.top })">
|
|
23
|
+
<slot name="top" />
|
|
24
|
+
</div>
|
|
25
|
+
|
|
26
|
+
<UContainer :class="ui.container({ class: props.ui?.container })">
|
|
27
|
+
<div :class="ui.right({ class: props.ui?.right })">
|
|
28
|
+
<slot name="right" />
|
|
29
|
+
</div>
|
|
30
|
+
|
|
31
|
+
<div :class="ui.center({ class: props.ui?.center })">
|
|
32
|
+
<slot />
|
|
33
|
+
</div>
|
|
34
|
+
|
|
35
|
+
<div :class="ui.left({ class: props.ui?.left })">
|
|
36
|
+
<slot name="left" />
|
|
37
|
+
</div>
|
|
38
|
+
</UContainer>
|
|
39
|
+
|
|
40
|
+
<div v-if="!!slots.bottom" :class="ui.bottom({ class: props.ui?.bottom })">
|
|
41
|
+
<slot name="bottom" />
|
|
42
|
+
</div>
|
|
43
|
+
</Primitive>
|
|
44
|
+
</template>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import theme from '#build/ui/footer';
|
|
2
|
+
import type { AppConfig } from '@nuxt/schema';
|
|
3
|
+
import type { ComponentConfig } from '../types';
|
|
4
|
+
type Footer = ComponentConfig<typeof theme, AppConfig, 'footer'>;
|
|
5
|
+
export interface FooterProps {
|
|
6
|
+
/**
|
|
7
|
+
* The element or component this component should render as.
|
|
8
|
+
* @defaultValue 'footer'
|
|
9
|
+
*/
|
|
10
|
+
as?: any;
|
|
11
|
+
class?: any;
|
|
12
|
+
ui?: Footer['slots'];
|
|
13
|
+
}
|
|
14
|
+
export interface FooterSlots {
|
|
15
|
+
left(props?: {}): any;
|
|
16
|
+
default(props?: {}): any;
|
|
17
|
+
right(props?: {}): any;
|
|
18
|
+
top(props?: {}): any;
|
|
19
|
+
bottom(props?: {}): any;
|
|
20
|
+
}
|
|
21
|
+
declare const _default: __VLS_WithSlots<import("vue").DefineComponent<FooterProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<FooterProps> & Readonly<{}>, {
|
|
22
|
+
as: any;
|
|
23
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, FooterSlots>;
|
|
24
|
+
export default _default;
|
|
25
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
26
|
+
new (): {
|
|
27
|
+
$slots: S;
|
|
28
|
+
};
|
|
29
|
+
};
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
import theme from "#build/ui/footer-columns";
|
|
3
|
+
</script>
|
|
4
|
+
|
|
5
|
+
<script setup>
|
|
6
|
+
import { computed } from "vue";
|
|
7
|
+
import { Primitive } from "reka-ui";
|
|
8
|
+
import { pickLinkProps } from "../utils/link";
|
|
9
|
+
import { useAppConfig } from "#imports";
|
|
10
|
+
import { tv } from "../utils/tv";
|
|
11
|
+
const props = defineProps({
|
|
12
|
+
as: { type: null, required: false, default: "nav" },
|
|
13
|
+
class: { type: null, required: false },
|
|
14
|
+
columns: { type: Array, required: false },
|
|
15
|
+
ui: { type: null, required: false }
|
|
16
|
+
});
|
|
17
|
+
const slots = defineSlots();
|
|
18
|
+
const appConfig = useAppConfig();
|
|
19
|
+
const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.footerColumns || {} })());
|
|
20
|
+
</script>
|
|
21
|
+
|
|
22
|
+
<template>
|
|
23
|
+
<Primitive :as="as" :class="ui.root({ class: [props.ui?.root, props.class] })">
|
|
24
|
+
<div v-if="!!slots.left" :class="ui.left({ class: props.ui?.left })">
|
|
25
|
+
<slot name="left" />
|
|
26
|
+
</div>
|
|
27
|
+
|
|
28
|
+
<div v-if="!!slots.default || columns?.length" :class="ui.center({ class: props.ui?.center })">
|
|
29
|
+
<slot>
|
|
30
|
+
<div v-for="(column, index) in columns" :key="index">
|
|
31
|
+
<h3 :class="ui.label({ class: props.ui?.label })">
|
|
32
|
+
<slot name="column-label" :column="column">
|
|
33
|
+
{{ column.label }}
|
|
34
|
+
</slot>
|
|
35
|
+
</h3>
|
|
36
|
+
|
|
37
|
+
<ul :class="ui.list({ class: props.ui?.list })">
|
|
38
|
+
<li v-for="(link, linkIndex) in column.children" :key="linkIndex" :class="ui.item({ class: [props.ui?.item, link.ui?.item] })">
|
|
39
|
+
<ULink v-slot="{ active, ...slotProps }" v-bind="pickLinkProps(link)" custom>
|
|
40
|
+
<ULinkBase v-bind="slotProps" :class="ui.link({ class: [props.ui?.link, link.ui?.link, link.class], active })">
|
|
41
|
+
<slot name="link" :link="link" :active="active">
|
|
42
|
+
<slot name="link-leading" :link="link" :active="active">
|
|
43
|
+
<UIcon v-if="link.icon" :name="link.icon" :class="ui.linkLeadingIcon({ class: [props.ui?.linkLeadingIcon, link.ui?.linkLeadingIcon], active })" />
|
|
44
|
+
</slot>
|
|
45
|
+
|
|
46
|
+
<span v-if="link.label || !!slots['link-label']" :class="ui.linkLabel({ class: [props.ui?.linkLabel, link.ui?.linkLabel], active })">
|
|
47
|
+
<slot name="link-label" :link="link" :active="active">
|
|
48
|
+
{{ link.label }}
|
|
49
|
+
</slot>
|
|
50
|
+
|
|
51
|
+
<UIcon v-if="link.target === '_blank'" :name="appConfig.ui.icons.external" :class="ui.linkLabelExternalIcon({ class: [props.ui?.linkLabelExternalIcon, link.ui?.linkLabelExternalIcon], active })" />
|
|
52
|
+
</span>
|
|
53
|
+
|
|
54
|
+
<slot name="link-trailing" :link="link" :active="active" />
|
|
55
|
+
</slot>
|
|
56
|
+
</ULinkBase>
|
|
57
|
+
</ULink>
|
|
58
|
+
</li>
|
|
59
|
+
</ul>
|
|
60
|
+
</div>
|
|
61
|
+
</slot>
|
|
62
|
+
</div>
|
|
63
|
+
|
|
64
|
+
<div v-if="!!slots.right" :class="ui.right({ class: props.ui?.right })">
|
|
65
|
+
<slot name="right" />
|
|
66
|
+
</div>
|
|
67
|
+
</Primitive>
|
|
68
|
+
</template>
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import theme from '#build/ui/footer-columns';
|
|
2
|
+
import type { AppConfig } from '@nuxt/schema';
|
|
3
|
+
import type { LinkProps, ComponentConfig } from '../types';
|
|
4
|
+
type FooterColumns = ComponentConfig<typeof theme, AppConfig, 'footerColumns'>;
|
|
5
|
+
export interface FooterColumnLink extends Omit<LinkProps, 'custom'> {
|
|
6
|
+
label: string;
|
|
7
|
+
/**
|
|
8
|
+
* @IconifyIcon
|
|
9
|
+
*/
|
|
10
|
+
icon?: string;
|
|
11
|
+
class?: any;
|
|
12
|
+
ui?: Pick<FooterColumns['slots'], 'item' | 'link' | 'linkLabel' | 'linkLabelExternalIcon' | 'linkLeadingIcon'>;
|
|
13
|
+
}
|
|
14
|
+
export interface FooterColumn<T extends FooterColumnLink = FooterColumnLink> {
|
|
15
|
+
label: string;
|
|
16
|
+
children?: T[];
|
|
17
|
+
}
|
|
18
|
+
export interface FooterColumnsProps<T extends FooterColumnLink = FooterColumnLink> {
|
|
19
|
+
/**
|
|
20
|
+
* The element or component this component should render as.
|
|
21
|
+
* @defaultValue 'div'
|
|
22
|
+
*/
|
|
23
|
+
as?: any;
|
|
24
|
+
class?: any;
|
|
25
|
+
columns?: FooterColumn<T>[];
|
|
26
|
+
ui?: FooterColumns['slots'];
|
|
27
|
+
}
|
|
28
|
+
type SlotProps<T> = (props: {
|
|
29
|
+
link: T;
|
|
30
|
+
active: boolean;
|
|
31
|
+
}) => any;
|
|
32
|
+
export interface FooterColumnsSlots<T extends FooterColumnLink = FooterColumnLink> {
|
|
33
|
+
'left'(props?: {}): any;
|
|
34
|
+
'default'(props?: {}): any;
|
|
35
|
+
'right'(props?: {}): any;
|
|
36
|
+
'column-label'?: (props: {
|
|
37
|
+
column: FooterColumn<T>;
|
|
38
|
+
}) => any;
|
|
39
|
+
'link': SlotProps<T>;
|
|
40
|
+
'link-leading': SlotProps<T>;
|
|
41
|
+
'link-label': SlotProps<T>;
|
|
42
|
+
'link-trailing': SlotProps<T>;
|
|
43
|
+
}
|
|
44
|
+
declare const _default: __VLS_WithSlots<import("vue").DefineComponent<FooterColumnsProps<FooterColumnLink>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<FooterColumnsProps<FooterColumnLink>> & Readonly<{}>, {
|
|
45
|
+
as: any;
|
|
46
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, FooterColumnsSlots<FooterColumnLink>>;
|
|
47
|
+
export default _default;
|
|
48
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
49
|
+
new (): {
|
|
50
|
+
$slots: S;
|
|
51
|
+
};
|
|
52
|
+
};
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
import theme from "#build/ui/header";
|
|
3
|
+
</script>
|
|
4
|
+
|
|
5
|
+
<script setup>
|
|
6
|
+
import { computed, watch, toRef } from "vue";
|
|
7
|
+
import { Primitive } from "reka-ui";
|
|
8
|
+
import { defu } from "defu";
|
|
9
|
+
import { createReusableTemplate } from "@vueuse/core";
|
|
10
|
+
import USlideover from "./Slideover.vue";
|
|
11
|
+
import UModal from "./Modal.vue";
|
|
12
|
+
import UDrawer from "./Drawer.vue";
|
|
13
|
+
import { useAppConfig, useRoute } from "#imports";
|
|
14
|
+
import { useLocalePro } from "../composables/useLocalePro";
|
|
15
|
+
import { getSlotChildrenText } from "../utils";
|
|
16
|
+
import { tv } from "../utils/tv";
|
|
17
|
+
const props = defineProps({
|
|
18
|
+
as: { type: null, required: false, default: "header" },
|
|
19
|
+
title: { type: String, required: false, default: "Nuxt UI Pro" },
|
|
20
|
+
to: { type: String, required: false, default: "/" },
|
|
21
|
+
mode: { type: null, required: false, default: "modal" },
|
|
22
|
+
menu: { type: null, required: false },
|
|
23
|
+
toggle: { type: [Boolean, Object], required: false, default: true },
|
|
24
|
+
toggleSide: { type: String, required: false, default: "right" },
|
|
25
|
+
class: { type: null, required: false },
|
|
26
|
+
ui: { type: null, required: false }
|
|
27
|
+
});
|
|
28
|
+
const slots = defineSlots();
|
|
29
|
+
const open = defineModel("open", { type: Boolean, ...{ default: false } });
|
|
30
|
+
const route = useRoute();
|
|
31
|
+
const { t } = useLocalePro();
|
|
32
|
+
const appConfig = useAppConfig();
|
|
33
|
+
const [DefineLeftTemplate, ReuseLeftTemplate] = createReusableTemplate();
|
|
34
|
+
const [DefineRightTemplate, ReuseRightTemplate] = createReusableTemplate();
|
|
35
|
+
const [DefineToggleTemplate, ReuseToggleTemplate] = createReusableTemplate();
|
|
36
|
+
const ariaLabel = computed(() => {
|
|
37
|
+
const slotText = slots.title && getSlotChildrenText(slots.title());
|
|
38
|
+
return (slotText || props.title || "Nuxt UI Pro").trim();
|
|
39
|
+
});
|
|
40
|
+
watch(() => route.fullPath, () => {
|
|
41
|
+
open.value = false;
|
|
42
|
+
});
|
|
43
|
+
const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.header || {} })());
|
|
44
|
+
const Menu = computed(() => ({
|
|
45
|
+
slideover: USlideover,
|
|
46
|
+
modal: UModal,
|
|
47
|
+
drawer: UDrawer
|
|
48
|
+
})[props.mode]);
|
|
49
|
+
const menuProps = toRef(() => defu(props.menu, {
|
|
50
|
+
content: {
|
|
51
|
+
onOpenAutoFocus: (e) => e.preventDefault()
|
|
52
|
+
}
|
|
53
|
+
}, props.mode === "modal" ? { fullscreen: true, transition: false } : {}));
|
|
54
|
+
function toggleOpen() {
|
|
55
|
+
open.value = !open.value;
|
|
56
|
+
}
|
|
57
|
+
</script>
|
|
58
|
+
|
|
59
|
+
<template>
|
|
60
|
+
<DefineToggleTemplate>
|
|
61
|
+
<slot name="toggle" :open="open" :toggle="toggleOpen">
|
|
62
|
+
<UButton
|
|
63
|
+
v-if="toggle"
|
|
64
|
+
color="neutral"
|
|
65
|
+
variant="ghost"
|
|
66
|
+
:aria-label="open ? t('header.close') : t('header.open')"
|
|
67
|
+
:icon="open ? appConfig.ui.icons.close : appConfig.ui.icons.menu"
|
|
68
|
+
v-bind="typeof toggle === 'object' ? toggle : {}"
|
|
69
|
+
:class="ui.toggle({ class: props.ui?.toggle, toggleSide })"
|
|
70
|
+
@click="toggleOpen"
|
|
71
|
+
/>
|
|
72
|
+
</slot>
|
|
73
|
+
</DefineToggleTemplate>
|
|
74
|
+
|
|
75
|
+
<DefineLeftTemplate>
|
|
76
|
+
<div :class="ui.left({ class: props.ui?.left })">
|
|
77
|
+
<ReuseToggleTemplate v-if="toggleSide === 'left'" />
|
|
78
|
+
|
|
79
|
+
<slot name="left">
|
|
80
|
+
<ULink :to="to" :aria-label="ariaLabel" :class="ui.title({ class: props.ui?.title })">
|
|
81
|
+
<slot name="title">
|
|
82
|
+
{{ title }}
|
|
83
|
+
</slot>
|
|
84
|
+
</ULink>
|
|
85
|
+
</slot>
|
|
86
|
+
</div>
|
|
87
|
+
</DefineLeftTemplate>
|
|
88
|
+
|
|
89
|
+
<DefineRightTemplate>
|
|
90
|
+
<div :class="ui.right({ class: props.ui?.right })">
|
|
91
|
+
<slot name="right" />
|
|
92
|
+
|
|
93
|
+
<ReuseToggleTemplate v-if="toggleSide === 'right'" />
|
|
94
|
+
</div>
|
|
95
|
+
</DefineRightTemplate>
|
|
96
|
+
|
|
97
|
+
<Primitive :as="as" :class="ui.root({ class: [props.ui?.root, props.class] })">
|
|
98
|
+
<slot name="top" />
|
|
99
|
+
|
|
100
|
+
<UContainer :class="ui.container({ class: props.ui?.container })">
|
|
101
|
+
<ReuseLeftTemplate />
|
|
102
|
+
|
|
103
|
+
<div :class="ui.center({ class: props.ui?.center })">
|
|
104
|
+
<slot />
|
|
105
|
+
</div>
|
|
106
|
+
|
|
107
|
+
<ReuseRightTemplate />
|
|
108
|
+
</UContainer>
|
|
109
|
+
|
|
110
|
+
<slot name="bottom" />
|
|
111
|
+
</Primitive>
|
|
112
|
+
|
|
113
|
+
<Menu
|
|
114
|
+
v-model:open="open"
|
|
115
|
+
:title="t('header.title')"
|
|
116
|
+
:description="t('header.description')"
|
|
117
|
+
v-bind="menuProps"
|
|
118
|
+
:ui="{
|
|
119
|
+
overlay: ui.overlay({ class: props.ui?.overlay }),
|
|
120
|
+
content: ui.content({ class: props.ui?.content })
|
|
121
|
+
}"
|
|
122
|
+
>
|
|
123
|
+
<template #content>
|
|
124
|
+
<slot name="content">
|
|
125
|
+
<div v-if="mode !== 'drawer'" :class="ui.header({ class: props.ui?.header })">
|
|
126
|
+
<ReuseLeftTemplate />
|
|
127
|
+
|
|
128
|
+
<ReuseRightTemplate />
|
|
129
|
+
</div>
|
|
130
|
+
|
|
131
|
+
<div :class="ui.body({ class: props.ui?.body })">
|
|
132
|
+
<slot name="body" />
|
|
133
|
+
</div>
|
|
134
|
+
</slot>
|
|
135
|
+
</template>
|
|
136
|
+
</Menu>
|
|
137
|
+
</template>
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import theme from '#build/ui/header';
|
|
2
|
+
import type { AppConfig } from '@nuxt/schema';
|
|
3
|
+
import type { ButtonProps, DrawerProps, ModalProps, SlideoverProps, ComponentConfig } from '../types';
|
|
4
|
+
type Header = ComponentConfig<typeof theme, AppConfig, 'header'>;
|
|
5
|
+
type HeaderMode = 'modal' | 'slideover' | 'drawer';
|
|
6
|
+
type HeaderMenu<T> = T extends 'modal' ? ModalProps : T extends 'slideover' ? SlideoverProps : T extends 'drawer' ? DrawerProps : never;
|
|
7
|
+
export interface HeaderProps<T extends HeaderMode = HeaderMode> {
|
|
8
|
+
/**
|
|
9
|
+
* The element or component this component should render as.
|
|
10
|
+
* @defaultValue 'header'
|
|
11
|
+
*/
|
|
12
|
+
as?: any;
|
|
13
|
+
title?: string;
|
|
14
|
+
to?: string;
|
|
15
|
+
/**
|
|
16
|
+
* The mode of the header menu.
|
|
17
|
+
* @defaultValue 'modal'
|
|
18
|
+
*/
|
|
19
|
+
mode?: T;
|
|
20
|
+
/**
|
|
21
|
+
* The props for the header menu component.
|
|
22
|
+
*/
|
|
23
|
+
menu?: HeaderMenu<T>;
|
|
24
|
+
/**
|
|
25
|
+
* Customize the toggle button to open the header menu displayed when the `content` slot is used.
|
|
26
|
+
* `{ color: 'neutral', variant: 'ghost' }`{lang="ts-type"}
|
|
27
|
+
*/
|
|
28
|
+
toggle?: boolean | Partial<ButtonProps>;
|
|
29
|
+
/**
|
|
30
|
+
* The side to render the toggle button on.
|
|
31
|
+
* @defaultValue 'right'
|
|
32
|
+
*/
|
|
33
|
+
toggleSide?: 'left' | 'right';
|
|
34
|
+
class?: any;
|
|
35
|
+
ui?: Header['slots'];
|
|
36
|
+
}
|
|
37
|
+
export interface HeaderSlots {
|
|
38
|
+
title(props?: {}): any;
|
|
39
|
+
left(props?: {}): any;
|
|
40
|
+
default(props?: {}): any;
|
|
41
|
+
right(props?: {}): any;
|
|
42
|
+
toggle(props: {
|
|
43
|
+
open: boolean;
|
|
44
|
+
toggle: () => void;
|
|
45
|
+
}): any;
|
|
46
|
+
top(props?: {}): any;
|
|
47
|
+
bottom(props?: {}): any;
|
|
48
|
+
body(props?: {}): any;
|
|
49
|
+
content(props?: {}): any;
|
|
50
|
+
}
|
|
51
|
+
declare const _default: __VLS_WithSlots<import("vue").DefineComponent<HeaderProps<HeaderMode> & {
|
|
52
|
+
open?: boolean;
|
|
53
|
+
}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
54
|
+
"update:open": (value: boolean | undefined) => any;
|
|
55
|
+
}, string, import("vue").PublicProps, Readonly<HeaderProps<HeaderMode> & {
|
|
56
|
+
open?: boolean;
|
|
57
|
+
}> & Readonly<{
|
|
58
|
+
"onUpdate:open"?: ((value: boolean | undefined) => any) | undefined;
|
|
59
|
+
}>, {
|
|
60
|
+
toggle: boolean | Partial<ButtonProps>;
|
|
61
|
+
title: string;
|
|
62
|
+
to: string;
|
|
63
|
+
mode: HeaderMode;
|
|
64
|
+
as: any;
|
|
65
|
+
toggleSide: "left" | "right";
|
|
66
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, HeaderSlots>;
|
|
67
|
+
export default _default;
|
|
68
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
69
|
+
new (): {
|
|
70
|
+
$slots: S;
|
|
71
|
+
};
|
|
72
|
+
};
|
|
@@ -179,11 +179,11 @@ declare const _default: <T extends ArrayOrNested<InputMenuItem>, VK extends GetI
|
|
|
179
179
|
readonly onFocus?: ((payload: FocusEvent) => any) | undefined;
|
|
180
180
|
readonly onCreate?: ((item: string) => any) | undefined;
|
|
181
181
|
readonly "onUpdate:open"?: ((value: boolean) => any) | undefined;
|
|
182
|
-
readonly "onUpdate:modelValue"?: ((payload: GetModelValue<T, VK, M>) => any) | undefined;
|
|
183
182
|
readonly onHighlight?: ((payload: {
|
|
184
183
|
ref: HTMLElement;
|
|
185
184
|
value: GetModelValue<T, VK, M>;
|
|
186
185
|
} | undefined) => any) | undefined;
|
|
186
|
+
readonly "onUpdate:modelValue"?: ((payload: GetModelValue<T, VK, M>) => any) | undefined;
|
|
187
187
|
readonly "onUpdate:searchTerm"?: ((value: string) => any) | undefined;
|
|
188
188
|
} & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, "onFocus" | "onBlur" | "onChange" | "onUpdate:open" | "onUpdate:modelValue" | "onHighlight" | "onUpdate:searchTerm" | "onCreate"> & (InputMenuProps<T, VK, M> & {
|
|
189
189
|
searchTerm?: string;
|
|
@@ -521,10 +521,10 @@ declare const _default: <T extends ArrayOrNested<InputMenuItem>, VK extends GetI
|
|
|
521
521
|
}>): void;
|
|
522
522
|
attrs: any;
|
|
523
523
|
slots: InputMenuSlots<T, VK, M, NestedItem<T>>;
|
|
524
|
-
emit: (((evt: "blur", payload: FocusEvent) => void) & ((evt: "change", payload: Event) => void) & ((evt: "focus", payload: FocusEvent) => void) & ((evt: "create", item: string) => void) & ((evt: "update:open", value: boolean) => void) & ((evt: "
|
|
524
|
+
emit: (((evt: "blur", payload: FocusEvent) => void) & ((evt: "change", payload: Event) => void) & ((evt: "focus", payload: FocusEvent) => void) & ((evt: "create", item: string) => void) & ((evt: "update:open", value: boolean) => void) & ((evt: "highlight", payload: {
|
|
525
525
|
ref: HTMLElement;
|
|
526
526
|
value: GetModelValue<T, VK, M>;
|
|
527
|
-
} | undefined) => void)) & ((evt: "update:searchTerm", value: string) => void);
|
|
527
|
+
} | undefined) => void) & ((evt: "update:modelValue", payload: GetModelValue<T, VK, M>) => void)) & ((evt: "update:searchTerm", value: string) => void);
|
|
528
528
|
}>) => import("vue").VNode & {
|
|
529
529
|
__ctx?: Awaited<typeof __VLS_setup>;
|
|
530
530
|
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
import theme from "#build/ui/main";
|
|
3
|
+
</script>
|
|
4
|
+
|
|
5
|
+
<script setup>
|
|
6
|
+
import { computed } from "vue";
|
|
7
|
+
import { Primitive } from "reka-ui";
|
|
8
|
+
import { useAppConfig } from "#imports";
|
|
9
|
+
import { tv } from "../utils/tv";
|
|
10
|
+
const props = defineProps({
|
|
11
|
+
as: { type: null, required: false, default: "main" },
|
|
12
|
+
class: { type: null, required: false }
|
|
13
|
+
});
|
|
14
|
+
defineSlots();
|
|
15
|
+
const appConfig = useAppConfig();
|
|
16
|
+
const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.main || {} }));
|
|
17
|
+
</script>
|
|
18
|
+
|
|
19
|
+
<template>
|
|
20
|
+
<Primitive :as="as" :class="ui({ class: props.class })">
|
|
21
|
+
<slot />
|
|
22
|
+
</Primitive>
|
|
23
|
+
</template>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface MainProps {
|
|
2
|
+
/**
|
|
3
|
+
* The element or component this component should render as.
|
|
4
|
+
* @defaultValue 'main'
|
|
5
|
+
*/
|
|
6
|
+
as?: any;
|
|
7
|
+
class?: any;
|
|
8
|
+
}
|
|
9
|
+
export interface MainSlots {
|
|
10
|
+
default(props?: {}): any;
|
|
11
|
+
}
|
|
12
|
+
declare const _default: __VLS_WithSlots<import("vue").DefineComponent<MainProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<MainProps> & Readonly<{}>, {
|
|
13
|
+
as: any;
|
|
14
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, MainSlots>;
|
|
15
|
+
export default _default;
|
|
16
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
17
|
+
new (): {
|
|
18
|
+
$slots: S;
|
|
19
|
+
};
|
|
20
|
+
};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
import theme from "#build/ui/page";
|
|
3
|
+
</script>
|
|
4
|
+
|
|
5
|
+
<script setup>
|
|
6
|
+
import { computed } from "vue";
|
|
7
|
+
import { Primitive, Slot } from "reka-ui";
|
|
8
|
+
import { useAppConfig } from "#imports";
|
|
9
|
+
import { tv } from "../utils/tv";
|
|
10
|
+
const props = defineProps({
|
|
11
|
+
as: { type: null, required: false },
|
|
12
|
+
class: { type: null, required: false },
|
|
13
|
+
ui: { type: null, required: false }
|
|
14
|
+
});
|
|
15
|
+
const slots = defineSlots();
|
|
16
|
+
const appConfig = useAppConfig();
|
|
17
|
+
const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.page || {} })({
|
|
18
|
+
left: !!slots.left,
|
|
19
|
+
right: !!slots.right
|
|
20
|
+
}));
|
|
21
|
+
</script>
|
|
22
|
+
|
|
23
|
+
<template>
|
|
24
|
+
<Primitive :as="as" :class="ui.root({ class: [props.ui?.root, props.class] })">
|
|
25
|
+
<Slot v-if="!!slots.left" :class="ui.left({ class: props.ui?.left })">
|
|
26
|
+
<slot name="left" />
|
|
27
|
+
</Slot>
|
|
28
|
+
|
|
29
|
+
<div :class="ui.center({ class: props.ui?.center })">
|
|
30
|
+
<slot />
|
|
31
|
+
</div>
|
|
32
|
+
|
|
33
|
+
<Slot v-if="!!slots.right" :class="ui.right({ class: props.ui?.right })">
|
|
34
|
+
<slot name="right" />
|
|
35
|
+
</Slot>
|
|
36
|
+
</Primitive>
|
|
37
|
+
</template>
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import theme from '#build/ui/page';
|
|
2
|
+
import type { AppConfig } from '@nuxt/schema';
|
|
3
|
+
import type { ComponentConfig } from '../types';
|
|
4
|
+
type Page = ComponentConfig<typeof theme, AppConfig, 'page'>;
|
|
5
|
+
export interface PageProps {
|
|
6
|
+
/**
|
|
7
|
+
* The element or component this component should render as.
|
|
8
|
+
* @defaultValue 'div'
|
|
9
|
+
*/
|
|
10
|
+
as?: any;
|
|
11
|
+
class?: any;
|
|
12
|
+
ui?: Page['slots'];
|
|
13
|
+
}
|
|
14
|
+
export interface PageSlots {
|
|
15
|
+
left(props?: {}): any;
|
|
16
|
+
default(props?: {}): any;
|
|
17
|
+
right(props?: {}): any;
|
|
18
|
+
}
|
|
19
|
+
declare const _default: __VLS_WithSlots<import("vue").DefineComponent<PageProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<PageProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, PageSlots>;
|
|
20
|
+
export default _default;
|
|
21
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
22
|
+
new (): {
|
|
23
|
+
$slots: S;
|
|
24
|
+
};
|
|
25
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
import theme from "#build/ui/page-accordion";
|
|
3
|
+
</script>
|
|
4
|
+
|
|
5
|
+
<script setup>
|
|
6
|
+
import { computed } from "vue";
|
|
7
|
+
import { omit, transformUI } from "../utils";
|
|
8
|
+
import { useAppConfig } from "#imports";
|
|
9
|
+
import { tv } from "../utils/tv";
|
|
10
|
+
const props = defineProps({
|
|
11
|
+
type: { type: null, required: false, default: "multiple" },
|
|
12
|
+
class: { type: null, required: false },
|
|
13
|
+
ui: { type: void 0, required: false }
|
|
14
|
+
});
|
|
15
|
+
const slots = defineSlots();
|
|
16
|
+
const appConfig = useAppConfig();
|
|
17
|
+
const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.pageAccordion || {} })());
|
|
18
|
+
</script>
|
|
19
|
+
|
|
20
|
+
<template>
|
|
21
|
+
<UAccordion :type="type" :unmount-on-hide="false" :class="ui.base({ class: [props.ui?.base, props.class] })" :ui="transformUI(omit(ui, ['base']), props.ui)">
|
|
22
|
+
<template v-for="(_, name) in slots" #[name]="slotData">
|
|
23
|
+
<slot :name="name" v-bind="slotData" />
|
|
24
|
+
</template>
|
|
25
|
+
</UAccordion>
|
|
26
|
+
</template>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import theme from '#build/ui/page-accordion';
|
|
2
|
+
import type { AppConfig } from '@nuxt/schema';
|
|
3
|
+
import type { AccordionProps, AccordionSlots, AccordionItem, ComponentConfig } from '../types';
|
|
4
|
+
type PageAccordion = ComponentConfig<typeof theme, AppConfig, 'pageAccordion'>;
|
|
5
|
+
export interface PageAccordionProps<T extends AccordionItem = AccordionItem> extends /** @vue-ignore */ Omit<AccordionProps<T>, 'type'> {
|
|
6
|
+
type?: AccordionProps<T>['type'];
|
|
7
|
+
class?: any;
|
|
8
|
+
ui?: PageAccordion['slots'] & AccordionProps['ui'];
|
|
9
|
+
}
|
|
10
|
+
export type PageAccordionSlots<T extends AccordionItem = AccordionItem> = AccordionSlots<T & {
|
|
11
|
+
slot?: string;
|
|
12
|
+
}>;
|
|
13
|
+
declare const _default: __VLS_WithSlots<import("vue").DefineComponent<PageAccordionProps<AccordionItem>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<PageAccordionProps<AccordionItem>> & Readonly<{}>, {
|
|
14
|
+
type: "multiple" | "single";
|
|
15
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, PageAccordionSlots<AccordionItem>>;
|
|
16
|
+
export default _default;
|
|
17
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
18
|
+
new (): {
|
|
19
|
+
$slots: S;
|
|
20
|
+
};
|
|
21
|
+
};
|