UNPKG

@codegouvfr/react-dsfr

Version:

French State Design System React integration library

223 lines (184 loc) 6.61 kB
/*! * DSFR v1.8.5 | SPDX-License-Identifier: MIT | License-Filename: LICENSE.md | restricted use (see terms and conditions) */ @charset "UTF-8"; /* ¯¯¯¯¯¯¯¯¯ *\ INPUT \* ˍˍˍˍˍˍˍˍˍ */ .fr-input { display: block; width: 100%; border-radius: 0.25rem 0.25rem 0 0; font-size: 1rem; line-height: 1.5rem; padding: 0.5rem 1rem; /** * Style du placeholder */ /** * On applique une hauteur maximale si l'élément n'est pas un textarea */ color: var(--text-label-grey); background-color: var(--background-contrast-grey); --idle: transparent; --hover: var(--background-contrast-grey-hover); --active: var(--background-contrast-grey-active); box-shadow: inset 0 -2px 0 0 var(--border-plain-grey); } .fr-input::placeholder { opacity: 1; font-style: italic; color: var(--text-mention-grey); } .fr-input:not(textarea) { max-height: 2.5rem; } .fr-input[type=date] { min-height: 2.5rem; background-repeat: no-repeat; background-position: calc(100% - 0.75rem) 50%; background-size: 1rem 1rem; --data-uri-svg: url("data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' x='0px' y='0px' viewBox='0 0 24 24'><path fill='%23161616' d='M17 3h4c.55 0 1 .45 1 1v16c0 .55-.45 1-1 1H3c-.55 0-1-.45-1-1V4c0-.55.45-1 1-1h4V1h2v2h6V1h2v2zm-2 2H9v2H7V5H4v4h16V5h-3v2h-2V5zm5 6H4v8h16v-8z'/></svg>"); background-image: var(--data-uri-svg); } .fr-input[type=date]::-webkit-calendar-picker-indicator { display: block; margin-right: -0.375rem; opacity: 0; } /** * Ajout d'un wrapper quand on a besoin de mettre une icône */ .fr-input-wrap { position: relative; display: block; } .fr-input-wrap[class^=fr-icon-]::before, .fr-input-wrap[class*=" fr-icon-"]::before, .fr-input-wrap[class^=fr-fi-]::before, .fr-input-wrap[class*=" fr-fi-"]::before { --icon-size: 1rem; position: absolute; top: 0.75rem; right: 0.75rem; bottom: 0.75rem; margin: auto; pointer-events: none; } .fr-input-wrap--addon { display: flex; flex-direction: row; width: 100%; } .fr-input-wrap .fr-input { padding-right: 2.5rem; } .fr-input-wrap > *:first-child:not(:last-child).fr-input { padding-right: 1rem; } .fr-input-wrap + .fr-hint-text { margin-top: 1rem; } .fr-input-group .fr-message:first-child { margin-top: 0.5rem; } textarea.fr-input { min-height: 3.75rem; } .fr-input:disabled { color: var(--text-disabled-grey); box-shadow: inset 0 -2px 0 0 var(--border-disabled-grey); } .fr-input:autofill, .fr-input:autofill:hover, .fr-input:autofill:focus, .fr-input:-webkit-autofill, .fr-input:-webkit-autofill:hover, .fr-input:-webkit-autofill:focus { box-shadow: inset 0 -2px 0 0 var(--border-plain-grey), inset 0 0 0 1000px var(--background-contrast-info); -webkit-text-fill-color: var(--text-label-grey); } :root:where([data-fr-theme="dark"]) .fr-input[type=date] { --data-uri-svg: url("data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' x='0px' y='0px' viewBox='0 0 24 24'><path fill='%23fff' d='M17 3h4c.55 0 1 .45 1 1v16c0 .55-.45 1-1 1H3c-.55 0-1-.45-1-1V4c0-.55.45-1 1-1h4V1h2v2h6V1h2v2zm-2 2H9v2H7V5H4v4h16V5h-3v2h-2V5zm5 6H4v8h16v-8z'/></svg>"); } .fr-input[type=date]:disabled { --data-uri-svg: url("data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' x='0px' y='0px' viewBox='0 0 24 24'><path fill='%23929292' d='M17 3h4c.55 0 1 .45 1 1v16c0 .55-.45 1-1 1H3c-.55 0-1-.45-1-1V4c0-.55.45-1 1-1h4V1h2v2h6V1h2v2zm-2 2H9v2H7V5H4v4h16V5h-3v2h-2V5zm5 6H4v8h16v-8z'/></svg>"); background-image: var(--data-uri-svg); color: var(--text-disabled-grey); box-shadow: inset 0 -2px 0 0 var(--border-disabled-grey); } :root:where([data-fr-theme="dark"]) .fr-input[type=date]:disabled { --data-uri-svg: url("data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' x='0px' y='0px' viewBox='0 0 24 24'><path fill='%23666' d='M17 3h4c.55 0 1 .45 1 1v16c0 .55-.45 1-1 1H3c-.55 0-1-.45-1-1V4c0-.55.45-1 1-1h4V1h2v2h6V1h2v2zm-2 2H9v2H7V5H4v4h16V5h-3v2h-2V5zm5 6H4v8h16v-8z'/></svg>"); } .fr-fieldset--valid .fr-input, .fr-input-group--valid .fr-input { box-shadow: inset 0 -2px 0 0 var(--border-plain-success); } .fr-fieldset--error .fr-input, .fr-input-group--error .fr-input { box-shadow: inset 0 -2px 0 0 var(--border-plain-error); } .fr-input-wrap > *:not(:last-child).fr-input:not(.fr-input--valid):not(.fr-input--error) { box-shadow: inset 0 -2px 0 0 var(--border-action-high-blue-france); } @media (min-width: 36em) { /*! media sm */ /*! media sm */ } @media (min-width: 48em) { /*! media md */ .fr-input-wrap > *:first-child:not(:last-child) { border-radius: 0.25rem 0 0 0; } .fr-input-wrap > *:last-child:not(:first-child) { border-radius: 0 0.25rem 0 0; } /*! media md */ } @media (min-width: 62em) { /*! media lg */ /*! media lg */ } @media (min-width: 78em) { /*! media xl */ /*! media xl */ } @media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { .fr-input-wrap--addon .fr-btn { flex-shrink: 0; } .fr-input { color: #161616; background-color: #eee; box-shadow: inset 0 -2px 0 0 #3a3a3a; } .fr-input::placeholder { color: #666; } .fr-input:autofill, .fr-input:autofill:hover, .fr-input:autofill:focus, .fr-input:-webkit-autofill, .fr-input:-webkit-autofill:hover, .fr-input:-webkit-autofill:focus { box-shadow: inset 0 -2px 0 0 #3a3a3a, inset 0 0 0 1000px #e8edff; -webkit-text-fill-color: #161616; } .fr-input[type=date] { background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' x='0px' y='0px' viewBox='0 0 24 24'%3E%3Cpath fill='%23161616' d='M17 3h4c.55 0 1 .45 1 1v16c0 .55-.45 1-1 1H3c-.55 0-1-.45-1-1V4c0-.55.45-1 1-1h4V1h2v2h6V1h2v2zm-2 2H9v2H7V5H4v4h16V5h-3v2h-2V5zm5 6H4v8h16v-8z'/%3E%3C/svg%3E"); } .fr-input[type=date]:disabled { background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' x='0px' y='0px' viewBox='0 0 24 24'%3E%3Cpath fill='%23929292' d='M17 3h4c.55 0 1 .45 1 1v16c0 .55-.45 1-1 1H3c-.55 0-1-.45-1-1V4c0-.55.45-1 1-1h4V1h2v2h6V1h2v2zm-2 2H9v2H7V5H4v4h16V5h-3v2h-2V5zm5 6H4v8h16v-8z'/%3E%3C/svg%3E"); } .fr-fieldset--valid .fr-input, .fr-input-group--valid .fr-input { box-shadow: inset 0 -2px 0 0 #18753c; } .fr-fieldset--error .fr-input, .fr-input-group--error .fr-input { box-shadow: inset 0 -2px 0 0 #ce0500; } .fr-input-wrap > *:not(:last-child).fr-input:not(.fr-input--valid):not(.fr-input--error) { box-shadow: inset 0 -2px 0 0 #000091; } }