@roadtrip/css
Version:
CSS framework for Roadtrip Design System
342 lines (272 loc) • 5.54 kB
CSS
/*
* Buttons
*
* Use custom button styles for actions in forms, dialogs, and more
* with support for multiple sizes, states, and more.
*
* Index
* - Button
* - Plain buttons
* - Outline buttons
* - Disabled buttons
* - Button sizes
*
*/
/* BUTTON
-------------------- */
.btn {
display: -webkit-inline-flex;
display: inline-flex;
align-items: center;
justify-content: center;
height: 3rem;
padding: 0 1.5em;
margin-bottom: 1rem;
font-family: var(--road-font);
font-size: var(--road-button-medium);
font-weight: 700;
line-height: 1.375;
color: var(--road-grey-10);
text-decoration: none;
white-space: nowrap;
vertical-align: middle;
background: var(--road-grey-80);
border: 1px solid transparent;
border-radius: 0.25rem;
transition: background 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
}
.btn:not(:disabled) {
cursor: pointer;
}
/**
* Fix states
*/
.btn:hover {
text-decoration: none;
}
/* PLAIN BUTTONS
-------------------- */
/**
* Button primary
*/
.btn-primary {
color: var(--road-on-button-primary);
background: var(--road-button-primary);
}
.btn-primary:hover,
.btn-primary:focus,
.btn-primary.focus-visible {
background: var(--road-button-primary-variant);
outline: 0;
}
/**
* Button secondary
*/
.btn-secondary {
color: var(--road-on-button-secondary);
background: var(--road-button-secondary);
}
.btn-secondary:hover {
background: var(--road-button-secondary-variant);
}
/**
* Button destructive
*/
.btn-destructive {
color: var(--road-on-button-destructive-primary);
background: var(--road-button-destructive-primary);
}
.btn-destructive:hover {
background: var(--road-button-destructive-primary-variant);
}
/**
* Button default
*/
.btn-default:hover {
background: var(--road-grey-80);
}
/**
* Button link
*/
.btn-link {
font-weight: 400;
color: var(--road-link-primary);
text-decoration: underline;
background: transparent;
}
.btn-link:hover{
color: var(--road-primary-30);
}
/**
* Button Ghost
*/
.btn-ghost {
color: var(--road-on-button-ghost);
background: transparent;
}
.btn-ghost:hover{
background: var(--road-button-ghost-variant);
}
/* OUTLINE BUTTONS
-------------------- */
.btn-outline-primary,
.btn-outline-secondary,
.btn-outline-default,
.btn-outline-destructive {
background: transparent;
}
/**
* Button outline default
*/
.btn-outline-default {
color: var(--road-on-surface-weak);
border-color: var(--road-input-outline);
}
.btn-outline-default:hover {
background: var(--road-grey-80);
}
/**
* Button outline primary
*/
.btn-outline-primary {
color: var(--road-button-primary);
border-color: var(--road-button-tertiary-outline);
}
.btn-outline-primary:hover{
background: var(--road-button-tertiary-variant);
}
/**
* Button outline secondary
*/
.btn-outline-secondary {
color: var(--road-button-primary);
border-color: var(--road-button-primary);
}
.btn-outline-secondary:hover {
background: var(--road-button-tertiary-variant);
}
/**
* Button outline destructive
*/
.btn-outline-destructive {
color: var(--road-on-button-destructive-secondary);
border-color: var(--road-button-destructive-outline);
}
.btn-outline-destructive:hover {
background: var(--road-button-destructive-secondary-variant);
}
/* BUTTON
-------------------- */
.btn-icon-only {
width: 56px;
padding: 0;
}
.btn-icon-only.btn-xl {
width: 56px;
padding: 0;
}
.btn-icon-only.btn-lg {
width: 48px;
padding: 0;
}
.btn-icon-only.btn-md {
width: 40px;
padding: 0;
}
.btn-icon-only.btn-sm {
width: 32px;
padding: 0;
}
.btn-icon-only svg{
width: 32px;
fill: currentColor;
}
.btn-icon-only.btn-md svg{
width: 24px;
fill: currentColor;
}
.btn-icon-only.btn-sm svg{
width: 20px;
fill: currentColor;
}
/* DISABLED BUTTONS
-------------------- */
.btn:disabled {
color: var(--road-on-surface-disabled);
cursor: not-allowed;
background: var(--road-surface-disabled);
border-color: var(--road-surface-disabled);
}
[class*="btn-outline"]:disabled:hover{
background: var(--road-surface-disabled);
}
[class*="btn-primary"]:disabled,
[class*="btn-secondary"]:disabled,
[class*="btn-ghost"]:disabled,
[class*="btn-primary"][disabled],
[class*="btn-secondary"][disabled],
[class*="btn-ghost"][disabled]
{
color: var(--road-on-surface-disabled);
cursor: not-allowed;
background: var(--road-surface-disabled);
border-color: var(--road-surface-disabled);
}
[class*="btn-outline-primary"]:disabled,
[class*="btn-outline-secondary"]:disabled,
[class*="btn-outline-primary"][disabled],
[class*="btn-outline-secondary"][disabled]
{
color: var(--road-on-surface-disabled);
cursor: not-allowed;
background: none;
border-color: var(--road-surface-disabled);
}
/* BUTTON SIZES
-------------------- */
.btn-icon {
width: 2rem;
margin-right: 0.5rem;
fill: currentColor;
}
.btn-link .btn-icon {
transition: fill 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
fill: currentColor;
}
/**
* Extra Large button
*/
.btn-xl,
.btn-group-xl > .btn {
height: 3.5rem;
}
/**
* Medium button
*/
.btn-md,
.btn-group-md > .btn {
height: 2.5rem;
font-size: var(--road-font-size-14);
}
.btn-md .btn-icon {
width: 1.5rem;
height: 1.5rem;
}
/**
* Small button
*/
.btn-sm,
.btn-group-sm > .btn {
height: 2rem;
font-size: var(--road-font-size-14);
}
.btn-sm .btn-icon {
width: 1.25rem;
height: 1.25rem;
}
/**
* Button block
*/
.btn-block {
width: 100%;
}