UNPKG

@penaprieto/design-system

Version:

Multi-brand React design system with design tokens from Figma

260 lines (225 loc) 5.83 kB
/* Footer */ .ds-footer { background-color: var(--semantic-bg-surface-default); padding: var(--size7, 48px) 0; -webkit-font-smoothing: antialiased; box-sizing: border-box; border-top: 1px solid var(--semantic-border-default-subtle); } /* Container */ .ds-footer__container { display: grid; grid-template-columns: repeat(1, 1fr); column-gap: var(--size3, 12px); row-gap: var(--size6, 32px); margin: 0 var(--size3, 12px); border-bottom: 1px solid var(--semantic-border-default-subtle); padding-bottom: var(--size8, 64px); } /* Logo row - only spans full width if it exists */ .ds-footer__logo-row { grid-column: 1 / -1; display: flex; justify-content: flex-start; align-items: center; } /* When no logo, don't create empty row */ .ds-footer__container:not(:has(.ds-footer__logo-row)) { padding-top: 0; } .ds-footer__logo { height: 40px; width: auto; display: block; } /* Column */ .ds-footer__column { display: flex; flex-direction: column; gap: var(--size5, 24px); } .ds-footer__title { margin: 0; font-family: var(--body-regular-fontFamily, var(--font-family, 'Satoshi', sans-serif)); font-size: var(--body-regular-fontSize, 16px); font-weight: var(--body-regular-strong-fontWeight, 700); line-height: var(--body-regular-lineHeight, 150%); color: var(--semantic-text-corp-primary); } .ds-footer__list { padding: 0; list-style: none; display: flex; flex-direction: column; gap: var(--size4, 16px); margin: 0; } .ds-footer__item { margin: 0; } .ds-footer__link { text-decoration: none; color: var(--semantic-text-corp-secondary); font-family: var(--body-regular-fontFamily, var(--font-family, 'Satoshi', sans-serif)); font-size: var(--body-regular-fontSize, 16px); font-weight: var(--body-regular-fontWeight, 400); line-height: var(--body-regular-lineHeight, 150%); transition: color 0.2s ease-in-out; } .ds-footer__link:hover { color: var(--semantic-text-corp-primary); } .ds-footer__link:focus-visible { outline: none; box-shadow: var(--semantic-focus-corp); color: var(--semantic-text-corp-primary); border-radius: var(--br-xs, 4px); } /* Bottom section */ .ds-footer__bottom { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: var(--size5, 24px); width: 100%; padding-top: var(--size7, 48px); } /* Apps & Social container */ .ds-footer__apps-social { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: var(--size5, 24px); } /* App links */ .ds-footer__apps { display: flex; flex-direction: row; gap: var(--size3, 12px); } .ds-footer__app-link { border-radius: var(--br-xs, 4px); height: 40px; transition: opacity 0.2s ease-in-out; display: block; } .ds-footer__app-link:hover { opacity: 0.8; } .ds-footer__app-link:focus-visible { outline: none; box-shadow: var(--semantic-focus-corp); } .ds-footer__app-link img { height: 100%; width: auto; display: block; } /* Social links */ .ds-footer__social { display: flex; flex-direction: row; gap: var(--size1, 4px); } /* Legal links */ .ds-footer__legal-links { display: flex; flex-direction: column; align-items: center; justify-content: center; font-family: var(--body-regular-fontFamily, var(--font-family, 'Satoshi', sans-serif)); font-size: var(--body-regular-fontSize, 16px); font-weight: var(--body-regular-fontWeight, 400); line-height: var(--body-regular-lineHeight, 150%); gap: var(--size4, 16px); color: var(--semantic-text-corp-secondary); text-align: center; } .ds-footer__legal-links a { color: var(--semantic-text-corp-secondary); text-decoration: none; transition: color 0.2s ease-in-out; } .ds-footer__legal-links a:hover { color: var(--semantic-text-corp-primary); } .ds-footer__legal-links a:focus-visible { outline: none; box-shadow: var(--semantic-focus-corp); color: var(--semantic-text-corp-primary); border-radius: var(--br-xs, 4px); } .ds-footer__legal-sep { color: var(--semantic-text-corp-disabled); margin: 0 var(--size1, 4px); display: none; } /* Copyright */ .ds-footer__copyright { text-align: center; color: var(--semantic-text-corp-secondary); font-family: var(--body-regular-fontFamily, var(--font-family, 'Satoshi', sans-serif)); font-size: var(--body-regular-fontSize, 16px); font-weight: var(--body-regular-fontWeight, 400); line-height: var(--body-regular-lineHeight, 150%); } /* Responsive breakpoints */ /* XS: 576px */ @media (min-width: 576px) { .ds-footer__container { grid-template-columns: repeat(2, 1fr); column-gap: var(--size4, 16px); row-gap: var(--size7, 48px); margin: 0 var(--size4, 16px); } .ds-footer__legal-links { flex-direction: row; } .ds-footer__legal-sep { display: inline; } } /* SM: 768px */ @media (min-width: 768px) { .ds-footer__container { grid-template-columns: repeat(2, 1fr); column-gap: var(--size6, 32px); row-gap: var(--size7, 48px); margin: 0 var(--size6, 32px); } .ds-footer__apps-social { flex-direction: row; gap: var(--size6, 32px); } } /* MD: 992px */ @media (min-width: 992px) { .ds-footer__container { grid-template-columns: repeat(4, 1fr); column-gap: var(--size6, 32px); row-gap: var(--size8, 64px); margin: 0 var(--size10, 80px); } } /* LG: 1200px */ @media (min-width: 1200px) { .ds-footer__container { width: 1140px; margin: 0 auto; grid-template-columns: repeat(4, 1fr); column-gap: var(--size6, 32px); row-gap: var(--size8, 64px); } } /* XL: 1500px */ @media (min-width: 1500px) { .ds-footer__container { width: 1440px; margin: 0 auto; grid-template-columns: repeat(4, 1fr); column-gap: var(--size6, 32px); row-gap: var(--size8, 64px); } }