mirror of
https://github.com/luxfi/explore.git
synced 2026-09-24 00:28:18 +00:00
67 lines
1.6 KiB
TypeScript
67 lines
1.6 KiB
TypeScript
import { checkboxAnatomy as parts } from '@chakra-ui/anatomy';
|
|
import {
|
|
createMultiStyleConfigHelpers,
|
|
defineStyle,
|
|
cssVar,
|
|
} from '@chakra-ui/styled-system';
|
|
import { mode } from '@chakra-ui/theme-tools';
|
|
import { runIfFn } from '@chakra-ui/utils';
|
|
|
|
const { definePartsStyle, defineMultiStyleConfig } =
|
|
createMultiStyleConfigHelpers(parts.keys);
|
|
|
|
const $size = cssVar('checkbox-size');
|
|
|
|
const baseStyleControl = defineStyle((props) => {
|
|
const { colorScheme: c } = props;
|
|
|
|
return {
|
|
_checked: {
|
|
bg: mode(`${ c }.500`, `${ c }.300`)(props),
|
|
borderColor: mode(`${ c }.500`, `${ c }.300`)(props),
|
|
_hover: {
|
|
bg: mode(`${ c }.600`, `${ c }.400`)(props),
|
|
borderColor: mode(`${ c }.600`, `${ c }.400`)(props),
|
|
},
|
|
},
|
|
_indeterminate: {
|
|
bg: mode(`${ c }.500`, `${ c }.300`)(props),
|
|
borderColor: mode(`${ c }.500`, `${ c }.300`)(props),
|
|
},
|
|
};
|
|
});
|
|
|
|
const sizes = {
|
|
sm: definePartsStyle({
|
|
control: { [$size.variable]: 'sizes.3' },
|
|
label: { fontSize: 'sm' },
|
|
icon: { fontSize: '3xs' },
|
|
}),
|
|
md: definePartsStyle({
|
|
control: { [$size.variable]: 'sizes.4' },
|
|
label: { fontSize: 'md' },
|
|
icon: { fontSize: '2xs' },
|
|
}),
|
|
lg: definePartsStyle({
|
|
control: { [$size.variable]: 'sizes.5' },
|
|
label: { fontSize: 'md' },
|
|
icon: { fontSize: '2xs' },
|
|
}),
|
|
};
|
|
|
|
const baseStyleLabel = defineStyle({
|
|
_disabled: { opacity: 0.2 },
|
|
});
|
|
|
|
const baseStyle = definePartsStyle((props) => ({
|
|
label: baseStyleLabel,
|
|
control: runIfFn(baseStyleControl, props),
|
|
}));
|
|
|
|
const Checkbox = defineMultiStyleConfig({
|
|
baseStyle,
|
|
sizes,
|
|
});
|
|
|
|
export default Checkbox;
|