@anker-in/headless-ui 1.0.20 → 1.0.21

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.
Files changed (114) hide show
  1. package/dist/cjs/biz-components/FooterNavigation/index.js +1 -1
  2. package/dist/cjs/biz-components/FooterNavigation/index.js.map +3 -3
  3. package/dist/cjs/biz-components/FooterNavigation/types.d.ts +2 -1
  4. package/dist/cjs/biz-components/FooterNavigation/types.js +1 -1
  5. package/dist/cjs/biz-components/FooterNavigation/types.js.map +2 -2
  6. package/dist/cjs/biz-components/HeaderNavigation/NavProvider.d.ts +8 -5
  7. package/dist/cjs/biz-components/HeaderNavigation/NavProvider.js +1 -1
  8. package/dist/cjs/biz-components/HeaderNavigation/NavProvider.js.map +3 -3
  9. package/dist/cjs/biz-components/HeaderNavigation/icons/Menu.js +1 -1
  10. package/dist/cjs/biz-components/HeaderNavigation/icons/Menu.js.map +2 -2
  11. package/dist/cjs/biz-components/HeaderNavigation/icons/Polygon.d.ts +3 -0
  12. package/dist/cjs/biz-components/HeaderNavigation/icons/Polygon.js +2 -0
  13. package/dist/cjs/biz-components/HeaderNavigation/icons/Polygon.js.map +7 -0
  14. package/dist/cjs/biz-components/HeaderNavigation/icons/index.d.ts +2 -1
  15. package/dist/cjs/biz-components/HeaderNavigation/icons/index.js +1 -1
  16. package/dist/cjs/biz-components/HeaderNavigation/icons/index.js.map +3 -3
  17. package/dist/cjs/biz-components/HeaderNavigation/index.js +1 -1
  18. package/dist/cjs/biz-components/HeaderNavigation/index.js.map +3 -3
  19. package/dist/cjs/biz-components/HeaderNavigation/types.d.ts +26 -2
  20. package/dist/cjs/biz-components/HeaderNavigation/types.js +1 -1
  21. package/dist/cjs/biz-components/HeaderNavigation/types.js.map +2 -2
  22. package/dist/cjs/biz-components/HeaderNavigation/withCategory.d.ts +1 -1
  23. package/dist/cjs/biz-components/HeaderNavigation/withCategory.js +1 -1
  24. package/dist/cjs/biz-components/HeaderNavigation/withCategory.js.map +3 -3
  25. package/dist/cjs/biz-components/NavigationSearch/index.d.ts +4 -0
  26. package/dist/cjs/biz-components/NavigationSearch/index.js +11 -0
  27. package/dist/cjs/biz-components/NavigationSearch/index.js.map +7 -0
  28. package/dist/cjs/biz-components/NavigationSearch/types.d.ts +18 -0
  29. package/dist/cjs/biz-components/NavigationSearch/types.js +2 -0
  30. package/dist/cjs/biz-components/NavigationSearch/types.js.map +7 -0
  31. package/dist/cjs/biz-components/SearchPage/index.d.ts +6 -0
  32. package/dist/cjs/biz-components/SearchPage/index.js +2 -0
  33. package/dist/cjs/biz-components/SearchPage/index.js.map +7 -0
  34. package/dist/cjs/biz-components/SearchPage/types.d.ts +58 -0
  35. package/dist/cjs/biz-components/SearchPage/types.js +2 -0
  36. package/dist/cjs/biz-components/SearchPage/types.js.map +7 -0
  37. package/dist/cjs/biz-components/Subscribe/index.d.ts +7 -1
  38. package/dist/cjs/biz-components/Subscribe/index.js +10 -1
  39. package/dist/cjs/biz-components/Subscribe/index.js.map +3 -3
  40. package/dist/cjs/biz-components/index.d.ts +3 -0
  41. package/dist/cjs/biz-components/index.js +1 -1
  42. package/dist/cjs/biz-components/index.js.map +3 -3
  43. package/dist/cjs/components/container.js +1 -1
  44. package/dist/cjs/components/container.js.map +2 -2
  45. package/dist/cjs/components/dialog.d.ts +3 -1
  46. package/dist/cjs/components/dialog.js +1 -1
  47. package/dist/cjs/components/dialog.js.map +3 -3
  48. package/dist/cjs/components/index.d.ts +1 -0
  49. package/dist/cjs/components/index.js +1 -1
  50. package/dist/cjs/components/index.js.map +3 -3
  51. package/dist/cjs/components/loadingDots.d.ts +6 -0
  52. package/dist/cjs/components/loadingDots.js +42 -0
  53. package/dist/cjs/components/loadingDots.js.map +7 -0
  54. package/dist/cjs/helpers/utils.d.ts +1 -0
  55. package/dist/cjs/helpers/utils.js +1 -1
  56. package/dist/cjs/helpers/utils.js.map +3 -3
  57. package/dist/esm/biz-components/FooterNavigation/index.js +1 -1
  58. package/dist/esm/biz-components/FooterNavigation/index.js.map +3 -3
  59. package/dist/esm/biz-components/FooterNavigation/types.d.ts +2 -1
  60. package/dist/esm/biz-components/FooterNavigation/types.js +1 -1
  61. package/dist/esm/biz-components/FooterNavigation/types.js.map +2 -2
  62. package/dist/esm/biz-components/HeaderNavigation/NavProvider.d.ts +8 -5
  63. package/dist/esm/biz-components/HeaderNavigation/NavProvider.js +1 -1
  64. package/dist/esm/biz-components/HeaderNavigation/NavProvider.js.map +3 -3
  65. package/dist/esm/biz-components/HeaderNavigation/icons/Menu.js +1 -1
  66. package/dist/esm/biz-components/HeaderNavigation/icons/Menu.js.map +2 -2
  67. package/dist/esm/biz-components/HeaderNavigation/icons/Polygon.d.ts +3 -0
  68. package/dist/esm/biz-components/HeaderNavigation/icons/Polygon.js +2 -0
  69. package/dist/esm/biz-components/HeaderNavigation/icons/Polygon.js.map +7 -0
  70. package/dist/esm/biz-components/HeaderNavigation/icons/index.d.ts +2 -1
  71. package/dist/esm/biz-components/HeaderNavigation/icons/index.js +1 -1
  72. package/dist/esm/biz-components/HeaderNavigation/icons/index.js.map +3 -3
  73. package/dist/esm/biz-components/HeaderNavigation/index.js +1 -1
  74. package/dist/esm/biz-components/HeaderNavigation/index.js.map +3 -3
  75. package/dist/esm/biz-components/HeaderNavigation/types.d.ts +26 -2
  76. package/dist/esm/biz-components/HeaderNavigation/types.js +1 -1
  77. package/dist/esm/biz-components/HeaderNavigation/types.js.map +2 -2
  78. package/dist/esm/biz-components/HeaderNavigation/withCategory.d.ts +1 -1
  79. package/dist/esm/biz-components/HeaderNavigation/withCategory.js +1 -1
  80. package/dist/esm/biz-components/HeaderNavigation/withCategory.js.map +3 -3
  81. package/dist/esm/biz-components/NavigationSearch/index.d.ts +4 -0
  82. package/dist/esm/biz-components/NavigationSearch/index.js +11 -0
  83. package/dist/esm/biz-components/NavigationSearch/index.js.map +7 -0
  84. package/dist/esm/biz-components/NavigationSearch/types.d.ts +18 -0
  85. package/dist/esm/biz-components/NavigationSearch/types.js +2 -0
  86. package/dist/esm/biz-components/NavigationSearch/types.js.map +7 -0
  87. package/dist/esm/biz-components/SearchPage/index.d.ts +6 -0
  88. package/dist/esm/biz-components/SearchPage/index.js +2 -0
  89. package/dist/esm/biz-components/SearchPage/index.js.map +7 -0
  90. package/dist/esm/biz-components/SearchPage/types.d.ts +58 -0
  91. package/dist/esm/biz-components/SearchPage/types.js +2 -0
  92. package/dist/esm/biz-components/SearchPage/types.js.map +7 -0
  93. package/dist/esm/biz-components/Subscribe/index.d.ts +7 -1
  94. package/dist/esm/biz-components/Subscribe/index.js +10 -1
  95. package/dist/esm/biz-components/Subscribe/index.js.map +3 -3
  96. package/dist/esm/biz-components/index.d.ts +3 -0
  97. package/dist/esm/biz-components/index.js +1 -1
  98. package/dist/esm/biz-components/index.js.map +3 -3
  99. package/dist/esm/components/container.js +1 -1
  100. package/dist/esm/components/container.js.map +2 -2
  101. package/dist/esm/components/dialog.d.ts +3 -1
  102. package/dist/esm/components/dialog.js +1 -1
  103. package/dist/esm/components/dialog.js.map +3 -3
  104. package/dist/esm/components/index.d.ts +1 -0
  105. package/dist/esm/components/index.js +1 -1
  106. package/dist/esm/components/index.js.map +2 -2
  107. package/dist/esm/components/loadingDots.d.ts +6 -0
  108. package/dist/esm/components/loadingDots.js +42 -0
  109. package/dist/esm/components/loadingDots.js.map +7 -0
  110. package/dist/esm/helpers/utils.d.ts +1 -0
  111. package/dist/esm/helpers/utils.js +1 -1
  112. package/dist/esm/helpers/utils.js.map +3 -3
  113. package/package.json +1 -1
  114. package/style.css +2 -2
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/biz-components/HeaderNavigation/icons/index.ts"],
4
- "sourcesContent": ["import AnkerLogo from './AnkerLogo.js'\nimport LogoLine from './LogoLine.js'\nimport Menu from './Menu.js'\nimport Search from './Search.js'\nimport Cart from './Cart.js'\nimport Close from './Close.js'\nimport User from './User.js'\nimport RightArrow from './RightArrow.js'\nimport LeftArrow from './LeftArrow.js'\nimport DownArrow from './DownArrow.js'\n\nexport { AnkerLogo, Menu, Search, Cart, Close, User, RightArrow, LeftArrow, DownArrow, LogoLine }\n"],
5
- "mappings": "AAAA,OAAOA,MAAe,iBACtB,OAAOC,MAAc,gBACrB,OAAOC,MAAU,YACjB,OAAOC,MAAY,cACnB,OAAOC,MAAU,YACjB,OAAOC,MAAW,aAClB,OAAOC,MAAU,YACjB,OAAOC,MAAgB,kBACvB,OAAOC,MAAe,iBACtB,OAAOC,MAAe",
6
- "names": ["AnkerLogo", "LogoLine", "Menu", "Search", "Cart", "Close", "User", "RightArrow", "LeftArrow", "DownArrow"]
4
+ "sourcesContent": ["import AnkerLogo from './AnkerLogo.js'\nimport LogoLine from './LogoLine.js'\nimport Menu from './Menu.js'\nimport Search from './Search.js'\nimport Cart from './Cart.js'\nimport Close from './Close.js'\nimport User from './User.js'\nimport RightArrow from './RightArrow.js'\nimport LeftArrow from './LeftArrow.js'\nimport DownArrow from './DownArrow.js'\nimport Polygon from './Polygon.js'\n\nexport { AnkerLogo, Menu, Search, Cart, Close, User, RightArrow, LeftArrow, DownArrow, LogoLine, Polygon }\n"],
5
+ "mappings": "AAAA,OAAOA,MAAe,iBACtB,OAAOC,MAAc,gBACrB,OAAOC,MAAU,YACjB,OAAOC,MAAY,cACnB,OAAOC,MAAU,YACjB,OAAOC,MAAW,aAClB,OAAOC,MAAU,YACjB,OAAOC,MAAgB,kBACvB,OAAOC,MAAe,iBACtB,OAAOC,MAAe,iBACtB,OAAOC,MAAa",
6
+ "names": ["AnkerLogo", "LogoLine", "Menu", "Search", "Cart", "Close", "User", "RightArrow", "LeftArrow", "DownArrow", "Polygon"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{Fragment as de,jsx as e,jsxs as l}from"react/jsx-runtime";import{forwardRef as W,useCallback as G,useEffect as C,useImperativeHandle as me,useMemo as h,useRef as $,useState as w}from"react";import{Picture as J,Text as p,Button as S,Container as K,Link as T}from"../../components/index.js";import{withLayout as ue}from"../../shared/Styles.js";import{cn as E,atobID as pe}from"../../helpers/utils.js";import fe,{useNavContext as A}from"./NavProvider.js";import{HeaderNavigationMenu as D,HeaderNavigationBlockType as j,HeaderNavigationActionBlockType as R}from"./types.js";import{useMediaQuery as be}from"react-responsive";import{debounce as ve,throttle as ge}from"es-toolkit";import{useGSAP as Q}from"@gsap/react";import{gsap as V}from"gsap";import{WithSidebar as X,WithSupports as Z,WithMulticol as ee,WithGroupCategory as te}from"./withCategory.js";import{Menu as xe,Close as ae,User as ye,RightArrow as le,LeftArrow as he,DownArrow as ne,LogoLine as Ne}from"./icons/index.js";const ke=W((t,n)=>{const{data:{headerNavigation:a}={},buildProps:i,event:s,profile:o,theme:u="light"}=t,[f,N]=w(!1),[g,r]=w(!1),[c,d]=w(!1),b=$(null),v=be({query:"(max-width: 1440px)"});return C(()=>{N(v)},[v]),me(n,()=>b.current),C(()=>{let H=0,B=0;const I=ge(k=>{const z=B-k;z>0?(H+=z,H>=300&&(r(!1),H=0)):r(k>300),d(k>24),B=k},200),P=()=>{let k=0;document?.documentElement&&document?.documentElement?.scrollTop?k=document?.documentElement.scrollTop:document?.body&&(k=document?.body.scrollTop),I(k)};return window.addEventListener("scroll",P),()=>window.removeEventListener("scroll",P)},[]),e(fe,{buildProps:i,profile:o,isMobile:f,event:s,payloadData:a,children:e("header",{"data-ui-component-id":"HeaderNavigation",className:"sticky top-0 z-50",ref:b,children:l("div",{className:E("border-b border-b-gray-200",u==="light"?"text-black":"text-white",{"translate-y-[-100%] transition-transform duration-500 ease-in-out":g,"!bg-white transition-all duration-500 ease-in-out":c},{"hover:!text-black":u==="dark","!text-black":c}),children:[!f&&e(we,{data:a}),f&&e(Se,{data:a})]})})})}),we=W((t,n)=>{const{data:a}=t,{event:i}=A(),s=h(()=>te(a?.categories),[a]),[o,u]=w(null),[f,N]=w([]),g=$(null),[r,c]=w(!1),d=$(null),b=$(s.map(m=>Array(m?.length||0).fill(null)));C(()=>{s?.length&&N(s?.map((m,y)=>m?.map((M,L)=>({groupIndex:y,index:L,open:!1}))))},[s]);const v=h(()=>{let m=null;for(const y of f){for(const M of y)if(M.open){m=M;break}if(m)break}return m},[f]);C(()=>{},[v]);const H=(m,y,M)=>{m.stopPropagation(),u(s[y][M]),N(L=>L.map(_=>_.map(U=>U.groupIndex===y&&U.index===M?{...U,open:!U.open}:{...U,open:!1})))},B=()=>{N(m=>m.map(y=>y.map(M=>({...M,open:!1}))))},I=h(()=>{if(o)return o?.components?.[0]?.blockType},[o]),P=X(Me,o),k=Z(De,{categoriesItem:o,currentNavItemRef:b.current?.[v?.groupIndex||0]?.[v?.index||0]}),z=ee(Ce,o),Y=h(()=>{switch(I){case j.Sidebar:return e(P,{});case j.Supports:return e(k,{});case j.Multicol:return e(z,{});default:return null}},[I,z,P,k]),F=h(()=>a?.headerBar?.actions?.filter(m=>m?.pcShow),[a]),x=h(()=>F?.find(m=>m?.blockType===R.Profile),[F]),O=G(()=>{c(m=>!m)},[]);return C(()=>{if(g?.current){const m=g.current;return m.addEventListener("click",O),()=>{m.removeEventListener("click",O)}}},[O]),l(K,{childClassName:"bg-white",className:"relative h-[96px]",children:[l("div",{ref:d,onClick:B,className:"flex h-full flex-col justify-end gap-4",children:[l("div",{className:"flex items-center justify-between",children:[e(ie,{}),e(re,{ref:g,actions:F})]}),e("div",{className:"flex justify-between",children:s?.map((m,y)=>e("div",{className:"flex gap-6",children:m?.map((M,L)=>e("div",{ref:_=>{b.current[y][L]=_},className:"hover:text-brand-0 cursor-pointer",children:l("div",{className:"relative",children:[l("div",{className:"flex items-center gap-1 pb-4",onClick:_=>H(_,y,L),children:[e(p,{html:M.text,className:E(" text-sm font-bold leading-[1.4]",{"text-brand-0":v?.groupIndex===y&&v?.index===L})}),e(ne,{className:E({"text-brand-0":v?.groupIndex===y&&v?.index===L})})]}),e("div",{className:E("absolute bottom-0 left-0 h-[2px] w-0 bg-[#1D1D1F] transition-all duration-500",{"w-full":v?.groupIndex===y&&v?.index===L})})]})},M.id))},`groupCategory-${y}`))})]}),v?.open&&o&&l("div",{className:"absolute left-0 top-full z-[999] flex w-full flex-col bg-black/70",style:{height:`calc(100vh - ${d?.current?.getBoundingClientRect()?.bottom}px)`},children:[e("div",{className:"relative z-50",children:Y}),e("div",{className:"flex-1 bg-transparent",onClick:B})]}),r&&l("div",{className:"absolute left-0 z-[999] flex w-full bg-black/70",style:{height:`calc(100vh - ${g?.current?.getBoundingClientRect()?.bottom}px)`,top:`calc(12px + ${g?.current?.getBoundingClientRect()?.top}px)`},children:[l("div",{className:"absolute max-w-[272px] bg-white p-4",style:{right:`calc(100% - ${g?.current?.getBoundingClientRect()?.right}px)`},children:[e(p,{html:x?.benefits_title,className:"text-sm font-bold leading-[1.4]"}),e("div",{className:"mt-3 flex flex-col gap-1",children:x?.benefits?.map(m=>l("div",{className:"flex items-center gap-[6px]",children:[e(J,{source:m.benefitIcon?.url,className:"size-4",alt:m.benefit,width:16,height:16}),e(p,{html:m.benefit,className:"text-sm font-bold leading-[1.4]"})]},m.id))}),l("div",{className:"mt-4 flex items-center gap-2",children:[e(S,{variant:"secondary",size:"sm",onClick:()=>i?.join?.(),children:e(p,{html:x?.primaryButton||"Join Now",className:"text-sm font-bold leading-[1.4]"})}),e(S,{variant:"primary",size:"sm",onClick:()=>i?.login?.(),children:e(p,{html:x?.secondaryButton||"Log In",className:"text-sm font-bold leading-[1.4]"})})]})]}),e("div",{className:"flex-1 bg-transparent",onClick:()=>c(!1)})]})]})}),Me=({sidebarCategoriesMetadata:t,seriesMetadata:n})=>{const[a,i]=w([]),[s,o]=w(0),u=$(null);Q(()=>{V.fromTo(u?.current,{height:0},{height:548})},[]),C(()=>{t?.subcategories?.length&&i(t?.subcategories?.map((r,c)=>({index:c,open:!1})))},[t]);const f=h(()=>n?.find(r=>t?.subcategories?.[a?.find(c=>c.open)?.index||0]?.subSubCategories?.[s]?.label===r.label)||{},[t,a,s,n]),N=r=>{i(c=>c.map(d=>d.index===r?{...d,open:!d.open}:{...d,open:!1}))},g=r=>{o(r)};return l(K,{childClassName:"lg-desktop:gap-12 flex bg-white gap-8",children:[l("div",{className:"lg-desktop:basis-[356px] flex basis-[284px] flex-col gap-4 py-4",style:{userSelect:"none"},children:[e("div",{className:"desktop:max-h-[416px] flex flex-col overflow-y-auto",children:t?.subcategories?.map((r,c)=>l("div",{children:[l("div",{className:"flex cursor-pointer items-center justify-between",onClick:()=>N(c),children:[e(p,{html:r.label,className:"p-4 text-sm font-bold leading-[1.4]"}),e(ne,{className:E({"rotate-180":a.find(d=>d.index===c)?.open})})]}),a.find(d=>d.index===c)?.open&&e("div",{className:"flex flex-col",children:r.subSubCategories?.map((d,b)=>e(p,{html:d.label,onMouseEnter:()=>g(b),className:E("cursor-pointer px-6 py-4 text-sm font-bold leading-[1.4] text-[#6D6D6F] hover:bg-[#F5F5F7]")},`subSubItem-${c}-${b}`))})]},`subcategoryItem-${c}`))}),e("div",{className:"flex",children:l("div",{className:"flex flex-col gap-4",children:[e(S,{variant:"primary",size:"lg",className:"text-base",children:e("a",{href:t?.primary?.url,children:t?.primary?.label})}),e(S,{variant:"link",size:"lg",className:"justify-start py-0 text-base",children:e("a",{href:t?.secondary?.url,children:t?.secondary?.label})})]})})]}),l("div",{className:"flex-1",children:[Reflect.ownKeys(f).length>0&&l("div",{className:"mb-4 flex items-center justify-between",children:[l("div",{className:"flex items-center gap-2",children:[e(p,{html:f?.label,className:"text-2xl font-bold leading-[1.4]"}),e(S,{variant:"link",size:"lg",className:"justify-start p-0 text-base",children:e(T,{href:f?.primary?.url,className:"text-base font-bold leading-[1.2] no-underline",children:f?.primary?.label})})]}),e(T,{href:f?.guide?.url,className:"text-base leading-[1.2] text-[#6D6D6F]",children:f?.guide?.label})]}),e("div",{className:"flex flex-col gap-4 overflow-y-auto",ref:u,children:f?.series?.map((r,c)=>l("div",{children:[e(p,{html:r.label,className:"text-sm font-bold leading-[1.4] text-[#6D6D6F]"}),e("div",{className:"mt-2 grid grid-cols-3 gap-4",children:r.products?.map((d,b)=>e(oe,{product:d},`seriesProductItem-${b}`))})]},`seriesItem-${c}`))})]})]})},Ce=({multicolMetadata:t})=>{const n=$(null);return Q(()=>{V.fromTo(n?.current,{height:0},{height:"auto"})},[]),e("div",{ref:n,children:e(K,{childClassName:"bg-white",className:"h-full",children:e("div",{className:"flex gap-4 py-4",children:t?.map((a,i)=>e("div",{className:"w-1/4",children:e(se,{item:a})},`multicolItem-${a?.label}-${i}`))})})})},De=({supportsMetadata:t,currentNavItemRef:n})=>{const a=$(null),[i,s]=w(null);Q(()=>{V.fromTo(a?.current,{height:0},{height:"auto"})},[]);const o=ve(()=>{if(n){const u=n.getBoundingClientRect();s(u)}},500);return C(()=>(o(),window.addEventListener("resize",o),()=>{window.removeEventListener("resize",o)}),[o]),C(()=>{if(n){const u=n.getBoundingClientRect();s(u)}},[n]),e("div",{className:"absolute top-0 h-full bg-white p-4",ref:a,style:{right:`calc(100% - ${i?.right}px)`},children:e("div",{children:t?.map(u=>e("div",{className:"py-2",children:e(T,{href:u.url,className:"text-sm font-bold leading-[1.4] no-underline",children:u.label})},u.id))})})},oe=({product:t})=>{const{buildProps:n}=A(),a=n?.products?.find(o=>o.handle===t.handle),i=a?.variants?.find(o=>o.sku===t.sku),s=h(()=>`/products/${a?.handle}?variant=${pe(i?.id)}`,[a?.handle,i?.id]);return l("div",{className:"flex shrink-0 items-center gap-4 bg-[#F5F5F7] px-4 py-3 [&_img]:hover:scale-105",children:[e("div",{className:"shrink-0 basis-[96px]",children:e(J,{source:`${i?.image?.url||t?.images?.[0]?.url}}`,width:96,height:96})}),l("div",{className:"relative",children:[t?.badge&&e(p,{as:"p",html:t?.badge,className:"text-brand-0 mb-1 inline-block h-[24px] rounded-full border-[1.6px] border-[#00BEFA] px-[6px] text-sm font-bold !leading-[24px]"}),e(T,{href:s,className:"no-underline",children:e(p,{className:"lg-desktop:h-[44px] lg-desktop:text-base line-clamp-2 h-[40px] text-sm font-bold leading-[1.4]",html:a?.title||t?.name})}),t?.desc&&e(p,{as:"p",html:t?.desc,className:"lg-desktop:text-sm mt-1 text-xs font-bold leading-[1.4] text-[#6D6D6F]"})]})]})},se=({item:t})=>l(de,{children:[t?.columns&&l(de,{children:[e(p,{html:t.label,as:"div",className:"my-2 text-sm font-bold leading-[1.4] text-[#6D6D6F]"}),e("div",{className:"mt-2 flex flex-col",children:t.columns?.map(n=>e("div",{className:"py-2",children:e(T,{href:n.url,className:"text-sm font-bold leading-[1.4] no-underline",children:n.label})},n.label))})]}),t?.imageUrl&&l("div",{className:"laptop:h-[280px] laptop:w-[404px] desktop:w-full desktop:h-auto relative h-[240px] w-[358px]",children:[e(J,{source:t.imageUrl,width:404,height:280}),l(T,{href:t.url,className:"absolute inset-0 z-10 flex flex-col justify-end p-4 no-underline",children:[e(p,{html:t.title,className:"desktop:text-2xl text-xl font-bold leading-[1.2] text-white"}),e(p,{html:t.subtitle,className:"text-sm font-bold leading-[1.4] text-white"})]})]})]}),Se=W(({data:t},n)=>{const a=h(()=>te(t?.categories),[t]),{currentMenu:i,setCurrentMenu:s,thirdNavTitle:o}=A(),[u,f]=w(!1),[N,g]=w(0),[r,c]=w(null),d=$(null);C(()=>{if(d?.current&&u){const x=d?.current?.getBoundingClientRect();g(window?.innerHeight-(x?.bottom||0))}},[u]),Q(()=>{V.fromTo(d.current,{height:0},{height:N,duration:.5})},[N]),C(()=>{document.documentElement.style.overflow=u?"hidden":"auto"},[u]);const b=h(()=>r?.components?.[0]?.blockType,[r]),v=X(Le,r),H=Z(Te,{categoriesItem:r}),B=ee(Ee,r),I=h(()=>{switch(b){case j.Sidebar:return e(v,{});case j.Supports:return e(H,{});case j.Multicol:return e(B,{});default:return null}},[b,v,H,B]),P=G(()=>{f(!1),g(0),s&&s(D.Primary)},[f,g,s]),k=h(()=>t?.headerBar?.actions?.filter(x=>x?.mobileShow&&x?.blockType!==R.Profile),[t]),z=h(()=>t?.headerBar?.actions?.find(x=>x?.mobileShow&&x?.blockType===R.Profile)||{},[t]),Y=h(()=>{switch(i){case D.Primary:return e(Be,{actions:k,menuOpen:u,onMenuOpenClose:()=>{f(!1),g(0)},onMenuOpenClick:()=>f(!0)});case D.Secondary:return e(ce,{title:r?.text,onMenuOpenClose:P,onMenuBackClick:()=>s?.(D.Primary)});case D.Third:return e(ce,{title:o,onMenuOpenClose:P,onMenuBackClick:()=>s?.(D.Secondary)});default:return null}},[u,i,s,r,k,o,P]),F=G((x,O)=>{const m=Array.isArray(a)?Array.isArray(a[x])?a[x][O]:{}:{};c(m),s?.(D.Secondary)},[a,s]);return l(K,{childClassName:"bg-white",className:"relative h-[52px]",children:[Y,u&&e("div",{ref:d,className:"absolute left-0 top-[calc(100%+1px)] z-[999] w-full overflow-y-auto bg-white",style:{height:N},children:i===D.Primary?e(Pe,{categories:a,onPrimaryMenuClick:F,profileAction:z}):I})]})}),Pe=({categories:t,onPrimaryMenuClick:n,profileAction:a})=>l("div",{className:"flex h-full flex-col justify-between",children:[e("div",{className:"tablet:px-8 laptop:px-16 p-4",children:t?.map((i,s)=>l("div",{className:"",children:[i?.map((o,u)=>e(q,{label:o.text,onClick:()=>n(s,u)},o.id)),e("div",{className:E("my-2 h-px w-full bg-[#E5E5E7]",{hidden:s===t.length-1})})]},`groupCategory-${s}`))}),e(He,{profileAction:a})]}),Le=({sidebarCategoriesMetadata:t,seriesMetadata:n})=>{const{currentMenu:a,setCurrentMenu:i,setThirdNavTitle:s,matchSeriesMetadata:o,setMatchSeriesMetadata:u}=A(),[f,N]=w([]);return C(()=>{t?.subcategories?.length&&N(t?.subcategories?.map((r,c)=>({index:c,open:!1})))},[t]),h(()=>{switch(a){case D.Secondary:return l("div",{className:"tablet:px-8 laptop:px-16 flex h-full flex-col justify-between p-4",children:[l("div",{children:[t?.subcategories?.map((r,c)=>l("div",{children:[e(q,{label:r?.label,active:f.find(d=>d.index===c)?.open,onClick:()=>{N(d=>d.map(b=>b.index===c?{...b,open:!b.open}:{...b,open:!1}))}}),f.find(d=>d.index===c)?.open&&r.subSubCategories?.map((d,b)=>e("div",{className:"px-2 py-4",onClick:()=>{i&&i(D.Third),u?.(n?.find(v=>t?.subcategories?.[c]?.subSubCategories?.[b]?.label===v.label)||{}),s&&s(d.label)},children:e(p,{html:d.label,className:"text-sm font-bold leading-[1.4]"})},`${c}-${b}`))]},`${r.label}-${c}`)),e(T,{href:o?.guide?.url,children:e("div",{className:"mt-4",children:e(p,{html:o?.guide?.label,className:"text-sm font-bold leading-[1.2] text-[#6D6D6F]"})})})]}),l("div",{className:"tablet:items-start flex flex-col items-center gap-4",children:[e(S,{variant:"primary",size:"lg",className:"tablet:w-auto w-full text-base",children:e("a",{href:t?.primary?.url,children:t?.primary?.label})}),e(S,{variant:"link",size:"lg",className:"tablet:w-auto tablet:px-0 w-full py-0 text-base",children:e("a",{href:t?.secondary?.url,children:t?.secondary?.label})})]})]});case D.Third:return l("div",{className:"tablet:px-8 laptop:px-16 desktop:px-0 p-4",children:[Reflect.ownKeys(o).length>0&&l("div",{className:"tablet:pt-0 flex items-center gap-3 py-4",children:[e(p,{html:o?.label,className:"text-xl font-bold leading-[1.4]"}),e(S,{variant:"link",size:"lg",className:"p-0",children:e(T,{href:o?.primary?.url,className:"text-base leading-[1.2]",children:o?.primary?.label})})]}),e("div",{className:"flex flex-col gap-6",children:o?.series?.map((r,c)=>l("div",{children:[e(p,{html:r.label,className:"text-sm font-bold leading-[1.4] text-[#3D3D3F]"}),e("div",{className:"laptop:grid-cols-3 laptop:gap-4 tablet:grid tablet:grid-cols-2 tablet:gap-3 mt-2 flex flex-col gap-2",children:r.products?.map((d,b)=>e(oe,{product:d},`seriesProductItem-${c}-${b}`))})]},`seriesItem-${c}`))})]});default:return null}},[a,o,t,s,i,u,n,f])},Te=({supportsMetadata:t})=>e("div",{className:"tablet:px-8 laptop:px-16 p-4",children:t?.map(n=>e(q,{href:n.url,label:n.label,onClick:()=>{}},n.id))}),Ee=({multicolMetadata:t})=>e("div",{className:"tablet:px-8 tablet:p-4 laptop:px-16 flex flex-col gap-4 px-4",children:t?.map((n,a)=>e("div",{children:e(se,{item:n})},`multicolItem-${n?.label}-${a}`))}),He=({profileAction:t})=>{const[n,a]=w(!1),{profile:i,event:s}=A();return l("div",{className:"tablet:px-8 laptop:px-16 bg-[#F5F5F7] px-4 py-6",children:[l("div",{className:"flex items-center justify-between",onClick:()=>a(!n),children:[l("div",{className:"flex items-center gap-[14px]",children:[e("div",{className:"flex size-[40px] items-center justify-center rounded-full bg-white",children:e(ye,{})}),e(p,{html:i?.nick_name||t?.welcome,className:"text-base font-bold leading-[1.4]"})]}),e(le,{className:E({"rotate-90":n})})]}),i?.email&&e("div",{className:"mt-4",children:t?.profiles?.map(o=>e(q,{label:o?.title,href:o?.url},o.id))}),n&&!i?.email&&l("div",{className:"mt-4",children:[e(p,{html:t?.benefits_title,className:"text-sm font-bold leading-[1.4]"}),e("div",{className:"mt-3 flex flex-col gap-1",children:t?.benefits?.map(o=>l("div",{className:"flex items-center gap-[6px]",children:[e(J,{source:o.benefitIcon?.url,className:"size-4",alt:o.benefit,width:16,height:16}),e(p,{html:o.benefit,className:"text-sm font-bold leading-[1.4]"})]},o.id))})]}),l("div",{className:"tablet:mt-4 mt-6 flex items-center gap-3",children:[e(S,{className:"tablet:flex-none flex-1",variant:"secondary",size:"sm",onClick:()=>s?.join?.(),children:e(p,{html:t?.primaryButton||"Join Now",className:"text-sm font-bold leading-[1.4]"})}),e(S,{className:"tablet:flex-none flex-1",variant:"primary",size:"sm",onClick:()=>s?.login?.(),children:e(p,{html:t?.secondaryButton||"Log In",className:"text-sm font-bold leading-[1.4]"})})]})]})},Be=({menuOpen:t,onMenuOpenClose:n,onMenuOpenClick:a,actions:i})=>l("div",{className:"flex h-full items-center justify-between gap-4",children:[e(ie,{}),l("div",{className:"desktop:gap-6 flex items-center gap-4",children:[e(re,{actions:i}),t?e(ae,{onClick:()=>n()}):e(xe,{onClick:()=>a()})]})]}),ie=()=>{const{payloadData:t}=A();return l("div",{className:"desktop:gap-2 flex items-center gap-[6px]",children:[e("div",{dangerouslySetInnerHTML:{__html:t?.headerBar?.logo}}),e(Ne,{}),e(p,{html:t?.headerBar?.slogan,className:"tablet:text-sm text-xs font-bold leading-[1.4]"})]})},re=W(({actions:t},n)=>{const{event:a}=A(),i=G(s=>{switch(s?.blockType){case R.Search:a?.search?.();break;case R.Cart:a?.cart?.();break;case R.Profile:a?.profile?.();break;case R.Livestream:a?.livestream?.();break;default:return()=>{}}},[a]);return e("div",{className:"desktop:gap-6 flex items-center gap-4",children:Array.isArray(t)&&t?.map(s=>e("div",{ref:s.blockType===R.Profile?n:null,onClick:()=>i(s),children:e(p,{html:s.icon,className:"hover:text-brand-0 cursor-pointer"})},s.id))})}),ce=({title:t,onMenuOpenClose:n,onMenuBackClick:a})=>l("div",{className:"flex h-full items-center gap-3",children:[e(he,{onClick:()=>a()}),e(p,{html:t,className:"flex-1 text-center text-base font-bold leading-[1.4]"}),e(ae,{onClick:()=>n()})]}),q=({label:t,href:n,onClick:a,active:i})=>e("div",{className:"flex cursor-pointer items-center justify-between py-4",onClick:a,children:l(T,{href:n,asChild:!n,className:"flex w-full items-center justify-between no-underline",children:[e(p,{html:t,className:"text-sm font-bold leading-[1.4]"}),e(le,{className:E({"rotate-90":i})})]})});var Ke=ue(ke);export{Ke as default};
1
+ "use client";import{Fragment as q,jsx as e,jsxs as l}from"react/jsx-runtime";import we,{forwardRef as Z,useCallback as G,useEffect as H,useImperativeHandle as Ce,useMemo as L,useRef as F,useState as M}from"react";import{Picture as V,Text as h,Button as $,Container as ee,Link as _,Heading as se}from"../../components/index.js";import{withLayout as Se}from"../../shared/Styles.js";import{cn as N,atobID as De}from"../../helpers/utils.js";import Le,{useNavContext as O}from"./NavProvider.js";import{HeaderNavigationMenu as A,HeaderNavigationBlockType as I,HeaderNavigationActionBlockType as W}from"./types.js";import"react-responsive";import{debounce as Me}from"es-toolkit";import Pe from"jump.js";import{useGSAP as oe}from"@gsap/react";import{gsap as re}from"gsap";import{WithSidebar as ie,WithSupports as ce,WithMulticol as de,WithGroupCategory as ue}from"./withCategory.js";import{Menu as ze,Close as me,User as Ee,RightArrow as He,LeftArrow as Be,DownArrow as te,Polygon as Te}from"./icons/index.js";import $e from"../NavigationSearch/index.js";const Re=Z((t,a)=>{const{data:{headerNavigation:n}={},buildProps:d,event:s,profile:b,theme:u="light",isTop:i=!1,searchResult:m,onSearch:w,isSearching:r,keywords:k,onPrimaryNavClick:x,onSeriesProductClick:f,onSidebarNavClick:v}=t,p=F(null),[c,o]=M(!1),[y,z]=M(!1),[C,P]=M(!1),[D,U]=M(!1),R=F(null),S=()=>{const B=document?.querySelector("body")?.offsetWidth||0;U(B<=1440)};H(()=>(S(),window.addEventListener("resize",S),()=>{window.removeEventListener("resize",S)}),[]),Ce(a,()=>R.current),H(()=>{R.current&&i&&Pe(R.current,{duration:0,offset:R.current?.getBoundingClientRect()?.bottom||0})},[i]),H(()=>{s&&(s.search=()=>o(!0))},[s]),oe(()=>{p?.current&&c&&re.fromTo(p.current,{height:0},{height:"auto",duration:.3})},[c]),H(()=>{document.documentElement.style.overflow=c?"hidden":"auto"},[c]);const Q=L(()=>n?.headerBar?.actions?.find(B=>B?.blockType===W.Search)?.searchBar?.[0]||{},[n]);return e(Le,{buildProps:d,profile:b,isMobile:D,event:s,payloadData:n,onSidebarNavClick:v,onSeriesProductClick:f,children:e("header",{"data-ui-component-id":"HeaderNavigation",className:"relative z-[100]",ref:R,children:l("div",{className:N("hover:text-black hover:bg-white",u==="light"?"text-black":"text-white",{}),onClick:()=>P(!0),children:[e(Ae,{data:n,className:"hidden desktop:block",theme:u,onNavItemClick:()=>P(!0),onPrimaryNavClick:x}),e(Oe,{data:n,className:"block desktop:hidden",onPrimaryNavClick:x}),c&&l("div",{className:"absolute z-[60] top-0 left-0 w-full bg-black/70 flex flex-col",style:{height:`calc(100dvh - ${R?.current?.getBoundingClientRect()?.top}px)`},children:[e("div",{ref:p,className:N("overflow-y-auto",{}),children:e($e,{data:Q,keywords:k,isSearching:r,searchResult:m,onSearch:B=>{w?.(B)},onClose:()=>{w?.(),o(!1)}})}),e("div",{className:"flex-1 bg-transparent",onClick:()=>o(!1)})]})]})})})}),Ae=Z((t,a)=>{const{data:n,onNavItemClick:d,className:s,theme:b,onPrimaryNavClick:u}=t,{event:i,profile:m}=O(),[w,r]=M(!1),k=L(()=>ue(n?.categories?.filter(g=>g?.pcShow)),[n]),[x,f]=M(null),[v,p]=M([]),c=F(null),[o,y]=M(!1),z=F(null),C=F(null),P=F(k.map(g=>Array(g?.length||0).fill(null)));H(()=>{k?.length&&p(k?.map((g,E)=>g?.map((T,j)=>({groupIndex:E,index:j,open:!1}))))},[k]);const D=L(()=>{let g=null;for(const E of v){for(const T of E)if(T.open){g=T;break}if(g)break}return g},[v]);H(()=>{document.documentElement.style.overflow=D?.open||o?"hidden":"auto"},[D?.open,o]);const U=(g,E,T)=>{if(y(!1),x?.components?.[0]?.blockType===I.Links)x?.components?.[0]?.url&&window.open(x?.components?.[0]?.url);else{const j=k?.flat()||[],J=j?.findIndex(le=>le?.id===k[E][T]?.id);g.stopPropagation(),d?.(),u?.(j[J],J),f(k[E][T]),p(le=>le.map(ke=>ke.map(X=>X.groupIndex===E&&X.index===T?{...X,open:!X.open}:{...X,open:!1})))}},R=()=>{p(g=>g.map(E=>E.map(T=>({...T,open:!1}))))},S=L(()=>{if(x)return x?.components?.[0]?.blockType},[x]),Q=ie(je,x),B=de(Fe,x),xe=ce(_e,{categoriesItem:x,currentNavItemRef:P.current?.[D?.groupIndex||0]?.[D?.index||0]}),Ne=L(()=>{switch(S){case I.Sidebar:return e(Q,{});case I.Supports:return e(xe,{});case I.Multicol:return e(B,{});default:return null}},[S,x]),ae=L(()=>n?.headerBar?.actions?.filter(g=>g?.pcShow),[n]),K=L(()=>ae?.find(g=>g?.blockType===W.Profile),[ae]),ne=G(()=>{y(g=>!g)},[]);return H(()=>{if(c?.current){const g=c.current;return g.addEventListener("click",ne),()=>{g.removeEventListener("click",ne)}}},[ne]),oe(()=>{D?.open&&re.fromTo(C?.current,{height:0},{height:"auto"})},[D?.open]),l(ee,{className:N("relative h-[96px]",s),children:[l("div",{ref:z,onClick:R,className:"flex h-full flex-col justify-end gap-4",children:[l("div",{className:"flex items-center justify-between",children:[e(ge,{}),e(ye,{ref:c,actions:ae,activeStatus:o})]}),e("div",{className:"flex justify-between",children:k?.map((g,E)=>e("div",{className:"flex gap-3",children:g?.map((T,j)=>e("div",{ref:J=>{P.current[E][j]=J},className:"group cursor-pointer",children:l("div",{className:"relative",children:[l("div",{className:"flex items-center gap-1 pb-4",onClick:J=>U(J,E,j),children:[e(h,{html:T.text,className:"text-sm font-bold leading-[1.4]"}),e(te,{className:N("opacity-0 size-4 group-hover:opacity-100 transition-opacity duration-500",{"rotate-180":D?.groupIndex===E&&D?.index===j,"opacity-100":w&&D?.groupIndex===E&&D?.index===j})})]}),e("div",{className:N("absolute bottom-0 left-0 h-[2px] w-0 transition-all duration-500",{"w-[calc(100%-20px)]":D?.groupIndex===E&&D?.index===j},b==="dark"?"bg-white":"bg-[#1D1D1F]")})]})},T.id))},`groupCategory-${E}`))})]}),l("div",{className:N("border-t border-b-[#E4E5E6] text-black absolute left-0 top-full z-[999] flex w-full flex-col bg-black/70 overflow-hidden",{hidden:!(D?.open&&x)}),onMouseEnter:()=>r(!0),onMouseLeave:()=>r(!1),style:{height:`calc(100dvh - ${z?.current?.getBoundingClientRect()?.bottom}px)`},children:[e("div",{ref:C,className:N("relative z-50",{"overflow-hidden":S!==I.Supports}),children:Ne}),e("div",{className:"flex-1 bg-transparent",onClick:R})]}),o&&l("div",{className:"absolute left-0 z-[999] flex w-full bg-black/70 h-[100dvh] top-full",children:[e("div",{className:"absolute w-[272px] bg-white p-4",style:{right:`calc(100% - ${c?.current?.getBoundingClientRect()?.right}px)`,top:"-36px"},children:m?.email?l(q,{children:[e(h,{html:m?.nick_name||K?.welcome,className:"text-sm font-bold"}),e("div",{className:"h-[1px] mt-2 bg-[#D9D9D9]"}),e("div",{className:"mt-2",children:K?.profiles?.map(g=>e(Y,{className:"py-2",label:g?.title,href:g?.url},g.id))})]}):l(q,{children:[e(Te,{className:"absolute -top-2 text-white right-[46px] z-30"}),e(h,{html:K?.benefits_title,className:"text-sm font-bold leading-[1.4]"}),e("div",{className:"mt-2 flex flex-col gap-1",children:K?.benefits?.map(g=>l("div",{className:"flex items-center gap-[6px]",children:[e(V,{source:g.benefitIcon?.url,className:"size-4",alt:g.benefit,width:16,height:16}),e(h,{html:g.benefit,className:"text-sm font-bold leading-[1.4]"})]},g.id))}),l("div",{className:"mt-4 flex items-center gap-2",children:[e($,{variant:"secondary",size:"lg",onClick:()=>i?.join?.(),children:e(h,{html:K?.primaryButton||"Join Now",className:"font-bold"})}),e($,{variant:"primary",size:"lg",onClick:()=>i?.login?.(),children:e(h,{html:K?.secondaryButton||"Log In",className:"font-bold"})})]})]})}),e("div",{className:"flex-1 bg-transparent",onClick:()=>y(!1)})]})]})}),je=we.memo(({sidebarCategoriesMetadata:t,seriesMetadata:a})=>{const{buildProps:n,onSidebarNavClick:d}=O(),[s,b]=M([]),[u,i]=M(-1),m=F(null),w=G(()=>{const f=t?.subcategories;if(!f?.length)return;const v=f.findIndex(o=>!!o?.subSubCategories),p=f.findIndex(o=>!o?.subSubCategories),c=f.map((o,y)=>({index:y,open:v===y||p===y}));b(c)},[t]);H(()=>{w()},[w]);const r=L(()=>{const f=t?.subcategories?.[s?.find(p=>p.open)?.index||0],v=a?.find(p=>p?.label?.toLowerCase()===f?.label?.toLowerCase())||{};if(f?.collections){const p=n?.categories?.[f?.collections]||{};return{label:v?.label,isCollection:!0,banner:v?.banner,primary:v?.primary,series:[{products:p?.products}]}}else if(f?.subSubCategories){const p=f?.subSubCategories?.[u],c=a?.find(o=>o?.label?.toLowerCase()===p?.label?.toLowerCase())||{};if(p?.collections){const o=n?.categories?.[p?.collections]||{};return{label:c?.label,isCollection:!0,banner:c?.banner,primary:c?.primary,series:[{products:o?.products}]}}else return c}else return v},[t,s,u,a]),k=G((f,v)=>{if(v?.subSubCategories?.length>0?i(0):i(-1),v?.subSubCategories?.length>0)b(p=>p.map(c=>c.index===f?{...c,open:!0}:{...c,open:!1}));else{const c=t?.subcategories?.findIndex(o=>!!o?.subSubCategories);b(o=>o.map(y=>({...y,open:y.index===f||y.index===c})))}},[t,w]),x=(f,v)=>{b(p=>p.map(c=>c.index===f?{...c,open:!0}:{...c,open:!1})),i(v)};return l(ee,{childClassName:"lg-desktop:gap-12 flex bg-white gap-8",children:[l("div",{className:"lg-desktop:basis-[356px] flex basis-[284px] flex-col gap-4 py-4",style:{userSelect:"none"},ref:m,children:[e("div",{className:"desktop:h-[416px] flex flex-col overflow-y-auto",style:{scrollbarWidth:"none",msOverflowStyle:"none"},children:t?.subcategories?.map((f,v)=>{const p=Array.isArray(f?.subSubCategories)&&f?.subSubCategories?.length>0;return l("div",{children:[l("div",{className:N("flex cursor-pointer items-center justify-between",{"bg-[#F5F5F7]":!p&&s?.find(c=>c.index===v)?.open}),onClick:()=>{k(v,f),d?.(f,v)},children:[e(h,{html:f.label,className:"p-4 text-sm font-bold leading-[1.4]"}),p&&e(te,{className:N("size-4",{"rotate-180":s?.find(c=>c.index===v)?.open})})]}),s?.find(c=>c.index===v)?.open&&e("div",{className:"flex flex-col",children:f.subSubCategories?.map((c,o)=>e(h,{html:c.label,onClick:()=>{x(v,o),d?.(c,o)},className:N("cursor-pointer hover:bg-[#F5F5F7] px-6 py-4 text-sm font-bold leading-[1.4] text-[#6D6D6F]",{"bg-[#F5F5F7]":u===o})},`subSubItem-${v}-${o}`))})]},`subcategoryItem-${v}`)})}),t&&e("div",{className:"flex",children:l("div",{className:"flex flex-col gap-4",children:[t?.primary&&e($,{as:"a",href:`${t?.primary?.url}?ref=${t?.primary?.label}_shopall`,variant:"primary",size:"lg",className:"text-sm lg-desktop:text-base",children:t?.primary?.label}),t?.secondary&&e($,{as:"a",href:t?.secondary?.url,variant:"link",size:"lg",className:"justify-start !p-0 text-sm lg-desktop:text-base",children:t?.secondary?.label})]})})]}),l("div",{className:"flex-1 py-4",children:[Reflect.ownKeys(r).length>0&&l("div",{className:"mb-4 flex items-center justify-between",children:[l("div",{className:"flex items-center gap-2",children:[e(h,{html:r?.label,className:"text-xl lg-desktop:text-2xl font-bold leading-[1.4]"}),r?.primary&&!r?.primary?.hide&&e($,{as:"a",href:`${r?.primary?.url}?ref=${r?.label}_viewmore`,variant:"link",size:"lg",className:"justify-start !p-0 text-sm lg-desktop:text-base font-bold leading-[1.2] no-underline",children:r?.primary?.label})]}),e(_,{href:r?.guide?.url,className:"text-sm lg-desktop:text-base leading-[1.2] text-[#6D6D6F]",children:r?.guide?.label})]}),e("div",{className:"flex flex-col gap-4 overflow-y-auto h-[426px]",style:{scrollbarWidth:"none",msOverflowStyle:"none"},children:r?.series?.map((f,v)=>l("div",{children:[f.label&&e(h,{html:f.label,className:"text-sm mb-2 font-bold leading-[1.4] text-[#6D6D6F]"}),l("div",{className:"grid grid-cols-3 gap-4",children:[!!r?.banner&&e(_,{asChild:!r?.banner?.href,href:r?.banner?.href,children:l("div",{className:"relative [&_img]:hover:scale-105 [&_img]:hover:transition-all [&_img]:hover:duration-300",children:[e(V,{source:r?.banner?.imageUrl,className:"h-[114px] laptop:h-[120px]",imgClassName:"object-cover h-full"}),l("div",{className:"absolute bottom-0 left-0 right-0 p-4",children:[e(se,{size:2,html:r?.banner?.title||"Buy in Guide",className:"font-bold text-white"}),e(h,{html:r?.banner?.desc||"20.000mAh",className:"text-sm text-white font-bold"})]})]})}),f.products?.map((p,c)=>e(pe,{seriesLabel:r?.label,product:p,isCollection:r?.isCollection},`seriesProductItem-${c}`))]})]},`seriesItem-${v}`))})]})]})}),Fe=({multicolMetadata:t})=>{const a=F(null);return e("div",{ref:a,children:e(ee,{childClassName:"bg-white",className:"h-full",children:e("div",{className:"flex gap-4 py-4",children:t?.map((n,d)=>e("div",{className:"w-1/4",children:e(be,{item:n})},`multicolItem-${n?.label}-${d}`))})})})},_e=({supportsMetadata:t,currentNavItemRef:a})=>{const n=F(null),[d,s]=M(null),[b,u]=M(0);H(()=>{if(n?.current){const m=n?.current?.getBoundingClientRect();u(m.height)}},[n]);const i=Me(()=>{if(a){const m=a.getBoundingClientRect();s(m)}},500);return H(()=>(i(),window.addEventListener("resize",i),()=>{window.removeEventListener("resize",i)}),[i]),H(()=>{if(a){const m=a.getBoundingClientRect();s(m)}},[a]),e("div",{className:"absolute top-0 h-full bg-white transition-all duration-500 overflow-hidden",style:{right:`calc(100% - ${d?.right}px)`,height:b},children:e("div",{ref:n,className:"p-4",children:t?.map(m=>e("div",{className:"py-2",children:e(_,{href:m.url,className:"text-sm font-bold leading-[1.4] no-underline",children:m.label})},m.id))})})},pe=({product:t,isCollection:a,position:n,seriesLabel:d})=>{const{buildProps:s,onSeriesProductClick:b}=O();let u=a?t:s?.products?.find(r=>r.handle===t.handle);const i=u?.variants?.find(r=>r.sku===t.sku)||u?.variants?.[0],m=L(()=>`/products/${u?.handle}?variant=${De(i?.id)}`,[u?.handle,i?.id]),w=L(()=>u?.tags?.filter?.(r=>r?.startsWith?.("CLtag"))?.map?.(r=>r?.replace?.("CLtag:",""))?.slice?.(0,2),[u?.tags]);return i?.availableForSale?l("div",{className:"flex shrink-0 items-center gap-4 bg-[#F5F5F7] px-4 py-3 [&_img]:hover:scale-105",children:[e("div",{className:"shrink-0",children:e(V,{source:`${i?.image?.url||t?.images?.[0]?.url}}`,width:90,height:90,className:"size-[96px]",imgClassName:"object-contain h-full"})}),l("div",{className:"relative",children:[e("div",{className:"flex gap-1",children:Array.isArray(w)&&w?.map(r=>e(h,{as:"p",html:r,className:"text-brand-0 whitespace-nowrap mb-1 inline-block h-[24px] rounded-full border-[1.6px] border-[#00BEFA] px-[6px] text-sm font-bold !leading-[22px]"}))}),e(_,{href:m,onClick:r=>{r.preventDefault(),window.open(m),b?.(u,n||0,d)},className:"no-underline hover:text-current",children:e(h,{className:"lg-desktop:h-[44px] lg-desktop:text-base line-clamp-2 h-[40px] text-sm font-bold leading-[1.4]",html:u?.title||t?.name})}),t?.desc&&e(h,{as:"p",html:t?.desc,className:"lg-desktop:text-sm line-clamp-1 mt-1 text-xs font-bold leading-[1.4] text-[#6D6D6F]"})]})]}):null},be=({item:t,allPicture:a})=>l(q,{children:[t?.columns&&l(q,{children:[e(h,{html:t.label,as:"div",className:"my-2 text-sm font-bold leading-[1.4] text-[#6D6D6F]"}),e("div",{className:"mt-2 flex flex-col",children:t.columns?.map(n=>l("div",{className:"py-2 flex items-center gap-1",children:[e(_,{href:`${n.url}?ref=navMenu`,asChild:!n.url,className:"text-sm font-bold leading-[1.4] no-underline",children:n.label}),n?.badge&&e(h,{as:"p",html:n?.badge||"badge",className:"text-sm font-bold !leading-[22px] text-brand-0 h-[24px] rounded-full border-[1.6px] border-[var(--brand-color-0)] px-[6px]"})]},n.label))})]}),t?.imageUrl&&e("div",{className:N("laptop:h-[280px] desktop:h-[224px] lg-desktop:h-[280px] h-[240px] max-w-[358px] tablet:max-w-[346px] laptop:max-w-[440px] desktop:w-full relative overflow-hidden",{"tablet:max-w-none laptop:max-w-none":a}),children:l(_,{href:`${t.url}?ref=navMenu`,asChild:!t.url,children:[e(V,{source:t.imageUrl,width:404,height:280,className:"size-full",imgClassName:"object-cover h-full hover:scale-105 transition-all duration-300"}),l("div",{className:"absolute bottom-4 left-4 z-10 flex flex-col justify-end no-underline",children:[e(h,{html:t.title,className:N("lg-desktop:text-2xl text-xl font-bold leading-[1.2] text-white",{"text-black":t?.theme==="dark"})}),t.subtitle&&e(h,{html:t.subtitle,className:N("text-sm font-bold leading-[1.4] text-white",{"text-black":t?.theme==="dark"})}),t?.primary?.label&&e($,{as:"a",href:t?.primary?.url,variant:"link",size:"lg",className:N("text-sm font-bold mr-auto !p-0 leading-[1.4] text-white",{"text-black":t?.theme==="dark"}),children:t?.primary?.label||"more"})]})]})})]}),Oe=Z(({data:t,className:a,onPrimaryNavClick:n},d)=>{const s=L(()=>ue(t?.categories?.filter(S=>S?.mobileShow)),[t]),{currentMenu:b,setCurrentMenu:u,subSubCategory:i}=O(),[m,w]=M(!1),[r,k]=M(0),[x,f]=M(null),v=F(null);H(()=>{if(v?.current&&m){const S=v?.current?.getBoundingClientRect();k(window?.innerHeight-(S?.bottom||0))}},[m]),oe(()=>{re.fromTo(v.current,{height:0},{height:r,duration:.3})},[r]),H(()=>{document.documentElement.style.overflow=m?"hidden":"auto"},[m]);const p=L(()=>x?.components?.[0]?.blockType,[x]),c=ce(Ue,{categoriesItem:x}),o=ie(We,x),y=de(Ge,x),z=L(()=>{switch(p){case I.Sidebar:return e(o,{});case I.Supports:return e(c,{});case I.Multicol:return e(y,{});default:return null}},[p,x,c]),C=G(()=>{w(!1),k(0),u&&u(A.Primary)},[w,k,u]),P=L(()=>t?.headerBar?.actions?.filter(S=>S?.mobileShow&&S?.blockType!==W.Profile),[t]),D=L(()=>t?.headerBar?.actions?.find(S=>S?.mobileShow&&S?.blockType===W.Profile)||{},[t]),U=L(()=>{switch(b){case A.Primary:return e(Je,{actions:P,menuOpen:m,onMenuOpenClose:()=>{w(!1),k(0)},onMenuOpenClick:()=>w(!0)});case A.Secondary:return e(he,{title:x?.text,onMenuOpenClose:C,onMenuBackClick:()=>u?.(A.Primary)});case A.Third:return e(he,{title:i?.label,onMenuOpenClose:C,onMenuBackClick:()=>u?.(A.Secondary)});default:return null}},[m,b,u,x,P,i,C]),R=G((S,Q)=>{const B=Array.isArray(s)?Array.isArray(s[S])?s[S][Q]:{}:{};f(B),B?.components?.[0]?.blockType===I.Links?B?.components?.[0]?.url&&window.open(B?.components?.[0]?.url):u?.(A.Secondary)},[s,u]);return l(ee,{className:N("relative h-[52px]",a),children:[U,m&&e("div",{ref:v,className:"absolute left-0 top-full text-black border-t border-[#E4E5E6] z-[999] w-full overflow-y-auto bg-white",style:{height:r},children:b===A.Primary?e(Ie,{categories:s,onPrimaryMenuClick:R,onPrimaryNavClick:n,profileAction:D}):z})]})}),Ie=({categories:t,onPrimaryMenuClick:a,profileAction:n,onPrimaryNavClick:d})=>{const{onSidebarNavClick:s}=O();return l("div",{className:"flex h-full flex-col justify-between",children:[e("div",{className:"tablet:px-8 laptop:px-16 p-4",children:t?.map((b,u)=>l("div",{className:"",children:[b?.map((i,m)=>e(Y,{label:i.text,onClick:()=>{const r=(t?.flat()||[])?.findIndex(k=>k?.id===t[u][m]?.id);a(u,m),d?.(i,r)},icon:i.components?.[0]?.icon},i.id)),e("div",{className:N("my-2 h-px w-full bg-[#E5E5E7]",{hidden:u===t.length-1})})]},`groupCategory-${u}`))}),e(Ke,{profileAction:n})]})},We=({sidebarCategoriesMetadata:t,seriesMetadata:a})=>{const{currentMenu:n,setCurrentMenu:d,subSubCategory:s,setSubSubCategory:b,setCurrentSeriesMetadata:u,currentSeriesMetadata:i,buildProps:m,onSidebarNavClick:w}=O(),[r,k]=M([]),[x,f]=M([]);H(()=>{t?.subcategories?.length&&k(t?.subcategories?.map((o,y)=>({index:y,open:!1})))},[t]),H(()=>{s?.subSubCategories?.length&&f(s?.subSubCategories?.map((o,y)=>({index:y,open:y===0})))},[s]);const v=G((o,y)=>{d&&d(A.Third),b?.(o);const z=a?.find(C=>y!==void 0?o?.subSubCategories?.[y]?.label?.toLowerCase()===C.label?.toLowerCase():o?.label?.toLowerCase()===C.label?.toLowerCase())||{};if(o?.collections){const C=m?.categories?.[o?.collections]||{};u?.({label:z?.label,isCollection:!0,banner:z?.banner,primary:z?.primary,series:[{products:C?.products}]})}else u?.(z)},[a,t,d,b,u]),p=L(()=>a?.find(o=>!!o?.guide)?.guide,[a,t]);return L(()=>{switch(n){case A.Secondary:return l("div",{className:"tablet:px-8 laptop:px-16 flex h-full flex-col justify-between tablet:justify-start tablet:gap-16 p-4",children:[e("div",{children:t?.subcategories?.map((o,y)=>e("div",{children:e(Y,{label:o?.label,active:r.find(z=>z.index===y)?.open,onClick:()=>{v(o),w?.(o,y)}})},`${o.label}-${y}`))}),l("div",{className:"tablet:items-start flex flex-col items-center gap-4",children:[t?.primary&&e($,{as:"a",href:`${t?.primary?.url}?ref=${t?.primary?.label}_shopall`,variant:"primary",size:"lg",className:"tablet:w-auto w-full text-base",children:t?.primary?.label}),t?.secondary&&e($,{as:"a",href:t?.secondary?.url,variant:"link",size:"lg",className:"tablet:w-auto tablet:px-0 w-full py-0 text-base",children:t?.secondary?.label})]})]});case A.Third:return l("div",{className:"tablet:px-8 laptop:px-16 p-4",children:[s?.subSubCategories?s?.subSubCategories?.map((o,y)=>{const z=a?.find(P=>P.label.toLowerCase()===o?.label?.toLowerCase())||{};let C={};if(o?.collections){const P=m?.categories?.[o?.collections]||{};C={label:z?.label,isCollection:!0,banner:z?.banner,primary:z?.primary,series:[{products:P?.products}]}}else C=z;return l("div",{children:[Reflect.ownKeys(o).length>0&&e(fe,{matchSeriesMetadata:C,onSubSubCategoryItemClick:()=>{w?.(o,y),f(P=>P.map((D,U)=>({...D,open:U===y})))},expanded:!!x?.find(P=>P.index===y)?.open}),x?.find(P=>P.index===y)?.open&&l(q,{children:[e(ve,{matchSeriesMetadata:C}),C?.primary&&e("div",{className:"text-center my-4",children:e($,{as:"a",href:C?.primary?.url,className:"text-base no-underline leading-[1.2]",variant:"secondary",size:"base",children:C?.primary?.label})})]})]},`${o.label}-${y}`)}):l(q,{children:[Reflect.ownKeys(i).length>0&&e(fe,{matchSeriesMetadata:i}),e(ve,{matchSeriesMetadata:i}),i?.primary&&e("div",{className:"text-center my-4 ",children:e($,{as:"a",href:`${i?.primary?.url}?ref=${i?.label}_viewmore`,variant:"secondary",size:"base",className:"text-base no-underline leading-[1.2]",children:i?.primary?.label})})]}),p&&e(_,{href:p?.url,children:e("div",{className:"mt-4",children:e(h,{html:p?.label,className:"text-sm font-bold leading-[1.2] text-[#6D6D6F]"})})})]});default:return null}},[n,t,d,a,r,x,b,s,u,i])},fe=({matchSeriesMetadata:t,onSubSubCategoryItemClick:a,expanded:n})=>l("div",{className:"tablet:pt-0 py-4 flex items-center justify-between",onClick:a,children:[t?.label&&e(h,{html:t?.label,className:"text-sm font-bold leading-[1.4]"}),a&&e(te,{className:N("size-5",{"rotate-180":n})})]}),ve=({matchSeriesMetadata:t})=>e("div",{className:"flex flex-col gap-2 laptop:gap-3",children:!!t?.series?.length&&t?.series?.map((a,n)=>l("div",{children:[a.label&&e(h,{html:a.label,className:"text-sm mb-2 font-bold leading-[1.4] text-[#3D3D3F]"}),l("div",{className:"laptop:grid-cols-3 laptop:gap-4 tablet:grid tablet:grid-cols-2 tablet:gap-3 flex flex-col gap-2",children:[!!t?.banner&&e(_,{asChild:!t?.banner?.href,href:t?.banner?.href,children:l("div",{className:"relative [&_img]:hover:scale-105 [&_img]:hover:transition-all [&_img]:hover:duration-300",children:[e(V,{source:t?.banner?.imageUrl,className:"h-[114px] laptop:h-[120px]",imgClassName:"object-cover h-full"}),l("div",{className:"absolute bottom-0 left-0 right-0 p-4",children:[e(se,{size:2,html:t?.banner?.title||"Buy in Guide",className:N("font-bold text-white",{"text-black":t?.banner?.theme==="dark"})}),e(h,{html:t?.banner?.desc||"20.000mAh",className:N("text-sm text-white font-bold",{"text-black":t?.banner?.theme==="dark"})})]})]})}),a.products?.map((d,s)=>e(pe,{position:s,product:d,seriesLabel:t?.label,isCollection:t?.isCollection},`seriesProductItem-${n}-${s}`))]})]},`seriesItem-${n}`))}),Ue=({supportsMetadata:t})=>e("div",{className:"tablet:px-8 laptop:px-16 p-4",children:t?.map(a=>e(Y,{href:a.url,label:a.label,onClick:()=>{}},a.id))}),Ge=({multicolMetadata:t})=>{const a=L(()=>!t?.some(n=>!!n.columns),[t]);return e("div",{className:N("tablet:py-4 tablet:px-8 laptop:px-16 flex flex-col gap-4 tablet:gap-6 p-4",{"tablet:grid tablet:grid-cols-2 tablet:gap-3 laptop:gap-4":a}),children:t?.map((n,d)=>e("div",{children:e(be,{item:n,allPicture:a})},`multicolItem-${n?.label}-${d}`))})},Ke=({profileAction:t})=>{const[a,n]=M(!1),{profile:d,event:s}=O();return l("div",{className:N("tablet:px-8 laptop:px-16 bg-[#F5F5F7] px-4 py-6",{"p-4":a}),children:[l("div",{className:"flex items-center justify-between",onClick:()=>n(!a),children:[l("div",{className:"flex items-center gap-[14px]",children:[e("div",{className:"flex size-[40px] shrink-0 items-center justify-center rounded-full bg-white",children:e(Ee,{})}),e(h,{html:d?.nick_name||t?.welcome,className:"text-base font-bold leading-[1.4]"})]}),!d?.email&&e(te,{className:N("size-5 laptop:size-4",{"rotate-180":a})})]}),d?.email&&e("div",{className:"mt-4",children:t?.profiles?.map(b=>e(Y,{label:b?.title,href:b?.url},b.id))}),a&&!d?.email&&l("div",{className:"mt-4",children:[e(h,{html:t?.benefits_title,className:"text-sm font-bold leading-[1.4]"}),e("div",{className:"mt-2 flex flex-col gap-1",children:t?.benefits?.map(b=>l("div",{className:"flex items-center gap-[6px]",children:[e(V,{source:b.benefitIcon?.url,className:"size-4",alt:b.benefit,width:16,height:16}),e(h,{html:b.benefit,className:"text-sm font-bold leading-[1.4]"})]},b.id))})]}),!d?.email&&l("div",{className:"mt-4 flex items-center gap-3",children:[e($,{className:"tablet:flex-none flex-1",variant:"secondary",size:"base",onClick:()=>s?.join?.(),children:e(h,{html:t?.primaryButton||"Join Now",className:"text-sm font-bold leading-[1.4]"})}),e($,{className:"tablet:flex-none flex-1",variant:"primary",size:"base",onClick:()=>s?.login?.(),children:e(h,{html:t?.secondaryButton||"Log In",className:"text-sm font-bold leading-[1.4]"})})]})]})},Je=({menuOpen:t,onMenuOpenClose:a,onMenuOpenClick:n,actions:d})=>l("div",{className:"flex h-full items-center justify-between gap-4",children:[e(ge,{}),l("div",{className:"desktop:gap-6 flex items-center gap-4",children:[e(ye,{actions:d}),t?e(me,{className:"size-5",onClick:()=>a()}):e(ze,{className:"size-5",onClick:()=>n()})]})]}),ge=()=>{const{payloadData:t,isMobile:a}=O();return e("div",{className:"[&>svg]:w-full hover:text-brand-0 cursor-pointer",onClick:()=>{window.location.href="/"},dangerouslySetInnerHTML:{__html:a?t?.headerBar?.mobileLogo:t?.headerBar?.desktopLogo}})},ye=Z(({actions:t,activeStatus:a=!1},n)=>{const{event:d}=O(),[s,b]=M(null),u=G((i,m)=>{switch(b(m),i?.blockType){case W.Search:d?.search?.();break;case W.Cart:d?.cart?.();break;case W.Profile:d?.profile?.();break;case W.Livestream:d?.livestream?.();break;default:return()=>{}}},[d]);return e("div",{className:"desktop:gap-6 flex items-center gap-4",children:Array.isArray(t)&&t?.map((i,m)=>e("div",{ref:i.blockType===W.Profile?n:null,onClick:()=>u(i,m),children:e(h,{html:i.icon,className:N("cursor-pointer size-5",{"text-brand-0":a&&s===m})})},i.id))})}),he=({title:t,onMenuOpenClose:a,onMenuBackClick:n})=>l("div",{className:"flex h-full items-center gap-3",children:[e(Be,{className:"size-5",onClick:()=>n()}),e(h,{html:t,className:"flex-1 text-center text-base font-bold leading-[1.4]"}),e(me,{className:"size-5",onClick:()=>a()})]}),Y=({label:t,href:a,onClick:n,active:d,icon:s,className:b})=>e("div",{className:N("flex cursor-pointer items-center justify-between py-4",b),onClick:n,children:l(_,{href:a,asChild:!a,className:"flex w-full items-center justify-between no-underline",children:[l("div",{className:"flex items-center gap-4",children:[e(h,{html:t,className:N("text-sm font-bold leading-[1.4]",{underline:s})}),s&&e(h,{html:s})]}),e(He,{className:N("size-5 laptop:size-4",{"rotate-90":d})})]})});var ut=Se(Re);export{ut as default};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/biz-components/HeaderNavigation/index.tsx"],
4
- "sourcesContent": ["import React, { forwardRef, useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react'\n\nimport { Picture, Text, Button, Container, Link } from '../../components/index.js'\n\nimport { withLayout } from '../../shared/Styles.js'\n\nimport { cn, atobID } from '../../helpers/utils.js'\n\nimport type {\n MobilePrimaryNavigationData,\n MobileSecondaryNavigationData,\n MobileNavigationProps,\n DesktopNavigationProps,\n HeaderNavigationProps,\n} from './types.js'\nimport NavProvider, { useNavContext } from './NavProvider.js'\n\nimport { HeaderNavigationMenu, HeaderNavigationBlockType, HeaderNavigationActionBlockType } from './types.js'\n\nimport { useMediaQuery } from 'react-responsive'\nimport { debounce, throttle } from 'es-toolkit'\n\nimport { useGSAP } from '@gsap/react'\nimport { gsap } from 'gsap'\nimport type { Product, ProductVariant } from '../../cpn-components/CpnProductCard/types.js'\n\nimport { WithSidebar, WithSupports, WithMulticol, WithGroupCategory } from './withCategory.js'\n\nimport { Menu, Close, User, RightArrow, LeftArrow, DownArrow, LogoLine } from './icons/index.js'\n\nconst HeaderNavigation = forwardRef<HTMLDivElement, HeaderNavigationProps>((props, ref) => {\n const { data: { headerNavigation } = {}, buildProps, event, profile, theme = 'light' } = props\n\n const [isMobile, setIsMobile] = useState(false)\n const [headerHidden, setHeaderHidden] = useState(false)\n const [changeHeaderBackground, setChangeHeaderBackground] = useState(false)\n\n const headerRef = useRef<HTMLDivElement>(null)\n\n const mediaQuery = useMediaQuery({ query: '(max-width: 1440px)' })\n\n useEffect(() => {\n setIsMobile(mediaQuery)\n }, [mediaQuery])\n\n useImperativeHandle(ref, () => headerRef.current as HTMLDivElement)\n\n useEffect(() => {\n let upwardDistance = 0\n let lastScrollY = 0\n const showDownNav = throttle(latest => {\n const delta = lastScrollY - latest\n if (delta > 0) {\n upwardDistance += delta\n if (upwardDistance >= 300) {\n setHeaderHidden(false)\n upwardDistance = 0\n }\n } else {\n setHeaderHidden(latest > 300)\n }\n setChangeHeaderBackground(latest > 24)\n lastScrollY = latest\n }, 200)\n\n const scrollAnimate = () => {\n let scrollTop = 0\n if (document?.documentElement && document?.documentElement?.scrollTop) {\n scrollTop = document?.documentElement.scrollTop\n } else if (document?.body) {\n scrollTop = document?.body.scrollTop\n }\n showDownNav(scrollTop)\n }\n\n window.addEventListener('scroll', scrollAnimate)\n\n return () => window.removeEventListener('scroll', scrollAnimate)\n }, [])\n\n return (\n <NavProvider\n buildProps={buildProps}\n profile={profile}\n isMobile={isMobile}\n event={event}\n payloadData={headerNavigation}\n >\n <header data-ui-component-id=\"HeaderNavigation\" className=\"sticky top-0 z-50\" ref={headerRef}>\n <div\n className={cn(\n 'border-b border-b-gray-200',\n theme === 'light' ? 'text-black' : 'text-white',\n {\n ['translate-y-[-100%] transition-transform duration-500 ease-in-out']: headerHidden,\n ['!bg-white transition-all duration-500 ease-in-out']: changeHeaderBackground,\n },\n {\n ['hover:!text-black']: theme === 'dark',\n ['!text-black']: changeHeaderBackground,\n }\n )}\n >\n {!isMobile && <DesktopNavigation data={headerNavigation} />}\n {isMobile && <MobileNavigation data={headerNavigation} />}\n </div>\n </header>\n </NavProvider>\n )\n})\n\nconst DesktopNavigation = forwardRef<HTMLDivElement, DesktopNavigationProps>((props, ref) => {\n const { data } = props\n const { event } = useNavContext()\n\n const groupCategories = useMemo(() => {\n return WithGroupCategory(data?.categories) as any[][]\n }, [data])\n\n const [categoriesItem, setCategoriesItem] = useState<any>(null)\n const [navStatusArray, setNavStatusArray] = useState<{ index: number; groupIndex: number; open: boolean }[][]>([])\n const profileRef = useRef<HTMLDivElement>(null)\n const [userProfileOpen, setUserProfileOpen] = useState(false)\n const headerRef = useRef<HTMLDivElement>(null)\n const navItemRefs = useRef<HTMLDivElement[][]>(\n groupCategories.map((categories: any) => Array(categories?.length || 0).fill(null))\n )\n\n useEffect(() => {\n if (groupCategories?.length) {\n setNavStatusArray(\n groupCategories?.map((groupItem: any, groupIndex: number) => {\n return groupItem?.map((_: any, index: number) => ({ groupIndex, index, open: false }))\n })\n )\n }\n }, [groupCategories])\n\n const currentNavItem = useMemo(() => {\n let currentNavItem: { index: number; groupIndex: number; open: boolean } | null = null\n for (const groupItem of navStatusArray) {\n for (const item of groupItem) {\n if (item.open) {\n currentNavItem = item\n break\n }\n }\n if (currentNavItem) {\n break\n }\n }\n return currentNavItem\n }, [navStatusArray])\n\n useEffect(() => {\n // document.documentElement.style.overflow = currentNavItem?.open ? 'hidden' : 'auto'\n }, [currentNavItem])\n\n const handleNavItemClick = (e: any, groupIndex: number, index: number) => {\n e.stopPropagation()\n setCategoriesItem(groupCategories[groupIndex][index])\n setNavStatusArray(prev =>\n prev.map(groupItem =>\n groupItem.map(item =>\n item.groupIndex === groupIndex && item.index === index\n ? { ...item, open: !item.open }\n : { ...item, open: false }\n )\n )\n )\n }\n\n const handleNavMenuClose = () => {\n setNavStatusArray(prev => prev.map(groupItem => groupItem.map(item => ({ ...item, open: false }))))\n }\n\n const currentBlockTypeCategories = useMemo(() => {\n if (categoriesItem) return categoriesItem?.components?.[0]?.blockType\n }, [categoriesItem])\n\n const SidebarDropdownComp = WithSidebar(SidebarDropdown, categoriesItem)\n const SupportsDropdownComp = WithSupports(SupportsDropdown, {\n categoriesItem,\n currentNavItemRef: navItemRefs.current?.[currentNavItem?.groupIndex || 0]?.[currentNavItem?.index || 0],\n })\n const MulticolDropdownComp = WithMulticol(MulticolDropdown, categoriesItem)\n\n const DropdownComp = useMemo(() => {\n switch (currentBlockTypeCategories) {\n case HeaderNavigationBlockType.Sidebar:\n return <SidebarDropdownComp />\n case HeaderNavigationBlockType.Supports:\n return <SupportsDropdownComp />\n case HeaderNavigationBlockType.Multicol:\n return <MulticolDropdownComp />\n default:\n return null\n }\n }, [currentBlockTypeCategories, MulticolDropdownComp, SidebarDropdownComp, SupportsDropdownComp])\n\n const actions = useMemo(() => {\n return data?.headerBar?.actions?.filter((item: any) => item?.pcShow)\n }, [data])\n\n const profileAction = useMemo(() => {\n return actions?.find((item: any) => item?.blockType === HeaderNavigationActionBlockType.Profile)\n }, [actions])\n\n const handleProfileClick = useCallback(() => {\n setUserProfileOpen(prev => !prev)\n }, [])\n\n useEffect(() => {\n if (profileRef?.current) {\n const profileRefElement = profileRef.current as HTMLDivElement\n profileRefElement.addEventListener('click', handleProfileClick)\n\n return () => {\n profileRefElement.removeEventListener('click', handleProfileClick)\n }\n }\n }, [handleProfileClick])\n\n return (\n <Container childClassName=\"bg-white\" className=\"relative h-[96px]\">\n <div ref={headerRef} onClick={handleNavMenuClose} className=\"flex h-full flex-col justify-end gap-4\">\n <div className=\"flex items-center justify-between\">\n <Logo />\n <Actions ref={profileRef} actions={actions} />\n </div>\n <div className=\"flex justify-between\">\n {groupCategories?.map((groupItem: any, groupIndex: number) => {\n return (\n <div key={`groupCategory-${groupIndex}`} className=\"flex gap-6\">\n {groupItem?.map((item: any, index: number) => {\n return (\n <div\n key={item.id}\n ref={(el: HTMLDivElement) => {\n navItemRefs.current[groupIndex][index] = el\n }}\n className=\"hover:text-brand-0 cursor-pointer\"\n >\n <div className=\"relative\">\n <div\n className=\"flex items-center gap-1 pb-4\"\n onClick={e => handleNavItemClick(e, groupIndex, index)}\n // onMouseEnter={() => handleMouseEnter(groupIndex, index)}\n >\n <Text\n html={item.text}\n className={cn(' text-sm font-bold leading-[1.4]', {\n 'text-brand-0':\n currentNavItem?.groupIndex === groupIndex && currentNavItem?.index === index,\n })}\n />\n <DownArrow\n className={cn({\n ['text-brand-0']:\n currentNavItem?.groupIndex === groupIndex && currentNavItem?.index === index,\n })}\n />\n </div>\n <div\n className={cn(\n 'absolute bottom-0 left-0 h-[2px] w-0 bg-[#1D1D1F] transition-all duration-500',\n {\n 'w-full': currentNavItem?.groupIndex === groupIndex && currentNavItem?.index === index,\n }\n )}\n />\n </div>\n </div>\n )\n })}\n </div>\n )\n })}\n </div>\n </div>\n {currentNavItem?.open && categoriesItem && (\n <div\n className=\"absolute left-0 top-full z-[999] flex w-full flex-col bg-black/70\"\n style={{ height: `calc(100vh - ${headerRef?.current?.getBoundingClientRect()?.bottom}px)` }}\n >\n <div className=\"relative z-50\">{DropdownComp}</div>\n <div className=\"flex-1 bg-transparent\" onClick={handleNavMenuClose} />\n </div>\n )}\n {userProfileOpen && (\n <div\n className=\"absolute left-0 z-[999] flex w-full bg-black/70\"\n style={{\n height: `calc(100vh - ${profileRef?.current?.getBoundingClientRect()?.bottom}px)`,\n top: `calc(12px + ${profileRef?.current?.getBoundingClientRect()?.top}px)`,\n }}\n >\n <div\n // onMouseLeave={handleProfileMouseLeave}\n // onMouseEnter={handleProfileMouseEnter}\n className=\"absolute max-w-[272px] bg-white p-4\"\n style={{ right: `calc(100% - ${profileRef?.current?.getBoundingClientRect()?.right}px)` }}\n >\n <Text html={profileAction?.benefits_title} className=\"text-sm font-bold leading-[1.4]\" />\n <div className=\"mt-3 flex flex-col gap-1\">\n {profileAction?.benefits?.map((item: any) => (\n <div key={item.id} className=\"flex items-center gap-[6px]\">\n <Picture\n source={item.benefitIcon?.url}\n className=\"size-4\"\n alt={item.benefit}\n width={16}\n height={16}\n />\n <Text html={item.benefit} className=\"text-sm font-bold leading-[1.4]\" />\n </div>\n ))}\n </div>\n <div className=\"mt-4 flex items-center gap-2\">\n <Button variant=\"secondary\" size=\"sm\" onClick={() => event?.join?.()}>\n <Text html={profileAction?.primaryButton || 'Join Now'} className=\"text-sm font-bold leading-[1.4]\" />\n </Button>\n <Button variant=\"primary\" size=\"sm\" onClick={() => event?.login?.()}>\n <Text html={profileAction?.secondaryButton || 'Log In'} className=\"text-sm font-bold leading-[1.4]\" />\n </Button>\n </div>\n </div>\n <div className=\"flex-1 bg-transparent\" onClick={() => setUserProfileOpen(false)} />\n </div>\n )}\n </Container>\n )\n})\n\n/**\n * \u4FA7\u8FB9\u680F\u4E0B\u62C9\n * @param categoriesItem \u5206\u7C7B\u9879\n */\nconst SidebarDropdown = ({\n sidebarCategoriesMetadata,\n seriesMetadata,\n}: {\n sidebarCategoriesMetadata: any\n seriesMetadata: any\n}) => {\n const [expandedSubcategory, setExpandedSubcategory] = useState<{ index: number; open: boolean }[]>([])\n const [activeSubSubcategoryIndex, setActiveSubSubcategoryIndex] = useState(0)\n const sidebarDropdownRef = useRef<HTMLDivElement>(null)\n\n useGSAP(() => {\n gsap.fromTo(\n sidebarDropdownRef?.current,\n {\n height: 0,\n },\n {\n height: 548,\n }\n )\n }, [])\n\n useEffect(() => {\n if (sidebarCategoriesMetadata?.subcategories?.length) {\n setExpandedSubcategory(\n sidebarCategoriesMetadata?.subcategories?.map((_: any, index: number) => ({ index, open: false }))\n )\n }\n }, [sidebarCategoriesMetadata])\n\n // \u901A\u8FC7categoriesMetadata\u7684subSubCategories\u7684label\u4E0Eseries\u7684label\u5339\u914D\n const matchSeriesMetadata = useMemo(() => {\n return (\n seriesMetadata?.find(\n (item: any) =>\n sidebarCategoriesMetadata?.subcategories?.[expandedSubcategory?.find(item => item.open)?.index || 0]\n ?.subSubCategories?.[activeSubSubcategoryIndex]?.label === item.label\n ) || {}\n )\n }, [sidebarCategoriesMetadata, expandedSubcategory, activeSubSubcategoryIndex, seriesMetadata])\n\n const handleSubcategoryOpen = (index: number) => {\n setExpandedSubcategory(prev =>\n prev.map(item => (item.index === index ? { ...item, open: !item.open } : { ...item, open: false }))\n )\n }\n\n const handleSubSubcategoryOpen = (index: number) => {\n setActiveSubSubcategoryIndex(index)\n }\n\n return (\n <Container childClassName=\"lg-desktop:gap-12 flex bg-white gap-8\">\n <div\n className=\"lg-desktop:basis-[356px] flex basis-[284px] flex-col gap-4 py-4\"\n style={{\n userSelect: 'none',\n }}\n >\n <div className=\"desktop:max-h-[416px] flex flex-col overflow-y-auto\">\n {sidebarCategoriesMetadata?.subcategories?.map((subItem: any, index: number) => (\n <div key={`subcategoryItem-${index}`}>\n <div\n className=\"flex cursor-pointer items-center justify-between\"\n onClick={() => handleSubcategoryOpen(index)}\n >\n <Text html={subItem.label} className=\"p-4 text-sm font-bold leading-[1.4]\" />\n <DownArrow\n className={cn({ ['rotate-180']: expandedSubcategory.find(item => item.index === index)?.open })}\n />\n </div>\n {expandedSubcategory.find(item => item.index === index)?.open && (\n <div className=\"flex flex-col\">\n {subItem.subSubCategories?.map((subSubItem: any, subSubindex: number) => (\n <Text\n html={subSubItem.label}\n onMouseEnter={() => handleSubSubcategoryOpen(subSubindex)}\n key={`subSubItem-${index}-${subSubindex}`}\n className={cn(\n 'cursor-pointer px-6 py-4 text-sm font-bold leading-[1.4] text-[#6D6D6F] hover:bg-[#F5F5F7]'\n )}\n />\n ))}\n </div>\n )}\n </div>\n ))}\n </div>\n <div className=\"flex\">\n <div className=\"flex flex-col gap-4\">\n <Button variant=\"primary\" size=\"lg\" className=\"text-base\">\n <a href={sidebarCategoriesMetadata?.primary?.url}>{sidebarCategoriesMetadata?.primary?.label}</a>\n </Button>\n <Button variant=\"link\" size=\"lg\" className=\"justify-start py-0 text-base\">\n <a href={sidebarCategoriesMetadata?.secondary?.url}>{sidebarCategoriesMetadata?.secondary?.label}</a>\n </Button>\n </div>\n </div>\n </div>\n {\n <div className=\"flex-1\">\n {Reflect.ownKeys(matchSeriesMetadata).length > 0 && (\n <div className=\"mb-4 flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n <Text html={matchSeriesMetadata?.label} className=\"text-2xl font-bold leading-[1.4]\" />\n <Button variant=\"link\" size=\"lg\" className=\"justify-start p-0 text-base\">\n <Link\n href={matchSeriesMetadata?.primary?.url}\n className=\"text-base font-bold leading-[1.2] no-underline\"\n >\n {matchSeriesMetadata?.primary?.label}\n </Link>\n </Button>\n </div>\n <Link href={matchSeriesMetadata?.guide?.url} className=\"text-base leading-[1.2] text-[#6D6D6F]\">\n {matchSeriesMetadata?.guide?.label}\n </Link>\n </div>\n )}\n <div className=\"flex flex-col gap-4 overflow-y-auto\" ref={sidebarDropdownRef}>\n {matchSeriesMetadata?.series?.map((seriesItem: any, seriesIndex: number) => (\n <div key={`seriesItem-${seriesIndex}`}>\n <Text html={seriesItem.label} className=\"text-sm font-bold leading-[1.4] text-[#6D6D6F]\" />\n <div className=\"mt-2 grid grid-cols-3 gap-4\">\n {seriesItem.products?.map((product: any, index: number) => (\n <SeriesProductItem key={`seriesProductItem-${index}`} product={product} />\n ))}\n </div>\n </div>\n ))}\n </div>\n </div>\n }\n </Container>\n )\n}\n\n/**\n * \u591A\u5217\u4E0B\u62C9\n * @param categoriesItem \u5206\u7C7B\u9879\n */\nconst MulticolDropdown = ({ multicolMetadata }: { multicolMetadata: any }) => {\n const multicolDropdownRef = useRef<HTMLDivElement>(null)\n\n useGSAP(() => {\n gsap.fromTo(\n multicolDropdownRef?.current,\n {\n height: 0,\n },\n {\n height: 'auto',\n }\n )\n }, [])\n\n return (\n <div ref={multicolDropdownRef}>\n <Container childClassName=\"bg-white\" className=\"h-full\">\n <div className=\"flex gap-4 py-4\">\n {multicolMetadata?.map((item: any, index: number) => (\n <div key={`multicolItem-${item?.label}-${index}`} className=\"w-1/4\">\n <MulticolItem item={item} />\n </div>\n ))}\n </div>\n </Container>\n </div>\n )\n}\n\n/**\n * supports\u4E0B\u62C9\n * @param categoriesItem \u5206\u7C7B\u9879\n * @param currentNavItemRef \u5F53\u524D\u5BFC\u822A\u9879\n */\nconst SupportsDropdown = ({\n supportsMetadata,\n currentNavItemRef,\n}: {\n supportsMetadata: any\n currentNavItemRef: HTMLDivElement\n}) => {\n const supportsDropdownRef = useRef<HTMLDivElement>(null)\n const [navItemReact, setNavItemReact] = useState<DOMRect | null>(null)\n\n useGSAP(() => {\n gsap.fromTo(\n supportsDropdownRef?.current,\n {\n height: 0,\n },\n {\n height: 'auto',\n }\n )\n }, [])\n\n const debouncedHandleResize = debounce(() => {\n if (currentNavItemRef) {\n const rect = currentNavItemRef.getBoundingClientRect()\n setNavItemReact(rect)\n }\n }, 500)\n\n useEffect(() => {\n debouncedHandleResize()\n window.addEventListener('resize', debouncedHandleResize)\n return () => {\n window.removeEventListener('resize', debouncedHandleResize)\n }\n }, [debouncedHandleResize])\n\n useEffect(() => {\n if (currentNavItemRef) {\n const rect = currentNavItemRef.getBoundingClientRect()\n setNavItemReact(rect)\n }\n }, [currentNavItemRef])\n\n return (\n <div\n className=\"absolute top-0 h-full bg-white p-4\"\n ref={supportsDropdownRef}\n style={{ right: `calc(100% - ${navItemReact?.right}px)` }}\n >\n <div>\n {supportsMetadata?.map((supportItem: any) => (\n <div key={supportItem.id} className=\"py-2\">\n <Link href={supportItem.url} className=\"text-sm font-bold leading-[1.4] no-underline\">\n {supportItem.label}\n </Link>\n </div>\n ))}\n </div>\n </div>\n )\n}\n\nconst SeriesProductItem = ({ product }: { product: any }) => {\n const { buildProps } = useNavContext()\n const productData = buildProps?.products?.find((item: Product) => item.handle === product.handle)\n const variant = productData?.variants?.find((item: ProductVariant) => item.sku === product.sku)\n\n const listingLink = useMemo(() => {\n return `/products/${productData?.handle}?variant=${atobID(variant?.id as string)}`\n }, [productData?.handle, variant?.id])\n\n return (\n <div className=\"flex shrink-0 items-center gap-4 bg-[#F5F5F7] px-4 py-3 [&_img]:hover:scale-105\">\n <div className=\"shrink-0 basis-[96px]\">\n <Picture source={`${variant?.image?.url || product?.images?.[0]?.url}}`} width={96} height={96} />\n </div>\n <div className=\"relative\">\n {product?.badge && (\n <Text\n as=\"p\"\n html={product?.badge}\n className=\"text-brand-0 mb-1 inline-block h-[24px] rounded-full border-[1.6px] border-[#00BEFA] px-[6px] text-sm font-bold !leading-[24px]\"\n />\n )}\n <Link href={listingLink} className=\"no-underline\">\n <Text\n className=\"lg-desktop:h-[44px] lg-desktop:text-base line-clamp-2 h-[40px] text-sm font-bold leading-[1.4]\"\n html={productData?.title || product?.name}\n />\n </Link>\n {product?.desc && (\n <Text\n as=\"p\"\n html={product?.desc}\n className=\"lg-desktop:text-sm mt-1 text-xs font-bold leading-[1.4] text-[#6D6D6F]\"\n />\n )}\n </div>\n </div>\n )\n}\n\n/**\n * \u591A\u5217\u4E0B\u62C9\u9879\n * @param item \u591A\u5217\u4E0B\u62C9\u9879\n */\nconst MulticolItem = ({ item }: { item: any }) => {\n return (\n <>\n {item?.columns && (\n <>\n <Text html={item.label} as=\"div\" className=\"my-2 text-sm font-bold leading-[1.4] text-[#6D6D6F]\" />\n <div className=\"mt-2 flex flex-col\">\n {item.columns?.map((columnItem: any) => (\n <div key={columnItem.label} className=\"py-2\">\n <Link href={columnItem.url} className=\"text-sm font-bold leading-[1.4] no-underline\">\n {columnItem.label}\n </Link>\n </div>\n ))}\n </div>\n </>\n )}\n {item?.imageUrl && (\n <div className=\"laptop:h-[280px] laptop:w-[404px] desktop:w-full desktop:h-auto relative h-[240px] w-[358px]\">\n <Picture source={item.imageUrl} width={404} height={280} />\n <Link href={item.url} className=\"absolute inset-0 z-10 flex flex-col justify-end p-4 no-underline\">\n <Text html={item.title} className=\"desktop:text-2xl text-xl font-bold leading-[1.2] text-white\" />\n <Text html={item.subtitle} className=\"text-sm font-bold leading-[1.4] text-white\" />\n </Link>\n </div>\n )}\n </>\n )\n}\n\n/**\n * \u79FB\u52A8\u7AEF\u5BFC\u822A\n * @param menuHeight \u83DC\u5355\u9AD8\u5EA6\n * @param data \u5BFC\u822A\u6570\u636E\n */\nconst MobileNavigation = forwardRef<HTMLDivElement, MobileNavigationProps>(({ data }, ref) => {\n const groupCategories = useMemo(() => {\n return WithGroupCategory(data?.categories)\n }, [data])\n\n const { currentMenu, setCurrentMenu, thirdNavTitle } = useNavContext()\n const [mobileMenuOpen, setMobileMenuOpen] = useState(false)\n const [menuInnerHeight, setMenuInnerHeight] = useState(0)\n const [categoriesItem, setCategoriesItem] = useState<any>(null)\n\n const mobileMenuRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n if (mobileMenuRef?.current && mobileMenuOpen) {\n const rect = mobileMenuRef?.current?.getBoundingClientRect()\n setMenuInnerHeight(window?.innerHeight - (rect?.bottom || 0))\n }\n }, [mobileMenuOpen])\n\n useGSAP(() => {\n gsap.fromTo(\n mobileMenuRef.current,\n {\n height: 0,\n },\n {\n height: menuInnerHeight,\n duration: 0.5,\n }\n )\n }, [menuInnerHeight])\n\n useEffect(() => {\n document.documentElement.style.overflow = mobileMenuOpen ? 'hidden' : 'auto'\n }, [mobileMenuOpen])\n\n const currentBlockTypeCategories = useMemo(() => {\n return categoriesItem?.components?.[0]?.blockType\n }, [categoriesItem])\n\n const MobileSidebarMenuComp = WithSidebar(MobileSidebarMenu, categoriesItem)\n const MobileSupportMenuComp = WithSupports(MobileSupportMenu, {\n categoriesItem,\n })\n const MobileMulticolMenuComp = WithMulticol(MobileMulticolMenu, categoriesItem)\n\n const MobileCategoriesMenuComp = useMemo(() => {\n switch (currentBlockTypeCategories) {\n case HeaderNavigationBlockType.Sidebar:\n return <MobileSidebarMenuComp />\n case HeaderNavigationBlockType.Supports:\n return <MobileSupportMenuComp />\n case HeaderNavigationBlockType.Multicol:\n return <MobileMulticolMenuComp />\n default:\n return null\n }\n }, [currentBlockTypeCategories, MobileSidebarMenuComp, MobileSupportMenuComp, MobileMulticolMenuComp])\n\n const handleSecondaryMenuClose = useCallback(() => {\n setMobileMenuOpen(false)\n setMenuInnerHeight(0)\n setCurrentMenu && setCurrentMenu(HeaderNavigationMenu.Primary)\n }, [setMobileMenuOpen, setMenuInnerHeight, setCurrentMenu])\n\n const menuActions = useMemo(() => {\n return data?.headerBar?.actions?.filter(\n (item: any) => item?.mobileShow && item?.blockType !== HeaderNavigationActionBlockType.Profile // \u79FB\u52A8\u7AEF\u4E0D\u663E\u793Aprofile\u6309\u94AE\n )\n }, [data])\n\n const profileAction = useMemo(() => {\n return (\n data?.headerBar?.actions?.find(\n (item: any) => item?.mobileShow && item?.blockType === HeaderNavigationActionBlockType.Profile\n ) || {}\n )\n }, [data])\n\n const MobileCategoriesHeaderComp = useMemo(() => {\n switch (currentMenu) {\n case HeaderNavigationMenu.Primary:\n return (\n <PrimaryHeader\n actions={menuActions}\n menuOpen={mobileMenuOpen}\n onMenuOpenClose={() => {\n setMobileMenuOpen(false)\n setMenuInnerHeight(0)\n }}\n onMenuOpenClick={() => setMobileMenuOpen(true)}\n />\n )\n case HeaderNavigationMenu.Secondary:\n return (\n <SecondaryHeader\n title={categoriesItem?.text}\n onMenuOpenClose={handleSecondaryMenuClose}\n onMenuBackClick={() => setCurrentMenu?.(HeaderNavigationMenu.Primary)}\n />\n )\n case HeaderNavigationMenu.Third:\n return (\n <SecondaryHeader\n title={thirdNavTitle}\n onMenuOpenClose={handleSecondaryMenuClose}\n onMenuBackClick={() => setCurrentMenu?.(HeaderNavigationMenu.Secondary)}\n />\n )\n default:\n return null\n }\n }, [\n mobileMenuOpen,\n currentMenu,\n setCurrentMenu,\n categoriesItem,\n menuActions,\n thirdNavTitle,\n handleSecondaryMenuClose,\n ])\n\n const handlePrimaryMenuClick = useCallback(\n (groupIndex: number, index: number) => {\n const categoriesItem = Array.isArray(groupCategories)\n ? Array.isArray(groupCategories[groupIndex])\n ? groupCategories[groupIndex][index]\n : {}\n : {}\n setCategoriesItem(categoriesItem)\n setCurrentMenu?.(HeaderNavigationMenu.Secondary)\n },\n [groupCategories, setCurrentMenu]\n )\n\n return (\n <Container childClassName=\"bg-white\" className=\"relative h-[52px]\">\n {/* \u79FB\u52A8\u7AEF\u5206\u7C7B\u83DC\u5355 */}\n {MobileCategoriesHeaderComp}\n {mobileMenuOpen && (\n <div\n ref={mobileMenuRef}\n className=\"absolute left-0 top-[calc(100%+1px)] z-[999] w-full overflow-y-auto bg-white\"\n style={{ height: menuInnerHeight }}\n >\n {currentMenu === HeaderNavigationMenu.Primary ? (\n <MobilePrimaryMenu\n categories={groupCategories}\n onPrimaryMenuClick={handlePrimaryMenuClick}\n profileAction={profileAction}\n />\n ) : (\n MobileCategoriesMenuComp\n )}\n </div>\n )}\n </Container>\n )\n})\n\n/**\n * \u79FB\u52A8\u7AEF\u4E00\u7EA7\u83DC\u5355\n * @param categories \u5206\u7C7B\n * @param onPrimaryMenuClick \u4E00\u7EA7\u83DC\u5355\u70B9\u51FB\n */\nconst MobilePrimaryMenu = ({\n categories,\n onPrimaryMenuClick,\n profileAction,\n}: {\n categories: any\n onPrimaryMenuClick: (groupIndex: number, index: number) => void\n profileAction: any\n}) => {\n return (\n <div className=\"flex h-full flex-col justify-between\">\n <div className=\"tablet:px-8 laptop:px-16 p-4\">\n {categories?.map((groupItem: any, groupIndex: number) => (\n <div key={`groupCategory-${groupIndex}`} className=\"\">\n {groupItem?.map((item: any, index: number) => (\n <MenuItem key={item.id} label={item.text} onClick={() => onPrimaryMenuClick(groupIndex, index)} />\n ))}\n <div\n className={cn('my-2 h-px w-full bg-[#E5E5E7]', { ['hidden']: groupIndex === categories.length - 1 })}\n />\n </div>\n ))}\n </div>\n <ProfileComp profileAction={profileAction} />\n </div>\n )\n}\n\n/**\n * \u79FB\u52A8\u7AEF\u4FA7\u8FB9\u680F\u4E0B\u62C9\n * @param sidebarCategoriesMetadata \u4FA7\u8FB9\u680F\u5206\u7C7B\u5143\u6570\u636E\n * @param seriesMetadata \u4FA7\u8FB9\u680F\u7CFB\u5217\u5143\u6570\u636E\n */\nconst MobileSidebarMenu = ({\n sidebarCategoriesMetadata,\n seriesMetadata,\n}: {\n sidebarCategoriesMetadata: any\n seriesMetadata: any\n}) => {\n const { currentMenu, setCurrentMenu, setThirdNavTitle, matchSeriesMetadata, setMatchSeriesMetadata } = useNavContext()\n const [expandedSubcategory, setExpandedSubcategory] = useState<{ index: number; open: boolean }[]>([])\n\n useEffect(() => {\n if (sidebarCategoriesMetadata?.subcategories?.length) {\n setExpandedSubcategory(\n sidebarCategoriesMetadata?.subcategories?.map((_: any, index: number) => ({ index, open: false }))\n )\n }\n }, [sidebarCategoriesMetadata])\n\n const MobileSidebarMenuComp = useMemo(() => {\n switch (currentMenu) {\n case HeaderNavigationMenu.Secondary:\n return (\n // \u4E8C\u7EA7\u83DC\u5355\n <div className=\"tablet:px-8 laptop:px-16 flex h-full flex-col justify-between p-4\">\n <div>\n {sidebarCategoriesMetadata?.subcategories?.map((item: any, index: number) => (\n <div key={`${item.label}-${index}`}>\n <MenuItem\n label={item?.label}\n active={expandedSubcategory.find(item => item.index === index)?.open}\n onClick={() => {\n setExpandedSubcategory(prev =>\n prev.map(item =>\n item.index === index ? { ...item, open: !item.open } : { ...item, open: false }\n )\n )\n }}\n />\n {expandedSubcategory.find(item => item.index === index)?.open &&\n item.subSubCategories?.map((subItem: any, subIndex: number) => (\n <div\n key={`${index}-${subIndex}`}\n className=\"px-2 py-4\"\n onClick={() => {\n setCurrentMenu && setCurrentMenu(HeaderNavigationMenu.Third)\n // \u901A\u8FC7categoriesMetadata\u7684subSubCategories\u7684label\u4E0Eseries\u7684label\u5339\u914D\n setMatchSeriesMetadata?.(\n seriesMetadata?.find(\n (item: any) =>\n sidebarCategoriesMetadata?.subcategories?.[index]?.subSubCategories?.[subIndex]\n ?.label === item.label\n ) || {}\n )\n setThirdNavTitle && setThirdNavTitle(subItem.label)\n }}\n >\n <Text html={subItem.label} className=\"text-sm font-bold leading-[1.4]\" />\n </div>\n ))}\n </div>\n ))}\n <Link href={matchSeriesMetadata?.guide?.url}>\n <div className=\"mt-4\">\n <Text\n html={matchSeriesMetadata?.guide?.label}\n className=\"text-sm font-bold leading-[1.2] text-[#6D6D6F]\"\n />\n </div>\n </Link>\n </div>\n <div className=\"tablet:items-start flex flex-col items-center gap-4\">\n <Button variant=\"primary\" size=\"lg\" className=\"tablet:w-auto w-full text-base\">\n <a href={sidebarCategoriesMetadata?.primary?.url}>{sidebarCategoriesMetadata?.primary?.label}</a>\n </Button>\n <Button variant=\"link\" size=\"lg\" className=\"tablet:w-auto tablet:px-0 w-full py-0 text-base\">\n <a href={sidebarCategoriesMetadata?.secondary?.url}>{sidebarCategoriesMetadata?.secondary?.label}</a>\n </Button>\n </div>\n </div>\n )\n case HeaderNavigationMenu.Third:\n return (\n // \u4E09\u7EA7\u83DC\u5355\n <div className=\"tablet:px-8 laptop:px-16 desktop:px-0 p-4\">\n {Reflect.ownKeys(matchSeriesMetadata).length > 0 && (\n <div className=\"tablet:pt-0 flex items-center gap-3 py-4\">\n <Text html={matchSeriesMetadata?.label} className=\"text-xl font-bold leading-[1.4]\" />\n <Button variant=\"link\" size=\"lg\" className=\"p-0\">\n <Link href={matchSeriesMetadata?.primary?.url} className=\"text-base leading-[1.2]\">\n {matchSeriesMetadata?.primary?.label}\n </Link>\n </Button>\n </div>\n )}\n <div className=\"flex flex-col gap-6\">\n {matchSeriesMetadata?.series?.map((seriesItem: any, pIndex: number) => (\n <div key={`seriesItem-${pIndex}`}>\n <Text html={seriesItem.label} className=\"text-sm font-bold leading-[1.4] text-[#3D3D3F]\" />\n <div className=\"laptop:grid-cols-3 laptop:gap-4 tablet:grid tablet:grid-cols-2 tablet:gap-3 mt-2 flex flex-col gap-2\">\n {seriesItem.products?.map((product: any, index: number) => (\n <SeriesProductItem key={`seriesProductItem-${pIndex}-${index}`} product={product} />\n ))}\n </div>\n </div>\n ))}\n </div>\n </div>\n )\n default:\n return null\n }\n }, [\n currentMenu,\n matchSeriesMetadata,\n sidebarCategoriesMetadata,\n setThirdNavTitle,\n setCurrentMenu,\n setMatchSeriesMetadata,\n seriesMetadata,\n expandedSubcategory,\n ])\n\n return MobileSidebarMenuComp\n}\n\n/**\n * \u79FB\u52A8\u7AEFsupport\u83DC\u5355\n * @param supportsMetadata support\u83DC\u5355\u5143\u6570\u636E\n */\nconst MobileSupportMenu = ({ supportsMetadata }: { supportsMetadata: any }) => {\n return (\n <div className=\"tablet:px-8 laptop:px-16 p-4\">\n {supportsMetadata?.map((supportItem: any) => (\n <MenuItem key={supportItem.id} href={supportItem.url} label={supportItem.label} onClick={() => {}} />\n ))}\n </div>\n )\n}\n\n/**\n * \u79FB\u52A8\u7AEFmulticol\u83DC\u5355\n * @param multicolMetadata multicol\u83DC\u5355\u5143\u6570\u636E\n */\nconst MobileMulticolMenu = ({ multicolMetadata }: { multicolMetadata: any }) => {\n return (\n <div className=\"tablet:px-8 tablet:p-4 laptop:px-16 flex flex-col gap-4 px-4\">\n {multicolMetadata?.map((item: any, index: number) => (\n <div key={`multicolItem-${item?.label}-${index}`}>\n <MulticolItem item={item} />\n </div>\n ))}\n </div>\n )\n}\n\nconst ProfileComp = ({ profileAction }: { profileAction: any }) => {\n const [profileOpen, setProfileOpen] = useState(false)\n const { profile, event } = useNavContext()\n return (\n <div className=\"tablet:px-8 laptop:px-16 bg-[#F5F5F7] px-4 py-6\">\n <div className=\"flex items-center justify-between\" onClick={() => setProfileOpen(!profileOpen)}>\n <div className=\"flex items-center gap-[14px]\">\n <div className=\"flex size-[40px] items-center justify-center rounded-full bg-white\">\n <User />\n </div>\n <Text html={profile?.nick_name || profileAction?.welcome} className=\"text-base font-bold leading-[1.4]\" />\n </div>\n <RightArrow className={cn({ 'rotate-90': profileOpen })} />\n </div>\n {profile?.email && (\n <div className=\"mt-4\">\n {profileAction?.profiles?.map((item: any) => <MenuItem key={item.id} label={item?.title} href={item?.url} />)}\n </div>\n )}\n {profileOpen && !profile?.email && (\n <div className=\"mt-4\">\n <Text html={profileAction?.benefits_title} className=\"text-sm font-bold leading-[1.4]\" />\n <div className=\"mt-3 flex flex-col gap-1\">\n {profileAction?.benefits?.map((item: any) => (\n <div key={item.id} className=\"flex items-center gap-[6px]\">\n <Picture source={item.benefitIcon?.url} className=\"size-4\" alt={item.benefit} width={16} height={16} />\n <Text html={item.benefit} className=\"text-sm font-bold leading-[1.4]\" />\n </div>\n ))}\n </div>\n </div>\n )}\n <div className=\"tablet:mt-4 mt-6 flex items-center gap-3\">\n <Button className=\"tablet:flex-none flex-1\" variant=\"secondary\" size=\"sm\" onClick={() => event?.join?.()}>\n <Text html={profileAction?.primaryButton || 'Join Now'} className=\"text-sm font-bold leading-[1.4]\" />\n </Button>\n <Button className=\"tablet:flex-none flex-1\" variant=\"primary\" size=\"sm\" onClick={() => event?.login?.()}>\n <Text html={profileAction?.secondaryButton || 'Log In'} className=\"text-sm font-bold leading-[1.4]\" />\n </Button>\n </div>\n </div>\n )\n}\n\nconst PrimaryHeader = ({ menuOpen, onMenuOpenClose, onMenuOpenClick, actions }: MobilePrimaryNavigationData) => {\n return (\n <div className=\"flex h-full items-center justify-between gap-4\">\n <Logo />\n <div className=\"desktop:gap-6 flex items-center gap-4\">\n <Actions actions={actions} />\n {menuOpen ? <Close onClick={() => onMenuOpenClose()} /> : <Menu onClick={() => onMenuOpenClick()} />}\n </div>\n </div>\n )\n}\n\nconst Logo = () => {\n const { payloadData } = useNavContext()\n return (\n <div className=\"desktop:gap-2 flex items-center gap-[6px]\">\n <div dangerouslySetInnerHTML={{ __html: payloadData?.headerBar?.logo }} />\n <LogoLine />\n <Text html={payloadData?.headerBar?.slogan} className=\"tablet:text-sm text-xs font-bold leading-[1.4]\" />\n </div>\n )\n}\n\nconst Actions = forwardRef<HTMLDivElement, { actions: any }>(({ actions }, ref) => {\n const { event } = useNavContext()\n\n const handleActionClick = useCallback(\n (action: any) => {\n switch (action?.blockType) {\n case HeaderNavigationActionBlockType.Search:\n event?.search?.()\n break\n case HeaderNavigationActionBlockType.Cart:\n event?.cart?.()\n break\n case HeaderNavigationActionBlockType.Profile:\n event?.profile?.()\n break\n case HeaderNavigationActionBlockType.Livestream:\n event?.livestream?.()\n break\n default:\n return () => {}\n }\n },\n [event]\n )\n\n return (\n <div className=\"desktop:gap-6 flex items-center gap-4\">\n {Array.isArray(actions) &&\n actions?.map((action: any) => (\n <div\n key={action.id}\n ref={action.blockType === HeaderNavigationActionBlockType.Profile ? ref : null}\n onClick={() => handleActionClick(action)}\n >\n <Text html={action.icon} className=\"hover:text-brand-0 cursor-pointer\" />\n </div>\n ))}\n </div>\n )\n})\n\nconst SecondaryHeader = ({ title, onMenuOpenClose, onMenuBackClick }: MobileSecondaryNavigationData) => {\n return (\n <div className=\"flex h-full items-center gap-3\">\n <LeftArrow onClick={() => onMenuBackClick()} />\n <Text html={title} className=\"flex-1 text-center text-base font-bold leading-[1.4]\" />\n <Close onClick={() => onMenuOpenClose()} />\n </div>\n )\n}\n\nconst MenuItem = ({\n label,\n href,\n onClick,\n active,\n}: {\n label: string\n href?: string\n onClick?: () => void\n active?: boolean\n}) => {\n return (\n <div className=\"flex cursor-pointer items-center justify-between py-4\" onClick={onClick}>\n <Link href={href} asChild={!href} className=\"flex w-full items-center justify-between no-underline\">\n <Text html={label} className=\"text-sm font-bold leading-[1.4]\" />\n <RightArrow className={cn({ 'rotate-90': active })} />\n </Link>\n </div>\n )\n}\n\nexport default withLayout(HeaderNavigation)\n"],
5
- "mappings": "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",
6
- "names": ["Fragment", "jsx", "jsxs", "forwardRef", "useCallback", "useEffect", "useImperativeHandle", "useMemo", "useRef", "useState", "Picture", "Text", "Button", "Container", "Link", "withLayout", "cn", "atobID", "NavProvider", "useNavContext", "HeaderNavigationMenu", "HeaderNavigationBlockType", "HeaderNavigationActionBlockType", "useMediaQuery", "debounce", "throttle", "useGSAP", "gsap", "WithSidebar", "WithSupports", "WithMulticol", "WithGroupCategory", "Menu", "Close", "User", "RightArrow", "LeftArrow", "DownArrow", "LogoLine", "HeaderNavigation", "props", "ref", "headerNavigation", "buildProps", "event", "profile", "theme", "isMobile", "setIsMobile", "headerHidden", "setHeaderHidden", "changeHeaderBackground", "setChangeHeaderBackground", "headerRef", "mediaQuery", "upwardDistance", "lastScrollY", "showDownNav", "latest", "delta", "scrollAnimate", "scrollTop", "DesktopNavigation", "MobileNavigation", "data", "groupCategories", "categoriesItem", "setCategoriesItem", "navStatusArray", "setNavStatusArray", "profileRef", "userProfileOpen", "setUserProfileOpen", "navItemRefs", "categories", "groupItem", "groupIndex", "_", "index", "currentNavItem", "item", "handleNavItemClick", "e", "prev", "handleNavMenuClose", "currentBlockTypeCategories", "SidebarDropdownComp", "SidebarDropdown", "SupportsDropdownComp", "SupportsDropdown", "MulticolDropdownComp", "MulticolDropdown", "DropdownComp", "actions", "profileAction", "handleProfileClick", "profileRefElement", "Logo", "Actions", "el", "sidebarCategoriesMetadata", "seriesMetadata", "expandedSubcategory", "setExpandedSubcategory", "activeSubSubcategoryIndex", "setActiveSubSubcategoryIndex", "sidebarDropdownRef", "matchSeriesMetadata", "handleSubcategoryOpen", "handleSubSubcategoryOpen", "subItem", "subSubItem", "subSubindex", "seriesItem", "seriesIndex", "product", "SeriesProductItem", "multicolMetadata", "multicolDropdownRef", "MulticolItem", "supportsMetadata", "currentNavItemRef", "supportsDropdownRef", "navItemReact", "setNavItemReact", "debouncedHandleResize", "rect", "supportItem", "productData", "variant", "listingLink", "columnItem", "currentMenu", "setCurrentMenu", "thirdNavTitle", "mobileMenuOpen", "setMobileMenuOpen", "menuInnerHeight", "setMenuInnerHeight", "mobileMenuRef", "MobileSidebarMenuComp", "MobileSidebarMenu", "MobileSupportMenuComp", "MobileSupportMenu", "MobileMulticolMenuComp", "MobileMulticolMenu", "MobileCategoriesMenuComp", "handleSecondaryMenuClose", "menuActions", "MobileCategoriesHeaderComp", "PrimaryHeader", "SecondaryHeader", "handlePrimaryMenuClick", "MobilePrimaryMenu", "onPrimaryMenuClick", "MenuItem", "ProfileComp", "setThirdNavTitle", "setMatchSeriesMetadata", "subIndex", "pIndex", "profileOpen", "setProfileOpen", "menuOpen", "onMenuOpenClose", "onMenuOpenClick", "payloadData", "handleActionClick", "action", "title", "onMenuBackClick", "label", "href", "onClick", "active", "HeaderNavigation_default"]
4
+ "sourcesContent": ["'use client'\nimport React, {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react'\n\nimport { Picture, Text, Button, Container, Link, Heading } from '../../components/index.js'\n\nimport { withLayout } from '../../shared/Styles.js'\n\nimport { cn, atobID } from '../../helpers/utils.js'\n\nimport type {\n MobilePrimaryNavigationData,\n MobileSecondaryNavigationData,\n MobileNavigationProps,\n DesktopNavigationProps,\n HeaderNavigationProps,\n} from './types.js'\nimport NavProvider, { useNavContext } from './NavProvider.js'\n\nimport { HeaderNavigationMenu, HeaderNavigationBlockType, HeaderNavigationActionBlockType } from './types.js'\n\nimport { useMediaQuery } from 'react-responsive'\nimport { debounce, throttle } from 'es-toolkit'\nimport jump from 'jump.js'\n\nimport { useGSAP } from '@gsap/react'\nimport { gsap } from 'gsap'\nimport type { Product, ProductVariant } from '../../cpn-components/CpnProductCard/types.js'\n\nimport { WithSidebar, WithSupports, WithMulticol, WithGroupCategory } from './withCategory.js'\n\nimport { Menu, Close, User, RightArrow, LeftArrow, DownArrow, Polygon } from './icons/index.js'\n\nimport NavigationSearch from '../NavigationSearch/index.js'\n\nconst HeaderNavigation = forwardRef<HTMLDivElement, HeaderNavigationProps>((props, ref) => {\n const {\n data: { headerNavigation } = {},\n buildProps,\n event,\n profile,\n theme = 'light',\n isTop = false,\n searchResult,\n onSearch,\n isSearching,\n keywords,\n onPrimaryNavClick,\n onSeriesProductClick,\n onSidebarNavClick,\n } = props\n\n const searchRef = useRef<HTMLDivElement>(null)\n const [searchOpen, setSearchOpen] = useState(false)\n const [headerHidden, setHeaderHidden] = useState(false)\n const [changeHeaderBackground, setChangeHeaderBackground] = useState(false)\n const [isMobile, setIsMobile] = useState(false)\n\n const headerRef = useRef<HTMLDivElement>(null)\n\n const resizeWindow = () => {\n const offsetWidth = document?.querySelector('body')?.offsetWidth || 0\n setIsMobile(offsetWidth <= 1440)\n }\n\n useEffect(() => {\n resizeWindow()\n window.addEventListener('resize', resizeWindow)\n return () => {\n window.removeEventListener('resize', resizeWindow)\n }\n }, [])\n\n useImperativeHandle(ref, () => headerRef.current as HTMLDivElement)\n\n useEffect(() => {\n if (headerRef.current && isTop) {\n jump(headerRef.current, { duration: 0, offset: headerRef.current?.getBoundingClientRect()?.bottom || 0 })\n }\n }, [isTop])\n\n // useEffect(() => {\n // let upwardDistance = 0\n // let lastScrollY = 0\n // const showDownNav = throttle(latest => {\n // const delta = lastScrollY - latest\n // if (delta > 0) {\n // upwardDistance += delta\n // if (upwardDistance >= 300) {\n // setHeaderHidden(false)\n // upwardDistance = 0\n // }\n // } else {\n // setHeaderHidden(latest > 300)\n // }\n // setChangeHeaderBackground(latest > 30)\n // lastScrollY = latest\n // }, 200)\n\n // const scrollAnimate = () => {\n // let scrollTop = 0\n // if (document?.documentElement && document?.documentElement?.scrollTop) {\n // scrollTop = document?.documentElement.scrollTop\n // } else if (document?.body) {\n // scrollTop = document?.body.scrollTop\n // }\n // showDownNav(scrollTop)\n // }\n\n // window.addEventListener('scroll', scrollAnimate)\n\n // return () => window.removeEventListener('scroll', scrollAnimate)\n // }, [])\n\n useEffect(() => {\n if (event) {\n event.search = () => setSearchOpen(true)\n }\n }, [event])\n\n useGSAP(() => {\n if (searchRef?.current && searchOpen) {\n gsap.fromTo(\n searchRef.current,\n {\n height: 0,\n },\n {\n height: 'auto',\n duration: 0.3,\n }\n )\n }\n }, [searchOpen])\n\n useEffect(() => {\n document.documentElement.style.overflow = searchOpen ? 'hidden' : 'auto'\n }, [searchOpen])\n\n const searchPage = useMemo(() => {\n return (\n headerNavigation?.headerBar?.actions?.find(\n (item: any) => item?.blockType === HeaderNavigationActionBlockType.Search\n )?.searchBar?.[0] || {}\n )\n }, [headerNavigation])\n\n return (\n <NavProvider\n buildProps={buildProps}\n profile={profile}\n isMobile={isMobile}\n event={event}\n payloadData={headerNavigation}\n onSidebarNavClick={onSidebarNavClick}\n onSeriesProductClick={onSeriesProductClick}\n >\n <header\n data-ui-component-id=\"HeaderNavigation\"\n // className={cn('sticky top-0 z-[100] transition-transform duration-500 ease-in-out', {\n // ['translate-y-[-100%]']: headerHidden,\n // })}\n className=\"relative z-[100]\"\n ref={headerRef}\n >\n <div\n className={cn(\n 'hover:text-black hover:bg-white',\n theme === 'light' ? 'text-black' : 'text-white',\n // {\n // ['!bg-white transition-all duration-500 ease-in-out']: changeHeaderBackground,\n // },\n {\n // ['hover:!text-black']: theme === 'dark',\n // ['!text-black']: changeHeaderBackground,\n }\n )}\n onClick={() => setChangeHeaderBackground(true)}\n >\n <DesktopNavigation\n data={headerNavigation}\n className=\"hidden desktop:block\"\n theme={theme}\n onNavItemClick={() => setChangeHeaderBackground(true)}\n onPrimaryNavClick={onPrimaryNavClick}\n />\n <MobileNavigation\n data={headerNavigation}\n className=\"block desktop:hidden\"\n onPrimaryNavClick={onPrimaryNavClick}\n />\n {searchOpen && (\n <div\n className=\"absolute z-[60] top-0 left-0 w-full bg-black/70 flex flex-col\"\n style={{ height: `calc(100dvh - ${headerRef?.current?.getBoundingClientRect()?.top}px)` }}\n >\n <div ref={searchRef} className={cn('overflow-y-auto', {})}>\n <NavigationSearch\n data={searchPage}\n keywords={keywords}\n isSearching={isSearching}\n searchResult={searchResult}\n onSearch={(value: string) => {\n onSearch?.(value)\n }}\n onClose={() => {\n onSearch?.()\n setSearchOpen(false)\n }}\n />\n </div>\n <div className=\"flex-1 bg-transparent\" onClick={() => setSearchOpen(false)} />\n </div>\n )}\n </div>\n </header>\n </NavProvider>\n )\n})\n\nconst DesktopNavigation = forwardRef<HTMLDivElement, DesktopNavigationProps>((props, ref) => {\n const { data, onNavItemClick, className, theme, onPrimaryNavClick } = props\n const { event, profile } = useNavContext()\n const [downdownHover, setDowndownHover] = useState(false)\n\n const groupCategories = useMemo(() => {\n return WithGroupCategory(data?.categories?.filter((item: any) => item?.pcShow)) as any[][]\n }, [data])\n\n const [categoriesItem, setCategoriesItem] = useState<any>(null)\n const [navStatusArray, setNavStatusArray] = useState<{ index: number; groupIndex: number; open: boolean }[][]>([])\n const profileRef = useRef<HTMLDivElement>(null)\n const [userProfileOpen, setUserProfileOpen] = useState(false)\n const headerRef = useRef<HTMLDivElement>(null)\n const dropdownRef = useRef<HTMLDivElement>(null)\n const navItemRefs = useRef<HTMLDivElement[][]>(\n groupCategories.map((categories: any) => Array(categories?.length || 0).fill(null))\n )\n\n useEffect(() => {\n if (groupCategories?.length) {\n setNavStatusArray(\n groupCategories?.map((groupItem: any, groupIndex: number) => {\n return groupItem?.map((_: any, index: number) => ({ groupIndex, index, open: false }))\n })\n )\n }\n }, [groupCategories])\n\n const currentNavItem = useMemo(() => {\n let currentNavItem: { index: number; groupIndex: number; open: boolean } | null = null\n for (const groupItem of navStatusArray) {\n for (const item of groupItem) {\n if (item.open) {\n currentNavItem = item\n break\n }\n }\n if (currentNavItem) break\n }\n return currentNavItem\n }, [navStatusArray])\n\n useEffect(() => {\n document.documentElement.style.overflow = currentNavItem?.open || userProfileOpen ? 'hidden' : 'auto'\n }, [currentNavItem?.open, userProfileOpen])\n\n const handleNavItemClick = (e: any, groupIndex: number, index: number) => {\n setUserProfileOpen(false)\n if (categoriesItem?.components?.[0]?.blockType === HeaderNavigationBlockType.Links) {\n // link\u6A21\u5757\u7279\u6B8A\u5904\u7406\n categoriesItem?.components?.[0]?.url && window.open(categoriesItem?.components?.[0]?.url)\n } else {\n const categories = groupCategories?.flat() || []\n const position = categories?.findIndex(item => item?.id === groupCategories[groupIndex][index]?.id)\n e.stopPropagation()\n onNavItemClick?.()\n onPrimaryNavClick?.(categories[position], position)\n setCategoriesItem(groupCategories[groupIndex][index])\n setNavStatusArray(prev =>\n prev.map(groupItem =>\n groupItem.map(item =>\n item.groupIndex === groupIndex && item.index === index\n ? { ...item, open: !item.open }\n : { ...item, open: false }\n )\n )\n )\n }\n }\n\n const handleNavMenuClose = () => {\n setNavStatusArray(prev => prev.map(groupItem => groupItem.map(item => ({ ...item, open: false }))))\n }\n\n const currentBlockTypeCategories = useMemo(() => {\n if (categoriesItem) return categoriesItem?.components?.[0]?.blockType\n }, [categoriesItem])\n\n const SidebarDropdownComp = WithSidebar(SidebarDropdown, categoriesItem)\n const MulticolDropdownComp = WithMulticol(MulticolDropdown, categoriesItem)\n const SupportsDropdownComp = WithSupports(SupportsDropdown, {\n categoriesItem,\n currentNavItemRef: navItemRefs.current?.[currentNavItem?.groupIndex || 0]?.[currentNavItem?.index || 0],\n })\n\n const DropdownComp = useMemo(() => {\n switch (currentBlockTypeCategories) {\n case HeaderNavigationBlockType.Sidebar:\n return <SidebarDropdownComp />\n case HeaderNavigationBlockType.Supports:\n return <SupportsDropdownComp />\n case HeaderNavigationBlockType.Multicol:\n return <MulticolDropdownComp />\n default:\n return null\n }\n }, [currentBlockTypeCategories, categoriesItem])\n\n const actions = useMemo(() => {\n return data?.headerBar?.actions?.filter((item: any) => item?.pcShow)\n }, [data])\n\n const profileAction = useMemo(() => {\n return actions?.find((item: any) => item?.blockType === HeaderNavigationActionBlockType.Profile)\n }, [actions])\n\n const handleProfileClick = useCallback(() => {\n setUserProfileOpen(prev => !prev)\n }, [])\n\n useEffect(() => {\n if (profileRef?.current) {\n const profileRefElement = profileRef.current as HTMLDivElement\n profileRefElement.addEventListener('click', handleProfileClick)\n\n return () => {\n profileRefElement.removeEventListener('click', handleProfileClick)\n }\n }\n }, [handleProfileClick])\n\n useGSAP(() => {\n if (currentNavItem?.open) {\n gsap.fromTo(\n dropdownRef?.current,\n {\n height: 0,\n },\n {\n height: 'auto',\n }\n )\n }\n }, [currentNavItem?.open])\n\n return (\n <Container className={cn('relative h-[96px]', className)}>\n <div ref={headerRef} onClick={handleNavMenuClose} className=\"flex h-full flex-col justify-end gap-4\">\n <div className=\"flex items-center justify-between\">\n <Logo />\n <Actions ref={profileRef} actions={actions} activeStatus={userProfileOpen} />\n </div>\n <div className=\"flex justify-between\">\n {groupCategories?.map((groupItem: any, groupIndex: number) => {\n return (\n <div key={`groupCategory-${groupIndex}`} className=\"flex gap-3\">\n {groupItem?.map((item: any, index: number) => {\n return (\n <div\n key={item.id}\n ref={(el: HTMLDivElement) => {\n navItemRefs.current[groupIndex][index] = el\n }}\n className=\"group cursor-pointer\"\n >\n <div className=\"relative\">\n <div\n className=\"flex items-center gap-1 pb-4\"\n onClick={e => handleNavItemClick(e, groupIndex, index)}\n >\n <Text html={item.text} className=\"text-sm font-bold leading-[1.4]\" />\n <DownArrow\n className={cn('opacity-0 size-4 group-hover:opacity-100 transition-opacity duration-500', {\n ['rotate-180']:\n currentNavItem?.groupIndex === groupIndex && currentNavItem?.index === index,\n ['opacity-100']:\n downdownHover &&\n currentNavItem?.groupIndex === groupIndex &&\n currentNavItem?.index === index,\n })}\n />\n </div>\n <div\n className={cn(\n 'absolute bottom-0 left-0 h-[2px] w-0 transition-all duration-500',\n {\n 'w-[calc(100%-20px)]':\n currentNavItem?.groupIndex === groupIndex && currentNavItem?.index === index,\n },\n theme === 'dark' ? 'bg-white' : 'bg-[#1D1D1F]'\n )}\n />\n </div>\n </div>\n )\n })}\n </div>\n )\n })}\n </div>\n </div>\n <div\n className={cn(\n 'border-t border-b-[#E4E5E6] text-black absolute left-0 top-full z-[999] flex w-full flex-col bg-black/70 overflow-hidden',\n {\n hidden: !(currentNavItem?.open && categoriesItem),\n }\n )}\n onMouseEnter={() => setDowndownHover(true)}\n onMouseLeave={() => setDowndownHover(false)}\n style={{ height: `calc(100dvh - ${headerRef?.current?.getBoundingClientRect()?.bottom}px)` }}\n >\n <div\n ref={dropdownRef}\n className={cn('relative z-50', {\n 'overflow-hidden': currentBlockTypeCategories !== HeaderNavigationBlockType.Supports,\n })}\n >\n {DropdownComp}\n </div>\n <div className=\"flex-1 bg-transparent\" onClick={handleNavMenuClose} />\n </div>\n {userProfileOpen && (\n <div\n className=\"absolute left-0 z-[999] flex w-full bg-black/70 h-[100dvh] top-full\"\n // style={{\n // height: `calc(100dvh - ${profileRef?.current?.getBoundingClientRect()?.bottom}px)`,\n // top: `calc(96px)`,\n // }}\n >\n <div\n className=\"absolute w-[272px] bg-white p-4\"\n style={{\n right: `calc(100% - ${profileRef?.current?.getBoundingClientRect()?.right}px)`,\n top: '-36px',\n }}\n >\n {profile?.email ? (\n <>\n <Text html={profile?.nick_name || profileAction?.welcome} className=\"text-sm font-bold\" />\n <div className=\"h-[1px] mt-2 bg-[#D9D9D9]\" />\n <div className=\"mt-2\">\n {profileAction?.profiles?.map((item: any) => (\n <MenuItem className=\"py-2\" key={item.id} label={item?.title} href={item?.url} />\n ))}\n </div>\n </>\n ) : (\n <>\n <Polygon className=\"absolute -top-2 text-white right-[46px] z-30\" />\n <Text html={profileAction?.benefits_title} className=\"text-sm font-bold leading-[1.4]\" />\n <div className=\"mt-2 flex flex-col gap-1\">\n {profileAction?.benefits?.map((item: any) => (\n <div key={item.id} className=\"flex items-center gap-[6px]\">\n <Picture\n source={item.benefitIcon?.url}\n className=\"size-4\"\n alt={item.benefit}\n width={16}\n height={16}\n />\n <Text html={item.benefit} className=\"text-sm font-bold leading-[1.4]\" />\n </div>\n ))}\n </div>\n <div className=\"mt-4 flex items-center gap-2\">\n <Button variant=\"secondary\" size=\"lg\" onClick={() => event?.join?.()}>\n <Text html={profileAction?.primaryButton || 'Join Now'} className=\"font-bold\" />\n </Button>\n <Button variant=\"primary\" size=\"lg\" onClick={() => event?.login?.()}>\n <Text html={profileAction?.secondaryButton || 'Log In'} className=\"font-bold\" />\n </Button>\n </div>\n </>\n )}\n </div>\n <div className=\"flex-1 bg-transparent\" onClick={() => setUserProfileOpen(false)} />\n </div>\n )}\n </Container>\n )\n})\n\n/**\n * \u4FA7\u8FB9\u680F\u4E0B\u62C9\n * @param categoriesItem \u5206\u7C7B\u9879\n */\nconst SidebarDropdown = React.memo(\n ({ sidebarCategoriesMetadata, seriesMetadata }: { sidebarCategoriesMetadata: any; seriesMetadata: any }) => {\n const { buildProps, onSidebarNavClick } = useNavContext()\n const [expandedSubcategory, setExpandedSubcategory] = useState<{ index: number; open: boolean }[]>([])\n const [activeSubSubcategoryIndex, setActiveSubSubcategoryIndex] = useState(-1)\n const sidebarDropdownRef = useRef<HTMLDivElement>(null)\n\n const initExpandedSubcategory = useCallback(() => {\n const subcategories = sidebarCategoriesMetadata?.subcategories\n if (!subcategories?.length) return\n\n const withSubSubCategoriesIndex = subcategories.findIndex((item: any) => !!item?.subSubCategories)\n const withoutSubSubCategoriesIndex = subcategories.findIndex((item: any) => !item?.subSubCategories)\n\n // \u521B\u5EFA\u5C55\u5F00\u72B6\u6001\u6570\u7EC4\n const expandedStates = subcategories.map((_: any, index: number) => ({\n index,\n open: withSubSubCategoriesIndex === index || withoutSubSubCategoriesIndex === index,\n }))\n\n setExpandedSubcategory(expandedStates)\n }, [sidebarCategoriesMetadata])\n\n useEffect(() => {\n initExpandedSubcategory()\n }, [initExpandedSubcategory])\n\n // \u901A\u8FC7categoriesMetadata\u7684subSubCategories\u7684label\u4E0Eseries\u7684label\u5339\u914D\n const matchSeriesMetadata = useMemo(() => {\n const subCategory =\n sidebarCategoriesMetadata?.subcategories?.[expandedSubcategory?.find(item => item.open)?.index || 0]\n const currentSeriesMetadata =\n seriesMetadata?.find((item: any) => item?.label?.toLowerCase() === subCategory?.label?.toLowerCase()) || {}\n if (subCategory?.collections) {\n const category = buildProps?.categories?.[subCategory?.collections] || {}\n return {\n label: currentSeriesMetadata?.label,\n isCollection: true,\n banner: currentSeriesMetadata?.banner,\n primary: currentSeriesMetadata?.primary,\n series: [\n {\n products: category?.products,\n },\n ],\n }\n } else {\n if (subCategory?.subSubCategories) {\n const activeSubSubcategory = subCategory?.subSubCategories?.[activeSubSubcategoryIndex]\n const currentActiveSeriesMetadata =\n seriesMetadata?.find(\n (item: any) => item?.label?.toLowerCase() === activeSubSubcategory?.label?.toLowerCase()\n ) || {}\n if (activeSubSubcategory?.collections) {\n const category = buildProps?.categories?.[activeSubSubcategory?.collections] || {}\n return {\n label: currentActiveSeriesMetadata?.label,\n isCollection: true,\n banner: currentActiveSeriesMetadata?.banner,\n primary: currentActiveSeriesMetadata?.primary,\n series: [\n {\n products: category?.products,\n },\n ],\n }\n } else {\n return currentActiveSeriesMetadata\n }\n } else {\n return currentSeriesMetadata\n }\n }\n }, [sidebarCategoriesMetadata, expandedSubcategory, activeSubSubcategoryIndex, seriesMetadata])\n\n const handleSubcategoryOpen = useCallback(\n (index: number, subcategoryItem: any) => {\n subcategoryItem?.subSubCategories?.length > 0\n ? setActiveSubSubcategoryIndex(0)\n : setActiveSubSubcategoryIndex(-1)\n\n if (subcategoryItem?.subSubCategories?.length > 0) {\n setExpandedSubcategory(prev =>\n prev.map(item => (item.index === index ? { ...item, open: true } : { ...item, open: false }))\n )\n } else {\n const subcategories = sidebarCategoriesMetadata?.subcategories\n const withSubSubCategoriesIndex = subcategories?.findIndex((item: any) => !!item?.subSubCategories)\n setExpandedSubcategory(prev =>\n prev.map(item => {\n return { ...item, open: item.index === index || item.index === withSubSubCategoriesIndex }\n })\n )\n }\n },\n [sidebarCategoriesMetadata, initExpandedSubcategory]\n )\n\n const handleSubSubcategoryOpen = (index: number, subSubindex: number) => {\n setExpandedSubcategory(prev =>\n prev.map(item => (item.index === index ? { ...item, open: true } : { ...item, open: false }))\n )\n setActiveSubSubcategoryIndex(subSubindex)\n }\n\n return (\n <Container childClassName=\"lg-desktop:gap-12 flex bg-white gap-8\">\n <div\n className=\"lg-desktop:basis-[356px] flex basis-[284px] flex-col gap-4 py-4\"\n style={{\n userSelect: 'none',\n }}\n ref={sidebarDropdownRef}\n >\n <div\n className=\"desktop:h-[416px] flex flex-col overflow-y-auto\"\n style={{\n scrollbarWidth: 'none',\n msOverflowStyle: 'none',\n }}\n >\n {sidebarCategoriesMetadata?.subcategories?.map((subItem: any, index: number) => {\n const hasSubSubCategory =\n Array.isArray(subItem?.subSubCategories) && subItem?.subSubCategories?.length > 0\n return (\n <div key={`subcategoryItem-${index}`}>\n <div\n className={cn('flex cursor-pointer items-center justify-between', {\n 'bg-[#F5F5F7]':\n !hasSubSubCategory && expandedSubcategory?.find(item => item.index === index)?.open,\n })}\n onClick={() => {\n handleSubcategoryOpen(index, subItem)\n onSidebarNavClick?.(subItem, index)\n }}\n >\n <Text html={subItem.label} className=\"p-4 text-sm font-bold leading-[1.4]\" />\n {hasSubSubCategory && (\n <DownArrow\n className={cn('size-4', {\n ['rotate-180']: expandedSubcategory?.find(item => item.index === index)?.open,\n })}\n />\n )}\n </div>\n {expandedSubcategory?.find(item => item.index === index)?.open && (\n <div className=\"flex flex-col\">\n {subItem.subSubCategories?.map((subSubItem: any, subSubindex: number) => (\n <Text\n html={subSubItem.label}\n onClick={() => {\n handleSubSubcategoryOpen(index, subSubindex)\n onSidebarNavClick?.(subSubItem, subSubindex)\n }}\n key={`subSubItem-${index}-${subSubindex}`}\n className={cn(\n 'cursor-pointer hover:bg-[#F5F5F7] px-6 py-4 text-sm font-bold leading-[1.4] text-[#6D6D6F]',\n {\n 'bg-[#F5F5F7]': activeSubSubcategoryIndex === subSubindex,\n }\n )}\n />\n ))}\n </div>\n )}\n </div>\n )\n })}\n </div>\n {sidebarCategoriesMetadata && (\n <div className=\"flex\">\n <div className=\"flex flex-col gap-4\">\n {sidebarCategoriesMetadata?.primary && (\n <Button\n as=\"a\"\n href={`${sidebarCategoriesMetadata?.primary?.url}?ref=${sidebarCategoriesMetadata?.primary?.label}_shopall`}\n variant=\"primary\"\n size=\"lg\"\n className=\"text-sm lg-desktop:text-base\"\n >\n {sidebarCategoriesMetadata?.primary?.label}\n </Button>\n )}\n {sidebarCategoriesMetadata?.secondary && (\n <Button\n as=\"a\"\n href={sidebarCategoriesMetadata?.secondary?.url}\n variant=\"link\"\n size=\"lg\"\n className=\"justify-start !p-0 text-sm lg-desktop:text-base\"\n >\n {sidebarCategoriesMetadata?.secondary?.label}\n </Button>\n )}\n </div>\n </div>\n )}\n </div>\n <div className=\"flex-1 py-4\">\n {Reflect.ownKeys(matchSeriesMetadata).length > 0 && (\n <div className=\"mb-4 flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n <Text\n html={matchSeriesMetadata?.label}\n className=\"text-xl lg-desktop:text-2xl font-bold leading-[1.4]\"\n />\n {matchSeriesMetadata?.primary && !matchSeriesMetadata?.primary?.hide && (\n <Button\n as=\"a\"\n href={`${matchSeriesMetadata?.primary?.url}?ref=${matchSeriesMetadata?.label}_viewmore`}\n variant=\"link\"\n size=\"lg\"\n className=\"justify-start !p-0 text-sm lg-desktop:text-base font-bold leading-[1.2] no-underline\"\n >\n {matchSeriesMetadata?.primary?.label}\n </Button>\n )}\n </div>\n <Link\n href={matchSeriesMetadata?.guide?.url}\n className=\"text-sm lg-desktop:text-base leading-[1.2] text-[#6D6D6F]\"\n >\n {matchSeriesMetadata?.guide?.label}\n </Link>\n </div>\n )}\n <div\n className=\"flex flex-col gap-4 overflow-y-auto h-[426px]\"\n style={{\n scrollbarWidth: 'none',\n msOverflowStyle: 'none',\n }}\n >\n {matchSeriesMetadata?.series?.map((seriesItem: any, seriesIndex: number) => (\n <div key={`seriesItem-${seriesIndex}`}>\n {seriesItem.label && (\n <Text html={seriesItem.label} className=\"text-sm mb-2 font-bold leading-[1.4] text-[#6D6D6F]\" />\n )}\n <div className=\"grid grid-cols-3 gap-4\">\n {!!matchSeriesMetadata?.banner && (\n <Link asChild={!matchSeriesMetadata?.banner?.href} href={matchSeriesMetadata?.banner?.href}>\n <div className=\"relative [&_img]:hover:scale-105 [&_img]:hover:transition-all [&_img]:hover:duration-300\">\n <Picture\n source={matchSeriesMetadata?.banner?.imageUrl}\n className=\"h-[114px] laptop:h-[120px]\"\n imgClassName=\"object-cover h-full\"\n />\n <div className=\"absolute bottom-0 left-0 right-0 p-4\">\n <Heading\n size={2}\n html={matchSeriesMetadata?.banner?.title || 'Buy in Guide'}\n className=\"font-bold text-white\"\n />\n <Text\n html={matchSeriesMetadata?.banner?.desc || '20.000mAh'}\n className=\"text-sm text-white font-bold\"\n />\n </div>\n </div>\n </Link>\n )}\n {seriesItem.products?.map((product: any, index: number) => (\n <SeriesProductItem\n seriesLabel={matchSeriesMetadata?.label}\n key={`seriesProductItem-${index}`}\n product={product}\n isCollection={matchSeriesMetadata?.isCollection}\n />\n ))}\n </div>\n </div>\n ))}\n </div>\n </div>\n </Container>\n )\n }\n)\n\n/**\n * \u591A\u5217\u4E0B\u62C9\n * @param categoriesItem \u5206\u7C7B\u9879\n */\nconst MulticolDropdown = ({ multicolMetadata }: { multicolMetadata: any }) => {\n const multicolDropdownRef = useRef<HTMLDivElement>(null)\n\n // useGSAP(() => {\n // gsap.fromTo(\n // multicolDropdownRef?.current,\n // {\n // height: 0,\n // },\n // {\n // height: 'auto',\n // duration: 0.5,\n // }\n // )\n // }, [])\n\n return (\n <div ref={multicolDropdownRef}>\n <Container childClassName=\"bg-white\" className=\"h-full\">\n <div className=\"flex gap-4 py-4\">\n {multicolMetadata?.map((item: any, index: number) => (\n <div key={`multicolItem-${item?.label}-${index}`} className=\"w-1/4\">\n <MulticolItem item={item} />\n </div>\n ))}\n </div>\n </Container>\n </div>\n )\n}\n\n/**\n * supports\u4E0B\u62C9\n * @param categoriesItem \u5206\u7C7B\u9879\n * @param currentNavItemRef \u5F53\u524D\u5BFC\u822A\u9879\n */\nconst SupportsDropdown = ({\n supportsMetadata,\n currentNavItemRef,\n}: {\n supportsMetadata: any\n currentNavItemRef: HTMLDivElement\n}) => {\n const supportsDropdownRef = useRef<HTMLDivElement>(null)\n const [navItemReact, setNavItemReact] = useState<DOMRect | null>(null)\n const [supportsDropdownHeight, setSupportsDropdownHeight] = useState(0)\n\n // useGSAP(() => {\n // gsap.fromTo(\n // supportsDropdownRef?.current,\n // {\n // height: 0,\n // },\n // {\n // height: supportsDropdownHeight,\n // duration: 0.5,\n // }\n // )\n // }, [supportsDropdownHeight])\n\n useEffect(() => {\n if (supportsDropdownRef?.current) {\n const rect = supportsDropdownRef?.current?.getBoundingClientRect()\n setSupportsDropdownHeight(rect.height)\n }\n }, [supportsDropdownRef])\n\n const debouncedHandleResize = debounce(() => {\n if (currentNavItemRef) {\n const rect = currentNavItemRef.getBoundingClientRect()\n setNavItemReact(rect)\n }\n }, 500)\n\n useEffect(() => {\n debouncedHandleResize()\n window.addEventListener('resize', debouncedHandleResize)\n return () => {\n window.removeEventListener('resize', debouncedHandleResize)\n }\n }, [debouncedHandleResize])\n\n useEffect(() => {\n if (currentNavItemRef) {\n const rect = currentNavItemRef.getBoundingClientRect()\n setNavItemReact(rect)\n }\n }, [currentNavItemRef])\n\n return (\n <div\n className=\"absolute top-0 h-full bg-white transition-all duration-500 overflow-hidden\"\n style={{ right: `calc(100% - ${navItemReact?.right}px)`, height: supportsDropdownHeight }}\n >\n <div ref={supportsDropdownRef} className=\"p-4\">\n {supportsMetadata?.map((supportItem: any) => (\n <div key={supportItem.id} className=\"py-2\">\n <Link href={supportItem.url} className=\"text-sm font-bold leading-[1.4] no-underline\">\n {supportItem.label}\n </Link>\n </div>\n ))}\n </div>\n </div>\n )\n}\n\nconst SeriesProductItem = ({\n product,\n isCollection,\n position,\n seriesLabel,\n}: {\n product: any\n isCollection?: boolean\n position?: number\n seriesLabel?: string\n}) => {\n const { buildProps, onSeriesProductClick } = useNavContext()\n let productData = isCollection\n ? product\n : buildProps?.products?.find((item: Product) => item.handle === product.handle)\n const variant =\n productData?.variants?.find((item: ProductVariant) => item.sku === product.sku) || productData?.variants?.[0]\n\n const listingLink = useMemo(() => {\n return `/products/${productData?.handle}?variant=${atobID(variant?.id as string)}`\n }, [productData?.handle, variant?.id])\n\n const tags = useMemo(() => {\n return productData?.tags\n ?.filter?.((item: any) => item?.startsWith?.('CLtag'))\n ?.map?.((item: any) => item?.replace?.('CLtag:', ''))\n ?.slice?.(0, 2)\n }, [productData?.tags])\n\n if (!variant?.availableForSale) return null\n\n return (\n <div className=\"flex shrink-0 items-center gap-4 bg-[#F5F5F7] px-4 py-3 [&_img]:hover:scale-105\">\n <div className=\"shrink-0\">\n <Picture\n source={`${variant?.image?.url || product?.images?.[0]?.url}}`}\n width={90}\n height={90}\n className=\"size-[96px]\"\n imgClassName=\"object-contain h-full\"\n />\n </div>\n <div className=\"relative\">\n <div className=\"flex gap-1\">\n {Array.isArray(tags) &&\n tags?.map((tag: string) => (\n <Text\n as=\"p\"\n html={tag}\n className=\"text-brand-0 whitespace-nowrap mb-1 inline-block h-[24px] rounded-full border-[1.6px] border-[#00BEFA] px-[6px] text-sm font-bold !leading-[22px]\"\n />\n ))}\n </div>\n {/* {product?.badge && (\n <Text\n as=\"p\"\n html={product?.badge}\n className=\"text-brand-0 mb-1 inline-block h-[24px] rounded-full border-[1.6px] border-[#00BEFA] px-[6px] text-sm font-bold !leading-[24px]\"\n />\n )} */}\n <Link\n href={listingLink}\n onClick={e => {\n e.preventDefault()\n window.open(listingLink)\n onSeriesProductClick?.(productData, position || 0, seriesLabel)\n }}\n className=\"no-underline hover:text-current\"\n >\n <Text\n className=\"lg-desktop:h-[44px] lg-desktop:text-base line-clamp-2 h-[40px] text-sm font-bold leading-[1.4]\"\n html={productData?.title || product?.name}\n />\n </Link>\n {product?.desc && (\n <Text\n as=\"p\"\n html={product?.desc}\n className=\"lg-desktop:text-sm line-clamp-1 mt-1 text-xs font-bold leading-[1.4] text-[#6D6D6F]\"\n />\n )}\n </div>\n </div>\n )\n}\n\n/**\n * \u591A\u5217\u4E0B\u62C9\u9879\n * @param item \u591A\u5217\u4E0B\u62C9\u9879\n */\nconst MulticolItem = ({ item, allPicture }: { item: any; allPicture?: boolean }) => {\n return (\n <>\n {item?.columns && (\n <>\n <Text html={item.label} as=\"div\" className=\"my-2 text-sm font-bold leading-[1.4] text-[#6D6D6F]\" />\n <div className=\"mt-2 flex flex-col\">\n {item.columns?.map((columnItem: any) => (\n <div key={columnItem.label} className=\"py-2 flex items-center gap-1\">\n <Link\n href={`${columnItem.url}?ref=navMenu`}\n asChild={!columnItem.url}\n className=\"text-sm font-bold leading-[1.4] no-underline\"\n >\n {columnItem.label}\n </Link>\n {columnItem?.badge && (\n <Text\n as=\"p\"\n html={columnItem?.badge || 'badge'}\n className=\"text-sm font-bold !leading-[22px] text-brand-0 h-[24px] rounded-full border-[1.6px] border-[var(--brand-color-0)] px-[6px]\"\n />\n )}\n </div>\n ))}\n </div>\n </>\n )}\n {item?.imageUrl && (\n <div\n className={cn(\n 'laptop:h-[280px] desktop:h-[224px] lg-desktop:h-[280px] h-[240px] max-w-[358px] tablet:max-w-[346px] laptop:max-w-[440px] desktop:w-full relative overflow-hidden',\n {\n ['tablet:max-w-none laptop:max-w-none']: allPicture,\n }\n )}\n >\n <Link href={`${item.url}?ref=navMenu`} asChild={!item.url}>\n <Picture\n source={item.imageUrl}\n width={404}\n height={280}\n className=\"size-full\"\n imgClassName=\"object-cover h-full hover:scale-105 transition-all duration-300\"\n />\n <div className=\"absolute bottom-4 left-4 z-10 flex flex-col justify-end no-underline\">\n <Text\n html={item.title}\n className={cn('lg-desktop:text-2xl text-xl font-bold leading-[1.2] text-white', {\n 'text-black': item?.theme === 'dark',\n })}\n />\n {item.subtitle && (\n <Text\n html={item.subtitle}\n className={cn('text-sm font-bold leading-[1.4] text-white', {\n 'text-black': item?.theme === 'dark',\n })}\n />\n )}\n {item?.primary?.label && (\n <Button\n as=\"a\"\n href={item?.primary?.url}\n variant=\"link\"\n size=\"lg\"\n className={cn('text-sm font-bold mr-auto !p-0 leading-[1.4] text-white', {\n 'text-black': item?.theme === 'dark',\n })}\n >\n {item?.primary?.label || 'more'}\n </Button>\n )}\n </div>\n </Link>\n </div>\n )}\n </>\n )\n}\n\n/**\n * \u79FB\u52A8\u7AEF\u5BFC\u822A\n * @param menuHeight \u83DC\u5355\u9AD8\u5EA6\n * @param data \u5BFC\u822A\u6570\u636E\n */\nconst MobileNavigation = forwardRef<HTMLDivElement, MobileNavigationProps>(\n ({ data, className, onPrimaryNavClick }, ref) => {\n const groupCategories = useMemo(() => {\n return WithGroupCategory(data?.categories?.filter((item: any) => item?.mobileShow))\n }, [data])\n\n const { currentMenu, setCurrentMenu, subSubCategory } = useNavContext()\n const [mobileMenuOpen, setMobileMenuOpen] = useState(false)\n const [menuInnerHeight, setMenuInnerHeight] = useState(0)\n const [categoriesItem, setCategoriesItem] = useState<any>(null)\n\n const mobileMenuRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n if (mobileMenuRef?.current && mobileMenuOpen) {\n const rect = mobileMenuRef?.current?.getBoundingClientRect()\n setMenuInnerHeight(window?.innerHeight - (rect?.bottom || 0))\n }\n }, [mobileMenuOpen])\n\n useGSAP(() => {\n gsap.fromTo(\n mobileMenuRef.current,\n {\n height: 0,\n },\n {\n height: menuInnerHeight,\n duration: 0.3,\n }\n )\n }, [menuInnerHeight])\n\n useEffect(() => {\n document.documentElement.style.overflow = mobileMenuOpen ? 'hidden' : 'auto'\n }, [mobileMenuOpen])\n\n const currentBlockTypeCategories = useMemo(() => {\n return categoriesItem?.components?.[0]?.blockType\n }, [categoriesItem])\n\n const MobileSupportMenuComp = WithSupports(MobileSupportMenu, {\n categoriesItem,\n })\n\n const MobileSidebarMenuComp = WithSidebar(MobileSidebarMenu, categoriesItem)\n const MobileMulticolMenuComp = WithMulticol(MobileMulticolMenu, categoriesItem)\n\n const MobileCategoriesMenuComp = useMemo(() => {\n switch (currentBlockTypeCategories) {\n case HeaderNavigationBlockType.Sidebar:\n return <MobileSidebarMenuComp />\n case HeaderNavigationBlockType.Supports:\n return <MobileSupportMenuComp />\n case HeaderNavigationBlockType.Multicol:\n return <MobileMulticolMenuComp />\n default:\n return null\n }\n }, [currentBlockTypeCategories, categoriesItem, MobileSupportMenuComp])\n\n const handleSecondaryMenuClose = useCallback(() => {\n setMobileMenuOpen(false)\n setMenuInnerHeight(0)\n setCurrentMenu && setCurrentMenu(HeaderNavigationMenu.Primary)\n }, [setMobileMenuOpen, setMenuInnerHeight, setCurrentMenu])\n\n const menuActions = useMemo(() => {\n return data?.headerBar?.actions?.filter(\n (item: any) => item?.mobileShow && item?.blockType !== HeaderNavigationActionBlockType.Profile // \u79FB\u52A8\u7AEF\u4E0D\u663E\u793Aprofile\u6309\u94AE\n )\n }, [data])\n\n const profileAction = useMemo(() => {\n return (\n data?.headerBar?.actions?.find(\n (item: any) => item?.mobileShow && item?.blockType === HeaderNavigationActionBlockType.Profile\n ) || {}\n )\n }, [data])\n\n const MobileCategoriesHeaderComp = useMemo(() => {\n switch (currentMenu) {\n case HeaderNavigationMenu.Primary:\n return (\n <PrimaryHeader\n actions={menuActions}\n menuOpen={mobileMenuOpen}\n onMenuOpenClose={() => {\n setMobileMenuOpen(false)\n setMenuInnerHeight(0)\n }}\n onMenuOpenClick={() => setMobileMenuOpen(true)}\n />\n )\n case HeaderNavigationMenu.Secondary:\n return (\n <SecondaryHeader\n title={categoriesItem?.text}\n onMenuOpenClose={handleSecondaryMenuClose}\n onMenuBackClick={() => setCurrentMenu?.(HeaderNavigationMenu.Primary)}\n />\n )\n case HeaderNavigationMenu.Third:\n return (\n <SecondaryHeader\n title={subSubCategory?.label}\n onMenuOpenClose={handleSecondaryMenuClose}\n onMenuBackClick={() => setCurrentMenu?.(HeaderNavigationMenu.Secondary)}\n />\n )\n default:\n return null\n }\n }, [\n mobileMenuOpen,\n currentMenu,\n setCurrentMenu,\n categoriesItem,\n menuActions,\n subSubCategory,\n handleSecondaryMenuClose,\n ])\n\n const handlePrimaryMenuClick = useCallback(\n (groupIndex: number, index: number) => {\n const categoriesItem = Array.isArray(groupCategories)\n ? Array.isArray(groupCategories[groupIndex])\n ? groupCategories[groupIndex][index]\n : {}\n : {}\n setCategoriesItem(categoriesItem)\n if (categoriesItem?.components?.[0]?.blockType === HeaderNavigationBlockType.Links) {\n // link\u6A21\u5757\u7279\u6B8A\u5904\u7406\n categoriesItem?.components?.[0]?.url && window.open(categoriesItem?.components?.[0]?.url)\n } else {\n setCurrentMenu?.(HeaderNavigationMenu.Secondary)\n }\n },\n [groupCategories, setCurrentMenu]\n )\n\n return (\n <Container className={cn('relative h-[52px]', className)}>\n {/* \u79FB\u52A8\u7AEF\u5206\u7C7B\u83DC\u5355 */}\n {MobileCategoriesHeaderComp}\n {mobileMenuOpen && (\n <div\n ref={mobileMenuRef}\n className=\"absolute left-0 top-full text-black border-t border-[#E4E5E6] z-[999] w-full overflow-y-auto bg-white\"\n style={{ height: menuInnerHeight }}\n >\n {currentMenu === HeaderNavigationMenu.Primary ? (\n <MobilePrimaryMenu\n categories={groupCategories}\n onPrimaryMenuClick={handlePrimaryMenuClick}\n onPrimaryNavClick={onPrimaryNavClick}\n profileAction={profileAction}\n />\n ) : (\n MobileCategoriesMenuComp\n )}\n </div>\n )}\n </Container>\n )\n }\n)\n\n/**\n * \u79FB\u52A8\u7AEF\u4E00\u7EA7\u83DC\u5355\n * @param categories \u5206\u7C7B\n * @param onPrimaryMenuClick \u4E00\u7EA7\u83DC\u5355\u70B9\u51FB\n */\nconst MobilePrimaryMenu = ({\n categories,\n onPrimaryMenuClick,\n profileAction,\n onPrimaryNavClick,\n}: {\n categories: any\n onPrimaryMenuClick: (groupIndex: number, index: number) => void\n profileAction: any\n onPrimaryNavClick?: (category: any, position: number) => void\n}) => {\n const { onSidebarNavClick } = useNavContext()\n return (\n <div className=\"flex h-full flex-col justify-between\">\n <div className=\"tablet:px-8 laptop:px-16 p-4\">\n {categories?.map((groupItem: any, groupIndex: number) => (\n <div key={`groupCategory-${groupIndex}`} className=\"\">\n {groupItem?.map((item: any, index: number) => (\n <MenuItem\n key={item.id}\n label={item.text}\n onClick={() => {\n const flatCategories = categories?.flat() || []\n const position = flatCategories?.findIndex(\n (item: any) => item?.id === categories[groupIndex][index]?.id\n )\n onPrimaryMenuClick(groupIndex, index)\n onPrimaryNavClick?.(item, position)\n }}\n icon={item.components?.[0]?.icon}\n />\n ))}\n <div\n className={cn('my-2 h-px w-full bg-[#E5E5E7]', { ['hidden']: groupIndex === categories.length - 1 })}\n />\n </div>\n ))}\n </div>\n <ProfileComp profileAction={profileAction} />\n </div>\n )\n}\n\n/**\n * \u79FB\u52A8\u7AEF\u4FA7\u8FB9\u680F\u4E0B\u62C9\n * @param sidebarCategoriesMetadata \u4FA7\u8FB9\u680F\u5206\u7C7B\u5143\u6570\u636E\n * @param seriesMetadata \u4FA7\u8FB9\u680F\u7CFB\u5217\u5143\u6570\u636E\n */\nconst MobileSidebarMenu = ({\n sidebarCategoriesMetadata,\n seriesMetadata,\n}: {\n sidebarCategoriesMetadata: any\n seriesMetadata: any\n}) => {\n const {\n currentMenu,\n setCurrentMenu,\n subSubCategory,\n setSubSubCategory,\n setCurrentSeriesMetadata,\n currentSeriesMetadata,\n buildProps,\n onSidebarNavClick,\n } = useNavContext()\n const [expandedSubcategory, setExpandedSubcategory] = useState<{ index: number; open: boolean }[]>([])\n const [expandedSeriesCategories, setExpandedSeriesCategories] = useState<{ index: number; open: boolean }[]>([])\n\n useEffect(() => {\n if (sidebarCategoriesMetadata?.subcategories?.length) {\n setExpandedSubcategory(\n sidebarCategoriesMetadata?.subcategories?.map((_: any, index: number) => ({\n index,\n open: false,\n }))\n )\n }\n }, [sidebarCategoriesMetadata])\n\n useEffect(() => {\n if (subSubCategory?.subSubCategories?.length) {\n setExpandedSeriesCategories(\n subSubCategory?.subSubCategories?.map((_: any, index: number) => ({\n index,\n open: index === 0,\n }))\n )\n }\n }, [subSubCategory])\n\n const handleSubSubCategoryClick = useCallback(\n (item: any, subIndex?: number) => {\n setCurrentMenu && setCurrentMenu(HeaderNavigationMenu.Third)\n setSubSubCategory?.(item)\n const curSeriesMetadata =\n seriesMetadata?.find((seriesItem: any) =>\n subIndex !== undefined\n ? item?.subSubCategories?.[subIndex]?.label?.toLowerCase() === seriesItem.label?.toLowerCase()\n : item?.label?.toLowerCase() === seriesItem.label?.toLowerCase()\n ) || {}\n // \u901A\u8FC7categoriesMetadata\u7684subSubCategories\u7684label\u4E0Eseries\u7684label\u5339\u914D\n if (item?.collections) {\n const category = buildProps?.categories?.[item?.collections] || {}\n setCurrentSeriesMetadata?.({\n label: curSeriesMetadata?.label,\n isCollection: true,\n banner: curSeriesMetadata?.banner,\n primary: curSeriesMetadata?.primary,\n series: [\n {\n products: category?.products,\n },\n ],\n })\n } else {\n setCurrentSeriesMetadata?.(curSeriesMetadata)\n }\n },\n [seriesMetadata, sidebarCategoriesMetadata, setCurrentMenu, setSubSubCategory, setCurrentSeriesMetadata]\n )\n\n const defaultGuide = useMemo(() => {\n return seriesMetadata?.find((item: any) => !!item?.guide)?.guide\n }, [seriesMetadata, sidebarCategoriesMetadata])\n\n const MobileSidebarMenuComp = useMemo(() => {\n switch (currentMenu) {\n case HeaderNavigationMenu.Secondary:\n return (\n // \u4E8C\u7EA7\u83DC\u5355\n <div className=\"tablet:px-8 laptop:px-16 flex h-full flex-col justify-between tablet:justify-start tablet:gap-16 p-4\">\n <div>\n {sidebarCategoriesMetadata?.subcategories?.map((item: any, index: number) => {\n return (\n <div key={`${item.label}-${index}`}>\n <MenuItem\n label={item?.label}\n active={expandedSubcategory.find(item => item.index === index)?.open}\n onClick={() => {\n handleSubSubCategoryClick(item)\n onSidebarNavClick?.(item, index)\n }}\n />\n {/* {expandedSubcategory.find(item => item.index === index)?.open &&\n item.subSubCategories?.map((subItem: any, subIndex: number) => (\n <div\n key={`${index}-${subIndex}`}\n className=\"px-2 py-4\"\n onClick={() => handleSubSubCategoryClick(item, subIndex)}\n >\n <Text html={subItem.label} className=\"text-sm font-bold leading-[1.4]\" />\n </div>\n ))} */}\n </div>\n )\n })}\n </div>\n <div className=\"tablet:items-start flex flex-col items-center gap-4\">\n {sidebarCategoriesMetadata?.primary && (\n <Button\n as=\"a\"\n href={`${sidebarCategoriesMetadata?.primary?.url}?ref=${sidebarCategoriesMetadata?.primary?.label}_shopall`}\n variant=\"primary\"\n size=\"lg\"\n className=\"tablet:w-auto w-full text-base\"\n >\n {sidebarCategoriesMetadata?.primary?.label}\n </Button>\n )}\n {sidebarCategoriesMetadata?.secondary && (\n <Button\n as=\"a\"\n href={sidebarCategoriesMetadata?.secondary?.url}\n variant=\"link\"\n size=\"lg\"\n className=\"tablet:w-auto tablet:px-0 w-full py-0 text-base\"\n >\n {sidebarCategoriesMetadata?.secondary?.label}\n </Button>\n )}\n </div>\n </div>\n )\n case HeaderNavigationMenu.Third:\n return (\n // \u4E09\u7EA7\u83DC\u5355\n <div className=\"tablet:px-8 laptop:px-16 p-4\">\n {subSubCategory?.subSubCategories ? (\n subSubCategory?.subSubCategories?.map((subSubCategoryItem: any, index: number) => {\n const curSeriesMetadata =\n seriesMetadata?.find(\n (item: any) => item.label.toLowerCase() === subSubCategoryItem?.label?.toLowerCase()\n ) || {}\n let matchSeriesMetadata = {} as any\n if (subSubCategoryItem?.collections) {\n const category = buildProps?.categories?.[subSubCategoryItem?.collections] || {}\n matchSeriesMetadata = {\n label: curSeriesMetadata?.label,\n isCollection: true,\n banner: curSeriesMetadata?.banner,\n primary: curSeriesMetadata?.primary,\n series: [\n {\n products: category?.products,\n },\n ],\n }\n } else {\n matchSeriesMetadata = curSeriesMetadata\n }\n return (\n <div key={`${subSubCategoryItem.label}-${index}`}>\n {Reflect.ownKeys(subSubCategoryItem).length > 0 && (\n <SubSubCategoryItemComp\n matchSeriesMetadata={matchSeriesMetadata}\n onSubSubCategoryItemClick={() => {\n onSidebarNavClick?.(subSubCategoryItem, index)\n setExpandedSeriesCategories(prev => prev.map((item, i) => ({ ...item, open: i === index })))\n }}\n expanded={!!expandedSeriesCategories?.find(item => item.index === index)?.open}\n />\n )}\n {expandedSeriesCategories?.find(item => item.index === index)?.open && (\n <>\n <SubSubCategoryContentComp matchSeriesMetadata={matchSeriesMetadata} />\n {matchSeriesMetadata?.primary && (\n <div className=\"text-center my-4\">\n <Button\n as=\"a\"\n href={matchSeriesMetadata?.primary?.url}\n className=\"text-base no-underline leading-[1.2]\"\n variant=\"secondary\"\n size=\"base\"\n >\n {matchSeriesMetadata?.primary?.label}\n </Button>\n </div>\n )}\n </>\n )}\n </div>\n )\n })\n ) : (\n <>\n {Reflect.ownKeys(currentSeriesMetadata).length > 0 && (\n <SubSubCategoryItemComp matchSeriesMetadata={currentSeriesMetadata} />\n )}\n <SubSubCategoryContentComp matchSeriesMetadata={currentSeriesMetadata} />\n {currentSeriesMetadata?.primary && (\n <div className=\"text-center my-4 \">\n <Button\n as=\"a\"\n href={`${currentSeriesMetadata?.primary?.url}?ref=${currentSeriesMetadata?.label}_viewmore`}\n variant=\"secondary\"\n size=\"base\"\n className=\"text-base no-underline leading-[1.2]\"\n >\n {currentSeriesMetadata?.primary?.label}\n </Button>\n </div>\n )}\n </>\n )}\n {defaultGuide && (\n <Link href={defaultGuide?.url}>\n <div className=\"mt-4\">\n <Text html={defaultGuide?.label} className=\"text-sm font-bold leading-[1.2] text-[#6D6D6F]\" />\n </div>\n </Link>\n )}\n </div>\n )\n default:\n return null\n }\n }, [\n currentMenu,\n sidebarCategoriesMetadata,\n setCurrentMenu,\n seriesMetadata,\n expandedSubcategory,\n expandedSeriesCategories,\n setSubSubCategory,\n subSubCategory,\n setCurrentSeriesMetadata,\n currentSeriesMetadata,\n ])\n\n return MobileSidebarMenuComp\n}\n\nconst SubSubCategoryItemComp = ({\n matchSeriesMetadata,\n onSubSubCategoryItemClick,\n expanded,\n}: {\n matchSeriesMetadata: any\n onSubSubCategoryItemClick?: () => void\n expanded?: boolean\n}) => {\n return (\n <div className=\"tablet:pt-0 py-4 flex items-center justify-between\" onClick={onSubSubCategoryItemClick}>\n {matchSeriesMetadata?.label && (\n <Text html={matchSeriesMetadata?.label} className=\"text-sm font-bold leading-[1.4]\" />\n )}\n {onSubSubCategoryItemClick && (\n <DownArrow\n className={cn('size-5', {\n ['rotate-180']: expanded,\n })}\n />\n )}\n </div>\n )\n}\n\nconst SubSubCategoryContentComp = ({ matchSeriesMetadata }: { matchSeriesMetadata: any }) => {\n return (\n <div className=\"flex flex-col gap-2 laptop:gap-3\">\n {!!matchSeriesMetadata?.series?.length &&\n matchSeriesMetadata?.series?.map((seriesItem: any, pIndex: number) => (\n <div key={`seriesItem-${pIndex}`}>\n {seriesItem.label && (\n <Text html={seriesItem.label} className=\"text-sm mb-2 font-bold leading-[1.4] text-[#3D3D3F]\" />\n )}\n <div className=\"laptop:grid-cols-3 laptop:gap-4 tablet:grid tablet:grid-cols-2 tablet:gap-3 flex flex-col gap-2\">\n {!!matchSeriesMetadata?.banner && (\n <Link asChild={!matchSeriesMetadata?.banner?.href} href={matchSeriesMetadata?.banner?.href}>\n <div className=\"relative [&_img]:hover:scale-105 [&_img]:hover:transition-all [&_img]:hover:duration-300\">\n <Picture\n source={matchSeriesMetadata?.banner?.imageUrl}\n className=\"h-[114px] laptop:h-[120px]\"\n imgClassName=\"object-cover h-full\"\n />\n <div className=\"absolute bottom-0 left-0 right-0 p-4\">\n <Heading\n size={2}\n html={matchSeriesMetadata?.banner?.title || 'Buy in Guide'}\n className={cn('font-bold text-white', {\n 'text-black': matchSeriesMetadata?.banner?.theme === 'dark',\n })}\n />\n <Text\n html={matchSeriesMetadata?.banner?.desc || '20.000mAh'}\n className={cn('text-sm text-white font-bold', {\n 'text-black': matchSeriesMetadata?.banner?.theme === 'dark',\n })}\n />\n </div>\n </div>\n </Link>\n )}\n {seriesItem.products?.map((product: any, index: number) => (\n <SeriesProductItem\n position={index}\n key={`seriesProductItem-${pIndex}-${index}`}\n product={product}\n seriesLabel={matchSeriesMetadata?.label}\n isCollection={matchSeriesMetadata?.isCollection}\n />\n ))}\n </div>\n </div>\n ))}\n </div>\n )\n}\n\n/**\n * \u79FB\u52A8\u7AEFsupport\u83DC\u5355\n * @param supportsMetadata support\u83DC\u5355\u5143\u6570\u636E\n */\nconst MobileSupportMenu = ({ supportsMetadata }: { supportsMetadata: any }) => {\n return (\n <div className=\"tablet:px-8 laptop:px-16 p-4\">\n {supportsMetadata?.map((supportItem: any) => (\n <MenuItem key={supportItem.id} href={supportItem.url} label={supportItem.label} onClick={() => {}} />\n ))}\n </div>\n )\n}\n\n/**\n * \u79FB\u52A8\u7AEFmulticol\u83DC\u5355\n * @param multicolMetadata multicol\u83DC\u5355\u5143\u6570\u636E\n */\nconst MobileMulticolMenu = ({ multicolMetadata }: { multicolMetadata: any }) => {\n // \u662F\u5426\u5168\u90E8\u662F\u56FE\u7247\n const allPicture = useMemo(() => {\n return !multicolMetadata?.some((item: any) => !!item.columns)\n }, [multicolMetadata])\n\n return (\n <div\n className={cn('tablet:py-4 tablet:px-8 laptop:px-16 flex flex-col gap-4 tablet:gap-6 p-4', {\n ['tablet:grid tablet:grid-cols-2 tablet:gap-3 laptop:gap-4']: allPicture,\n })}\n >\n {multicolMetadata?.map((item: any, index: number) => (\n <div key={`multicolItem-${item?.label}-${index}`}>\n <MulticolItem item={item} allPicture={allPicture} />\n </div>\n ))}\n </div>\n )\n}\n\n/**\n * \u79FB\u52A8\u7AEFprofile\u7EC4\u4EF6\n * @param profileAction profile\u83DC\u5355\u5143\u6570\u636E\n */\nconst ProfileComp = ({ profileAction }: { profileAction: any }) => {\n const [profileOpen, setProfileOpen] = useState(false)\n const { profile, event } = useNavContext()\n return (\n <div\n className={cn('tablet:px-8 laptop:px-16 bg-[#F5F5F7] px-4 py-6', {\n 'p-4': profileOpen,\n })}\n >\n <div className=\"flex items-center justify-between\" onClick={() => setProfileOpen(!profileOpen)}>\n <div className=\"flex items-center gap-[14px]\">\n <div className=\"flex size-[40px] shrink-0 items-center justify-center rounded-full bg-white\">\n <User />\n </div>\n <Text html={profile?.nick_name || profileAction?.welcome} className=\"text-base font-bold leading-[1.4]\" />\n </div>\n {!profile?.email && <DownArrow className={cn('size-5 laptop:size-4', { 'rotate-180': profileOpen })} />}\n </div>\n {profile?.email && (\n <div className=\"mt-4\">\n {profileAction?.profiles?.map((item: any) => <MenuItem key={item.id} label={item?.title} href={item?.url} />)}\n </div>\n )}\n {profileOpen && !profile?.email && (\n <div className=\"mt-4\">\n <Text html={profileAction?.benefits_title} className=\"text-sm font-bold leading-[1.4]\" />\n <div className=\"mt-2 flex flex-col gap-1\">\n {profileAction?.benefits?.map((item: any) => (\n <div key={item.id} className=\"flex items-center gap-[6px]\">\n <Picture source={item.benefitIcon?.url} className=\"size-4\" alt={item.benefit} width={16} height={16} />\n <Text html={item.benefit} className=\"text-sm font-bold leading-[1.4]\" />\n </div>\n ))}\n </div>\n </div>\n )}\n {!profile?.email && (\n <div className=\"mt-4 flex items-center gap-3\">\n <Button className=\"tablet:flex-none flex-1\" variant=\"secondary\" size=\"base\" onClick={() => event?.join?.()}>\n <Text html={profileAction?.primaryButton || 'Join Now'} className=\"text-sm font-bold leading-[1.4]\" />\n </Button>\n <Button className=\"tablet:flex-none flex-1\" variant=\"primary\" size=\"base\" onClick={() => event?.login?.()}>\n <Text html={profileAction?.secondaryButton || 'Log In'} className=\"text-sm font-bold leading-[1.4]\" />\n </Button>\n </div>\n )}\n </div>\n )\n}\n\nconst PrimaryHeader = ({ menuOpen, onMenuOpenClose, onMenuOpenClick, actions }: MobilePrimaryNavigationData) => {\n return (\n <div className=\"flex h-full items-center justify-between gap-4\">\n <Logo />\n <div className=\"desktop:gap-6 flex items-center gap-4\">\n <Actions actions={actions} />\n {menuOpen ? (\n <Close className=\"size-5\" onClick={() => onMenuOpenClose()} />\n ) : (\n <Menu className=\"size-5\" onClick={() => onMenuOpenClick()} />\n )}\n </div>\n </div>\n )\n}\n\nconst Logo = () => {\n const { payloadData, isMobile } = useNavContext()\n return (\n <div\n className=\"[&>svg]:w-full hover:text-brand-0 cursor-pointer\"\n onClick={() => {\n window.location.href = '/'\n }}\n dangerouslySetInnerHTML={{\n __html: isMobile ? payloadData?.headerBar?.mobileLogo : payloadData?.headerBar?.desktopLogo,\n }}\n />\n )\n}\n\nconst Actions = forwardRef<HTMLDivElement, { actions: any; activeStatus?: boolean }>(\n ({ actions, activeStatus = false }, ref) => {\n const { event } = useNavContext()\n const [activeAction, setActiveAction] = useState<any>(null)\n\n const handleActionClick = useCallback(\n (action: any, index: number) => {\n setActiveAction(index)\n switch (action?.blockType) {\n case HeaderNavigationActionBlockType.Search:\n event?.search?.()\n break\n case HeaderNavigationActionBlockType.Cart:\n event?.cart?.()\n break\n case HeaderNavigationActionBlockType.Profile:\n event?.profile?.()\n break\n case HeaderNavigationActionBlockType.Livestream:\n event?.livestream?.()\n break\n default:\n return () => {}\n }\n },\n [event]\n )\n\n return (\n <div className=\"desktop:gap-6 flex items-center gap-4\">\n {Array.isArray(actions) &&\n actions?.map((action: any, index: number) => (\n <div\n key={action.id}\n ref={action.blockType === HeaderNavigationActionBlockType.Profile ? ref : null}\n onClick={() => handleActionClick(action, index)}\n >\n <Text\n html={action.icon}\n className={cn('cursor-pointer size-5', { 'text-brand-0': activeStatus && activeAction === index })}\n />\n </div>\n ))}\n </div>\n )\n }\n)\n\nconst SecondaryHeader = ({ title, onMenuOpenClose, onMenuBackClick }: MobileSecondaryNavigationData) => {\n return (\n <div className=\"flex h-full items-center gap-3\">\n <LeftArrow className=\"size-5\" onClick={() => onMenuBackClick()} />\n <Text html={title} className=\"flex-1 text-center text-base font-bold leading-[1.4]\" />\n <Close className=\"size-5\" onClick={() => onMenuOpenClose()} />\n </div>\n )\n}\n\nconst MenuItem = ({\n label,\n href,\n onClick,\n active,\n icon,\n className,\n}: {\n label: string\n href?: string\n onClick?: () => void\n active?: boolean\n icon?: string\n className?: string\n}) => {\n return (\n <div className={cn('flex cursor-pointer items-center justify-between py-4', className)} onClick={onClick}>\n <Link href={href} asChild={!href} className=\"flex w-full items-center justify-between no-underline\">\n <div className=\"flex items-center gap-4\">\n <Text html={label} className={cn('text-sm font-bold leading-[1.4]', { underline: icon })} />\n {icon && <Text html={icon} />}\n </div>\n <RightArrow className={cn('size-5 laptop:size-4', { 'rotate-90': active })} />\n </Link>\n </div>\n )\n}\n\nexport default withLayout(HeaderNavigation)\n"],
5
+ "mappings": "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",
6
+ "names": ["Fragment", "jsx", "jsxs", "React", "forwardRef", "useCallback", "useEffect", "useImperativeHandle", "useMemo", "useRef", "useState", "Picture", "Text", "Button", "Container", "Link", "Heading", "withLayout", "cn", "atobID", "NavProvider", "useNavContext", "HeaderNavigationMenu", "HeaderNavigationBlockType", "HeaderNavigationActionBlockType", "debounce", "jump", "useGSAP", "gsap", "WithSidebar", "WithSupports", "WithMulticol", "WithGroupCategory", "Menu", "Close", "User", "RightArrow", "LeftArrow", "DownArrow", "Polygon", "NavigationSearch", "HeaderNavigation", "props", "ref", "headerNavigation", "buildProps", "event", "profile", "theme", "isTop", "searchResult", "onSearch", "isSearching", "keywords", "onPrimaryNavClick", "onSeriesProductClick", "onSidebarNavClick", "searchRef", "searchOpen", "setSearchOpen", "headerHidden", "setHeaderHidden", "changeHeaderBackground", "setChangeHeaderBackground", "isMobile", "setIsMobile", "headerRef", "resizeWindow", "offsetWidth", "searchPage", "item", "DesktopNavigation", "MobileNavigation", "value", "data", "onNavItemClick", "className", "downdownHover", "setDowndownHover", "groupCategories", "categoriesItem", "setCategoriesItem", "navStatusArray", "setNavStatusArray", "profileRef", "userProfileOpen", "setUserProfileOpen", "dropdownRef", "navItemRefs", "categories", "groupItem", "groupIndex", "_", "index", "currentNavItem", "handleNavItemClick", "e", "position", "prev", "handleNavMenuClose", "currentBlockTypeCategories", "SidebarDropdownComp", "SidebarDropdown", "MulticolDropdownComp", "MulticolDropdown", "SupportsDropdownComp", "SupportsDropdown", "DropdownComp", "actions", "profileAction", "handleProfileClick", "profileRefElement", "Logo", "Actions", "el", "MenuItem", "sidebarCategoriesMetadata", "seriesMetadata", "expandedSubcategory", "setExpandedSubcategory", "activeSubSubcategoryIndex", "setActiveSubSubcategoryIndex", "sidebarDropdownRef", "initExpandedSubcategory", "subcategories", "withSubSubCategoriesIndex", "withoutSubSubCategoriesIndex", "expandedStates", "matchSeriesMetadata", "subCategory", "currentSeriesMetadata", "category", "activeSubSubcategory", "currentActiveSeriesMetadata", "handleSubcategoryOpen", "subcategoryItem", "handleSubSubcategoryOpen", "subSubindex", "subItem", "hasSubSubCategory", "subSubItem", "seriesItem", "seriesIndex", "product", "SeriesProductItem", "multicolMetadata", "multicolDropdownRef", "MulticolItem", "supportsMetadata", "currentNavItemRef", "supportsDropdownRef", "navItemReact", "setNavItemReact", "supportsDropdownHeight", "setSupportsDropdownHeight", "rect", "debouncedHandleResize", "supportItem", "isCollection", "seriesLabel", "productData", "variant", "listingLink", "tags", "tag", "allPicture", "columnItem", "currentMenu", "setCurrentMenu", "subSubCategory", "mobileMenuOpen", "setMobileMenuOpen", "menuInnerHeight", "setMenuInnerHeight", "mobileMenuRef", "MobileSupportMenuComp", "MobileSupportMenu", "MobileSidebarMenuComp", "MobileSidebarMenu", "MobileMulticolMenuComp", "MobileMulticolMenu", "MobileCategoriesMenuComp", "handleSecondaryMenuClose", "menuActions", "MobileCategoriesHeaderComp", "PrimaryHeader", "SecondaryHeader", "handlePrimaryMenuClick", "MobilePrimaryMenu", "onPrimaryMenuClick", "ProfileComp", "setSubSubCategory", "setCurrentSeriesMetadata", "expandedSeriesCategories", "setExpandedSeriesCategories", "handleSubSubCategoryClick", "subIndex", "curSeriesMetadata", "defaultGuide", "subSubCategoryItem", "SubSubCategoryItemComp", "i", "SubSubCategoryContentComp", "onSubSubCategoryItemClick", "expanded", "pIndex", "profileOpen", "setProfileOpen", "menuOpen", "onMenuOpenClose", "onMenuOpenClick", "payloadData", "activeStatus", "activeAction", "setActiveAction", "handleActionClick", "action", "title", "onMenuBackClick", "label", "href", "onClick", "active", "icon", "HeaderNavigation_default"]
7
7
  }