diff --git a/package.json b/package.json index 1bf6b794..9ede2d4b 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "test": "faststore test" }, "dependencies": { - "@faststore/core": "^3.0.22", + "@faststore/core": "https://pkg.csb.dev/vtex/faststore/commit/ad406fa5/@faststore/core", "next": "^13.5.6", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/src/fonts/WebFonts.tsx b/src/fonts/WebFonts.tsx new file mode 100644 index 00000000..8b742f2b --- /dev/null +++ b/src/fonts/WebFonts.tsx @@ -0,0 +1,14 @@ +/* eslint-disable @next/next/no-page-custom-font */ + +function WebFonts() { + return ( + <> + + + ) +} + +export default WebFonts diff --git a/src/themes/custom-theme.scss b/src/themes/custom-theme.scss index 6c616e46..c0a26797 100644 --- a/src/themes/custom-theme.scss +++ b/src/themes/custom-theme.scss @@ -3,35 +3,334 @@ // Custom Theme // ---------------------------------------------------------- -@layer theme { - .theme { - // -------------------------------------------------------- - // Colors (Branding Core) - // -------------------------------------------------------- - --fs-color-main-0: #f1f2f3; - // -------------------------------------------------------- - // Typography (Branding Core) - // -------------------------------------------------------- - - // -------------------------------------------------------- - // Spacing (UI Essentials) - // -------------------------------------------------------- - - // -------------------------------------------------------- - // Grid & Layout (UI Essentials) - // -------------------------------------------------------- - - // -------------------------------------------------------- - // Interactive Controls (UI Essentials) - // -------------------------------------------------------- - - // -------------------------------------------------------- - // Refinements - // -------------------------------------------------------- - - // -------------------------------------------------------- - // FS UI Components - // -------------------------------------------------------- - // Add here the customizations for FastStore UI components. +.theme { + // -------------------------------------------------------- + // Colors (Branding Core) + // -------------------------------------------------------- + --fs-color-main-2 : #0366dd; + --fs-color-main-3 : #0155b7; + --fs-color-main-4 : #014592; + + --fs-color-success-bkg : #e9fce3; + --fs-color-warning-bkg : #e9fce3; + --fs-color-danger-bkg : #f7d1d1; + + --fs-color-primary-bkg-light : var(--fs-color-neutral-0); + + // -------------------------------------------------------- + // Typography (Branding Core) + // -------------------------------------------------------- + + // WEIGHT + --fs-text-weight-bold : 600; + --fs-text-weight-black : 700; + + // FACE + --fs-text-face-body : "Inter", -apple-system, system-ui, BlinkMacSystemFont, sans-serif; + + // HIERARCHY SCALE + --fs-text-size-title-huge : var(--fs-text-size-9); + + // -------------------------------------------------------- + // Spacing (UI Essentials) + // -------------------------------------------------------- + + // -------------------------------------------------------- + // Grid & Layout (UI Essentials) + // -------------------------------------------------------- + + // PADDING + + @include media(">=notebook") { + --fs-grid-padding : var(--fs-spacing-6); + } + + // CONTAINER + --fs-grid-max-width : 1320px; + + // -------------------------------------------------------- + // Interactive Controls (UI Essentials) + // -------------------------------------------------------- + + // -------------------------------------------------------- + // Refinements + // -------------------------------------------------------- + + // BORDERS + --fs-border-color : var(--fs-color-neutral-2); + + --fs-border-radius : 4px; + + // -------------------------------------------------------- + // FS UI Components + // -------------------------------------------------------- + + .section { + //////////////////// + // Global + //////////////////// + + [data-fs-button] { + --fs-button-padding : calc(var(--fs-spacing-1) - (var(--fs-button-border-width) * 2)) var(--fs-spacing-4); + + --fs-button-border-radius : var(--fs-border-radius-pill); + --fs-button-border-width : var(--fs-border-width); + + --fs-buy-button-bkg-color : var(--fs-button-primary-bkg-color); + --fs-buy-button-bkg-color-hover : var(--fs-button-primary-bkg-color-hover); + --fs-buy-button-bkg-color-active : var(--fs-button-primary-bkg-color-active); + + --fs-button-secondary-text-color-hover : var(--fs-color-secondary-text); + --fs-button-secondary-bkg-color-hover : var(--fs-color-neutral-1); + --fs-button-secondary-bkg-color-active : var(--fs-color-neutral-2); + --fs-button-secondary-border-color : var(--fs-border-color); + + --fs-button-secondary-inverse-text-color : var(--fs-color-text-inverse); + --fs-button-secondary-inverse-text-color-hover : var(--fs-button-secondary-inverse-text-color); + + --fs-button-secondary-inverse-bkg-color-hover : #ffffff50; + --fs-button-secondary-inverse-bkg-color-active : #ffffff60; + + --fs-button-secondary-inverse-border-color : var(--fs-button-secondary-inverse-bkg-color-hover); + --fs-button-secondary-inverse-border-color-hover : transparent; + --fs-button-secondary-inverse-border-color-active : transparent; + } + + [data-fs-input] { + --fs-input-height : 56px; + --fs-input-border-radius : var(--fs-border-radius); + + [data-fs-button] { min-width: var(--fs-input-height); } + } + + [data-fs-input-field] { + --fs-input-field-padding : var(--fs-spacing-2) var(--fs-spacing-2) 0; + --fs-input-field-label-padding : 0 var(--fs-spacing-2); + + input:not(:placeholder-shown) + label, &:focus + label { top: rem(9px); } + } + + [data-fs-quantity-selector] { + --fs-qty-selector-border-radius : var(--fs-border-radius-pill); + } + + [data-fs-navbar-header] { + [data-fs-button-wrapper], [data-fs-button-icon] { + color: var(--fs-color-text-display); + } + } + + [data-fs-carousel] { + --fs-carousel-controls-box-shadow : none; + --fs-carousel-controls-bkg-color : var(--fs-color-neutral-7); + --fs-carousel-controls-icon-color : var(--fs-color-text-inverse); + --fs-carousel-bullet-bkg-color-selected : var(--fs-color-neutral-7); + --fs-carousel-item-margin-right : var(--fs-spacing-5); + + [data-fs-button]:disabled [data-fs-button-wrapper] { background-color: var(--fs-color-neutral-1); } + } + + [data-fs-alert] { + --fs-alert-bkg-color : var(--fs-color-neutral-7); + --fs-alert-text-color : var(--fs-color-text-inverse); + } + + [data-fs-incentives] { + [data-fs-list] { + padding: 0 var(--fs-grid-padding); + } + + @include media(">=notebook") { + --fs-incentives-gap : var(--fs-spacing-6); + } + } + + [data-fs-product-card] { + --fs-product-card-wide-content-padding : 0; + --fs-product-card-border-width : 0; + --fs-product-card-title-weight : var(--fs-text-weight-semibold); + --fs-product-card-wide-bkg-color : transparent; + --fs-product-card-padding : 0 0 var(--fs-spacing-2) 0; + + --fs-product-card-shadow-hover : none; + + @media (hover: hover) { + &:hover { + [data-fs-product-card-image] img { opacity: .8; } + } + } + } + + [data-fs-product-card-variant="wide"] { + --fs-product-card-title-size : var(--fs-text-size-title-product); + [data-fs-image] { border-radius: var(--fs-border-radius); } + [data-fs-product-card-title] { letter-spacing: -1.1px; } + } + + //////////////////// + // HOMEPAGE + //////////////////// + + [data-fs-hero] { + @include layout-content; + + &[data-fs-hero-variant="primary"] [data-fs-hero-heading] { + @include media(">=notebook") { + padding: var(--fs-spacing-13) var(--fs-spacing-5); + } + } + } + + [data-fs-tiles] { + --fs-tiles-gap-notebook : var(--fs-grid-gap-4); + } + + //////////////////// + // PDP + //////////////////// + + [data-fs-product-title] { + --fs-product-title-text-size : var(--fs-text-size-6); + --fs-product-title-text-weight : var(--fs-text-weight-semibold); + } + + [data-fs-product-details-title] { + padding-top: 0; + border-top: none; + } + + [data-fs-product-details] { + --fs-product-details-vertical-spacing : var(--fs-spacing-5); + --fs-product-details-horizontal-spacing : var(--fs-spacing-6); + + [data-fs-product-details-section] { + padding-right: 0; + padding-left: 0; + border-right: none; + border-left: none; + } + } + + [data-fs-sku-selector] { + --fs-sku-selector-image-border-radius : var(--fs-border-radius-circle); + --fs-sku-selector-option-border-radius : var(--fs-border-radius-circle); + --fs-sku-selector-option-border-color : var(--fs-border-color); + } + + [data-fs-image-gallery] > [data-fs-image] { + object-fit: cover; + + @include media("=notebook") { + --fs-cart-sidebar-list-padding : var(--fs-spacing-3) var(--fs-spacing-7); + --fs-slide-over-header-padding : var(--fs-spacing-2) var(--fs-spacing-7); + } + + [data-fs-empty-state] { + --fs-empty-state-bkg-color-default : var(--fs-color-neutral-0); + } + + [data-fs-slide-over-header] [data-fs-button-wrapper] { + color: var(--fs-color-text); + } + } + + [data-fs-cart-sidebar-footer] { + @include media(">=notebook") { + padding: 0 var(--fs-spacing-7) var(--fs-spacing-4); + } + + [data-fs-order-summary] { + --fs-order-summary-row-gap : var(--fs-grid-gap-0); + + padding-top: var(--fs-spacing-4); + margin-bottom: var(--fs-spacing-3); + border-top: var(--fs-border-width) solid var(--fs-border-color); + } + } + + [data-fs-cart-item] { + --fs-cart-item-border-width : 0; + + [data-fs-cart-item-content] { + padding-bottom: var(--fs-spacing-4); + padding-left: 0; + } + + [data-quantity-selector-input] { + border-color: var(--fs-border-color); + border-top-left-radius: var(--fs-border-radius-pill); + border-top-right-radius: var(--fs-border-radius-pill); + } + } + + [data-fs-cart-sidebar-list] li { + padding-bottom: var(--fs-spacing-4); + &:not(:only-child) { border-bottom: var(--fs-border-width) solid var(--fs-border-color); } + } + + /////////////////// + + .text__title-section { + font-size: var(--fs-text-size-6); + font-weight: var(--fs-text-weight-semibold); + letter-spacing: -1.2px; + } } } diff --git a/yarn.lock b/yarn.lock index 17348b4f..1eb3b96c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -950,10 +950,9 @@ resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz#786c5f41f043b07afb1af37683d7c33668858f6d" integrity sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ== -"@faststore/api@^3.0.21": - version "3.0.21" - resolved "https://registry.yarnpkg.com/@faststore/api/-/api-3.0.21.tgz#90635401c7eb03f025ddac2dc8b6faaaa9698449" - integrity sha512-tqplu+FimX0tGbCWL8sEOHDkQdibmZKYwpDguoI5sGiv/j3+UrGBxRLQMuFVRunOD2mmT64CW6PPtahwliQjYA== +"@faststore/api@https://pkg.csb.dev/vtex/faststore/commit/ad406fa5/@faststore/api": + version "3.0.23" + resolved "https://pkg.csb.dev/vtex/faststore/commit/ad406fa5/@faststore/api#78f9002d298e49e94c37580e0a61ca15f10ec6cf" dependencies: "@envelop/on-resolve" "^2.0.6" "@graphql-tools/load-files" "^7.0.0" @@ -982,26 +981,25 @@ fs-extra "^10.1.0" path "^0.12.7" -"@faststore/components@^3.0.7": - version "3.0.7" - resolved "https://registry.yarnpkg.com/@faststore/components/-/components-3.0.7.tgz#371cb819cca59e764ae05c0dc7602f0550b848da" - integrity sha512-vWhYfZWJaK8h4J4qlGXa+duWUFbbD0iQAfw4uBLqEqfffV0BBnUQGGyyFwsowshx0rJnrEQQXvFH5bIHvm6bKw== +"@faststore/components@https://pkg.csb.dev/vtex/faststore/commit/ad406fa5/@faststore/components": + version "3.0.23" + uid "0143ee0c051589bab3d6267250ef8e698ed2f7e6" + resolved "https://pkg.csb.dev/vtex/faststore/commit/ad406fa5/@faststore/components#0143ee0c051589bab3d6267250ef8e698ed2f7e6" -"@faststore/core@^3.0.22": - version "3.0.22" - resolved "https://registry.yarnpkg.com/@faststore/core/-/core-3.0.22.tgz#9f3ecd94c45e48412bbb2253c50cc312d94d24a2" - integrity sha512-ZfPyIYWfyRkUke5G2W1qfzgpq6RGLAvNAVt78Pew2kqUcM6AqFPhzHfBuTk3k83k5vOpAczbgH52wVcq7fYe1Q== +"@faststore/core@https://pkg.csb.dev/vtex/faststore/commit/ad406fa5/@faststore/core": + version "3.0.23" + resolved "https://pkg.csb.dev/vtex/faststore/commit/ad406fa5/@faststore/core#e64e86129464dd3898d5d71db299e99334c8377c" dependencies: "@builder.io/partytown" "^0.6.1" "@envelop/core" "^1.2.0" "@envelop/graphql-jit" "^1.1.1" "@envelop/parser-cache" "^2.2.0" "@envelop/validation-cache" "^2.2.0" - "@faststore/api" "^3.0.21" - "@faststore/components" "^3.0.7" - "@faststore/graphql-utils" "^3.0.13" - "@faststore/sdk" "^3.0.7" - "@faststore/ui" "^3.0.7" + "@faststore/api" "https://pkg.csb.dev/vtex/faststore/commit/ad406fa5/@faststore/api" + "@faststore/components" "https://pkg.csb.dev/vtex/faststore/commit/ad406fa5/@faststore/components" + "@faststore/graphql-utils" "https://pkg.csb.dev/vtex/faststore/commit/ad406fa5/@faststore/graphql-utils" + "@faststore/sdk" "https://pkg.csb.dev/vtex/faststore/commit/ad406fa5/@faststore/sdk" + "@faststore/ui" "https://pkg.csb.dev/vtex/faststore/commit/ad406fa5/@faststore/ui" "@graphql-codegen/cli" "^3.3.1" "@graphql-codegen/client-preset" "^4.1.0" "@graphql-codegen/typescript" "^3.0.4" @@ -1038,29 +1036,26 @@ tsx "^4.6.2" typescript "4.7.3" -"@faststore/graphql-utils@^3.0.13": +"@faststore/graphql-utils@https://pkg.csb.dev/vtex/faststore/commit/ad406fa5/@faststore/graphql-utils": version "3.0.13" - resolved "https://registry.yarnpkg.com/@faststore/graphql-utils/-/graphql-utils-3.0.13.tgz#b4c13cd265bd7fc13c4fa2c65e240d0b84a4c4eb" - integrity sha512-oR1PqgbbDdw1zTNFDD8pq28IQ/m1HqTSnrwE1T4Vq0BQcCPn9hyXVlNAThPnMAQXcDvG9OL68xu03thndZnCyA== + resolved "https://pkg.csb.dev/vtex/faststore/commit/ad406fa5/@faststore/graphql-utils#0bf8bc1b805e4346d10a88b188eaebe519a1195b" "@faststore/lighthouse@^3.0.7": version "3.0.7" resolved "https://registry.yarnpkg.com/@faststore/lighthouse/-/lighthouse-3.0.7.tgz#428e4ee7b7dd1dbca98539a9d52bc77f12508a33" integrity sha512-W1Kgdjk1MP0GmtiWPilcwnJdglWTy/uoMEVPZav2LDtcRdrbGzE6uKYdV2+XebLokNWKr+cg6DbKopSL8aU/xQ== -"@faststore/sdk@^3.0.7": +"@faststore/sdk@https://pkg.csb.dev/vtex/faststore/commit/ad406fa5/@faststore/sdk": version "3.0.7" - resolved "https://registry.yarnpkg.com/@faststore/sdk/-/sdk-3.0.7.tgz#9da1546d684643c75478b38c7bd8f7bc3533cf4b" - integrity sha512-t0VkHuCFKF6cSj2/WBpdEWKJ4O0Cxpkp+RjgqLgL7exWnGwkocVeFQV8Yr0xO+kSzgjG7Lq1KVegkak/FFxlXA== + resolved "https://pkg.csb.dev/vtex/faststore/commit/ad406fa5/@faststore/sdk#94ba652ca8a7ecbf67328159164d6772cc443344" dependencies: idb-keyval "^5.1.3" -"@faststore/ui@^3.0.7": - version "3.0.7" - resolved "https://registry.yarnpkg.com/@faststore/ui/-/ui-3.0.7.tgz#516d5e4806c49521b87e5840655a8d7ede72e381" - integrity sha512-NA0S9Mu5K17dP/cJ2RSI1ukn4e/0PyLZDGbmjovNnNTTXNU5pAEza599M7pCLLHXQnz1Y2vc4xZ4Sm+E5iuZEw== +"@faststore/ui@https://pkg.csb.dev/vtex/faststore/commit/ad406fa5/@faststore/ui": + version "3.0.23" + resolved "https://pkg.csb.dev/vtex/faststore/commit/ad406fa5/@faststore/ui#5a019d9be848f60a0d5a00163cf08a7fb25314fc" dependencies: - "@faststore/components" "^3.0.7" + "@faststore/components" "https://pkg.csb.dev/vtex/faststore/commit/ad406fa5/@faststore/components" include-media "^1.4.10" modern-normalize "^1.1.0" react-swipeable "^7.0.0"