UNPKG

@patreon/studio

Version:

Patreon Studio Design System

229 lines (187 loc) 6.64 kB
.root { /* CSS variable contracts - defaults */ --Banner-backgroundColor: var(--global-primary-surfaceSubtle-default); --Banner-borderRadius: var(--global-radius-md); --Banner-padding: var(--global-space-x16); --Banner-paddingDesktop: var(--Banner-padding); --Banner-linkColorDefault: var(--global-content-primary-default); --Banner-linkColorHover: var(--global-content-primary-hover); --Banner-linkColorPressed: var(--global-content-primary-pressed); --Banner-iconBackground: transparent; --Banner-iconColor: var(--global-content-regular-default); --Banner-iconBackgroundLarge: var(--global-inverted-muted-default); --Banner-iconColorLarge: var(--global-content-regular-default); /* Apply the variables */ background-color: var(--Banner-backgroundColor); border-radius: var(--Banner-borderRadius); overflow: hidden; padding: var(--Banner-padding); position: relative; } /* Variant: info (default) */ .root.variantInfo { --Banner-backgroundColor: var(--global-primary-surfaceSubtle-default); --Banner-linkColorDefault: var(--global-content-primary-default); --Banner-linkColorHover: var(--global-content-primary-hover); --Banner-linkColorPressed: var(--global-content-primary-pressed); --Banner-iconColorLarge: var(--global-content-regular-default); } /* Variant: inverted */ .root.variantInverted { --Banner-backgroundColor: var(--global-content-regular-default); --Banner-linkColorDefault: var(--global-inverted-regular-default); --Banner-linkColorHover: var(--global-inverted-regular-hover); --Banner-linkColorPressed: var(--global-inverted-regular-pressed); --Banner-iconColorLarge: var(--global-inverted-regular-default); } /* Variant: critical */ .root.variantCritical { --Banner-backgroundColor: var(--global-critical-surfaceMuted-default); --Banner-linkColorDefault: var(--global-critical-surface-default); --Banner-linkColorHover: var(--global-critical-surface-hover); --Banner-linkColorPressed: var(--global-critical-surface-pressed); --Banner-iconColorLarge: var(--global-critical-surface-default); } /* Variant: success */ .root.variantSuccess { --Banner-backgroundColor: var(--global-success-surfaceMuted-default); --Banner-linkColorDefault: var(--global-success-surface-default); --Banner-linkColorHover: var(--global-success-surface-hover); --Banner-linkColorPressed: var(--global-success-surface-pressed); --Banner-iconColorLarge: var(--global-success-surface-default); } /* Variant: warning */ .root.variantWarning { --Banner-backgroundColor: var(--global-warning-surfaceMuted-default); --Banner-linkColorDefault: var(--global-warning-surface-default); --Banner-linkColorHover: var(--global-warning-surface-hover); --Banner-linkColorPressed: var(--global-warning-surface-pressed); --Banner-iconColorLarge: var(--global-warning-surface-default); } /* Placement: global */ .root.placementGlobal { --Banner-borderRadius: 0; } /* Placement: inline-large */ .root.placementInlineLarge { --Banner-paddingDesktop: var(--global-space-x24); } /* Placement: inline-small */ .root.placementInlineSmall { --Banner-padding: var(--global-space-x12); --Banner-paddingDesktop: var(--global-space-x16); } .contentWrapper { align-items: flex-start; display: flex; flex-wrap: nowrap; gap: var(--global-space-x16); justify-content: space-between; width: 100%; } .content { display: flex; flex-direction: column; gap: var(--global-space-x16); width: 100%; } .textWrapper { align-items: flex-start; display: flex; flex-direction: column; gap: var(--global-space-x4); width: 100%; word-wrap: break-word; /* Custom link styling using CSS variables from root */ } .textWrapper a { /* stylelint-disable custom-property-empty-line-before, studio/namespace-custom-properties */ --TextLink-color-default: var(--Banner-linkColorDefault); --TextLink-color-hover: var(--Banner-linkColorHover); --TextLink-color-pressed: var(--Banner-linkColorPressed); /* stylelint-enable custom-property-empty-line-before, studio/namespace-custom-properties */ font-weight: var(--type-body-fontWeights-bold); } .childrenContent { width: 100%; } .actionWrapper { display: flex; flex-wrap: wrap; gap: var(--global-space-x8); } .accessoryWrapper { display: flex; } .iconWrapper { /* CSS variable contracts for icon */ --Banner-iconWrapperBackground: var(--Banner-iconBackground); --Banner-iconWrapperColor: var(--Banner-iconColor); --Banner-iconWrapperHeight: auto; --Banner-iconWrapperWidth: auto; --Banner-iconWrapperBorderRadius: 0; --Banner-iconWrapperPaddingLeft: 0; --Banner-iconWrapperPaddingTop: 0; align-items: center; background-color: var(--Banner-iconWrapperBackground); border-radius: var(--Banner-iconWrapperBorderRadius); color: var(--Banner-iconWrapperColor); display: flex; height: var(--Banner-iconWrapperHeight); justify-content: center; padding-left: var(--Banner-iconWrapperPaddingLeft); padding-top: var(--Banner-iconWrapperPaddingTop); width: var(--Banner-iconWrapperWidth); /* Placement: inline-large */ } .placementInlineLarge .iconWrapper { --Banner-iconWrapperBackground: var(--Banner-iconBackgroundLarge); --Banner-iconWrapperBorderRadius: var(--global-radius-circle); --Banner-iconWrapperColor: var(--Banner-iconColorLarge); --Banner-iconWrapperHeight: 28px; --Banner-iconWrapperWidth: 28px; } /* Placement: inline-small */ .placementInlineSmall .iconWrapper { --Banner-iconWrapperPaddingLeft: 1px; --Banner-iconWrapperPaddingTop: 1px; } .floatingCloseButton { position: absolute; right: var(--global-space-x8); top: var(--global-space-x8); } .closeButtonWrapper { align-items: flex-start; display: flex; flex-direction: column; margin-bottom: -6px; margin-top: -6px; } @media (min-width: 796px) { .root { padding: var(--Banner-paddingDesktop); } /* Align center for inline-large placement */ .placementInlineLarge .contentWrapper { align-items: center; } /* Align center for single line with right-aligned action */ .isSingleLine.alignActionRight .contentWrapper,.isSingleLine.alignActionBottom .contentWrapper { align-items: center; } .content { align-items: flex-start; } .alignActionRight .content { align-items: center; flex-direction: row; } .actionWrapper { flex-wrap: nowrap; } .placementInlineLarge .iconWrapper { --Banner-iconWrapperHeight: 40px; --Banner-iconWrapperWidth: 40px; } }