@indielayer/ui
Version:
Indielayer UI Components with Tailwind CSS build for Vue 3
30 lines (29 loc) • 1.61 kB
TypeScript
import { type Slots, type UnwrapNestedRefs, type UnwrapRef, type MaybeRef, type CSSProperties } from 'vue';
import { type ColorComposition } from './useColors';
import { type CSSComposition } from './useCSS';
import type { ComponentThemes } from 'src/theme';
export type Stylish = false | null | undefined | string | CSSProperties;
export type StyleValue = Stylish | Array<Stylish>;
export type ThemeVueClass = string | Record<string, boolean> | (string | Record<string, boolean>)[];
export type ThemeClasses<P, K extends string = string, D = undefined> = Record<K, string | ((params: ThemeParams<P, D>) => ThemeVueClass)>;
export type ThemeStyles<P, D> = StyleValue | ((params: ThemeParams<P, D>) => StyleValue);
export interface ThemeComponent<P = object, K extends string = string, D = object> {
classes?: Partial<ThemeClasses<P, K, D>>;
styles?: ThemeStyles<P, D>;
}
export type ThemeParams<P = Record<string, any>, D = Record<string, any>> = {
props: UnwrapRef<P>;
slots: Slots;
colors: ColorComposition;
css: CSSComposition;
rtl?: boolean;
data: UnwrapNestedRefs<D>;
};
export declare const useTheme: <P extends object = object, K extends string = string, D extends object = object>(namespace: keyof ComponentThemes, defaultTheme?: ThemeComponent<P, K, D>, props?: MaybeRef<P>, data?: D) => {
classPrefix: import("vue").ComputedRef<string>;
className: import("vue").ComputedRef<string>;
colors: ColorComposition;
classes: import("vue").ComputedRef<Record<K, ThemeVueClass>>;
styles: import("vue").ComputedRef<StyleValue>;
css: CSSComposition;
};