UNPKG

@roadtrip/css

Version:

CSS framework for Roadtrip Design System

231 lines (188 loc) 3.59 kB
/* * Drawer * * Index * - Overlay * - Drawer * - Drawer position * - Drawer content * - Drawer header * - Drawer actions * - Drawer title * - Drawer body * - Drawer open state * */ /* OVERLAY -------------------- */ .drawer { position: fixed; top: 0; left: 0; z-index: 10; display: flex; justify-content: flex-start; width: 100%; height: 100%; overflow: hidden; font-family: var(--road-font); visibility: hidden; background: var(--road-overlay); opacity: 0; transition: opacity 0.15s linear, visibility 0.15s; } /* DRAWER -------------------- */ .drawer-dialog { position: relative; width: 100%; pointer-events: none; transition: transform 0.3s ease-out; transform: translateX(-100%); } /* DRAWER POSITION -------------------- */ .drawer-right { justify-content: flex-end; } .drawer-right .drawer-dialog { transform: translateX(100%); } /** * Bottom position */ .drawer-bottom { align-items: flex-end; } .drawer-bottom .drawer-dialog { width: 100%; transform: translateY(100%); } .drawer-bottom .drawer-content { height: auto; min-height: 6.25rem; } /* DRAWER CONTENT -------------------- */ .drawer-content { position: relative; display: flex; flex-direction: column; width: 100%; height: 100vh; pointer-events: auto; background-color: var(--road-surface); background-clip: padding-box; box-shadow: var(--road-elevation-hight); } /* DRAWER HEADER -------------------- */ .drawer-header { display: flex; flex-shrink: 0; align-items: center; justify-content: flex-end; height: 3.5rem; background: var(--road-surface); } .drawer-footer { padding: var(--road-spacing-05); background-color: var(--road-surface); } /** * Delimiter when needed */ .drawer-header-delimiter { border-bottom: 1px solid var(--road-outline); } /** * Header inverse colors */ .drawer-header-inverse { margin-bottom: 2.5rem; color: var(--road-on-primary); background: var(--road-primary-variant); } .drawer-header-inverse .action-icon, .drawer-header-inverse .close-icon { fill: var(--road-icon-inverse); } /* DRAWER ACTIONS -------------------- */ .drawer-action, .drawer-close { display: flex; align-items: center; justify-content: center; width: 3.5rem; height: 3.5rem; padding: 0; cursor: pointer; background: transparent; border: 0; appearance: none; fill: var(--road-icon); } .drawer-action ~ .drawer-title, .drawer-close ~ .drawer-title { padding-left: 0; } .drawer-action-left, .drawer-close-left { margin-right: auto; } /** * Header button icons */ .action-icon, .close-icon { display: block; width: 2rem; } .action-icon { transform: rotate(180deg); } /* DRAWER TITLE -------------------- */ .drawer-title { display: flex; flex-grow: 1; align-items: center; justify-content: center; height: 3.5rem; padding-left: 3.5rem; margin: 0; font-size: var(--road-body-medium); } /* DRAWER BODY -------------------- */ .drawer-body { height: calc(100vh - 3.5rem); overflow-y: auto; } .drawer-body + .drawer-header { border-top: 1px solid var(--road-outline); } .drawer-inner { padding: 0 1rem 2.5rem; } @media (min-width: 768px) { .drawer-inner { padding: 0 2rem 2.5rem; } .drawer-body { padding: 0 var(--road-spacing-08) var(--road-spacing-05); } .drawer-footer { padding: var(--road-spacing-05) var(--road-spacing-08); } } /* DRAWER OPEN STATE -------------------- */ .drawer-open { visibility: visible; opacity: 1; } .drawer-open .drawer-dialog { transform: none; }