diff --git a/modules/ppcp-settings/images/icon-button-amex.svg b/modules/ppcp-settings/images/icon-button-amex.svg new file mode 100644 index 000000000..6ca8f2fd0 --- /dev/null +++ b/modules/ppcp-settings/images/icon-button-amex.svg @@ -0,0 +1,12 @@ + diff --git a/modules/ppcp-settings/images/icon-button-apple-pay.svg b/modules/ppcp-settings/images/icon-button-apple-pay.svg new file mode 100644 index 000000000..8a39ed47b --- /dev/null +++ b/modules/ppcp-settings/images/icon-button-apple-pay.svg @@ -0,0 +1,5 @@ + diff --git a/modules/ppcp-settings/images/icon-button-bancontact.svg b/modules/ppcp-settings/images/icon-button-bancontact.svg new file mode 100644 index 000000000..3939eb3f1 --- /dev/null +++ b/modules/ppcp-settings/images/icon-button-bancontact.svg @@ -0,0 +1,7 @@ + diff --git a/modules/ppcp-settings/images/icon-button-blik.svg b/modules/ppcp-settings/images/icon-button-blik.svg new file mode 100644 index 000000000..84046ad68 --- /dev/null +++ b/modules/ppcp-settings/images/icon-button-blik.svg @@ -0,0 +1,33 @@ + diff --git a/modules/ppcp-settings/images/icon-button-discover.svg b/modules/ppcp-settings/images/icon-button-discover.svg new file mode 100644 index 000000000..626b3ce15 --- /dev/null +++ b/modules/ppcp-settings/images/icon-button-discover.svg @@ -0,0 +1,46 @@ + diff --git a/modules/ppcp-settings/images/icon-button-google-pay.svg b/modules/ppcp-settings/images/icon-button-google-pay.svg new file mode 100644 index 000000000..d2bdfbfb9 --- /dev/null +++ b/modules/ppcp-settings/images/icon-button-google-pay.svg @@ -0,0 +1,11 @@ + diff --git a/modules/ppcp-settings/images/icon-button-ideal.svg b/modules/ppcp-settings/images/icon-button-ideal.svg new file mode 100644 index 000000000..4d1564544 --- /dev/null +++ b/modules/ppcp-settings/images/icon-button-ideal.svg @@ -0,0 +1,20 @@ + diff --git a/modules/ppcp-settings/images/icon-button-mastercard.svg b/modules/ppcp-settings/images/icon-button-mastercard.svg new file mode 100644 index 000000000..a0faeeef8 --- /dev/null +++ b/modules/ppcp-settings/images/icon-button-mastercard.svg @@ -0,0 +1,7 @@ + diff --git a/modules/ppcp-settings/images/icon-button-paypal.svg b/modules/ppcp-settings/images/icon-button-paypal.svg new file mode 100644 index 000000000..17e9d9108 --- /dev/null +++ b/modules/ppcp-settings/images/icon-button-paypal.svg @@ -0,0 +1,5 @@ + diff --git a/modules/ppcp-settings/images/icon-button-sepa.svg b/modules/ppcp-settings/images/icon-button-sepa.svg new file mode 100644 index 000000000..918c2bd97 --- /dev/null +++ b/modules/ppcp-settings/images/icon-button-sepa.svg @@ -0,0 +1,7 @@ + diff --git a/modules/ppcp-settings/images/icon-button-venmo.svg b/modules/ppcp-settings/images/icon-button-venmo.svg new file mode 100644 index 000000000..80049eb56 --- /dev/null +++ b/modules/ppcp-settings/images/icon-button-venmo.svg @@ -0,0 +1,12 @@ + diff --git a/modules/ppcp-settings/images/icon-button-visa.svg b/modules/ppcp-settings/images/icon-button-visa.svg new file mode 100644 index 000000000..43658f846 --- /dev/null +++ b/modules/ppcp-settings/images/icon-button-visa.svg @@ -0,0 +1,8 @@ + diff --git a/modules/ppcp-settings/images/icon-payment-method-apple-pay.svg b/modules/ppcp-settings/images/icon-payment-method-apple-pay.svg new file mode 100644 index 000000000..9224d4e5a --- /dev/null +++ b/modules/ppcp-settings/images/icon-payment-method-apple-pay.svg @@ -0,0 +1,5 @@ + diff --git a/modules/ppcp-settings/images/icon-payment-method-bancontact.svg b/modules/ppcp-settings/images/icon-payment-method-bancontact.svg new file mode 100644 index 000000000..9e5fb0dfb --- /dev/null +++ b/modules/ppcp-settings/images/icon-payment-method-bancontact.svg @@ -0,0 +1,6 @@ + diff --git a/modules/ppcp-settings/images/icon-payment-method-blik.svg b/modules/ppcp-settings/images/icon-payment-method-blik.svg new file mode 100644 index 000000000..bd15da33d --- /dev/null +++ b/modules/ppcp-settings/images/icon-payment-method-blik.svg @@ -0,0 +1,35 @@ + diff --git a/modules/ppcp-settings/images/icon-payment-method-cards.svg b/modules/ppcp-settings/images/icon-payment-method-cards.svg new file mode 100644 index 000000000..1bfbf6601 --- /dev/null +++ b/modules/ppcp-settings/images/icon-payment-method-cards.svg @@ -0,0 +1,52 @@ + diff --git a/modules/ppcp-settings/images/icon-payment-method-eps.svg b/modules/ppcp-settings/images/icon-payment-method-eps.svg new file mode 100644 index 000000000..a4c8ec7fd --- /dev/null +++ b/modules/ppcp-settings/images/icon-payment-method-eps.svg @@ -0,0 +1,9 @@ + diff --git a/modules/ppcp-settings/images/icon-payment-method-fastlane.svg b/modules/ppcp-settings/images/icon-payment-method-fastlane.svg new file mode 100644 index 000000000..393acf4cf --- /dev/null +++ b/modules/ppcp-settings/images/icon-payment-method-fastlane.svg @@ -0,0 +1,6 @@ + diff --git a/modules/ppcp-settings/images/icon-payment-method-google-pay.svg b/modules/ppcp-settings/images/icon-payment-method-google-pay.svg new file mode 100644 index 000000000..db81d0ae5 --- /dev/null +++ b/modules/ppcp-settings/images/icon-payment-method-google-pay.svg @@ -0,0 +1,11 @@ + diff --git a/modules/ppcp-settings/images/icon-payment-method-ideal.svg b/modules/ppcp-settings/images/icon-payment-method-ideal.svg new file mode 100644 index 000000000..41abfec1c --- /dev/null +++ b/modules/ppcp-settings/images/icon-payment-method-ideal.svg @@ -0,0 +1,20 @@ + diff --git a/modules/ppcp-settings/images/icon-payment-method-paypal.svg b/modules/ppcp-settings/images/icon-payment-method-paypal.svg new file mode 100644 index 000000000..610c8f474 --- /dev/null +++ b/modules/ppcp-settings/images/icon-payment-method-paypal.svg @@ -0,0 +1,15 @@ + diff --git a/modules/ppcp-settings/images/icon-payment-method-venmo.svg b/modules/ppcp-settings/images/icon-payment-method-venmo.svg new file mode 100644 index 000000000..eeea95077 --- /dev/null +++ b/modules/ppcp-settings/images/icon-payment-method-venmo.svg @@ -0,0 +1,5 @@ + diff --git a/modules/ppcp-settings/images/logo-paypal.svg b/modules/ppcp-settings/images/logo-paypal.svg new file mode 100644 index 000000000..4618178e7 --- /dev/null +++ b/modules/ppcp-settings/images/logo-paypal.svg @@ -0,0 +1,13 @@ + diff --git a/modules/ppcp-settings/resources/css/_global.scss b/modules/ppcp-settings/resources/css/_global.scss new file mode 100644 index 000000000..cdb50be72 --- /dev/null +++ b/modules/ppcp-settings/resources/css/_global.scss @@ -0,0 +1,12 @@ +* { + font-family: "Inter", sans-serif; + -webkit-font-smoothing: antialiased; +} + +a:not(.button) { + color: $color-blueberry; +} + +.components-form-toggle.is-checked > .components-form-toggle__track { + background-color: $color-blueberry; +} diff --git a/modules/ppcp-settings/resources/css/_mixins.scss b/modules/ppcp-settings/resources/css/_mixins.scss new file mode 100644 index 000000000..6ad01d5c4 --- /dev/null +++ b/modules/ppcp-settings/resources/css/_mixins.scss @@ -0,0 +1,8 @@ +@mixin font($font-size, $line-height, $font-weight, $letter-spacing: false) { + font-size: $font-size + px; + line-height: calc($line-height / $font-size); + font-weight: $font-weight; + @if $letter-spacing { + letter-spacing: $letter-spacing; + } +} diff --git a/modules/ppcp-settings/resources/css/_variables.scss b/modules/ppcp-settings/resources/css/_variables.scss new file mode 100644 index 000000000..9100a538a --- /dev/null +++ b/modules/ppcp-settings/resources/css/_variables.scss @@ -0,0 +1,13 @@ +$color-white: #fff; +$color-blue: #1D35B4; +$color-blueberry: #3858E9; +$color-gray-900: #1E1E1E; +$color-gray-800: #2F2F2F; +$color-gray-700: #757575; +$color-gray-600: #949494; +$color-gray-500: #BBBBBB; +$color-gray-200: #E0E0E0; +$color-gray: #646970; + +$shadow-card: 0 3px 6px 0 rgba(0, 0, 0, 0.15); +$gradient-header: linear-gradient(87.03deg, #003087 -0.49%, #001E51 29.22%, #001435 100%); diff --git a/modules/ppcp-settings/resources/css/components/reusable-components/_button.scss b/modules/ppcp-settings/resources/css/components/reusable-components/_button.scss new file mode 100644 index 000000000..40b26ad8e --- /dev/null +++ b/modules/ppcp-settings/resources/css/components/reusable-components/_button.scss @@ -0,0 +1,22 @@ +button.components-button { + &.is-primary, &.is-secondary { + background-color: $color-blueberry; + border-radius: 2px; + padding: 14px 17px; + height: auto; + &:hover { + background: $gradient-header; + } + } + + &.is-primary { + @include font(13, 16, 500); + } + + &.is-secondary { + padding: 6px 12px; + @include font(13, 20, 500); + color: $color-white; + border: none; + } +} diff --git a/modules/ppcp-settings/resources/css/components/reusable-components/_onboarding-header.scss b/modules/ppcp-settings/resources/css/components/reusable-components/_onboarding-header.scss new file mode 100644 index 000000000..7ac522152 --- /dev/null +++ b/modules/ppcp-settings/resources/css/components/reusable-components/_onboarding-header.scss @@ -0,0 +1,52 @@ +.ppcp-r-onboarding-header{ + margin: 0 0 32px 0; + + &__gradient { + background: $gradient-header; + width: 100%; + height: 112px; + position: relative; + margin-bottom: 55px; + } + + &__logo-wrapper { + width: 110px; + height: 110px; + background-color: $color-white; + border-radius: 110px; + position: absolute; + left: calc(50% - 55px); + bottom: -55px; + + img { + width: 56px; + position: absolute; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + } + } + + &__content { + max-width: 458px; + margin: 0 auto; + display: flex; + flex-direction: column; + justify-content: center; + padding:0 16px; + } + + &__title { + @include font(20, 28, 700); + color: $color-blue; + margin: 0 0 4px 0; + text-align: center; + } + + &__description { + color: $color-gray-800; + @include font(14, 20, 400); + margin: 0; + text-align: center; + } +} diff --git a/modules/ppcp-settings/resources/css/components/reusable-components/_payment-method-icons.scss b/modules/ppcp-settings/resources/css/components/reusable-components/_payment-method-icons.scss new file mode 100644 index 000000000..438e72e64 --- /dev/null +++ b/modules/ppcp-settings/resources/css/components/reusable-components/_payment-method-icons.scss @@ -0,0 +1,6 @@ +.ppcp-r-payment-method-icons { + display: flex; + gap: 8px; + justify-content: center; + flex-wrap: wrap; +} diff --git a/modules/ppcp-settings/resources/css/components/reusable-components/_separator.scss b/modules/ppcp-settings/resources/css/components/reusable-components/_separator.scss new file mode 100644 index 000000000..84e3a1f19 --- /dev/null +++ b/modules/ppcp-settings/resources/css/components/reusable-components/_separator.scss @@ -0,0 +1,18 @@ +.ppcp-r-separator{ + display: flex; + align-items: center; + + &__line { + height: 1px; + background-color: $color-gray-600; + display: block; + width: 100%; + } + + &__text { + color: $color-gray; + @include font(12, 24, 500, 0.8px); + text-transform: uppercase; + padding: 0 23px; + } +} diff --git a/modules/ppcp-settings/resources/css/components/reusable-components/_settings-toggle-block.scss b/modules/ppcp-settings/resources/css/components/reusable-components/_settings-toggle-block.scss new file mode 100644 index 000000000..60443ac86 --- /dev/null +++ b/modules/ppcp-settings/resources/css/components/reusable-components/_settings-toggle-block.scss @@ -0,0 +1,30 @@ +.ppcp-r-toggle-block { + &__wrapper { + display: flex; + width: 100%; + gap: 12px; + } + + &__switch { + .components-base-control__field > div { + display: block; + } + } + + &__content-label { + @include font(14, 20, 600); + display: block; + margin: 0 0 4px 0; + color: $color-gray-900; + } + + &__content-description { + @include font(13, 18, 400); + color: $color-gray-700; + margin: 0; + } + + &__toggled-content { + margin-top: 24px; + } +} diff --git a/modules/ppcp-settings/resources/css/components/reusable-components/_settings-wrapper.scss b/modules/ppcp-settings/resources/css/components/reusable-components/_settings-wrapper.scss new file mode 100644 index 000000000..c38fb5ae1 --- /dev/null +++ b/modules/ppcp-settings/resources/css/components/reusable-components/_settings-wrapper.scss @@ -0,0 +1,21 @@ +.ppcp-r { + + &-inner-container { + width: 652px; + max-width: 100%; + margin: 0 auto; + padding:0 16px; + box-sizing: border-box; + } + + &-container { + box-shadow: $shadow-card; + max-width: 1024px; + margin: 0 auto; + } + + &-card { + box-shadow: 0 3px 6px 0 rgba(0, 0, 0, 0.15); + background-color: $color-white; + } +} diff --git a/modules/ppcp-settings/resources/css/components/reusable-components/_text-control.scss b/modules/ppcp-settings/resources/css/components/reusable-components/_text-control.scss new file mode 100644 index 000000000..3b476f89c --- /dev/null +++ b/modules/ppcp-settings/resources/css/components/reusable-components/_text-control.scss @@ -0,0 +1,17 @@ +.components-base-control { + &__label { + color: $color-gray-900; + @include font(13, 16, 600); + margin: 0 0 8px 0; + text-transform: none; + } + + &__input { + border: 1px solid $color-gray-700; + border-radius: 2px; + box-shadow: none; + &:focus{ + border-color:$color-blueberry; + } + } +} diff --git a/modules/ppcp-settings/resources/css/components/screens/onboarding/_step-welcome.scss b/modules/ppcp-settings/resources/css/components/screens/onboarding/_step-welcome.scss new file mode 100644 index 000000000..e9861b900 --- /dev/null +++ b/modules/ppcp-settings/resources/css/components/screens/onboarding/_step-welcome.scss @@ -0,0 +1,83 @@ +.ppcp-r-page-welcome { + .ppcp-r-inner-container { + padding-bottom: 72px; + @media screen and (max-width: 480px) { + padding-bottom: 36px; + } + } + + .ppcp-r-welcome-features { + margin: 0 0 32px 0; + } + + .ppcp-r-payment-method-icons { + margin: 0 0 12px 0; + } + + .ppcp-r-button-activate-paypal { + display: block; + margin: 0 auto 32px auto; + } + + .ppcp-r-page-welcome-or-separator { + margin: 0 0 32px 0; + } + + .ppcp-r-page-welcome-mode-separator { + margin: 32px 0; + + .ppcp-r-separator__line { + background-color: $color-gray-500; + } + } + + .components-base-control__field { + margin: 0 0 24px 0; + } +} + +.ppcp-r-welcome-features { + display: flex; + justify-content: center; + padding: 8px; + + &__col { + display: flex; + flex-direction: column; + gap: 4px; + + > span { + @include font(11, 16, 600); + text-transform: uppercase; + color: $color-gray-800; + } + + > p { + margin: 0; + @include font(13, 16, 400); + color: $color-gray-700; + } + + &:not(:last-child) { + padding-right: 18px; + border-right: 1px solid $color-gray-200; + margin-right: 18px; + } + } + + @media screen and (max-width: 480px) { + flex-wrap: wrap; + row-gap: 8px; + &__col { + width: 100%; + text-align: center; + + &:not(:last-child) { + border-bottom: 1px solid $color-gray-200; + border-right: 0; + padding-right: 0; + padding-bottom: 8px; + } + } + } +} diff --git a/modules/ppcp-settings/resources/css/style.scss b/modules/ppcp-settings/resources/css/style.scss index 158769ffb..4dc8c50d0 100644 --- a/modules/ppcp-settings/resources/css/style.scss +++ b/modules/ppcp-settings/resources/css/style.scss @@ -1 +1,14 @@ -.red {color:red;} +@import 'variables'; +@import 'mixins'; + +#ppcp-settings-container { + @import './global'; + @import './components/reusable-components/onboarding-header'; + @import './components/reusable-components/button'; + @import './components/reusable-components/settings-toggle-block'; + @import './components/reusable-components/text-control'; + @import './components/reusable-components/separator'; + @import './components/reusable-components/payment-method-icons'; + @import './components/reusable-components/settings-wrapper'; + @import './components/screens/onboarding/step-welcome'; +} diff --git a/modules/ppcp-settings/resources/js/App.js b/modules/ppcp-settings/resources/js/App.js index a89ef4031..f246f6cd2 100644 --- a/modules/ppcp-settings/resources/js/App.js +++ b/modules/ppcp-settings/resources/js/App.js @@ -1,40 +1,9 @@ -import * as Store from './data'; - -const StoreTest = () => { - const { isSaving, onboardingStep, setOnboardingStep } = - Store.useOnboardingDetails(); - - return ( -
+ { props.description } +
+ ) } +{ __( 'Instant', 'woocommerce-paypal-payments' ) }
++ { __( + 'Authorize only or Capture', + 'woocommerce-paypal-payments' + ) } +
+{ __( 'Supported', 'woocommerce-paypal-payments' ) }
+