Thanks codepuncher, I was just checking main.scss when I saw your reply.
extending .btn gives about 180 lines of css in main.scss. Its a lot but not overly excessive, that majority of it is selectors for pseudo states such as :focus or :hover. I don’t see any problem with extending the class here or that it is much of an issue. Seems that web pack is very slow when using @extend though. Here are the lines generated by extending bootstraps .btn class so you can see for yourself:
/* line 7, node_modules/bootstrap/scss/_buttons.scss */
.btn,
.button,
input[type="button"],
input[type="submit"],
.woocommerce a.button,
.woocommerce button.button,
.woocommerce #respond input#submit,
.comment-form input[type="submit"],
.woocommerce-product-search button,
.woocommerce-MyAccount-content .edit {
display: inline-block;
font-weight: 400;
text-align: center;
white-space: nowrap;
vertical-align: middle;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
border: 1px solid transparent;
padding: 0.375rem 0.75rem;
font-size: 1rem;
line-height: 1.5;
border-radius: 0.25rem;
-webkit-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;
transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;
-o-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;
}
@media screen and (prefers-reduced-motion: reduce) {
/* line 7, node_modules/bootstrap/scss/_buttons.scss */
.btn,
.button,
input[type="button"],
input[type="submit"],
.woocommerce a.button,
.woocommerce button.button,
.woocommerce #respond input#submit,
.comment-form input[type="submit"],
.woocommerce-product-search button,
.woocommerce-MyAccount-content .edit {
-webkit-transition: none;
-o-transition: none;
transition: none;
}
}
/* line 17, node_modules/bootstrap/scss/mixins/_hover.scss */
.btn:hover,
.button:hover,
input:hover[type="button"],
input:hover[type="submit"],
.woocommerce a.button:hover,
.woocommerce button.button:hover,
.woocommerce #respond input#submit:hover,
.woocommerce-product-search button:hover,
.woocommerce-MyAccount-content .edit:hover,
.btn:focus,
.button:focus,
input:focus[type="button"],
input:focus[type="submit"],
.woocommerce a.button:focus,
.woocommerce button.button:focus,
.woocommerce #respond input#submit:focus,
.woocommerce-product-search button:focus,
.woocommerce-MyAccount-content .edit:focus {
text-decoration: none;
}
/* line 23, node_modules/bootstrap/scss/_buttons.scss */
.btn:focus,
.button:focus,
input:focus[type="button"],
input:focus[type="submit"],
.woocommerce a.button:focus,
.woocommerce button.button:focus,
.woocommerce #respond input#submit:focus,
.woocommerce-product-search button:focus,
.woocommerce-MyAccount-content .edit:focus,
.btn.focus,
.focus.button,
input.focus[type="button"],
input.focus[type="submit"],
.woocommerce a.focus.button,
.woocommerce button.focus.button,
.woocommerce #respond input.focus#submit,
.woocommerce-product-search button.focus,
.woocommerce-MyAccount-content .focus.edit {
outline: 0;
-webkit-box-shadow: 0 0 0 0.2rem rgba(82, 93, 220, 0.25);
box-shadow: 0 0 0 0.2rem rgba(82, 93, 220, 0.25);
}
/* line 30, node_modules/bootstrap/scss/_buttons.scss */
.btn.disabled,
.disabled.button,
input.disabled[type="button"],
input.disabled[type="submit"],
.woocommerce a.disabled.button,
.woocommerce button.disabled.button,
.woocommerce #respond input.disabled#submit,
.woocommerce-product-search button.disabled,
.woocommerce-MyAccount-content .disabled.edit,
.btn:disabled,
.button:disabled,
input:disabled[type="button"],
input:disabled[type="submit"],
.woocommerce a.button:disabled,
.woocommerce button.button:disabled,
.woocommerce #respond input#submit:disabled,
.woocommerce-product-search button:disabled,
.woocommerce-MyAccount-content .edit:disabled {
opacity: 0.65;
}
/* line 37, node_modules/bootstrap/scss/_buttons.scss */
.btn:not(:disabled):not(.disabled),
.button:not(:disabled):not(.disabled),
input:not(:disabled):not(.disabled)[type="button"],
input:not(:disabled):not(.disabled)[type="submit"],
.woocommerce #respond input#submit:not(:disabled):not(.disabled),
.woocommerce-product-search button:not(:disabled):not(.disabled),
.woocommerce-MyAccount-content .edit:not(:disabled):not(.disabled) {
cursor: pointer;
}
/* line 52, node_modules/bootstrap/scss/_buttons.scss */
a.btn.disabled,
a.disabled.button,
.woocommerce-MyAccount-content a.disabled.edit,
fieldset:disabled a.btn,
fieldset:disabled a.button,
fieldset:disabled .woocommerce-MyAccount-content a.edit,
.woocommerce-MyAccount-content fieldset:disabled a.edit {
pointer-events: none;
}