@extclp/vexip-ui
Version:
A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good
107 lines (106 loc) • 3.14 kB
TypeScript
import { App, ComputedRef, MaybeRef } from 'vue';
import { ClassType, StyleType } from './props';
export declare const PROVIDED_ICONS = "__vxp-provided-icons";
export type IconValue = Record<string, any> | (() => any);
export interface IconOptions extends Record<string, any> {
class?: ClassType;
style?: StyleType;
scale?: number | string;
title?: string;
label?: string;
flip?: 'horizontal' | 'vertical' | 'both';
effect?: string;
size?: string;
color?: string;
rotate?: number | string;
}
export type IconArrayValue = [IconValue, IconOptions?];
export type IconConfig = IconValue | IconArrayValue;
export interface IconsOptions {
loading?: IconConfig;
clear?: IconConfig;
close?: IconConfig;
calendar?: IconConfig;
clock?: IconConfig;
exchange?: IconConfig;
angleUp?: IconConfig;
angleRight?: IconConfig;
angleDown?: IconConfig;
angleLeft?: IconConfig;
anglesRight?: IconConfig;
anglesLeft?: IconConfig;
retweet?: IconConfig;
refresh?: IconConfig;
filter?: IconConfig;
ellipsis?: IconConfig;
upload?: IconConfig;
uploadCloud?: IconConfig;
check?: IconConfig;
help?: IconConfig;
alert?: IconConfig;
question?: IconConfig;
info?: IconConfig;
success?: IconConfig;
warning?: IconConfig;
error?: IconConfig;
delete?: IconConfig;
preview?: IconConfig;
image?: IconConfig;
plus?: IconConfig;
minus?: IconConfig;
plusSquare?: IconConfig;
minusSquare?: IconConfig;
cipherText?: IconConfig;
plainText?: IconConfig;
user?: IconConfig;
light?: IconConfig;
dark?: IconConfig;
signOut?: IconConfig;
indent?: IconConfig;
outdent?: IconConfig;
search?: IconConfig;
rotateRight?: IconConfig;
rotateLeft?: IconConfig;
flipX?: IconConfig;
flipY?: IconConfig;
zoomIn?: IconConfig;
zoonOut?: IconConfig;
fullScreen?: IconConfig;
resetScreen?: IconConfig;
dragger?: IconConfig;
file?: IconConfig;
fileText?: IconConfig;
fileCode?: IconConfig;
fileImage?: IconConfig;
fileAudio?: IconConfig;
fileVideo?: IconConfig;
fileZip?: IconConfig;
volume?: IconConfig;
volumeLow?: IconConfig;
volumeMute?: IconConfig;
play?: IconConfig;
pause?: IconConfig;
fullWindow?: IconConfig;
pip?: IconConfig;
playState?: IconConfig;
pauseState?: IconConfig;
playPrev?: IconConfig;
playNext?: IconConfig;
}
export type IconName = keyof IconsOptions;
export type IconsConfig = {
[K in keyof IconsOptions]-?: IconConfig;
};
export type NormalizedIconsConfig = Record<IconName, IconOptions & {
icon: IconValue;
}>;
export declare const iconNames: readonly (keyof IconsOptions)[];
export declare const globalIcons: ComputedRef<NormalizedIconsConfig>;
/**
* Provide a icons config for under components.
*
* @param icons icons config
* @param app the app of Vue, will use app.provide if specify
*/
export declare function configIcons(icons: MaybeRef<IconsOptions>, app?: App): void;
export declare function useIcons(): ComputedRef<NormalizedIconsConfig>;