UNPKG

@oslokommune/punkt-css

Version:

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

106 lines 3.09 kB
/* * Form elements * https://css-tricks.com/html-inputs-and-labels-a-love-story/ * */ /* TODO: move to animation.scss */ @keyframes enter { from { transform: scaleY(0); } to { transform: scaleY(1); } } /* TODO: Contemplate and decide if this should be split up to multiple files or not. * button is only one without pkt-form prefix. Is that ok??? */ .pkt-form-group { margin-bottom: 1.5rem; } .pkt-form-group:focus-within { color: var(--pkt-color-brand-warm-blue-1000); } .pkt-form { /* EXPLICIT LABEL (recommended for use) * - the label is connected to an input via "for" and "id" */ } .pkt-form-label { width: 100%; } .pkt-form-label > p:first-child { display: inline; } .pkt-form-help { margin: 0.25em 0; font-size: 0.875rem; line-height: 1.25em; opacity: 0.9; } .pkt-form-validation { animation: enter 0.2s ease-in forwards; background-color: var(--pkt-color-brand-red-1000); border: 2px solid var(--pkt-color-brand-red-1000); font-size: 0.875rem; line-height: 2rem; margin: 1rem 0 0; padding: 0.4375rem 0.5rem; transform-origin: 0 0; } .pkt-form-validation--warning { background-color: var(--pkt-color-brand-yellow-1000); border-color: var(--pkt-color-brand-yellow-1000); } .pkt-form-validation--error { background-color: var(--pkt-color-brand-red-1000); border-color: var(--pkt-color-brand-red-1000); } .pkt-form-input, .pkt-form-textarea { appearance: none; background-clip: padding-box; background-color: var(--pkt-color-brand-neutrals-white); border: 2px solid var(--pkt-color-brand-dark-blue-1000); border-radius: 0; color: var(--pkt-color-brand-dark-blue-1000); display: block; font-size: 1rem; font-weight: 400; line-height: 2rem; margin: 0; padding: 0.4375rem 0.5rem; position: relative; width: 100%; } .pkt-form-input:focus, .pkt-form-textarea:focus { background-color: var(--pkt-color-brand-neutrals-white); border-color: var(--pkt-color-brand-warm-blue-1000); box-shadow: 0 0 var(--pkt-color-brand-warm-blue-1000); color: var(--pkt-color-brand-warm-blue-1000); outline: 2px solid var(--pkt-color-brand-warm-blue-1000); } .pkt-form-input, .pkt-form-textarea { /* Placeholder * 1. Override Firefox's default opacity */ } .pkt-form-input::placeholder, .pkt-form-textarea::placeholder { color: var(--pkt-color-grays-gray-300); opacity: 1; /* 1 */ } .pkt-form-input + .pkt-form-validation, .pkt-form-textarea + .pkt-form-validation { display: none; } .pkt-form-input:not(:placeholder-shown):invalid, .pkt-form-textarea:not(:placeholder-shown):invalid { border-color: var(--pkt-color-brand-red-1000); } .pkt-form-input:not(:placeholder-shown):invalid + .pkt-form-validation, .pkt-form-textarea:not(:placeholder-shown):invalid + .pkt-form-validation { display: inherit; } .pkt-form-input:disabled, .pkt-form-input[readonly], .pkt-form-textarea:disabled, .pkt-form-textarea[readonly] { background-color: var(--pkt-color-brand-neutrals-200); border-color: var(--pkt-color-grays-gray-300); color: var(--pkt-color-grays-gray-300); cursor: inherit; }