// Utilities import { convertToUnit, destructComputed, getCurrentInstanceName, includes, propsFactory, } from '@/utils' // Types const predefinedSizes = ['xs', 'sm', 'md', 'lg', 'xl', 'xxl'] export const enum Sizes { xs = 'xs', sm = 'sm', md = 'md', lg = 'lg', xl = 'xl', xxl = 'xxl', } export interface SizeProps { size?: string | number } // Composables export const makeSizeProps = propsFactory( { size: { type: [String, Number], default: Sizes.md, }, }, 'size' ) export function useSize(props: SizeProps, name = getCurrentInstanceName()) { return destructComputed(() => { let sizeClasses let sizeStyles if (includes(predefinedSizes, props.size)) { sizeClasses = `${name}--size-${props.size}` } else if (props.size) { sizeStyles = { width: convertToUnit(props.size), height: convertToUnit(props.size), } } return { sizeClasses, sizeStyles } }) }