UNPKG

@oslokommune/punkt-css

Version:

CSS-rammeverket til Punkt, et designsystem laget av Oslo Origo

298 lines (287 loc) 7.03 kB
/* * Modal component */ .pkt-modal { border: none; padding: 0; background-color: transparent; opacity: 0; display: none; transition: translate 0.2s ease-in-out, opacity 0.2s ease-in-out, overlay 0.2s ease-in-out allow-discrete, display 0.2s ease-in-out allow-discrete; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); position: fixed; } .pkt-modal:focus { outline: none; } .pkt-modal[open] { display: block; opacity: 1; } @starting-style { .pkt-modal[open] { opacity: 0; } } .pkt-modal__wrapper { display: grid; grid-template-columns: 1fr; grid-template-rows: auto 1fr; } .pkt-modal__dialog { box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); translate: 0 10%; } .pkt-modal__dialog[open] { translate: 0 0; } @starting-style { .pkt-modal__dialog[open] { translate: 0 -10%; } } .pkt-modal__dialog .pkt-modal__wrapper { max-height: 90vh; max-height: 90svh; } @supports not (selector(::backdrop)) { .pkt-modal__dialog { top: 50%; left: 50%; transform: translate(-50%, -50%); } } .pkt-modal__drawer { top: 0; height: 100vh; height: 100dvh; max-height: 100vh; max-height: 100dvh; margin: 0; overflow-y: auto; } .pkt-modal__drawer .pkt-modal__wrapper { min-height: 100vh; min-height: 100dvh; } .pkt-modal__drawer[open] { translate: 0 0; } .pkt-modal__drawer--right { left: auto; right: 0; margin-right: 0; translate: 100% 0; } @starting-style { .pkt-modal__drawer--right[open] { translate: 100% 0; } } .pkt-modal__drawer--left { left: 0; right: auto; margin-left: 0; translate: -100% 0; } @starting-style { .pkt-modal__drawer--left[open] { translate: -100% 0; } } .pkt-modal::backdrop { opacity: 0; background-color: rgba(0, 0, 0, 0.55); transition: opacity 0.2s ease-out, overlay 0.2s ease-out allow-discrete, display 0.2s allow-discrete; } .pkt-modal[open]::backdrop { opacity: 1; } @starting-style { .pkt-modal[open]::backdrop { opacity: 0; } } @supports not (selector(::backdrop)) { .pkt-modal { position: fixed; } .pkt-modal + .backdrop { background-color: rgba(0, 0, 0, 0.55); position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; } } .pkt-modal .pkt-modal__container { padding-top: 2rem; background: var(--pkt-color-background-default); overflow-y: auto; } .pkt-modal .pkt-modal__header { display: grid; grid-template-columns: 1fr 4rem; grid-template-rows: 4rem 1fr; grid-template-areas: "header close" "header empty"; justify-content: flex-start; width: 100%; } .pkt-modal .pkt-modal__header-background { background: var(--pkt-color-background-default); grid-area: empty; } .pkt-modal .pkt-modal__headingText { background: var(--pkt-color-background-default); grid-area: header; padding: 2rem 0 0 2.5rem; margin: 0; color: var(--pkt-color-text-body-default); } .pkt-modal .pkt-modal__closeButton { grid-area: close; display: flex; flex-direction: row-reverse; align-self: flex-start; } .pkt-modal .pkt-modal__noCloseButton { background: var(--pkt-color-background-default); grid-area: close; } .pkt-modal .pkt-modal__closeButton--blue { height: 100%; background: var(--pkt-color-background-default); } .pkt-modal .pkt-modal__closeButton--blue .pkt-btn { margin: 0.25rem; } .pkt-modal .pkt-modal__closeButton--yellow-filled .pkt-btn { height: 4rem; width: 4rem; justify-content: center; align-items: center; border: none; border-radius: 50%; color: var(--pkt-color-surface-strong-dark-blue); background-color: var(--pkt-color-brand-yellow-1000); border: 4px solid var(--pkt-color-brand-yellow-1000); outline: 0; } .pkt-modal .pkt-modal__closeButton--yellow-filled .pkt-btn:hover, .pkt-modal .pkt-modal__closeButton--yellow-filled .pkt-btn:focus { background-color: var(--pkt-color-brand-warm-blue-1000); border-color: var(--pkt-color-brand-warm-blue-1000); color: var(--pkt-color-background-default); } .pkt-modal .pkt-modal__closeButton--yellow-filled .pkt-btn:hover .pkt-icon, .pkt-modal .pkt-modal__closeButton--yellow-filled .pkt-btn:focus .pkt-icon { color: var(--pkt-color-background-default); } .pkt-modal .pkt-modal__closeButton--yellow-filled .pkt-btn:focus-visible { outline: 0; border-color: var(--pkt-color-border-states-focus); } .pkt-modal .pkt-modal__closeButton--yellow-filled .pkt-btn .pkt-btn__icon { width: 2rem; height: 2rem; } .pkt-modal .pkt-modal__content { display: flex; flex-direction: column; flex-grow: 1; gap: 1rem; overflow-y: auto; padding: 2rem 2.5rem; padding-top: 0; position: relative; color: var(--pkt-color-text-body-default); background: linear-gradient(var(--pkt-color-white) 30%, transparent) top, linear-gradient(transparent, var(--pkt-color-border-subtle) 60%) bottom, radial-gradient(farthest-side at 50% 0, rgba(0, 0, 0, 0.3), transparent) top, radial-gradient(farthest-side at 50% 100%, rgba(0, 0, 0, 0.3), transparent) bottom; background-attachment: local, local, scroll, scroll; background-repeat: no-repeat; background-size: 100% 40px, 100% 50px, 100% 16px, 100% 16px; } body.pkt-modal--open { overflow: hidden; scrollbar-gutter: stable; } .pkt-modal--small { width: 480px; } .pkt-modal--medium { width: 36rem; } .pkt-modal--large { width: 640px; } .pkt-modal__btn-wrapper { padding-top: 1.5rem; display: flex; justify-content: flex-start; gap: 1rem; flex-wrap: wrap; width: 100%; } @media screen and (max-width: 640px) { .pkt-modal[open] { line-height: 1.5rem; } .pkt-modal[open] .pkt-modal__headingText { font-size: 1.375rem; } .pkt-modal[open] .pkt-modal__content { letter-spacing: -0.2px; font-size: 1rem; } .pkt-modal--large { width: 100vw; } } @media screen and (max-width: 480px) { .pkt-modal--small { width: 100vw; } } @media screen and (max-width: 36rem) { .pkt-modal--medium { width: 100vw; } } @media screen and (max-width: 480px) { .pkt-modal__btn-wrapper { display: grid; grid-template-columns: 1fr; justify-content: center; align-items: center; } .pkt-modal__btn-wrapper .pkt-btn { justify-content: center; } } .pkt-modal--noShadow { box-shadow: none; } .pkt-modal--transparentBackdrop::backdrop, .pkt-modal--transparentBackdrop[open]::backdrop { background-color: transparent; } @supports not (selector(::backdrop)) { .pkt-modal--transparentBackdrop + .backdrop { background-color: transparent; } } .pkt-modal.pkt-modal--removePadding .pkt-modal__headingText, .pkt-modal.pkt-modal--removePadding .pkt-modal__content, .pkt-modal.pkt-modal--removePadding .pkt-modal__container { padding: 0; } .pkt-modal.pkt-modal--noHeadingText .pkt-modal__container { padding-top: 1rem; } .pkt-modal .pkt-modal__container .pkt-modal__btn-wrapper button.pkt-btn:not(.pkt-inputwrapper__helptext-expandable > .pkt-btn):not(.pkt-header__user-btn):not(.pkt-searchinput__button) { margin: 0; } ._dialog_overlay { position: fixed; top: 0; right: 0; bottom: 0; left: 0; }