@@ -4,95 +4,91 @@ import type { ButtonDuotoneGradient, ButtonGradient, ButtonMonochromeGradient, B
44
55export type ButtonClassMap < T extends string > = { hover : Record < T , string > , default : Record < T , string > }
66
7+ const buttonDefaultClasses = 'inline-block'
8+
79const buttonColorClasses : ButtonClassMap < ButtonVariant > = {
810 default : {
9- default : 'text-white bg-blue-700 focus:ring-4 focus:ring-blue-300 font-medium rounded-lg dark:bg-blue-600 focus:outline-none dark:focus:ring-blue-800 ' ,
11+ alternative : 'font-medium text-gray-900 focus:outline-none bg-white rounded-lg border border-gray-200 focus:z-10 focus: ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 dark:bg-gray-800 dark:text-gray-400 dark:border-gray-600 ' ,
1012 blue : 'text-white bg-blue-700 focus:ring-4 focus:ring-blue-300 font-medium rounded-lg dark:bg-blue-600 focus:outline-none dark:focus:ring-blue-800' ,
11- alternative :
12- 'font-medium text-gray-900 focus:outline-none bg-white rounded-lg border border-gray-200 focus:z-10 focus:ring-4 focus:ring-gray-200 dark:focus:ring-gray-700 dark:bg-gray-800 dark:text-gray-400 dark:border-gray-600' ,
1313 dark : 'text-white bg-gray-800 focus:outline-none focus:ring-4 focus:ring-gray-300 font-medium rounded-lg dark:bg-gray-800 dark:focus:ring-gray-700 dark:border-gray-700' ,
14- light :
15- 'text-gray-900 bg-white border border-gray-300 focus:outline-none focus:ring-4 focus:ring-gray-200 font-medium rounded-lg dark:bg-gray-800 dark:text-white dark:border-gray-600 dark:focus:ring-gray-700' ,
14+ default : 'text-white bg-blue-700 focus:ring-4 focus:ring-blue-300 font-medium rounded-lg dark:bg-blue-600 focus:outline-none dark:focus:ring-blue-800' ,
1615 green : 'focus:outline-none text-white bg-green-700 focus:ring-4 focus:ring-green-300 font-medium rounded-lg dark:bg-green-600 dark:focus:ring-green-800' ,
16+ light : 'text-gray-900 bg-white border border-gray-300 focus:outline-none focus:ring-4 focus:ring-gray-200 font-medium rounded-lg dark:bg-gray-800 dark:text-white dark:border-gray-600 dark:focus:ring-gray-700' ,
17+ pink : 'focus:outline-none text-white bg-pink-700 focus:ring-4 focus:ring-pink-300 font-medium rounded-lg dark:bg-pink-600 dark:focus:ring-pink-900' ,
18+ purple : 'focus:outline-none text-white bg-purple-700 focus:ring-4 focus:ring-purple-300 font-medium rounded-lg dark:bg-purple-600 dark:focus:ring-purple-900' ,
1719 red : 'focus:outline-none text-white bg-red-700 focus:ring-4 focus:ring-red-300 font-medium rounded-lg dark:bg-red-600 dark:focus:ring-red-900' ,
1820 yellow : 'focus:outline-none text-white bg-yellow-400 focus:ring-4 focus:ring-yellow-300 font-medium rounded-lg dark:focus:ring-yellow-900' ,
19- purple : 'focus:outline-none text-white bg-purple-700 focus:ring-4 focus:ring-purple-300 font-medium rounded-lg dark:bg-purple-600 dark:focus:ring-purple-900' ,
20- pink : 'focus:outline-none text-white bg-pink-700 focus:ring-4 focus:ring-pink-300 font-medium rounded-lg dark:bg-pink-600 dark:focus:ring-pink-900' ,
2121 } ,
2222 hover : {
23- default : 'hover:bg-blue-800 dark:hover:bg-blue-700' ,
24- blue : 'hover:bg-blue-800 dark:hover:bg-blue-700' ,
2523 alternative : 'hover:bg-gray-100 hover:text-blue-700 dark:hover:text-white dark:hover:bg-gray-700' ,
24+ blue : 'hover:bg-blue-800 dark:hover:bg-blue-700' ,
2625 dark : 'hover:bg-gray-900 dark:hover:bg-gray-700' ,
27- light : 'hover:bg-gray-100 dark:hover:border-gray-600 dark:hover: bg-gray -700' ,
26+ default : 'hover:bg-blue-800 dark:hover:bg-blue -700' ,
2827 green : 'hover:bg-green-800 dark:hover:bg-green-700' ,
28+ light : 'hover:bg-gray-100 dark:hover:border-gray-600 dark:hover:bg-gray-700' ,
29+ pink : 'hover:bg-pink-800 dark:hover:bg-pink-700' ,
30+ purple : 'hover:bg-purple-800 dark:hover:bg-purple-700' ,
2931 red : 'hover:bg-red-800 dark:hover:bg-red-700' ,
3032 yellow : 'hover:bg-yellow-500' ,
31- purple : 'hover:bg-purple-800 dark:hover:bg-purple-700' ,
32- pink : 'hover:bg-pink-800 dark:hover:bg-pink-700' ,
3333 } ,
3434}
3535
3636const buttonOutlineColorClasses : ButtonClassMap < Exclude < ButtonVariant , 'light' | 'alternative' > > = {
3737 default : {
38- dark : 'text-gray-900 border border-gray-800 focus:ring-4 focus:outline-none focus:ring-gray-300 font-medium rounded-lg text-sm text-center dark:border-gray-600 dark:text-gray-400 dark:focus:ring-gray-800' ,
39- default :
40- 'text-blue-700 border border-blue-700 focus:ring-4 focus:outline-none focus:ring-blue-300 font-medium rounded-lg text-sm text-center dark:border-blue-500 dark:text-blue-500 dark:focus:ring-blue-800' ,
4138 blue : 'text-blue-700 border border-blue-700 focus:ring-4 focus:outline-none focus:ring-blue-300 font-medium rounded-lg text-sm text-center dark:border-blue-500 dark:text-blue-500 dark:focus:ring-blue-800' ,
42- green :
43- 'text-green-700 border border-green-700 focus:ring-4 focus:outline-none focus:ring-green-300 font-medium rounded-lg text-sm text-center dark:border-green-500 dark:text-green-500 dark:focus:ring-green-800' ,
44- purple :
45- 'text-purple-700 border border-purple-700 focus:ring-4 focus:outline-none focus:ring-purple-300 font-medium rounded-lg text-sm text-center dark:border-purple-400 dark:text-purple-400 dark:focus:ring-purple-900' ,
39+ dark : 'text-gray-900 border border-gray-800 focus:ring-4 focus:outline-none focus:ring-gray-300 font-medium rounded-lg text-sm text-center dark:border-gray-600 dark:text-gray-400 dark:focus:ring-gray-800' ,
40+ default : 'text-blue-700 border border-blue-700 focus:ring-4 focus:outline-none focus:ring-blue-300 font-medium rounded-lg text-sm text-center dark:border-blue-500 dark:text-blue-500 dark:focus:ring-blue-800' ,
41+ green : 'text-green-700 border border-green-700 focus:ring-4 focus:outline-none focus:ring-green-300 font-medium rounded-lg text-sm text-center dark:border-green-500 dark:text-green-500 dark:focus:ring-green-800' ,
4642 pink : 'text-pink-700 border border-pink-700 focus:ring-4 focus:outline-none focus:ring-pink-300 font-medium rounded-lg text-sm text-center dark:border-pink-400 dark:text-pink-400 dark:focus:ring-pink-900' ,
43+ purple : 'text-purple-700 border border-purple-700 focus:ring-4 focus:outline-none focus:ring-purple-300 font-medium rounded-lg text-sm text-center dark:border-purple-400 dark:text-purple-400 dark:focus:ring-purple-900' ,
4744 red : 'text-red-700 border border-red-700 focus:ring-4 focus:outline-none focus:ring-red-300 font-medium rounded-lg text-sm text-center dark:border-red-500 dark:text-red-500 dark:focus:ring-red-900' ,
48- yellow :
49- 'text-yellow-400 border border-yellow-400 focus:ring-4 focus:outline-none focus:ring-yellow-300 font-medium rounded-lg text-sm text-center dark:border-yellow-300 dark:text-yellow-300 dark:focus:ring-yellow-900' ,
45+ yellow : 'text-yellow-400 border border-yellow-400 focus:ring-4 focus:outline-none focus:ring-yellow-300 font-medium rounded-lg text-sm text-center dark:border-yellow-300 dark:text-yellow-300 dark:focus:ring-yellow-900' ,
5046 } ,
5147 hover : {
48+ blue : 'hover:text-white hover:bg-blue-800 dark:hover:text-white dark:hover:bg-blue-600' ,
5249 dark : 'hover:text-white hover:bg-gray-900 dark:hover:text-white dark:hover:bg-gray-600' ,
5350 default : 'hover:text-white hover:bg-blue-800 dark:hover:text-white dark:hover:bg-blue-600' ,
54- blue : 'hover:text-white hover:bg-blue-800 dark:hover:text-white dark:hover:bg-blue-600' ,
5551 green : 'hover:text-white hover:bg-green-800 dark:hover:text-white dark:hover:bg-green-600' ,
56- purple : 'hover:text-white hover:bg-purple-800 dark:hover:text-white dark:hover:bg-purple-500' ,
5752 pink : 'hover:text-white hover:bg-pink-800 dark:hover:text-white dark:hover:bg-pink-500' ,
53+ purple : 'hover:text-white hover:bg-purple-800 dark:hover:text-white dark:hover:bg-purple-500' ,
5854 red : 'hover:text-white hover:bg-red-800 dark:hover:text-white dark:hover:bg-red-600' ,
5955 yellow : 'hover:text-white hover:bg-yellow-500 dark:hover:text-white dark:hover:bg-yellow-400' ,
6056 } ,
6157}
6258
6359const buttonGradientClasses : ButtonClassMap < ButtonGradient > = {
6460 hover : {
65- 'cyan-blue' : 'hover:bg-gradient-to-bl' ,
66- 'green-blue' : 'hover:bg-gradient-to-bl' ,
67- 'pink-orange' : 'hover:bg-gradient-to-bl' ,
68- 'purple-blue' : 'hover:bg-gradient-to-bl' ,
69- 'purple-pink' : 'hover:bg-gradient-to-l' ,
70- 'red-yellow' : 'hover:bg-gradient-to-bl' ,
71- 'teal-lime' : 'hover:bg-gradient-to-l hover:from-teal-200 hover:to-lime-200' ,
7261 'blue' : 'hover:bg-gradient-to-br' ,
62+ 'cyan-blue' : 'hover:bg-gradient-to-bl' ,
7363 'cyan' : 'hover:bg-gradient-to-br' ,
64+ 'green-blue' : 'hover:bg-gradient-to-bl' ,
7465 'green' : 'hover:bg-gradient-to-br' ,
7566 'lime' : 'hover:bg-gradient-to-br' ,
67+ 'pink-orange' : 'hover:bg-gradient-to-bl' ,
7668 'pink' : 'hover:bg-gradient-to-br' ,
69+ 'purple-blue' : 'hover:bg-gradient-to-bl' ,
70+ 'purple-pink' : 'hover:bg-gradient-to-l' ,
7771 'purple' : 'hover:bg-gradient-to-br' ,
72+ 'red-yellow' : 'hover:bg-gradient-to-bl' ,
7873 'red' : 'hover:bg-gradient-to-br' ,
74+ 'teal-lime' : 'hover:bg-gradient-to-l hover:from-teal-200 hover:to-lime-200' ,
7975 'teal' : 'hover:bg-gradient-to-br' ,
8076 } ,
8177 default : {
82- 'cyan-blue' : 'text-white bg-gradient-to-r from-cyan-500 to-blue-500 focus:ring-4 focus:outline-none focus:ring-cyan-300 dark:focus:ring-cyan-800 font-medium rounded-lg' ,
83- 'green-blue' : 'text-white bg-gradient-to-br from-green-400 to-blue-600 focus:ring-4 focus:outline-none focus:ring-green-200 dark:focus:ring-green-800 font-medium rounded-lg' ,
84- 'pink-orange' : 'text-white bg-gradient-to-br from-pink-500 to-orange-400 focus:ring-4 focus:outline-none focus:ring-pink-200 dark:focus:ring-pink-800 font-medium rounded-lg' ,
85- 'purple-blue' : 'text-white bg-gradient-to-br from-purple-600 to-blue-500 focus:ring-4 focus:outline-none focus:ring-blue-300 dark:focus:ring-blue-800 font-medium rounded-lg' ,
86- 'purple-pink' : 'text-white bg-gradient-to-r from-purple-500 to-pink-500 focus:ring-4 focus:outline-none focus:ring-purple-200 dark:focus:ring-purple-800 font-medium rounded-lg' ,
87- 'red-yellow' : 'text-gray-900 bg-gradient-to-r from-red-200 via-red-300 to-yellow-200 focus:ring-4 focus:outline-none focus:ring-red-100 dark:focus:ring-red-400 font-medium rounded-lg' ,
88- 'teal-lime' : 'text-gray-900 bg-gradient-to-r from-teal-200 to-lime-200 focus:ring-4 focus:outline-none focus:ring-lime-200 dark:focus:ring-teal-700 font-medium rounded-lg' ,
8978 'blue' : 'text-white bg-gradient-to-r from-blue-500 via-blue-600 to-blue-700 focus:ring-4 focus:outline-none focus:ring-blue-300 dark:focus:ring-blue-800 rounded-lg' ,
79+ 'cyan-blue' : 'text-white bg-gradient-to-r from-cyan-500 to-blue-500 focus:ring-4 focus:outline-none focus:ring-cyan-300 dark:focus:ring-cyan-800 font-medium rounded-lg' ,
9080 'cyan' : 'text-white bg-gradient-to-r from-cyan-500 via-cyan-600 to-cyan-700 focus:ring-4 focus:outline-none focus:ring-cyan-300 dark:focus:ring-cyan-800 rounded-lg' ,
81+ 'green-blue' : 'text-white bg-gradient-to-br from-green-400 to-blue-600 focus:ring-4 focus:outline-none focus:ring-green-200 dark:focus:ring-green-800 font-medium rounded-lg' ,
9182 'green' : 'text-white bg-gradient-to-r from-green-500 via-green-600 to-green-700 focus:ring-4 focus:outline-none focus:ring-green-300 dark:focus:ring-green-800 rounded-lg' ,
9283 'lime' : 'text-gray-900 bg-gradient-to-r from-lime-500 via-lime-600 to-lime-700 focus:ring-4 focus:outline-none focus:ring-lime-300 dark:focus:ring-lime-800 rounded-lg' ,
84+ 'pink-orange' : 'text-white bg-gradient-to-br from-pink-500 to-orange-400 focus:ring-4 focus:outline-none focus:ring-pink-200 dark:focus:ring-pink-800 font-medium rounded-lg' ,
9385 'pink' : 'text-white bg-gradient-to-r from-pink-500 via-pink-600 to-pink-700 focus:ring-4 focus:outline-none focus:ring-pink-300 dark:focus:ring-pink-800 rounded-lg' ,
86+ 'purple-blue' : 'text-white bg-gradient-to-br from-purple-600 to-blue-500 focus:ring-4 focus:outline-none focus:ring-blue-300 dark:focus:ring-blue-800 font-medium rounded-lg' ,
87+ 'purple-pink' : 'text-white bg-gradient-to-r from-purple-500 to-pink-500 focus:ring-4 focus:outline-none focus:ring-purple-200 dark:focus:ring-purple-800 font-medium rounded-lg' ,
9488 'purple' : 'text-white bg-gradient-to-r from-purple-500 via-purple-600 to-purple-700 focus:ring-4 focus:outline-none focus:ring-purple-300 dark:focus:ring-purple-800 rounded-lg' ,
89+ 'red-yellow' : 'text-gray-900 bg-gradient-to-r from-red-200 via-red-300 to-yellow-200 focus:ring-4 focus:outline-none focus:ring-red-100 dark:focus:ring-red-400 font-medium rounded-lg' ,
9590 'red' : 'text-white bg-gradient-to-r from-red-500 via-red-600 to-red-700 focus:ring-4 focus:outline-none focus:ring-red-300 dark:focus:ring-red-800 rounded-lg' ,
91+ 'teal-lime' : 'text-gray-900 bg-gradient-to-r from-teal-200 to-lime-200 focus:ring-4 focus:outline-none focus:ring-lime-200 dark:focus:ring-teal-700 font-medium rounded-lg' ,
9692 'teal' : 'text-white bg-gradient-to-r from-teal-500 via-teal-600 to-teal-700 focus:ring-4 focus:outline-none focus:ring-teal-300 dark:focus:ring-teal-800 rounded-lg' ,
9793 } ,
9894}
@@ -147,15 +143,15 @@ const buttonShadowClasses: Record<ButtonMonochromeGradient, string> = {
147143
148144interface UseButtonClassesProps {
149145 class : Ref < string | object >
150- pill : Ref < boolean >
146+ color : Ref < ButtonVariant >
151147 disabled : Ref < boolean >
148+ gradient : Ref < ButtonGradient | null >
152149 loading : Ref < boolean >
153150 outline : Ref < boolean >
151+ pill : Ref < boolean >
152+ shadow : Ref < ButtonMonochromeGradient | '' | boolean | null >
154153 size : Ref < ButtonSize >
155154 square : Ref < boolean >
156- color : Ref < ButtonVariant >
157- gradient : Ref < ButtonGradient | null >
158- shadow : Ref < ButtonMonochromeGradient | '' | boolean | null >
159155}
160156
161157const simpleGradients = [ 'blue' , 'green' , 'cyan' , 'teal' , 'lime' , 'red' , 'pink' , 'purple' ]
@@ -225,6 +221,7 @@ export function useButtonClasses (props: UseButtonClassesProps): { wrapperClasse
225221 }
226222
227223 return [
224+ buttonDefaultClasses ,
228225 backgroundClass ,
229226 hoverClass ,
230227 shadowClass ,
0 commit comments