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.

413 lines (411 loc) 20.5 kB
/** * Breakpoint mixins */ .dropdown-wrapper { display: inline-block; position: relative; } .dropdown-wrapper .dropdown-trigger { cursor: pointer; } .dropdown-wrapper .dropdown { position: absolute; z-index: var(--dropdown--z-index, 2000); word-wrap: break-word; width: max-content; top: 0; left: 0; text-align: left; list-style: none; line-height: var(--dropdown--line-height, var(--line-height)); font-size: var(--dropdown--font-size, var(--font-size)); background-clip: padding-box; display: inline-block; white-space: normal; min-width: var(--dropdown--min-width, 240px); max-width: var(--dropdown--max-width, 90vw); color: var(--dropdown--color); box-shadow: var(--dropdown--box-shadow, var(--dropdown--box-shadow-x-offset, var(--box-shadow-offset-x)) var(--dropdown--box-shadow-y-offset, var(--box-shadow-offset-y)) var(--dropdown--box-shadow-blur-radius, var(--box-shadow-blur-radius)) var(--dropdown--box-shadow-spread-radius, var(--box-shadow-spread-radius)) var(--dropdown--box-shadow-color, var(--box-shadow-color))); } .dropdown-wrapper .dropdown:focus:hover { outline-width: 0; } .dropdown-wrapper .dropdown[data-popup-placement^=top] { transform-origin: center bottom; } .dropdown-wrapper .dropdown[data-popup-placement^=bottom] { transform-origin: center top; } .dropdown-wrapper .dropdown[data-popup-placement^=right] { transform-origin: left center; } .dropdown-wrapper .dropdown[data-popup-placement^=left] { transform-origin: right center; } .dropdown-wrapper .dropdown > .arrow { position: absolute; } .dropdown-wrapper .dropdown > .arrow, .dropdown-wrapper .dropdown > .arrow::after { display: block; width: 0; height: 0; border-color: transparent; border-style: solid; position: absolute; } .dropdown-wrapper .dropdown > .arrow::after { content: ""; } .dropdown-wrapper .dropdown[data-popup-placement^=top] > .arrow { border-bottom-width: 0; } .dropdown-wrapper .dropdown[data-popup-placement^=top] > .arrow::after { border-bottom-width: 0; } .dropdown-wrapper .dropdown[data-popup-placement^=bottom] > .arrow { border-top-width: 0; } .dropdown-wrapper .dropdown[data-popup-placement^=bottom] > .arrow::after { border-top-width: 0; } .dropdown-wrapper .dropdown[data-popup-placement^=right] > .arrow { border-left-width: 0; } .dropdown-wrapper .dropdown[data-popup-placement^=right] > .arrow::after { border-left-width: 0; } .dropdown-wrapper .dropdown[data-popup-placement^=left] > .arrow { border-right-width: 0; } .dropdown-wrapper .dropdown[data-popup-placement^=left] > .arrow::after { border-right-width: 0; } .dropdown-wrapper .dropdown > .arrow { width: var(--dropdown--arrow--size, 6px); height: var(--dropdown--arrow--size, 6px); } .dropdown-wrapper .dropdown > .arrow, .dropdown-wrapper .dropdown > .arrow::after { border-width: var(--dropdown--arrow--size, 6px); } .dropdown-wrapper .dropdown[data-popup-placement^=top] > .arrow::after, .dropdown-wrapper .dropdown[data-popup-placement^=bottom] > .arrow::after { margin-left: calc(var(--dropdown--arrow--size, 6px) * -1); } .dropdown-wrapper .dropdown[data-popup-placement^=left] > .arrow::after, .dropdown-wrapper .dropdown[data-popup-placement^=right] > .arrow::after { margin-top: calc(var(--dropdown--arrow--size, 6px) * -1); } .dropdown-wrapper .dropdown[data-popup-placement^=top] > .arrow { bottom: calc(var(--dropdown--arrow--size, 6px) * -1); } .dropdown-wrapper .dropdown[data-popup-placement^=top] > .arrow::after { bottom: 1px; } .dropdown-wrapper .dropdown[data-popup-placement^=bottom] > .arrow { top: calc(var(--dropdown--arrow--size, 6px) * -1); } .dropdown-wrapper .dropdown[data-popup-placement^=bottom] > .arrow::after { top: 1px; } .dropdown-wrapper .dropdown[data-popup-placement^=left] > .arrow { right: calc(var(--dropdown--arrow--size, 6px) * -1); } .dropdown-wrapper .dropdown[data-popup-placement^=left] > .arrow::after { right: 1px; } .dropdown-wrapper .dropdown[data-popup-placement^=right] > .arrow { left: calc(var(--dropdown--arrow--size, 6px) * -1); } .dropdown-wrapper .dropdown[data-popup-placement^=right] > .arrow::after { left: 1px; } .dropdown-wrapper .dropdown > .dropdown-header { border-style: var(--dropdown--header--border-style, var(--dropdown--header--border-top-style, var(--dropdown--border-top-style, var(--border-top-style))) var(--dropdown--header--border-right-style, var(--dropdown--border-right-style, var(--border-right-style))) var(--dropdown--header--border-bottom-style, var(--dropdown--border-bottom-style, var(--border-bottom-style))) var(--dropdown--header--border-left-style, var(--dropdown--border-left-style, var(--border-left-style)))); border-width: var(--dropdown--header--border-width, var(--dropdown--header--border-top-width, var(--dropdown--border-top-width, var(--border-top-width))) var(--dropdown--header--border-right-width, var(--dropdown--border-right-width, var(--border-right-width))) var(--dropdown--header--border-bottom-width, var(--dropdown--border-bottom-width, 0)) var(--dropdown--header--border-left-width, var(--dropdown--border-left-width, var(--border-left-width)))); border-color: var(--dropdown--header--border-color, var(--dropdown--header--border-top-color, var(--dropdown--border-top-color, var(--border-top-color))) var(--dropdown--header--border-right-color, var(--dropdown--border-right-color, var(--border-right-color))) var(--dropdown--header--border-bottom-color, var(--dropdown--border-bottom-color, var(--border-bottom-color))) var(--dropdown--header--border-left-color, var(--dropdown--border-left-color, var(--border-left-color)))); background-color: var(--dropdown--header--background, var(--dropdown--background)); padding: var(--dropdown--header--padding, var(--dropdown--header--padding-top, var(--dropdown--padding-top, var(--padding-top))) var(--dropdown--header--padding-right, var(--dropdown--padding-right, var(--padding-right))) var(--dropdown--header--padding-bottom, var(--dropdown--padding-bottom, var(--padding-bottom))) var(--dropdown--header--padding-left, var(--dropdown--padding-left, var(--padding-left)))); transition-property: var(--dropdown--header--transition-property, var(--dropdown--transition-property, border-color)); transition-duration: var(--dropdown--header--transition-duration, var(--dropdown--transition-duration, var(--transition-duration))); transition-timing-function: var(--dropdown--header--transition-timing-function, var(--dropdown--transition-timing-function, var(--transition-timing-function))); } .dropdown-wrapper .dropdown > .dropdown-body { display: flex; flex-direction: column; border-style: var(--dropdown--body--border-style, var(--dropdown--body--border-top-style, var(--dropdown--border-top-style, var(--border-top-style))) var(--dropdown--body--border-right-style, var(--dropdown--border-right-style, var(--border-right-style))) var(--dropdown--body--border-bottom-style, var(--dropdown--border-bottom-style, var(--border-bottom-style))) var(--dropdown--body--border-left-style, var(--dropdown--border-left-style, var(--border-left-style)))); border-width: var(--dropdown--body--border-width, var(--dropdown--body--border-top-width, var(--dropdown--border-top-width, var(--border-top-width))) var(--dropdown--body--border-right-width, var(--dropdown--border-right-width, var(--border-right-width))) var(--dropdown--body--border-bottom-width, var(--dropdown--border-bottom-width, var(--border-bottom-width))) var(--dropdown--body--border-left-width, var(--dropdown--border-left-width, var(--border-left-width)))); border-color: var(--dropdown--body--border-color, var(--dropdown--body--border-top-color, var(--dropdown--border-top-color, var(--border-top-color))) var(--dropdown--body--border-right-color, var(--dropdown--border-right-color, var(--border-right-color))) var(--dropdown--body--border-bottom-color, var(--dropdown--border-bottom-color, var(--border-bottom-color))) var(--dropdown--body--border-left-color, var(--dropdown--border-left-color, var(--border-left-color)))); background-color: var(--dropdown--body--background, var(--dropdown--background)); padding: var(--dropdown--body--padding, var(--dropdown--body--padding-top, var(--dropdown--padding-top, var(--padding-top))) var(--dropdown--body--padding-right, var(--dropdown--padding-right, var(--padding-right))) var(--dropdown--body--padding-bottom, var(--dropdown--padding-bottom, var(--padding-bottom))) var(--dropdown--body--padding-left, var(--dropdown--padding-left, var(--padding-left)))); transition-property: var(--dropdown--body--transition-property, var(--dropdown--transition-property, border-color)); transition-duration: var(--dropdown--body--transition-duration, var(--dropdown--transition-duration, var(--transition-duration))); transition-timing-function: var(--dropdown--body--transition-timing-function, var(--dropdown--transition-timing-function, var(--transition-timing-function))); } .dropdown-wrapper .dropdown > .dropdown-body .dropdown-wrapper { width: 100%; } .dropdown-wrapper .dropdown > .dropdown-footer { border-style: var(--dropdown--footer--border-style, var(--dropdown--footer--border-top-style, var(--dropdown--border-top-style, var(--border-top-style))) var(--dropdown--footer--border-right-style, var(--dropdown--border-right-style, var(--border-right-style))) var(--dropdown--footer--border-bottom-style, var(--dropdown--border-bottom-style, var(--border-bottom-style))) var(--dropdown--footer--border-left-style, var(--dropdown--border-left-style, var(--border-left-style)))); border-width: var(--dropdown--footer--border-width, var(--dropdown--footer--border-top-width, var(--dropdown--border-top-width, 0)) var(--dropdown--footer--border-right-width, var(--dropdown--border-right-width, var(--border-right-width))) var(--dropdown--footer--border-bottom-width, var(--dropdown--border-bottom-width, var(--border-bottom-width))) var(--dropdown--footer--border-left-width, var(--dropdown--border-left-width, var(--border-left-width)))); border-color: var(--dropdown--footer--border-color, var(--dropdown--footer--border-top-color, var(--dropdown--border-top-color, var(--border-top-color))) var(--dropdown--footer--border-right-color, var(--dropdown--border-right-color, var(--border-right-color))) var(--dropdown--footer--border-bottom-color, var(--dropdown--border-bottom-color, var(--border-bottom-color))) var(--dropdown--footer--border-left-color, var(--dropdown--border-left-color, var(--border-left-color)))); background-color: var(--dropdown--footer--background, var(--dropdown--background)); padding: var(--dropdown--footer--padding, var(--dropdown--footer--padding-top, var(--dropdown--padding-top, var(--padding-top))) var(--dropdown--footer--padding-right, var(--dropdown--padding-right, var(--padding-right))) var(--dropdown--footer--padding-bottom, var(--dropdown--padding-bottom, var(--padding-bottom))) var(--dropdown--footer--padding-left, var(--dropdown--padding-left, var(--padding-left)))); transition-property: var(--dropdown--footer--transition-property, var(--dropdown--transition-property, border-color)); transition-duration: var(--dropdown--footer--transition-duration, var(--dropdown--transition-duration, var(--transition-duration))); transition-timing-function: var(--dropdown--footer--transition-timing-function, var(--dropdown--transition-timing-function, var(--transition-timing-function))); } .dropdown-wrapper .dropdown > div:first-of-type { border-top-left-radius: var(--dropdown--border-top-left-radius, var(--border-top-left-radius)); border-top-right-radius: var(--dropdown--border-top-right-radius, var(--border-top-right-radius)); } .dropdown-wrapper .dropdown > div:last-of-type { border-bottom-left-radius: var(--dropdown--border-bottom-left-radius, var(--border-bottom-left-radius)); border-bottom-right-radius: var(--dropdown--border-bottom-right-radius, var(--border-bottom-right-radius)); } .dropdown-wrapper .dropdown[data-popup-placement^=top] > .arrow { border-top-color: var(--dropdown--border-bottom-color, var(--border-bottom-color)); } .dropdown-wrapper .dropdown[data-popup-placement^=top] > .arrow::after { border-top-color: var(--dropdown--background); } .dropdown-wrapper .dropdown[data-popup-placement^=right] > .arrow { border-right-color: var(--dropdown--border-left-color, var(--border-left-color)); } .dropdown-wrapper .dropdown[data-popup-placement^=right] > .arrow::after { border-right-color: var(--dropdown--background); } .dropdown-wrapper .dropdown[data-popup-placement^=bottom] > .arrow { border-bottom-color: var(--dropdown--border-top-color, var(--border-top-color)); } .dropdown-wrapper .dropdown[data-popup-placement^=bottom] > .arrow::after { border-bottom-color: var(--dropdown--background); } .dropdown-wrapper .dropdown[data-popup-placement^=left] > .arrow { border-left-color: var(--dropdown--border-right-color, var(--border-right-color)); } .dropdown-wrapper .dropdown[data-popup-placement^=left] > .arrow::after { border-left-color: var(--dropdown--background); } /** * Color variants */ .dropdown.-light { --dropdown--background: var(--dropdown--light--background, var(--color-white)); --dropdown--color: var(--dropdown--light--color, var(--contrast-text-color-light)); --dropdown--border-top-color: var( --dropdown--light--border-top-color, var(--color-light-shade-50) ); --dropdown--border-right-color: var( --dropdown--light--border-right-color, var(--color-light-shade-50) ); --dropdown--border-bottom-color: var( --dropdown--light--border-bottom-color, var(--color-light-shade-50) ); --dropdown--border-left-color: var( --dropdown--light--border-left-color, var(--color-light-shade-50) ); --dropdown--item--hover--background: var( --dropdown--light--item--hover--background, var(--color-gray-50) ); --dropdown--item--hover--color: var( --dropdown--light--item--hover--color, var(--dropdown--color) ); --dropdown--item--active--background: var( --dropdown--light--item--active--background, var(--color-gray-50) ); --dropdown--item--active--color: var( --dropdown--light--item--active--color, var(--dropdown--color) ); --dropdown--item--disabled--background: var( --dropdown--light--item--disabled--background, transparent ); --dropdown--item--disabled--color: var( --dropdown--light--item--disabled--color, var(--text-color-weak) ); --dropdown--header--background: var( --dropdown--light--header--background, var(--color-gray-50) ); --dropdown--footer--background: var( --dropdown--light--footer--background, var(--color-gray-50) ); } .dropdown.-dark { --dropdown--background: var(--dropdown--dark--background, var(--color-dark)); --dropdown--color: var(--dropdown--dark--color, var(--contrast-text-color-dark)); --dropdown--border-top-color: var( --dropdown--dark--border-top-color, var(--color-dark-tint-50) ); --dropdown--border-right-color: var( --dropdown--dark--border-right-color, var(--color-dark-tint-50) ); --dropdown--border-bottom-color: var( --dropdown--dark--border-bottom-color, var(--color-dark-tint-50) ); --dropdown--border-left-color: var( --dropdown--dark--border-left-color, var(--color-dark-tint-50) ); --dropdown--item--hover--background: var( --dropdown--dark--item--hover--background, var(--color-dark-tint-50) ); --dropdown--item--hover--color: var( --dropdown--dark--item--hover--color, var(--dropdown--color) ); --dropdown--item--active--background: var( --dropdown--dark--item--active--background, var(--color-dark-tint-50) ); --dropdown--item--active--color: var( --dropdown--dark--item--active--color, var(--dropdown--color) ); --dropdown--item--disabled--background: var( --dropdown--dark--item--disabled--background, transparent ); --dropdown--item--disabled--color: var( --dropdown--dark--item--disabled--color, var(--text-color-weak) ); --dropdown--header--background: var( --dropdown--dark--header--background, var(--color-dark-tint-50) ); --dropdown--footer--background: var( --dropdown--dark--footer--background, var(--color-dark-tint-50) ); } /** * Size variants */ .dropdown.-sm { --dropdown--border-top-left-radius: var( --dropdown--sm--border-top-left-radius, calc(var(--border-top-left-radius) * var(--size-multiplier-sm)) ); --dropdown--border-top-right-radius: var( --dropdown--sm--border-top-right-radius, calc(var(--border-top-right-radius) * var(--size-multiplier-sm)) ); --dropdown--border-bottom-right-radius: var( --dropdown--sm--border-bottom-right-radius, calc(var(--border-bottom-right-radius) * var(--size-multiplier-sm)) ); --dropdown--border-bottom-left-radius: var( --dropdown--sm--border-bottom-left-radius, calc(var(--border-bottom-left-radius) * var(--size-multiplier-sm)) ); --dropdown--font-size: var( --dropdown--sm--font-size, calc(var(--font-size) * var(--size-multiplier-sm)) ); --dropdown--padding-top: var( --dropdown--sm--padding-top, calc(var(--padding-top) * var(--size-multiplier-sm)) ); --dropdown--padding-right: var( --dropdown--sm--padding-right, calc(var(--padding-right) * var(--size-multiplier-sm)) ); --dropdown--padding-bottom: var( --dropdown--sm--padding-bottom, calc(var(--padding-bottom) * var(--size-multiplier-sm)) ); --dropdown--padding-left: var( --dropdown--sm--padding-left, calc(var(--padding-left) * var(--size-multiplier-sm)) ); } .dropdown.-md { --dropdown--border-top-left-radius: var( --dropdown--md--border-top-left-radius, calc(var(--border-top-left-radius) * var(--size-multiplier-md)) ); --dropdown--border-top-right-radius: var( --dropdown--md--border-top-right-radius, calc(var(--border-top-right-radius) * var(--size-multiplier-md)) ); --dropdown--border-bottom-right-radius: var( --dropdown--md--border-bottom-right-radius, calc(var(--border-bottom-right-radius) * var(--size-multiplier-md)) ); --dropdown--border-bottom-left-radius: var( --dropdown--md--border-bottom-left-radius, calc(var(--border-bottom-left-radius) * var(--size-multiplier-md)) ); --dropdown--font-size: var( --dropdown--md--font-size, calc(var(--font-size) * var(--size-multiplier-md)) ); --dropdown--padding-top: var( --dropdown--md--padding-top, calc(var(--padding-top) * var(--size-multiplier-md)) ); --dropdown--padding-right: var( --dropdown--md--padding-right, calc(var(--padding-right) * var(--size-multiplier-md)) ); --dropdown--padding-bottom: var( --dropdown--md--padding-bottom, calc(var(--padding-bottom) * var(--size-multiplier-md)) ); --dropdown--padding-left: var( --dropdown--md--padding-left, calc(var(--padding-left) * var(--size-multiplier-md)) ); } .dropdown.-lg { --dropdown--border-top-left-radius: var( --dropdown--lg--border-top-left-radius, calc(var(--border-top-left-radius) * var(--size-multiplier-lg)) ); --dropdown--border-top-right-radius: var( --dropdown--lg--border-top-right-radius, calc(var(--border-top-right-radius) * var(--size-multiplier-lg)) ); --dropdown--border-bottom-right-radius: var( --dropdown--lg--border-bottom-right-radius, calc(var(--border-bottom-right-radius) * var(--size-multiplier-lg)) ); --dropdown--border-bottom-left-radius: var( --dropdown--lg--border-bottom-left-radius, calc(var(--border-bottom-left-radius) * var(--size-multiplier-lg)) ); --dropdown--font-size: var( --dropdown--lg--font-size, calc(var(--font-size) * var(--size-multiplier-lg)) ); --dropdown--padding-top: var( --dropdown--lg--padding-top, calc(var(--padding-top) * var(--size-multiplier-lg)) ); --dropdown--padding-right: var( --dropdown--lg--padding-right, calc(var(--padding-right) * var(--size-multiplier-lg)) ); --dropdown--padding-bottom: var( --dropdown--lg--padding-bottom, calc(var(--padding-bottom) * var(--size-multiplier-lg)) ); --dropdown--padding-left: var( --dropdown--lg--padding-left, calc(var(--padding-left) * var(--size-multiplier-lg)) ); }