1- import { Box , css , Flex , Input , Text } from '@devup-ui/react'
1+ import { Box , css , Flex , getTheme , Input , Text } from '@devup-ui/react'
22import { ComponentProps } from 'react'
33
44import { CheckIcon } from './CheckIcon'
@@ -7,7 +7,6 @@ interface CheckboxProps
77 extends Omit < ComponentProps < 'input' > , 'type' | 'onChange' > {
88 children : React . ReactNode
99 onChange ?: ( checked : boolean ) => void
10- variant ?: 'primary' | 'default'
1110 label : string
1211}
1312
@@ -16,10 +15,11 @@ export function Checkbox({
1615 disabled,
1716 checked,
1817 onChange,
19- variant = 'primary' ,
2018 label,
2119 ...props
2220} : CheckboxProps ) {
21+ const theme = getTheme ( )
22+
2323 return (
2424 < Flex alignItems = "center" gap = "8px" h = "fit-content" >
2525 < Box h = "18px" pos = "relative" w = "fit-content" >
@@ -28,13 +28,11 @@ export function Checkbox({
2828 disabled
2929 ? undefined
3030 : {
31- primary : {
32- bg : 'color-mix(in srgb, var(--primary) 20%, #FFF 80%)' ,
33- } ,
34- default : {
35- bg : 'color-mix(in srgb, var(--primary) 30%, #FFF 70%)' ,
36- } ,
37- } [ variant ]
31+ bg :
32+ theme === 'dark'
33+ ? 'color-mix(in srgb, var(--primary) 30%, black 70%)'
34+ : 'color-mix(in srgb, var(--primary) 20%, #FFF 80%)' ,
35+ }
3836 }
3937 _checked = { {
4038 bg : '$primary' ,
@@ -43,34 +41,31 @@ export function Checkbox({
4341 ? undefined
4442 : {
4543 bg :
46- variant === 'primary '
47- ? 'color-mix(in srgb, var(--primary) 100%, #000 15%)'
48- : 'color-mix(in srgb, var(--primary) 100%, #FFF 15%)' ,
44+ theme === 'dark '
45+ ? 'color-mix(in srgb, var(--primary) 100%, #FFF 15%)'
46+ : 'color-mix(in srgb, var(--primary) 100%, #000 15%)' ,
4947 } ,
5048 _disabled : {
51- bg : '#F0F0F3' ,
49+ bg : theme === 'dark' ? '#47474A' : '#F0F0F3' ,
5250 } ,
5351 } }
5452 _disabled = { {
55- bg : '#F0F0F3' ,
53+ bg : theme === 'dark' ? '#47474A' : '#F0F0F3' ,
5654 } }
5755 _hover = {
5856 disabled
5957 ? undefined
6058 : {
61- primary : {
62- bg : 'color-mix(in srgb, var(--primary) 10%, #FFF 90%)' ,
63- border : '1px solid var(--primary)' ,
64- } ,
65- default : {
66- bg : 'color-mix(in srgb, var(--primary) 100%, #FFF 15%)' ,
67- border : '1px solid var(--primary)' ,
68- } ,
69- } [ variant ]
59+ bg :
60+ theme === 'dark'
61+ ? 'color-mix(in srgb, var(--primary) 20%, black 80%);'
62+ : 'color-mix(in srgb, var(--primary) 10%, #FFF 90%)' ,
63+ border : '1px solid var(--primary)' ,
64+ }
7065 }
7166 accentColor = "$primary"
7267 appearance = "none"
73- bg = "$ contentBackground"
68+ bg = { theme === 'dark' ? '$inputBg' : '$ contentBackground' }
7469 border = "1px solid var(--border)"
7570 borderRadius = "2px"
7671 boxSize = "16px"
@@ -93,17 +88,23 @@ export function Checkbox({
9388 transform : 'translate(-50%, -50%)' ,
9489 pointerEvents : 'none' ,
9590 } ) }
96- color = { disabled ? '#D6D7DE' : '#FFF' }
91+ color = {
92+ disabled ? ( theme === 'dark' ? '#373737' : '#D6D7DE' ) : '#FFF'
93+ }
9794 />
9895 ) }
9996 </ Box >
10097
101- < label htmlFor = { label } >
98+ < label
99+ className = { css ( {
100+ cursor : disabled ? 'not-allowed' : 'pointer' ,
101+ } ) }
102+ htmlFor = { label }
103+ >
102104 { typeof children === 'string' ? (
103105 < Text
104106 as = "span"
105107 color = { disabled ? '#D6D7DE' : '$text' }
106- cursor = { disabled ? 'not-allowed' : 'pointer' }
107108 fontSize = "14px"
108109 style = { { userSelect : 'none' , verticalAlign : 'middle' } }
109110 >
0 commit comments