UNPKG

@codegouvfr/react-dsfr

Version:

French State Design System React integration library

566 lines (463 loc) 10.9 kB
/*! * DSFR v1.8.5 | SPDX-License-Identifier: MIT | License-Filename: LICENSE.md | restricted use (see terms and conditions) */ @charset "UTF-8"; /* ¯¯¯¯¯¯¯¯¯ *\ CARD \* ˍˍˍˍˍˍˍˍˍ */ .fr-card { display: flex; flex-direction: column; position: relative; background-color: var(--background-default-grey); --idle: transparent; --hover: var(--background-default-grey-hover); --active: var(--background-default-grey-active); } .fr-card::before, .fr-card::after { flex: 0 0 auto; display: inline-block; vertical-align: calc((0.75em - var(--icon-size)) * 0.5); background-color: currentColor; width: var(--icon-size); height: var(--icon-size); -webkit-mask-size: 100% 100%; mask-size: 100% 100%; -webkit-mask-image: url("../../icons/system/arrow-right-line.svg"); mask-image: url("../../icons/system/arrow-right-line.svg"); --icon-size: 1.5rem; } .fr-card::before { content: ""; position: absolute; right: 2rem; bottom: 2rem; color: var(--text-action-high-blue-france); } .fr-card--no-icon::before, .fr-card:not(.fr-enlarge-link)::before { content: none; } .fr-card::before::before, .fr-card::before::after { --icon-size: 1.5rem; } .fr-card__body { display: flex; flex-direction: column; flex: 1 1 auto; order: 2; padding: 0 2rem; } .fr-grid-row .fr-card { height: 100%; } .fr-card__header { order: 1; position: relative; flex: 0 0 auto; } .fr-card__header .fr-badges-group { position: absolute; top: 0; left: 0; padding: 0.75rem; } .fr-card.fr-enlarge-link:hover .fr-card__img, .fr-card.fr-enlarge-link:hover .fr-card__vid { --brightness: calc(100% + var(--brighten) * 10%); } .fr-card.fr-enlarge-link:active .fr-card__img, .fr-card.fr-enlarge-link:active .fr-card__vid { --brightness: calc(100% + var(--brighten) * 20%); } .fr-card__img, .fr-card__vid { filter: brightness(var(--brightness)); } .fr-card__img img, .fr-card__img svg, .fr-card__vid iframe, .fr-card__vid video { aspect-ratio: 1.7777777778; object-fit: cover; object-position: 50% 50%; } .fr-card__img img { display: block; } .fr-card__content { order: 1; display: flex; flex-direction: column; padding: 2rem; height: 100%; margin: 0 -2rem; } .fr-card__content .fr-tag { font-size: 0.75rem; line-height: 1.25rem; min-height: 1.5rem; padding: 0.125rem 0.5rem; border-radius: 0.75rem; } .fr-card__content .fr-tag::before, .fr-card__content .fr-tag::after { --icon-size: 0.75rem; } .fr-card__title { order: 2; font-size: 1.25rem; line-height: 1.75rem; font-weight: 700; margin-bottom: 0; color: var(--text-title-grey); } .fr-card__title [target=_blank]::after { --icon-size: 1.5rem; } .fr-card__desc { order: 3; font-size: 0.875rem; line-height: 1.5rem; margin-top: 0.75rem; margin-bottom: 0; } .fr-card__start { order: 1; margin-bottom: 0.25rem; } .fr-card__start .fr-badges-group, .fr-card__start .fr-tags-group { margin-bottom: 0.25rem; } .fr-card__start .fr-card__detail { margin-bottom: 0.75rem; } .fr-card__end { order: 4; display: flex; flex-direction: column; margin-top: 1rem; padding-top: 0.5rem; height: 100%; } .fr-card__detail { font-size: 0.75rem; line-height: 1.25rem; display: flex; flex-direction: row; align-items: flex-start; margin-bottom: 0; color: var(--text-mention-grey); } .fr-card__detail[class^=fr-icon-]::before, .fr-card__detail[class*=" fr-icon-"]::before, .fr-card__detail[class^=fr-fi-]::before, .fr-card__detail[class*=" fr-fi-"]::before { --icon-size: 1rem; margin-right: 0.5rem; } .fr-card.fr-enlarge-link:not(.fr-card--no-icon) .fr-card__end { margin-bottom: -3rem; min-height: 2rem; padding-right: 2rem; justify-content: flex-end; } .fr-card.fr-enlarge-link:not(.fr-card--no-icon) .fr-card__content { padding-bottom: 5rem; } .fr-card__footer { order: 2; padding: 0.5rem 2rem 2rem; margin: 0 -2rem; } .fr-card__footer .fr-btns-group, .fr-card__footer .fr-links-group { margin-bottom: -1rem; } .fr-card--sm::before { right: 1.5rem; bottom: 1.5rem; } .fr-card--sm::before::before, .fr-card--sm::before::after { --icon-size: 1rem; } .fr-card--sm .fr-card__header .fr-badge { font-size: 0.75rem; line-height: 1.25rem; min-height: 1.125rem; padding: 0 0.375rem; } .fr-card--sm .fr-card__header .fr-badge::before, .fr-card--sm .fr-card__header .fr-badge::after { --icon-size: 0.75rem; } .fr-card--sm .fr-card__content { padding: 1.5rem; } .fr-card--sm .fr-card__content .fr-badge { font-size: 0.75rem; line-height: 1.25rem; min-height: 1.125rem; padding: 0 0.375rem; } .fr-card--sm .fr-card__content .fr-badge::before, .fr-card--sm .fr-card__content .fr-badge::after { --icon-size: 0.75rem; } .fr-card--sm .fr-card__title { font-weight: 700; font-size: 1.125rem; line-height: 1.5rem; } .fr-card--sm .fr-card__desc { margin-top: 0.5rem; } .fr-card--sm .fr-card__start .fr-badges-group, .fr-card--sm .fr-card__start .fr-tags-group { margin-bottom: 0; } .fr-card--sm .fr-card__start .fr-card__detail { margin-bottom: 0.5rem; } .fr-card--sm .fr-card__end { margin-top: 0.75rem; padding-top: 0.25rem; margin-top: 1.5rem; padding-top: 0.5rem; } .fr-card--sm.fr-enlarge-link:not(.fr-card--no-icon) .fr-card__end { margin-bottom: -2rem; min-height: 1.25rem; padding-right: 1.5rem; } .fr-card--sm.fr-enlarge-link:not(.fr-card--no-icon) .fr-card__content { padding-bottom: 3.5rem; } .fr-card--sm .fr-card__footer { padding: 0.5rem 1.5rem 1.5rem; } .fr-card--lg::before { right: 2.5rem; bottom: 2.5rem; } .fr-card--lg::before::before, .fr-card--lg::before::after { --icon-size: 2rem; } .fr-card--lg .fr-card__content { padding: 2.5rem; } .fr-card--lg .fr-card__content .fr-tag { font-size: 0.875rem; line-height: 1.5rem; min-height: 2rem; padding: 0.25rem 0.75rem; border-radius: 1rem; } .fr-card--lg .fr-card__content .fr-tag::before, .fr-card--lg .fr-card__content .fr-tag::after { --icon-size: 1rem; } .fr-card--lg .fr-card__title { font-weight: 700; font-size: 1.375rem; line-height: 1.75rem; } .fr-card--lg .fr-card__desc { font-size: 1rem; line-height: 1.5rem; margin-top: 1rem; } .fr-card--lg .fr-card__start { margin-bottom: 0.5rem; } .fr-card--lg .fr-card__start .fr-badges-group, .fr-card--lg .fr-card__start .fr-tags-group { margin-bottom: 0.5rem; } .fr-card--lg .fr-card__start .fr-card__detail { margin-bottom: 1rem; } .fr-card--lg.fr-enlarge-link:not(.fr-card--no-icon) .fr-card__end { margin-bottom: -4rem; min-height: 2.5rem; padding-right: 2.5rem; } .fr-card--lg.fr-enlarge-link:not(.fr-card--no-icon) .fr-card__content { padding-bottom: 6.5rem; } .fr-card--lg .fr-card__footer { padding: 0.5rem 2.5rem 2.5rem; } .fr-card__body > .fr-card__detail, .fr-card__body > .fr-card__title { margin-top: 2rem; } .fr-card__body > .fr-card__detail { margin-bottom: -1rem; } .fr-card__body > .fr-card__desc, .fr-card__body > .fr-card__title { margin-bottom: 2rem; } .fr-card__body > .fr-card__desc { margin-top: -1rem; } .fr-card.fr-enlarge-link:not(.fr-card--no-arrow) .fr-card__body > .fr-card__desc, .fr-card.fr-enlarge-link:not(.fr-card--no-arrow) .fr-card__body > .fr-card__title { margin-bottom: 4.5rem; } .fr-card.fr-enlarge-link:not(.fr-card--no-arrow) .fr-card__body > .fr-card__desc { margin-top: -3.5rem; } .fr-card:not(.fr-card--no-border):not(.fr-card--shadow) { box-shadow: 0 0 0 1px var(--border-default-grey); } .fr-card--grey { background-color: var(--background-contrast-grey); --idle: transparent; --hover: var(--background-contrast-grey-hover); --active: var(--background-contrast-grey-active); } .fr-card--shadow { z-index: calc(var(--ground) + 500); background-color: var(--background-raised-grey); --idle: transparent; --hover: var(--background-raised-grey-hover); --active: var(--background-raised-grey-active); filter: drop-shadow(var(--raised-shadow)); } .fr-card--shadow.fr-card--grey { background-color: var(--background-contrast-raised-grey); --idle: transparent; --hover: var(--background-contrast-raised-grey-hover); --active: var(--background-contrast-raised-grey-active); } .fr-card--no-background { background-color: transparent; --hover: inherit; --active: inherit; } @media (min-width: 36em) { /*! media sm */ /*! media sm */ } @media (min-width: 48em) { /*! media md */ .fr-card__title { font-size: 1.375rem; line-height: 1.75rem; } .fr-card--sm .fr-card__title { font-size: 1.25rem; line-height: 1.75rem; } .fr-card--lg .fr-card__title { font-size: 1.5rem; line-height: 2rem; } .fr-card--horizontal, .fr-card--horizontal-half, .fr-card--horizontal-tier { flex-direction: row; } .fr-card--horizontal .fr-card__img, .fr-card--horizontal-half .fr-card__img, .fr-card--horizontal-tier .fr-card__img { height: 100%; } .fr-card--horizontal .fr-card__img img, .fr-card--horizontal-half .fr-card__img img, .fr-card--horizontal-tier .fr-card__img img { height: 100%; object-fit: cover; } .fr-card--horizontal .fr-card__header { width: 40%; flex: 0 0 40%; } .fr-card--horizontal-half .fr-card__header { width: 50%; flex: 0 0 50%; } .fr-card--horizontal-tier .fr-card__header { width: 33.3333333333%; flex: 0 0 33.3333333333%; } /*! 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-card::before { background-color: transparent; background-size: 100%; background-repeat: no-repeat; background-image: url("../../icons/system/arrow-right-line.svg"); width: 1.5rem; height: 1.5rem; color: #000091; } .fr-card--no-icon::before { content: none; } .fr-card__title, .fr-card__desc { flex: 1 0 auto; } .fr-card__title [target=_blank]::after { width: 2rem; height: 2rem; } .fr-card__detail::before { width: 1rem; height: 1rem; } .fr-card--horizontal .fr-card__body { flex-basis: 100%; } .fr-card > .fr-card__img { flex-shrink: 0; } .fr-card { background-color: #fff; } .fr-card:not(.fr-card--no-border):not(.fr-card--shadow) { box-shadow: 0 0 0 1px #ddd; } .fr-card--grey { background-color: #eee; } .fr-card--shadow { z-index: 500; background-color: #fff; } .fr-card--shadow.fr-card--grey { background-color: #eee; } .fr-card--no-background { background-color: transparent; } .fr-card--no-background:hover { background-color: rgba(0, 0, 0, 0.05); } .fr-card--no-background:active { background-color: rgba(0, 0, 0, 0.1); } .fr-card__detail { color: #666; } .fr-card__title { color: #161616; } }