UNPKG

fonteva-design-guide

Version:

## Dev, Build and Test

436 lines (355 loc) 11.5 kB
/* types of transitions: for animations: cubic-bezier(0.9, -0.01, 0.2, 1); for state change: cubic-bezier(1, 0, 1, 1); */ :host(.js-disabled) { pointer-events: none; } .pfm-button { display: inline-block; position: relative; align-items: center; border-color: transparent; border-width: 1px; border-style: solid; overflow: hidden; background-color: transparent; color: var(--lwc-colorTextLink, rgb(37, 116, 169)); border-radius: 0.25rem; min-height: 40px; padding: 0.5rem 1rem; width: auto; transition: background-color 0.125s cubic-bezier(1, 0, 1, 1), color 0.125s cubic-bezier(1, 0, 1, 1), border-color 0.125s cubic-bezier(1, 0, 1, 1); } .pfm-button.pfm-button_expand { width: 100%; } .pfm-button.pfm-button_no_border { border-radius: 0; border-width: 0; } .pfm-button.pfm-button_medium { height: 2rem; width: 2rem; } .pfm-button.pfm-button_dropdown { padding: 0.5rem 0.75rem; width: 100%; text-align: left; border-radius: 0; min-height: unset; } .pfm-button.pfm-button_dropdown:hover { outline: 0; text-decoration: none; background-color: #f3f2f2; } .pfm-button.pfm-button_flex { display: flex; justify-content: flex-start; } :host(.pfm-button_backend) .pfm-button:not(.pfm-button_link), .pfm-button.pfm-button_backend:not(.pfm-button_link) { min-height: 32px; padding-top: 0; padding-bottom: 0; } .pfm-button.pfm-button_link:hover:not(.pfm-button_dropdown):not(.pfm-button_no_hover) { color: var(--lwc-colorTextLinkHover, rgb(19, 95, 144)); } .pfm-button.pfm-button_link:not(.pfm-button_dropdown):not(.no-link-padding) { padding: 0; } .pfm-button.pfm-button_link:not(.pfm-button_dropdown) { min-height: 0; line-height: 1; overflow: visible; } .pfm-button.left { text-align: left; } .pfm-button.right { text-align: right; } /* ======================================================== Button Types ======================================================== */ /* Danger */ .pfm-button.pfm-button_danger { border-color: #c23934; background-color: #c23934; color: white; } .pfm-button.pfm-button_danger:hover { background-color: #a61a14; border-color: #a61a14; } /* Success */ .pfm-button.pfm-button_success { border-color: #04844b; background-color: #04844b; color: white; } .pfm-button.pfm-button_success:hover { background-color: #016538; border-color: #016538; } /* Default */ .pfm-button.pfm-button_default { border-color: var(--lwc-colorBorderButtonBrand, #2574a9); background-color: var(--lwc-colorBackgroundButtonBrand, #2574a9); color: var(--lwc-colorTextButtonBrand, white); } .pfm-button.pfm-button_default:hover, .pfm-button.pfm-button_default:focus { color: var(--lwc-colorTextButtonBrandHover, white); background-color: var(--lwc-colorBackgroundButtonBrandHover, #135f90); } /* Outline */ .pfm-button.pfm-button_outline { border-color: var(--lwc-colorBorder, #d4d4d4); color: var(--lwc-colorTextBrand, #2574a9); background-color: white; } .pfm-button.pfm-button_icon { border-radius: 0; background-color: transparent; } .pfm-button.pfm-button_outline:hover { background-color: var(--lwc-colorBackgroundButtonDefaultHover, rgba(25, 124, 190, 0.05)); } /* disabled */ .pfm-button.pfm-button_bare:disabled { pointer-events: none; color: var(--lwc-colorBorder, #d4d4d4); background-color: transparent; border: none; } .pfm-button.pfm-button_outline:disabled { pointer-events: none; color: #d4d4d4; border: 1px solid #d4d4d4; background-color: transparent; opacity: 0.5; } .pfm-button:disabled:not(.pfm-button_outline):not(.pfm-button_bare) { pointer-events: none; color: white; border: 1px solid #d4d4d4; background-color: #d4d4d4; } .pfm-button:disabled:hover { cursor: none; } /* ======================================================== Themed Colors ======================================================== */ /* Success */ :host(.pfm-theme_success) .pfm-button.pfm-button_success { border-color: white; background-color: #016538; } :host(.pfm-theme_success) .pfm-button.pfm-button_success:hover { background-color: #04844b; } :host(.pfm-theme_success) .pfm-button.pfm-button_success .pfm-button_loader { background-color: #016538; } :host(.pfm-theme_success) .pfm-button.pfm-button_bare { color: white; } /* Danger */ :host(.pfm-theme_danger) .pfm-button.pfm-button_danger { border-color: white; background-color: #a61a14; } :host(.pfm-theme_danger) .pfm-button.pfm-button_danger:hover { background-color: #c23934; } :host(.pfm-theme_danger) .pfm-button.pfm-button_danger .pfm-button_loader { background-color: #a61a14; } :host(.pfm-theme_danger) .pfm-button.pfm-button_bare { color: white; } /* Brand */ :host(.pfm-theme_brand) .pfm-button.pfm-button_default { border-color: var(--lwc-colorTextButtonBrand, white); background-color: var(--lwc-colorBackgroundButtonBrand, #2574a9); } :host(.pfm-theme_brand) .pfm-button.pfm-button_default:hover { background-color: var(--lwc-colorBackgroundButtonBrandHover, #135f90); } :host(.pfm-theme_brand) .pfm-button.pfm-button_default .pfm-button_loader { background-color: var(--lwc-colorBackgroundButtonBrand, #2574a9); } :host(.pfm-theme_brand) .pfm-button.pfm-button_bare { color: var(--lwc-colorTextButtonBrand, white); } :host(.pfm-theme_success) .pfm-button.pfm-button_outline:hover, :host(.pfm-theme_danger) .pfm-button.pfm-button_outline:hover, :host(.pfm-theme_brand) .pfm-button.pfm-button_outline:hover { background-color: rgba(255, 255, 255, 0.9); } /* ======================================================== Load ======================================================== */ /* Init */ .pfm-button .pfm-button_loader { position: absolute; top: 0; left: 0; width: 100%; height: 100%; display: flex; justify-content: center; align-items: center; background-color: white; opacity: 0; transition: opacity 0.25s 0.35s cubic-bezier(1, 0, 1, 1); } .pfm-button.js-load { pointer-events: none; } .pfm-button.js-load span, .pfm-button.js-load .slds-icon_container { display: inline-block; opacity: 0; transform: translateY(-50px); transition: transform 0.25s cubic-bezier(0.9, -0.01, 0.2, 1), opacity 0.25s ease-in-out; } .pfm-button.js-load .pfm-button_loader { opacity: 1; border-radius: 0.25rem; } .pfm-button_loader .pfm-button_dot { height: 5px; width: 5px; border-radius: 50%; } .pfm-button_dot + .pfm-button_dot { margin-left: 0.25rem; } /* ======================================================== Load Colors ======================================================== */ /* token colors */ .pfm-button_default.pfm-button .pfm-button_loader { background-color: var(--lwc-colorBackgroundButtonBrandHover); } .pfm-button_default .pfm-button_loader .pfm-button_dot:nth-of-type(1) { background-color: var(--lwc-colorTextButtonBrandHover); filter: brightness(50%); } .pfm-button_default .pfm-button_loader .pfm-button_dot:nth-of-type(2) { background-color: var(--lwc-colorTextButtonBrandHover); filter: brightness(65%); } .pfm-button_default .pfm-button_loader .pfm-button_dot:nth-of-type(3) { background-color: var(--lwc-colorTextButtonBrandHover); filter: brightness(80%); } /* outline, link, and bare colors*/ .pfm-button_bare.pfm-button .pfm-button_loader, .pfm-button_link.pfm-button .pfm-button_loader, .pfm-button_outline.pfm-button .pfm-button_loader { background-color: transparent; } .pfm-button_bare .pfm-button_loader .pfm-button_dot:nth-of-type(1), .pfm-button_link .pfm-button_loader .pfm-button_dot:nth-of-type(1), .pfm-button_outline .pfm-button_loader .pfm-button_dot:nth-of-type(1) { background-color: var(--lwc-colorBackgroundButtonBrandHover, #135f90); filter: brightness(100%); } .pfm-button_bare .pfm-button_loader .pfm-button_dot:nth-of-type(2), .pfm-button_link .pfm-button_loader .pfm-button_dot:nth-of-type(2), .pfm-button_outline .pfm-button_loader .pfm-button_dot:nth-of-type(2) { background-color: var(--lwc-colorBackgroundButtonBrandHover, #135f90); filter: brightness(150%); } .pfm-button_bare .pfm-button_loader .pfm-button_dot:nth-of-type(3), .pfm-button_link .pfm-button_loader .pfm-button_dot:nth-of-type(3), .pfm-button_outline .pfm-button_loader .pfm-button_dot:nth-of-type(3) { background-color: var(--lwc-colorBackgroundButtonBrandHover, #135f90); filter: brightness(200%); } /* danger colors */ .pfm-button_danger.pfm-button .pfm-button_loader { background-color: #a61a14; } .pfm-button_danger .pfm-button_loader .pfm-button_dot:nth-of-type(1) { background-color: #fecea8; } .pfm-button_danger .pfm-button_loader .pfm-button_dot:nth-of-type(2) { background-color: #ff847c; } .pfm-button_danger .pfm-button_loader .pfm-button_dot:nth-of-type(3) { background-color: #e84a5f; } /* success colors */ .pfm-button_success.pfm-button .pfm-button_loader { background-color: #016538; } .pfm-button_success .pfm-button_loader .pfm-button_dot:nth-of-type(1) { background-color: #a1c181; } .pfm-button_success .pfm-button_loader .pfm-button_dot:nth-of-type(2) { background-color: #3ccc18; } .pfm-button_success .pfm-button_loader .pfm-button_dot:nth-of-type(3) { background-color: #46d465; } /* animation for loader is found in button.css inside the pfm_animation resource */ .pfm-button:not(.no-image-margin) span + lightning-icon, .pfm-button:not(.no-image-margin) lightning-icon + span { margin-left: 0.5rem; display: inline-block; } .pfm-button.js-load-transition span, .pfm-button.js-load-transition .slds-icon_container { opacity: 0; transition: opacity ease-in-out 0.5s 1s; } /* ======================================================== Button Grouped Style ======================================================== */ :host(.pfm-button_grouped) .pfm-button { margin-left: -1px; } :host(.pfm-button_grouped) .pfm-button.pfm-button_default { border-color: var(--lwc-colorBackgroundButtonBrandHover, #135f90); } :host(.pfm-button_grouped) .pfm-button.pfm-button_success { border-color: #016538; } :host(.pfm-button_grouped) .pfm-button.pfm-button_danger { border-color: #a61a14; } :host(.pfm-button_grouped.pfm-theme_brand) .pfm-button.pfm-button_outline { border-color: var(--lwc-colorBackgroundButtonBrandHover, #135f90); } :host(.pfm-button_grouped.pfm-theme_success) .pfm-button.pfm-button_success, :host(.pfm-button_grouped.pfm-theme_danger) .pfm-button.pfm-button_danger, :host(.pfm-button_grouped.pfm-theme_brand) .pfm-button.pfm-button_default { border-color: var(--lwc-colorBorder, #d4d4d4); } :host(.pfm-button_grouped) .pfm-button:disabled { border-color: #b5b5b5; } :host(.pfm-button_grouped) .pfm-button.pfm-button_link { margin-left: 0.5rem; }