UNPKG

@eslamdevui/ui

Version:

A UI Library for Modern Web Apps, powered by Vue & Tailwind CSS.

73 lines (72 loc) 2.4 kB
import theme from '#build/ui/header'; import type { AppConfig } from '@nuxt/schema'; import type { ButtonProps, DrawerProps, ModalProps, SlideoverProps, ComponentConfig } from '../types'; type Header = ComponentConfig<typeof theme, AppConfig, 'header'>; type HeaderMode = 'modal' | 'slideover' | 'drawer'; type HeaderMenu<T> = T extends 'modal' ? ModalProps : T extends 'slideover' ? SlideoverProps : T extends 'drawer' ? DrawerProps : never; export interface HeaderProps<T extends HeaderMode = HeaderMode> { /** * The element or component this component should render as. * @defaultValue 'header' */ as?: any; title?: string; to?: string; /** * The mode of the header menu. * @defaultValue 'modal' */ mode?: T; /** * The props for the header menu component. */ menu?: HeaderMenu<T>; /** * Customize the toggle button to open the header menu displayed when the `content` slot is used. * `{ color: 'neutral', variant: 'ghost' }`{lang="ts-type"} */ toggle?: boolean | Partial<ButtonProps>; /** * The side to render the toggle button on. * @defaultValue 'right' */ toggleSide?: 'left' | 'right'; class?: any; ui?: Header['slots']; } export interface HeaderSlots { title(props?: {}): any; left(props?: {}): any; default(props?: {}): any; right(props?: {}): any; toggle(props: { open: boolean; toggle: () => void; }): any; top(props?: {}): any; bottom(props?: {}): any; body(props?: {}): any; content(props?: {}): any; } declare const _default: __VLS_WithSlots<import("vue").DefineComponent<HeaderProps<HeaderMode> & { open?: boolean; }, void, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, { "update:open": (value: boolean | undefined) => any; }, string, import("vue").PublicProps, Readonly<HeaderProps<HeaderMode> & { open?: boolean; }> & Readonly<{ "onUpdate:open"?: ((value: boolean | undefined) => any) | undefined; }>, { toggle: boolean | Partial<ButtonProps>; title: string; to: string; mode: HeaderMode; as: any; toggleSide: "left" | "right"; }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, HeaderSlots>; export default _default; type __VLS_WithSlots<T, S> = T & { new (): { $slots: S; }; };