UNPKG

mytril

Version:

Mytril Svelte library component for rapidly building modern websites based on Svelte and Sveltekit

295 lines (264 loc) 7.38 kB
.myt-btn { --c: var(--myt-btn-c); --bg: var(--myt-btn-bg); align-items: center; display: inline-grid; grid-template-areas: 'prepend content append'; grid-template-columns: max-content auto max-content; justify-content: center; max-width: 100%; outline: none; position: relative; text-decoration: none; transition-property: box-shadow, transform, opacity, background-color, background; transition-duration: 0.28s; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); user-select: none; vertical-align: middle; flex-shrink: 0; color: var(--c); background-color: var(--bg); border-radius: var(--myt-btn-br); transition: color 0.5s, background-color 0.5s; } .myt-btn.myt-btn--outline { border: thin solid currentColor; } .myt-btn.myt-btn--text, .myt-btn.myt-btn--outline { background-color: transparent; } .myt-btn.myt-btn--icon { min-width: 0 !important; padding: 0 !important; } .myt-btn.myt-btn--icon.myt-btn--circle { border-radius: 50%; } .myt-btn.myt-btn--square { border-radius: var(--radius-lg); } .myt-btn.myt-btn--rounded { border-radius: var(--radius-pill); } .myt-btn.myt-btn--circle:not(.myt-btn--icon) { border-radius: var(--radius-circle); } .myt-btn.myt-btn--block { display: flex; flex: 1 0 auto; min-width: 100%; } .myt-btn.myt-btn--wide { width: 16rem; } .myt-btn.myt-btn--density-default:not(.myt-btn--icon) { height: calc(var(--btn-height) + 0px); } .myt-btn.myt-btn--density-comfortable:not(.myt-btn--icon) { height: calc(var(--btn-height) + -0.5rem); } .myt-btn.myt-btn--density-compact:not(.myt-btn--icon) { height: calc(var(--btn-height) + -0.75rem); } .myt-btn.myt-btn--icon.myt-btn--density-comfortable { width: calc(var(--btn-height) + 0px); height: calc(var(--btn-height) + 0px); } .myt-btn.myt-btn--icon.myt-btn--density-compact { width: calc(var(--btn-height) + -0.5rem); height: calc(var(--btn-height) + -0.5rem); } .myt-btn.myt-btn--icon.myt-btn--density-default { width: calc(var(--btn-height) + 0.75rem); height: calc(var(--btn-height) + 0.75rem); } .myt-btn .myt-btn--content { grid-area: content; justify-content: center; white-space: nowrap; } .myt-btn .myt-btn--prepend { grid-area: prepend; margin-inline: calc(var(--btn-height) / -9) calc(var(--btn-height) / 4.5); } .myt-btn .myt-btn--append { grid-area: append; margin-inline: calc(var(--btn-height) / 4.5) calc(var(--btn-height) / -9); } .myt-btn .myt-btn--content, .myt-btn .myt-btn--prepend, .myt-btn .myt-btn--append { align-items: center; display: flex; transition: transform, opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1); } .myt-btn.myt-btn--icon .myt-icon { --icon-size-multiplier: 1; } .myt-btn .myt-icon { --icon-size-multiplier: 0.86; } .myt-btn:active:hover, .myt-btn:active:focus { animation: button-effect 0s ease-out; transform: scale(0.97); } .myt-btn.myt-btn--active:not(.myt-btn--outline):not(.myt-btn--text):not(.myt-btn--link) { background-color: color-mix(in oklab, var(--bg) 85%, black); } .myt-btn:hover:not(.myt-btn--outline):not(.myt-btn--text):not(.myt-btn--link) { background-color: color-mix(in oklab, var(--bg) 90%, black); } .myt-btn.myt-btn--outline.myt-btn--active, .myt-btn.myt-btn--text.myt-btn--active { background-color: color-mix(in oklab, var(--c) 15%, transparent); } .myt-btn.myt-btn--outline:hover, .myt-btn.myt-btn--text:hover { background-color: color-mix(in oklab, var(--c) 20%, transparent); } .myt-btn.myt-btn--link { background-color: transparent; text-decoration-line: underline; } .myt-btn.myt-btn--disabled, .myt-btn[disabled] { pointer-events: none; user-select: none; color: color-mix(in oklab, var(--c) 40%, transparent) !important; background-color: color-mix(in oklab, var(--bg) 70%, transparent) !important; } .myt-btn.myt-btn--disabled.myt-btn--outline, .myt-btn[disabled].myt-btn--outline { border-color: color-mix(in oklab, var(--c) 40%, transparent) !important; } .myt-btn.myt-btn--disabled.myt-btn--outline, .myt-btn[disabled].myt-btn--outline, .myt-btn.myt-btn--disabled.myt-btn--text, .myt-btn[disabled].myt-btn--text, .myt-btn.myt-btn--disabled.myt-btn--link, .myt-btn[disabled].myt-btn--link { background-color: transparent; } .myt-btn:where(.myt-btn:is(input[type='checkbox'])), .myt-btn:where(.myt-btn:is(input[type='radio'])) { width: auto; -webkit-appearance: none; -moz-appearance: none; appearance: none; } .myt-btn:is(input[type='checkbox']):after, .myt-btn:is(input[type='radio']):after { --btn-content: attr(aria-label); content: var(--btn-content); } .myt-btn:is(input[type='checkbox']:checked), .myt-btn:is(input[type='radio']:checked) { --c: var(--myt-btn-c); --bg: var(--myt-btn-bg); } .myt-btn.myt-btn--info:not(.myt-btn--outline):not(.myt-btn--text):not(.myt-btn--link) { --c: var(--mcolor-on-info); --bg: var(--color-info); } .myt-btn.myt-btn--info.myt-btn--outline, .myt-btn.myt-btn--info.myt-btn--text, .myt-btn.myt-btn--info.myt-btn--link { --c: var(--color-info); } .myt-btn.myt-btn--success:not(.myt-btn--outline):not(.myt-btn--text):not(.myt-btn--link) { --c: var(--color-on-success); --bg: var(--color-success); } .myt-btn.myt-btn--success.myt-btn--outline, .myt-btn.myt-btn--success.myt-btn--text, .myt-btn.myt-btn--success.myt-btn--link { --c: var(--mcolor-success); } .myt-btn.myt-btn--warning:not(.myt-btn--outline):not(.myt-btn--text):not(.myt-btn--link) { --c: var(--color-on-warning); --bg: var(--color-warning); } .myt-btn.myt-btn--warning.myt-btn--outline, .myt-btn.myt-btn--warning.myt-btn--text, .myt-btn.myt-btn--warning.myt-btn--link { --c: var(--color-warning); } .myt-btn.myt-btn--error:not(.myt-btn--outline):not(.myt-btn--text):not(.myt-btn--link) { --c: var(--color-on-error); --bg: var(--color-error); } .myt-btn.myt-btn--error.myt-btn--outline, .myt-btn.myt-btn--error.myt-btn--text, .myt-btn.myt-btn--error.myt-btn--link { --c: var(--color-error); } /* @breakpoints */ .myt-btn[breakpoint]myt-btn--size-xs { --btn-size: 0.625rem; --btn-height: 1.25rem; font-size: var(--btn-size); min-width: 2.25rem; padding: 0 0.5rem; } .myt-btn[breakpoint]myt-btn--size-sm { --btn-size: 0.75rem; --btn-height: 1.75rem; font-size: var(--btn-size); min-width: 3.125rem; padding: 0 0.75rem; } .myt-btn[breakpoint]myt-btn--size-md { --btn-size: 0.875rem; --btn-height: 2.25rem; font-size: var(--btn-size); min-width: 4rem; padding: 0 1rem; } .myt-btn[breakpoint]myt-btn--size-lg { --btn-size: 1rem; --btn-height: 2.75rem; font-size: var(--btn-size); min-width: 4.875rem; padding: 0 1.25rem; } .myt-btn[breakpoint]myt-btn--size-xl { --btn-size: 1.125rem; --btn-height: 3.25rem; font-size: var(--btn-size); min-width: 5.75rem; padding: 0 1.5rem; } .myt-btn[breakpoint]myt-btn--size-xs .myt-icon { font-size: calc(var(--icon-size-multiplier) * 1em); } .myt-btn[breakpoint]myt-btn--size-sm .myt-icon { font-size: calc(var(--icon-size-multiplier) * 1.25em); } .myt-btn[breakpoint]myt-btn--size-md .myt-icon { font-size: calc(var(--icon-size-multiplier) * 1.5em); } .myt-btn[breakpoint]myt-btn--size-lg .myt-icon { font-size: calc(var(--icon-size-multiplier) * 1.75em); } .myt-btn[breakpoint]myt-btn--size-xl .myt-icon { font-size: calc(var(--icon-size-multiplier) * 2em); } /*! @breakpoints */ /* @keyframes */ @keyframes button-effect { 0% { transform: scale(0.98); } 40% { transform: scale(1.02); } 100% { transform: scale(1); } }