@ark-ui/vue
Version:
A collection of unstyled, accessible UI components for Vue, utilizing state machines for seamless interaction.
15 lines (14 loc) • 537 B
text/typescript
/**
* Type to make properties optional and preserve their type
*/
export type Optional<T, K extends keyof T> = Pick<Partial<T>, K> & Omit<T, K>;
export type Assign<T, U> = Omit<T, keyof U> & U;
export type EmitFn<T> = <K extends keyof T>(event: K, ...args: T[K] extends any[] ? T[K] : never) => void;
type BooleanKey<T> = {
[K in keyof T]: boolean extends NonNullable<T[K]> ? K : never;
}[keyof T];
export type BooleanDefaults<T> = {
[K in BooleanKey<T>]: undefined;
};
export type MaybePromise<T> = T | Promise<T>;
export {};