UNPKG

@inkline/inkline

Version:

Inkline is the intuitive UI Components library that gives you a developer-friendly foundation for building high-quality, accessible, and customizable Vue.js 3 Design Systems.

323 lines (321 loc) 14.1 kB
/** * Checkbox */ .checkbox { position: relative; display: flex; align-items: center; white-space: nowrap; outline: none; margin-right: var(--checkbox--margin-right, var(--margin-right)); } .checkbox:last-of-type { margin-right: 0; } .checkbox.-disabled { cursor: default; } .checkbox.-disabled .checkbox-label::before, .checkbox.-disabled .checkbox-label::after { cursor: not-allowed; } .checkbox .checkbox-label { cursor: pointer; margin-bottom: 0; display: inline-flex; align-items: center; position: relative; transition-property: var(--checkbox--transition-property, color); transition-duration: var(--checkbox--transition-duration, var(--transition-duration)); transition-timing-function: var(--checkbox--transition-timing-function, var(--transition-timing-function)); color: var(--checkbox--label--color); font-size: var(--checkbox--label--font-size); } .checkbox .checkbox-label::before, .checkbox .checkbox-label::after { width: var(--checkbox--size); height: var(--checkbox--size); display: inline-flex; justify-content: center; align-items: center; cursor: pointer; } .checkbox .checkbox-label::before { content: ""; user-select: none; border-width: var(--checkbox--border-width, var(--checkbox--border-top-width, var(--border-top-width)) var(--checkbox--border-right-width, var(--border-right-width)) var(--checkbox--border-bottom-width, var(--border-bottom-width)) var(--checkbox--border-left-width, var(--border-left-width))); border-style: var(--checkbox--border-style, var(--checkbox--border-top-style, var(--border-top-style)) var(--checkbox--border-right-style, var(--border-right-style)) var(--checkbox--border-bottom-style, var(--border-bottom-style)) var(--checkbox--border-left-style, var(--border-left-style))); border-color: var(--checkbox--border-color, var(--checkbox--border-top-color, var(--border-top-color)) var(--checkbox--border-right-color, var(--border-right-color)) var(--checkbox--border-bottom-color, var(--border-bottom-color)) var(--checkbox--border-left-color, var(--border-left-color))); border-radius: var(--checkbox--border-radius, var(--checkbox--border-top-left-radius, var(--border-top-left-radius)) var(--checkbox--border-top-right-radius, var(--border-top-right-radius)) var(--checkbox--border-bottom-right-radius, var(--border-bottom-right-radius)) var(--checkbox--border-bottom-left-radius, var(--border-bottom-left-radius))); box-shadow: var(--checkbox--box-shadow, var(--checkbox--box-shadow-x-offset, var(--box-shadow-offset-x)) var(--checkbox--box-shadow-y-offset, var(--box-shadow-offset-y)) var(--checkbox--box-shadow-blur-radius, var(--box-shadow-blur-radius)) var(--checkbox--box-shadow-spread-radius, var(--box-shadow-spread-radius)) var(--checkbox--box-shadow-color, var(--box-shadow-color))); margin-right: var(--checkbox--margin-right, var(--margin-right-1-2)); transition-property: var(--checkbox--transition-property, background-color, border-color); transition-duration: var(--checkbox--transition-duration, var(--transition-duration)); transition-timing-function: var(--checkbox--transition-timing-function, var(--transition-timing-function)); background-color: var(--checkbox--background); } .checkbox .checkbox-label::after { mask-image: url('data:image/svg+xml; utf8, <svg fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28"><title>check</title><path d="M23.625 3.5l-13.125 13.125-6.125-6.125-4.375 4.375 10.5 10.5 17.5-17.5z"></path></svg>'); -webkit-mask-image: url('data:image/svg+xml; utf8, <svg fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28"><title>check</title><path d="M23.625 3.5l-13.125 13.125-6.125-6.125-4.375 4.375 10.5 10.5 17.5-17.5z"></path></svg>'); mask-size: var(--checkbox--checkmark--size) var(--checkbox--checkmark--size); -webkit-mask-size: var(--checkbox--checkmark--size) var(--checkbox--checkmark--size); position: absolute; top: 50%; left: 0; z-index: 1; text-align: center; transition-property: var(--checkbox--transition-property, transform); transition-duration: var(--checkbox--transition-duration, var(--transition-duration)); transition-timing-function: var(--checkbox--transition-timing-function, var(--transition-timing-function)); transform: scale(0); background-color: var(--checkbox--color); margin-top: calc(var(--checkbox--size) / -2); } .checkbox input { top: 0; left: 0; position: absolute; z-index: 0; opacity: 0; height: 0; width: 0; outline: 0; } .checkbox input:focus, .checkbox input:active { outline: none; } .checkbox input:checked ~ .checkbox-label::before, .checkbox input[type=checkbox]:indeterminate ~ .checkbox-label::before { border-color: var(--checkbox--checked--border-color, var(--checkbox--border-color)); background: var(--checkbox--checked--background, var(--checkbox--background)); } .checkbox input:checked ~ .checkbox-label::after, .checkbox input[type=checkbox]:indeterminate ~ .checkbox-label::after { content: ""; mask-position: center center; -webkit-mask-position: center center; mask-repeat: no-repeat; -webkit-mask-repeat: no-repeat; transform: scale(1); } .checkbox input:disabled ~ .checkbox-label, .checkbox input[readonly] ~ .checkbox-label { color: var(--checkbox--disabled--label--color, var(--checkbox--label--color)); } .checkbox input:disabled ~ .checkbox-label::before, .checkbox input[readonly] ~ .checkbox-label::before { cursor: not-allowed; border-color: var(--checkbox--disabled--border-color, var(--checkbox--border-color)); background: var(--checkbox--disabled--background, var(--checkbox--background)); } .checkbox input:disabled:checked ~ .checkbox-label::before, .checkbox input[readonly]:checked ~ .checkbox-label::before { border-color: var(--checkbox--checked--disabled--border-color, var(--checkbox--border-color)); background: var(--checkbox--checked--disabled--background, var(--checkbox--background)); } .checkbox input:disabled:checked ~ .checkbox-label::after, .checkbox input[readonly]:checked ~ .checkbox-label::after { cursor: not-allowed; background: var(--checkbox--disabled--color, var(--checkbox--color)); } .checkbox input:indeterminate ~ .checkbox-label::after { mask-image: url('data:image/svg+xml; utf8, <svg fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28"><title>minus</title><path d="M0 11.375v5.25c0 0.483 0.392 0.875 0.875 0.875h26.25c0.483 0 0.875-0.392 0.875-0.875v-5.25c0-0.483-0.392-0.875-0.875-0.875h-26.25c-0.483 0-0.875 0.392-0.875 0.875z"></path></svg>'); -webkit-mask-image: url('data:image/svg+xml; utf8, <svg fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28"><title>minus</title><path d="M0 11.375v5.25c0 0.483 0.392 0.875 0.875 0.875h26.25c0.483 0 0.875-0.392 0.875-0.875v-5.25c0-0.483-0.392-0.875-0.875-0.875h-26.25c-0.483 0-0.875 0.392-0.875 0.875z"></path></svg>'); } .checkbox.-native input { top: auto; left: auto; position: relative; opacity: 1; height: auto; width: auto; margin-right: var(--checkbox--margin-right, var(--margin-right-1-2)); } .checkbox.-native .checkbox-label::after, .checkbox.-native .checkbox-label::before { display: none; } /** * Color variants */ .checkbox.-light { --checkbox--background: var(--checkbox--light--background, var(--color-white)); --checkbox--border-top-color: var( --checkbox--light--border-top-color, var(--color-light-shade-50) ); --checkbox--border-right-color: var( --checkbox--light--border-right-color, var(--color-light-shade-50) ); --checkbox--border-bottom-color: var( --checkbox--light--border-bottom-color, var(--color-light-shade-50) ); --checkbox--border-left-color: var( --checkbox--light--border-left-color, var(--color-light-shade-50) ); --checkbox--color: var(--checkbox--light--color, var(--color-white)); --checkbox--label--color: var( --checkbox--light--label--color, var(--contrast-text-color-light) ); --checkbox--disabled--background: var( --checkbox--light--disabled--background, var(--color-gray-50) ); --checkbox--disabled--border-color: var( --checkbox--light--disabled--border-color, var(--color-light) ); --checkbox--disabled--color: var(--checkbox--light--disabled--color, var(--color-white)); --checkbox--disabled--label--color: var( --checkbox--light--disabled--label--color, var(--text-color-weak) ); --checkbox--checked--background: var( --checkbox--light--checked--background, var(--color-primary) ); --checkbox--checked--border-color: var( --checkbox--light--checked--border-color, var(--color-primary-shade-50) ); --checkbox--checked--disabled--background: var( --checkbox--light--checked--disabled--background, var(--color-primary-300) ); --checkbox--checked--disabled--border-color: var( --checkbox--light--checked--disabled--border-color, var(--color-primary-400) ); } .checkbox.-dark { --checkbox--background: var(--checkbox--dark--background, var(--color-dark)); --checkbox--border-top-color: var( --checkbox--dark--border-top-color, var(--color-dark-tint-50) ); --checkbox--border-right-color: var( --checkbox--dark--border-right-color, var(--color-dark-tint-50) ); --checkbox--border-bottom-color: var( --checkbox--dark--border-bottom-color, var(--color-dark-tint-50) ); --checkbox--border-left-color: var( --checkbox--dark--border-left-color, var(--color-dark-tint-50) ); --checkbox--color: var(--checkbox--dark--color, var(--color-white)); --checkbox--label--color: var( --checkbox--dark--label--color, var(--contrast-text-color-dark) ); --checkbox--disabled--background: var( --checkbox--dark--disabled--background, var(--color-dark-tint-100) ); --checkbox--disabled--border-color: var( --checkbox--dark--disabled--border-color, var(--color-dark-tint-50) ); --checkbox--disabled--color: var(--checkbox--dark--disabled--color, var(--color-white)); --checkbox--disabled--label--color: var( --checkbox--dark--disabled--label--color, var(--text-color-weak) ); --checkbox--checked--background: var( --checkbox--dark--checked--background, var(--color-primary) ); --checkbox--checked--border-color: var( --checkbox--dark--checked--border-color, var(--color-primary-tint-50) ); --checkbox--checked--disabled--background: var( --checkbox--dark--checked--disabled--background, var(--color-primary-800) ); --checkbox--checked--disabled--border-color: var( --checkbox--dark--checked--disabled--border-color, var(--color-primary-700) ); } /** * Size variants */ .checkbox.-sm { --checkbox--border-top-left-radius: var( --checkbox--sm--border-top-left-radius, calc(var(--border-top-left-radius) * var(--size-multiplier-sm)) ); --checkbox--border-top-right-radius: var( --checkbox--sm--border-top-right-radius, calc(var(--border-top-right-radius) * var(--size-multiplier-sm)) ); --checkbox--border-bottom-right-radius: var( --checkbox--sm--border-bottom-right-radius, calc(var(--border-bottom-right-radius) * var(--size-multiplier-sm)) ); --checkbox--border-bottom-left-radius: var( --checkbox--sm--border-bottom-left-radius, calc(var(--border-bottom-left-radius) * var(--size-multiplier-sm)) ); --checkbox--size: var(--checkbox--sm--size, calc(1rem * var(--size-multiplier-sm))); --checkbox--checkmark--size: var( --checkbox--sm--checkmark--size, calc(8px * var(--size-multiplier-sm)) ); --checkbox--label--font-size: var( --checkbox--sm--label--font-size, calc(var(--font-size) * var(--size-multiplier-sm)) ); } .checkbox.-md { --checkbox--border-top-left-radius: var( --checkbox--md--border-top-left-radius, calc(var(--border-top-left-radius) * var(--size-multiplier-md)) ); --checkbox--border-top-right-radius: var( --checkbox--md--border-top-right-radius, calc(var(--border-top-right-radius) * var(--size-multiplier-md)) ); --checkbox--border-bottom-right-radius: var( --checkbox--md--border-bottom-right-radius, calc(var(--border-bottom-right-radius) * var(--size-multiplier-md)) ); --checkbox--border-bottom-left-radius: var( --checkbox--md--border-bottom-left-radius, calc(var(--border-bottom-left-radius) * var(--size-multiplier-md)) ); --checkbox--size: var(--checkbox--md--size, calc(1rem * var(--size-multiplier-md))); --checkbox--checkmark--size: var( --checkbox--md--checkmark--size, calc(8px * var(--size-multiplier-md)) ); --checkbox--label--font-size: var( --checkbox--md--label--font-size, calc(var(--font-size) * var(--size-multiplier-md)) ); } .checkbox.-lg { --checkbox--border-top-left-radius: var( --checkbox--lg--border-top-left-radius, calc(var(--border-top-left-radius) * var(--size-multiplier-lg)) ); --checkbox--border-top-right-radius: var( --checkbox--lg--border-top-right-radius, calc(var(--border-top-right-radius) * var(--size-multiplier-lg)) ); --checkbox--border-bottom-right-radius: var( --checkbox--lg--border-bottom-right-radius, calc(var(--border-bottom-right-radius) * var(--size-multiplier-lg)) ); --checkbox--border-bottom-left-radius: var( --checkbox--lg--border-bottom-left-radius, calc(var(--border-bottom-left-radius) * var(--size-multiplier-lg)) ); --checkbox--size: var(--checkbox--lg--size, calc(1rem * var(--size-multiplier-lg))); --checkbox--checkmark--size: var( --checkbox--lg--checkmark--size, calc(8px * var(--size-multiplier-lg)) ); --checkbox--label--font-size: var( --checkbox--lg--label--font-size, calc(var(--font-size) * var(--size-multiplier-lg)) ); }