@contensis/forms
Version:
Render Contensis Forms with React
582 lines • 17.6 kB
CSS
/* src/themes/contensis.css */
:root {
--global-font-family: system-ui, sans-serif;
--global-font-size: 1rem;
--global-font-weight-bold: 600;
--global-font-size-label: 1.1875rem;
--color-accent: #00857e;
--color-border: #949494;
--color-border-subtle: #dbdbdb;
--color-error: #d4351c;
--color-focus: #4c9aff;
--color-progress: var(--color-accent);
--color-bg-light: #fff;
--color-bg-subtle: #fafafa;
--color-text: #444;
--color-text-subtle: #595959;
--color-text-title: var(--color-text);
--color-text-description: var(--color-text-subtle);
--color-text-label: var(--color-text);
--color-text-hint: var(--color-text-subtle);
--color-text-error: var(--color-error);
--size-outline: 0.1875rem;
--size-border: 0.1875rem;
--size-border-small: 0.125rem;
--size-border-large: 0.375rem;
--size-border-radius: 0.1875rem;
--form-bg-color: var(--color-bg-subtle);
--form-border-radius: var(--size-border-radius);
--form-width: calc(68ch + 2ch + 0.125em);
--form-text-size-title: calc(var(--global-font-size) * 2);
--form-text-size-subtitle: calc(var(--global-font-size) * 1.5);
--form-text-size-description: var(--global-font-size);
--form-text-size-toolbar-title: var(--global-font-size);
--form-text-size-toolbar-small: calc(14 / var(--global-font-size));
--form-current-page-title-font-size: var(--form-text-size-subtitle);
--form-current-page-description-font-size: var(--form-text-size-description);
--form-progress-label-color: var(--color-text-label);
--form-progress-label-font-size: var(--global-font-size);
--form-progress-bar-bg-color: #fff;
--form-progress-value-bg-color: var(--color-progress);
--form-progress-border-radius: var(--size-dimension-8);
--form-field-text-color: var(--color-text);
--form-field-bg-color: var(--color-bg-light);
--form-field-hover-bg-color: #effefc;
--form-field-error-bg-color: #f9d7d7;
--form-field-border-color: var(--color-border);
--form-field-border-focus-color: var(--color-accent);
--form-field-border-error-color: var(--color-error);
--form-field-border-width: var(--size-border-small);
--form-field-border-radius: var(--size-border-radius);
--form-field-padding: var(--size-space-8);
--form-field-border-width-error: var(--size-dimension-4);
--btn-background: var(--color-bg-light);
--btn-text-color: var(--color-text);
--btn-font-size: var(--global-font-size);
--btn-font-weight: var(--global-font-weight-bold);
--btn-padding-block: var(--size-space-8);
--btn-padding-inline: var(--size-space-12);
--btn-border-color: var(--color-border);
--btn-border-radius: var(--size-border-radius);
--btn-border-width: var(--size-border);
--btn-primary-bg-color: var(--color-accent);
--btn-primary-bg-color-hover: #006c67;
--btn-primary-bg-color-focus: #006c67;
--btn-primary-bg-color-disabled: #949494;
--btn-primary-border-color: var(--color-accent);
--btn-primary-border-color-hover: #006c67;
--btn-primary-border-color-focus: #006c67;
--btn-primary-border-color-disabled: #949494;
--btn-primary-text-color: #fff;
--btn-primary-text-color-hover: #fff;
--btn-primary-text-color-focus: #fff;
--btn-primary-text-color-disabled: #fff;
--btn-secondary-bg-color: #ffffff;
--btn-secondary-bg-color-hover: #f0f0f0;
--btn-secondary-bg-color-focus: #ffffff;
--btn-secondary-bg-color-disabled: #949494;
--btn-secondary-border-color: #dbdbdb;
--btn-secondary-border-color-hover: #dbdbdb;
--btn-secondary-border-color-focus: #dbdbdb;
--btn-secondary-border-color-disabled: #c9c9c9;
--btn-secondary-text-color: #262626;
--btn-secondary-text-color-hover: #262626;
--btn-secondary-text-color-focus: #262626;
--btn-secondary-text-color-disabled: #ffffff;
--text-preset-5: 1rem;
--text-preset-6: 0.875rem;
--size-space-4: 0.25rem;
--size-space-8: 0.5rem;
--size-space-12: 0.75rem;
--size-space-16: 1rem;
--size-space-24: 1.5rem;
--size-space-32: 2rem;
--size-dimension-4: 0.25rem;
--size-dimension-8: 0.5rem;
--size-dimension-24: 1.5rem;
--size-dimension-32: 2rem;
--size-dimension-40: 2.5rem;
--size-width-25: 25%;
--size-width-33: 33.33%;
--size-width-50: 50%;
--size-width-66: 66.66%;
--size-width-75: 75%;
--size-width-100: 100%;
--size-width-ch-2: calc(2ch + 2ch + var(--size-border));
--size-width-ch-3: calc(3ch + 2ch + var(--size-border));
--size-width-ch-4: calc(4ch + 2ch + var(--size-border));
--size-width-ch-5: calc(5ch + 2ch + var(--size-border));
--size-width-ch-10: calc(10ch + 2ch + var(--size-border));
--size-width-ch-20: calc(20ch + 2ch + var(--size-border));
--size-width-ch-30: calc(30ch + 2ch + var(--size-border));
}
*,
::after,
::before {
box-sizing: border-box;
}
.visually-hidden {
display: none;
}
html {
background-color: var(--color-bg-subtle);
font-family: var(--global-font-family);
color: var(--color-text);
font-size: var(--global-font-size);
}
* {
margin: 0;
}
body {
line-height: 1.5;
-webkit-font-smoothing: antialiased;
}
img,
picture,
video,
canvas,
svg {
display: block;
max-inline-size: 100%;
}
input,
button,
textarea,
select {
font: inherit;
}
p,
h1,
h2,
h3,
h4,
h5,
h6 {
overflow-wrap: break-word;
}
.form {
--background-color: var(--form-bg-color);
--font-size: var(--global-font-size);
--border-radius: var(--form-border-radius);
--width: var(--form-width);
display: flex;
flex-direction: column;
background-color: var(--background-color);
font-size: var(--font-size);
border-radius: var(--border-radius);
margin: 3em auto;
inline-size: var(--size-width-100);
max-inline-size: var(--width);
}
label,
legend {
padding: 0;
}
.form-load-error {
color: var(--color-text-error);
}
.form-header {
padding-block-end: var(--size-space-24);
}
.form-title {
font-size: var(--form-text-size-title);
padding-block-end: var(--size-space-8);
color: var(--color-text-title);
}
.form-description {
font-size: var(--form-text-size-description);
color: var(--color-text-description);
}
.form-current-page {
display: flex;
flex-direction: column;
gap: var(--size-space-32);
}
.form-current-page-header {
display: flex;
flex-direction: column;
gap: var(--size-space-8);
}
.form-current-page-title {
--font-size: var(--form-current-page-title-font-size);
--font-weight: var(--global-font-weight-bold);
font-size: var(--font-size);
font-weight: var(--font-weight);
margin: 0;
color: var(--color-text-title);
}
.form-current-page-description {
--font-size: var(--form-current-page-description-font-size);
font-size: var(--font-size);
color: var(--color-text-description);
& p {
margin: 0;
}
}
.form-fields-container {
display: flex;
flex-direction: column;
gap: var(--size-space-32);
}
.form-fieldset {
display: flex;
flex-direction: column;
gap: var(--size-space-4);
border: none;
padding: 0;
}
.form-fieldset-has-error {
border-inline-start: var(--form-field-border-width-error) solid var(--color-error);
padding-inline-start: var(--size-space-16);
& .form-field-label-required,
& .form-field-legend-required {
color: var(--color-error);
}
}
.form-field {
display: flex;
flex-direction: column;
gap: var(--size-space-4);
}
.form-field-has-error {
border-inline-start: var(--form-field-border-width-error) solid var(--color-error);
padding-inline-start: var(--size-space-16);
& .form-field-label-required,
& .form-field-legend-required {
color: var(--color-error);
}
}
.form-field-label,
.form-field-legend {
font-size: var(--global-font-size-label);
color: var(--color-text-label);
font-weight: var(--global-font-weight-bold);
display: block;
text-wrap: pretty;
}
.form-field-legend {
margin-block-end: var(--size-space-4);
}
.form-field-error {
color: var(--color-text-error);
font-weight: var(--global-font-weight-bold);
}
.form-field-label-required,
.form-field-legend-required {
text-decoration: none;
}
.form-field-instructions {
color: var(--color-text-subtle);
line-height: 1.5;
margin-block-end: var(--size-space-8);
text-wrap: pretty;
& p {
margin: 0;
}
}
.form-checkbox-field {
display: flex;
flex-direction: column;
gap: var(--size-space-4);
}
.form-checkbox-field-has-error {
border-inline-start: var(--form-field-border-width-error) solid var(--color-error);
padding-inline-start: var(--size-space-16);
}
.form-checkbox-field-label,
.form-checkbox-field-legend {
font-size: var(--global-font-size-label);
color: var(--color-text-label);
font-weight: var(--global-font-weight-bold);
margin-inline-start: var(--size-space-12);
align-self: center;
}
.form-checkbox-field-label-required {
text-decoration: none;
}
.form-checkbox-field-error {
color: var(--color-text-error);
font-weight: var(--global-font-weight-bold);
}
.form-checkbox-field-instructions {
color: var(--color-text-subtle);
line-height: 1.5;
margin-block-end: var(--size-space-8);
}
.form-validation-summary {
border: var(--size-border) solid var(--color-error);
background-color: var(--color-bg-light);
padding: var(--size-space-16);
&:focus {
outline: var(--size-outline) solid var(--color-focus);
outline-offset: 0;
}
}
.form-validation-summary-title {
font-size: var(--form-text-size-subtitle);
margin-block-start: 0;
}
.form-validation-summary-list {
color: var(--color-text-error);
font-weight: var(--global-font-weight-bold);
list-style-type: none;
padding-inline-start: 0;
margin: 0;
& a {
color: var(--color-text-error);
}
}
.form-footer {
display: flex;
justify-content: space-between;
}
.form-footer-page {
align-self: center;
}
.form-actions {
display: flex;
gap: var(--size-space-16);
justify-content: flex-end;
padding-block: var(--size-space-32);
}
.form-button {
border: var(--btn-border-width) solid var(--btn-border-color);
border-radius: var(--btn-border-radius);
padding: var(--btn-padding-block) var(--btn-padding-inline);
font-size: var(--btn-font-size);
font-weight: var(--btn-font-weight);
&:focus {
outline: var(--size-outline) solid var(--color-focus);
outline-offset: 0;
}
}
.form-button--primary {
background-color: var(--btn-primary-bg-color);
color: var(--btn-primary-text-color);
border-color: var(--btn-primary-border-color);
&:hover {
background-color: var(--btn-primary-bg-color-hover);
border-color: var(--btn-primary-border-color-hover);
color: var(--btn-primary-text-color-hover);
}
&:focus {
background-color: var(--btn-primary-bg-color-focus);
border-color: var(--btn-primary-border-color-focus);
color: var(--btn-primary-text-color-focus);
}
&:disabled {
background-color: var(--btn-primary-bg-color-disabled);
color: var(--btn-primary-text-color-disabled);
border-color: var(--btn-primary-border-color-disabled);
}
}
.form-button--secondary {
background-color: var(--btn-secondary-bg-color);
color: var(--btn-secondary-text-color);
border-color: var(--btn-secondary-border-color);
&:hover {
background-color: var(--btn-secondary-bg-color-hover);
border-color: var(--btn-secondary-border-color-hover);
color: var(--btn-secondary-text-color-hover);
}
&:focus {
background-color: var(--btn-secondary-bg-color-focus);
border-color: var(--btn-secondary-border-color-focus);
color: var(--btn-secondary-text-color-focus);
}
&:disabled {
background-color: var(--btn-secondary-bg-color-disabled);
color: var(--btn-secondary-text-color-disabled);
border-color: var(--btn-secondary-border-color-disabled);
}
}
.form-text-input,
.form-email-input,
.form-tel-input,
.form-url-input,
.form-select-input,
.form-multiline-input,
.form-integer-input,
.form-decimal-input,
.form-date-input,
.form-date-time-input,
.form-time-input,
.form-date-day-input,
.form-date-month-input,
.form-date-year-input,
.form-date-hour-input,
.form-date-minute-input {
--width: var(--size-width-100);
padding: var(--form-field-padding);
inline-size: var(--width);
border: var(--form-field-border-width) solid var(--form-field-border-color);
border-radius: var(--form-field-border-radius);
min-block-size: var(--size-dimension-40);
font-size: var(--global-font-size);
background-color: var(--form-field-bg-color);
&:hover {
background-color: var(--form-field-hover-bg-color);
}
}
.form-text-input:focus,
.form-email-input:focus,
.form-tel-input:focus,
.form-url-input:focus,
.form-select-input:focus,
.form-radio-input:focus,
.form-checkbox-input:focus,
.form-multiline-input:focus,
.form-integer-input:focus,
.form-decimal-input:focus,
.form-date-input:focus,
.form-date-time-input:focus,
.form-time-input:focus,
.form-date-day-input:focus,
.form-date-month-input:focus,
.form-date-year-input:focus,
.form-date-hour-input:focus,
.form-date-minute-input:focus {
outline: var(--size-outline) solid var(--color-focus);
outline-offset: 0;
box-shadow: inset 0 0 0 0.0625em var(--form-field-border-focus-color);
border-color: var(--form-field-border-focus-color);
}
.form-text-input.form-text-input-has-error,
.form-email-input.form-email-input-has-error,
.form-tel-input.form-tel-input-has-error,
.form-url-input.form-url-input-has-error,
.form-select-input.form-select-input-has-error,
.form-multiline-input.form-multiline-input-has-error,
.form-integer-input.form-integer-input-has-error,
.form-decimal-input.form-decimal-input-has-error,
.form-date-input.form-date-input-has-error,
.form-date-time-input.form-date-time-input-has-error,
.form-time-input.form-time-input-has-error,
.form-date-day-input.form-date-day-input-has-error,
.form-date-month-input.form-date-month-input-has-error,
.form-date-year-input.form-date-year-input-has-error,
.form-date-hour-input.form-date-hour-input-has-error,
.form-date-minute-input.form-date-minute-input-has-error {
border: var(--form-field-border-width) solid var(--color-error);
box-shadow: inset 0 0 0 0.0625em var(--form-field-border-error-color);
background-color: var(--form-field-error-bg-color);
}
.form-select-input {
-webkit-appearance: none;
background-image: url(data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%23000000%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E);
background-repeat: no-repeat, repeat;
background-position: right 0.7em top 50%, 0 0;
background-size: 0.65em auto, 100%;
background-color: var(--form-field-bg-color);
padding-inline-end: var(--size-space-32);
}
.form-radio-list {
display: flex;
flex-direction: column;
gap: var(--size-space-16);
}
.form-radio {
display: flex;
}
.form-radio-label {
margin-inline-start: var(--size-space-12);
align-self: center;
}
.form-radio-input {
inline-size: var(--size-dimension-32);
block-size: var(--size-dimension-32);
border: var(--form-field-border-width) solid var(--form-field-border-color);
accent-color: var(--color-accent);
margin: 0;
}
.form-checkbox-list {
display: flex;
flex-direction: column;
gap: var(--size-space-16);
}
.form-checkbox {
display: flex;
}
.form-checkbox-label {
margin-inline-start: var(--size-space-12);
align-self: center;
}
.form-checkbox-input {
inline-size: var(--size-dimension-32);
block-size: var(--size-dimension-32);
border: var(--form-field-border-width) solid var(--form-field-border-color);
accent-color: var(--color-accent);
margin: 0;
}
.form-date-item {
display: inline-block;
}
.form-date-day-input,
.form-date-hour-input,
.form-date-minute-input {
max-inline-size: var(--size-width-ch-2);
}
.form-date-month-input {
max-inline-size: var(--size-width-ch-3);
}
.form-date-year-input {
max-inline-size: var(--size-width-ch-4);
}
.form-time-input {
max-inline-size: var(--size-width-ch-10);
}
.form-date-input {
max-inline-size: var(--size-width-ch-20);
}
.form-date-time-input {
max-inline-size: var(--size-width-ch-30);
}
.form-progress {
display: flex;
flex-direction: column;
gap: var(--size-space-4);
padding-block-end: var(--size-space-24);
}
.form-progress-label {
font-size: var(--form-progress-label-font-size);
font-weight: var(--global-font-weight-bold);
color: var(--form-progress-label-color);
}
progress[value] {
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
border: none;
block-size: var(--size-dimension-8);
border-radius: var(--form-progress-border-radius);
background: var(--form-progress-bar-bg-color);
inline-size: var(--size-width-100);
}
progress[value]::-webkit-progress-bar {
border-radius: var(--form-progress-border-radius);
background: var(--form-progress-bar-bg-color);
}
progress[value]::-webkit-progress-value {
border-radius: var(--form-progress-border-radius);
background: var(--form-progress-value-bg-color);
}
progress[value]::-moz-progress-bar {
border-radius: var(--form-progress-border-radius);
background: var(--form-progress-value-bg-color);
}
.field-char-count {
}
.field-char-count-error {
color: var(--color-text-error);
font-weight: var(--global-font-weight-bold);
}
[dir=rtl] {
& .form-tel-input,
& .form-email-input {
text-align: end;
}
& .form-select-input {
background-position: left 0.7em top 50%, 0 0;
}
}
/*# sourceMappingURL=contensis-forms.css.map */