vueless
Version:
Vue Styleless UI Component Library, powered by Tailwind CSS.
115 lines (114 loc) • 3.49 kB
text/typescript
export default /*tw*/ {
button: {
base: `
flex items-center justify-center font-medium !leading-snug whitespace-nowrap
border border-transparent transition cursor-pointer
focus-visible:outline-medium focus-visible:outline-offset-2 focus-visible:outline-{color}
disabled:cursor-not-allowed disabled:outline-0 disabled:outline-offset-0
`,
variants: {
size: {
"2xs": "px-2 py-1 text-small gap-0.5",
xs: "px-3 py-1.5 text-small gap-1",
sm: "px-4 py-2 text-medium gap-1.5",
md: "px-5 py-2.5 text-medium gap-1.5",
lg: "px-6 py-3 text-large gap-1.5",
xl: "px-7 py-3.5 text-large gap-2",
},
variant: {
solid: `
text-inverted bg-{color}
hover:bg-{color}-lifted
active:bg-{color}-accented
disabled:!bg-{color}/(--vl-disabled-opacity)
`,
outlined: `
text-{color} border-{color}
hover:text-{color}-lifted hover:border-{color}-lifted hover:bg-{color}-lifted/10
active:text-{color}-accented active:border-{color}-accented active:bg-{color}-accented/15
disabled:!text-{color}/(--vl-disabled-opacity) disabled:!bg-{color}/5 disabled:!border-{color}/(--vl-disabled-opacity)
`,
subtle: `
text-{color} bg-{color}/5 border-{color}/15
hover:text-{color}-lifted hover:bg-{color}-lifted/10
active:text-{color}-accented active:bg-{color}-accented/15
disabled:!text-{color}/(--vl-disabled-opacity) disabled:!bg-{color}/5 disabled:!border-{color}/10
`,
soft: `
text-{color} bg-{color}/5
hover:text-{color}-lifted hover:bg-{color}-lifted/10
active:text-{color}-accented active:bg-{color}-accented/15
disabled:!text-{color}/(--vl-disabled-opacity) disabled:!bg-{color}/5
`,
ghost: `
text-{color} bg-transparent
hover:text-{color}-lifted hover:bg-{color}-lifted/10
active:text-{color}-accented active:bg-{color}-accented/15
disabled:!text-{color}/(--vl-disabled-opacity) disabled:!bg-transparent
`,
},
round: {
false: "rounded-medium",
true: "rounded-full",
},
loading: {
true: "gap-0 pointer-events-none",
},
label: {
false: "gap-0",
},
block: {
true: "w-full",
},
},
compoundVariants: [
{ square: true, size: "2xs", class: "p-1" },
{ square: true, size: "xs", class: "p-1.5" },
{ square: true, size: "sm", class: "p-2" },
{ square: true, size: "md", class: "p-2.5" },
{ square: true, size: "lg", class: "p-3" },
{ square: true, size: "xl", class: "p-3.5" },
],
},
loader: {
base: "{ULoader}",
defaults: {
size: {
"2xs": "sm",
xs: "sm",
sm: "md",
md: "md",
lg: "lg",
xl: "lg",
},
},
},
leftIcon: "{UIcon} {>centerIcon} -ml-1",
rightIcon: "{UIcon} {>centerIcon} -mr-1",
centerIcon: {
base: "{UIcon}",
defaults: {
size: {
"2xs": "2xs",
xs: "xs",
sm: "sm",
md: "sm",
lg: "sm",
xl: "sm",
},
},
},
invisible: "invisible w-0",
defaults: {
color: "primary",
variant: "solid",
tag: "button",
size: "md",
tabindex: 0,
round: false,
block: false,
square: false,
loading: false,
disabled: false,
},
};