Form Input
Basic input
Section titled “Basic input” <label class="label" for="text">Text</label> <input class="input" type="text" id="text" placeholder="Text …" />
<label class="label" for="disabled">Disabled</label> <input class="input" type="text" id="disabled" placeholder="Disabled …" disabled />
<label class="label" for="email">Email</label> <input class="input" type="email" id="email" placeholder="Email …" />
<label class="label" for="tel">tel</label> <input class="input" type="tel" id="tel" placeholder="tel …" />
<label class="label" for="url">Url</label> <input class="input" type="url" id="url" placeholder="Url …" />
<label class="label" for="number">Number</label> <input class="input" type="number" id="number" placeholder="Number …" />
<label class="label" for="search">Search</label> <input class="input" type="search" id="search" placeholder="Search …" />
<label class="label" for="password">Password</label> <input class="input" type="password" id="password" placeholder="Password …" />
<label class="label" for="select">Select</label> <select class="input" id="select"> <option value="">Select a role</option> <option value="developer">Developer</option> <option value="designer">Designer</option> <option value="manager">Manager</option> </select>
<label class="label" for="multiple">Multiple</label> <select class="input" id="multiple" multiple> <option value="">Select a role</option> <option value="developer">Developer</option> <option value="designer">Designer</option> <option value="manager">Manager</option> </select>
<label class="label" for="textarea">Textarea</label> <textarea class="input" id="textarea" rows="4" placeholder="Textarea …"></textarea>
<label class="label" for="radio">Radio</label> <input class="input" type="radio" id="radio" />
<label class="label" for="checkbox">Checkbox</label> <input class="input" type="checkbox" id="checkbox" />
<label class="label" for="color">Colour</label> <input class="input" type="color" id="color" placeholder="Color …" />
<label class="label" for="date">Date</label> <input class="input" type="date" id="date" placeholder="Date …" />
<label class="label" for="datetime-local">Datetime local</label> <input class="input" type="datetime-local" id="datetime-local" placeholder="Datetime local …" />
<label class="label" for="month">Month</label> <input class="input" type="month" id="month" placeholder="Month …" />
<label class="label" for="week">Week</label> <input class="input" type="week" id="week" placeholder="Week …" />
<label class="label" for="time">Time</label> <input class="input" type="time" id="time" placeholder="Time …" />
<label class="label" for="file">File</label> <input class="input" type="file" id="file" placeholder="File …" />
<label class="label" for="range">Range</label> <input class="input" type="range" id="range" placeholder="Range …" />
<label class="label" for="output">Output</label> <output class="input" id="output" for="range"></output>
<label for="datalist" class="label">Datalist</label> <input class="input" list="options" id="datalist" placeholder="Type to search..." /> <datalist id="options"> <option value="San Francisco"></option> <option value="New York"></option> <option value="Seattle"></option> <option value="Los Angeles"></option> <option value="Chicago"></option> </datalist>
https://github.com/davidbrooksio/cwf-lite/blob/master/style/modules/form.css
Directorystyle
Directorymodules
- form.css
@layer cwf-modules { .input { appearance: var(--input-appearance, auto); background-color: var(--input-background-color, white); background-image: var(--input-background-image, none); background-repeat: var(--input-background-repeat, no-repeat); background-position: var(--input-background-position, 50% 50%); background-size: var(--input-background-size, 1rem); border-color: var(--input-border-color, LightGrey); border-radius: var(--input-border-radius, var(--size-2)); border-style: var(--input-border-style, solid); border-width: var(--input-border-width, 1px); box-shadow: var(--input-box-shadow, none); color: var(--input-color, inherit); cursor: var(--input-cursor, auto); font-weight: var(--input-font-weight, 400); height: var(--input-height, auto); line-height: var(--input-line-height, 1); margin: var(--input-margin-top, 0) var(--input-margin-right, 0) var(--input-margin-bottom, var(--size-3)) var(--input-margin-left, 0); min-height: var(--input-min-height, 0); min-width: var(--input-min-width, 0); outline: var(--input-outline, 0); padding: var(--input-padding-top, var(--size-3)) var(--input-padding-right, var(--size-5)) var(--input-padding-bottom, var(--size-3)) var(--input-padding-left, var(--size-5)); pointer-events: var(--input-pointer-events, initial); resize: var(--input-resize, initial); transition: var(--input-transition, all 0.2s ease-in-out); vertical-align: var(--input-vertical-align, initial); width: var(--input-width, 100%);
&::placeholder { color: var(--input-placeholder-color, LightGrey); }
&:disabled { background-color: var(--input-disabled-background-color, WhiteSmoke); pointer-events: var(--input-disabled-pointer-events, none); }
&:hover { border-color: var(--input-hover-border-color, grey); box-shadow: var(--input-hover-box-shadow, none); color: var(--input-hover-color, inherit); }
&:focus-visible, &:focus { border-color: var(--input-focus-border-color, grey); box-shadow: var( --input-focus-box-shadow, 0 0 0 0.25em hsl(from black h s l / 12.5%) ); color: var(--input-focus-color, inherit); }
/* --------------------------------- Select --------------------------------- */ &:is(select) { appearance: var(--input-select-appearance, none);
&:not([multiple]) { padding-right: var(--input-select-padding-right, var(--size-7)); background-image: var( --input-select-background-image, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e") ); background-position: var( --input-select-background-position, right 0.5em center ); background-size: var(--input-select-background-size, 1em); }
&[multiple] { padding: var(--input-select-multiple-padding-top, 0) var(--input-select-multiple-padding-right, 0) var(--input-select-multiple-padding-bottom, 0) var(--input-select-multiple-padding-left, 0);
& option { padding: var(--option-padding-top, var(--size-3)) var(--option-padding-right, var(--size-5)) var(--option-padding-bottom, var(--size-3)) var(--option-padding-left, var(--size-5)); } } }
/* -------------------------------- Textarea -------------------------------- */ &:is(textarea) { min-height: var(--input-textarea-min-height, var(--size-9)); resize: var(--input-textarea-resize, vertical); }
/* ---------------------------------- Color --------------------------------- */ &:is([type="color"]) { /* padding-y + line-height + 4px for some reason */ --input-color-size: calc(2ch + 1.15rem + 4px);
appearance: var(--input-color-appearance, none); width: var(--input-color-width, var(--input-color-size)); height: var(--input-color-height, var(--input-color-size)); padding: var(--input-color-padding-top, 0.5ch) var(--input-color-padding-right, 0.5ch) var(--input-color-padding-bottom, 0.5ch) var(--input-color-padding-left, 0.5ch);
&::-webkit-color-swatch-wrapper { padding: 0; } }
/* ---------------------------------- Range --------------------------------- */ &:is([type="range"]) { &:focus-visible, &:focus { box-shadow: var(--input-range-focus-box-shadow, none); } }
/* -------------------------------- Checkbox -------------------------------- */ &:is([type="checkbox"]) { appearance: var(--input-checkbox-appearance, none); padding: var(--input-checkbox-padding-top, var(--size-3)) var(--input-checkbox-padding-right, var(--size-3)) var(--input-checkbox-padding-bottom, var(--size-3)) var(--input-checkbox-padding-left, var(--size-3)); width: var(--input-checkbox-width, 1em); height: var(--input-checkbox-height, 1em); background-image: var(--input-checkbox-background-image, none); background-size: var(--input-checkbox-checked-background-size, 100%);
&:checked { background-color: var( --input-checkbox-checked-background-color, DimGrey ); background-image: var( --input-checkbox-checked-background-image, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e") ); } }
/* ---------------------------------- Radio --------------------------------- */ &:is([type="radio"]) { appearance: var(--input-radio-appearance, none); border-radius: var(--input-radio-border-radius, 50%); padding: var(--input-radio-padding-top, var(--size-3)) var(--input-radio-padding-right, var(--size-3)) var(--input-radio-padding-bottom, var(--size-3)) var(--input-radio-padding-left, var(--size-3)); width: var(--input-radio-width, 1em); height: var(--input-radio-height, 1em); background-image: var(--input-radio-background-image, none); background-size: var(--input-radio-background-size, 100%);
&:checked { background-image: var( --input-radio-checked-background-image, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e") ); background-color: var(--input-radio-checked-background-color, DimGrey); } }
/* ---------------------------------- File ---------------------------------- */ &:is([type="file"]) { appearance: var(--input-file-appearance, none); cursor: var(--input-file-cursor, pointer);
&::-webkit-file-upload-button, &::file-selector-button { -webkit-appearance: button; -webkit-margin-end: var(--input-file-button-margin-end, var(--size-5));
padding: var(--input-file-button-padding-top, var(--size-3)) var(--input-file-button-padding-right, var(--size-5)) var(--input-file-button-padding-bottom, var(--size-3)) var(--input-file-button-padding-left, var(--size-5)); margin: var(--input-file-button-margin-y, calc(var(--size-3) * -1)) var(--input-file-button-margin-x, calc(var(--size-5) * -1)); margin-inline-end: var( --input-file-button-margin-inline-end, var(--size-5) ); color: var(--input-file-button-color, inherit); background: var(--input-file-button-background, WhiteSmoke); pointer-events: var(--input-file-button-pointer-events, none); border-color: var(--input-file-button-border-color, inherit); border-style: var(--input-file-button-border-style, solid); border-width: var(--input-file-button-border-width, 0); border-inline-end-width: var( --input-file-button-border-inline-end-width, 1px ); border-radius: var(--input-file-button-border-radius, 0); } }
/* --------------------------------- Search --------------------------------- */ &:is([type="search"]) { border-radius: var(--input-search-border-radius, 99rem); }
/* --------------------------------- Output --------------------------------- */ &:is(output) { display: var(--input-output-display, block);
/* Fix for output height */ &::before { content: ""; display: inline-block; vertical-align: middle; height: 100%; pointer-events: none; } }
/* ---------------------------------- List ---------------------------------- */ &:is([list]) { appearance: var(--input-list-appearance, none); padding-right: var(--input-list-padding-right, var(--size-7)); background-image: var( --input-list-background-image, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e") ); background-position: var( --input-list-background-position, right 0.5em center ); background-size: var(--input-list-background-size, 1em);
&::-webkit-calendar-picker-indicator { display: none !important; } } }
/* ---------------------------------- Label --------------------------------- */ .label { display: var(--label-display, inline-flex); color: var(--label-color, inherit); font-weight: var(--label-font-weight, 400); margin: var(--label-margin-top, 0) var(--label-margin-right, 0) var(--label-margin-bottom, var(--size-1)) var(--label-margin-left, 0); width: var(--label-width, 100%); }}