import type { DefineComponent, StyleValue, VNode } from 'vue'; import type { JSX } from 'vue/jsx-runtime'; import type { GROUP_OPTION_TYPE, SCREEN_SIZE_TYPE } from '../const'; export type NumberOrPercentage = number | `${number}%`; export type RgbaColor = { r: number; g: number; b: number; a: number; }; export type RgbColor = { r: number; g: number; b: number; }; export type ValidContent = string | ((...args: any[]) => VNode | string | JSX.Element | null | void); export type ValidVNodeContent = (...args: any[]) => VNode | JSX.Element; export type ValueWithDeviceWidth = Record; export interface Option { value: T; label: string; } export interface GroupOption { children: (Option | string)[]; type: typeof GROUP_OPTION_TYPE; } export type LooseRequired = { [P in keyof (T & Required)]: T[P]; }; export type RemoveUndefinedFromFields = { [P in keyof T]: P extends K ? Exclude : T[P]; }; export type VueComponent = DefineComponent, Record, any>; export type EmitEvent> = { [K in keyof T as `on${Capitalize}`]?: (...args: T[K]) => void; }; export type VueClassValue = string | Record | VueClassValue[]; export type VueStyleValue = StyleValue; export type RestAttrs = { style?: VueStyleValue | null; class?: VueClassValue | null; [x: string]: any; }; export interface NavigationOption { index: string | number | symbol; label?: string; }