1- export type ButtonVariant = 'primary' | 'secondary' | 'twitter' | 'success' | 'warning' | 'spotlight' | 'icon'
1+ export type ButtonVariant =
2+ | 'primary'
3+ | 'secondary'
4+ | 'twitter'
5+ | 'success'
6+ | 'success-offset'
7+ | 'warning'
8+ | 'spotlight'
9+ | 'icon'
210export type ButtonSize = 'small' | 'medium' | 'large'
311export type ButtonType = 'button' | 'submit' | 'reset'
412export type IconPosition = 'left' | 'right' | 'only'
@@ -34,14 +42,11 @@ function addClassNames(classList: ClassList, classNames: string) {
3442
3543const baseButtonClasses =
3644 'inline-flex items-center justify-center text-center align-middle whitespace-nowrap select-none ' +
37- 'no-underline ' +
38- 'relative focus-visible:outline-none ' +
39- "after:pointer-events-none after:absolute after:content-[''] after:inset-0 after:rounded-none after:border-2 after:border-transparent after:opacity-0 after:transition-opacity after:duration-150 after:ease-out " +
40- 'focus-visible:after:opacity-100 focus-visible:after:[inset:-6px] focus-visible:after:border-spotlight ' +
45+ 'no-underline hover:no-underline focus:no-underline focus-visible:no-underline decoration-transparent ' +
46+ 'focus:outline-none focus-visible:outline-2 focus-visible:outline-spotlight focus-visible:outline-offset-2 focus-visible:rounded-none ' +
4147 'border-2 border-solid border-transparent rounded-md ' +
4248 'font-bold uppercase tracking-[0.08em] ' +
4349 'text-sm leading-5 ' +
44- '[box-shadow:var(--shadow-sm)] [text-shadow:var(--shadow-text)] ' +
4550 'transition-[color,background-color,border-color,box-shadow,transform] duration-200 ease-in-out ' +
4651 'disabled:cursor-not-allowed disabled:opacity-[0.65] disabled:pointer-events-none ' +
4752 'aria-disabled:cursor-not-allowed aria-disabled:opacity-[0.65] aria-disabled:pointer-events-none'
@@ -58,30 +63,35 @@ const sizeClasses: Record<ButtonSize, string> = {
5863const variantClasses : Record < ButtonVariant , string > = {
5964 primary :
6065 'bg-primary text-content ' +
61- 'hover:bg-primary-offset hover:[box-shadow:var(--shadow-hover)] hover:-translate-y-px ' +
62- 'focus-visible:bg-primary-offset focus-visible:[box-shadow:var(--shadow-hover)] focus-visible:-translate-y-px ' +
63- 'active:bg-primary-offset active:[box-shadow:var(--shadow-active)] active:translate-y-px ' ,
66+ 'hover:bg-primary-offset hover:[box-shadow:var(--shadow-hover)] ' +
67+ 'focus-visible:bg-primary-offset focus-visible:[box-shadow:var(--shadow-hover)] ' +
68+ 'active:bg-primary-offset active:[box-shadow:var(--shadow-active)]' ,
6469 secondary :
6570 'bg-secondary text-content ' +
66- 'hover:bg-secondary-offset hover:[box-shadow:var(--shadow-hover)] hover:-translate-y-px ' +
67- 'focus-visible:bg-secondary-offset focus-visible:[box-shadow:var(--shadow-hover)] focus-visible:-translate-y-px ' +
68- 'active:bg-secondary-offset active:[box-shadow:var(--shadow-active)] active:translate-y-px ' ,
71+ 'hover:bg-secondary-offset hover:[box-shadow:var(--shadow-hover)] ' +
72+ 'focus-visible:bg-secondary-offset focus-visible:[box-shadow:var(--shadow-hover)] ' +
73+ 'active:bg-secondary-offset active:[box-shadow:var(--shadow-active)]' ,
6974 twitter : 'bg-x border-x text-content hover:bg-transparent hover:text-x focus-visible:bg-transparent focus-visible:text-x' ,
7075 success :
7176 'bg-success text-white ' +
72- 'hover:bg-success-offset hover:[box-shadow:var(--shadow-hover)] hover:-translate-y-px ' +
73- 'focus-visible:bg-success-offset focus-visible:[box-shadow:var(--shadow-hover)] focus-visible:-translate-y-px ' +
74- 'active:bg-success-offset active:[box-shadow:var(--shadow-active)] active:translate-y-px' ,
77+ 'hover:bg-success-offset hover:[box-shadow:var(--shadow-hover)] ' +
78+ 'focus-visible:bg-success-offset focus-visible:[box-shadow:var(--shadow-hover)] ' +
79+ 'active:bg-success-offset active:[box-shadow:var(--shadow-active)]' ,
80+ 'success-offset' :
81+ 'bg-success-offset text-content-inverse ' +
82+ 'hover:bg-success hover:[box-shadow:var(--shadow-hover)] ' +
83+ 'focus-visible:bg-success focus-visible:[box-shadow:var(--shadow-hover)] ' +
84+ 'active:bg-success active:[box-shadow:var(--shadow-active)]' ,
7585 warning :
7686 'bg-warning text-content ' +
77- 'hover:bg-warning-offset hover:[box-shadow:var(--shadow-hover)] hover:-translate-y-px ' +
78- 'focus-visible:bg-warning-offset focus-visible:[box-shadow:var(--shadow-hover)] focus-visible:-translate-y-px ' +
79- 'active:bg-warning-offset active:[box-shadow:var(--shadow-active)] active:translate-y-px ' ,
87+ 'hover:bg-warning-offset hover:[box-shadow:var(--shadow-hover)] ' +
88+ 'focus-visible:bg-warning-offset focus-visible:[box-shadow:var(--shadow-hover)] ' +
89+ 'active:bg-warning-offset active:[box-shadow:var(--shadow-active)]' ,
8090 spotlight :
8191 'bg-spotlight text-black ' +
82- 'hover:bg-spotlight-offset hover:[box-shadow:var(--shadow-hover)] hover:-translate-y-px ' +
83- 'focus-visible:bg-spotlight-offset focus-visible:[box-shadow:var(--shadow-hover)] focus-visible:-translate-y-px ' +
84- 'active:bg-spotlight-offset active:[box-shadow:var(--shadow-active)] active:translate-y-px ' ,
92+ 'hover:bg-spotlight-offset hover:[box-shadow:var(--shadow-hover)] ' +
93+ 'focus-visible:bg-spotlight-offset focus-visible:[box-shadow:var(--shadow-hover)] ' +
94+ 'active:bg-spotlight-offset active:[box-shadow:var(--shadow-active)]' ,
8595 icon :
8696 'aspect-square bg-transparent text-content p-2 ![box-shadow:none] ' +
8797 'hover:bg-page-offset hover:text-primary ' +
0 commit comments