@faststore/core 3.0.39 → 3.0.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +3 -3
- package/.next/cache/.tsbuildinfo +1 -1
- package/.next/cache/config.json +3 -3
- package/.next/cache/eslint/.cache_1gneedd +1 -1
- package/.next/cache/webpack/client-production/0.pack +0 -0
- package/.next/cache/webpack/client-production/index.pack +0 -0
- package/.next/cache/webpack/server-production/0.pack +0 -0
- package/.next/cache/webpack/server-production/index.pack +0 -0
- package/.next/next-minimal-server.js.nft.json +1 -1
- package/.next/next-server.js.nft.json +1 -1
- package/.next/prerender-manifest.js +1 -1
- package/.next/prerender-manifest.json +1 -1
- package/.next/routes-manifest.json +1 -1
- package/.next/server/chunks/242.js +1 -1
- package/.next/server/chunks/640.js +1 -1
- package/.next/server/chunks/646.js +2 -2
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/pages/404.js +1 -1
- package/.next/server/pages/500.js +1 -1
- package/.next/server/pages/[...slug].js +1 -1
- package/.next/server/pages/[slug]/p.js +1 -1
- package/.next/server/pages/account.js +1 -1
- package/.next/server/pages/api/graphql.js +1 -1
- package/.next/server/pages/checkout.js +1 -1
- package/.next/server/pages/en-US/404.html +2 -2
- package/.next/server/pages/en-US/404.json +1 -1
- package/.next/server/pages/en-US/500.html +2 -2
- package/.next/server/pages/en-US/500.json +1 -1
- package/.next/server/pages/en-US/account.html +2 -2
- package/.next/server/pages/en-US/account.json +1 -1
- package/.next/server/pages/en-US/checkout.html +2 -2
- package/.next/server/pages/en-US/checkout.json +1 -1
- package/.next/server/pages/en-US/login.html +2 -2
- package/.next/server/pages/en-US/login.json +1 -1
- package/.next/server/pages/en-US/s.html +2 -2
- package/.next/server/pages/en-US/s.json +1 -1
- package/.next/server/pages/en-US.html +2 -2
- package/.next/server/pages/en-US.json +1 -1
- package/.next/server/pages/index.js +1 -1
- package/.next/server/pages/login.js +1 -1
- package/.next/server/pages/s.js +1 -1
- package/.next/server/pages-manifest.json +1 -1
- package/.next/static/{ynVKyS-l-nXEqvPtRj6Vi → 86Cw_TMSOYDAh6g_cx3u9}/_buildManifest.js +1 -1
- package/.next/static/chunks/pages/[slug]/p-175b0b1e91331f8d.js +1 -0
- package/.next/trace +91 -91
- package/.turbo/turbo-build.log +2 -2
- package/.turbo/turbo-test.log +10 -10
- package/package.json +9 -9
- package/pull_request_template.md +0 -1
- package/src/components/sections/CrossSellingShelf/OverriddenDefaultCrossSellingShelf.ts +8 -0
- package/src/customizations/src/components/overrides/CrossSellingShelf.tsx +11 -0
- package/.next/static/chunks/pages/[slug]/p-be3f544bf3a14d18.js +0 -1
- package/src/components/product/ProductCard/ProductCard.stories.mdx +0 -413
- package/src/components/ui/Breadcrumb/Breadcrumb.stories.mdx +0 -197
- package/src/components/ui/Link/Link.stories.mdx +0 -272
- package/src/components/ui/ProductDescription/ProductDescription.stories.mdx +0 -66
- package/src/components/ui/SkuSelector/Selectors.stories.mdx +0 -86
- /package/.next/static/{ynVKyS-l-nXEqvPtRj6Vi → 86Cw_TMSOYDAh6g_cx3u9}/_ssgManifest.js +0 -0
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
$ yarn partytown & yarn generate && next build
|
|
2
2
|
$ partytown copylib ./public/~partytown
|
|
3
|
-
$ faststore generate-graphql -c
|
|
4
3
|
Partytown lib copied to: /home/runner/work/faststore/faststore/packages/core/public/~partytown
|
|
4
|
+
$ faststore generate-graphql -c
|
|
5
5
|
success - GraphQL schema, types, and optimizations successfully generated 🎉
|
|
6
6
|
⚠ No build cache found. Please configure build caching for faster rebuilds. Read more: https://nextjs.org/docs/messages/no-cache
|
|
7
7
|
Attention: Next.js now collects completely anonymous telemetry regarding usage.
|
|
@@ -38,7 +38,7 @@ Route (pages) Size First Load JS
|
|
|
38
38
|
├ /_app 0 B 93.5 kB
|
|
39
39
|
├ ● /[...slug] 4.47 kB 156 kB
|
|
40
40
|
├ └ css/4c4d90eb8cb1d2b7.css 7 kB
|
|
41
|
-
├ ● /[slug]/p 11.
|
|
41
|
+
├ ● /[slug]/p 11.2 kB 151 kB
|
|
42
42
|
├ └ css/96e3fddf695d6aa9.css 11.3 kB
|
|
43
43
|
├ ○ /404 1.47 kB 127 kB
|
|
44
44
|
├ ● /500 1.47 kB 127 kB
|
package/.turbo/turbo-test.log
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
$ jest
|
|
2
|
-
PASS test/server/index.test.ts (
|
|
2
|
+
PASS test/server/index.test.ts (32.278 s)
|
|
3
3
|
FastStore GraphQL Layer
|
|
4
4
|
@faststore/api
|
|
5
|
-
✓ should return a valid GraphQL schema (
|
|
6
|
-
✓ should return a valid GraphQL schema contain all expected types (
|
|
5
|
+
✓ should return a valid GraphQL schema (9 ms)
|
|
6
|
+
✓ should return a valid GraphQL schema contain all expected types (8 ms)
|
|
7
7
|
✓ should return a valid GraphQL schema contain all expected queries (2 ms)
|
|
8
|
-
✓ should return a valid GraphQL schema contain all expected mutations
|
|
8
|
+
✓ should return a valid GraphQL schema contain all expected mutations (1 ms)
|
|
9
9
|
VTEX API Extension
|
|
10
|
-
✓ getTypeDefsFromFolder function should return an Array (
|
|
10
|
+
✓ getTypeDefsFromFolder function should return an Array (12 ms)
|
|
11
11
|
Third Party API Extension
|
|
12
|
-
✓ getTypeDefsFromFolder function should return an Array (
|
|
12
|
+
✓ getTypeDefsFromFolder function should return an Array (8 ms)
|
|
13
13
|
Final Schema after merging
|
|
14
|
-
✓ should return a valid merged GraphQL schema (
|
|
14
|
+
✓ should return a valid merged GraphQL schema (52 ms)
|
|
15
15
|
Envelop
|
|
16
|
-
✓ should exist with its plugins (
|
|
17
|
-
✓ should handle options and execute (
|
|
16
|
+
✓ should exist with its plugins (37 ms)
|
|
17
|
+
✓ should handle options and execute (218 ms)
|
|
18
18
|
|
|
19
19
|
Test Suites: 1 passed, 1 total
|
|
20
20
|
Tests: 9 passed, 9 total
|
|
21
21
|
Snapshots: 0 total
|
|
22
|
-
Time:
|
|
22
|
+
Time: 32.402 s
|
|
23
23
|
Ran all test suites.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@faststore/core",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.41",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": "vtex/faststore",
|
|
6
6
|
"browserslist": "supports es6-module and not dead",
|
|
@@ -39,11 +39,11 @@
|
|
|
39
39
|
"@envelop/graphql-jit": "^1.1.1",
|
|
40
40
|
"@envelop/parser-cache": "^2.2.0",
|
|
41
41
|
"@envelop/validation-cache": "^2.2.0",
|
|
42
|
-
"@faststore/api": "^3.0.
|
|
43
|
-
"@faststore/components": "^3.0.
|
|
44
|
-
"@faststore/graphql-utils": "^3.0.
|
|
45
|
-
"@faststore/sdk": "^3.0.
|
|
46
|
-
"@faststore/ui": "^3.0.
|
|
42
|
+
"@faststore/api": "^3.0.40",
|
|
43
|
+
"@faststore/components": "^3.0.40",
|
|
44
|
+
"@faststore/graphql-utils": "^3.0.40",
|
|
45
|
+
"@faststore/sdk": "^3.0.40",
|
|
46
|
+
"@faststore/ui": "^3.0.40",
|
|
47
47
|
"@graphql-codegen/cli": "^3.3.1",
|
|
48
48
|
"@graphql-codegen/client-preset": "^4.1.0",
|
|
49
49
|
"@graphql-codegen/typescript": "^3.0.4",
|
|
@@ -82,8 +82,8 @@
|
|
|
82
82
|
"devDependencies": {
|
|
83
83
|
"@cypress/code-coverage": "^3.12.1",
|
|
84
84
|
"@envelop/testing": "^6.0.0",
|
|
85
|
-
"@faststore/cli": "^3.0.
|
|
86
|
-
"@faststore/eslint-config": "^3.0.
|
|
85
|
+
"@faststore/cli": "^3.0.40",
|
|
86
|
+
"@faststore/eslint-config": "^3.0.40",
|
|
87
87
|
"@faststore/lighthouse": "^1.12.32",
|
|
88
88
|
"@lhci/cli": "^0.9.0",
|
|
89
89
|
"@testing-library/cypress": "^10.0.1",
|
|
@@ -124,5 +124,5 @@
|
|
|
124
124
|
"node": "18.19.0",
|
|
125
125
|
"yarn": "1.19.1"
|
|
126
126
|
},
|
|
127
|
-
"gitHead": "
|
|
127
|
+
"gitHead": "67e2eda9a86109af5bb821e0813f8f1def2f9a7e"
|
|
128
128
|
}
|
package/pull_request_template.md
CHANGED
|
@@ -1,6 +1,14 @@
|
|
|
1
|
+
import { override } from 'src/customizations/src/components/overrides/CrossSellingShelf'
|
|
1
2
|
import { getOverriddenSection } from 'src/sdk/overrides/getOverriddenSection'
|
|
3
|
+
import type { SectionOverrideDefinitionV1 } from 'src/typings/overridesDefinition'
|
|
2
4
|
import CrossSellingShelf from '.'
|
|
3
5
|
|
|
6
|
+
/**
|
|
7
|
+
* This component exists to support overrides 1.0
|
|
8
|
+
*
|
|
9
|
+
* This allows users to override the default CrossSellingShelf section present in the Headless CMS
|
|
10
|
+
*/
|
|
4
11
|
export const OverriddenDefaultCrossSellingShelf = getOverriddenSection({
|
|
12
|
+
...(override as SectionOverrideDefinitionV1<'CrossSellingShelf'>),
|
|
5
13
|
Section: CrossSellingShelf,
|
|
6
14
|
})
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[103],{6693:function(e,t,r){"use strict";var n=r(2784),a=r(7041),o=r(2614),i=r(2256);t.Z=({max:e,min:t=1,initial:r,disabled:l=!1,onChange:s,testId:c="fs-quantity-selector",...u})=>{let[d,p]=(0,n.useState)(r??t),m=d===t,f=d===e,changeQuantity=e=>{let t=validateQuantityBounds(d+e);s?.(t),p(t)};function validateQuantityBounds(r){let n=t?Math.max(r,t):r;return e?Math.min(n,e):n}return(0,n.useEffect)(()=>{r&&p(r)},[r]),n.createElement("div",{"data-fs-quantity-selector":l?"disabled":"true","data-testid":c,...u},n.createElement(a.Z,{"data-quantity-selector-button":"left",icon:n.createElement(o.Z,{name:"Minus",width:16,height:16,weight:"bold"}),"aria-label":"Decrement Quantity","aria-controls":"quantity-selector-input",disabled:m||l,onClick:()=>changeQuantity(-1),testId:`${c}-left-button`,size:"small"}),n.createElement(i.Z,{"data-quantity-selector-input":!0,id:"quantity-selector-input","aria-label":"Quantity",value:d,onChange:function(e){let t=e.currentTarget.value;Number.isNaN(Number(t))||p(()=>{let e=validateQuantityBounds(Number(t));return s?.(e),e})},disabled:l}),n.createElement(a.Z,{"data-quantity-selector-button":"right","aria-controls":"quantity-selector-input","aria-label":"Increment Quantity",disabled:f||l,icon:n.createElement(o.Z,{name:"Plus",width:16,height:16,weight:"bold"}),onClick:()=>changeQuantity(1),testId:`${c}-right-button`,size:"small"}))}},7936:function(e,t,r){"use strict";r.d(t,{j:function(){return _}});var n=r(9499),a=r(7296),o=r(2784),i=r(9089),l=r(4177),s=r.n(l),c=r(4960),u=r(4329),d=r(2614),p=r(727);let m=(0,o.createContext)({isOpen:!1,dropdownButtonRef:null,selectedDropdownItemIndexRef:null,dropdownItemsRef:null,id:"fs-dropdown"});var Dropdown_Dropdown=({children:e,isOpen:t=!1,onDismiss:r,id:n="fs-dropdown"})=>{let[a,i]=(0,o.useState)(t),l=(0,o.useRef)([]),s=(0,o.useRef)(0),c=(0,o.useRef)(null),u=(0,o.useCallback)(()=>{i(!1),r?.()},[r]),open=()=>{i(!0)},d=(0,o.useCallback)(()=>{i(e=>(e&&(r?.(),c.current?.focus()),!e))},[r]);(0,o.useEffect)(()=>{i(t)},[t]),(0,o.useEffect)(()=>{a&&l?.current[0]?.focus()},[a]),(0,o.useEffect)(()=>{let e=!0,event=t=>{let r=l?.current.some(e=>t.target===e);if(e){e=!1;return}r||u()};return a?document.addEventListener("click",event):document.removeEventListener("click",event),()=>{document.removeEventListener("click",event)}},[u,a]);let p=(0,o.useMemo)(()=>({isOpen:a,close:u,open,toggle:d,dropdownButtonRef:c,onDismiss:r,selectedDropdownItemIndexRef:s,dropdownItemsRef:l,id:n}),[u,n,a,r,d]);return o.createElement(m.Provider,{value:p},e)},f=r(3339);let useDropdown=()=>{let e=(0,o.useContext)(m);if(void 0===e)throw Error("Do not use useDropdown hook outside the Dropdown context.");return e},b=(0,o.forwardRef)(function({testId:e="fs-dropdown-button","aria-label":t,children:r,...n},a){let{toggle:i,dropdownButtonRef:l,isOpen:s,id:c}=useDropdown();return(0,o.useImperativeHandle)(a,()=>l.current,[l]),o.createElement(f.Z,{"data-fs-dropdown-button":!0,onClick:i,"data-testid":e,ref:l,"aria-label":t,"aria-expanded":s,"aria-haspopup":"menu","aria-controls":c,variant:"tertiary",...n},r)});var g=r(8316);let useDropdownPosition=()=>{let{dropdownButtonRef:e}=useDropdown(),t="undefined"!=typeof window,r=e?.current?.getBoundingClientRect(),n=r?.top??0,a=r?.height??0,o=r?.left??0,i=t?document?.documentElement?.scrollTop:0,l=t?document?.documentElement?.scrollLeft:0;return{position:"absolute",top:n+a+i,left:o+l}};var Dropdown_DropdownMenu=({children:e,testId:t="fs-dropdown-menu",size:r="regular",style:n,...a})=>{let{isOpen:i,close:l,dropdownItemsRef:s,selectedDropdownItemIndexRef:c,dropdownButtonRef:u,id:d}=useDropdown(),p=useDropdownPosition(),m=o.Children.toArray(e).length,handleDownPress=()=>{c.current<m-1?c.current++:c.current=0,s?.current[c.current]?.focus()},handleUpPress=()=>{c.current>0?c.current--:c.current=m-1,s?.current[c.current]?.focus()},handleHomePress=()=>{c.current=0,s?.current[c.current]?.focus()},handleEndPress=()=>{c.current=m-1,s?.current[c.current]?.focus()},handleEscapePress=()=>{l?.(),u?.current?.focus()};return i?(0,g.createPortal)(o.createElement("div",{role:"presentation","data-fs-dropdown-overlay":!0,onKeyDown:e=>{e.defaultPrevented||"Enter"===e.key||(e.preventDefault(),"Escape"===e.key&&handleEscapePress(),"ArrowDown"===e.key&&handleDownPress(),"ArrowUp"===e.key&&handleUpPress(),"Home"===e.key&&handleHomePress(),"End"===e.key&&handleEndPress(),e.stopPropagation())},"data-testid":`${t}-overlay`},o.createElement("div",{role:"menu","aria-orientation":"vertical","data-fs-dropdown-menu":!0,"data-fs-dropdown-menu-size":r,"data-testid":t,style:{...p,...n},id:d,...a},e)),document.body):(s.current=[],null)};let v=(0,o.forwardRef)(function({children:e,icon:t,onClick:r,testId:n="fs-dropdown-item",...a},i){let{dropdownItemsRef:l,selectedDropdownItemIndexRef:s,close:c}=useDropdown(),[u,d]=(0,o.useState)(0),p=(0,o.useRef)(),onFocusItem=()=>{s.current=u,l?.current[s.current]?.focus()};return(0,o.useImperativeHandle)(i,()=>p.current,[]),o.createElement("button",{"data-fs-dropdown-item":!0,"data-testid":n,ref:e=>{e&&!l?.current.includes(e)&&(l?.current.push(e),d(l?.current.findIndex(t=>t===e)??0)),p.current=e},onFocus:onFocusItem,onMouseEnter:onFocusItem,onClick:e=>{r?.(e),c?.()},role:"menuitem",tabIndex:-1,"data-index":u,...a},!!t&&t,e)});var y=r(4564),Breadcrumb_Divider=({divider:e,testId:t})=>{let r={"data-fs-breadcrumb-divider":!0,"aria-hidden":!0,"data-testid":`${t}-divider`};return o.isValidElement(e)?o.cloneElement(e,r):o.createElement("span",{...r},e??"/")},Breadcrumb_ListItem=({children:e,isLastItem:t,divider:r,testId:n})=>{let a={"data-testid":`${n}-item`,"data-fs-breadcrumb-item":!t||"current","aria-current":t?"page":void 0};return o.isValidElement(e)?o.createElement("li",{"data-fs-breadcrumb-list-item":!0},o.cloneElement(e,a),t?null:o.createElement(Breadcrumb_Divider,{divider:r,testId:n})):o.createElement("li",{"data-fs-breadcrumb-list-item":!0},o.createElement("span",{...a},e,t?null:o.createElement(Breadcrumb_Divider,{divider:r,testId:n})))};let h=(0,o.forwardRef)(function({children:e,divider:t="",testId:r="fs-breadcrumb",...n},a){return o.createElement("nav",{"aria-label":"Breadcrumb",role:"navigation",ref:a,"data-fs-breadcrumb":!0,"data-testid":r,...n},o.createElement(y.Z,{as:"ol","data-fs-breadcrumb-list":!0,"data-fs-content":"breadcrumb"},o.Children.toArray(e).map((e,n,a)=>{let i=n===a.length-1;return o.createElement(Breadcrumb_ListItem,{isLastItem:i,divider:t,key:`breadcrumb-${n}`,testId:r},e)})))}),j=(0,o.forwardRef)(function({children:e,divider:t="",testId:r="fs-breadcrumb",breadcrumbList:n,isDesktop:a=!1,renderLink:i,homeLink:l,dropdownButtonIcon:s=o.createElement(d.Z,{name:"DotsThree"}),collapsedItemsIcon:c=o.createElement(d.Z,{"data-fs-dropdown-item-icon":!0,name:"ArrowElbowDownRight"}),...u},m){let f=a?n[0]:null,g=a?n.slice(1,-2):n.slice(0,-2),y=n.slice(-2),j=n.length>4,P=(0,o.useCallback)(e=>{let t=i?.(e),r=e.collapsed?{"data-fs-breadcrumb-dropdown-link":!0}:{"data-fs-breadcrumb-link":!0};return t?(0,o.cloneElement)(t,{...r,key:e.itemProps.position}):o.createElement(p.Z,{...r,href:e.itemProps.item,key:e.itemProps.position},e.itemProps.name)},[i]);return o.createElement(h,{ref:m,"data-fs-breadcrumb-is-desktop":a,...u},l,!j&&n.map((e,t)=>n.length===t+1?o.createElement("span",{key:String(e.position)},e.name):P({itemProps:e,collapsed:!1})),j&&f&&P({itemProps:f,collapsed:!1}),j&&o.createElement(Dropdown_Dropdown,null,o.createElement(b,{"aria-label":"View More","data-fs-breadcrumb-dropdown-button":!0,size:"small"},s),o.createElement(Dropdown_DropdownMenu,{"data-fs-breadcrumb-dropdown-menu":!0},g.map(e=>o.createElement(v,{"data-fs-breadcrumb-dropdown-item":!0,key:String(e.position),icon:c},P({itemProps:e,collapsed:!0}))))),j&&y.map((e,t)=>y.length===t+1?o.createElement("span",{key:String(e.position)},e.name):P({itemProps:e,collapsed:!1})))});var P={Breadcrumb:({breadcrumbList:e,...t})=>o.createElement(o.Fragment,null,o.createElement(j,{breadcrumbList:e,...t}),o.createElement(j,{breadcrumbList:e,isDesktop:!0,...t})),Icon:d.Z},S=r(2322);function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}var O=(0,a.B)("Breadcrumb",function(e){var t,r,a,o,l,d,p,m,f,b=Object.assign({},e),{Breadcrumb:g}=(0,u.r3)(),v=(0,c.qt)(),y=(0,c.OJ)(v)?null==v?void 0:null===(t=v.data)||void 0===t?void 0:null===(r=t.collection)||void 0===r?void 0:null===(a=r.seo)||void 0===a?void 0:a.title:"All Products",h=(0,c.tS)(v)?null==v?void 0:null===(o=v.data)||void 0===o?void 0:null===(l=o.product)||void 0===l?void 0:null===(d=l.breadcrumbList)||void 0===d?void 0:d.itemListElement:(0,c.OJ)(v)?null==v?void 0:null===(p=v.data)||void 0===p?void 0:null===(m=p.collection)||void 0===m?void 0:null===(f=m.breadcrumbList)||void 0===f?void 0:f.itemListElement:[{item:"/",name:y,position:1}];return(0,S.jsx)(i.Z,{className:"".concat(s().section," section-breadcrumb"),children:(0,S.jsx)(g.Component,function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(r),!0).forEach(function(t){(0,n.Z)(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}({breadcrumbList:h},b))})},P),w=(0,o.memo)(O);function OverriddenDefaultBreadcrumb_ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function OverriddenDefaultBreadcrumb_objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?OverriddenDefaultBreadcrumb_ownKeys(Object(r),!0).forEach(function(t){(0,n.Z)(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):OverriddenDefaultBreadcrumb_ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var _=(0,a.v)(OverriddenDefaultBreadcrumb_objectSpread(OverriddenDefaultBreadcrumb_objectSpread({},{section:"Breadcrumb"}),{},{Section:w}))},6429:function(e,t,r){"use strict";r.r(t),r.d(t,{__N_SSG:function(){return ex},default:function(){return eC}});var n,a=r(9499),o=r(9996),i=r.n(o),l=r(5351),s=r(1550),c=r(7542),u=r(9410),d=r(9089),p=r(9919),m=r.n(p),f=r(2322),b=r(7936),g=r(7296),v=r(2784),y=r(8618),h=r(7704),j=r(4960),P=r(9322),S=r.n(P),O=r(6737),w=r(6068),_=r(9558),E={ProductShelf:O.Z,__experimentalCarousel:_.Z,__experimentalProductCard:w.Z},D=(0,g.B)("CrossSellingShelf",e=>{var t,r,n,{numberOfItems:a,itemsPerPage:o,title:i,kind:l}=e,{ref:s,inView:c}=(0,h.YD)(),u=(0,j.al)(),p=null==u?void 0:null===(t=u.data)||void 0===t?void 0:null===(r=t.product)||void 0===r?void 0:null===(n=r.isVariantOf)||void 0===n?void 0:n.productGroupID,m=(0,v.useMemo)(()=>[{key:l,value:p}],[l,p]);return(0,f.jsx)(d.Z,{className:"".concat(S().section," section-product-shelf layout__section"),ref:s,children:(0,f.jsx)(y.Z,{inView:c,numberOfItems:a,itemsPerPage:o,title:i,selectedFacets:m})})},E),k=(0,g.v)({Section:D}),x=r(1072),C=r(113),I=r(1868),Z=r(1516),B=r(783),L=r(7734),N=r(7583),ProductDescription_ProductDescription=function(e){var{descriptionData:t,initiallyExpanded:r="first"}=e,n=(0,v.useMemo)(()=>({none:[],first:[0],all:[0,1,2,3]}),[]),{0:a,1:o}=(0,v.useState)(new Set(n[r]));return(0,f.jsx)("section",{"data-fs-product-description":!0,children:(0,f.jsx)(Z.Z,{indices:a,onChange:e=>{o(t=>{var r=new Set(t);return t.has(e)?r.delete(e):r.add(e),r})},"aria-label":"Product Details Content",children:t.map((e,t)=>{var{title:r,content:n}=e;return(0,f.jsxs)(B.Z,{as:"article",index:t,prefixId:"product-description","data-fs-product-details-description":!0,children:[(0,f.jsx)(L.Z,{children:r}),(0,f.jsx)(N.Z,{children:(0,f.jsx)("div",{"data-fs-product-details-description-content":!0,dangerouslySetInnerHTML:{__html:n}})})]},String(t))})})})},G=r(6652),M=r(3218),useBuyButton=e=>{var{openCart:t}=(0,G.l)(),{currency:{code:r}}=(0,I.kP)();return{onClick:(0,v.useCallback)(n=>{n.preventDefault(),e&&((0,x._)({name:"add_to_cart",params:{currency:r,value:e.price*e.quantity,items:[{item_id:e.itemOffered.isVariantOf.productGroupID,item_name:e.itemOffered.isVariantOf.name,item_brand:e.itemOffered.brand.name,item_variant:e.itemOffered.sku,quantity:e.quantity,price:e.price,discount:e.listPrice-e.price,currency:r,item_variant_name:e.itemOffered.name,product_reference_id:e.itemOffered.gtin}]}}),M.i8.addItem(e),t())},[r,e,t]),"data-testid":"buy-button","data-sku":null==e?void 0:e.itemOffered.sku,"data-seller":null==e?void 0:e.seller.identifier}},K=r(4730),R=r(1664),V=r.n(R),T=r(8918),A=r(4329),q=["src","alt"],F=["slugsMap","activeVariations","availableVariations"];function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function _objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(r),!0).forEach(function(t){(0,a.Z)(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var ImageComponent=e=>{var{src:t,alt:r}=e,n=(0,K.Z)(e,q);return(0,f.jsx)(T.Z,_objectSpread({src:t,alt:r,width:34,height:34},n))},SkuSelector_Selectors=function(e){var{slugsMap:t,activeVariations:r,availableVariations:n}=e,a=(0,K.Z)(e,F),{SkuSelector:o}=(0,A.r3)();return(0,f.jsx)("section",_objectSpread(_objectSpread({},a),{},{children:n&&Object.keys(n).map(e=>{var a,i,l,s,c;return(0,v.createElement)(o.Component,_objectSpread(_objectSpread({ImageComponent:ImageComponent},o.props),{},{key:e,skuPropertyName:e,availableVariations:n,activeVariations:r,slugsMap:t,linkProps:_objectSpread(_objectSpread({},null!==(a=o.props.linkProps)&&void 0!==a?a:{}),{},{as:null!==(i=null===(l=o.props.linkProps)||void 0===l?void 0:l.as)&&void 0!==i?i:V(),legacyBehavior:null!==(s=null===(c=o.props.linkProps)||void 0===c?void 0:c.legacyBehavior)&&void 0!==s&&s})}))})}))};function AddToCartLoadingSkeleton(){return(0,f.jsxs)("svg",{role:"img",width:"100%",height:"48","aria-labelledby":"loading-aria",viewBox:"0 0 112 48",preserveAspectRatio:"none",children:[(0,f.jsx)("title",{id:"loading-aria",children:"Loading..."}),(0,f.jsx)("rect",{x:"0",y:"0",width:"100%",height:"100%",clipPath:"url(#clip-path)",style:{fill:'url("#fill")'}}),(0,f.jsxs)("defs",{children:[(0,f.jsx)("clipPath",{id:"clip-path",children:(0,f.jsx)("rect",{x:"0",y:"0",rx:"2",ry:"2",width:"112",height:"48"})}),(0,f.jsxs)("linearGradient",{id:"fill",children:[(0,f.jsx)("stop",{offset:"0.599964",stopColor:"#f3f3f3",stopOpacity:"1",children:(0,f.jsx)("animate",{attributeName:"offset",values:"-2; -2; 1",keyTimes:"0; 0.25; 1",dur:"2s",repeatCount:"indefinite"})}),(0,f.jsx)("stop",{offset:"1.59996",stopColor:"#ecebeb",stopOpacity:"1",children:(0,f.jsx)("animate",{attributeName:"offset",values:"-1; -1; 2",keyTimes:"0; 0.25; 1",dur:"2s",repeatCount:"indefinite"})}),(0,f.jsx)("stop",{offset:"2.59996",stopColor:"#f3f3f3",stopOpacity:"1",children:(0,f.jsx)("animate",{attributeName:"offset",values:"0; 0; 3",keyTimes:"0; 0.25; 1",dur:"2s",repeatCount:"indefinite"})})]})]})]})}function ProductDetailsSettings_ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function ProductDetailsSettings_objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ProductDetailsSettings_ownKeys(Object(r),!0).forEach(function(t){(0,a.Z)(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ProductDetailsSettings_ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var ProductDetails_ProductDetailsSettings=function(e){var{product:t,buyButtonTitle:r,isValidating:n,quantity:a,setQuantity:o,buyButtonIcon:{icon:i,alt:l},notAvailableButtonTitle:s}=e,{BuyButton:c,Icon:u,ProductPrice:d,QuantitySelector:p,__experimentalNotAvailableButton:m}=(0,A.r3)(),{id:b,sku:g,gtin:y,name:h,brand:j,isVariantOf:P,isVariantOf:{skuVariants:S},image:O,additionalProperty:w,offers:{offers:[{availability:_,price:E,listPrice:D,seller:k}]}}=t,x=useBuyButton({id:b,price:E,listPrice:D,seller:k,quantity:a,itemOffered:{sku:g,name:h,gtin:y,image:O,brand:j,isVariantOf:P,additionalProperty:w}}),I=(0,v.useMemo)(()=>"https://schema.org/OutOfStock"===_,[_]);return(0,f.jsxs)(f.Fragment,{children:[!I&&(0,f.jsxs)("section",{"data-fs-product-details-values":!0,children:[(0,f.jsx)(d.Component,ProductDetailsSettings_objectSpread({"data-fs-product-details-prices":!0,value:E,listPrice:D,formatter:C.P},d.props)),(0,f.jsx)(p.Component,ProductDetailsSettings_objectSpread(ProductDetailsSettings_objectSpread({min:1,max:10},p.props),{},{onChange:o}))]}),S&&(0,f.jsx)(SkuSelector_Selectors,{slugsMap:S.slugsMap,availableVariations:S.availableVariations,activeVariations:S.activeVariations,"data-fs-product-details-selectors":!0}),n?(0,f.jsx)(AddToCartLoadingSkeleton,{}):(0,f.jsx)(()=>I?(0,f.jsx)(m.Component,{children:s}):(0,f.jsx)(c.Component,ProductDetailsSettings_objectSpread(ProductDetailsSettings_objectSpread(ProductDetailsSettings_objectSpread({},c.props),{},{icon:(0,f.jsx)(u.Component,ProductDetailsSettings_objectSpread(ProductDetailsSettings_objectSpread({},u.props),{},{name:null!=i?i:u.props.name,"aria-label":null!=l?l:u.props["aria-label"]}))},x),{},{children:r||"Add to Cart"})),{})]})},Q=r(1145),$=r.n(Q),z=r(3024);let H=(0,v.forwardRef)(function({title:e,label:t,refTag:r="Ref.: ",refNumber:n,testId:a="fs-product-title",ratingValue:o,...i},l){return v.createElement("header",{ref:l,"data-fs-product-title":!0,"data-testid":a,...i},v.createElement("div",{"data-fs-product-title-header":!0},e,!!t&&t),(n||o)&&v.createElement("div",{"data-fs-product-title-addendum":!0},o&&v.createElement(z.Z,{value:o}),n&&v.createElement(v.Fragment,null,r," ",n)))});var U=r(2946),J=r(3339),W=r(2614),Y=r(9088),X=r(6693),ee=r(1953),et=r(727),er=r(5450);let getImageName=e=>{let t=new URL(e).pathname,r=t.split("/").slice(-1)[0];return r},useDefineVariant=(e,t)=>(0,v.useMemo)(()=>{if(t)return t;let r=e.every(e=>e.hexColor);if(r)return"color";let n=e[0]?.src&&getImageName(e[0].src);if(n&&1===e.length)return"image";let a=e.every(e=>{if(!e.src)return!0;let t=getImageName(e.src);return t===n});return a?"label":"image"},[e,t]),useSkuSlug=(e,t,r,n)=>{let a=(0,v.useCallback)(a=>{if(n)return{getItemHrefProp:n};let o=`/${function(e,t,r){let n=Object.entries(t).flat().join("-");if(n in e)return e[n];let a=Object.keys(e),o=a.find(e=>e.includes(`${r}-${t[r]}`));return e[o??a[0]]}(t,{...e,[r]:a.value},r)}/p`;return o},[e,n,t,r]);return{getItemHref:a}},ImageComponentFallback=({src:e,alt:t,...r})=>v.createElement("img",{src:e,alt:t,...r}),en=(0,v.forwardRef)(function({availableVariations:e,skuPropertyName:t,testId:r,activeVariations:n,linkProps:a,slugsMap:o,getItemHref:i,ImageComponent:l=ImageComponentFallback,variant:s,...c},u){let d=n[t],p=e[t],m=useDefineVariant(p,s),{getItemHref:f}=useSkuSlug(n,o,t,i);return v.createElement("div",{ref:u,"data-fs-sku-selector":!0,"data-testid":r,"data-fs-sku-selector-variant":m,...c},t&&v.createElement(ee.Z,{"data-fs-sku-selector-title":!0},t,": ",v.createElement("strong",null,d)),v.createElement("ul",{"data-fs-sku-selector-list":!0},p.map((e,r)=>v.createElement("li",{key:String(r),title:e.label,"data-fs-sku-selector-option":!0,"data-fs-sku-selector-disabled":e.disabled,"data-fs-sku-selector-checked":e.value===n[t]},v.createElement(et.Z,{"data-fs-sku-selector-option-link":!0,href:f(e),...a},v.createElement(er.Z,{text:e.label})),"label"===m&&v.createElement("span",null,e.value),"image"===m&&l&&v.createElement("span",null,v.createElement(l,{src:e.src??"",alt:e.alt??"","data-fs-sku-selector-option-image":!0})),"color"===m&&v.createElement("span",null,v.createElement("div",{"data-fs-sku-selector-option-color":!0,title:e.value,style:{"--data-fs-sku-selector-option-color-bkg-color":e.hexColor}}))))))});var ea=r(3779);let eo=(0,v.forwardRef)(function({children:e,variant:t="colored",testId:r="fs-table",...n},a){return v.createElement("div",{"data-fs-table":!0},v.createElement("table",{ref:a,"data-fs-table-content":!0,"data-fs-table-variant":t,"data-testid":r,...n},e))}),ei=(0,v.forwardRef)(function({children:e,testId:t="fs-table-body",...r},n){return v.createElement("tbody",{ref:n,"data-testid":t,"data-fs-table-body":!0,...r},e)}),el=(0,v.forwardRef)(function({children:e,testId:t="fs-table-row",...r},n){return v.createElement("tr",{ref:n,"data-fs-table-row":!0,"data-testid":t,...r},e)}),es=(0,v.forwardRef)(function({scope:e,align:t,children:r,variant:n="data",testId:a="fs-table-cell",...o},i){return v.createElement("header"===n?"th":"td",{ref:i,"data-fs-table-cell":n,"data-fs-table-cell-align":t,"data-testid":a,scope:e,...o},r)});var ec=r(9767),eu=r(7041);let moveScroll=(e,t)=>{e&&(e.scrollHeight>e.clientHeight?(e.style.overflow="auto",window.requestAnimationFrame(()=>e.scrollTo({top:t,behavior:"smooth"})),setTimeout(()=>e.style.overflow="hidden",2e3)):e.scrollLeft+=t)},hasScroll=e=>!!e&&(e.scrollHeight>e.clientHeight||e.scrollWidth>e.clientWidth);var ImageGallery_ImageGallerySelector=function({images:e,onSelect:t,ImageComponent:r,currentImageIdx:n,testId:a="fs-image-gallery-selector","aria-label":o="Product Images",navigationButtonLeftAriaLabel:i="Backward slide image selector",navigationButtonRightAriaLabel:l="Forward slide image selector"}){let s=(0,v.useRef)(null),c=hasScroll(s.current),[u,d]=(0,v.useState)(!0),[p,m]=(0,v.useState)(!0),f=(0,v.useCallback)((t,r)=>{0===t&&d(r),t===e.length-1&&m(r)},[e.length]);return v.createElement("section",{"data-fs-image-gallery-selector":!0,"data-testid":a,"aria-label":o},c&&!u&&v.createElement("div",{"data-fs-image-gallery-selector-control":!0},v.createElement(eu.Z,{"data-fs-image-gallery-selector-control-button":!0,"aria-label":i,icon:v.createElement(W.Z,{name:"ArrowLeft"}),onClick:()=>moveScroll(s.current,-400)})),v.createElement("div",{"data-fs-image-gallery-selector-elements":!0,ref:s},e.map((a,o)=>v.createElement(h.df,{key:o,onChange:e=>f(o,e)},v.createElement(J.Z,{key:o,"aria-label":`${a.alternateName} - Image ${o+1} of ${e.length}`,onClick:()=>t(o),"data-fs-image-gallery-selector-thumbnail":o===n?"selected":"true"},v.createElement(r,{url:a.url??"",loading:0===o?"eager":"lazy",alternateName:a.alternateName??""}))))),c&&!p&&v.createElement("div",{"data-fs-image-gallery-selector-control":!0},v.createElement(eu.Z,{"data-fs-image-gallery-selector-control-button":!0,"aria-label":l,icon:v.createElement(W.Z,{name:"ArrowLeft"}),onClick:()=>moveScroll(s.current,400)})))};let ed=(0,v.forwardRef)(function({images:e,children:t,ImageComponent:r,selectedImageIdx:n,setSelectedImageIdx:a,testId:o="fs-image-gallery",...i},l){let s=e.length>1;return v.createElement("section",{ref:l,"data-fs-image-gallery":s?"with-selector":"without-selector","data-testid":o,...i},t,s&&v.createElement(ImageGallery_ImageGallerySelector,{images:e,onSelect:a,currentImageIdx:n,ImageComponent:r}))});var ep=r(1163),em=["images"];function ImageGallery_ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function ImageGallery_objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ImageGallery_ownKeys(Object(r),!0).forEach(function(t){(0,a.Z)(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ImageGallery_ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var ImageGallery_ImageComponent=e=>{var{url:t,alternateName:r}=e,{__experimentalImageGalleryImage:n}=(0,A.r3)();return(0,f.jsx)(n.Component,{src:t,alt:r,width:68,height:68})},ef=r(29),eb=r(3523),eg=r(2495),ev=eb.Pq,ey=(n=(0,ef.Z)(function*(e){var{items:t,postalCode:r,country:n}=e;return yield(0,eg.W)(ev,{items:t,postalCode:r,country:n})}),function(e){return n.apply(this,arguments)});function useShippingSimulation_ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function useShippingSimulation_objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?useShippingSimulation_ownKeys(Object(r),!0).forEach(function(t){(0,a.Z)(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):useShippingSimulation_ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var createEmptySimulation=()=>({input:{postalCode:"",displayClearButton:!1,errorMessage:""},shippingSimulation:void 0}),reducer=(e,t)=>{var{type:r}=t;switch(r){case"clear":return createEmptySimulation();case"update":var{payload:n}=t;return{input:useShippingSimulation_objectSpread(useShippingSimulation_objectSpread({},e.input),n.input),shippingSimulation:useShippingSimulation_objectSpread(useShippingSimulation_objectSpread({},e.shippingSimulation),n.shippingSimulation)};case"onInput":var{payload:a}=t;return useShippingSimulation_objectSpread(useShippingSimulation_objectSpread({},e),{},{input:useShippingSimulation_objectSpread({},a)});case"onError":var{payload:o}=t;return useShippingSimulation_objectSpread(useShippingSimulation_objectSpread({},e),{},{input:useShippingSimulation_objectSpread(useShippingSimulation_objectSpread({},e.input),o)});default:throw Error("Action ".concat(r," not implemented"))}},useShippingSimulation=e=>{var{0:{input:t,shippingSimulation:r},1:n}=(0,v.useReducer)(reducer,null,createEmptySimulation),{country:a,postalCode:o}=(0,I.kP)(),{postalCode:i}=t,l=(0,v.useRef)(i);return(0,v.useEffect)(()=>{o&&!l.current&&function(){_fetchShipping.apply(this,arguments)}();function _fetchShipping(){return(_fetchShipping=(0,ef.Z)(function*(){var t=(yield ey({country:a,postalCode:null!=o?o:"",items:[e]})).shipping;n({type:"update",payload:{input:{postalCode:null!=o?o:"",displayClearButton:!0,errorMessage:""},shippingSimulation:t}})})).apply(this,arguments)}},[a,o,e]),{input:t,shippingSimulation:r,handleOnClear:()=>{n({type:"clear"})},handleSubmit:(0,v.useCallback)((0,ef.Z)(function*(){try{var t=(yield ey({country:a,postalCode:null!=i?i:"",items:[e]})).shipping;n({type:"update",payload:{input:{displayClearButton:!0,errorMessage:""},shippingSimulation:t}})}catch(e){n({type:"onError",payload:{displayClearButton:!0,errorMessage:"You entered an invalid Postal Code"}})}}),[a,e,i]),handleOnInput:(0,v.useCallback)(e=>{var t=e.currentTarget.value;t?n({type:"onInput",payload:{postalCode:t,displayClearButton:!1,errorMessage:""}}):n({type:"clear"})},[])}},eh=["productShippingInfo","formatter","inputLabel","title","idkPostalCodeLinkProps"];function ShippingSimulation_ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}var ej={ProductTitle:H,DiscountBadge:U.Z,BuyButton:function({testId:e="fs-buy-button",icon:t,children:r,...n}){return v.createElement(J.Z,{"data-fs-buy-button":!0,icon:t,iconPosition:"left","data-testid":e,...n},r)},Icon:W.Z,ProductPrice:Y.Z,QuantitySelector:X.Z,SkuSelector:en,ShippingSimulation:function({testId:e="fs-shipping-simulation",formatter:t,title:r="Shipping",inputLabel:n="Postal Code",optionsLabel:a="Shipping options",idkPostalCodeLinkProps:o,onInput:i,onSubmit:l,onClear:s,location:c,options:u=[],displayClearButton:d=!1,errorMessage:p,postalCode:m,...f}){let b=!!u&&u.length>0;return v.createElement("section",{"data-fs-shipping-simulation":!0,"data-fs-shipping-simulation-empty":b?"false":"true","data-testid":e,...f},v.createElement("h2",{"data-fs-shipping-simulation-title":!0},r),v.createElement(ea.Z,{actionable:!0,error:p,id:`${e}-input-field`,label:n,value:m,onInput:e=>i?.(e),onSubmit:()=>l?.(),onClear:()=>s?.(),displayClearButton:d}),v.createElement(et.Z,{href:"/","data-fs-shipping-simulation-link":!0,size:"small",...o},o?.children??v.createElement(v.Fragment,null,"I don't know my Postal Code",v.createElement(W.Z,{name:"ArrowSquareOut",width:20,height:20}))),b&&v.createElement(v.Fragment,null,v.createElement("header",{"data-fs-shipping-simulation-header":!0},v.createElement("h3",{"data-fs-shipping-simulation-subtitle":!0},a),v.createElement("p",{"data-fs-shipping-simulation-location":!0},c)),v.createElement(eo,null,v.createElement(ei,null,u.map(e=>v.createElement(el,{key:e.carrier},v.createElement(es,{align:"left"},e.carrier),v.createElement(es,null,e.localizedEstimates),v.createElement(es,{align:"right"},e.price&&v.createElement(ec.Z,{formatter:t,value:e.price,SRText:"price"}))))))))},ImageGallery:ed,ImageGalleryViewer:({children:e})=>v.createElement(v.Fragment,null,e),__experimentalImageGalleryImage:T.Z,__experimentalImageGallery:e=>{var t,{images:r}=e,n=(0,K.Z)(e,em),{ImageGallery:a,ImageGalleryViewer:o,__experimentalImageGalleryImage:i}=(0,A.r3)(),{0:l,1:s}=(0,v.useState)(0),c=null!==(t=r[l])&&void 0!==t?t:r[0],u=(0,ep.useRouter)().asPath;return(0,v.useEffect)(()=>s(0),[u]),(0,f.jsx)(a.Component,ImageGallery_objectSpread(ImageGallery_objectSpread(ImageGallery_objectSpread({},a.props),{},{images:r,ImageComponent:ImageGallery_ImageComponent,selectedImageIdx:l,setSelectedImageIdx:s},n),{},{children:(0,f.jsx)(o.Component,ImageGallery_objectSpread(ImageGallery_objectSpread({},o.props),{},{children:(0,f.jsx)(i.Component,ImageGallery_objectSpread(ImageGallery_objectSpread({sizes:"(max-width: 360px) 50vw, (max-width: 768px) 90vw, 50vw",width:691,height:691*(3/4),loading:"eager"},i.props),{},{src:c.url,alt:c.alternateName}))}))}))},__experimentalShippingSimulation:function(e){var t,r,n,o,i,l,{productShippingInfo:s,formatter:c,inputLabel:u,title:d,idkPostalCodeLinkProps:p}=e,m=(0,K.Z)(e,eh),{ShippingSimulation:b}=(0,A.r3)(),{input:g,shippingSimulation:v,handleSubmit:y,handleOnInput:h,handleOnClear:j}=useShippingSimulation(s),{postalCode:P,displayClearButton:S,errorMessage:O}=g,w=null!==(t=[null==v?void 0:null===(r=v.address)||void 0===r?void 0:r.neighborhood,null==v?void 0:null===(n=v.address)||void 0===n?void 0:n.city].filter(Boolean).join(" / "))&&void 0!==t?t:"",_=null!==(o=null==v?void 0:null===(i=v.logisticsInfo)||void 0===i?void 0:null===(l=i[0])||void 0===l?void 0:l.slas)&&void 0!==o?o:[];return(0,f.jsx)(b.Component,function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ShippingSimulation_ownKeys(Object(r),!0).forEach(function(t){(0,a.Z)(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ShippingSimulation_ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}({formatter:c,onInput:h,onSubmit:y,onClear:j,location:w,options:_,address:null==v?void 0:v.address,displayClearButton:S,errorMessage:O,postalCode:P,inputLabel:u,title:d,idkPostalCodeLinkProps:p},m))},__experimentalNotAvailableButton:function(e){var{children:t}=e;return(0,f.jsx)(J.Z,{variant:"primary",disabled:!0,"data-fs-buy-button":!0,children:t})}};function ProductDetails_ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function ProductDetails_objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ProductDetails_ownKeys(Object(r),!0).forEach(function(t){(0,a.Z)(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ProductDetails_ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var eP=(0,g.B)("ProductDetails",function(e){var t,r,{productTitle:{refNumber:n,discountBadge:{showDiscountBadge:a,size:o}},buyButton:{icon:i,title:l},shippingSimulator:{title:s,inputLabel:c,shippingOptionsTableTitle:u,link:{to:p,text:m}},productDescription:{title:b,initiallyExpanded:g,displayDescription:y},notAvailableButton:{title:h}}=e,{DiscountBadge:P,ProductTitle:S,__experimentalImageGallery:O,__experimentalShippingSimulation:w,__experimentalNotAvailableButton:_}=(0,A.r3)(),{currency:E}=(0,I.kP)(),{0:D,1:k}=(0,v.useState)(1),Z=(0,j.al)(),{product:B,isValidating:L}=null==Z?void 0:Z.data;if(!B)throw Error("NotFound");var{id:N,sku:G,gtin:M,name:K,brand:R,isVariantOf:V,description:T,isVariantOf:{name:q,productGroupID:F},image:Q,offers:{offers:[{availability:z,price:H,listPrice:U,seller:J}],lowPrice:W}}=B;(0,v.useEffect)(()=>{(0,x._)({name:"view_item",params:{currency:E.code,value:H,items:[{item_id:V.productGroupID,item_name:V.name,item_brand:R.name,item_variant:G,price:H,discount:U-H,currency:E.code,item_variant_name:K,product_reference_id:M}]}})},[V.productGroupID,V.name,R.name,G,H,U,E.code,K,M]);var Y=(0,v.useMemo)(()=>"https://schema.org/OutOfStock"===z,[z]);return(0,f.jsx)(d.Z,{className:"".concat($().section," section-product-details"),children:(0,f.jsx)("section",{"data-fs-product-details":!0,children:(0,f.jsxs)("section",{"data-fs-product-details-body":!0,"data-fs-content":"product-details",children:[(0,f.jsx)("header",{"data-fs-product-details-title":!0,"data-fs-product-details-section":!0,children:(0,f.jsx)(S.Component,ProductDetails_objectSpread(ProductDetails_objectSpread({title:(0,f.jsx)("h1",{children:q})},S.props),{},{label:a&&(0,f.jsx)(P.Component,ProductDetails_objectSpread(ProductDetails_objectSpread({},P.props),{},{size:null!=o?o:P.props.size,listPrice:U,spotPrice:W})),refNumber:n&&F}))}),(0,f.jsx)(O.Component,ProductDetails_objectSpread(ProductDetails_objectSpread({"data-fs-product-details-gallery":!0},O.props),{},{images:Q})),(0,f.jsxs)("section",{"data-fs-product-details-info":!0,children:[(0,f.jsx)("section",{"data-fs-product-details-settings":!0,"data-fs-product-details-section":!0,children:(0,f.jsx)(ProductDetails_ProductDetailsSettings,{product:B,isValidating:L,buyButtonTitle:l,quantity:D,setQuantity:k,buyButtonIcon:i,notAvailableButtonTitle:null!=h?h:_.props.title})}),!Y&&(0,f.jsx)(w.Component,ProductDetails_objectSpread(ProductDetails_objectSpread({"data-fs-product-details-section":!0,"data-fs-product-details-shipping":!0,formatter:C.P},w.props),{},{idkPostalCodeLinkProps:ProductDetails_objectSpread(ProductDetails_objectSpread({},w.props.idkPostalCodeLinkProps),{},{href:null!=p?p:null===(t=w.props.idkPostalCodeLinkProps)||void 0===t?void 0:t.href,children:null!=m?m:null===(r=w.props.idkPostalCodeLinkProps)||void 0===r?void 0:r.children}),productShippingInfo:{id:N,quantity:D,seller:J.identifier},title:null!=s?s:w.props.title,inputLabel:null!=c?c:w.props.inputLabel,optionsLabel:null!=u?u:w.props.optionsLabel}))]}),y&&(0,f.jsx)(ProductDescription_ProductDescription,{initiallyExpanded:g,descriptionData:[{title:b,content:T}]})]})})})},ej);function OverriddenDefaultProductDetails_ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function OverriddenDefaultProductDetails_objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?OverriddenDefaultProductDetails_ownKeys(Object(r),!0).forEach(function(t){(0,a.Z)(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):OverriddenDefaultProductDetails_ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var eS=(0,g.v)(OverriddenDefaultProductDetails_objectSpread(OverriddenDefaultProductDetails_objectSpread({},{section:"ProductDetails"}),{},{Section:eP})),eO=r(4439),ew=r(2718),e_=r(6104),eE=r(7553),eD=eb.wA,useProductQuery=(e,t)=>{var{channel:r,locale:n}=(0,I.kP)(),a=(0,v.useMemo)(()=>{if(!r)throw Error("useProductQuery: 'channel' from session is an empty string.");return{locator:[{key:"id",value:e},{key:"channel",value:r},{key:"locale",value:n}]}},[r,n,e]);return(0,eE.aM)(eD,a,{fallbackData:t,revalidateOnMount:!0})};function p_ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function p_objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?p_ownKeys(Object(r),!0).forEach(function(t){(0,a.Z)(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):p_ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var ek=p_objectSpread({Breadcrumb:b.j,ProductDetails:eS,CrossSellingShelf:k,BannerNewsletter:function(e){var{banner:t,newsletter:r}=e;return(0,f.jsx)(d.Z,{className:"".concat(m().section," section-banner-newsletter"),children:(0,f.jsxs)("div",{"data-fs-banner-text-newsletter":!0,"data-fs-content":"banner-newsletter",children:[(0,f.jsx)(c.i,{title:t.title,caption:t.caption,link:null==t?void 0:t.link,variant:t.variant,colorVariant:t.colorVariant}),(0,f.jsx)(u.O,{card:!0,colorVariant:r.colorVariant,title:r.title,description:r.description,icon:r.icon,privacyPolicy:r.privacyPolicy,emailInputLabel:r.emailInputLabel,displayNameInput:r.displayNameInput,nameInputLabel:r.nameInputLabel,subscribeButtonLabel:r.subscribeButtonLabel,subscribeButtonLoadingLabel:r.subscribeButtonLoadingLabel,toastSubscribe:r.toastSubscribe,toastSubscribeError:r.toastSubscribeError})]})})},BannerText:c.i},eO.Z),overwriteMerge=(e,t)=>t;function Page(e){var t,r,{data:n,sections:a,globalSections:o,offers:c,meta:u}=e,{product:d}=n,{currency:p}=(0,I.kP)(),{data:m,isValidating:b}=useProductQuery(d.id,{product:d}),g={data:p_objectSpread(p_objectSpread({},i()(n,m,{arrayMerge:overwriteMerge})),{},{isValidating:b})};return(0,f.jsxs)(e_.ZP,p_objectSpread(p_objectSpread({},o),{},{children:[(0,f.jsx)(l.PB,{title:u.title,description:u.description,canonical:u.canonical,openGraph:{type:"og:product",url:u.canonical,title:u.title,description:u.description,images:d.image.map(e=>({url:e.url,alt:e.alternateName}))},additionalMetaTags:[{property:"product:price:amount",content:null!==(t=null===(r=d.offers.lowPrice)||void 0===r?void 0:r.toString())&&void 0!==t?t:void 0},{property:"product:price:currency",content:p.code}]}),(0,f.jsx)(l.gR,{itemListElements:d.breadcrumbList.itemListElement}),(0,f.jsx)(l.Qb,{productName:d.name,description:d.description,brand:d.brand.name,sku:d.sku,gtin:d.gtin,releaseDate:d.releaseDate,images:d.image.map(e=>e.url),offers:c}),(0,f.jsx)(j.ZP,{context:g,children:(0,f.jsx)(s.Z,{sections:a,components:ek})})]}))}Page.displayName="Page";var ex=!0,eC=(0,ew.B)(Page)},4960:function(e,t,r){"use strict";r.d(t,{En:function(){return isSearchPage},OJ:function(){return isPLP},al:function(){return usePDP},qt:function(){return usePage},tS:function(){return isPDP}});var n=r(2784),a=r(2322),isPDP=e=>{var t,r,n,a;return(null==e?void 0:null===(t=e.data)||void 0===t?void 0:null===(r=t.product)||void 0===r?void 0:r.sku)!=void 0&&(null==e?void 0:null===(n=e.data)||void 0===n?void 0:null===(a=n.product)||void 0===a?void 0:a.sku)!=null},isPLP=e=>{var t,r,n,a,o,i;return(null==e?void 0:null===(t=e.data)||void 0===t?void 0:null===(r=t.collection)||void 0===r?void 0:r.seo)!=void 0&&(null==e?void 0:null===(n=e.data)||void 0===n?void 0:null===(a=n.collection)||void 0===a?void 0:a.seo)!=null&&(null==e?void 0:null===(o=e.data)||void 0===o?void 0:null===(i=o.collection)||void 0===i?void 0:i.sku)==void 0},isSearchPage=e=>{var t,r;return void 0===e||(null==e?void 0:null===(t=e.data)||void 0===t?void 0:t.title)!=void 0||(null==e?void 0:null===(r=e.data)||void 0===r?void 0:r.searchTerm)!=void 0},o=(0,n.createContext)(null);function usePage(){var{context:e}=(0,n.useContext)(o);if(null==e)throw Error("Missing Overrides context on React tree");return e}var usePDP=()=>usePage();t.ZP=function(e){var{context:t,children:r}=e,i=(0,n.useMemo)(()=>({context:t}),[t]);return(0,a.jsx)(o.Provider,{value:i,children:r})}},6258:function(e,t,r){(window.__NEXT_P=window.__NEXT_P||[]).push(["/[slug]/p",function(){return r(6429)}])},9919:function(e){e.exports={section:"section_section__YBgvV"}},4177:function(e){e.exports={section:"section_section__dvBbv"}},1145:function(e){e.exports={section:"section_section__VI73U"}}},function(e){e.O(0,[575,104,161,774,888,179],function(){return e(e.s=6258)}),_N_E=e.O()}]);
|
|
@@ -1,413 +0,0 @@
|
|
|
1
|
-
import { Meta, Canvas, Story, ArgsTable } from '@storybook/addon-docs'
|
|
2
|
-
|
|
3
|
-
import { Button } from '@faststore/ui'
|
|
4
|
-
|
|
5
|
-
import Icon from '../../ui/Icon'
|
|
6
|
-
import ProductCard from '.'
|
|
7
|
-
|
|
8
|
-
import {
|
|
9
|
-
TokenTable,
|
|
10
|
-
TokenRow,
|
|
11
|
-
TokenDivider,
|
|
12
|
-
} from 'src/../.storybook/components'
|
|
13
|
-
|
|
14
|
-
<Meta
|
|
15
|
-
title="Molecules/ProductCard"
|
|
16
|
-
component={ProductCard}
|
|
17
|
-
argTypes={{
|
|
18
|
-
variant: {
|
|
19
|
-
defaultValue: 'default',
|
|
20
|
-
table: { defaultValue: 'default' },
|
|
21
|
-
},
|
|
22
|
-
product: { table: { disable: true } },
|
|
23
|
-
index: { table: { disable: true } },
|
|
24
|
-
aspectRatio: {
|
|
25
|
-
options: [0.75, 1.5, 1],
|
|
26
|
-
control: { type: 'radio' },
|
|
27
|
-
table: { defaultValue: '1' },
|
|
28
|
-
},
|
|
29
|
-
BuyButton: {
|
|
30
|
-
control: 'boolean',
|
|
31
|
-
table: { defaultValue: false },
|
|
32
|
-
},
|
|
33
|
-
}}
|
|
34
|
-
/>
|
|
35
|
-
|
|
36
|
-
export const product = {
|
|
37
|
-
id: '15503951',
|
|
38
|
-
slug: 'handmade-steel-towels-practical-15503951',
|
|
39
|
-
sku: '15503951',
|
|
40
|
-
brand: { brandName: 'Brand', name: 'Brand' },
|
|
41
|
-
name: 'red',
|
|
42
|
-
gtin: '5595633577807',
|
|
43
|
-
isVariantOf: {
|
|
44
|
-
productGroupID: '130742',
|
|
45
|
-
name: 'Handmade Steel Towels Practical',
|
|
46
|
-
},
|
|
47
|
-
image: [
|
|
48
|
-
{
|
|
49
|
-
url: 'http://storeframework.vtexassets.com/arquivos/ids/190191/numquam.jpg?v=637755599170100000',
|
|
50
|
-
alternateName: 'est',
|
|
51
|
-
},
|
|
52
|
-
],
|
|
53
|
-
offers: {
|
|
54
|
-
lowPrice: 181.71,
|
|
55
|
-
offers: [
|
|
56
|
-
{
|
|
57
|
-
availability: 'https://schema.org/InStock',
|
|
58
|
-
price: 181.71,
|
|
59
|
-
listPrice: 208.72,
|
|
60
|
-
quantity: 1,
|
|
61
|
-
seller: { identifier: '1' },
|
|
62
|
-
},
|
|
63
|
-
],
|
|
64
|
-
},
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
export const Template = ({ BuyButton, ...args }) => {
|
|
68
|
-
const button = BuyButton ? (
|
|
69
|
-
<Button
|
|
70
|
-
variant="primary"
|
|
71
|
-
data-fs-button-size="small"
|
|
72
|
-
icon={<Icon name="ShoppingCart" width={18} height={18} />}
|
|
73
|
-
iconPosition="left"
|
|
74
|
-
>
|
|
75
|
-
Add
|
|
76
|
-
</Button>
|
|
77
|
-
) : null
|
|
78
|
-
return (
|
|
79
|
-
<div style={{ width: 300 }}>
|
|
80
|
-
<ProductCard BuyButton={button} {...args} />
|
|
81
|
-
</div>
|
|
82
|
-
)
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
export const TemplateWide = ({ BuyButton, ...args }) => {
|
|
86
|
-
const button = BuyButton ? (
|
|
87
|
-
<Button
|
|
88
|
-
variant="primary"
|
|
89
|
-
data-fs-button-size="small"
|
|
90
|
-
icon={<Icon name="ShoppingCart" width={18} height={18} />}
|
|
91
|
-
iconPosition="left"
|
|
92
|
-
>
|
|
93
|
-
Add
|
|
94
|
-
</Button>
|
|
95
|
-
) : null
|
|
96
|
-
return (
|
|
97
|
-
<div style={{ width: 400 }}>
|
|
98
|
-
<ProductCard BuyButton={button} {...args} />
|
|
99
|
-
</div>
|
|
100
|
-
)
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
<header>
|
|
104
|
-
|
|
105
|
-
# Product Card
|
|
106
|
-
|
|
107
|
-
ProductCard displays summarized information about a product. They usually present a call-to-action button, as well as the product's name, price, and image.
|
|
108
|
-
|
|
109
|
-
</header>
|
|
110
|
-
|
|
111
|
-
## Overview
|
|
112
|
-
|
|
113
|
-
The `ProductCard` component uses [FastStore UI ProductCard](https://www.faststore.dev/reference/ui/molecules/ProductCard).
|
|
114
|
-
|
|
115
|
-
<Canvas className="sbdocs-vertically-center">
|
|
116
|
-
<Story
|
|
117
|
-
name="overview-default"
|
|
118
|
-
args={{
|
|
119
|
-
product: product,
|
|
120
|
-
index: 1,
|
|
121
|
-
variant: 'default',
|
|
122
|
-
bordered: false,
|
|
123
|
-
aspectRatio: 1,
|
|
124
|
-
BuyButton: false,
|
|
125
|
-
}}
|
|
126
|
-
>
|
|
127
|
-
{Template.bind({})}
|
|
128
|
-
</Story>
|
|
129
|
-
<Story
|
|
130
|
-
name="overview-bordered"
|
|
131
|
-
args={{
|
|
132
|
-
product: product,
|
|
133
|
-
index: 1,
|
|
134
|
-
variant: 'default',
|
|
135
|
-
bordered: true,
|
|
136
|
-
aspectRatio: 1,
|
|
137
|
-
BuyButton: false,
|
|
138
|
-
}}
|
|
139
|
-
>
|
|
140
|
-
{Template.bind({})}
|
|
141
|
-
</Story>
|
|
142
|
-
<Story
|
|
143
|
-
name="overview-wide"
|
|
144
|
-
args={{
|
|
145
|
-
product: product,
|
|
146
|
-
index: 1,
|
|
147
|
-
variant: 'wide',
|
|
148
|
-
bordered: false,
|
|
149
|
-
aspectRatio: 1.5,
|
|
150
|
-
BuyButton: false,
|
|
151
|
-
}}
|
|
152
|
-
>
|
|
153
|
-
{TemplateWide.bind({})}
|
|
154
|
-
</Story>
|
|
155
|
-
</Canvas>
|
|
156
|
-
|
|
157
|
-
---
|
|
158
|
-
|
|
159
|
-
## Usage
|
|
160
|
-
|
|
161
|
-
<Canvas>
|
|
162
|
-
<Story
|
|
163
|
-
name="default"
|
|
164
|
-
args={{
|
|
165
|
-
product: product,
|
|
166
|
-
index: 1,
|
|
167
|
-
variant: 'default',
|
|
168
|
-
bordered: false,
|
|
169
|
-
aspectRatio: 1,
|
|
170
|
-
BuyButton: false,
|
|
171
|
-
}}
|
|
172
|
-
>
|
|
173
|
-
{Template.bind({})}
|
|
174
|
-
</Story>
|
|
175
|
-
</Canvas>
|
|
176
|
-
|
|
177
|
-
<ArgsTable story="default" />
|
|
178
|
-
|
|
179
|
-
<TokenTable>
|
|
180
|
-
<TokenRow
|
|
181
|
-
token="--fs-product-card-padding"
|
|
182
|
-
value="var(--fs-spacing-1) var(--fs-spacing-1) var(--fs-spacing-2) var(--fs-spacing-1)"
|
|
183
|
-
/>
|
|
184
|
-
<TokenRow token="--fs-product-card-gap" value="var(--fs-grid-gap-2)" />
|
|
185
|
-
<TokenRow token="--fs-product-card-min-width" value="10rem" />
|
|
186
|
-
<TokenDivider />
|
|
187
|
-
<TokenRow token="--fs-product-card-shadow" value="var(--fs-shadow)" />
|
|
188
|
-
<TokenRow
|
|
189
|
-
token="--fs-product-card-shadow-hover"
|
|
190
|
-
value="var(--fs-shadow-hover)"
|
|
191
|
-
/>
|
|
192
|
-
<TokenDivider />
|
|
193
|
-
<TokenRow
|
|
194
|
-
token="--fs-product-card-bkg-color"
|
|
195
|
-
value="var(--fs-color-body-bkg)"
|
|
196
|
-
isColor
|
|
197
|
-
/>
|
|
198
|
-
<TokenRow
|
|
199
|
-
token="--fs-product-card-bkg-color-hover"
|
|
200
|
-
value="var(--fs-product-card-bkg-color)"
|
|
201
|
-
globalValue="var(--fs-color-body-bkg)"
|
|
202
|
-
isColor
|
|
203
|
-
/>
|
|
204
|
-
<TokenRow
|
|
205
|
-
token="--fs-product-card-bkg-color-focus"
|
|
206
|
-
value="var(--fs-product-card-bkg-color-hover)"
|
|
207
|
-
globalValue="var(--fs-color-body-bkg)"
|
|
208
|
-
isColor
|
|
209
|
-
/>
|
|
210
|
-
<TokenDivider />
|
|
211
|
-
<TokenRow
|
|
212
|
-
token="--fs-product-card-border-radius"
|
|
213
|
-
value="var(--fs-border-radius)"
|
|
214
|
-
/>
|
|
215
|
-
<TokenRow
|
|
216
|
-
token="--fs-product-card-border-color-hover"
|
|
217
|
-
value="var(--fs-border-color-hover)"
|
|
218
|
-
isColor
|
|
219
|
-
/>
|
|
220
|
-
<TokenDivider />
|
|
221
|
-
<TokenRow
|
|
222
|
-
token="--fs-product-card-transition-function"
|
|
223
|
-
value="var(--fs-transition-function)"
|
|
224
|
-
/>
|
|
225
|
-
<TokenRow
|
|
226
|
-
token="--fs-product-card-transition-property"
|
|
227
|
-
value="var(--fs-transition-property)"
|
|
228
|
-
/>
|
|
229
|
-
<TokenRow
|
|
230
|
-
token="--fs-product-card-transition-timing"
|
|
231
|
-
value="var(--fs-transition-timing)"
|
|
232
|
-
/>
|
|
233
|
-
</TokenTable>
|
|
234
|
-
|
|
235
|
-
---
|
|
236
|
-
|
|
237
|
-
## Nested Elements
|
|
238
|
-
|
|
239
|
-
### Content
|
|
240
|
-
|
|
241
|
-
<TokenTable>
|
|
242
|
-
<TokenRow
|
|
243
|
-
token="--fs-product-card-content-padding"
|
|
244
|
-
value="var(--fs-spacing-2) 0 0 0"
|
|
245
|
-
/>
|
|
246
|
-
</TokenTable>
|
|
247
|
-
|
|
248
|
-
### Image
|
|
249
|
-
|
|
250
|
-
<TokenTable>
|
|
251
|
-
<TokenRow
|
|
252
|
-
token="--fs-product-card-img-radius"
|
|
253
|
-
value="var(--fs-product-card-border-radius)"
|
|
254
|
-
/>
|
|
255
|
-
<TokenRow token="--fs-product-card-img-scale-hover" value="1" />
|
|
256
|
-
</TokenTable>
|
|
257
|
-
|
|
258
|
-
### Title
|
|
259
|
-
|
|
260
|
-
<TokenTable>
|
|
261
|
-
<TokenRow
|
|
262
|
-
token="--fs-product-card-title-color"
|
|
263
|
-
value="var(--fs-color-text)"
|
|
264
|
-
isColor
|
|
265
|
-
/>
|
|
266
|
-
<TokenRow
|
|
267
|
-
token="--fs-product-card-title-size"
|
|
268
|
-
value="var(--fs-text-size-base)"
|
|
269
|
-
/>
|
|
270
|
-
<TokenRow
|
|
271
|
-
token="--fs-product-card-title-weight"
|
|
272
|
-
value="var(--fs-text-weight-regular)"
|
|
273
|
-
/>
|
|
274
|
-
<TokenRow
|
|
275
|
-
token="--fs-product-card-title-max-lines"
|
|
276
|
-
value="var(--fs-text-max-lines)"
|
|
277
|
-
/>
|
|
278
|
-
</TokenTable>
|
|
279
|
-
|
|
280
|
-
### Price
|
|
281
|
-
|
|
282
|
-
<TokenTable>
|
|
283
|
-
<TokenRow
|
|
284
|
-
token="--fs-product-card-price-color"
|
|
285
|
-
value="var(--fs-color-text)"
|
|
286
|
-
isColor
|
|
287
|
-
/>
|
|
288
|
-
<TokenRow
|
|
289
|
-
token="--fs-product-card-price-size"
|
|
290
|
-
value="var(--fs-text-size-base)"
|
|
291
|
-
/>
|
|
292
|
-
<TokenRow
|
|
293
|
-
token="--fs-product-card-price-listing-color"
|
|
294
|
-
value="var(--fs-color-text-light)"
|
|
295
|
-
isColor
|
|
296
|
-
/>
|
|
297
|
-
<TokenRow
|
|
298
|
-
token="--fs-product-card-price-listing-size"
|
|
299
|
-
value="var(--fs-text-size-legend)"
|
|
300
|
-
/>
|
|
301
|
-
</TokenTable>
|
|
302
|
-
|
|
303
|
-
### Description
|
|
304
|
-
|
|
305
|
-
<TokenTable>
|
|
306
|
-
<TokenRow
|
|
307
|
-
token="--fs-product-card-description-color"
|
|
308
|
-
value="var(--fs-color-text)"
|
|
309
|
-
isColor
|
|
310
|
-
/>
|
|
311
|
-
<TokenRow
|
|
312
|
-
token="--fs-product-card-description-size"
|
|
313
|
-
value="var(--fs-text-size-legend)"
|
|
314
|
-
/>
|
|
315
|
-
</TokenTable>
|
|
316
|
-
|
|
317
|
-
### Subtitle
|
|
318
|
-
|
|
319
|
-
<TokenTable>
|
|
320
|
-
<TokenRow
|
|
321
|
-
token="--fs-product-card-subtitle-color"
|
|
322
|
-
value="var(--fs-color-text-light)"
|
|
323
|
-
isColor
|
|
324
|
-
/>
|
|
325
|
-
<TokenRow
|
|
326
|
-
token="--fs-product-card-subtitle-size"
|
|
327
|
-
value="var(--fs-text-size-tiny)"
|
|
328
|
-
/>
|
|
329
|
-
</TokenTable>
|
|
330
|
-
|
|
331
|
-
---
|
|
332
|
-
|
|
333
|
-
## Variants
|
|
334
|
-
|
|
335
|
-
### Default
|
|
336
|
-
|
|
337
|
-
<Canvas>
|
|
338
|
-
<Story
|
|
339
|
-
name="product-card-default"
|
|
340
|
-
args={{
|
|
341
|
-
product: product,
|
|
342
|
-
index: 1,
|
|
343
|
-
variant: 'default',
|
|
344
|
-
bordered: false,
|
|
345
|
-
aspectRatio: 1,
|
|
346
|
-
BuyButton: false,
|
|
347
|
-
}}
|
|
348
|
-
>
|
|
349
|
-
{Template.bind({})}
|
|
350
|
-
</Story>
|
|
351
|
-
</Canvas>
|
|
352
|
-
|
|
353
|
-
### Bordered
|
|
354
|
-
|
|
355
|
-
<Canvas>
|
|
356
|
-
<Story
|
|
357
|
-
name="product-card-bordered"
|
|
358
|
-
args={{
|
|
359
|
-
product: product,
|
|
360
|
-
index: 1,
|
|
361
|
-
variant: 'default',
|
|
362
|
-
bordered: true,
|
|
363
|
-
aspectRatio: 1,
|
|
364
|
-
BuyButton: false,
|
|
365
|
-
}}
|
|
366
|
-
>
|
|
367
|
-
{Template.bind({})}
|
|
368
|
-
</Story>
|
|
369
|
-
</Canvas>
|
|
370
|
-
|
|
371
|
-
<TokenTable>
|
|
372
|
-
<TokenRow
|
|
373
|
-
token="--fs-product-card-border-width"
|
|
374
|
-
value="var(--fs-border-width)"
|
|
375
|
-
/>
|
|
376
|
-
<TokenRow
|
|
377
|
-
token="--fs-product-card-border-color"
|
|
378
|
-
value="var(--fs-border-color-light)"
|
|
379
|
-
isColor
|
|
380
|
-
/>
|
|
381
|
-
</TokenTable>
|
|
382
|
-
|
|
383
|
-
### Wide
|
|
384
|
-
|
|
385
|
-
<Canvas>
|
|
386
|
-
<Story
|
|
387
|
-
name="product-card-wide"
|
|
388
|
-
args={{
|
|
389
|
-
product: product,
|
|
390
|
-
index: 1,
|
|
391
|
-
variant: 'wide',
|
|
392
|
-
bordered: false,
|
|
393
|
-
aspectRatio: 1.5,
|
|
394
|
-
BuyButton: false,
|
|
395
|
-
}}
|
|
396
|
-
>
|
|
397
|
-
{TemplateWide.bind({})}
|
|
398
|
-
</Story>
|
|
399
|
-
</Canvas>
|
|
400
|
-
|
|
401
|
-
<TokenTable>
|
|
402
|
-
<TokenRow token="--fs-product-card-wide-padding" value="0" />
|
|
403
|
-
<TokenRow
|
|
404
|
-
token="--fs-product-card-wide-content-padding"
|
|
405
|
-
value="var(--fs-spacing-2)"
|
|
406
|
-
/>
|
|
407
|
-
<TokenRow
|
|
408
|
-
token="--fs-product-card-wide-bkg-color"
|
|
409
|
-
value="var(--fs-color-neutral-bkg)"
|
|
410
|
-
isColor
|
|
411
|
-
/>
|
|
412
|
-
<TokenRow token="--fs-product-card-wide-min-width" value="9rem" />
|
|
413
|
-
</TokenTable>
|