UNPKG

@penaprieto/design-system

Version:

Multi-brand React design system with design tokens from Figma

177 lines (150 loc) 5.46 kB
/* Base Checkbox */ .ds-checkbox { display: inline-flex; align-items: flex-start; gap: var(--size3, 12px); cursor: pointer; user-select: none; position: relative; -webkit-font-smoothing: antialiased; box-sizing: border-box; } .ds-checkbox--disabled { cursor: not-allowed; } /* Visually hidden native input */ .ds-checkbox__input { position: absolute; opacity: 0; width: 0; height: 0; } /* Box */ .ds-checkbox__box { display: inline-flex; align-items: center; justify-content: center; width: 20px; height: 20px; border-radius: var(--br-xs, 4px); background-color: var(--checkbox-unselected-bg-default); box-shadow: inset 0 0 0 1px var(--checkbox-unselected-border-default); color: var(--semantic-icon-inverse-bold); transition: all 0.2s ease-in-out; flex-shrink: 0; } /* Hover */ .ds-checkbox:hover .ds-checkbox__box { box-shadow: inset 0 0 0 1px var(--checkbox-unselected-border-hover); } .ds-checkbox:hover .ds-checkbox__input:checked + .ds-checkbox__box, .ds-checkbox:hover .ds-checkbox__input:indeterminate + .ds-checkbox__box { background-color: var(--checkbox-selected-bg-hover); box-shadow: inset 0 0 0 1px var(--checkbox-selected-bg-hover); } /* Label & description */ .ds-checkbox__label-wrapper { display: flex; flex-direction: column; gap: var(--size1, 4px); } .ds-checkbox__label { color: var(--semantic-text-corp-primary); font-family: var(--body-regular-fontFamily, var(--font-family, 'Satoshi', sans-serif)); font-size: var(--body-regular-fontSize, 16px); font-weight: var(--body-regular-fontWeight, 400); line-height: var(--body-regular-lineHeight, 150%); } .ds-checkbox__description { color: var(--semantic-text-corp-secondary, #6f7175); font-family: var(--body-small-fontFamily, var(--font-family, 'Satoshi', sans-serif)); font-size: var(--body-small-fontSize, 14px); line-height: var(--body-small-lineHeight, 150%); } /* Icons */ .ds-checkbox__icon { display: none; width: 12px; height: 12px; } .ds-checkbox__icon svg { display: block; width: 12px; height: 12px; fill: currentColor; } /* Checked / indeterminate states */ .ds-checkbox__input:checked + .ds-checkbox__box .ds-checkbox__icon--check { display: block; } .ds-checkbox__input:indeterminate + .ds-checkbox__box .ds-checkbox__icon--dash { display: block; } .ds-checkbox__input:checked + .ds-checkbox__box, .ds-checkbox__input:indeterminate + .ds-checkbox__box { background-color: var(--checkbox-selected-bg-default); box-shadow: inset 0 0 0 1px var(--checkbox-selected-bg-default); } /* Disabled */ .ds-checkbox__input:disabled + .ds-checkbox__box { background-color: var(--checkbox-unselected-bg-disabled); box-shadow: inset 0 0 0 1px var(--checkbox-unselected-border-default); color: var(--semantic-icon-disabled); } .ds-checkbox__input:disabled ~ .ds-checkbox__label-wrapper .ds-checkbox__label, .ds-checkbox__input:disabled ~ .ds-checkbox__label-wrapper .ds-checkbox__description { color: var(--semantic-text-corp-disabled); } .ds-checkbox__input:disabled:checked + .ds-checkbox__box { background-color: var(--checkbox-selected-bg-disabled); box-shadow: inset 0 0 0 1px var(--checkbox-selected-bg-disabled); color: var(--semantic-icon-brand-disabled); } .ds-checkbox__input:disabled:checked + .ds-checkbox__box svg, .ds-checkbox__input:disabled:indeterminate + .ds-checkbox__box svg { opacity: 0.5; } /* Error state */ .ds-checkbox--error .ds-checkbox__box, .ds-checkbox--error:hover .ds-checkbox__box { box-shadow: inset 0 0 0 1px var(--semantic-border-error-default); } .ds-checkbox--error .ds-checkbox__input:checked + .ds-checkbox__box, .ds-checkbox--error .ds-checkbox__input:indeterminate + .ds-checkbox__box { background-color: var(--semantic-border-error-default); box-shadow: inset 0 0 0 1px var(--semantic-border-error-default); } .ds-checkbox--error .ds-checkbox__label { color: var(--semantic-text-error); } /* Focus */ .ds-checkbox__input:focus-visible + .ds-checkbox__box { box-shadow: inset 0 0 0 1px var(--checkbox-unselected-border-default), var(--semantic-focus-corp); outline: none; } .ds-checkbox__input:checked:focus-visible + .ds-checkbox__box, .ds-checkbox__input:indeterminate:focus-visible + .ds-checkbox__box { box-shadow: inset 0 0 0 1px var(--checkbox-selected-bg-default), var(--semantic-focus-brightBlue); outline: none; } /* Active */ .ds-checkbox__input:active + .ds-checkbox__box { box-shadow: inset 0 0 0 2px var(--checkbox-unselected-border-hover); } .ds-checkbox__input:checked:active + .ds-checkbox__box, .ds-checkbox__input:indeterminate:active + .ds-checkbox__box { background-color: var(--checkbox-selected-bg-hover); box-shadow: inset 0 0 0 2px var(--checkbox-selected-bg-hover); } /* Disable hover styles when disabled */ .ds-checkbox:hover .ds-checkbox__input:disabled + .ds-checkbox__box, .ds-checkbox:hover .ds-checkbox__input:disabled:checked + .ds-checkbox__box, .ds-checkbox:hover .ds-checkbox__input:disabled:indeterminate + .ds-checkbox__box { background-color: var(--checkbox-unselected-bg-disabled); box-shadow: inset 0 0 0 1px var(--checkbox-unselected-border-default); } .ds-checkbox:hover .ds-checkbox__input:disabled:checked + .ds-checkbox__box, .ds-checkbox:hover .ds-checkbox__input:disabled:indeterminate + .ds-checkbox__box { background-color: var(--checkbox-selected-bg-disabled); box-shadow: inset 0 0 0 1px var(--checkbox-selected-bg-disabled); }