@nuxt/ui
Version:
A UI Library for Modern Web Apps, powered by Vue & Tailwind CSS.
131 lines (129 loc) • 4.02 kB
text/typescript
const color = [
"primary",
"secondary",
"success",
"info",
"warning",
"error",
"neutral"
] as const
const size = [
"xs",
"sm",
"md",
"lg",
"xl"
] as const
export default {
"slots": {
"root": "relative flex items-start",
"base": [
"inline-flex items-center shrink-0 rounded-full border-2 border-transparent focus-visible:outline-2 focus-visible:outline-offset-2 data-[state=unchecked]:bg-accented",
"transition-[background] duration-200"
],
"container": "flex items-center",
"thumb": "group pointer-events-none rounded-full bg-default shadow-lg ring-0 transition-transform duration-200 data-[state=unchecked]:translate-x-0 data-[state=unchecked]:rtl:-translate-x-0 flex items-center justify-center",
"icon": [
"absolute shrink-0 group-data-[state=unchecked]:text-dimmed opacity-0 size-10/12",
"transition-[color,opacity] duration-200"
],
"wrapper": "ms-2",
"label": "block font-medium text-default",
"description": "text-muted"
},
"variants": {
"color": {
"primary": {
"base": "data-[state=checked]:bg-primary focus-visible:outline-primary",
"icon": "group-data-[state=checked]:text-primary"
},
"secondary": {
"base": "data-[state=checked]:bg-secondary focus-visible:outline-secondary",
"icon": "group-data-[state=checked]:text-secondary"
},
"success": {
"base": "data-[state=checked]:bg-success focus-visible:outline-success",
"icon": "group-data-[state=checked]:text-success"
},
"info": {
"base": "data-[state=checked]:bg-info focus-visible:outline-info",
"icon": "group-data-[state=checked]:text-info"
},
"warning": {
"base": "data-[state=checked]:bg-warning focus-visible:outline-warning",
"icon": "group-data-[state=checked]:text-warning"
},
"error": {
"base": "data-[state=checked]:bg-error focus-visible:outline-error",
"icon": "group-data-[state=checked]:text-error"
},
"neutral": {
"base": "data-[state=checked]:bg-inverted focus-visible:outline-inverted",
"icon": "group-data-[state=checked]:text-highlighted"
}
},
"size": {
"xs": {
"base": "w-7",
"container": "h-4",
"thumb": "size-3 data-[state=checked]:translate-x-3 data-[state=checked]:rtl:-translate-x-3",
"wrapper": "text-xs"
},
"sm": {
"base": "w-8",
"container": "h-4",
"thumb": "size-3.5 data-[state=checked]:translate-x-3.5 data-[state=checked]:rtl:-translate-x-3.5",
"wrapper": "text-xs"
},
"md": {
"base": "w-9",
"container": "h-5",
"thumb": "size-4 data-[state=checked]:translate-x-4 data-[state=checked]:rtl:-translate-x-4",
"wrapper": "text-sm"
},
"lg": {
"base": "w-10",
"container": "h-5",
"thumb": "size-4.5 data-[state=checked]:translate-x-4.5 data-[state=checked]:rtl:-translate-x-4.5",
"wrapper": "text-sm"
},
"xl": {
"base": "w-11",
"container": "h-6",
"thumb": "size-5 data-[state=checked]:translate-x-5 data-[state=checked]:rtl:-translate-x-5",
"wrapper": "text-base"
}
},
"checked": {
"true": {
"icon": "group-data-[state=checked]:opacity-100"
}
},
"unchecked": {
"true": {
"icon": "group-data-[state=unchecked]:opacity-100"
}
},
"loading": {
"true": {
"icon": "animate-spin"
}
},
"required": {
"true": {
"label": "after:content-['*'] after:ms-0.5 after:text-error"
}
},
"disabled": {
"true": {
"base": "cursor-not-allowed opacity-75",
"label": "cursor-not-allowed opacity-75",
"description": "cursor-not-allowed opacity-75"
}
}
},
"defaultVariants": {
"color": "primary" as typeof color[number],
"size": "md" as typeof size[number]
}
}