UNPKG

@dialpad/dialtone-css

Version:
296 lines (250 loc) 12.8 kB
// // DIALTONE // COMPONENTS: RADIOS & CHECKBOXES // // These are input classes for Dialpad's design system Dialtone. // For further documentation of these and other classes, // visit https://dialtone.dialpad.com/components/inputs // // TABLE OF CONTENTS // • SHARED STYLES // • WRAPPERS // • INPUT & COPY BLOCKS // • LABELS // • CHECKBOXES // - Modifications // • RADIOS // - Modifications // // ============================================================================ // $ RADIOS & CHECKBOXES // ---------------------------------------------------------------------------- .d-checkbox, .d-radio { // Component specific CSS Vars // ------------------------------------------------------------------------ --check-radio-color-border: var(--dt-checkbox-color-border-unchecked); --check-radio-color-border-hover: var(--dt-checkbox-color-border-unchecked-hover); --check-radio-color-border-checked: var(--dt-checkbox-color-border-checked); --check-radio-color-border-disabled: var(--dt-inputs-color-border-disabled); --check-radio-color-background: var(--dt-inputs-color-background-default); --check-radio-color-background-checked: var(--dt-checkbox-color-background-checked); --check-radio-color-background-disabled: var(--dt-inputs-color-background-disabled); --check-radio-border-width: var(--dt-size-border-100); // [1] Check to see if we can use custom styles, if so reset the defaults // ------------------------------------------------------------------------ @supports ((-webkit-appearance: none) or (-moz-appearance: none) or (appearance: none)) { width: var(--dt-size-500); // 16 height: var(--dt-size-500); // 16 // [2] Now re-style the checkboxes and radios // -------------------------------------------------------------------- margin: 0; font-size: inherit; background-color: var(--check-radio-color-background); border: var(--check-radio-border-width) solid var(--check-radio-color-border); outline: 0; box-shadow: none; cursor: pointer; -webkit-appearance: none; -moz-appearance: none; appearance: none; &::-ms-check { display: none; } &:not(:disabled):hover { border-color: var(--check-radio-color-border-hover); } &:checked { --check-radio-color-border: var(--check-radio-color-border-checked); } } flex: 0 auto; align-self: flex-start; transition-timing-function: var(--ttf-out-quint); transition-duration: var(--td200); transition-property: box-shadow; // -- DISABLED &[disabled], &--disabled { --check-radio-color: var(--dt-color-foreground-disabled); --check-radio-color-border: var(--check-radio-color-border-disabled); --check-radio-color-background: var(--check-radio-color-background-disabled); cursor: not-allowed; } } // ============================================================================ // $ RADIO / CHECKBOX WRAPPERS // ---------------------------------------------------------------------------- .d-checkbox-group, .d-radio-group { display: inline-flex; gap: var(--dt-space-400); // 8 cursor: pointer; } // -- Wrapper Disabled State .d-checkbox-group--disabled, .d-radio-group--disabled { cursor: not-allowed; .d-checkbox__label, .d-radio__label { color: var(--dt-color-foreground-disabled); cursor: not-allowed; } } .d-input-group__fieldset { display: flex; flex-direction: column; align-items: flex-start; &__label { display: flex; flex: 1 0%; align-items: baseline; justify-content: space-between; box-sizing: border-box; margin-bottom: var(--dt-space-300); color: var(--dt-color-foreground-secondary); font-weight: var(--dt-font-weight-semi-bold); font-size: var(--dt-font-size-200); font-family: inherit; line-height: var(--dt-font-line-height-300); overflow-wrap: break-word; } } // ============================================================================ // $ INPUT BLOCKS // This holds the radio or checkbox input // ---------------------------------------------------------------------------- .d-checkbox__input, .d-radio__input { display: flex; align-self: flex-start; padding-top: var(--dt-space-300); } // ============================================================================ // $ COPY BLOCKS // This holds the label and description copy // ---------------------------------------------------------------------------- .d-checkbox__copy, .d-radio__copy { display: inline-flex; flex-direction: column; } .d-checkbox__label, .d-radio__label { display: inline-flex; flex: 1 auto; flex-direction: column; align-items: flex-start; color: var(--dt-color-foreground-primary); font: var(--dt-typography-label-md-plain); cursor: pointer; } .d-checkbox__messages, .d-radio__messages { margin-top: var(--dt-space-200-negative); margin-left: var(--dt-space-550); } .d-checkbox__description { display: flex; box-sizing: border-box; color: var(--dt-color-foreground-tertiary); font-size: var(--dt-font-size-100); font-family: inherit; line-height: var(--dt-font-line-height-400); fill: currentColor; } // ============================================================================ // $ CHECKBOXES // ---------------------------------------------------------------------------- .d-checkbox { @supports ((-webkit-appearance: none) or (-moz-appearance: none) or (appearance: none)) { background-repeat: no-repeat; background-position: center center; background-size: auto; border-radius: var(--dt-size-radius-300); &:focus, &:focus-visible, &:checked:focus-visible { box-shadow: var(--dt-shadow-focus); } &:checked { --check-radio-color-background: var(--check-radio-color-background-checked); background-image: url("data:image/svg+xml,<svg width='14' height='14' viewBox='0 0 14 14' fill='none' xmlns='http://www.w3.org/2000/svg'> <path fill-rule='evenodd' clip-rule='evenodd' d='M12.1083 3.05806C12.3524 3.30214 12.3524 3.69786 12.1083 3.94194L5.69162 10.3586C5.44754 10.6027 5.05181 10.6027 4.80773 10.3586L1.89107 7.44194C1.64699 7.19786 1.64699 6.80214 1.89107 6.55806C2.13514 6.31398 2.53087 6.31398 2.77495 6.55806L5.24967 9.03278L11.2244 3.05806C11.4685 2.81398 11.8642 2.81398 12.1083 3.05806Z' fill='white'/> </svg>"); border: 0; [data-dt-theme="dark"] & { background-image: url("data:image/svg+xml,<svg width='14' height='14' viewBox='0 0 14 14' fill='none' xmlns='http://www.w3.org/2000/svg'> <path fill-rule='evenodd' clip-rule='evenodd' d='M12.1083 3.05806C12.3524 3.30214 12.3524 3.69786 12.1083 3.94194L5.69162 10.3586C5.44754 10.6027 5.05181 10.6027 4.80773 10.3586L1.89107 7.44194C1.64699 7.19786 1.64699 6.80214 1.89107 6.55806C2.13514 6.31398 2.53087 6.31398 2.77495 6.55806L5.24967 9.03278L11.2244 3.05806C11.4685 2.81398 11.8642 2.81398 12.1083 3.05806Z' fill='black'/> </svg>"); } // Disabled &[disabled] { --check-radio-color-background: var(--check-radio-color-background-disabled); background-image: url("data:image/svg+xml,<svg width='14' height='14' viewBox='0 0 14 14' fill='none' xmlns='http://www.w3.org/2000/svg'> <path fill-rule='evenodd' clip-rule='evenodd' d='M12.1083 3.05806C12.3524 3.30214 12.3524 3.69786 12.1083 3.94194L5.69162 10.3586C5.44754 10.6027 5.05181 10.6027 4.80773 10.3586L1.89107 7.44194C1.64699 7.19786 1.64699 6.80214 1.89107 6.55806C2.13514 6.31398 2.53087 6.31398 2.77495 6.55806L5.24967 9.03278L11.2244 3.05806C11.4685 2.81398 11.8642 2.81398 12.1083 3.05806Z' fill='gray'/> </svg>"); } } &--disabled:checked { --check-radio-color-background: var(--check-radio-color-background-disabled); --check-radio-color-border: var(--check-radio-color-border-disabled); background-image: url("data:image/svg+xml,<svg width='14' height='14' viewBox='0 0 14 14' fill='none' xmlns='http://www.w3.org/2000/svg'> <path fill-rule='evenodd' clip-rule='evenodd' d='M12.1083 3.05806C12.3524 3.30214 12.3524 3.69786 12.1083 3.94194L5.69162 10.3586C5.44754 10.6027 5.05181 10.6027 4.80773 10.3586L1.89107 7.44194C1.64699 7.19786 1.64699 6.80214 1.89107 6.55806C2.13514 6.31398 2.53087 6.31398 2.77495 6.55806L5.24967 9.03278L11.2244 3.05806C11.4685 2.81398 11.8642 2.81398 12.1083 3.05806Z' fill='gray'/> </svg>"); } &--indeterminate, &:indeterminate { --check-radio-color-background: var(--check-radio-color-background-checked); --check-radio-color-border: var(--check-radio-color-border-checked); background-image: url("data:image/svg+xml,<svg width='14' height='14' viewBox='0 0 14 14' fill='none' xmlns='http://www.w3.org/2000/svg'> <path d='M11.9955 7C11.9955 7.55228 11.5478 8 10.9955 8H3.00415C2.45187 8 2.00415 7.55228 2.00415 7V7C2.00415 6.44772 2.45187 6 3.00415 6H10.9955C11.5478 6 11.9955 6.44772 11.9955 7V7Z' fill='white'/> </svg>"); border: 0; [data-dt-theme="dark"] & { background-image: url("data:image/svg+xml,<svg width='14' height='14' viewBox='0 0 14 14' fill='none' xmlns='http://www.w3.org/2000/svg'> <path d='M11.9955 7C11.9955 7.55228 11.5478 8 10.9955 8H3.00415C2.45187 8 2.00415 7.55228 2.00415 7V7C2.00415 6.44772 2.45187 6 3.00415 6H10.9955C11.5478 6 11.9955 6.44772 11.9955 7V7Z' fill='black'/> </svg>"); } &[disabled] { --check-radio-color-background: var(--check-radio-color-background-disabled); --check-radio-color-border: var(--check-radio-color-border-disabled); background-image: url("data:image/svg+xml,<svg width='14' height='14' viewBox='0 0 14 14' fill='none' xmlns='http://www.w3.org/2000/svg'> <path d='M11.9955 7C11.9955 7.55228 11.5478 8 10.9955 8H3.00415C2.45187 8 2.00415 7.55228 2.00415 7V7C2.00415 6.44772 2.45187 6 3.00415 6H10.9955C11.5478 6 11.9955 6.44772 11.9955 7V7Z' fill='gray'/> </svg>"); } } &--indeterminate&--disabled, &:indeterminate&--disabled { --check-radio-color-background: var(--check-radio-color-background-disabled); --check-radio-color-border: var(--check-radio-color-border-disabled); background-image: url("data:image/svg+xml,<svg width='14' height='14' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'><path d='M19 13H5v-2h14v2z' fill='hsl(240, 10%, 51%)'/></svg>"); } // Disabled &[disabled], &--disabled { --check-radio-color: var(--dt-color-foreground-disabled); --check-radio-color-border: var(--check-radio-color-border-disabled); --check-radio-color-background: var(--check-radio-color-background-disabled); } } } // ============================================================================ // $ RADIOS // ---------------------------------------------------------------------------- .d-radio { @supports ((-webkit-appearance: none) or (-moz-appearance: none) or (appearance: none)) { border-radius: var(--dt-size-radius-circle); // Disabled &[disabled], &--disabled { --check-radio-color: var(--dt-color-foreground-disabled); --check-radio-color-border: var(--check-radio-color-border-disabled); --check-radio-color-background: var(--check-radio-color-background-disabled); } &:checked { --check-radio-color-background: var(--check-radio-color-background-checked); border-color: transparent; box-shadow: inset 0 0 0 var(--dt-size-200) var(--dt-radio-color-foreground-checked); // Disabled &[disabled] { --check-radio-color-background: var(--check-radio-color-background-disabled); } } &:focus, &:focus-visible, &:checked:focus-visible { box-shadow: var(--dt-shadow-focus), inset 0 0 0 var(--dt-size-200) var(--dt-radio-color-foreground-checked); } &--disabled:checked { --check-radio-color-border: var(--check-radio-color-border-disabled); --check-radio-color-background: var(--check-radio-color-background-disabled); } } }