@contentful/f36-navbar 5.0.0-alpha.38 → 5.0.0-alpha.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/esm/index.js
CHANGED
|
@@ -21,7 +21,7 @@ var qe=Object.defineProperty,Ze=Object.defineProperties;var Ye=Object.getOwnProp
|
|
|
21
21
|
${s.orange300} 78.57%,
|
|
22
22
|
transparent 78.57%,
|
|
23
23
|
transparent 100%
|
|
24
|
-
)`,backgroundSize:e?"inherit":"9px 9px",backgroundPosition:"bottom"}),innerSpaceEnv:css({height:"26px"}),switcherSpaceName:css({"&:has(> span:last-child:nth-child(3))":{minWidth:"12ch"},maxWidth:"15vw",[l.xsmall]:{maxWidth:"50vw"},[l.small]:{maxWidth:"10vw"},[l.medium]:{maxWidth:"50vw"}}),switcherEnvIcon:css({[l.small]:{width:"16px",height:"16px"}}),switcherSpaceNameTruncation:css({flexShrink:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"})}),Ho=e=>({padding:"0",paddingRight:s.spacingXs,color:e?s.green700:s.orange700,backgroundColor:e?s.green100:s.orange100,border:`${Z}px solid ${e?s.green400:s.orange400}`,"&:hover, &:active":{backgroundColor:e?s.green200:s.orange200}});function Ve({isAlias:e,envVariant:o,className:t}){let r=o==="master",n=r?s.green700:s.orange700;return r
|
|
24
|
+
)`,backgroundSize:e?"inherit":"9px 9px",backgroundPosition:"bottom"}),innerSpaceEnv:css({height:"26px"}),switcherSpaceName:css({"&:has(> span:last-child:nth-child(3))":{minWidth:"12ch"},maxWidth:"15vw",[l.xsmall]:{maxWidth:"50vw"},[l.small]:{maxWidth:"10vw"},[l.medium]:{maxWidth:"50vw"}}),switcherEnvIcon:css({[l.small]:{width:"16px",height:"16px"}}),switcherSpaceNameTruncation:css({flexShrink:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"})}),Ho=e=>({padding:"0",paddingRight:s.spacingXs,color:e?s.green700:s.orange700,backgroundColor:e?s.green100:s.orange100,border:`${Z}px solid ${e?s.green400:s.orange400}`,"&:hover, &:active":{backgroundColor:e?s.green200:s.orange200}});function Ve({isAlias:e,envVariant:o,className:t}){let r=o==="master",n=r?s.green700:s.orange700;return r?i.createElement(RocketLaunchIcon,{color:n,className:t,size:"medium"}):e?i.createElement(EnvironmentAliasIcon,{color:n,className:t,size:"medium"}):i.createElement(EnvironmentIcon,{color:n,className:t,size:"medium"})}var z=({estimatedWidth:e})=>i.createElement(SkeletonContainer,{svgWidth:e,svgHeight:18,backgroundColor:s.gray300,foregroundColor:s.gray200},i.createElement(SkeletonText,{lineHeight:18,numberOfLines:1,radiusX:s.borderRadiusSmall,radiusY:s.borderRadiusSmall}));function qo(e,{start:o=5,end:t=6}={}){if(e.length<=o+t)return [e,void 0,void 0];let r=o>0?e.slice(0,o):"",n=t>0?e.slice(-t):"",a=e.slice(o,e.length-t);return [r,a,n]}var Re=({value:e,styles:o})=>{let[t,r,n]=typeof e=="string"?qo(e):[];return t!==void 0?i.createElement(Text,{className:o.text},i.createElement("span",null,t),r&&i.createElement("span",{className:o.switcherSpaceNameTruncation},r),n&&i.createElement("span",null,n)):i.createElement(Text,{className:o.text},e)};function Zo(e,o){let f=e,{children:t,className:r,envVariant:n,isAlias:a,testId:p="cf-ui-navbar-switcher",ariaLabel:c="Space and Environment Navigation",space:u,environment:h,isLoading:S}=f,w=v(f,["children","className","envVariant","isAlias","testId","ariaLabel","space","environment","isLoading"]),I=n==="master",d=Fe({isMaster:I});return i.createElement(Button,x(b({},w),{"aria-label":c,className:cx(d.navbarSwitcher({showSpaceEnv:!S&&!t}),r),endIcon:n&&i.createElement(Ve,{envVariant:n,isAlias:a,className:d.switcherEnvIcon}),ref:o,testId:p,variant:"transparent"}),i.createElement(Flex,{alignItems:"center",className:d.switcherSpaceName,flexDirection:"row"},S?i.createElement(z,{estimatedWidth:148}):i.createElement(i.Fragment,null,t?i.createElement(Text,{className:d.text},t):i.createElement(Flex,{gap:s.spacingXs},i.createElement(Box,{className:d.innerRectangle}),i.createElement(Flex,{className:d.innerSpaceEnv,gap:s.spacing2Xs,alignItems:"center"},i.createElement(Re,{value:u,styles:d}),h&&i.createElement(i.Fragment,null,i.createElement(CaretRightIcon,{size:"tiny",color:I?s.green700:s.orange700}),i.createElement(Re,{envVariant:n,value:h,styles:d})))))))}var pe=i.forwardRef(Zo);var De=()=>({navbarBadge:css({display:"flex",justifyContent:"center",alignItems:"center",background:"none",border:`1px solid ${s.purple600}`,margin:0,outline:"none",fontSize:s.fontSizeS,lineHeight:s.lineHeightS,fontWeight:s.fontWeightMedium,textAlign:"center",padding:`0 ${s.spacingXs}`,textDecoration:"none",color:`${s.purple600}!important`,borderRadius:"1.75rem",userSelect:"none"})});var Ko="div";function Qo(e,o){let u=e,{as:t=Ko,children:r,className:n,testId:a="cf-ui-navbar-badge"}=u,p=v(u,["as","children","className","testId"]),c=De();return i.createElement(t,x(b({},p),{ref:o,className:cx(c.navbarBadge,n),"data-test-id":a}),r)}var ze=i.forwardRef(Qo);var Ue=()=>({navbarMenuItem:css({display:"flex",justifyContent:"flex-start",alignItems:"center",gap:s.spacingXs}),menuList:css({minWidth:0,marginLeft:"-24px",marginTop:"10px",[l.xsmall]:{minWidth:"250px",margin:0}})});var je=e=>{let{title:o,icon:t,children:r,testId:n="cf-ui-navbar-submenu-list",onOpen:a,onClose:p}=e,c=Ue();return i.createElement(Menu.Submenu,{onOpen:a,onClose:p},i.createElement(Menu.SubmenuTrigger,null,i.createElement(Flex,{className:c.navbarMenuItem},t&&i.createElement(k,{icon:t}),i.createElement("span",null,o))),i.createElement(Menu.List,{className:c.menuList,testId:n},r))};var N=Se;N.Item=te;N.ItemSkeleton=re;N.MenuItem=ne;N.MenuItemSkeleton=ae;N.MenuDivider=MenuDivider;N.MenuSectionTitle=MenuSectionTitle;N.Submenu=je;N.Switcher=pe;N.SwitcherSkeleton=z;N.Account=ee;N.AccountSkeleton=oe;N.Badge=ze;
|
|
25
25
|
|
|
26
26
|
export { be as NAVBAR_HEIGHT, N as Navbar, Ce as getNavbarItemActiveStyles };
|
|
27
27
|
//# sourceMappingURL=out.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/constants.ts","../../src/CompoundNavbar.ts","../../src/Navbar.tsx","../../src/Navbar.styles.ts","../../src/utils.styles.ts","../../src/icons/CaretIcon.tsx","../../src/icons/ContentfulLogoIcon.tsx","../../src/NavbarMenu/NavbarMenu.tsx","../../src/NavbarMenu/NavbarMenu.styles.ts","../../src/NavbarAccount/NavbarAccount.tsx","../../src/NavbarAccount/NavbarAccount.styles.ts","../../src/NavbarAccount/NavbarAccountSkeleton.tsx","../../src/NavbarItem/NavbarItem.tsx","../../src/NavbarItem/NavbarItem.styles.ts","../../src/NavbarItemIcon/NavbarItemIcon.tsx","../../src/NavbarItemIcon/NavbarItemIcon.styles.ts","../../src/NavbarItem/NavbarItemSkeleton.tsx","../../src/NavbarMenuItem/NavbarMenuItem.tsx","../../src/NavbarMenuItem/NavbarMenuItem.styles.ts","../../src/NavbarMenuItem/NavbarMenuItemSkeleton.tsx","../../src/NavbarSwitcher/NavbarSwitcher.tsx","../../src/NavbarSwitcher/NavbarSwitcher.styles.ts","../../src/NavbarSwitcher/NavbarEnvVariant.tsx","../../src/NavbarSwitcher/NavbarSwitcherSkeleton.tsx","../../src/NavbarBadge/NavbarBadge.tsx","../../src/NavbarBadge/NavbarBadge.styles.ts","../../src/NavbarSubmenu/NavbarSubmenu.tsx","../../src/NavbarSubmenu/NavbarMenu.styles.ts"],"names":["NAVBAR_HEIGHT","MenuDivider","MenuSectionTitle","Flex","React","css","tokens","mqs","getGlowOnFocusStyles","shadow","increaseHitArea","minSize","getNavbarStyles","contentMaxWidth","variant","generateComponentWithVariants","generateIconComponent","IconVariant","CaretIcon","ContentfulLogoIcon","cx","Button","ListIcon","Menu","getNavbarMenuStyles","NavbarMenu","props","trigger","children","testId","onOpen","onClose","styles","_Navbar","ref","_a","logo","promotions","switcher","mainNavigation","secondaryNavigation","account","mobileNavigation","className","otherProps","__objRest","__spreadProps","__spreadValues","Navbar","notificationVarianColorMap","getNavbarAccountStyles","Avatar","Tooltip","_NavbarAccount","avatar","label","initials","username","hasNotification","notificationVariant","NavbarAccount","SkeletonContainer","SkeletonImage","NavbarAccountSkeleton","ariaLabel","hexToRGBA","borderWidth","getNavbarItemActiveStyles","commonItemStyles","getNavbarItemStyles","hasTitle","getNavbarItemSkeletonStyles","getNavbarItemIconStyles","NavbarItemIcon","icon","isActive","iconClassName","size","rest","NAVBAR_ITEM_DEFAULT_TAG","_NavbarItem","Comp","title","isMenuTrigger","isNavbarItemHasMenu","showCaret","item","NavbarItem","SkeletonText","NavbarItemSkeleton","estimatedWidth","getNavbarMenuItemStyles","ArrowSquareOutIcon","NAVBAR_MENU_ITEM_DEFAULT_TAG","_NavbarMenuItem","itemIsExternalLink","isExternalLink","externalIcon","NavbarMenuItem","SkeletonBodyText","NavbarMenuItemSkeleton","BORDER_WIDTH","getNavbarSwitcherStyles","isMaster","showSpaceEnv","getEnvVariantColor","Box","EnvironmentAliasIcon","EnvironmentIcon","RocketLaunchIcon","NavbarEnvVariant","isAlias","envVariant","color","NavbarSwitcherSkeleton","CaretRightIcon","Text","splitString","string","startLength","endLength","start","end","remainder","SwitcherLabel","value","middle","_NavbarSwitcher","space","environment","isLoading","NavbarSwitcher","getNavbarBadgeStyles","NAVBAR_BADGE_DEFAULT_TAG","_NavbarBadge","NavbarBadge","getNavbarSubmenuStyles","NavbarSubmenu"],"mappings":"8lBAAO,IAAMA,GAAgB,GCA7B,OAAS,eAAAC,OAAmB,uBAC5B,OAAS,oBAAAC,OAAwB,uBCDjC,OAA6C,QAAAC,MAAY,uBACzD,OAAOC,MAAW,QCDlB,OAAS,OAAAC,MAAW,UACpB,OAAOC,MAAY,yBCDnB,OAAOA,OAAY,yBAKZ,IAAMC,EAAoB,CAC/B,OAAQ,4BACR,MAAO,4BACP,OAAQ,6BACR,MAAO,6BACP,OAAQ,4BACV,EAEaC,EAAuB,CAClCC,EAAiBH,GAAO,eACT,CACf,UAAW,CACT,UAAWG,CACb,EACA,8BAA+B,CAC7B,UAAW,OACb,EACA,kBAAmB,CACjB,UAAWA,CACb,CACF,GAEaC,EAAkB,CAACC,EAAU,UAAuB,CAC/D,SAAU,UACV,SAAU,WACV,UAAW,CACT,UAAWA,EACX,SAAUA,EACV,SAAU,WACV,MAAO,OACP,QAAS,KACT,KAAM,MACN,IAAK,MACL,UAAW,uBACb,CACF,GDlCO,IAAMC,GAAkB,CAAC,CAC9B,gBAAAC,EACA,QAAAC,CACF,KAAyD,CACvD,UAAWT,EAAI,CACb,eAAgB,SAChB,gBAAiBC,EAAO,QACxB,MAAO,MACT,CAAC,EACD,KAAMD,EAAI,CACR,QAAS,OACT,CAACE,EAAI,KAAK,EAAG,CACX,QAAS,QACT,OAAQ,OACR,MAAO,MACT,CACF,CAAC,EAED,WAAYF,EAAI,CACd,MAAO,OACP,SAAUS,IAAY,OAAS,SAAWD,EAC1C,QAAS,GAAGP,EAAO,QAAQ,IAAIA,EAAO,QAAQ,GAC9C,OAAQ,GAAG,EAAa,KACxB,CAACC,EAAI,KAAK,EAAG,CACX,QAAS,GAAGD,EAAO,QAAQ,IAAIA,EAAO,QAAQ,EAChD,CACF,CAAC,EAED,eAAgBD,EAAI,CAClB,QAAS,OACT,CAACE,EAAI,KAAK,EAAG,CACX,QAAS,MACX,CACF,CAAC,EAED,uBAAwBF,EAAI,CAC1B,QAAS,OACT,UAAW,UACX,OAAQ,OACR,QAAS,SACT,aAAc,OACd,CAACE,EAAI,KAAK,EAAG,CACX,QAAS,MACX,CACF,CAAC,EACD,qBAAsBF,EAAI,CACxB,MAAO,OACP,MAAO,MACT,CAAC,EAED,2BAA4BA,EAAI,CAC9B,wBAAyB,CACvB,QAAS,OACT,CAACE,EAAI,MAAM,EAAG,CACZ,QAAS,MACX,CACF,CACF,CAAC,EAED,QAASF,EAAI,CACX,QAAS,OACT,CAACE,EAAI,MAAM,EAAG,CACZ,QAAS,MACX,CACF,CAAC,CACH,GEvEA,OAAOH,MAAW,QAClB,OAAOE,OAAY,yBACnB,OACE,iCAAAS,GACA,yBAAAC,GACA,eAAAC,OACK,uBAEA,IAAMC,GAAYH,GAA8B,CACrD,SAAU,CACR,CAACE,GAAY,MAAM,EAAGD,GAAsB,CAC1C,KACEZ,EAAA,cAAAA,EAAA,cACEA,EAAA,cAAC,QACC,EAAE,mnBACF,KAAME,GAAO,QACf,CACF,EAEF,QAAS,WACX,CAAC,EACD,CAACW,GAAY,OAAO,EAAGD,GAAsB,CAC3C,KACEZ,EAAA,cAAAA,EAAA,cACEA,EAAA,cAAC,QACC,EAAE,mnBACF,KAAME,GAAO,QACf,CACF,EAEF,QAAS,WACX,CAAC,CACH,CACF,CAAC,ECjCD,OAAOF,MAAW,QAClB,OAAS,yBAAAY,OAA6B,uBAE/B,IAAMG,GAAmCH,GAAsB,CACpE,KAAM,qBACN,QAAS,YACT,KACEZ,EAAA,cAAAA,EAAA,cACEA,EAAA,cAAC,QACC,KAAK,UACL,EAAE,0OACJ,EACAA,EAAA,cAAC,QACC,KAAK,UACL,EAAE,+OACJ,EACAA,EAAA,cAAC,QACC,KAAK,UACL,EAAE,0LACJ,EACAA,EAAA,cAAC,QACC,KAAK,UACL,EAAE,mGACJ,EACAA,EAAA,cAAC,QACC,KAAK,UACL,EAAE,qIACJ,CACF,CAEJ,CAAC,EJ1BD,OAAS,MAAAgB,OAAU,UACnB,OAAS,UAAAC,OAAc,yBACvB,OAAS,YAAAC,OAAgB,wBKNzB,OAAOlB,MAAW,QAClB,OAAS,QAAAmB,MAAgD,uBCDzD,OAAS,OAAAlB,OAAW,UAGb,IAAMmB,GAAsB,KAAO,CACxC,SAAUnB,GAAI,CACZ,SAAU,EACV,CAACE,EAAI,MAAM,EAAG,CACZ,SAAU,OACZ,CACF,CAAC,CACH,GDAO,IAAMkB,EAAcC,GAA2B,CACpD,GAAM,CACJ,QAAAC,EACA,SAAAC,EACA,OAAAC,EAAS,yBACT,OAAAC,EACA,QAAAC,CACF,EAAIL,EACEM,EAASR,GAAoB,EAEnC,OACEpB,EAAA,cAACmB,EAAA,CAAK,OAAQO,EAAQ,QAASC,GAC7B3B,EAAA,cAACmB,EAAK,QAAL,KAAcI,CAAQ,EACvBvB,EAAA,cAACmB,EAAK,KAAL,CAAU,UAAWS,EAAO,SAAU,OAAQH,GAC5CD,CACH,CACF,CAEJ,ELwBA,SAASK,GAAQP,EAAiCQ,EAA6B,CAC7E,IAaIC,EAAAT,EAZF,MAAAU,EACA,WAAAC,EACA,SAAAC,EACA,eAAAC,EACA,oBAAAC,EACA,QAAAC,EACA,iBAAAC,EACA,UAAAC,EACA,gBAAA9B,EAAkB,OAClB,OAAAgB,EAAS,eACT,QAAAf,EAAU,MAhEd,EAkEMqB,EADCS,EAAAC,EACDV,EADC,CAXH,OACA,aACA,WACA,iBACA,sBACA,UACA,mBACA,YACA,kBACA,SACA,YAGIH,EAASpB,GAAgB,CAAE,gBAAAC,EAAiB,QAAAC,CAAQ,CAAC,EAE3D,OACEV,EAAA,cAACD,EAAA2C,EAAAC,EAAA,GACKH,GADL,CAEC,IAAKV,EACL,OAAQL,EACR,UAAWT,GAAGY,EAAO,UAAWW,CAAS,EACzC,GAAG,WAEHvC,EAAA,cAACD,EAAA,CACC,GAAG,MACH,UAAW6B,EAAO,WAClB,eAAe,gBACf,IAAI,aAEJ5B,EAAA,cAACD,EAAA,CAAK,WAAW,SAAS,IAAI,YAC3BiC,GAAQhC,EAAA,cAACe,GAAA,CAAmB,UAAWa,EAAO,KAAM,EACpDU,GACCtC,EAAA,cAACqB,EAAA,CACC,QACErB,EAAA,cAACiB,GAAA,CACC,UAAWW,EAAO,uBAClB,UAAW5B,EAAA,cAACkB,GAAA,CAAS,KAAK,SAAS,GACpC,MAED,GAGDoB,CACH,EAEDH,GACCnC,EAAA,cAACD,EAAA,CACC,UAAW6B,EAAO,eAClB,aAAW,kBACX,IAAI,aAEHO,CACH,CAEJ,EACAnC,EAAA,cAACD,EAAA,CAAK,WAAW,SAAS,IAAI,aAC5BC,EAAA,cAACD,EAAA,CAAK,WAAW,UAAUkC,CAAW,EACtCjC,EAAA,cAACD,EAAA,CAAK,WAAW,UAAUmC,CAAS,EACpClC,EAAA,cAACD,EAAA,CAAK,WAAW,SAAS,IAAI,aAC3BqC,GACCpC,EAAA,cAACD,EAAA,CACC,UAAW6B,EAAO,2BAClB,aAAW,uBACX,IAAI,aAEHQ,CACH,EAEDC,GACCrC,EAAA,cAACD,EAAA,CACC,UAAW6B,EAAO,QAClB,aAAW,qBACX,IAAI,aAEHS,CACH,CAEJ,CACF,CACF,CACF,CAEJ,CAEO,IAAMO,GAAS5C,EAAM,WAAW6B,EAAO,EO1I9C,OAAO7B,MAAW,QAClB,OAAS,MAAAgB,OAAU,UCDnB,OAAS,OAAAf,OAAW,UACpB,OAAOC,MAAY,yBAInB,IAAM2C,GAGF,CACF,QAAS3C,EAAO,aAChB,SAAUA,EAAO,cACjB,KAAMA,EAAO,OACf,EAEa4C,GAAyB,KAAO,CAC3C,cAAe7C,GACb,CACE,OAAQ,UACR,WAAY,OACZ,SAAU,WACV,QAAS,OACT,SAAU,UACV,aAAc,MACd,OAAQ,OACR,QAAS,EACT,cAAe,CACb,OAAQ,iBACV,CACF,EACAG,EAAqB,EACrBE,EAAgB,CAClB,EACA,iBAAmBI,GACjBT,GAAI,CACF,SAAU,WACV,IAAK,EACL,MAAO,EACP,OAAQC,EAAO,SACf,MAAOA,EAAO,SACd,aAAc,MACd,OAAQ,aAAaA,EAAO,OAAO,GACnC,gBAAiB2C,GAA2BnC,CAAO,EACnD,UAAW,uBACX,OAAQ,CACV,CAAC,CACL,GDpCA,OAAS,QAAAX,OAAY,uBACrB,OAAS,UAAAgD,OAAc,yBACvB,OAAS,WAAAC,OAAe,0BAoBxB,SAASC,GACP3B,EACAQ,EACA,CACA,IAWIC,EAAAT,EAVF,UAAAE,EACA,UAAAe,EACA,OAAAd,EAAS,+BACT,OAAAyB,EACA,MAAAC,EAAQ,eACR,SAAAC,EACA,SAAAC,EACA,gBAAAC,EACA,oBAAAC,EAAsB,SA5C1B,EA8CMxB,EADCS,EAAAC,EACDV,EADC,CATH,WACA,YACA,SACA,SACA,QACA,WACA,WACA,kBACA,wBAGIH,EAASkB,GAAuB,EAEtC,OACE9C,EAAA,cAACqB,EAAA,CACC,QACErB,EAAA,cAAC,WACCA,EAAA,cAACgD,GAAA,CAAQ,UAAU,SAAS,QAASG,EAAO,UAAW,IAAK,UAAS,IACnEnD,EAAA,cAACD,GAAA2C,EAAAC,EAAA,CACC,GAAG,UACCH,GAFL,CAGC,IAAKV,EACL,UAAWd,GAAGY,EAAO,cAAeW,CAAS,EAC7C,OAAQd,EACR,WAAW,SACX,aAAY0B,IAEZnD,EAAA,cAAC+C,GAAA,CACC,IAAKG,EACL,SAAUE,EACV,KAAK,QACL,QAAQ,OACV,EAECE,EACCtD,EAAA,cAAC,QACC,UAAW4B,EAAO,iBAAiB2B,CAAmB,EACxD,EACE,IACN,CACF,CACF,GAGD/B,CACH,CAEJ,CAEO,IAAMgC,GAAgBxD,EAAM,WAAWiD,EAAc,EErF5D,OAAOjD,OAAW,QAClB,OAAS,qBAAAyD,GAAmB,iBAAAC,OAAqB,2BACjD,OAAOxD,OAAY,yBAEZ,SAASyD,GAAsB,CAAE,UAAAC,CAAU,EAA2B,CAC3E,OACE5D,GAAA,cAACyD,GAAA,CACC,SAAU,GACV,UAAW,GACX,UAAWG,EACX,gBAAiB1D,GAAO,QACxB,gBAAiBA,GAAO,SAExBF,GAAA,cAAC0D,GAAA,CAAc,MAAO,GAAI,OAAQ,GAAI,QAAS,GAAI,QAAS,GAAI,CAClE,CAEJ,CChBA,OAAO1D,MAAW,QAClB,OAAS,MAAAgB,OAAU,UCDnB,OAAS,OAAAf,MAAW,UACpB,OAAOC,MAAY,yBACnB,OAAS,aAAA2D,OAAiB,wBAG1B,IAAMC,EAAc,MAEPC,GAA4B,IACvC9D,EAAI,CACF,gBAAiBC,EAAO,QACxB,OAAQ,GAAG4D,CAAW,UAAU5D,EAAO,OAAO,GAC9C,MAAOA,EAAO,QACd,UAAW,CACT,gBAAiBA,EAAO,OAC1B,CACF,CAAC,EAEG8D,GAAmB,CACvB,QAAS,OACT,eAAgB,SAChB,QAAS,QAAQ9D,EAAO,UAAU,MAAM4D,CAAW,UAAU5D,EAAO,SAAS,MAAM4D,CAAW,IAC9F,WAAY,SACZ,WAAY,OACZ,IAAK5D,EAAO,UACd,EAEa+D,GAAsB,CAAC,CAAE,SAAAC,CAAS,KAA8B,CAC3E,WAAYjE,EACV+D,GACA,CACE,WAAY,OACZ,WAAY,OACZ,OAAQ,GAAGF,CAAW,qBACtB,OAAQ,EACR,QAAS,OACT,SAAU5D,EAAO,UACjB,WAAYA,EAAO,YACnB,WAAYA,EAAO,iBACnB,SAAU,WACV,UAAW,OACX,WAAY,SACZ,OAAQ,UACR,QAAS,OACT,eAAgB,OAChB,MAAOA,EAAO,QACd,UAAW,aACX,WAAY,SAASA,EAAO,uBAAuB,IAAIA,EAAO,2BAA2B,GACzF,aAAcA,EAAO,mBACrB,OAAQ,OAER,QAASgE,EACL,OACA,QAAQhE,EAAO,UAAU,MAAM4D,CAAW,IAE9C,UAAW,CACT,gBAAiBD,GAAU3D,EAAO,QAAS,GAAI,CACjD,EAEA,kBAAmB,CACjB,QAAS,EACT,MAAO,GACT,EAEA,mBAAoB,CAClB,gBAAiB,0BACnB,EACA,aAAc,CACZ,OAAQ,MACV,EAEA,QAAS,CACP,WAAY,QAAQA,EAAO,uBAAuB,IAAIA,EAAO,2BAA2B,EAC1F,EACA,oBAAqB,CACnB,OAAQA,EAAO,aACjB,CACF,EACAE,EAAqB,EACrBE,EAAgB,CAClB,EACA,sBAAuBL,EAAI,CACzB,aAAcC,EAAO,SACvB,CAAC,EACD,SAAU6D,GAA0B,EACpC,KAAM9D,EAAI,CACR,OAAQ,OACR,MAAO,OACP,UAAW,cACX,QAASiE,EAAW,OAAS,QAC7B,CAAC/D,EAAI,KAAK,EAAG,CACX,OAAQ,OACR,MAAO,OACP,QAAS+D,EAAW,QAAU,KAChC,EACA,CAAC/D,EAAI,KAAK,EAAG,CACX,QAAS,OACX,CACF,CAAC,CACH,GAEagE,GAA8B,KAAO,CAChD,aAAclE,EAAI+D,EAAgB,CACpC,GCtGA,OAAOhE,OAAW,QCAlB,OAAS,OAAAC,OAAW,UACpB,OAAOC,MAAY,yBAEZ,IAAMkE,GAA0B,KAAO,CAC5C,eAAgBnE,GAAI,CAClB,iCAAkC,CAChC,WAAYC,EAAO,UACrB,EACA,OAAQ,CACN,aAAcA,EAAO,kBACrB,SAAUA,EAAO,SACjB,UAAWA,EAAO,QACpB,CACF,CAAC,CACH,GDXA,OAAS,MAAAc,OAAU,UAOZ,IAAMqD,EAAiB,CAAC,CAC7B,KAAAC,EACA,SAAAC,EACA,UAAAhC,CACF,IAA2B,CACzB,IAAoDR,EAAAuC,EAAK,MAAjD,WAAWE,EAAe,KAAAC,CAfpC,EAesD1C,EAAT2C,EAAAjC,EAASV,EAAT,CAAnC,YAA0B,SAC5BH,EAASwC,GAAwB,EAEvC,OAAOpE,GAAM,aAAasE,EAAM3B,EAAA,CAC9B,UAAW3B,GAAGwD,EAAe5C,EAAO,eAAgBW,CAAS,EAC7D,KAAMkC,GAAQ,QACd,SAAAF,GACGG,EACJ,CACH,EFTA,OAAS,WAAA1B,OAAe,0BAExB,IAAM2B,GAA0B,SAyBhC,SAASC,GACPtD,EACAQ,EACA,CACA,IAYIC,GAAAT,EAXF,IAAIuD,EAAOF,GACX,KAAAL,EACA,MAAAnB,EACA,MAAA2B,EACA,SAAAtD,EACA,UAAAe,EACA,SAAAgC,EACA,OAAA9C,EAAS,oBACT,OAAAC,EACA,QAAAC,CAxDJ,EA0DMI,GADCS,EAAAC,EACDV,GADC,CAVH,KACA,OACA,QACA,QACA,WACA,YACA,WACA,SACA,SACA,YAGIH,EAASqC,GAAoB,CAAE,SAAU,CAAC,CAACa,CAAM,CAAC,EAClDC,EAAgBC,GAAoB1D,CAAK,EACzC2D,EAAYH,GAASC,EACvBG,EACFlF,EAAA,cAAC6E,EAAAnC,EAAAC,EAAA,GACKH,GADL,CAEC,IAAKV,EACL,eAAcL,EACd,UAAWT,GAAGY,EAAO,WAAYW,EAAW,CAC1C,CAACX,EAAO,qBAAqB,EAAGqD,EAChC,CAACrD,EAAO,QAAQ,EAAG2C,CACrB,CAAC,EACD,aAAYO,EAAQ,GAAK3B,IAExBmB,GACCtE,EAAA,cAACqE,EAAA,CACC,UAAWzC,EAAO,KAClB,KAAM0C,EACN,SAAUC,EACZ,EAEDO,GAAS9E,EAAA,cAAC,YAAM8E,CAAM,EACtBG,GAAajF,EAAA,cAACc,GAAA,CAAU,KAAK,OAAO,SAAUyD,EAAU,CAC3D,EAaF,OAVKO,IACHI,EACElF,EAAA,cAAC,WACCA,EAAA,cAACgD,GAAA,CAAQ,QAASG,EAAO,UAAU,SAAS,UAAW,IAAK,UAAS,IAClE+B,CACH,CACF,GAIAH,EAEA/E,EAAA,cAACqB,EAAA,CACC,QAAS6D,EACT,OAAQzD,EACR,OAAQC,EACR,QAASC,GAERH,CACH,EAIG0D,CACT,CAEA,IAAMF,GACJ1D,GAEA,EAAQA,EAAM,SAEH6D,GAGTnF,EAAM,WAAW4E,EAAW,EIvHhC,OAAO5E,OAAW,QAClB,OAAS,qBAAAyD,GAAmB,gBAAA2B,OAAoB,2BAChD,OAAOlF,MAAY,yBAGZ,IAAMmF,GAAqB,CAAC,CACjC,eAAAC,CACF,IAEM,CACJ,IAAM1D,EAASuC,GAA4B,EAE3C,OACEnE,GAAA,cAACyD,GAAA,CACC,UAAW7B,EAAO,aAClB,SAAU0D,EACV,UAAW,GACX,gBAAiBpF,EAAO,QACxB,gBAAiBA,EAAO,SAExBF,GAAA,cAACoF,GAAA,CACC,WAAY,GACZ,cAAe,EACf,UAAW,EACX,QAASlF,EAAO,kBAChB,QAASA,EAAO,kBAClB,CACF,CAEJ,EC7BA,OAAOF,MAAW,QAClB,OAAS,MAAAgB,OAAU,UCDnB,OAAS,OAAAf,OAAW,UACb,IAAMsF,GAA0B,KAAO,CAC5C,eAAgBtF,GAAI,CAClB,QAAS,OACT,eAAgB,aAChB,WAAY,QACd,CAAC,CACH,GDJA,OAAS,QAAAkB,OAAgC,uBAKzC,OAAS,sBAAAqE,OAA0B,wBAOnC,IAAMC,GAA+B,SAarC,SAASC,GACPpE,EACAQ,EACA,CACA,IAMIC,EAAAT,EALF,IAAIuD,EAAOY,GACX,KAAAnB,EACA,MAAAQ,EACA,UAAAvC,CApCJ,EAsCMR,EADCS,EAAAC,EACDV,EADC,CAJH,KACA,OACA,QACA,cAGIH,EAAS2D,GAAwB,EAEjCI,EAAqBC,GACzBtE,CACF,EAEA,OACEtB,EAAA,cAACmB,GAAK,KAALuB,EAAAC,EAAA,GACKH,GADL,CAEC,IAAKV,EACL,GAAI+C,EACJ,UAAW7D,GAAGY,EAAO,eAAgBW,CAAS,IAE7C+B,EACCtE,EAAA,cAACqE,EAAA,CAAe,KAAMC,EAAM,EAE5BqB,GAAsBE,GAExB7F,EAAA,cAAC,YAAM8E,CAAM,EACZR,GAAQqB,EAAqBE,GAAe,IAC/C,CAEJ,CAEA,IAAMA,GAAe7F,EAAA,cAACqE,EAAA,CAAe,KAAMrE,EAAA,cAACwF,GAAA,IAAmB,EAAI,EAE7DI,GAAkBtE,GACtBA,EAAM,KAAO,KAAOA,EAAM,SAAW,SAE1BwE,GAGT9F,EAAM,WAAW0F,EAAe,EEvEpC,OAAO1F,MAAW,QAClB,OAAS,QAAAmB,OAAY,uBACrB,OACE,oBAAA4E,GACA,qBAAAtC,GACA,iBAAAC,OACK,2BACP,OAAS,QAAA3D,OAAY,uBAErB,OAAOG,OAAY,yBAEZ,IAAM8F,GAAyB,CAAC,CACrC,UAAApC,CACF,IAGE5D,EAAA,cAACmB,GAAK,KAAL,KACCnB,EAAA,cAACD,GAAA,CAAK,WAAW,SAAS,IAAKG,GAAO,WACpCF,EAAA,cAACyD,GAAA,CAAkB,UAAW,GAAI,SAAU,IAC1CzD,EAAA,cAAC0D,GAAA,CAAc,MAAO,GAAI,OAAQ,GAAI,CACxC,EACA1D,EAAA,cAACyD,GAAA,CAAkB,UAAW,GAAI,SAAU,IAAK,UAAWG,GAC1D5D,EAAA,cAAC+F,GAAA,CAAiB,cAAe,EAAG,CACtC,CACF,CACF,ECzBF,OAAO/F,MAAW,QCAlB,OAAS,OAAAC,MAAW,UACpB,OAAOC,MAAY,yBACnB,OAAS,aAAA2D,OAAiB,wBAI1B,IAAMoC,EAAe,EAERC,GAA0B,CAAC,CACtC,SAAAC,CACF,KAEO,CACL,KAAMlG,EAAI,CACR,MAAO,eACP,WAAY,SACd,CAAC,EAED,eAAgB,CAAC,CAAE,aAAAmG,CAAa,IAC9BnG,EACE,CACE,MAAOC,EAAO,QACd,WAAY,EACZ,WAAYA,EAAO,iBACnB,SAAU,OACV,UAAW,QACX,QAAS,GAAGA,EAAO,UAAU,IAAIA,EAAO,SAAS,GACjD,UAAW,CACT,gBAAiB2D,GAAU3D,EAAO,QAAS,GAAI,CACjD,CACF,EACAkG,GAAgBC,GAAmBF,CAAQ,EAC3C/F,EAAqB,EACrBE,EAAgB,CAClB,EAEF,eAAgBL,EAAI,CAClB,MAAO,cAAcgG,CAAY,MACjC,oBAAqB,QAAQ/F,EAAO,kBAAkB,MAAM+F,CAAY,MACxE,uBAAwB,QAAQ/F,EAAO,kBAAkB,MAAM+F,CAAY,MAC3E,WAAYE,EACRjG,EAAO,SACP;AAAA;AAAA,UAEEA,EAAO,SAAS;AAAA;AAAA;AAAA,UAGhBA,EAAO,SAAS;AAAA,UAChBA,EAAO,SAAS;AAAA;AAAA;AAAA,SAItB,eAAgBiG,EAAW,UAAY,UACvC,mBAAoB,QACtB,CAAC,EAED,cAAelG,EAAI,CACjB,OAAQ,MACV,CAAC,EAED,kBAAmBA,EAAI,CAErB,wCAAyC,CACvC,SAAU,MACZ,EACA,SAAU,OACV,CAACE,EAAI,MAAM,EAAG,CACZ,SAAU,MACZ,EACA,CAACA,EAAI,KAAK,EAAG,CACX,SAAU,MACZ,EACA,CAACA,EAAI,MAAM,EAAG,CACZ,SAAU,MACZ,CACF,CAAC,EAED,gBAAiBF,EAAI,CACnB,CAACE,EAAI,KAAK,EAAG,CACX,MAAO,OACP,OAAQ,MACV,CACF,CAAC,EAED,4BAA6BF,EAAI,CAC/B,WAAY,EACZ,SAAU,SACV,aAAc,WACd,WAAY,QACd,CAAC,CACH,GAEMoG,GAAsBF,IAAuB,CACjD,QAAS,IACT,aAAcjG,EAAO,UACrB,MAAOiG,EAAWjG,EAAO,SAAWA,EAAO,UAC3C,gBAAiBiG,EAAWjG,EAAO,SAAWA,EAAO,UACrD,OAAQ,GAAG+F,CAAY,YACrBE,EAAWjG,EAAO,SAAWA,EAAO,SACtC,GAEA,oBAAqB,CACnB,gBAAiBiG,EAAWjG,EAAO,SAAWA,EAAO,SACvD,CACF,GDtGA,OAAS,UAAAe,OAAc,yBACvB,OACE,QAAAlB,GAIA,OAAAuG,OACK,uBACP,OAAS,MAAAtF,OAAU,UEVnB,OAAOhB,OAAW,QAElB,OACE,wBAAAuG,GACA,mBAAAC,GACA,oBAAAC,OACK,wBACP,OAAOvG,OAAY,yBASZ,SAASwG,GAAiB,CAC/B,QAAAC,EACA,WAAAC,EACA,UAAArE,CACF,EAA0B,CACxB,IAAM4D,EAAWS,IAAe,SAC1BC,EAAQV,EAAWjG,GAAO,SAAWA,GAAO,UAElD,OAAIiG,GAAY,CAACQ,EAEb3G,GAAA,cAACyG,GAAA,CAAiB,MAAOI,EAAO,UAAWtE,EAAW,KAAK,SAAS,EAE7DoE,EAEP3G,GAAA,cAACuG,GAAA,CAAqB,MAAOM,EAAO,UAAWtE,EAAW,KAAK,SAAS,EAIxEvC,GAAA,cAACwG,GAAA,CAAgB,MAAOK,EAAO,UAAWtE,EAAW,KAAK,SAAS,CAGzE,CCrCA,OAAOvC,OAAW,QAClB,OAAS,qBAAAyD,GAAmB,gBAAA2B,OAAoB,2BAChD,OAAOlF,MAAY,yBAEZ,IAAM4G,EAAyB,CAAC,CACrC,eAAAxB,CACF,IAGEtF,GAAA,cAACyD,GAAA,CACC,SAAU6B,EACV,UAAW,GACX,gBAAiBpF,EAAO,QACxB,gBAAiBA,EAAO,SAExBF,GAAA,cAACoF,GAAA,CACC,WAAY,GACZ,cAAe,EACf,QAASlF,EAAO,kBAChB,QAASA,EAAO,kBAClB,CACF,EHRF,OAAS,kBAAA6G,OAAsB,wBAC/B,OAAS,QAAAC,OAAY,6BACrB,OAAO9G,MAAY,yBAenB,SAAS+G,GACPC,EACA,CACE,MAAOC,EAAc,EACrB,IAAKC,EAAY,CACnB,EAAiC,CAAC,EAClC,CACA,GAAIF,EAAO,QAAUC,EAAcC,EACjC,MAAO,CAACF,EAAQ,OAAW,MAAS,EAGtC,IAAMG,EAAQF,EAAc,EAAID,EAAO,MAAM,EAAGC,CAAW,EAAI,GACzDG,EAAMF,EAAY,EAAIF,EAAO,MAAM,CAACE,CAAS,EAAI,GACjDG,EAAYL,EAAO,MAAMC,EAAaD,EAAO,OAASE,CAAS,EAErE,MAAO,CAACC,EAAOE,EAAWD,CAAG,CAC/B,CAqCA,IAAME,GAAgB,CAAC,CAAE,MAAAC,EAAO,OAAA7F,CAAO,IAA0B,CAC/D,GAAM,CAACyF,EAAOK,EAAQJ,CAAG,EACvB,OAAOG,GAAU,SAAWR,GAAYQ,CAAK,EAAI,CAAC,EAEpD,OAAOJ,IAAU,OACfrH,EAAA,cAACgH,GAAA,CAAK,UAAWpF,EAAO,MACtB5B,EAAA,cAAC,YAAMqH,CAAM,EACZK,GACC1H,EAAA,cAAC,QAAK,UAAW4B,EAAO,6BAA8B8F,CAAO,EAE9DJ,GAAOtH,EAAA,cAAC,YAAMsH,CAAI,CACrB,EAEAtH,EAAA,cAACgH,GAAA,CAAK,UAAWpF,EAAO,MAAO6F,CAAM,CAEzC,EAEA,SAASE,GACPrG,EACAQ,EACA,CACA,IAWIC,EAAAT,EAVF,UAAAE,EACA,UAAAe,EACA,WAAAqE,EACA,QAAAD,EACA,OAAAlF,EAAS,wBACT,UAAAmC,EAAY,mCACZ,MAAAgE,EACA,YAAAC,EACA,UAAAC,CAjHJ,EAmHM/F,EADCS,EAAAC,EACDV,EADC,CATH,WACA,YACA,aACA,UACA,SACA,YACA,QACA,cACA,cAGIoE,EAAWS,IAAe,SAC1BhF,EAASsE,GAAwB,CAAE,SAAAC,CAAS,CAAC,EAEnD,OACEnG,EAAA,cAACiB,GAAAyB,EAAAC,EAAA,GACKH,GADL,CAEC,aAAYoB,EACZ,UAAW5C,GACTY,EAAO,eAAe,CAAE,aAAc,CAACkG,GAAa,CAACtG,CAAS,CAAC,EAC/De,CACF,EACA,QACEqE,GACE5G,EAAA,cAAC0G,GAAA,CACC,WAAYE,EACZ,QAASD,EACT,UAAW/E,EAAO,gBACpB,EAGJ,IAAKE,EACL,OAAQL,EACR,QAAQ,gBAERzB,EAAA,cAACD,GAAA,CACC,WAAW,SACX,UAAW6B,EAAO,kBAClB,cAAc,OAEbkG,EACC9H,EAAA,cAAC8G,EAAA,CAAuB,eAAgB,IAAK,EAE7C9G,EAAA,cAAAA,EAAA,cACGwB,EACCxB,EAAA,cAACgH,GAAA,CAAK,UAAWpF,EAAO,MAAOJ,CAAS,EAExCxB,EAAA,cAACD,GAAA,CAAK,IAAKG,EAAO,WAChBF,EAAA,cAACsG,GAAA,CAAI,UAAW1E,EAAO,eAAgB,EAEvC5B,EAAA,cAACD,GAAA,CACC,UAAW6B,EAAO,cAClB,IAAK1B,EAAO,WACZ,WAAW,UAEXF,EAAA,cAACwH,GAAA,CAAc,MAAOI,EAAO,OAAQhG,EAAQ,EAE5CiG,GACC7H,EAAA,cAAAA,EAAA,cACEA,EAAA,cAAC+G,GAAA,CACC,KAAK,OACL,MAAOZ,EAAWjG,EAAO,SAAWA,EAAO,UAC7C,EACAF,EAAA,cAACwH,GAAA,CACC,WAAYZ,EACZ,MAAOiB,EACP,OAAQjG,EACV,CACF,CAEJ,CACF,CAEJ,CAEJ,CACF,CAEJ,CAEO,IAAMmG,GAAiB/H,EAAM,WAAW2H,EAAe,EIzL9D,OAAO3H,OAAW,QAClB,OAAS,MAAAgB,OAAU,UCDnB,OAAS,OAAAf,OAAW,UACpB,OAAOC,MAAY,yBAEZ,IAAM8H,GAAuB,KAAO,CACzC,YAAa/H,GAAI,CACf,QAAS,OACT,eAAgB,SAChB,WAAY,SACZ,WAAY,OACZ,OAAQ,aAAaC,EAAO,SAAS,GACrC,OAAQ,EACR,QAAS,OACT,SAAUA,EAAO,UACjB,WAAYA,EAAO,YACnB,WAAYA,EAAO,iBACnB,UAAW,SACX,QAAS,KAAKA,EAAO,SAAS,GAC9B,eAAgB,OAChB,MAAO,GAAGA,EAAO,SAAS,aAC1B,aAAc,UACd,WAAY,MACd,CAAC,CACH,GDZA,IAAM+H,GAA2B,MAWjC,SAASC,GACP5G,EACAQ,EACA,CACA,IAMIC,EAAAT,EALF,IAAIuD,EAAOoD,GACX,SAAAzG,EACA,UAAAe,EACA,OAAAd,EAAS,oBA7Bb,EA+BMM,EADCS,EAAAC,EACDV,EADC,CAJH,KACA,WACA,YACA,WAGIH,EAASoG,GAAqB,EAEpC,OACEhI,GAAA,cAAC6E,EAAAnC,EAAAC,EAAA,GACKH,GADL,CAEC,IAAKV,EACL,UAAWd,GAAGY,EAAO,YAAaW,CAAS,EAC3C,eAAcd,IAEbD,CACH,CAEJ,CAEO,IAAM2G,GAGTnI,GAAM,WAAWkI,EAAY,EEjDjC,OAAOlI,MAAW,QAClB,OAAS,QAAAmB,OAAgD,uBCDzD,OAAOjB,OAAY,yBACnB,OAAS,OAAAD,OAAW,UAGb,IAAMmI,GAAyB,KAAO,CAC3C,eAAgBnI,GAAI,CAClB,QAAS,OACT,eAAgB,aAChB,WAAY,SACZ,IAAKC,GAAO,SACd,CAAC,EACD,SAAUD,GAAI,CACZ,SAAU,EACV,WAAY,QACZ,UAAW,OACX,CAACE,EAAI,MAAM,EAAG,CACZ,SAAU,QACV,OAAQ,CACV,CACF,CAAC,CACH,GDbA,OAAS,QAAAJ,OAAY,uBASd,IAAMsI,GAAiB/G,GAA8B,CAC1D,GAAM,CACJ,MAAAwD,EACA,KAAAR,EACA,SAAA9C,EACA,OAAAC,EAAS,4BACT,OAAAC,EACA,QAAAC,CACF,EAAIL,EACEM,EAASwG,GAAuB,EAEtC,OACEpI,EAAA,cAACmB,GAAK,QAAL,CAAa,OAAQO,EAAQ,QAASC,GACrC3B,EAAA,cAACmB,GAAK,eAAL,KACCnB,EAAA,cAACD,GAAA,CAAK,UAAW6B,EAAO,gBACrB0C,GAAQtE,EAAA,cAACqE,EAAA,CAAe,KAAMC,EAAM,EACrCtE,EAAA,cAAC,YAAM8E,CAAM,CACf,CACF,EACA9E,EAAA,cAACmB,GAAK,KAAL,CAAU,UAAWS,EAAO,SAAU,OAAQH,GAC5CD,CACH,CACF,CAEJ,EzBdO,IAAMoB,EAASA,GACtBA,EAAO,KAAOuC,GACdvC,EAAO,aAAeyC,GACtBzC,EAAO,SAAWkD,GAClBlD,EAAO,iBAAmBoD,GAC1BpD,EAAO,YAAc/C,GACrB+C,EAAO,iBAAmB9C,GAC1B8C,EAAO,QAAUyF,GACjBzF,EAAO,SAAWmF,GAClBnF,EAAO,iBAAmBkE,EAC1BlE,EAAO,QAAUY,GACjBZ,EAAO,gBAAkBe,GACzBf,EAAO,MAAQuF","sourcesContent":["export const NAVBAR_HEIGHT = 60;\n","import { MenuDivider } from '@contentful/f36-menu';\nimport { MenuSectionTitle } from '@contentful/f36-menu';\nimport { Navbar as OriginalNavbar } from './Navbar';\n\nimport { NavbarAccount, NavbarAccountSkeleton } from './NavbarAccount';\nimport { NavbarItem, NavbarItemSkeleton } from './NavbarItem';\nimport { NavbarMenuItem, NavbarMenuItemSkeleton } from './NavbarMenuItem';\nimport { NavbarSwitcher, NavbarSwitcherSkeleton } from './NavbarSwitcher';\nimport { NavbarBadge } from './NavbarBadge/NavbarBadge';\nimport { NavbarSubmenu } from './NavbarSubmenu/NavbarSubmenu';\n\ntype CompoundNavbar = typeof OriginalNavbar & {\n Item: typeof NavbarItem;\n ItemSkeleton: typeof NavbarItemSkeleton;\n MenuItem: typeof NavbarMenuItem;\n MenuItemSkeleton: typeof NavbarMenuItemSkeleton;\n MenuDivider: typeof MenuDivider;\n MenuSectionTitle: typeof MenuSectionTitle;\n Submenu: typeof NavbarSubmenu;\n Switcher: typeof NavbarSwitcher;\n SwitcherSkeleton: typeof NavbarSwitcherSkeleton;\n Account: typeof NavbarAccount;\n AccountSkeleton: typeof NavbarAccountSkeleton;\n Badge: typeof NavbarBadge;\n};\n\nexport const Navbar = OriginalNavbar as CompoundNavbar;\nNavbar.Item = NavbarItem;\nNavbar.ItemSkeleton = NavbarItemSkeleton;\nNavbar.MenuItem = NavbarMenuItem;\nNavbar.MenuItemSkeleton = NavbarMenuItemSkeleton;\nNavbar.MenuDivider = MenuDivider;\nNavbar.MenuSectionTitle = MenuSectionTitle;\nNavbar.Submenu = NavbarSubmenu;\nNavbar.Switcher = NavbarSwitcher;\nNavbar.SwitcherSkeleton = NavbarSwitcherSkeleton;\nNavbar.Account = NavbarAccount;\nNavbar.AccountSkeleton = NavbarAccountSkeleton;\nNavbar.Badge = NavbarBadge;\n","import { type CommonProps, type ExpandProps, Flex } from '@contentful/f36-core';\nimport React from 'react';\nimport { getNavbarStyles } from './Navbar.styles';\nimport { ContentfulLogoIcon } from './icons';\nimport { cx } from 'emotion';\nimport { Button } from '@contentful/f36-button';\nimport { ListIcon } from '@contentful/f36-icons';\nimport { NavbarMenu } from './NavbarMenu/NavbarMenu';\n\ntype NavbarOwnProps = CommonProps & {\n /**\n * Accepts a React Component that will be displayed\n * instead of the Contentful Logo\n */\n logo?: React.ReactNode;\n\n /** Promotions component, displayed on most left side */\n promotions?: React.ReactNode;\n\n /** Environment Switcher component */\n switcher?: React.ReactNode;\n\n /** Main Navigation Elements */\n mainNavigation?: React.ReactNode;\n\n /** Secondary Navigation Elements, displayed in the right side */\n secondaryNavigation?: React.ReactNode;\n\n /** User Account Component */\n account?: React.ReactNode;\n\n /** Navigation displayed on mobile versions */\n mobileNavigation?: React.ReactNode;\n\n /**\n * Defines the max-width of the content inside the navbar.\n * @default '100%'\n */\n contentMaxWidth?: string;\n\n /**\n * Describes the size variation of the Navbar\n * Variant wide will set the contentMaxWidth to 1524px\n */\n variant?: 'wide' | 'fullscreen';\n};\n\n// expose only the HTML props that are needed to not pollute the API\ntype NavbarHTMLElementProps = Pick<React.ComponentPropsWithoutRef<'div'>, 'id'>;\n\nexport type NavbarProps = NavbarHTMLElementProps & NavbarOwnProps;\n\nfunction _Navbar(props: ExpandProps<NavbarProps>, ref: React.Ref<HTMLElement>) {\n const {\n logo,\n promotions,\n switcher,\n mainNavigation,\n secondaryNavigation,\n account,\n mobileNavigation,\n className,\n contentMaxWidth = '100%',\n testId = 'cf-ui-navbar',\n variant = 'wide',\n ...otherProps\n } = props;\n const styles = getNavbarStyles({ contentMaxWidth, variant });\n\n return (\n <Flex\n {...otherProps}\n ref={ref}\n testId={testId}\n className={cx(styles.container, className)}\n as=\"header\"\n >\n <Flex\n as=\"nav\"\n className={styles.navigation}\n justifyContent=\"space-between\"\n gap=\"spacingXs\"\n >\n <Flex alignItems=\"center\" gap=\"spacingL\">\n {logo || <ContentfulLogoIcon className={styles.logo} />}\n {mobileNavigation && (\n <NavbarMenu\n trigger={\n <Button\n className={styles.mobileNavigationButton}\n startIcon={<ListIcon size=\"medium\" />}\n >\n Menu\n </Button>\n }\n >\n {mobileNavigation}\n </NavbarMenu>\n )}\n {mainNavigation && (\n <Flex\n className={styles.mainNavigation}\n aria-label=\"Main Navigation\"\n gap=\"spacingXs\"\n >\n {mainNavigation}\n </Flex>\n )}\n </Flex>\n <Flex alignItems=\"center\" gap=\"spacingXs\">\n <Flex alignItems=\"center\">{promotions}</Flex>\n <Flex alignItems=\"center\">{switcher}</Flex>\n <Flex alignItems=\"center\" gap=\"spacingXs\">\n {secondaryNavigation && (\n <Flex\n className={styles.secondaryNavigationWrapper}\n aria-label=\"Secondary Navigation\"\n gap=\"spacingXs\"\n >\n {secondaryNavigation}\n </Flex>\n )}\n {account && (\n <Flex\n className={styles.account}\n aria-label=\"Account Navigation\"\n gap=\"spacingXs\"\n >\n {account}\n </Flex>\n )}\n </Flex>\n </Flex>\n </Flex>\n </Flex>\n );\n}\n\nexport const Navbar = React.forwardRef(_Navbar);\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\nimport { mqs } from './utils.styles';\nimport { NavbarProps } from './Navbar';\nimport { NAVBAR_HEIGHT } from './constants';\n\nexport const getNavbarStyles = ({\n contentMaxWidth,\n variant,\n}: Pick<NavbarProps, 'contentMaxWidth' | 'variant'>) => ({\n container: css({\n justifyContent: 'center',\n backgroundColor: tokens.gray100,\n width: '100%',\n }),\n logo: css({\n display: 'none',\n [mqs.small]: {\n display: 'block',\n height: '28px',\n width: '28px',\n },\n }),\n\n navigation: css({\n width: '100%',\n maxWidth: variant === 'wide' ? '1920px' : contentMaxWidth,\n padding: `${tokens.spacingS} ${tokens.spacingM}`,\n height: `${NAVBAR_HEIGHT}px`,\n [mqs.small]: {\n padding: `${tokens.spacingM} ${tokens.spacingL}`,\n },\n }),\n\n mainNavigation: css({\n display: 'none',\n [mqs.small]: {\n display: 'flex',\n },\n }),\n\n mobileNavigationButton: css({\n display: 'flex',\n minHeight: 'initial', // unset default 40px height\n height: '36px',\n padding: '0 12px',\n borderRadius: '10px',\n [mqs.small]: {\n display: 'none',\n },\n }),\n mobileNavigationIcon: css({\n heigt: '20px',\n width: '20px',\n }),\n\n secondaryNavigationWrapper: css({\n '> *:not(:first-child)': {\n display: 'none',\n [mqs.xsmall]: {\n display: 'flex',\n },\n },\n }),\n\n account: css({\n display: 'none',\n [mqs.xsmall]: {\n display: 'flex',\n },\n }),\n});\n","import tokens from '@contentful/f36-tokens';\nimport type { CSSObject } from '@emotion/serialize';\n\ntype screens = 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge';\ntype mediaqueries = Record<screens, string>;\nexport const mqs: mediaqueries = {\n xsmall: '@media (min-width: 576px)',\n small: '@media (min-width: 867px)',\n medium: '@media (min-width: 1024px)',\n large: '@media (min-width: 1200px)',\n xlarge: '@media (min-width: 1920px)',\n};\n\nexport const getGlowOnFocusStyles = (\n shadow: string = tokens.glowPrimary,\n): CSSObject => ({\n '&:focus': {\n boxShadow: shadow,\n },\n '&:focus:not(:focus-visible)': {\n boxShadow: 'unset',\n },\n '&:focus-visible': {\n boxShadow: shadow,\n },\n});\n\nexport const increaseHitArea = (minSize = '44px'): CSSObject => ({\n overflow: 'visible',\n position: 'relative',\n '&:after': {\n minHeight: minSize,\n minWidth: minSize,\n position: 'absolute',\n width: '100%',\n content: '\"\"',\n left: '50%',\n top: '50%',\n transform: 'translate(-50%, -50%)',\n },\n});\n","import React from 'react';\nimport tokens from '@contentful/f36-tokens';\nimport {\n generateComponentWithVariants,\n generateIconComponent,\n IconVariant,\n} from '@contentful/f36-icon';\n\nexport const CaretIcon = generateComponentWithVariants({\n variants: {\n [IconVariant.Active]: generateIconComponent({\n path: (\n <>\n <path\n d=\"M10.0153 4.76531L6.2653 8.51531C6.23048 8.55018 6.18912 8.57784 6.14359 8.59671C6.09807 8.61558 6.04927 8.62529 5.99999 8.62529C5.95071 8.62529 5.90191 8.61558 5.85639 8.59671C5.81086 8.57784 5.76951 8.55018 5.73468 8.51531L1.98468 4.76531C1.93217 4.71287 1.89641 4.64602 1.88192 4.57324C1.86742 4.50046 1.87485 4.42501 1.90326 4.35645C1.93166 4.28789 1.97977 4.22931 2.0415 4.1881C2.10322 4.1469 2.17578 4.12494 2.24999 4.125H9.74999C9.8242 4.12494 9.89676 4.1469 9.95848 4.1881C10.0202 4.22931 10.0683 4.28789 10.0967 4.35645C10.1251 4.42501 10.1326 4.50046 10.1181 4.57324C10.1036 4.64602 10.0678 4.71287 10.0153 4.76531Z\"\n fill={tokens.blue300}\n />\n </>\n ),\n viewBox: '0 0 12 12',\n }),\n [IconVariant.Default]: generateIconComponent({\n path: (\n <>\n <path\n d=\"M10.0153 4.76531L6.2653 8.51531C6.23048 8.55018 6.18912 8.57784 6.14359 8.59671C6.09807 8.61558 6.04927 8.62529 5.99999 8.62529C5.95071 8.62529 5.90191 8.61558 5.85639 8.59671C5.81086 8.57784 5.76951 8.55018 5.73468 8.51531L1.98468 4.76531C1.93217 4.71287 1.89641 4.64602 1.88192 4.57324C1.86742 4.50046 1.87485 4.42501 1.90326 4.35645C1.93166 4.28789 1.97977 4.22931 2.0415 4.1881C2.10322 4.1469 2.17578 4.12494 2.24999 4.125H9.74999C9.8242 4.12494 9.89676 4.1469 9.95848 4.1881C10.0202 4.22931 10.0683 4.28789 10.0967 4.35645C10.1251 4.42501 10.1326 4.50046 10.1181 4.57324C10.1036 4.64602 10.0678 4.71287 10.0153 4.76531Z\"\n fill={tokens.gray400}\n />\n </>\n ),\n viewBox: '0 0 12 12',\n }),\n },\n});\n","import React from 'react';\nimport { generateIconComponent } from '@contentful/f36-icon';\n\nexport const ContentfulLogoIcon = /*#__PURE__*/ generateIconComponent({\n name: 'ContentfulLogoIcon',\n viewBox: '0 0 28 28',\n path: (\n <>\n <path\n fill=\"#1773EB\"\n d=\"M10.713 5.001c.845.843 1.167 2.079.845 3.228A6.663 6.663 0 0 1 15 7.276h.026a6.7 6.7 0 0 1 4.743 1.988 2.64 2.64 0 1 0 3.746-3.715A11.96 11.96 0 0 0 15.042 2h-.046a11.933 11.933 0 0 0-6.691 2.036h.074a3.287 3.287 0 0 1 2.334.967V5Z\"\n />\n <path\n fill=\"#E44F20\"\n d=\"M21.594 17.999a2.64 2.64 0 0 0-1.858.766 6.703 6.703 0 0 1-4.732 1.951h-.025a6.65 6.65 0 0 1-3.447-.968A3.3 3.3 0 0 1 8.35 23.93h-.086A11.926 11.926 0 0 0 14.96 26h.046a11.94 11.94 0 0 0 8.449-3.484 2.64 2.64 0 0 0-1.859-4.514V18h-.002Z\"\n />\n <path\n fill=\"#FFDA00\"\n d=\"M6.013 18.295a3.27 3.27 0 0 1 2.334-.967c.302 0 .603.04.894.122a6.7 6.7 0 0 1 .013-6.928A3.3 3.3 0 0 1 5.08 7.335v-.09a11.999 11.999 0 0 0-.032 13.453v-.07a3.27 3.27 0 0 1 .966-2.333Z\"\n />\n <path\n fill=\"#1773EB\"\n d=\"M8.379 4.62c-.75 0-1.276.312-1.913.949-.607.605-.798 1.135-.8 1.766A2.712 2.712 0 1 0 8.38 4.62Z\"\n />\n <path\n fill=\"#E44F20\"\n d=\"M5.628 20.631c0 .75.31 1.276.946 1.912.607.606 1.136.799 1.766.8a2.703 2.703 0 1 0-.017-5.407 2.703 2.703 0 0 0-2.695 2.704v-.009Z\"\n />\n </>\n ),\n});\n","import React from 'react';\nimport { Menu, type MenuListProps, type MenuProps } from '@contentful/f36-menu';\nimport { getNavbarMenuStyles } from './NavbarMenu.styles';\n\nexport type NavbarMenuProps = {\n trigger: React.ReactNode;\n children?: React.ReactNode;\n} & Pick<MenuListProps, 'testId'> &\n Pick<MenuProps, 'onOpen' | 'onClose'>;\n\nexport const NavbarMenu = (props: NavbarMenuProps) => {\n const {\n trigger,\n children,\n testId = 'cf-ui-navbar-menu-list',\n onOpen,\n onClose,\n } = props;\n const styles = getNavbarMenuStyles();\n\n return (\n <Menu onOpen={onOpen} onClose={onClose}>\n <Menu.Trigger>{trigger}</Menu.Trigger>\n <Menu.List className={styles.menuList} testId={testId}>\n {children}\n </Menu.List>\n </Menu>\n );\n};\n","import { css } from 'emotion';\nimport { mqs } from '../utils.styles';\n\nexport const getNavbarMenuStyles = () => ({\n menuList: css({\n minWidth: 0,\n [mqs.xsmall]: {\n minWidth: '250px',\n },\n }),\n});\n","import React from 'react';\nimport { cx } from 'emotion';\nimport { getNavbarAccountStyles } from './NavbarAccount.styles';\nimport {\n type PropsWithHTMLElement,\n type CommonProps,\n type ExpandProps,\n} from '@contentful/f36-core';\nimport { NavbarMenu } from '../NavbarMenu/NavbarMenu';\nimport { Flex } from '@contentful/f36-core';\nimport { Avatar } from '@contentful/f36-avatar';\nimport { Tooltip } from '@contentful/f36-tooltip';\n\ntype NavbarAccountOwnProps = CommonProps & {\n children: React.ReactNode;\n username: string;\n avatar?: string;\n initials?: string;\n hasNotification?: boolean;\n label?: string;\n /**\n * @default 'warning'\n */\n notificationVariant?: 'warning' | 'negative' | 'info';\n};\n\nexport type NavbarAccountProps = PropsWithHTMLElement<\n NavbarAccountOwnProps,\n 'button'\n>;\n\nfunction _NavbarAccount(\n props: ExpandProps<NavbarAccountProps>,\n ref: React.Ref<HTMLButtonElement>,\n) {\n const {\n children,\n className,\n testId = 'cf-ui-navbar-account-trigger',\n avatar,\n label = 'Account menu',\n initials,\n username,\n hasNotification,\n notificationVariant = 'warning',\n ...otherProps\n } = props;\n const styles = getNavbarAccountStyles();\n\n return (\n <NavbarMenu\n trigger={\n <div>\n <Tooltip placement=\"bottom\" content={label} showDelay={600} usePortal>\n <Flex\n as=\"button\"\n {...otherProps}\n ref={ref}\n className={cx(styles.navbarAccount, className)}\n testId={testId}\n alignItems=\"center\"\n aria-label={label}\n >\n <Avatar\n src={avatar}\n initials={initials}\n size=\"small\"\n variant=\"user\"\n />\n\n {hasNotification ? (\n <span\n className={styles.notificationIcon(notificationVariant)}\n />\n ) : null}\n </Flex>\n </Tooltip>\n </div>\n }\n >\n {children}\n </NavbarMenu>\n );\n}\n\nexport const NavbarAccount = React.forwardRef(_NavbarAccount);\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\nimport { NavbarAccountProps } from './NavbarAccount';\nimport { getGlowOnFocusStyles, increaseHitArea } from '../utils.styles';\n\nconst notificationVarianColorMap: Record<\n NavbarAccountProps['notificationVariant'],\n string\n> = {\n warning: tokens.colorWarning,\n negative: tokens.colorNegative,\n info: tokens.blue500,\n};\n\nexport const getNavbarAccountStyles = () => ({\n navbarAccount: css(\n {\n cursor: 'pointer',\n background: 'none',\n position: 'relative',\n outline: 'none',\n overflow: 'visible',\n borderRadius: '50%',\n border: 'none',\n padding: 0,\n '&:hover img': {\n filter: 'brightness(0.9)',\n },\n },\n getGlowOnFocusStyles(),\n increaseHitArea(),\n ),\n notificationIcon: (variant: NavbarAccountProps['notificationVariant']) =>\n css({\n position: 'absolute',\n top: 0,\n right: 0,\n height: tokens.spacingS,\n width: tokens.spacingS,\n borderRadius: '50%',\n border: `2px solid ${tokens.gray100}`,\n backgroundColor: notificationVarianColorMap[variant],\n transform: 'translate(30%, -30%)',\n zIndex: 1, // move above the avatar\n }),\n});\n","import React from 'react';\nimport { SkeletonContainer, SkeletonImage } from '@contentful/f36-skeleton';\nimport tokens from '@contentful/f36-tokens';\n\nexport function NavbarAccountSkeleton({ ariaLabel }: { ariaLabel?: string }) {\n return (\n <SkeletonContainer\n svgWidth={24}\n svgHeight={24}\n ariaLabel={ariaLabel}\n backgroundColor={tokens.gray300}\n foregroundColor={tokens.gray200}\n >\n <SkeletonImage width={24} height={24} radiusX={12} radiusY={12} />\n </SkeletonContainer>\n );\n}\n","import React from 'react';\nimport { cx } from 'emotion';\nimport { getNavbarItemStyles } from './NavbarItem.styles';\nimport { NavbarMenu, type NavbarMenuProps } from '../NavbarMenu/NavbarMenu';\nimport {\n NavbarItemIcon,\n type NavbarItemIconProps,\n} from '../NavbarItemIcon/NavbarItemIcon';\nimport { CaretIcon } from '../icons';\nimport type {\n CommonProps,\n ExpandProps,\n PolymorphicComponent,\n PolymorphicProps,\n} from '@contentful/f36-core';\nimport { Tooltip } from '@contentful/f36-tooltip';\n\nconst NAVBAR_ITEM_DEFAULT_TAG = 'button';\n\ntype NavbarItemTriggerProps = CommonProps & {\n label?: string;\n title?: string;\n icon?: NavbarItemIconProps['icon'];\n isActive?: boolean;\n as?: React.ElementType;\n};\n\ntype NavbarItemAsMenuProps = NavbarItemTriggerProps &\n Pick<NavbarMenuProps, 'onOpen' | 'onClose'> & {\n children: React.ReactNode;\n };\ntype NavbarItemAsItemProps = NavbarItemTriggerProps & {\n children?: never;\n onOpen?: never;\n onClose?: never;\n};\ntype NavbarItemOwnProps = NavbarItemAsItemProps | NavbarItemAsMenuProps;\n\nexport type NavbarItemProps<\n E extends React.ElementType = typeof NAVBAR_ITEM_DEFAULT_TAG,\n> = PolymorphicProps<NavbarItemOwnProps, E>;\n\nfunction _NavbarItem(\n props: NavbarItemProps<React.ElementType>,\n ref: React.Ref<any>,\n) {\n const {\n as: Comp = NAVBAR_ITEM_DEFAULT_TAG,\n icon,\n label,\n title,\n children,\n className,\n isActive,\n testId = 'cf-ui-navbar-item',\n onOpen,\n onClose,\n ...otherProps\n } = props;\n const styles = getNavbarItemStyles({ hasTitle: !!title });\n const isMenuTrigger = isNavbarItemHasMenu(props);\n const showCaret = title && isMenuTrigger;\n let item = (\n <Comp\n {...otherProps}\n ref={ref}\n data-test-id={testId}\n className={cx(styles.navbarItem, className, {\n [styles.navbarItemMenuTrigger]: showCaret,\n [styles.isActive]: isActive,\n })}\n aria-label={title ? '' : label}\n >\n {icon && (\n <NavbarItemIcon\n className={styles.icon}\n icon={icon}\n isActive={isActive}\n />\n )}\n {title && <span>{title}</span>}\n {showCaret && <CaretIcon size=\"tiny\" isActive={isActive} />}\n </Comp>\n );\n\n if (!title) {\n item = (\n <div>\n <Tooltip content={label} placement=\"bottom\" showDelay={600} usePortal>\n {item}\n </Tooltip>\n </div>\n );\n }\n\n if (isMenuTrigger) {\n return (\n <NavbarMenu\n trigger={item}\n testId={testId}\n onOpen={onOpen}\n onClose={onClose}\n >\n {children}\n </NavbarMenu>\n );\n }\n\n return item;\n}\n\nconst isNavbarItemHasMenu = <E extends React.ElementType>(\n props: NavbarItemProps<E>,\n): props is PolymorphicProps<NavbarItemAsMenuProps, E> =>\n Boolean(props.children);\n\nexport const NavbarItem: PolymorphicComponent<\n ExpandProps<NavbarItemOwnProps>,\n typeof NAVBAR_ITEM_DEFAULT_TAG\n> = React.forwardRef(_NavbarItem);\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\nimport { hexToRGBA } from '@contentful/f36-utils';\nimport { getGlowOnFocusStyles, increaseHitArea, mqs } from '../utils.styles';\n\nconst borderWidth = '1px';\n\nexport const getNavbarItemActiveStyles = () =>\n css({\n backgroundColor: tokens.blue100,\n border: `${borderWidth} solid ${tokens.blue400}`,\n color: tokens.blue600,\n '&:hover': {\n backgroundColor: tokens.blue100,\n },\n });\n\nconst commonItemStyles = {\n display: 'flex',\n justifyContent: 'center',\n padding: `calc(${tokens.spacing2Xs} - ${borderWidth}) calc(${tokens.spacingXs} - ${borderWidth})`,\n alignItems: 'center',\n background: 'none',\n gap: tokens.spacing2Xs,\n};\n\nexport const getNavbarItemStyles = ({ hasTitle }: { hasTitle: boolean }) => ({\n navbarItem: css(\n commonItemStyles,\n {\n appearance: 'none',\n background: 'none',\n border: `${borderWidth} solid transparent`,\n margin: 0,\n outline: 'none',\n fontSize: tokens.fontSizeM,\n lineHeight: tokens.lineHeightM,\n fontWeight: tokens.fontWeightMedium,\n position: 'relative',\n textAlign: 'left',\n whiteSpace: 'nowrap',\n cursor: 'pointer',\n hyphens: 'auto',\n textDecoration: 'none',\n color: tokens.gray800,\n boxSizing: 'border-box',\n transition: `color ${tokens.transitionDurationShort} ${tokens.transitionEasingCubicBezier}`,\n borderRadius: tokens.borderRadiusMedium,\n height: '30px',\n\n padding: hasTitle\n ? undefined\n : `calc(${tokens.spacing2Xs} - ${borderWidth})`, // square button for icon-only items\n\n '&:hover': {\n backgroundColor: hexToRGBA(tokens.gray900, 0.05),\n },\n\n '&:hover::before': {\n opacity: 1,\n scale: '1',\n },\n\n '&:active::before': {\n backgroundColor: `rgba(255, 255, 255, 0.1)`,\n },\n '&:disabled': {\n cursor: 'auto',\n },\n\n '& svg': {\n transition: `fill ${tokens.transitionDurationShort} ${tokens.transitionEasingCubicBezier}`,\n },\n '& > svg, & > span': {\n zIndex: tokens.zIndexDefault,\n },\n },\n getGlowOnFocusStyles(),\n increaseHitArea(),\n ),\n navbarItemMenuTrigger: css({\n paddingRight: tokens.spacingXs,\n }),\n isActive: getNavbarItemActiveStyles(),\n icon: css({\n height: '20px',\n width: '20px',\n boxSizing: 'content-box',\n display: hasTitle ? 'none' : 'block',\n [mqs.small]: {\n height: '16px',\n width: '16px',\n padding: hasTitle ? '2px 0' : '2px', // square for icon-only items\n },\n [mqs.large]: {\n display: 'block',\n },\n }),\n});\n\nexport const getNavbarItemSkeletonStyles = () => ({\n itemSkeleton: css(commonItemStyles),\n});\n","import React from 'react';\nimport type { IconProps } from '@contentful/f36-icons';\nimport { getNavbarItemIconStyles } from './NavbarItemIcon.styles';\nimport { cx } from 'emotion';\n\nexport type NavbarItemIconProps = {\n icon: React.ReactElement<IconProps>;\n className?: string;\n} & Partial<Pick<IconProps, 'isActive'>>;\n\nexport const NavbarItemIcon = ({\n icon,\n isActive,\n className,\n}: NavbarItemIconProps) => {\n const { className: iconClassName, size, ...rest } = icon.props;\n const styles = getNavbarItemIconStyles();\n\n return React.cloneElement(icon, {\n className: cx(iconClassName, styles.navbarItemIcon, className),\n size: size || 'small',\n isActive,\n ...rest,\n });\n};\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nexport const getNavbarItemIconStyles = () => ({\n navbarItemIcon: css({\n '&:last-child&:not(:only-child)': {\n marginLeft: tokens.spacing2Xs,\n },\n 'img&': {\n borderRadius: tokens.borderRadiusSmall,\n maxWidth: tokens.spacingM,\n maxHeight: tokens.spacingM,\n },\n }),\n});\n","import React from 'react';\nimport { SkeletonContainer, SkeletonText } from '@contentful/f36-skeleton';\nimport tokens from '@contentful/f36-tokens';\nimport { getNavbarItemSkeletonStyles } from './NavbarItem.styles';\n\nexport const NavbarItemSkeleton = ({\n estimatedWidth,\n}: {\n estimatedWidth: number;\n}) => {\n const styles = getNavbarItemSkeletonStyles();\n\n return (\n <SkeletonContainer\n className={styles.itemSkeleton}\n svgWidth={estimatedWidth}\n svgHeight={28}\n backgroundColor={tokens.gray300}\n foregroundColor={tokens.gray200}\n >\n <SkeletonText\n lineHeight={18}\n numberOfLines={1}\n offsetTop={2}\n radiusX={tokens.borderRadiusSmall}\n radiusY={tokens.borderRadiusSmall}\n />\n </SkeletonContainer>\n );\n};\n","import React from 'react';\nimport { cx } from 'emotion';\nimport { getNavbarMenuItemStyles } from './NavbarMenuItem.styles';\nimport { Menu, type MenuItemProps } from '@contentful/f36-menu';\nimport {\n NavbarItemIcon,\n type NavbarItemIconProps,\n} from '../NavbarItemIcon/NavbarItemIcon';\nimport { ArrowSquareOutIcon } from '@contentful/f36-icons';\nimport type {\n ExpandProps,\n PolymorphicComponent,\n PolymorphicProps,\n} from '@contentful/f36-core';\n\nconst NAVBAR_MENU_ITEM_DEFAULT_TAG = 'button';\n\ntype NavbarMenuItemOwnProps = {\n children?: null;\n title: string;\n icon?: NavbarItemIconProps['icon'];\n as?: React.ElementType;\n} & Omit<MenuItemProps, 'children' | 'as'>;\n\nexport type NavbarMenuItemProps<\n E extends React.ElementType = typeof NAVBAR_MENU_ITEM_DEFAULT_TAG,\n> = PolymorphicProps<NavbarMenuItemOwnProps, E>;\n\nfunction _NavbarMenuItem(\n props: NavbarMenuItemProps<React.ElementType>,\n ref: React.Ref<any>,\n) {\n const {\n as: Comp = NAVBAR_MENU_ITEM_DEFAULT_TAG,\n icon,\n title,\n className,\n ...otherProps\n } = props;\n const styles = getNavbarMenuItemStyles();\n\n const itemIsExternalLink = isExternalLink(\n props as unknown as NavbarMenuItemProps<'a'>,\n );\n\n return (\n <Menu.Item\n {...otherProps}\n ref={ref}\n as={Comp as MenuItemProps['as']}\n className={cx(styles.navbarMenuItem, className)}\n >\n {icon ? (\n <NavbarItemIcon icon={icon} />\n ) : (\n itemIsExternalLink && externalIcon\n )}\n <span>{title}</span>\n {icon && itemIsExternalLink ? externalIcon : null}\n </Menu.Item>\n );\n}\n\nconst externalIcon = <NavbarItemIcon icon={<ArrowSquareOutIcon />} />;\n\nconst isExternalLink = (props: NavbarMenuItemProps<'a'>) =>\n props.as === 'a' && props.target === '_blank';\n\nexport const NavbarMenuItem: PolymorphicComponent<\n ExpandProps<NavbarMenuItemOwnProps>,\n typeof NAVBAR_MENU_ITEM_DEFAULT_TAG\n> = React.forwardRef(_NavbarMenuItem);\n","import { css } from 'emotion';\nexport const getNavbarMenuItemStyles = () => ({\n navbarMenuItem: css({\n display: 'flex',\n justifyContent: 'flex-start',\n alignItems: 'center',\n }),\n});\n","import React from 'react';\nimport { Menu } from '@contentful/f36-menu';\nimport {\n SkeletonBodyText,\n SkeletonContainer,\n SkeletonImage,\n} from '@contentful/f36-skeleton';\nimport { Flex } from '@contentful/f36-core';\n\nimport tokens from '@contentful/f36-tokens';\n\nexport const NavbarMenuItemSkeleton = ({\n ariaLabel,\n}: {\n ariaLabel?: string;\n}) => (\n <Menu.Item>\n <Flex alignItems=\"center\" gap={tokens.spacingXs}>\n <SkeletonContainer svgHeight={16} svgWidth={18}>\n <SkeletonImage width={16} height={16} />\n </SkeletonContainer>\n <SkeletonContainer svgHeight={16} svgWidth={190} ariaLabel={ariaLabel}>\n <SkeletonBodyText numberOfLines={1} />\n </SkeletonContainer>\n </Flex>\n </Menu.Item>\n);\n","import React from 'react';\nimport { getNavbarSwitcherStyles } from './NavbarSwitcher.styles';\nimport { Button } from '@contentful/f36-button';\nimport {\n Flex,\n type CommonProps,\n type PropsWithHTMLElement,\n type ExpandProps,\n Box,\n} from '@contentful/f36-core';\nimport { cx } from 'emotion';\nimport { NavbarEnvVariant } from './NavbarEnvVariant';\nimport { NavbarSwitcherSkeleton } from './NavbarSwitcherSkeleton';\nimport { CaretRightIcon } from '@contentful/f36-icons';\nimport { Text } from '@contentful/f36-typography';\nimport tokens from '@contentful/f36-tokens';\n\ntype TruncateOptions = {\n /**\n * Number of characters to keep at the start of the string\n * @default 5\n */\n start?: number;\n /**\n * Number of characters to keep at the end of the string\n * @default 6\n */\n end?: number;\n};\n\nfunction splitString(\n string: string,\n {\n start: startLength = 5,\n end: endLength = 6,\n }: TruncateOptions | undefined = {},\n) {\n if (string.length <= startLength + endLength) {\n return [string, undefined, undefined];\n }\n\n const start = startLength > 0 ? string.slice(0, startLength) : '';\n const end = endLength > 0 ? string.slice(-endLength) : '';\n const remainder = string.slice(startLength, string.length - endLength);\n\n return [start, remainder, end];\n}\n\nexport type EnvVariant = 'master' | 'non-master';\n\ntype NavbarLoadingProps =\n | {\n isLoading?: true;\n children?: React.ReactNode;\n environment?: never;\n space?: never;\n }\n | {\n isLoading?: false;\n children?: never;\n environment?: string;\n space?: string;\n };\n\ntype NavbarSwitcherOwnProps = CommonProps &\n NavbarLoadingProps & {\n isCircle?: boolean;\n envVariant?: EnvVariant;\n isAlias?: boolean;\n ariaLabel?: string;\n };\n\nexport type NavbarSwitcherProps = PropsWithHTMLElement<\n NavbarSwitcherOwnProps,\n 'button'\n>;\n\ntype SwitcherLabelProps = {\n value: React.ReactNode;\n styles: ReturnType<typeof getNavbarSwitcherStyles>;\n envVariant?: EnvVariant;\n};\n\nconst SwitcherLabel = ({ value, styles }: SwitcherLabelProps) => {\n const [start, middle, end] =\n typeof value === 'string' ? splitString(value) : [];\n\n return start !== undefined ? (\n <Text className={styles.text}>\n <span>{start}</span>\n {middle && (\n <span className={styles.switcherSpaceNameTruncation}>{middle}</span>\n )}\n {end && <span>{end}</span>}\n </Text>\n ) : (\n <Text className={styles.text}>{value}</Text>\n );\n};\n\nfunction _NavbarSwitcher(\n props: ExpandProps<NavbarSwitcherProps>,\n ref: React.Ref<HTMLButtonElement>,\n) {\n const {\n children,\n className,\n envVariant,\n isAlias,\n testId = 'cf-ui-navbar-switcher',\n ariaLabel = 'Space and Environment Navigation',\n space,\n environment,\n isLoading,\n ...otherProps\n } = props;\n const isMaster = envVariant === 'master';\n const styles = getNavbarSwitcherStyles({ isMaster });\n\n return (\n <Button\n {...otherProps}\n aria-label={ariaLabel}\n className={cx(\n styles.navbarSwitcher({ showSpaceEnv: !isLoading && !children }),\n className,\n )}\n endIcon={\n envVariant && (\n <NavbarEnvVariant\n envVariant={envVariant}\n isAlias={isAlias}\n className={styles.switcherEnvIcon}\n />\n )\n }\n ref={ref}\n testId={testId}\n variant=\"transparent\"\n >\n <Flex\n alignItems=\"center\"\n className={styles.switcherSpaceName}\n flexDirection=\"row\"\n >\n {isLoading ? (\n <NavbarSwitcherSkeleton estimatedWidth={148} />\n ) : (\n <>\n {children ? (\n <Text className={styles.text}>{children}</Text>\n ) : (\n <Flex gap={tokens.spacingXs}>\n <Box className={styles.innerRectangle} />\n\n <Flex\n className={styles.innerSpaceEnv}\n gap={tokens.spacing2Xs}\n alignItems=\"center\"\n >\n <SwitcherLabel value={space} styles={styles} />\n\n {environment && (\n <>\n <CaretRightIcon\n size=\"tiny\"\n color={isMaster ? tokens.green700 : tokens.orange700}\n />\n <SwitcherLabel\n envVariant={envVariant}\n value={environment}\n styles={styles}\n />\n </>\n )}\n </Flex>\n </Flex>\n )}\n </>\n )}\n </Flex>\n </Button>\n );\n}\n\nexport const NavbarSwitcher = React.forwardRef(_NavbarSwitcher);\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\nimport { hexToRGBA } from '@contentful/f36-utils';\n\nimport { getGlowOnFocusStyles, increaseHitArea, mqs } from '../utils.styles';\n\nconst BORDER_WIDTH = 1;\n\nexport const getNavbarSwitcherStyles = ({\n isMaster,\n}: {\n isMaster: boolean;\n}) => ({\n text: css({\n color: 'currentcolor',\n fontWeight: 'inherit',\n }),\n\n navbarSwitcher: ({ showSpaceEnv }: { showSpaceEnv: boolean }) =>\n css(\n {\n color: tokens.gray600,\n flexShrink: 1,\n fontWeight: tokens.fontWeightMedium,\n maxWidth: '100%',\n minHeight: 'unset',\n padding: `${tokens.spacing2Xs} ${tokens.spacingXs}`,\n '&:hover': {\n backgroundColor: hexToRGBA(tokens.gray900, 0.05),\n },\n },\n showSpaceEnv && getEnvVariantColor(isMaster),\n getGlowOnFocusStyles(),\n increaseHitArea(),\n ),\n\n innerRectangle: css({\n width: `calc(8px - ${BORDER_WIDTH}px)`,\n borderTopLeftRadius: `calc(${tokens.borderRadiusMedium} - ${BORDER_WIDTH}px)`,\n borderBottomLeftRadius: `calc(${tokens.borderRadiusMedium} - ${BORDER_WIDTH}px)`,\n background: isMaster\n ? tokens.green300\n : `linear-gradient(\n -45deg, \n ${tokens.orange300} 28.57%, \n transparent 28.57%, \n transparent 50%, \n ${tokens.orange300} 50%, \n ${tokens.orange300} 78.57%, \n transparent 78.57%, \n transparent 100%\n )`,\n backgroundSize: isMaster ? 'inherit' : '9px 9px',\n backgroundPosition: 'bottom',\n }),\n\n innerSpaceEnv: css({\n height: '26px',\n }),\n\n switcherSpaceName: css({\n // Set min-width only when there are three span children\n '&:has(> span:last-child:nth-child(3))': {\n minWidth: '12ch',\n },\n maxWidth: '15vw',\n [mqs.xsmall]: {\n maxWidth: '50vw',\n },\n [mqs.small]: {\n maxWidth: '10vw',\n },\n [mqs.medium]: {\n maxWidth: '50vw',\n },\n }),\n\n switcherEnvIcon: css({\n [mqs.small]: {\n width: '16px',\n height: '16px',\n },\n }),\n\n switcherSpaceNameTruncation: css({\n flexShrink: 1,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }),\n});\n\nconst getEnvVariantColor = (isMaster: boolean) => ({\n padding: '0',\n paddingRight: tokens.spacingXs,\n color: isMaster ? tokens.green700 : tokens.orange700,\n backgroundColor: isMaster ? tokens.green100 : tokens.orange100,\n border: `${BORDER_WIDTH}px solid ${\n isMaster ? tokens.green400 : tokens.orange400\n }`,\n\n '&:hover, &:active': {\n backgroundColor: isMaster ? tokens.green200 : tokens.orange200,\n },\n});\n","import React from 'react';\nimport { NavbarSwitcherProps } from '../NavbarSwitcher/NavbarSwitcher';\nimport {\n EnvironmentAliasIcon,\n EnvironmentIcon,\n RocketLaunchIcon,\n} from '@contentful/f36-icons';\nimport tokens from '@contentful/f36-tokens';\n\nexport type NavbarEnvVariantProps = Pick<\n NavbarSwitcherProps,\n 'isAlias' | 'envVariant'\n> & {\n className?: string;\n};\n\nexport function NavbarEnvVariant({\n isAlias,\n envVariant,\n className,\n}: NavbarEnvVariantProps) {\n const isMaster = envVariant === 'master';\n const color = isMaster ? tokens.green700 : tokens.orange700;\n\n if (isMaster && !isAlias) {\n return (\n <RocketLaunchIcon color={color} className={className} size=\"medium\" />\n );\n } else if (isAlias) {\n return (\n <EnvironmentAliasIcon color={color} className={className} size=\"medium\" />\n );\n } else {\n return (\n <EnvironmentIcon color={color} className={className} size=\"medium\" />\n );\n }\n}\n","import React from 'react';\nimport { SkeletonContainer, SkeletonText } from '@contentful/f36-skeleton';\nimport tokens from '@contentful/f36-tokens';\n\nexport const NavbarSwitcherSkeleton = ({\n estimatedWidth,\n}: {\n estimatedWidth: number;\n}) => (\n <SkeletonContainer\n svgWidth={estimatedWidth}\n svgHeight={18}\n backgroundColor={tokens.gray300}\n foregroundColor={tokens.gray200}\n >\n <SkeletonText\n lineHeight={18}\n numberOfLines={1}\n radiusX={tokens.borderRadiusSmall}\n radiusY={tokens.borderRadiusSmall}\n />\n </SkeletonContainer>\n);\n","import React from 'react';\nimport { cx } from 'emotion';\nimport { getNavbarBadgeStyles } from './NavbarBadge.styles';\nimport type {\n CommonProps,\n ExpandProps,\n PolymorphicComponent,\n PolymorphicProps,\n} from '@contentful/f36-core';\n\nconst NAVBAR_BADGE_DEFAULT_TAG = 'div';\n\ntype NavbarBadgeOwnProps = CommonProps & {\n children?: React.ReactNode;\n as?: React.ElementType;\n};\n\nexport type NavbarBadgeProps<\n E extends React.ElementType = typeof NAVBAR_BADGE_DEFAULT_TAG,\n> = PolymorphicProps<NavbarBadgeOwnProps, E>;\n\nfunction _NavbarBadge(\n props: NavbarBadgeProps<React.ElementType>,\n ref: React.Ref<any>,\n) {\n const {\n as: Comp = NAVBAR_BADGE_DEFAULT_TAG,\n children,\n className,\n testId = 'cf-ui-navbar-badge',\n ...otherProps\n } = props;\n const styles = getNavbarBadgeStyles();\n\n return (\n <Comp\n {...otherProps}\n ref={ref}\n className={cx(styles.navbarBadge, className)}\n data-test-id={testId}\n >\n {children}\n </Comp>\n );\n}\n\nexport const NavbarBadge: PolymorphicComponent<\n ExpandProps<NavbarBadgeOwnProps>,\n typeof NAVBAR_BADGE_DEFAULT_TAG\n> = React.forwardRef(_NavbarBadge);\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nexport const getNavbarBadgeStyles = () => ({\n navbarBadge: css({\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n background: 'none',\n border: `1px solid ${tokens.purple600}`,\n margin: 0,\n outline: 'none',\n fontSize: tokens.fontSizeS,\n lineHeight: tokens.lineHeightS,\n fontWeight: tokens.fontWeightMedium,\n textAlign: 'center',\n padding: `0 ${tokens.spacingXs}`,\n textDecoration: 'none',\n color: `${tokens.purple600}!important`,\n borderRadius: '1.75rem',\n userSelect: 'none',\n }),\n});\n","import React from 'react';\nimport { Menu, type MenuListProps, type MenuProps } from '@contentful/f36-menu';\nimport { getNavbarSubmenuStyles } from './NavbarMenu.styles';\nimport {\n NavbarItemIcon,\n type NavbarItemIconProps,\n} from '../NavbarItemIcon/NavbarItemIcon';\nimport { Flex } from '@contentful/f36-core';\n\nexport type NavbarSubmenuProps = {\n title: string;\n icon?: NavbarItemIconProps['icon'];\n children?: React.ReactNode;\n} & Pick<MenuListProps, 'testId'> &\n Pick<MenuProps, 'onOpen' | 'onClose'>;\n\nexport const NavbarSubmenu = (props: NavbarSubmenuProps) => {\n const {\n title,\n icon,\n children,\n testId = 'cf-ui-navbar-submenu-list',\n onOpen,\n onClose,\n } = props;\n const styles = getNavbarSubmenuStyles();\n\n return (\n <Menu.Submenu onOpen={onOpen} onClose={onClose}>\n <Menu.SubmenuTrigger>\n <Flex className={styles.navbarMenuItem}>\n {icon && <NavbarItemIcon icon={icon} />}\n <span>{title}</span>\n </Flex>\n </Menu.SubmenuTrigger>\n <Menu.List className={styles.menuList} testId={testId}>\n {children}\n </Menu.List>\n </Menu.Submenu>\n );\n};\n","import tokens from '@contentful/f36-tokens';\nimport { css } from 'emotion';\nimport { mqs } from '../utils.styles';\n\nexport const getNavbarSubmenuStyles = () => ({\n navbarMenuItem: css({\n display: 'flex',\n justifyContent: 'flex-start',\n alignItems: 'center',\n gap: tokens.spacingXs,\n }),\n menuList: css({\n minWidth: 0,\n marginLeft: '-24px',\n marginTop: '10px',\n [mqs.xsmall]: {\n minWidth: '250px',\n margin: 0,\n },\n }),\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/constants.ts","../../src/CompoundNavbar.ts","../../src/Navbar.tsx","../../src/Navbar.styles.ts","../../src/utils.styles.ts","../../src/icons/CaretIcon.tsx","../../src/icons/ContentfulLogoIcon.tsx","../../src/NavbarMenu/NavbarMenu.tsx","../../src/NavbarMenu/NavbarMenu.styles.ts","../../src/NavbarAccount/NavbarAccount.tsx","../../src/NavbarAccount/NavbarAccount.styles.ts","../../src/NavbarAccount/NavbarAccountSkeleton.tsx","../../src/NavbarItem/NavbarItem.tsx","../../src/NavbarItem/NavbarItem.styles.ts","../../src/NavbarItemIcon/NavbarItemIcon.tsx","../../src/NavbarItemIcon/NavbarItemIcon.styles.ts","../../src/NavbarItem/NavbarItemSkeleton.tsx","../../src/NavbarMenuItem/NavbarMenuItem.tsx","../../src/NavbarMenuItem/NavbarMenuItem.styles.ts","../../src/NavbarMenuItem/NavbarMenuItemSkeleton.tsx","../../src/NavbarSwitcher/NavbarSwitcher.tsx","../../src/NavbarSwitcher/NavbarSwitcher.styles.ts","../../src/NavbarSwitcher/NavbarEnvVariant.tsx","../../src/NavbarSwitcher/NavbarSwitcherSkeleton.tsx","../../src/NavbarBadge/NavbarBadge.tsx","../../src/NavbarBadge/NavbarBadge.styles.ts","../../src/NavbarSubmenu/NavbarSubmenu.tsx","../../src/NavbarSubmenu/NavbarMenu.styles.ts"],"names":["NAVBAR_HEIGHT","MenuDivider","MenuSectionTitle","Flex","React","css","tokens","mqs","getGlowOnFocusStyles","shadow","increaseHitArea","minSize","getNavbarStyles","contentMaxWidth","variant","generateComponentWithVariants","generateIconComponent","IconVariant","CaretIcon","ContentfulLogoIcon","cx","Button","ListIcon","Menu","getNavbarMenuStyles","NavbarMenu","props","trigger","children","testId","onOpen","onClose","styles","_Navbar","ref","_a","logo","promotions","switcher","mainNavigation","secondaryNavigation","account","mobileNavigation","className","otherProps","__objRest","__spreadProps","__spreadValues","Navbar","notificationVarianColorMap","getNavbarAccountStyles","Avatar","Tooltip","_NavbarAccount","avatar","label","initials","username","hasNotification","notificationVariant","NavbarAccount","SkeletonContainer","SkeletonImage","NavbarAccountSkeleton","ariaLabel","hexToRGBA","borderWidth","getNavbarItemActiveStyles","commonItemStyles","getNavbarItemStyles","hasTitle","getNavbarItemSkeletonStyles","getNavbarItemIconStyles","NavbarItemIcon","icon","isActive","iconClassName","size","rest","NAVBAR_ITEM_DEFAULT_TAG","_NavbarItem","Comp","title","isMenuTrigger","isNavbarItemHasMenu","showCaret","item","NavbarItem","SkeletonText","NavbarItemSkeleton","estimatedWidth","getNavbarMenuItemStyles","ArrowSquareOutIcon","NAVBAR_MENU_ITEM_DEFAULT_TAG","_NavbarMenuItem","itemIsExternalLink","isExternalLink","externalIcon","NavbarMenuItem","SkeletonBodyText","NavbarMenuItemSkeleton","BORDER_WIDTH","getNavbarSwitcherStyles","isMaster","showSpaceEnv","getEnvVariantColor","Box","EnvironmentAliasIcon","EnvironmentIcon","RocketLaunchIcon","NavbarEnvVariant","isAlias","envVariant","color","NavbarSwitcherSkeleton","CaretRightIcon","Text","splitString","string","startLength","endLength","start","end","remainder","SwitcherLabel","value","middle","_NavbarSwitcher","space","environment","isLoading","NavbarSwitcher","getNavbarBadgeStyles","NAVBAR_BADGE_DEFAULT_TAG","_NavbarBadge","NavbarBadge","getNavbarSubmenuStyles","NavbarSubmenu"],"mappings":"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","sourcesContent":["export const NAVBAR_HEIGHT = 60;\n","import { MenuDivider } from '@contentful/f36-menu';\nimport { MenuSectionTitle } from '@contentful/f36-menu';\nimport { Navbar as OriginalNavbar } from './Navbar';\n\nimport { NavbarAccount, NavbarAccountSkeleton } from './NavbarAccount';\nimport { NavbarItem, NavbarItemSkeleton } from './NavbarItem';\nimport { NavbarMenuItem, NavbarMenuItemSkeleton } from './NavbarMenuItem';\nimport { NavbarSwitcher, NavbarSwitcherSkeleton } from './NavbarSwitcher';\nimport { NavbarBadge } from './NavbarBadge/NavbarBadge';\nimport { NavbarSubmenu } from './NavbarSubmenu/NavbarSubmenu';\n\ntype CompoundNavbar = typeof OriginalNavbar & {\n Item: typeof NavbarItem;\n ItemSkeleton: typeof NavbarItemSkeleton;\n MenuItem: typeof NavbarMenuItem;\n MenuItemSkeleton: typeof NavbarMenuItemSkeleton;\n MenuDivider: typeof MenuDivider;\n MenuSectionTitle: typeof MenuSectionTitle;\n Submenu: typeof NavbarSubmenu;\n Switcher: typeof NavbarSwitcher;\n SwitcherSkeleton: typeof NavbarSwitcherSkeleton;\n Account: typeof NavbarAccount;\n AccountSkeleton: typeof NavbarAccountSkeleton;\n Badge: typeof NavbarBadge;\n};\n\nexport const Navbar = OriginalNavbar as CompoundNavbar;\nNavbar.Item = NavbarItem;\nNavbar.ItemSkeleton = NavbarItemSkeleton;\nNavbar.MenuItem = NavbarMenuItem;\nNavbar.MenuItemSkeleton = NavbarMenuItemSkeleton;\nNavbar.MenuDivider = MenuDivider;\nNavbar.MenuSectionTitle = MenuSectionTitle;\nNavbar.Submenu = NavbarSubmenu;\nNavbar.Switcher = NavbarSwitcher;\nNavbar.SwitcherSkeleton = NavbarSwitcherSkeleton;\nNavbar.Account = NavbarAccount;\nNavbar.AccountSkeleton = NavbarAccountSkeleton;\nNavbar.Badge = NavbarBadge;\n","import { type CommonProps, type ExpandProps, Flex } from '@contentful/f36-core';\nimport React from 'react';\nimport { getNavbarStyles } from './Navbar.styles';\nimport { ContentfulLogoIcon } from './icons';\nimport { cx } from 'emotion';\nimport { Button } from '@contentful/f36-button';\nimport { ListIcon } from '@contentful/f36-icons';\nimport { NavbarMenu } from './NavbarMenu/NavbarMenu';\n\ntype NavbarOwnProps = CommonProps & {\n /**\n * Accepts a React Component that will be displayed\n * instead of the Contentful Logo\n */\n logo?: React.ReactNode;\n\n /** Promotions component, displayed on most left side */\n promotions?: React.ReactNode;\n\n /** Environment Switcher component */\n switcher?: React.ReactNode;\n\n /** Main Navigation Elements */\n mainNavigation?: React.ReactNode;\n\n /** Secondary Navigation Elements, displayed in the right side */\n secondaryNavigation?: React.ReactNode;\n\n /** User Account Component */\n account?: React.ReactNode;\n\n /** Navigation displayed on mobile versions */\n mobileNavigation?: React.ReactNode;\n\n /**\n * Defines the max-width of the content inside the navbar.\n * @default '100%'\n */\n contentMaxWidth?: string;\n\n /**\n * Describes the size variation of the Navbar\n * Variant wide will set the contentMaxWidth to 1524px\n */\n variant?: 'wide' | 'fullscreen';\n};\n\n// expose only the HTML props that are needed to not pollute the API\ntype NavbarHTMLElementProps = Pick<React.ComponentPropsWithoutRef<'div'>, 'id'>;\n\nexport type NavbarProps = NavbarHTMLElementProps & NavbarOwnProps;\n\nfunction _Navbar(props: ExpandProps<NavbarProps>, ref: React.Ref<HTMLElement>) {\n const {\n logo,\n promotions,\n switcher,\n mainNavigation,\n secondaryNavigation,\n account,\n mobileNavigation,\n className,\n contentMaxWidth = '100%',\n testId = 'cf-ui-navbar',\n variant = 'wide',\n ...otherProps\n } = props;\n const styles = getNavbarStyles({ contentMaxWidth, variant });\n\n return (\n <Flex\n {...otherProps}\n ref={ref}\n testId={testId}\n className={cx(styles.container, className)}\n as=\"header\"\n >\n <Flex\n as=\"nav\"\n className={styles.navigation}\n justifyContent=\"space-between\"\n gap=\"spacingXs\"\n >\n <Flex alignItems=\"center\" gap=\"spacingL\">\n {logo || <ContentfulLogoIcon className={styles.logo} />}\n {mobileNavigation && (\n <NavbarMenu\n trigger={\n <Button\n className={styles.mobileNavigationButton}\n startIcon={<ListIcon size=\"medium\" />}\n >\n Menu\n </Button>\n }\n >\n {mobileNavigation}\n </NavbarMenu>\n )}\n {mainNavigation && (\n <Flex\n className={styles.mainNavigation}\n aria-label=\"Main Navigation\"\n gap=\"spacingXs\"\n >\n {mainNavigation}\n </Flex>\n )}\n </Flex>\n <Flex alignItems=\"center\" gap=\"spacingXs\">\n <Flex alignItems=\"center\">{promotions}</Flex>\n <Flex alignItems=\"center\">{switcher}</Flex>\n <Flex alignItems=\"center\" gap=\"spacingXs\">\n {secondaryNavigation && (\n <Flex\n className={styles.secondaryNavigationWrapper}\n aria-label=\"Secondary Navigation\"\n gap=\"spacingXs\"\n >\n {secondaryNavigation}\n </Flex>\n )}\n {account && (\n <Flex\n className={styles.account}\n aria-label=\"Account Navigation\"\n gap=\"spacingXs\"\n >\n {account}\n </Flex>\n )}\n </Flex>\n </Flex>\n </Flex>\n </Flex>\n );\n}\n\nexport const Navbar = React.forwardRef(_Navbar);\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\nimport { mqs } from './utils.styles';\nimport { NavbarProps } from './Navbar';\nimport { NAVBAR_HEIGHT } from './constants';\n\nexport const getNavbarStyles = ({\n contentMaxWidth,\n variant,\n}: Pick<NavbarProps, 'contentMaxWidth' | 'variant'>) => ({\n container: css({\n justifyContent: 'center',\n backgroundColor: tokens.gray100,\n width: '100%',\n }),\n logo: css({\n display: 'none',\n [mqs.small]: {\n display: 'block',\n height: '28px',\n width: '28px',\n },\n }),\n\n navigation: css({\n width: '100%',\n maxWidth: variant === 'wide' ? '1920px' : contentMaxWidth,\n padding: `${tokens.spacingS} ${tokens.spacingM}`,\n height: `${NAVBAR_HEIGHT}px`,\n [mqs.small]: {\n padding: `${tokens.spacingM} ${tokens.spacingL}`,\n },\n }),\n\n mainNavigation: css({\n display: 'none',\n [mqs.small]: {\n display: 'flex',\n },\n }),\n\n mobileNavigationButton: css({\n display: 'flex',\n minHeight: 'initial', // unset default 40px height\n height: '36px',\n padding: '0 12px',\n borderRadius: '10px',\n [mqs.small]: {\n display: 'none',\n },\n }),\n mobileNavigationIcon: css({\n heigt: '20px',\n width: '20px',\n }),\n\n secondaryNavigationWrapper: css({\n '> *:not(:first-child)': {\n display: 'none',\n [mqs.xsmall]: {\n display: 'flex',\n },\n },\n }),\n\n account: css({\n display: 'none',\n [mqs.xsmall]: {\n display: 'flex',\n },\n }),\n});\n","import tokens from '@contentful/f36-tokens';\nimport type { CSSObject } from '@emotion/serialize';\n\ntype screens = 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge';\ntype mediaqueries = Record<screens, string>;\nexport const mqs: mediaqueries = {\n xsmall: '@media (min-width: 576px)',\n small: '@media (min-width: 867px)',\n medium: '@media (min-width: 1024px)',\n large: '@media (min-width: 1200px)',\n xlarge: '@media (min-width: 1920px)',\n};\n\nexport const getGlowOnFocusStyles = (\n shadow: string = tokens.glowPrimary,\n): CSSObject => ({\n '&:focus': {\n boxShadow: shadow,\n },\n '&:focus:not(:focus-visible)': {\n boxShadow: 'unset',\n },\n '&:focus-visible': {\n boxShadow: shadow,\n },\n});\n\nexport const increaseHitArea = (minSize = '44px'): CSSObject => ({\n overflow: 'visible',\n position: 'relative',\n '&:after': {\n minHeight: minSize,\n minWidth: minSize,\n position: 'absolute',\n width: '100%',\n content: '\"\"',\n left: '50%',\n top: '50%',\n transform: 'translate(-50%, -50%)',\n },\n});\n","import React from 'react';\nimport tokens from '@contentful/f36-tokens';\nimport {\n generateComponentWithVariants,\n generateIconComponent,\n IconVariant,\n} from '@contentful/f36-icon';\n\nexport const CaretIcon = generateComponentWithVariants({\n variants: {\n [IconVariant.Active]: generateIconComponent({\n path: (\n <>\n <path\n d=\"M10.0153 4.76531L6.2653 8.51531C6.23048 8.55018 6.18912 8.57784 6.14359 8.59671C6.09807 8.61558 6.04927 8.62529 5.99999 8.62529C5.95071 8.62529 5.90191 8.61558 5.85639 8.59671C5.81086 8.57784 5.76951 8.55018 5.73468 8.51531L1.98468 4.76531C1.93217 4.71287 1.89641 4.64602 1.88192 4.57324C1.86742 4.50046 1.87485 4.42501 1.90326 4.35645C1.93166 4.28789 1.97977 4.22931 2.0415 4.1881C2.10322 4.1469 2.17578 4.12494 2.24999 4.125H9.74999C9.8242 4.12494 9.89676 4.1469 9.95848 4.1881C10.0202 4.22931 10.0683 4.28789 10.0967 4.35645C10.1251 4.42501 10.1326 4.50046 10.1181 4.57324C10.1036 4.64602 10.0678 4.71287 10.0153 4.76531Z\"\n fill={tokens.blue300}\n />\n </>\n ),\n viewBox: '0 0 12 12',\n }),\n [IconVariant.Default]: generateIconComponent({\n path: (\n <>\n <path\n d=\"M10.0153 4.76531L6.2653 8.51531C6.23048 8.55018 6.18912 8.57784 6.14359 8.59671C6.09807 8.61558 6.04927 8.62529 5.99999 8.62529C5.95071 8.62529 5.90191 8.61558 5.85639 8.59671C5.81086 8.57784 5.76951 8.55018 5.73468 8.51531L1.98468 4.76531C1.93217 4.71287 1.89641 4.64602 1.88192 4.57324C1.86742 4.50046 1.87485 4.42501 1.90326 4.35645C1.93166 4.28789 1.97977 4.22931 2.0415 4.1881C2.10322 4.1469 2.17578 4.12494 2.24999 4.125H9.74999C9.8242 4.12494 9.89676 4.1469 9.95848 4.1881C10.0202 4.22931 10.0683 4.28789 10.0967 4.35645C10.1251 4.42501 10.1326 4.50046 10.1181 4.57324C10.1036 4.64602 10.0678 4.71287 10.0153 4.76531Z\"\n fill={tokens.gray400}\n />\n </>\n ),\n viewBox: '0 0 12 12',\n }),\n },\n});\n","import React from 'react';\nimport { generateIconComponent } from '@contentful/f36-icon';\n\nexport const ContentfulLogoIcon = /*#__PURE__*/ generateIconComponent({\n name: 'ContentfulLogoIcon',\n viewBox: '0 0 28 28',\n path: (\n <>\n <path\n fill=\"#1773EB\"\n d=\"M10.713 5.001c.845.843 1.167 2.079.845 3.228A6.663 6.663 0 0 1 15 7.276h.026a6.7 6.7 0 0 1 4.743 1.988 2.64 2.64 0 1 0 3.746-3.715A11.96 11.96 0 0 0 15.042 2h-.046a11.933 11.933 0 0 0-6.691 2.036h.074a3.287 3.287 0 0 1 2.334.967V5Z\"\n />\n <path\n fill=\"#E44F20\"\n d=\"M21.594 17.999a2.64 2.64 0 0 0-1.858.766 6.703 6.703 0 0 1-4.732 1.951h-.025a6.65 6.65 0 0 1-3.447-.968A3.3 3.3 0 0 1 8.35 23.93h-.086A11.926 11.926 0 0 0 14.96 26h.046a11.94 11.94 0 0 0 8.449-3.484 2.64 2.64 0 0 0-1.859-4.514V18h-.002Z\"\n />\n <path\n fill=\"#FFDA00\"\n d=\"M6.013 18.295a3.27 3.27 0 0 1 2.334-.967c.302 0 .603.04.894.122a6.7 6.7 0 0 1 .013-6.928A3.3 3.3 0 0 1 5.08 7.335v-.09a11.999 11.999 0 0 0-.032 13.453v-.07a3.27 3.27 0 0 1 .966-2.333Z\"\n />\n <path\n fill=\"#1773EB\"\n d=\"M8.379 4.62c-.75 0-1.276.312-1.913.949-.607.605-.798 1.135-.8 1.766A2.712 2.712 0 1 0 8.38 4.62Z\"\n />\n <path\n fill=\"#E44F20\"\n d=\"M5.628 20.631c0 .75.31 1.276.946 1.912.607.606 1.136.799 1.766.8a2.703 2.703 0 1 0-.017-5.407 2.703 2.703 0 0 0-2.695 2.704v-.009Z\"\n />\n </>\n ),\n});\n","import React from 'react';\nimport { Menu, type MenuListProps, type MenuProps } from '@contentful/f36-menu';\nimport { getNavbarMenuStyles } from './NavbarMenu.styles';\n\nexport type NavbarMenuProps = {\n trigger: React.ReactNode;\n children?: React.ReactNode;\n} & Pick<MenuListProps, 'testId'> &\n Pick<MenuProps, 'onOpen' | 'onClose'>;\n\nexport const NavbarMenu = (props: NavbarMenuProps) => {\n const {\n trigger,\n children,\n testId = 'cf-ui-navbar-menu-list',\n onOpen,\n onClose,\n } = props;\n const styles = getNavbarMenuStyles();\n\n return (\n <Menu onOpen={onOpen} onClose={onClose}>\n <Menu.Trigger>{trigger}</Menu.Trigger>\n <Menu.List className={styles.menuList} testId={testId}>\n {children}\n </Menu.List>\n </Menu>\n );\n};\n","import { css } from 'emotion';\nimport { mqs } from '../utils.styles';\n\nexport const getNavbarMenuStyles = () => ({\n menuList: css({\n minWidth: 0,\n [mqs.xsmall]: {\n minWidth: '250px',\n },\n }),\n});\n","import React from 'react';\nimport { cx } from 'emotion';\nimport { getNavbarAccountStyles } from './NavbarAccount.styles';\nimport {\n type PropsWithHTMLElement,\n type CommonProps,\n type ExpandProps,\n} from '@contentful/f36-core';\nimport { NavbarMenu } from '../NavbarMenu/NavbarMenu';\nimport { Flex } from '@contentful/f36-core';\nimport { Avatar } from '@contentful/f36-avatar';\nimport { Tooltip } from '@contentful/f36-tooltip';\n\ntype NavbarAccountOwnProps = CommonProps & {\n children: React.ReactNode;\n username: string;\n avatar?: string;\n initials?: string;\n hasNotification?: boolean;\n label?: string;\n /**\n * @default 'warning'\n */\n notificationVariant?: 'warning' | 'negative' | 'info';\n};\n\nexport type NavbarAccountProps = PropsWithHTMLElement<\n NavbarAccountOwnProps,\n 'button'\n>;\n\nfunction _NavbarAccount(\n props: ExpandProps<NavbarAccountProps>,\n ref: React.Ref<HTMLButtonElement>,\n) {\n const {\n children,\n className,\n testId = 'cf-ui-navbar-account-trigger',\n avatar,\n label = 'Account menu',\n initials,\n username,\n hasNotification,\n notificationVariant = 'warning',\n ...otherProps\n } = props;\n const styles = getNavbarAccountStyles();\n\n return (\n <NavbarMenu\n trigger={\n <div>\n <Tooltip placement=\"bottom\" content={label} showDelay={600} usePortal>\n <Flex\n as=\"button\"\n {...otherProps}\n ref={ref}\n className={cx(styles.navbarAccount, className)}\n testId={testId}\n alignItems=\"center\"\n aria-label={label}\n >\n <Avatar\n src={avatar}\n initials={initials}\n size=\"small\"\n variant=\"user\"\n />\n\n {hasNotification ? (\n <span\n className={styles.notificationIcon(notificationVariant)}\n />\n ) : null}\n </Flex>\n </Tooltip>\n </div>\n }\n >\n {children}\n </NavbarMenu>\n );\n}\n\nexport const NavbarAccount = React.forwardRef(_NavbarAccount);\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\nimport { NavbarAccountProps } from './NavbarAccount';\nimport { getGlowOnFocusStyles, increaseHitArea } from '../utils.styles';\n\nconst notificationVarianColorMap: Record<\n NavbarAccountProps['notificationVariant'],\n string\n> = {\n warning: tokens.colorWarning,\n negative: tokens.colorNegative,\n info: tokens.blue500,\n};\n\nexport const getNavbarAccountStyles = () => ({\n navbarAccount: css(\n {\n cursor: 'pointer',\n background: 'none',\n position: 'relative',\n outline: 'none',\n overflow: 'visible',\n borderRadius: '50%',\n border: 'none',\n padding: 0,\n '&:hover img': {\n filter: 'brightness(0.9)',\n },\n },\n getGlowOnFocusStyles(),\n increaseHitArea(),\n ),\n notificationIcon: (variant: NavbarAccountProps['notificationVariant']) =>\n css({\n position: 'absolute',\n top: 0,\n right: 0,\n height: tokens.spacingS,\n width: tokens.spacingS,\n borderRadius: '50%',\n border: `2px solid ${tokens.gray100}`,\n backgroundColor: notificationVarianColorMap[variant],\n transform: 'translate(30%, -30%)',\n zIndex: 1, // move above the avatar\n }),\n});\n","import React from 'react';\nimport { SkeletonContainer, SkeletonImage } from '@contentful/f36-skeleton';\nimport tokens from '@contentful/f36-tokens';\n\nexport function NavbarAccountSkeleton({ ariaLabel }: { ariaLabel?: string }) {\n return (\n <SkeletonContainer\n svgWidth={24}\n svgHeight={24}\n ariaLabel={ariaLabel}\n backgroundColor={tokens.gray300}\n foregroundColor={tokens.gray200}\n >\n <SkeletonImage width={24} height={24} radiusX={12} radiusY={12} />\n </SkeletonContainer>\n );\n}\n","import React from 'react';\nimport { cx } from 'emotion';\nimport { getNavbarItemStyles } from './NavbarItem.styles';\nimport { NavbarMenu, type NavbarMenuProps } from '../NavbarMenu/NavbarMenu';\nimport {\n NavbarItemIcon,\n type NavbarItemIconProps,\n} from '../NavbarItemIcon/NavbarItemIcon';\nimport { CaretIcon } from '../icons';\nimport type {\n CommonProps,\n ExpandProps,\n PolymorphicComponent,\n PolymorphicProps,\n} from '@contentful/f36-core';\nimport { Tooltip } from '@contentful/f36-tooltip';\n\nconst NAVBAR_ITEM_DEFAULT_TAG = 'button';\n\ntype NavbarItemTriggerProps = CommonProps & {\n label?: string;\n title?: string;\n icon?: NavbarItemIconProps['icon'];\n isActive?: boolean;\n as?: React.ElementType;\n};\n\ntype NavbarItemAsMenuProps = NavbarItemTriggerProps &\n Pick<NavbarMenuProps, 'onOpen' | 'onClose'> & {\n children: React.ReactNode;\n };\ntype NavbarItemAsItemProps = NavbarItemTriggerProps & {\n children?: never;\n onOpen?: never;\n onClose?: never;\n};\ntype NavbarItemOwnProps = NavbarItemAsItemProps | NavbarItemAsMenuProps;\n\nexport type NavbarItemProps<\n E extends React.ElementType = typeof NAVBAR_ITEM_DEFAULT_TAG,\n> = PolymorphicProps<NavbarItemOwnProps, E>;\n\nfunction _NavbarItem(\n props: NavbarItemProps<React.ElementType>,\n ref: React.Ref<any>,\n) {\n const {\n as: Comp = NAVBAR_ITEM_DEFAULT_TAG,\n icon,\n label,\n title,\n children,\n className,\n isActive,\n testId = 'cf-ui-navbar-item',\n onOpen,\n onClose,\n ...otherProps\n } = props;\n const styles = getNavbarItemStyles({ hasTitle: !!title });\n const isMenuTrigger = isNavbarItemHasMenu(props);\n const showCaret = title && isMenuTrigger;\n let item = (\n <Comp\n {...otherProps}\n ref={ref}\n data-test-id={testId}\n className={cx(styles.navbarItem, className, {\n [styles.navbarItemMenuTrigger]: showCaret,\n [styles.isActive]: isActive,\n })}\n aria-label={title ? '' : label}\n >\n {icon && (\n <NavbarItemIcon\n className={styles.icon}\n icon={icon}\n isActive={isActive}\n />\n )}\n {title && <span>{title}</span>}\n {showCaret && <CaretIcon size=\"tiny\" isActive={isActive} />}\n </Comp>\n );\n\n if (!title) {\n item = (\n <div>\n <Tooltip content={label} placement=\"bottom\" showDelay={600} usePortal>\n {item}\n </Tooltip>\n </div>\n );\n }\n\n if (isMenuTrigger) {\n return (\n <NavbarMenu\n trigger={item}\n testId={testId}\n onOpen={onOpen}\n onClose={onClose}\n >\n {children}\n </NavbarMenu>\n );\n }\n\n return item;\n}\n\nconst isNavbarItemHasMenu = <E extends React.ElementType>(\n props: NavbarItemProps<E>,\n): props is PolymorphicProps<NavbarItemAsMenuProps, E> =>\n Boolean(props.children);\n\nexport const NavbarItem: PolymorphicComponent<\n ExpandProps<NavbarItemOwnProps>,\n typeof NAVBAR_ITEM_DEFAULT_TAG\n> = React.forwardRef(_NavbarItem);\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\nimport { hexToRGBA } from '@contentful/f36-utils';\nimport { getGlowOnFocusStyles, increaseHitArea, mqs } from '../utils.styles';\n\nconst borderWidth = '1px';\n\nexport const getNavbarItemActiveStyles = () =>\n css({\n backgroundColor: tokens.blue100,\n border: `${borderWidth} solid ${tokens.blue400}`,\n color: tokens.blue600,\n '&:hover': {\n backgroundColor: tokens.blue100,\n },\n });\n\nconst commonItemStyles = {\n display: 'flex',\n justifyContent: 'center',\n padding: `calc(${tokens.spacing2Xs} - ${borderWidth}) calc(${tokens.spacingXs} - ${borderWidth})`,\n alignItems: 'center',\n background: 'none',\n gap: tokens.spacing2Xs,\n};\n\nexport const getNavbarItemStyles = ({ hasTitle }: { hasTitle: boolean }) => ({\n navbarItem: css(\n commonItemStyles,\n {\n appearance: 'none',\n background: 'none',\n border: `${borderWidth} solid transparent`,\n margin: 0,\n outline: 'none',\n fontSize: tokens.fontSizeM,\n lineHeight: tokens.lineHeightM,\n fontWeight: tokens.fontWeightMedium,\n position: 'relative',\n textAlign: 'left',\n whiteSpace: 'nowrap',\n cursor: 'pointer',\n hyphens: 'auto',\n textDecoration: 'none',\n color: tokens.gray800,\n boxSizing: 'border-box',\n transition: `color ${tokens.transitionDurationShort} ${tokens.transitionEasingCubicBezier}`,\n borderRadius: tokens.borderRadiusMedium,\n height: '30px',\n\n padding: hasTitle\n ? undefined\n : `calc(${tokens.spacing2Xs} - ${borderWidth})`, // square button for icon-only items\n\n '&:hover': {\n backgroundColor: hexToRGBA(tokens.gray900, 0.05),\n },\n\n '&:hover::before': {\n opacity: 1,\n scale: '1',\n },\n\n '&:active::before': {\n backgroundColor: `rgba(255, 255, 255, 0.1)`,\n },\n '&:disabled': {\n cursor: 'auto',\n },\n\n '& svg': {\n transition: `fill ${tokens.transitionDurationShort} ${tokens.transitionEasingCubicBezier}`,\n },\n '& > svg, & > span': {\n zIndex: tokens.zIndexDefault,\n },\n },\n getGlowOnFocusStyles(),\n increaseHitArea(),\n ),\n navbarItemMenuTrigger: css({\n paddingRight: tokens.spacingXs,\n }),\n isActive: getNavbarItemActiveStyles(),\n icon: css({\n height: '20px',\n width: '20px',\n boxSizing: 'content-box',\n display: hasTitle ? 'none' : 'block',\n [mqs.small]: {\n height: '16px',\n width: '16px',\n padding: hasTitle ? '2px 0' : '2px', // square for icon-only items\n },\n [mqs.large]: {\n display: 'block',\n },\n }),\n});\n\nexport const getNavbarItemSkeletonStyles = () => ({\n itemSkeleton: css(commonItemStyles),\n});\n","import React from 'react';\nimport type { IconProps } from '@contentful/f36-icons';\nimport { getNavbarItemIconStyles } from './NavbarItemIcon.styles';\nimport { cx } from 'emotion';\n\nexport type NavbarItemIconProps = {\n icon: React.ReactElement<IconProps>;\n className?: string;\n} & Partial<Pick<IconProps, 'isActive'>>;\n\nexport const NavbarItemIcon = ({\n icon,\n isActive,\n className,\n}: NavbarItemIconProps) => {\n const { className: iconClassName, size, ...rest } = icon.props;\n const styles = getNavbarItemIconStyles();\n\n return React.cloneElement(icon, {\n className: cx(iconClassName, styles.navbarItemIcon, className),\n size: size || 'small',\n isActive,\n ...rest,\n });\n};\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nexport const getNavbarItemIconStyles = () => ({\n navbarItemIcon: css({\n '&:last-child&:not(:only-child)': {\n marginLeft: tokens.spacing2Xs,\n },\n 'img&': {\n borderRadius: tokens.borderRadiusSmall,\n maxWidth: tokens.spacingM,\n maxHeight: tokens.spacingM,\n },\n }),\n});\n","import React from 'react';\nimport { SkeletonContainer, SkeletonText } from '@contentful/f36-skeleton';\nimport tokens from '@contentful/f36-tokens';\nimport { getNavbarItemSkeletonStyles } from './NavbarItem.styles';\n\nexport const NavbarItemSkeleton = ({\n estimatedWidth,\n}: {\n estimatedWidth: number;\n}) => {\n const styles = getNavbarItemSkeletonStyles();\n\n return (\n <SkeletonContainer\n className={styles.itemSkeleton}\n svgWidth={estimatedWidth}\n svgHeight={28}\n backgroundColor={tokens.gray300}\n foregroundColor={tokens.gray200}\n >\n <SkeletonText\n lineHeight={18}\n numberOfLines={1}\n offsetTop={2}\n radiusX={tokens.borderRadiusSmall}\n radiusY={tokens.borderRadiusSmall}\n />\n </SkeletonContainer>\n );\n};\n","import React from 'react';\nimport { cx } from 'emotion';\nimport { getNavbarMenuItemStyles } from './NavbarMenuItem.styles';\nimport { Menu, type MenuItemProps } from '@contentful/f36-menu';\nimport {\n NavbarItemIcon,\n type NavbarItemIconProps,\n} from '../NavbarItemIcon/NavbarItemIcon';\nimport { ArrowSquareOutIcon } from '@contentful/f36-icons';\nimport type {\n ExpandProps,\n PolymorphicComponent,\n PolymorphicProps,\n} from '@contentful/f36-core';\n\nconst NAVBAR_MENU_ITEM_DEFAULT_TAG = 'button';\n\ntype NavbarMenuItemOwnProps = {\n children?: null;\n title: string;\n icon?: NavbarItemIconProps['icon'];\n as?: React.ElementType;\n} & Omit<MenuItemProps, 'children' | 'as'>;\n\nexport type NavbarMenuItemProps<\n E extends React.ElementType = typeof NAVBAR_MENU_ITEM_DEFAULT_TAG,\n> = PolymorphicProps<NavbarMenuItemOwnProps, E>;\n\nfunction _NavbarMenuItem(\n props: NavbarMenuItemProps<React.ElementType>,\n ref: React.Ref<any>,\n) {\n const {\n as: Comp = NAVBAR_MENU_ITEM_DEFAULT_TAG,\n icon,\n title,\n className,\n ...otherProps\n } = props;\n const styles = getNavbarMenuItemStyles();\n\n const itemIsExternalLink = isExternalLink(\n props as unknown as NavbarMenuItemProps<'a'>,\n );\n\n return (\n <Menu.Item\n {...otherProps}\n ref={ref}\n as={Comp as MenuItemProps['as']}\n className={cx(styles.navbarMenuItem, className)}\n >\n {icon ? (\n <NavbarItemIcon icon={icon} />\n ) : (\n itemIsExternalLink && externalIcon\n )}\n <span>{title}</span>\n {icon && itemIsExternalLink ? externalIcon : null}\n </Menu.Item>\n );\n}\n\nconst externalIcon = <NavbarItemIcon icon={<ArrowSquareOutIcon />} />;\n\nconst isExternalLink = (props: NavbarMenuItemProps<'a'>) =>\n props.as === 'a' && props.target === '_blank';\n\nexport const NavbarMenuItem: PolymorphicComponent<\n ExpandProps<NavbarMenuItemOwnProps>,\n typeof NAVBAR_MENU_ITEM_DEFAULT_TAG\n> = React.forwardRef(_NavbarMenuItem);\n","import { css } from 'emotion';\nexport const getNavbarMenuItemStyles = () => ({\n navbarMenuItem: css({\n display: 'flex',\n justifyContent: 'flex-start',\n alignItems: 'center',\n }),\n});\n","import React from 'react';\nimport { Menu } from '@contentful/f36-menu';\nimport {\n SkeletonBodyText,\n SkeletonContainer,\n SkeletonImage,\n} from '@contentful/f36-skeleton';\nimport { Flex } from '@contentful/f36-core';\n\nimport tokens from '@contentful/f36-tokens';\n\nexport const NavbarMenuItemSkeleton = ({\n ariaLabel,\n}: {\n ariaLabel?: string;\n}) => (\n <Menu.Item>\n <Flex alignItems=\"center\" gap={tokens.spacingXs}>\n <SkeletonContainer svgHeight={16} svgWidth={18}>\n <SkeletonImage width={16} height={16} />\n </SkeletonContainer>\n <SkeletonContainer svgHeight={16} svgWidth={190} ariaLabel={ariaLabel}>\n <SkeletonBodyText numberOfLines={1} />\n </SkeletonContainer>\n </Flex>\n </Menu.Item>\n);\n","import React from 'react';\nimport { getNavbarSwitcherStyles } from './NavbarSwitcher.styles';\nimport { Button } from '@contentful/f36-button';\nimport {\n Flex,\n type CommonProps,\n type PropsWithHTMLElement,\n type ExpandProps,\n Box,\n} from '@contentful/f36-core';\nimport { cx } from 'emotion';\nimport { NavbarEnvVariant } from './NavbarEnvVariant';\nimport { NavbarSwitcherSkeleton } from './NavbarSwitcherSkeleton';\nimport { CaretRightIcon } from '@contentful/f36-icons';\nimport { Text } from '@contentful/f36-typography';\nimport tokens from '@contentful/f36-tokens';\n\ntype TruncateOptions = {\n /**\n * Number of characters to keep at the start of the string\n * @default 5\n */\n start?: number;\n /**\n * Number of characters to keep at the end of the string\n * @default 6\n */\n end?: number;\n};\n\nfunction splitString(\n string: string,\n {\n start: startLength = 5,\n end: endLength = 6,\n }: TruncateOptions | undefined = {},\n) {\n if (string.length <= startLength + endLength) {\n return [string, undefined, undefined];\n }\n\n const start = startLength > 0 ? string.slice(0, startLength) : '';\n const end = endLength > 0 ? string.slice(-endLength) : '';\n const remainder = string.slice(startLength, string.length - endLength);\n\n return [start, remainder, end];\n}\n\nexport type EnvVariant = 'master' | 'non-master';\n\ntype NavbarLoadingProps =\n | {\n isLoading?: true;\n children?: React.ReactNode;\n environment?: never;\n space?: never;\n }\n | {\n isLoading?: false;\n children?: never;\n environment?: string;\n space?: string;\n };\n\ntype NavbarSwitcherOwnProps = CommonProps &\n NavbarLoadingProps & {\n isCircle?: boolean;\n envVariant?: EnvVariant;\n isAlias?: boolean;\n ariaLabel?: string;\n };\n\nexport type NavbarSwitcherProps = PropsWithHTMLElement<\n NavbarSwitcherOwnProps,\n 'button'\n>;\n\ntype SwitcherLabelProps = {\n value: React.ReactNode;\n styles: ReturnType<typeof getNavbarSwitcherStyles>;\n envVariant?: EnvVariant;\n};\n\nconst SwitcherLabel = ({ value, styles }: SwitcherLabelProps) => {\n const [start, middle, end] =\n typeof value === 'string' ? splitString(value) : [];\n\n return start !== undefined ? (\n <Text className={styles.text}>\n <span>{start}</span>\n {middle && (\n <span className={styles.switcherSpaceNameTruncation}>{middle}</span>\n )}\n {end && <span>{end}</span>}\n </Text>\n ) : (\n <Text className={styles.text}>{value}</Text>\n );\n};\n\nfunction _NavbarSwitcher(\n props: ExpandProps<NavbarSwitcherProps>,\n ref: React.Ref<HTMLButtonElement>,\n) {\n const {\n children,\n className,\n envVariant,\n isAlias,\n testId = 'cf-ui-navbar-switcher',\n ariaLabel = 'Space and Environment Navigation',\n space,\n environment,\n isLoading,\n ...otherProps\n } = props;\n const isMaster = envVariant === 'master';\n const styles = getNavbarSwitcherStyles({ isMaster });\n\n return (\n <Button\n {...otherProps}\n aria-label={ariaLabel}\n className={cx(\n styles.navbarSwitcher({ showSpaceEnv: !isLoading && !children }),\n className,\n )}\n endIcon={\n envVariant && (\n <NavbarEnvVariant\n envVariant={envVariant}\n isAlias={isAlias}\n className={styles.switcherEnvIcon}\n />\n )\n }\n ref={ref}\n testId={testId}\n variant=\"transparent\"\n >\n <Flex\n alignItems=\"center\"\n className={styles.switcherSpaceName}\n flexDirection=\"row\"\n >\n {isLoading ? (\n <NavbarSwitcherSkeleton estimatedWidth={148} />\n ) : (\n <>\n {children ? (\n <Text className={styles.text}>{children}</Text>\n ) : (\n <Flex gap={tokens.spacingXs}>\n <Box className={styles.innerRectangle} />\n\n <Flex\n className={styles.innerSpaceEnv}\n gap={tokens.spacing2Xs}\n alignItems=\"center\"\n >\n <SwitcherLabel value={space} styles={styles} />\n\n {environment && (\n <>\n <CaretRightIcon\n size=\"tiny\"\n color={isMaster ? tokens.green700 : tokens.orange700}\n />\n <SwitcherLabel\n envVariant={envVariant}\n value={environment}\n styles={styles}\n />\n </>\n )}\n </Flex>\n </Flex>\n )}\n </>\n )}\n </Flex>\n </Button>\n );\n}\n\nexport const NavbarSwitcher = React.forwardRef(_NavbarSwitcher);\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\nimport { hexToRGBA } from '@contentful/f36-utils';\n\nimport { getGlowOnFocusStyles, increaseHitArea, mqs } from '../utils.styles';\n\nconst BORDER_WIDTH = 1;\n\nexport const getNavbarSwitcherStyles = ({\n isMaster,\n}: {\n isMaster: boolean;\n}) => ({\n text: css({\n color: 'currentcolor',\n fontWeight: 'inherit',\n }),\n\n navbarSwitcher: ({ showSpaceEnv }: { showSpaceEnv: boolean }) =>\n css(\n {\n color: tokens.gray600,\n flexShrink: 1,\n fontWeight: tokens.fontWeightMedium,\n maxWidth: '100%',\n minHeight: 'unset',\n padding: `${tokens.spacing2Xs} ${tokens.spacingXs}`,\n '&:hover': {\n backgroundColor: hexToRGBA(tokens.gray900, 0.05),\n },\n },\n showSpaceEnv && getEnvVariantColor(isMaster),\n getGlowOnFocusStyles(),\n increaseHitArea(),\n ),\n\n innerRectangle: css({\n width: `calc(8px - ${BORDER_WIDTH}px)`,\n borderTopLeftRadius: `calc(${tokens.borderRadiusMedium} - ${BORDER_WIDTH}px)`,\n borderBottomLeftRadius: `calc(${tokens.borderRadiusMedium} - ${BORDER_WIDTH}px)`,\n background: isMaster\n ? tokens.green300\n : `linear-gradient(\n -45deg, \n ${tokens.orange300} 28.57%, \n transparent 28.57%, \n transparent 50%, \n ${tokens.orange300} 50%, \n ${tokens.orange300} 78.57%, \n transparent 78.57%, \n transparent 100%\n )`,\n backgroundSize: isMaster ? 'inherit' : '9px 9px',\n backgroundPosition: 'bottom',\n }),\n\n innerSpaceEnv: css({\n height: '26px',\n }),\n\n switcherSpaceName: css({\n // Set min-width only when there are three span children\n '&:has(> span:last-child:nth-child(3))': {\n minWidth: '12ch',\n },\n maxWidth: '15vw',\n [mqs.xsmall]: {\n maxWidth: '50vw',\n },\n [mqs.small]: {\n maxWidth: '10vw',\n },\n [mqs.medium]: {\n maxWidth: '50vw',\n },\n }),\n\n switcherEnvIcon: css({\n [mqs.small]: {\n width: '16px',\n height: '16px',\n },\n }),\n\n switcherSpaceNameTruncation: css({\n flexShrink: 1,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }),\n});\n\nconst getEnvVariantColor = (isMaster: boolean) => ({\n padding: '0',\n paddingRight: tokens.spacingXs,\n color: isMaster ? tokens.green700 : tokens.orange700,\n backgroundColor: isMaster ? tokens.green100 : tokens.orange100,\n border: `${BORDER_WIDTH}px solid ${\n isMaster ? tokens.green400 : tokens.orange400\n }`,\n\n '&:hover, &:active': {\n backgroundColor: isMaster ? tokens.green200 : tokens.orange200,\n },\n});\n","import React from 'react';\nimport { NavbarSwitcherProps } from '../NavbarSwitcher/NavbarSwitcher';\nimport {\n EnvironmentAliasIcon,\n EnvironmentIcon,\n RocketLaunchIcon,\n} from '@contentful/f36-icons';\nimport tokens from '@contentful/f36-tokens';\n\nexport type NavbarEnvVariantProps = Pick<\n NavbarSwitcherProps,\n 'isAlias' | 'envVariant'\n> & {\n className?: string;\n};\n\nexport function NavbarEnvVariant({\n isAlias,\n envVariant,\n className,\n}: NavbarEnvVariantProps) {\n const isMaster = envVariant === 'master';\n const color = isMaster ? tokens.green700 : tokens.orange700;\n\n if (isMaster) {\n return (\n <RocketLaunchIcon color={color} className={className} size=\"medium\" />\n );\n } else if (isAlias) {\n return (\n <EnvironmentAliasIcon color={color} className={className} size=\"medium\" />\n );\n } else {\n return (\n <EnvironmentIcon color={color} className={className} size=\"medium\" />\n );\n }\n}\n","import React from 'react';\nimport { SkeletonContainer, SkeletonText } from '@contentful/f36-skeleton';\nimport tokens from '@contentful/f36-tokens';\n\nexport const NavbarSwitcherSkeleton = ({\n estimatedWidth,\n}: {\n estimatedWidth: number;\n}) => (\n <SkeletonContainer\n svgWidth={estimatedWidth}\n svgHeight={18}\n backgroundColor={tokens.gray300}\n foregroundColor={tokens.gray200}\n >\n <SkeletonText\n lineHeight={18}\n numberOfLines={1}\n radiusX={tokens.borderRadiusSmall}\n radiusY={tokens.borderRadiusSmall}\n />\n </SkeletonContainer>\n);\n","import React from 'react';\nimport { cx } from 'emotion';\nimport { getNavbarBadgeStyles } from './NavbarBadge.styles';\nimport type {\n CommonProps,\n ExpandProps,\n PolymorphicComponent,\n PolymorphicProps,\n} from '@contentful/f36-core';\n\nconst NAVBAR_BADGE_DEFAULT_TAG = 'div';\n\ntype NavbarBadgeOwnProps = CommonProps & {\n children?: React.ReactNode;\n as?: React.ElementType;\n};\n\nexport type NavbarBadgeProps<\n E extends React.ElementType = typeof NAVBAR_BADGE_DEFAULT_TAG,\n> = PolymorphicProps<NavbarBadgeOwnProps, E>;\n\nfunction _NavbarBadge(\n props: NavbarBadgeProps<React.ElementType>,\n ref: React.Ref<any>,\n) {\n const {\n as: Comp = NAVBAR_BADGE_DEFAULT_TAG,\n children,\n className,\n testId = 'cf-ui-navbar-badge',\n ...otherProps\n } = props;\n const styles = getNavbarBadgeStyles();\n\n return (\n <Comp\n {...otherProps}\n ref={ref}\n className={cx(styles.navbarBadge, className)}\n data-test-id={testId}\n >\n {children}\n </Comp>\n );\n}\n\nexport const NavbarBadge: PolymorphicComponent<\n ExpandProps<NavbarBadgeOwnProps>,\n typeof NAVBAR_BADGE_DEFAULT_TAG\n> = React.forwardRef(_NavbarBadge);\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nexport const getNavbarBadgeStyles = () => ({\n navbarBadge: css({\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n background: 'none',\n border: `1px solid ${tokens.purple600}`,\n margin: 0,\n outline: 'none',\n fontSize: tokens.fontSizeS,\n lineHeight: tokens.lineHeightS,\n fontWeight: tokens.fontWeightMedium,\n textAlign: 'center',\n padding: `0 ${tokens.spacingXs}`,\n textDecoration: 'none',\n color: `${tokens.purple600}!important`,\n borderRadius: '1.75rem',\n userSelect: 'none',\n }),\n});\n","import React from 'react';\nimport { Menu, type MenuListProps, type MenuProps } from '@contentful/f36-menu';\nimport { getNavbarSubmenuStyles } from './NavbarMenu.styles';\nimport {\n NavbarItemIcon,\n type NavbarItemIconProps,\n} from '../NavbarItemIcon/NavbarItemIcon';\nimport { Flex } from '@contentful/f36-core';\n\nexport type NavbarSubmenuProps = {\n title: string;\n icon?: NavbarItemIconProps['icon'];\n children?: React.ReactNode;\n} & Pick<MenuListProps, 'testId'> &\n Pick<MenuProps, 'onOpen' | 'onClose'>;\n\nexport const NavbarSubmenu = (props: NavbarSubmenuProps) => {\n const {\n title,\n icon,\n children,\n testId = 'cf-ui-navbar-submenu-list',\n onOpen,\n onClose,\n } = props;\n const styles = getNavbarSubmenuStyles();\n\n return (\n <Menu.Submenu onOpen={onOpen} onClose={onClose}>\n <Menu.SubmenuTrigger>\n <Flex className={styles.navbarMenuItem}>\n {icon && <NavbarItemIcon icon={icon} />}\n <span>{title}</span>\n </Flex>\n </Menu.SubmenuTrigger>\n <Menu.List className={styles.menuList} testId={testId}>\n {children}\n </Menu.List>\n </Menu.Submenu>\n );\n};\n","import tokens from '@contentful/f36-tokens';\nimport { css } from 'emotion';\nimport { mqs } from '../utils.styles';\n\nexport const getNavbarSubmenuStyles = () => ({\n navbarMenuItem: css({\n display: 'flex',\n justifyContent: 'flex-start',\n alignItems: 'center',\n gap: tokens.spacingXs,\n }),\n menuList: css({\n minWidth: 0,\n marginLeft: '-24px',\n marginTop: '10px',\n [mqs.xsmall]: {\n minWidth: '250px',\n margin: 0,\n },\n }),\n});\n"]}
|
package/dist/index.js
CHANGED
|
@@ -28,7 +28,7 @@ var qe=Object.defineProperty,Ze=Object.defineProperties;var Ye=Object.getOwnProp
|
|
|
28
28
|
${s__default.default.orange300} 78.57%,
|
|
29
29
|
transparent 78.57%,
|
|
30
30
|
transparent 100%
|
|
31
|
-
)`,backgroundSize:e?"inherit":"9px 9px",backgroundPosition:"bottom"}),innerSpaceEnv:emotion.css({height:"26px"}),switcherSpaceName:emotion.css({"&:has(> span:last-child:nth-child(3))":{minWidth:"12ch"},maxWidth:"15vw",[l.xsmall]:{maxWidth:"50vw"},[l.small]:{maxWidth:"10vw"},[l.medium]:{maxWidth:"50vw"}}),switcherEnvIcon:emotion.css({[l.small]:{width:"16px",height:"16px"}}),switcherSpaceNameTruncation:emotion.css({flexShrink:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"})}),Ho=e=>({padding:"0",paddingRight:s__default.default.spacingXs,color:e?s__default.default.green700:s__default.default.orange700,backgroundColor:e?s__default.default.green100:s__default.default.orange100,border:`${Z}px solid ${e?s__default.default.green400:s__default.default.orange400}`,"&:hover, &:active":{backgroundColor:e?s__default.default.green200:s__default.default.orange200}});function Ve({isAlias:e,envVariant:o,className:t}){let r=o==="master",n=r?s__default.default.green700:s__default.default.orange700;return r
|
|
31
|
+
)`,backgroundSize:e?"inherit":"9px 9px",backgroundPosition:"bottom"}),innerSpaceEnv:emotion.css({height:"26px"}),switcherSpaceName:emotion.css({"&:has(> span:last-child:nth-child(3))":{minWidth:"12ch"},maxWidth:"15vw",[l.xsmall]:{maxWidth:"50vw"},[l.small]:{maxWidth:"10vw"},[l.medium]:{maxWidth:"50vw"}}),switcherEnvIcon:emotion.css({[l.small]:{width:"16px",height:"16px"}}),switcherSpaceNameTruncation:emotion.css({flexShrink:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"})}),Ho=e=>({padding:"0",paddingRight:s__default.default.spacingXs,color:e?s__default.default.green700:s__default.default.orange700,backgroundColor:e?s__default.default.green100:s__default.default.orange100,border:`${Z}px solid ${e?s__default.default.green400:s__default.default.orange400}`,"&:hover, &:active":{backgroundColor:e?s__default.default.green200:s__default.default.orange200}});function Ve({isAlias:e,envVariant:o,className:t}){let r=o==="master",n=r?s__default.default.green700:s__default.default.orange700;return r?i__default.default.createElement(f36Icons.RocketLaunchIcon,{color:n,className:t,size:"medium"}):e?i__default.default.createElement(f36Icons.EnvironmentAliasIcon,{color:n,className:t,size:"medium"}):i__default.default.createElement(f36Icons.EnvironmentIcon,{color:n,className:t,size:"medium"})}var z=({estimatedWidth:e})=>i__default.default.createElement(f36Skeleton.SkeletonContainer,{svgWidth:e,svgHeight:18,backgroundColor:s__default.default.gray300,foregroundColor:s__default.default.gray200},i__default.default.createElement(f36Skeleton.SkeletonText,{lineHeight:18,numberOfLines:1,radiusX:s__default.default.borderRadiusSmall,radiusY:s__default.default.borderRadiusSmall}));function qo(e,{start:o=5,end:t=6}={}){if(e.length<=o+t)return [e,void 0,void 0];let r=o>0?e.slice(0,o):"",n=t>0?e.slice(-t):"",a=e.slice(o,e.length-t);return [r,a,n]}var Re=({value:e,styles:o})=>{let[t,r,n]=typeof e=="string"?qo(e):[];return t!==void 0?i__default.default.createElement(f36Typography.Text,{className:o.text},i__default.default.createElement("span",null,t),r&&i__default.default.createElement("span",{className:o.switcherSpaceNameTruncation},r),n&&i__default.default.createElement("span",null,n)):i__default.default.createElement(f36Typography.Text,{className:o.text},e)};function Zo(e,o){let f=e,{children:t,className:r,envVariant:n,isAlias:a,testId:p="cf-ui-navbar-switcher",ariaLabel:c="Space and Environment Navigation",space:u,environment:h,isLoading:S}=f,w=v(f,["children","className","envVariant","isAlias","testId","ariaLabel","space","environment","isLoading"]),I=n==="master",d=Fe({isMaster:I});return i__default.default.createElement(f36Button.Button,x(b({},w),{"aria-label":c,className:emotion.cx(d.navbarSwitcher({showSpaceEnv:!S&&!t}),r),endIcon:n&&i__default.default.createElement(Ve,{envVariant:n,isAlias:a,className:d.switcherEnvIcon}),ref:o,testId:p,variant:"transparent"}),i__default.default.createElement(f36Core.Flex,{alignItems:"center",className:d.switcherSpaceName,flexDirection:"row"},S?i__default.default.createElement(z,{estimatedWidth:148}):i__default.default.createElement(i__default.default.Fragment,null,t?i__default.default.createElement(f36Typography.Text,{className:d.text},t):i__default.default.createElement(f36Core.Flex,{gap:s__default.default.spacingXs},i__default.default.createElement(f36Core.Box,{className:d.innerRectangle}),i__default.default.createElement(f36Core.Flex,{className:d.innerSpaceEnv,gap:s__default.default.spacing2Xs,alignItems:"center"},i__default.default.createElement(Re,{value:u,styles:d}),h&&i__default.default.createElement(i__default.default.Fragment,null,i__default.default.createElement(f36Icons.CaretRightIcon,{size:"tiny",color:I?s__default.default.green700:s__default.default.orange700}),i__default.default.createElement(Re,{envVariant:n,value:h,styles:d})))))))}var pe=i__default.default.forwardRef(Zo);var De=()=>({navbarBadge:emotion.css({display:"flex",justifyContent:"center",alignItems:"center",background:"none",border:`1px solid ${s__default.default.purple600}`,margin:0,outline:"none",fontSize:s__default.default.fontSizeS,lineHeight:s__default.default.lineHeightS,fontWeight:s__default.default.fontWeightMedium,textAlign:"center",padding:`0 ${s__default.default.spacingXs}`,textDecoration:"none",color:`${s__default.default.purple600}!important`,borderRadius:"1.75rem",userSelect:"none"})});var Ko="div";function Qo(e,o){let u=e,{as:t=Ko,children:r,className:n,testId:a="cf-ui-navbar-badge"}=u,p=v(u,["as","children","className","testId"]),c=De();return i__default.default.createElement(t,x(b({},p),{ref:o,className:emotion.cx(c.navbarBadge,n),"data-test-id":a}),r)}var ze=i__default.default.forwardRef(Qo);var Ue=()=>({navbarMenuItem:emotion.css({display:"flex",justifyContent:"flex-start",alignItems:"center",gap:s__default.default.spacingXs}),menuList:emotion.css({minWidth:0,marginLeft:"-24px",marginTop:"10px",[l.xsmall]:{minWidth:"250px",margin:0}})});var je=e=>{let{title:o,icon:t,children:r,testId:n="cf-ui-navbar-submenu-list",onOpen:a,onClose:p}=e,c=Ue();return i__default.default.createElement(f36Menu.Menu.Submenu,{onOpen:a,onClose:p},i__default.default.createElement(f36Menu.Menu.SubmenuTrigger,null,i__default.default.createElement(f36Core.Flex,{className:c.navbarMenuItem},t&&i__default.default.createElement(k,{icon:t}),i__default.default.createElement("span",null,o))),i__default.default.createElement(f36Menu.Menu.List,{className:c.menuList,testId:n},r))};var N=Se;N.Item=te;N.ItemSkeleton=re;N.MenuItem=ne;N.MenuItemSkeleton=ae;N.MenuDivider=f36Menu.MenuDivider;N.MenuSectionTitle=f36Menu.MenuSectionTitle;N.Submenu=je;N.Switcher=pe;N.SwitcherSkeleton=z;N.Account=ee;N.AccountSkeleton=oe;N.Badge=ze;
|
|
32
32
|
|
|
33
33
|
exports.NAVBAR_HEIGHT = be;
|
|
34
34
|
exports.Navbar = N;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/constants.ts","../src/CompoundNavbar.ts","../src/Navbar.tsx","../src/Navbar.styles.ts","../src/utils.styles.ts","../src/icons/CaretIcon.tsx","../src/icons/ContentfulLogoIcon.tsx","../src/NavbarMenu/NavbarMenu.tsx","../src/NavbarMenu/NavbarMenu.styles.ts","../src/NavbarAccount/NavbarAccount.tsx","../src/NavbarAccount/NavbarAccount.styles.ts","../src/NavbarAccount/NavbarAccountSkeleton.tsx","../src/NavbarItem/NavbarItem.tsx","../src/NavbarItem/NavbarItem.styles.ts","../src/NavbarItemIcon/NavbarItemIcon.tsx","../src/NavbarItemIcon/NavbarItemIcon.styles.ts","../src/NavbarItem/NavbarItemSkeleton.tsx","../src/NavbarMenuItem/NavbarMenuItem.tsx","../src/NavbarMenuItem/NavbarMenuItem.styles.ts","../src/NavbarMenuItem/NavbarMenuItemSkeleton.tsx","../src/NavbarSwitcher/NavbarSwitcher.tsx","../src/NavbarSwitcher/NavbarSwitcher.styles.ts","../src/NavbarSwitcher/NavbarEnvVariant.tsx","../src/NavbarSwitcher/NavbarSwitcherSkeleton.tsx","../src/NavbarBadge/NavbarBadge.tsx","../src/NavbarBadge/NavbarBadge.styles.ts","../src/NavbarSubmenu/NavbarSubmenu.tsx","../src/NavbarSubmenu/NavbarMenu.styles.ts"],"names":["NAVBAR_HEIGHT","MenuDivider","MenuSectionTitle","Flex","React","css","tokens","mqs","getGlowOnFocusStyles","shadow","increaseHitArea","minSize","getNavbarStyles","contentMaxWidth","variant","generateComponentWithVariants","generateIconComponent","IconVariant","CaretIcon","ContentfulLogoIcon","cx","Button","ListIcon","Menu","getNavbarMenuStyles","NavbarMenu","props","trigger","children","testId","onOpen","onClose","styles","_Navbar","ref","_a","logo","promotions","switcher","mainNavigation","secondaryNavigation","account","mobileNavigation","className","otherProps","__objRest","__spreadProps","__spreadValues","Navbar","notificationVarianColorMap","getNavbarAccountStyles","Avatar","Tooltip","_NavbarAccount","avatar","label","initials","username","hasNotification","notificationVariant","NavbarAccount","SkeletonContainer","SkeletonImage","NavbarAccountSkeleton","ariaLabel","hexToRGBA","borderWidth","getNavbarItemActiveStyles","commonItemStyles","getNavbarItemStyles","hasTitle","getNavbarItemSkeletonStyles","getNavbarItemIconStyles","NavbarItemIcon","icon","isActive","iconClassName","size","rest","NAVBAR_ITEM_DEFAULT_TAG","_NavbarItem","Comp","title","isMenuTrigger","isNavbarItemHasMenu","showCaret","item","NavbarItem","SkeletonText","NavbarItemSkeleton","estimatedWidth","getNavbarMenuItemStyles","ArrowSquareOutIcon","NAVBAR_MENU_ITEM_DEFAULT_TAG","_NavbarMenuItem","itemIsExternalLink","isExternalLink","externalIcon","NavbarMenuItem","SkeletonBodyText","NavbarMenuItemSkeleton","BORDER_WIDTH","getNavbarSwitcherStyles","isMaster","showSpaceEnv","getEnvVariantColor","Box","EnvironmentAliasIcon","EnvironmentIcon","RocketLaunchIcon","NavbarEnvVariant","isAlias","envVariant","color","NavbarSwitcherSkeleton","CaretRightIcon","Text","splitString","string","startLength","endLength","start","end","remainder","SwitcherLabel","value","middle","_NavbarSwitcher","space","environment","isLoading","NavbarSwitcher","getNavbarBadgeStyles","NAVBAR_BADGE_DEFAULT_TAG","_NavbarBadge","NavbarBadge","getNavbarSubmenuStyles","NavbarSubmenu"],"mappings":"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","sourcesContent":["export const NAVBAR_HEIGHT = 60;\n","import { MenuDivider } from '@contentful/f36-menu';\nimport { MenuSectionTitle } from '@contentful/f36-menu';\nimport { Navbar as OriginalNavbar } from './Navbar';\n\nimport { NavbarAccount, NavbarAccountSkeleton } from './NavbarAccount';\nimport { NavbarItem, NavbarItemSkeleton } from './NavbarItem';\nimport { NavbarMenuItem, NavbarMenuItemSkeleton } from './NavbarMenuItem';\nimport { NavbarSwitcher, NavbarSwitcherSkeleton } from './NavbarSwitcher';\nimport { NavbarBadge } from './NavbarBadge/NavbarBadge';\nimport { NavbarSubmenu } from './NavbarSubmenu/NavbarSubmenu';\n\ntype CompoundNavbar = typeof OriginalNavbar & {\n Item: typeof NavbarItem;\n ItemSkeleton: typeof NavbarItemSkeleton;\n MenuItem: typeof NavbarMenuItem;\n MenuItemSkeleton: typeof NavbarMenuItemSkeleton;\n MenuDivider: typeof MenuDivider;\n MenuSectionTitle: typeof MenuSectionTitle;\n Submenu: typeof NavbarSubmenu;\n Switcher: typeof NavbarSwitcher;\n SwitcherSkeleton: typeof NavbarSwitcherSkeleton;\n Account: typeof NavbarAccount;\n AccountSkeleton: typeof NavbarAccountSkeleton;\n Badge: typeof NavbarBadge;\n};\n\nexport const Navbar = OriginalNavbar as CompoundNavbar;\nNavbar.Item = NavbarItem;\nNavbar.ItemSkeleton = NavbarItemSkeleton;\nNavbar.MenuItem = NavbarMenuItem;\nNavbar.MenuItemSkeleton = NavbarMenuItemSkeleton;\nNavbar.MenuDivider = MenuDivider;\nNavbar.MenuSectionTitle = MenuSectionTitle;\nNavbar.Submenu = NavbarSubmenu;\nNavbar.Switcher = NavbarSwitcher;\nNavbar.SwitcherSkeleton = NavbarSwitcherSkeleton;\nNavbar.Account = NavbarAccount;\nNavbar.AccountSkeleton = NavbarAccountSkeleton;\nNavbar.Badge = NavbarBadge;\n","import { type CommonProps, type ExpandProps, Flex } from '@contentful/f36-core';\nimport React from 'react';\nimport { getNavbarStyles } from './Navbar.styles';\nimport { ContentfulLogoIcon } from './icons';\nimport { cx } from 'emotion';\nimport { Button } from '@contentful/f36-button';\nimport { ListIcon } from '@contentful/f36-icons';\nimport { NavbarMenu } from './NavbarMenu/NavbarMenu';\n\ntype NavbarOwnProps = CommonProps & {\n /**\n * Accepts a React Component that will be displayed\n * instead of the Contentful Logo\n */\n logo?: React.ReactNode;\n\n /** Promotions component, displayed on most left side */\n promotions?: React.ReactNode;\n\n /** Environment Switcher component */\n switcher?: React.ReactNode;\n\n /** Main Navigation Elements */\n mainNavigation?: React.ReactNode;\n\n /** Secondary Navigation Elements, displayed in the right side */\n secondaryNavigation?: React.ReactNode;\n\n /** User Account Component */\n account?: React.ReactNode;\n\n /** Navigation displayed on mobile versions */\n mobileNavigation?: React.ReactNode;\n\n /**\n * Defines the max-width of the content inside the navbar.\n * @default '100%'\n */\n contentMaxWidth?: string;\n\n /**\n * Describes the size variation of the Navbar\n * Variant wide will set the contentMaxWidth to 1524px\n */\n variant?: 'wide' | 'fullscreen';\n};\n\n// expose only the HTML props that are needed to not pollute the API\ntype NavbarHTMLElementProps = Pick<React.ComponentPropsWithoutRef<'div'>, 'id'>;\n\nexport type NavbarProps = NavbarHTMLElementProps & NavbarOwnProps;\n\nfunction _Navbar(props: ExpandProps<NavbarProps>, ref: React.Ref<HTMLElement>) {\n const {\n logo,\n promotions,\n switcher,\n mainNavigation,\n secondaryNavigation,\n account,\n mobileNavigation,\n className,\n contentMaxWidth = '100%',\n testId = 'cf-ui-navbar',\n variant = 'wide',\n ...otherProps\n } = props;\n const styles = getNavbarStyles({ contentMaxWidth, variant });\n\n return (\n <Flex\n {...otherProps}\n ref={ref}\n testId={testId}\n className={cx(styles.container, className)}\n as=\"header\"\n >\n <Flex\n as=\"nav\"\n className={styles.navigation}\n justifyContent=\"space-between\"\n gap=\"spacingXs\"\n >\n <Flex alignItems=\"center\" gap=\"spacingL\">\n {logo || <ContentfulLogoIcon className={styles.logo} />}\n {mobileNavigation && (\n <NavbarMenu\n trigger={\n <Button\n className={styles.mobileNavigationButton}\n startIcon={<ListIcon size=\"medium\" />}\n >\n Menu\n </Button>\n }\n >\n {mobileNavigation}\n </NavbarMenu>\n )}\n {mainNavigation && (\n <Flex\n className={styles.mainNavigation}\n aria-label=\"Main Navigation\"\n gap=\"spacingXs\"\n >\n {mainNavigation}\n </Flex>\n )}\n </Flex>\n <Flex alignItems=\"center\" gap=\"spacingXs\">\n <Flex alignItems=\"center\">{promotions}</Flex>\n <Flex alignItems=\"center\">{switcher}</Flex>\n <Flex alignItems=\"center\" gap=\"spacingXs\">\n {secondaryNavigation && (\n <Flex\n className={styles.secondaryNavigationWrapper}\n aria-label=\"Secondary Navigation\"\n gap=\"spacingXs\"\n >\n {secondaryNavigation}\n </Flex>\n )}\n {account && (\n <Flex\n className={styles.account}\n aria-label=\"Account Navigation\"\n gap=\"spacingXs\"\n >\n {account}\n </Flex>\n )}\n </Flex>\n </Flex>\n </Flex>\n </Flex>\n );\n}\n\nexport const Navbar = React.forwardRef(_Navbar);\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\nimport { mqs } from './utils.styles';\nimport { NavbarProps } from './Navbar';\nimport { NAVBAR_HEIGHT } from './constants';\n\nexport const getNavbarStyles = ({\n contentMaxWidth,\n variant,\n}: Pick<NavbarProps, 'contentMaxWidth' | 'variant'>) => ({\n container: css({\n justifyContent: 'center',\n backgroundColor: tokens.gray100,\n width: '100%',\n }),\n logo: css({\n display: 'none',\n [mqs.small]: {\n display: 'block',\n height: '28px',\n width: '28px',\n },\n }),\n\n navigation: css({\n width: '100%',\n maxWidth: variant === 'wide' ? '1920px' : contentMaxWidth,\n padding: `${tokens.spacingS} ${tokens.spacingM}`,\n height: `${NAVBAR_HEIGHT}px`,\n [mqs.small]: {\n padding: `${tokens.spacingM} ${tokens.spacingL}`,\n },\n }),\n\n mainNavigation: css({\n display: 'none',\n [mqs.small]: {\n display: 'flex',\n },\n }),\n\n mobileNavigationButton: css({\n display: 'flex',\n minHeight: 'initial', // unset default 40px height\n height: '36px',\n padding: '0 12px',\n borderRadius: '10px',\n [mqs.small]: {\n display: 'none',\n },\n }),\n mobileNavigationIcon: css({\n heigt: '20px',\n width: '20px',\n }),\n\n secondaryNavigationWrapper: css({\n '> *:not(:first-child)': {\n display: 'none',\n [mqs.xsmall]: {\n display: 'flex',\n },\n },\n }),\n\n account: css({\n display: 'none',\n [mqs.xsmall]: {\n display: 'flex',\n },\n }),\n});\n","import tokens from '@contentful/f36-tokens';\nimport type { CSSObject } from '@emotion/serialize';\n\ntype screens = 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge';\ntype mediaqueries = Record<screens, string>;\nexport const mqs: mediaqueries = {\n xsmall: '@media (min-width: 576px)',\n small: '@media (min-width: 867px)',\n medium: '@media (min-width: 1024px)',\n large: '@media (min-width: 1200px)',\n xlarge: '@media (min-width: 1920px)',\n};\n\nexport const getGlowOnFocusStyles = (\n shadow: string = tokens.glowPrimary,\n): CSSObject => ({\n '&:focus': {\n boxShadow: shadow,\n },\n '&:focus:not(:focus-visible)': {\n boxShadow: 'unset',\n },\n '&:focus-visible': {\n boxShadow: shadow,\n },\n});\n\nexport const increaseHitArea = (minSize = '44px'): CSSObject => ({\n overflow: 'visible',\n position: 'relative',\n '&:after': {\n minHeight: minSize,\n minWidth: minSize,\n position: 'absolute',\n width: '100%',\n content: '\"\"',\n left: '50%',\n top: '50%',\n transform: 'translate(-50%, -50%)',\n },\n});\n","import React from 'react';\nimport tokens from '@contentful/f36-tokens';\nimport {\n generateComponentWithVariants,\n generateIconComponent,\n IconVariant,\n} from '@contentful/f36-icon';\n\nexport const CaretIcon = generateComponentWithVariants({\n variants: {\n [IconVariant.Active]: generateIconComponent({\n path: (\n <>\n <path\n d=\"M10.0153 4.76531L6.2653 8.51531C6.23048 8.55018 6.18912 8.57784 6.14359 8.59671C6.09807 8.61558 6.04927 8.62529 5.99999 8.62529C5.95071 8.62529 5.90191 8.61558 5.85639 8.59671C5.81086 8.57784 5.76951 8.55018 5.73468 8.51531L1.98468 4.76531C1.93217 4.71287 1.89641 4.64602 1.88192 4.57324C1.86742 4.50046 1.87485 4.42501 1.90326 4.35645C1.93166 4.28789 1.97977 4.22931 2.0415 4.1881C2.10322 4.1469 2.17578 4.12494 2.24999 4.125H9.74999C9.8242 4.12494 9.89676 4.1469 9.95848 4.1881C10.0202 4.22931 10.0683 4.28789 10.0967 4.35645C10.1251 4.42501 10.1326 4.50046 10.1181 4.57324C10.1036 4.64602 10.0678 4.71287 10.0153 4.76531Z\"\n fill={tokens.blue300}\n />\n </>\n ),\n viewBox: '0 0 12 12',\n }),\n [IconVariant.Default]: generateIconComponent({\n path: (\n <>\n <path\n d=\"M10.0153 4.76531L6.2653 8.51531C6.23048 8.55018 6.18912 8.57784 6.14359 8.59671C6.09807 8.61558 6.04927 8.62529 5.99999 8.62529C5.95071 8.62529 5.90191 8.61558 5.85639 8.59671C5.81086 8.57784 5.76951 8.55018 5.73468 8.51531L1.98468 4.76531C1.93217 4.71287 1.89641 4.64602 1.88192 4.57324C1.86742 4.50046 1.87485 4.42501 1.90326 4.35645C1.93166 4.28789 1.97977 4.22931 2.0415 4.1881C2.10322 4.1469 2.17578 4.12494 2.24999 4.125H9.74999C9.8242 4.12494 9.89676 4.1469 9.95848 4.1881C10.0202 4.22931 10.0683 4.28789 10.0967 4.35645C10.1251 4.42501 10.1326 4.50046 10.1181 4.57324C10.1036 4.64602 10.0678 4.71287 10.0153 4.76531Z\"\n fill={tokens.gray400}\n />\n </>\n ),\n viewBox: '0 0 12 12',\n }),\n },\n});\n","import React from 'react';\nimport { generateIconComponent } from '@contentful/f36-icon';\n\nexport const ContentfulLogoIcon = /*#__PURE__*/ generateIconComponent({\n name: 'ContentfulLogoIcon',\n viewBox: '0 0 28 28',\n path: (\n <>\n <path\n fill=\"#1773EB\"\n d=\"M10.713 5.001c.845.843 1.167 2.079.845 3.228A6.663 6.663 0 0 1 15 7.276h.026a6.7 6.7 0 0 1 4.743 1.988 2.64 2.64 0 1 0 3.746-3.715A11.96 11.96 0 0 0 15.042 2h-.046a11.933 11.933 0 0 0-6.691 2.036h.074a3.287 3.287 0 0 1 2.334.967V5Z\"\n />\n <path\n fill=\"#E44F20\"\n d=\"M21.594 17.999a2.64 2.64 0 0 0-1.858.766 6.703 6.703 0 0 1-4.732 1.951h-.025a6.65 6.65 0 0 1-3.447-.968A3.3 3.3 0 0 1 8.35 23.93h-.086A11.926 11.926 0 0 0 14.96 26h.046a11.94 11.94 0 0 0 8.449-3.484 2.64 2.64 0 0 0-1.859-4.514V18h-.002Z\"\n />\n <path\n fill=\"#FFDA00\"\n d=\"M6.013 18.295a3.27 3.27 0 0 1 2.334-.967c.302 0 .603.04.894.122a6.7 6.7 0 0 1 .013-6.928A3.3 3.3 0 0 1 5.08 7.335v-.09a11.999 11.999 0 0 0-.032 13.453v-.07a3.27 3.27 0 0 1 .966-2.333Z\"\n />\n <path\n fill=\"#1773EB\"\n d=\"M8.379 4.62c-.75 0-1.276.312-1.913.949-.607.605-.798 1.135-.8 1.766A2.712 2.712 0 1 0 8.38 4.62Z\"\n />\n <path\n fill=\"#E44F20\"\n d=\"M5.628 20.631c0 .75.31 1.276.946 1.912.607.606 1.136.799 1.766.8a2.703 2.703 0 1 0-.017-5.407 2.703 2.703 0 0 0-2.695 2.704v-.009Z\"\n />\n </>\n ),\n});\n","import React from 'react';\nimport { Menu, type MenuListProps, type MenuProps } from '@contentful/f36-menu';\nimport { getNavbarMenuStyles } from './NavbarMenu.styles';\n\nexport type NavbarMenuProps = {\n trigger: React.ReactNode;\n children?: React.ReactNode;\n} & Pick<MenuListProps, 'testId'> &\n Pick<MenuProps, 'onOpen' | 'onClose'>;\n\nexport const NavbarMenu = (props: NavbarMenuProps) => {\n const {\n trigger,\n children,\n testId = 'cf-ui-navbar-menu-list',\n onOpen,\n onClose,\n } = props;\n const styles = getNavbarMenuStyles();\n\n return (\n <Menu onOpen={onOpen} onClose={onClose}>\n <Menu.Trigger>{trigger}</Menu.Trigger>\n <Menu.List className={styles.menuList} testId={testId}>\n {children}\n </Menu.List>\n </Menu>\n );\n};\n","import { css } from 'emotion';\nimport { mqs } from '../utils.styles';\n\nexport const getNavbarMenuStyles = () => ({\n menuList: css({\n minWidth: 0,\n [mqs.xsmall]: {\n minWidth: '250px',\n },\n }),\n});\n","import React from 'react';\nimport { cx } from 'emotion';\nimport { getNavbarAccountStyles } from './NavbarAccount.styles';\nimport {\n type PropsWithHTMLElement,\n type CommonProps,\n type ExpandProps,\n} from '@contentful/f36-core';\nimport { NavbarMenu } from '../NavbarMenu/NavbarMenu';\nimport { Flex } from '@contentful/f36-core';\nimport { Avatar } from '@contentful/f36-avatar';\nimport { Tooltip } from '@contentful/f36-tooltip';\n\ntype NavbarAccountOwnProps = CommonProps & {\n children: React.ReactNode;\n username: string;\n avatar?: string;\n initials?: string;\n hasNotification?: boolean;\n label?: string;\n /**\n * @default 'warning'\n */\n notificationVariant?: 'warning' | 'negative' | 'info';\n};\n\nexport type NavbarAccountProps = PropsWithHTMLElement<\n NavbarAccountOwnProps,\n 'button'\n>;\n\nfunction _NavbarAccount(\n props: ExpandProps<NavbarAccountProps>,\n ref: React.Ref<HTMLButtonElement>,\n) {\n const {\n children,\n className,\n testId = 'cf-ui-navbar-account-trigger',\n avatar,\n label = 'Account menu',\n initials,\n username,\n hasNotification,\n notificationVariant = 'warning',\n ...otherProps\n } = props;\n const styles = getNavbarAccountStyles();\n\n return (\n <NavbarMenu\n trigger={\n <div>\n <Tooltip placement=\"bottom\" content={label} showDelay={600} usePortal>\n <Flex\n as=\"button\"\n {...otherProps}\n ref={ref}\n className={cx(styles.navbarAccount, className)}\n testId={testId}\n alignItems=\"center\"\n aria-label={label}\n >\n <Avatar\n src={avatar}\n initials={initials}\n size=\"small\"\n variant=\"user\"\n />\n\n {hasNotification ? (\n <span\n className={styles.notificationIcon(notificationVariant)}\n />\n ) : null}\n </Flex>\n </Tooltip>\n </div>\n }\n >\n {children}\n </NavbarMenu>\n );\n}\n\nexport const NavbarAccount = React.forwardRef(_NavbarAccount);\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\nimport { NavbarAccountProps } from './NavbarAccount';\nimport { getGlowOnFocusStyles, increaseHitArea } from '../utils.styles';\n\nconst notificationVarianColorMap: Record<\n NavbarAccountProps['notificationVariant'],\n string\n> = {\n warning: tokens.colorWarning,\n negative: tokens.colorNegative,\n info: tokens.blue500,\n};\n\nexport const getNavbarAccountStyles = () => ({\n navbarAccount: css(\n {\n cursor: 'pointer',\n background: 'none',\n position: 'relative',\n outline: 'none',\n overflow: 'visible',\n borderRadius: '50%',\n border: 'none',\n padding: 0,\n '&:hover img': {\n filter: 'brightness(0.9)',\n },\n },\n getGlowOnFocusStyles(),\n increaseHitArea(),\n ),\n notificationIcon: (variant: NavbarAccountProps['notificationVariant']) =>\n css({\n position: 'absolute',\n top: 0,\n right: 0,\n height: tokens.spacingS,\n width: tokens.spacingS,\n borderRadius: '50%',\n border: `2px solid ${tokens.gray100}`,\n backgroundColor: notificationVarianColorMap[variant],\n transform: 'translate(30%, -30%)',\n zIndex: 1, // move above the avatar\n }),\n});\n","import React from 'react';\nimport { SkeletonContainer, SkeletonImage } from '@contentful/f36-skeleton';\nimport tokens from '@contentful/f36-tokens';\n\nexport function NavbarAccountSkeleton({ ariaLabel }: { ariaLabel?: string }) {\n return (\n <SkeletonContainer\n svgWidth={24}\n svgHeight={24}\n ariaLabel={ariaLabel}\n backgroundColor={tokens.gray300}\n foregroundColor={tokens.gray200}\n >\n <SkeletonImage width={24} height={24} radiusX={12} radiusY={12} />\n </SkeletonContainer>\n );\n}\n","import React from 'react';\nimport { cx } from 'emotion';\nimport { getNavbarItemStyles } from './NavbarItem.styles';\nimport { NavbarMenu, type NavbarMenuProps } from '../NavbarMenu/NavbarMenu';\nimport {\n NavbarItemIcon,\n type NavbarItemIconProps,\n} from '../NavbarItemIcon/NavbarItemIcon';\nimport { CaretIcon } from '../icons';\nimport type {\n CommonProps,\n ExpandProps,\n PolymorphicComponent,\n PolymorphicProps,\n} from '@contentful/f36-core';\nimport { Tooltip } from '@contentful/f36-tooltip';\n\nconst NAVBAR_ITEM_DEFAULT_TAG = 'button';\n\ntype NavbarItemTriggerProps = CommonProps & {\n label?: string;\n title?: string;\n icon?: NavbarItemIconProps['icon'];\n isActive?: boolean;\n as?: React.ElementType;\n};\n\ntype NavbarItemAsMenuProps = NavbarItemTriggerProps &\n Pick<NavbarMenuProps, 'onOpen' | 'onClose'> & {\n children: React.ReactNode;\n };\ntype NavbarItemAsItemProps = NavbarItemTriggerProps & {\n children?: never;\n onOpen?: never;\n onClose?: never;\n};\ntype NavbarItemOwnProps = NavbarItemAsItemProps | NavbarItemAsMenuProps;\n\nexport type NavbarItemProps<\n E extends React.ElementType = typeof NAVBAR_ITEM_DEFAULT_TAG,\n> = PolymorphicProps<NavbarItemOwnProps, E>;\n\nfunction _NavbarItem(\n props: NavbarItemProps<React.ElementType>,\n ref: React.Ref<any>,\n) {\n const {\n as: Comp = NAVBAR_ITEM_DEFAULT_TAG,\n icon,\n label,\n title,\n children,\n className,\n isActive,\n testId = 'cf-ui-navbar-item',\n onOpen,\n onClose,\n ...otherProps\n } = props;\n const styles = getNavbarItemStyles({ hasTitle: !!title });\n const isMenuTrigger = isNavbarItemHasMenu(props);\n const showCaret = title && isMenuTrigger;\n let item = (\n <Comp\n {...otherProps}\n ref={ref}\n data-test-id={testId}\n className={cx(styles.navbarItem, className, {\n [styles.navbarItemMenuTrigger]: showCaret,\n [styles.isActive]: isActive,\n })}\n aria-label={title ? '' : label}\n >\n {icon && (\n <NavbarItemIcon\n className={styles.icon}\n icon={icon}\n isActive={isActive}\n />\n )}\n {title && <span>{title}</span>}\n {showCaret && <CaretIcon size=\"tiny\" isActive={isActive} />}\n </Comp>\n );\n\n if (!title) {\n item = (\n <div>\n <Tooltip content={label} placement=\"bottom\" showDelay={600} usePortal>\n {item}\n </Tooltip>\n </div>\n );\n }\n\n if (isMenuTrigger) {\n return (\n <NavbarMenu\n trigger={item}\n testId={testId}\n onOpen={onOpen}\n onClose={onClose}\n >\n {children}\n </NavbarMenu>\n );\n }\n\n return item;\n}\n\nconst isNavbarItemHasMenu = <E extends React.ElementType>(\n props: NavbarItemProps<E>,\n): props is PolymorphicProps<NavbarItemAsMenuProps, E> =>\n Boolean(props.children);\n\nexport const NavbarItem: PolymorphicComponent<\n ExpandProps<NavbarItemOwnProps>,\n typeof NAVBAR_ITEM_DEFAULT_TAG\n> = React.forwardRef(_NavbarItem);\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\nimport { hexToRGBA } from '@contentful/f36-utils';\nimport { getGlowOnFocusStyles, increaseHitArea, mqs } from '../utils.styles';\n\nconst borderWidth = '1px';\n\nexport const getNavbarItemActiveStyles = () =>\n css({\n backgroundColor: tokens.blue100,\n border: `${borderWidth} solid ${tokens.blue400}`,\n color: tokens.blue600,\n '&:hover': {\n backgroundColor: tokens.blue100,\n },\n });\n\nconst commonItemStyles = {\n display: 'flex',\n justifyContent: 'center',\n padding: `calc(${tokens.spacing2Xs} - ${borderWidth}) calc(${tokens.spacingXs} - ${borderWidth})`,\n alignItems: 'center',\n background: 'none',\n gap: tokens.spacing2Xs,\n};\n\nexport const getNavbarItemStyles = ({ hasTitle }: { hasTitle: boolean }) => ({\n navbarItem: css(\n commonItemStyles,\n {\n appearance: 'none',\n background: 'none',\n border: `${borderWidth} solid transparent`,\n margin: 0,\n outline: 'none',\n fontSize: tokens.fontSizeM,\n lineHeight: tokens.lineHeightM,\n fontWeight: tokens.fontWeightMedium,\n position: 'relative',\n textAlign: 'left',\n whiteSpace: 'nowrap',\n cursor: 'pointer',\n hyphens: 'auto',\n textDecoration: 'none',\n color: tokens.gray800,\n boxSizing: 'border-box',\n transition: `color ${tokens.transitionDurationShort} ${tokens.transitionEasingCubicBezier}`,\n borderRadius: tokens.borderRadiusMedium,\n height: '30px',\n\n padding: hasTitle\n ? undefined\n : `calc(${tokens.spacing2Xs} - ${borderWidth})`, // square button for icon-only items\n\n '&:hover': {\n backgroundColor: hexToRGBA(tokens.gray900, 0.05),\n },\n\n '&:hover::before': {\n opacity: 1,\n scale: '1',\n },\n\n '&:active::before': {\n backgroundColor: `rgba(255, 255, 255, 0.1)`,\n },\n '&:disabled': {\n cursor: 'auto',\n },\n\n '& svg': {\n transition: `fill ${tokens.transitionDurationShort} ${tokens.transitionEasingCubicBezier}`,\n },\n '& > svg, & > span': {\n zIndex: tokens.zIndexDefault,\n },\n },\n getGlowOnFocusStyles(),\n increaseHitArea(),\n ),\n navbarItemMenuTrigger: css({\n paddingRight: tokens.spacingXs,\n }),\n isActive: getNavbarItemActiveStyles(),\n icon: css({\n height: '20px',\n width: '20px',\n boxSizing: 'content-box',\n display: hasTitle ? 'none' : 'block',\n [mqs.small]: {\n height: '16px',\n width: '16px',\n padding: hasTitle ? '2px 0' : '2px', // square for icon-only items\n },\n [mqs.large]: {\n display: 'block',\n },\n }),\n});\n\nexport const getNavbarItemSkeletonStyles = () => ({\n itemSkeleton: css(commonItemStyles),\n});\n","import React from 'react';\nimport type { IconProps } from '@contentful/f36-icons';\nimport { getNavbarItemIconStyles } from './NavbarItemIcon.styles';\nimport { cx } from 'emotion';\n\nexport type NavbarItemIconProps = {\n icon: React.ReactElement<IconProps>;\n className?: string;\n} & Partial<Pick<IconProps, 'isActive'>>;\n\nexport const NavbarItemIcon = ({\n icon,\n isActive,\n className,\n}: NavbarItemIconProps) => {\n const { className: iconClassName, size, ...rest } = icon.props;\n const styles = getNavbarItemIconStyles();\n\n return React.cloneElement(icon, {\n className: cx(iconClassName, styles.navbarItemIcon, className),\n size: size || 'small',\n isActive,\n ...rest,\n });\n};\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nexport const getNavbarItemIconStyles = () => ({\n navbarItemIcon: css({\n '&:last-child&:not(:only-child)': {\n marginLeft: tokens.spacing2Xs,\n },\n 'img&': {\n borderRadius: tokens.borderRadiusSmall,\n maxWidth: tokens.spacingM,\n maxHeight: tokens.spacingM,\n },\n }),\n});\n","import React from 'react';\nimport { SkeletonContainer, SkeletonText } from '@contentful/f36-skeleton';\nimport tokens from '@contentful/f36-tokens';\nimport { getNavbarItemSkeletonStyles } from './NavbarItem.styles';\n\nexport const NavbarItemSkeleton = ({\n estimatedWidth,\n}: {\n estimatedWidth: number;\n}) => {\n const styles = getNavbarItemSkeletonStyles();\n\n return (\n <SkeletonContainer\n className={styles.itemSkeleton}\n svgWidth={estimatedWidth}\n svgHeight={28}\n backgroundColor={tokens.gray300}\n foregroundColor={tokens.gray200}\n >\n <SkeletonText\n lineHeight={18}\n numberOfLines={1}\n offsetTop={2}\n radiusX={tokens.borderRadiusSmall}\n radiusY={tokens.borderRadiusSmall}\n />\n </SkeletonContainer>\n );\n};\n","import React from 'react';\nimport { cx } from 'emotion';\nimport { getNavbarMenuItemStyles } from './NavbarMenuItem.styles';\nimport { Menu, type MenuItemProps } from '@contentful/f36-menu';\nimport {\n NavbarItemIcon,\n type NavbarItemIconProps,\n} from '../NavbarItemIcon/NavbarItemIcon';\nimport { ArrowSquareOutIcon } from '@contentful/f36-icons';\nimport type {\n ExpandProps,\n PolymorphicComponent,\n PolymorphicProps,\n} from '@contentful/f36-core';\n\nconst NAVBAR_MENU_ITEM_DEFAULT_TAG = 'button';\n\ntype NavbarMenuItemOwnProps = {\n children?: null;\n title: string;\n icon?: NavbarItemIconProps['icon'];\n as?: React.ElementType;\n} & Omit<MenuItemProps, 'children' | 'as'>;\n\nexport type NavbarMenuItemProps<\n E extends React.ElementType = typeof NAVBAR_MENU_ITEM_DEFAULT_TAG,\n> = PolymorphicProps<NavbarMenuItemOwnProps, E>;\n\nfunction _NavbarMenuItem(\n props: NavbarMenuItemProps<React.ElementType>,\n ref: React.Ref<any>,\n) {\n const {\n as: Comp = NAVBAR_MENU_ITEM_DEFAULT_TAG,\n icon,\n title,\n className,\n ...otherProps\n } = props;\n const styles = getNavbarMenuItemStyles();\n\n const itemIsExternalLink = isExternalLink(\n props as unknown as NavbarMenuItemProps<'a'>,\n );\n\n return (\n <Menu.Item\n {...otherProps}\n ref={ref}\n as={Comp as MenuItemProps['as']}\n className={cx(styles.navbarMenuItem, className)}\n >\n {icon ? (\n <NavbarItemIcon icon={icon} />\n ) : (\n itemIsExternalLink && externalIcon\n )}\n <span>{title}</span>\n {icon && itemIsExternalLink ? externalIcon : null}\n </Menu.Item>\n );\n}\n\nconst externalIcon = <NavbarItemIcon icon={<ArrowSquareOutIcon />} />;\n\nconst isExternalLink = (props: NavbarMenuItemProps<'a'>) =>\n props.as === 'a' && props.target === '_blank';\n\nexport const NavbarMenuItem: PolymorphicComponent<\n ExpandProps<NavbarMenuItemOwnProps>,\n typeof NAVBAR_MENU_ITEM_DEFAULT_TAG\n> = React.forwardRef(_NavbarMenuItem);\n","import { css } from 'emotion';\nexport const getNavbarMenuItemStyles = () => ({\n navbarMenuItem: css({\n display: 'flex',\n justifyContent: 'flex-start',\n alignItems: 'center',\n }),\n});\n","import React from 'react';\nimport { Menu } from '@contentful/f36-menu';\nimport {\n SkeletonBodyText,\n SkeletonContainer,\n SkeletonImage,\n} from '@contentful/f36-skeleton';\nimport { Flex } from '@contentful/f36-core';\n\nimport tokens from '@contentful/f36-tokens';\n\nexport const NavbarMenuItemSkeleton = ({\n ariaLabel,\n}: {\n ariaLabel?: string;\n}) => (\n <Menu.Item>\n <Flex alignItems=\"center\" gap={tokens.spacingXs}>\n <SkeletonContainer svgHeight={16} svgWidth={18}>\n <SkeletonImage width={16} height={16} />\n </SkeletonContainer>\n <SkeletonContainer svgHeight={16} svgWidth={190} ariaLabel={ariaLabel}>\n <SkeletonBodyText numberOfLines={1} />\n </SkeletonContainer>\n </Flex>\n </Menu.Item>\n);\n","import React from 'react';\nimport { getNavbarSwitcherStyles } from './NavbarSwitcher.styles';\nimport { Button } from '@contentful/f36-button';\nimport {\n Flex,\n type CommonProps,\n type PropsWithHTMLElement,\n type ExpandProps,\n Box,\n} from '@contentful/f36-core';\nimport { cx } from 'emotion';\nimport { NavbarEnvVariant } from './NavbarEnvVariant';\nimport { NavbarSwitcherSkeleton } from './NavbarSwitcherSkeleton';\nimport { CaretRightIcon } from '@contentful/f36-icons';\nimport { Text } from '@contentful/f36-typography';\nimport tokens from '@contentful/f36-tokens';\n\ntype TruncateOptions = {\n /**\n * Number of characters to keep at the start of the string\n * @default 5\n */\n start?: number;\n /**\n * Number of characters to keep at the end of the string\n * @default 6\n */\n end?: number;\n};\n\nfunction splitString(\n string: string,\n {\n start: startLength = 5,\n end: endLength = 6,\n }: TruncateOptions | undefined = {},\n) {\n if (string.length <= startLength + endLength) {\n return [string, undefined, undefined];\n }\n\n const start = startLength > 0 ? string.slice(0, startLength) : '';\n const end = endLength > 0 ? string.slice(-endLength) : '';\n const remainder = string.slice(startLength, string.length - endLength);\n\n return [start, remainder, end];\n}\n\nexport type EnvVariant = 'master' | 'non-master';\n\ntype NavbarLoadingProps =\n | {\n isLoading?: true;\n children?: React.ReactNode;\n environment?: never;\n space?: never;\n }\n | {\n isLoading?: false;\n children?: never;\n environment?: string;\n space?: string;\n };\n\ntype NavbarSwitcherOwnProps = CommonProps &\n NavbarLoadingProps & {\n isCircle?: boolean;\n envVariant?: EnvVariant;\n isAlias?: boolean;\n ariaLabel?: string;\n };\n\nexport type NavbarSwitcherProps = PropsWithHTMLElement<\n NavbarSwitcherOwnProps,\n 'button'\n>;\n\ntype SwitcherLabelProps = {\n value: React.ReactNode;\n styles: ReturnType<typeof getNavbarSwitcherStyles>;\n envVariant?: EnvVariant;\n};\n\nconst SwitcherLabel = ({ value, styles }: SwitcherLabelProps) => {\n const [start, middle, end] =\n typeof value === 'string' ? splitString(value) : [];\n\n return start !== undefined ? (\n <Text className={styles.text}>\n <span>{start}</span>\n {middle && (\n <span className={styles.switcherSpaceNameTruncation}>{middle}</span>\n )}\n {end && <span>{end}</span>}\n </Text>\n ) : (\n <Text className={styles.text}>{value}</Text>\n );\n};\n\nfunction _NavbarSwitcher(\n props: ExpandProps<NavbarSwitcherProps>,\n ref: React.Ref<HTMLButtonElement>,\n) {\n const {\n children,\n className,\n envVariant,\n isAlias,\n testId = 'cf-ui-navbar-switcher',\n ariaLabel = 'Space and Environment Navigation',\n space,\n environment,\n isLoading,\n ...otherProps\n } = props;\n const isMaster = envVariant === 'master';\n const styles = getNavbarSwitcherStyles({ isMaster });\n\n return (\n <Button\n {...otherProps}\n aria-label={ariaLabel}\n className={cx(\n styles.navbarSwitcher({ showSpaceEnv: !isLoading && !children }),\n className,\n )}\n endIcon={\n envVariant && (\n <NavbarEnvVariant\n envVariant={envVariant}\n isAlias={isAlias}\n className={styles.switcherEnvIcon}\n />\n )\n }\n ref={ref}\n testId={testId}\n variant=\"transparent\"\n >\n <Flex\n alignItems=\"center\"\n className={styles.switcherSpaceName}\n flexDirection=\"row\"\n >\n {isLoading ? (\n <NavbarSwitcherSkeleton estimatedWidth={148} />\n ) : (\n <>\n {children ? (\n <Text className={styles.text}>{children}</Text>\n ) : (\n <Flex gap={tokens.spacingXs}>\n <Box className={styles.innerRectangle} />\n\n <Flex\n className={styles.innerSpaceEnv}\n gap={tokens.spacing2Xs}\n alignItems=\"center\"\n >\n <SwitcherLabel value={space} styles={styles} />\n\n {environment && (\n <>\n <CaretRightIcon\n size=\"tiny\"\n color={isMaster ? tokens.green700 : tokens.orange700}\n />\n <SwitcherLabel\n envVariant={envVariant}\n value={environment}\n styles={styles}\n />\n </>\n )}\n </Flex>\n </Flex>\n )}\n </>\n )}\n </Flex>\n </Button>\n );\n}\n\nexport const NavbarSwitcher = React.forwardRef(_NavbarSwitcher);\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\nimport { hexToRGBA } from '@contentful/f36-utils';\n\nimport { getGlowOnFocusStyles, increaseHitArea, mqs } from '../utils.styles';\n\nconst BORDER_WIDTH = 1;\n\nexport const getNavbarSwitcherStyles = ({\n isMaster,\n}: {\n isMaster: boolean;\n}) => ({\n text: css({\n color: 'currentcolor',\n fontWeight: 'inherit',\n }),\n\n navbarSwitcher: ({ showSpaceEnv }: { showSpaceEnv: boolean }) =>\n css(\n {\n color: tokens.gray600,\n flexShrink: 1,\n fontWeight: tokens.fontWeightMedium,\n maxWidth: '100%',\n minHeight: 'unset',\n padding: `${tokens.spacing2Xs} ${tokens.spacingXs}`,\n '&:hover': {\n backgroundColor: hexToRGBA(tokens.gray900, 0.05),\n },\n },\n showSpaceEnv && getEnvVariantColor(isMaster),\n getGlowOnFocusStyles(),\n increaseHitArea(),\n ),\n\n innerRectangle: css({\n width: `calc(8px - ${BORDER_WIDTH}px)`,\n borderTopLeftRadius: `calc(${tokens.borderRadiusMedium} - ${BORDER_WIDTH}px)`,\n borderBottomLeftRadius: `calc(${tokens.borderRadiusMedium} - ${BORDER_WIDTH}px)`,\n background: isMaster\n ? tokens.green300\n : `linear-gradient(\n -45deg, \n ${tokens.orange300} 28.57%, \n transparent 28.57%, \n transparent 50%, \n ${tokens.orange300} 50%, \n ${tokens.orange300} 78.57%, \n transparent 78.57%, \n transparent 100%\n )`,\n backgroundSize: isMaster ? 'inherit' : '9px 9px',\n backgroundPosition: 'bottom',\n }),\n\n innerSpaceEnv: css({\n height: '26px',\n }),\n\n switcherSpaceName: css({\n // Set min-width only when there are three span children\n '&:has(> span:last-child:nth-child(3))': {\n minWidth: '12ch',\n },\n maxWidth: '15vw',\n [mqs.xsmall]: {\n maxWidth: '50vw',\n },\n [mqs.small]: {\n maxWidth: '10vw',\n },\n [mqs.medium]: {\n maxWidth: '50vw',\n },\n }),\n\n switcherEnvIcon: css({\n [mqs.small]: {\n width: '16px',\n height: '16px',\n },\n }),\n\n switcherSpaceNameTruncation: css({\n flexShrink: 1,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }),\n});\n\nconst getEnvVariantColor = (isMaster: boolean) => ({\n padding: '0',\n paddingRight: tokens.spacingXs,\n color: isMaster ? tokens.green700 : tokens.orange700,\n backgroundColor: isMaster ? tokens.green100 : tokens.orange100,\n border: `${BORDER_WIDTH}px solid ${\n isMaster ? tokens.green400 : tokens.orange400\n }`,\n\n '&:hover, &:active': {\n backgroundColor: isMaster ? tokens.green200 : tokens.orange200,\n },\n});\n","import React from 'react';\nimport { NavbarSwitcherProps } from '../NavbarSwitcher/NavbarSwitcher';\nimport {\n EnvironmentAliasIcon,\n EnvironmentIcon,\n RocketLaunchIcon,\n} from '@contentful/f36-icons';\nimport tokens from '@contentful/f36-tokens';\n\nexport type NavbarEnvVariantProps = Pick<\n NavbarSwitcherProps,\n 'isAlias' | 'envVariant'\n> & {\n className?: string;\n};\n\nexport function NavbarEnvVariant({\n isAlias,\n envVariant,\n className,\n}: NavbarEnvVariantProps) {\n const isMaster = envVariant === 'master';\n const color = isMaster ? tokens.green700 : tokens.orange700;\n\n if (isMaster && !isAlias) {\n return (\n <RocketLaunchIcon color={color} className={className} size=\"medium\" />\n );\n } else if (isAlias) {\n return (\n <EnvironmentAliasIcon color={color} className={className} size=\"medium\" />\n );\n } else {\n return (\n <EnvironmentIcon color={color} className={className} size=\"medium\" />\n );\n }\n}\n","import React from 'react';\nimport { SkeletonContainer, SkeletonText } from '@contentful/f36-skeleton';\nimport tokens from '@contentful/f36-tokens';\n\nexport const NavbarSwitcherSkeleton = ({\n estimatedWidth,\n}: {\n estimatedWidth: number;\n}) => (\n <SkeletonContainer\n svgWidth={estimatedWidth}\n svgHeight={18}\n backgroundColor={tokens.gray300}\n foregroundColor={tokens.gray200}\n >\n <SkeletonText\n lineHeight={18}\n numberOfLines={1}\n radiusX={tokens.borderRadiusSmall}\n radiusY={tokens.borderRadiusSmall}\n />\n </SkeletonContainer>\n);\n","import React from 'react';\nimport { cx } from 'emotion';\nimport { getNavbarBadgeStyles } from './NavbarBadge.styles';\nimport type {\n CommonProps,\n ExpandProps,\n PolymorphicComponent,\n PolymorphicProps,\n} from '@contentful/f36-core';\n\nconst NAVBAR_BADGE_DEFAULT_TAG = 'div';\n\ntype NavbarBadgeOwnProps = CommonProps & {\n children?: React.ReactNode;\n as?: React.ElementType;\n};\n\nexport type NavbarBadgeProps<\n E extends React.ElementType = typeof NAVBAR_BADGE_DEFAULT_TAG,\n> = PolymorphicProps<NavbarBadgeOwnProps, E>;\n\nfunction _NavbarBadge(\n props: NavbarBadgeProps<React.ElementType>,\n ref: React.Ref<any>,\n) {\n const {\n as: Comp = NAVBAR_BADGE_DEFAULT_TAG,\n children,\n className,\n testId = 'cf-ui-navbar-badge',\n ...otherProps\n } = props;\n const styles = getNavbarBadgeStyles();\n\n return (\n <Comp\n {...otherProps}\n ref={ref}\n className={cx(styles.navbarBadge, className)}\n data-test-id={testId}\n >\n {children}\n </Comp>\n );\n}\n\nexport const NavbarBadge: PolymorphicComponent<\n ExpandProps<NavbarBadgeOwnProps>,\n typeof NAVBAR_BADGE_DEFAULT_TAG\n> = React.forwardRef(_NavbarBadge);\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nexport const getNavbarBadgeStyles = () => ({\n navbarBadge: css({\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n background: 'none',\n border: `1px solid ${tokens.purple600}`,\n margin: 0,\n outline: 'none',\n fontSize: tokens.fontSizeS,\n lineHeight: tokens.lineHeightS,\n fontWeight: tokens.fontWeightMedium,\n textAlign: 'center',\n padding: `0 ${tokens.spacingXs}`,\n textDecoration: 'none',\n color: `${tokens.purple600}!important`,\n borderRadius: '1.75rem',\n userSelect: 'none',\n }),\n});\n","import React from 'react';\nimport { Menu, type MenuListProps, type MenuProps } from '@contentful/f36-menu';\nimport { getNavbarSubmenuStyles } from './NavbarMenu.styles';\nimport {\n NavbarItemIcon,\n type NavbarItemIconProps,\n} from '../NavbarItemIcon/NavbarItemIcon';\nimport { Flex } from '@contentful/f36-core';\n\nexport type NavbarSubmenuProps = {\n title: string;\n icon?: NavbarItemIconProps['icon'];\n children?: React.ReactNode;\n} & Pick<MenuListProps, 'testId'> &\n Pick<MenuProps, 'onOpen' | 'onClose'>;\n\nexport const NavbarSubmenu = (props: NavbarSubmenuProps) => {\n const {\n title,\n icon,\n children,\n testId = 'cf-ui-navbar-submenu-list',\n onOpen,\n onClose,\n } = props;\n const styles = getNavbarSubmenuStyles();\n\n return (\n <Menu.Submenu onOpen={onOpen} onClose={onClose}>\n <Menu.SubmenuTrigger>\n <Flex className={styles.navbarMenuItem}>\n {icon && <NavbarItemIcon icon={icon} />}\n <span>{title}</span>\n </Flex>\n </Menu.SubmenuTrigger>\n <Menu.List className={styles.menuList} testId={testId}>\n {children}\n </Menu.List>\n </Menu.Submenu>\n );\n};\n","import tokens from '@contentful/f36-tokens';\nimport { css } from 'emotion';\nimport { mqs } from '../utils.styles';\n\nexport const getNavbarSubmenuStyles = () => ({\n navbarMenuItem: css({\n display: 'flex',\n justifyContent: 'flex-start',\n alignItems: 'center',\n gap: tokens.spacingXs,\n }),\n menuList: css({\n minWidth: 0,\n marginLeft: '-24px',\n marginTop: '10px',\n [mqs.xsmall]: {\n minWidth: '250px',\n margin: 0,\n },\n }),\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/constants.ts","../src/CompoundNavbar.ts","../src/Navbar.tsx","../src/Navbar.styles.ts","../src/utils.styles.ts","../src/icons/CaretIcon.tsx","../src/icons/ContentfulLogoIcon.tsx","../src/NavbarMenu/NavbarMenu.tsx","../src/NavbarMenu/NavbarMenu.styles.ts","../src/NavbarAccount/NavbarAccount.tsx","../src/NavbarAccount/NavbarAccount.styles.ts","../src/NavbarAccount/NavbarAccountSkeleton.tsx","../src/NavbarItem/NavbarItem.tsx","../src/NavbarItem/NavbarItem.styles.ts","../src/NavbarItemIcon/NavbarItemIcon.tsx","../src/NavbarItemIcon/NavbarItemIcon.styles.ts","../src/NavbarItem/NavbarItemSkeleton.tsx","../src/NavbarMenuItem/NavbarMenuItem.tsx","../src/NavbarMenuItem/NavbarMenuItem.styles.ts","../src/NavbarMenuItem/NavbarMenuItemSkeleton.tsx","../src/NavbarSwitcher/NavbarSwitcher.tsx","../src/NavbarSwitcher/NavbarSwitcher.styles.ts","../src/NavbarSwitcher/NavbarEnvVariant.tsx","../src/NavbarSwitcher/NavbarSwitcherSkeleton.tsx","../src/NavbarBadge/NavbarBadge.tsx","../src/NavbarBadge/NavbarBadge.styles.ts","../src/NavbarSubmenu/NavbarSubmenu.tsx","../src/NavbarSubmenu/NavbarMenu.styles.ts"],"names":["NAVBAR_HEIGHT","MenuDivider","MenuSectionTitle","Flex","React","css","tokens","mqs","getGlowOnFocusStyles","shadow","increaseHitArea","minSize","getNavbarStyles","contentMaxWidth","variant","generateComponentWithVariants","generateIconComponent","IconVariant","CaretIcon","ContentfulLogoIcon","cx","Button","ListIcon","Menu","getNavbarMenuStyles","NavbarMenu","props","trigger","children","testId","onOpen","onClose","styles","_Navbar","ref","_a","logo","promotions","switcher","mainNavigation","secondaryNavigation","account","mobileNavigation","className","otherProps","__objRest","__spreadProps","__spreadValues","Navbar","notificationVarianColorMap","getNavbarAccountStyles","Avatar","Tooltip","_NavbarAccount","avatar","label","initials","username","hasNotification","notificationVariant","NavbarAccount","SkeletonContainer","SkeletonImage","NavbarAccountSkeleton","ariaLabel","hexToRGBA","borderWidth","getNavbarItemActiveStyles","commonItemStyles","getNavbarItemStyles","hasTitle","getNavbarItemSkeletonStyles","getNavbarItemIconStyles","NavbarItemIcon","icon","isActive","iconClassName","size","rest","NAVBAR_ITEM_DEFAULT_TAG","_NavbarItem","Comp","title","isMenuTrigger","isNavbarItemHasMenu","showCaret","item","NavbarItem","SkeletonText","NavbarItemSkeleton","estimatedWidth","getNavbarMenuItemStyles","ArrowSquareOutIcon","NAVBAR_MENU_ITEM_DEFAULT_TAG","_NavbarMenuItem","itemIsExternalLink","isExternalLink","externalIcon","NavbarMenuItem","SkeletonBodyText","NavbarMenuItemSkeleton","BORDER_WIDTH","getNavbarSwitcherStyles","isMaster","showSpaceEnv","getEnvVariantColor","Box","EnvironmentAliasIcon","EnvironmentIcon","RocketLaunchIcon","NavbarEnvVariant","isAlias","envVariant","color","NavbarSwitcherSkeleton","CaretRightIcon","Text","splitString","string","startLength","endLength","start","end","remainder","SwitcherLabel","value","middle","_NavbarSwitcher","space","environment","isLoading","NavbarSwitcher","getNavbarBadgeStyles","NAVBAR_BADGE_DEFAULT_TAG","_NavbarBadge","NavbarBadge","getNavbarSubmenuStyles","NavbarSubmenu"],"mappings":"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","sourcesContent":["export const NAVBAR_HEIGHT = 60;\n","import { MenuDivider } from '@contentful/f36-menu';\nimport { MenuSectionTitle } from '@contentful/f36-menu';\nimport { Navbar as OriginalNavbar } from './Navbar';\n\nimport { NavbarAccount, NavbarAccountSkeleton } from './NavbarAccount';\nimport { NavbarItem, NavbarItemSkeleton } from './NavbarItem';\nimport { NavbarMenuItem, NavbarMenuItemSkeleton } from './NavbarMenuItem';\nimport { NavbarSwitcher, NavbarSwitcherSkeleton } from './NavbarSwitcher';\nimport { NavbarBadge } from './NavbarBadge/NavbarBadge';\nimport { NavbarSubmenu } from './NavbarSubmenu/NavbarSubmenu';\n\ntype CompoundNavbar = typeof OriginalNavbar & {\n Item: typeof NavbarItem;\n ItemSkeleton: typeof NavbarItemSkeleton;\n MenuItem: typeof NavbarMenuItem;\n MenuItemSkeleton: typeof NavbarMenuItemSkeleton;\n MenuDivider: typeof MenuDivider;\n MenuSectionTitle: typeof MenuSectionTitle;\n Submenu: typeof NavbarSubmenu;\n Switcher: typeof NavbarSwitcher;\n SwitcherSkeleton: typeof NavbarSwitcherSkeleton;\n Account: typeof NavbarAccount;\n AccountSkeleton: typeof NavbarAccountSkeleton;\n Badge: typeof NavbarBadge;\n};\n\nexport const Navbar = OriginalNavbar as CompoundNavbar;\nNavbar.Item = NavbarItem;\nNavbar.ItemSkeleton = NavbarItemSkeleton;\nNavbar.MenuItem = NavbarMenuItem;\nNavbar.MenuItemSkeleton = NavbarMenuItemSkeleton;\nNavbar.MenuDivider = MenuDivider;\nNavbar.MenuSectionTitle = MenuSectionTitle;\nNavbar.Submenu = NavbarSubmenu;\nNavbar.Switcher = NavbarSwitcher;\nNavbar.SwitcherSkeleton = NavbarSwitcherSkeleton;\nNavbar.Account = NavbarAccount;\nNavbar.AccountSkeleton = NavbarAccountSkeleton;\nNavbar.Badge = NavbarBadge;\n","import { type CommonProps, type ExpandProps, Flex } from '@contentful/f36-core';\nimport React from 'react';\nimport { getNavbarStyles } from './Navbar.styles';\nimport { ContentfulLogoIcon } from './icons';\nimport { cx } from 'emotion';\nimport { Button } from '@contentful/f36-button';\nimport { ListIcon } from '@contentful/f36-icons';\nimport { NavbarMenu } from './NavbarMenu/NavbarMenu';\n\ntype NavbarOwnProps = CommonProps & {\n /**\n * Accepts a React Component that will be displayed\n * instead of the Contentful Logo\n */\n logo?: React.ReactNode;\n\n /** Promotions component, displayed on most left side */\n promotions?: React.ReactNode;\n\n /** Environment Switcher component */\n switcher?: React.ReactNode;\n\n /** Main Navigation Elements */\n mainNavigation?: React.ReactNode;\n\n /** Secondary Navigation Elements, displayed in the right side */\n secondaryNavigation?: React.ReactNode;\n\n /** User Account Component */\n account?: React.ReactNode;\n\n /** Navigation displayed on mobile versions */\n mobileNavigation?: React.ReactNode;\n\n /**\n * Defines the max-width of the content inside the navbar.\n * @default '100%'\n */\n contentMaxWidth?: string;\n\n /**\n * Describes the size variation of the Navbar\n * Variant wide will set the contentMaxWidth to 1524px\n */\n variant?: 'wide' | 'fullscreen';\n};\n\n// expose only the HTML props that are needed to not pollute the API\ntype NavbarHTMLElementProps = Pick<React.ComponentPropsWithoutRef<'div'>, 'id'>;\n\nexport type NavbarProps = NavbarHTMLElementProps & NavbarOwnProps;\n\nfunction _Navbar(props: ExpandProps<NavbarProps>, ref: React.Ref<HTMLElement>) {\n const {\n logo,\n promotions,\n switcher,\n mainNavigation,\n secondaryNavigation,\n account,\n mobileNavigation,\n className,\n contentMaxWidth = '100%',\n testId = 'cf-ui-navbar',\n variant = 'wide',\n ...otherProps\n } = props;\n const styles = getNavbarStyles({ contentMaxWidth, variant });\n\n return (\n <Flex\n {...otherProps}\n ref={ref}\n testId={testId}\n className={cx(styles.container, className)}\n as=\"header\"\n >\n <Flex\n as=\"nav\"\n className={styles.navigation}\n justifyContent=\"space-between\"\n gap=\"spacingXs\"\n >\n <Flex alignItems=\"center\" gap=\"spacingL\">\n {logo || <ContentfulLogoIcon className={styles.logo} />}\n {mobileNavigation && (\n <NavbarMenu\n trigger={\n <Button\n className={styles.mobileNavigationButton}\n startIcon={<ListIcon size=\"medium\" />}\n >\n Menu\n </Button>\n }\n >\n {mobileNavigation}\n </NavbarMenu>\n )}\n {mainNavigation && (\n <Flex\n className={styles.mainNavigation}\n aria-label=\"Main Navigation\"\n gap=\"spacingXs\"\n >\n {mainNavigation}\n </Flex>\n )}\n </Flex>\n <Flex alignItems=\"center\" gap=\"spacingXs\">\n <Flex alignItems=\"center\">{promotions}</Flex>\n <Flex alignItems=\"center\">{switcher}</Flex>\n <Flex alignItems=\"center\" gap=\"spacingXs\">\n {secondaryNavigation && (\n <Flex\n className={styles.secondaryNavigationWrapper}\n aria-label=\"Secondary Navigation\"\n gap=\"spacingXs\"\n >\n {secondaryNavigation}\n </Flex>\n )}\n {account && (\n <Flex\n className={styles.account}\n aria-label=\"Account Navigation\"\n gap=\"spacingXs\"\n >\n {account}\n </Flex>\n )}\n </Flex>\n </Flex>\n </Flex>\n </Flex>\n );\n}\n\nexport const Navbar = React.forwardRef(_Navbar);\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\nimport { mqs } from './utils.styles';\nimport { NavbarProps } from './Navbar';\nimport { NAVBAR_HEIGHT } from './constants';\n\nexport const getNavbarStyles = ({\n contentMaxWidth,\n variant,\n}: Pick<NavbarProps, 'contentMaxWidth' | 'variant'>) => ({\n container: css({\n justifyContent: 'center',\n backgroundColor: tokens.gray100,\n width: '100%',\n }),\n logo: css({\n display: 'none',\n [mqs.small]: {\n display: 'block',\n height: '28px',\n width: '28px',\n },\n }),\n\n navigation: css({\n width: '100%',\n maxWidth: variant === 'wide' ? '1920px' : contentMaxWidth,\n padding: `${tokens.spacingS} ${tokens.spacingM}`,\n height: `${NAVBAR_HEIGHT}px`,\n [mqs.small]: {\n padding: `${tokens.spacingM} ${tokens.spacingL}`,\n },\n }),\n\n mainNavigation: css({\n display: 'none',\n [mqs.small]: {\n display: 'flex',\n },\n }),\n\n mobileNavigationButton: css({\n display: 'flex',\n minHeight: 'initial', // unset default 40px height\n height: '36px',\n padding: '0 12px',\n borderRadius: '10px',\n [mqs.small]: {\n display: 'none',\n },\n }),\n mobileNavigationIcon: css({\n heigt: '20px',\n width: '20px',\n }),\n\n secondaryNavigationWrapper: css({\n '> *:not(:first-child)': {\n display: 'none',\n [mqs.xsmall]: {\n display: 'flex',\n },\n },\n }),\n\n account: css({\n display: 'none',\n [mqs.xsmall]: {\n display: 'flex',\n },\n }),\n});\n","import tokens from '@contentful/f36-tokens';\nimport type { CSSObject } from '@emotion/serialize';\n\ntype screens = 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge';\ntype mediaqueries = Record<screens, string>;\nexport const mqs: mediaqueries = {\n xsmall: '@media (min-width: 576px)',\n small: '@media (min-width: 867px)',\n medium: '@media (min-width: 1024px)',\n large: '@media (min-width: 1200px)',\n xlarge: '@media (min-width: 1920px)',\n};\n\nexport const getGlowOnFocusStyles = (\n shadow: string = tokens.glowPrimary,\n): CSSObject => ({\n '&:focus': {\n boxShadow: shadow,\n },\n '&:focus:not(:focus-visible)': {\n boxShadow: 'unset',\n },\n '&:focus-visible': {\n boxShadow: shadow,\n },\n});\n\nexport const increaseHitArea = (minSize = '44px'): CSSObject => ({\n overflow: 'visible',\n position: 'relative',\n '&:after': {\n minHeight: minSize,\n minWidth: minSize,\n position: 'absolute',\n width: '100%',\n content: '\"\"',\n left: '50%',\n top: '50%',\n transform: 'translate(-50%, -50%)',\n },\n});\n","import React from 'react';\nimport tokens from '@contentful/f36-tokens';\nimport {\n generateComponentWithVariants,\n generateIconComponent,\n IconVariant,\n} from '@contentful/f36-icon';\n\nexport const CaretIcon = generateComponentWithVariants({\n variants: {\n [IconVariant.Active]: generateIconComponent({\n path: (\n <>\n <path\n d=\"M10.0153 4.76531L6.2653 8.51531C6.23048 8.55018 6.18912 8.57784 6.14359 8.59671C6.09807 8.61558 6.04927 8.62529 5.99999 8.62529C5.95071 8.62529 5.90191 8.61558 5.85639 8.59671C5.81086 8.57784 5.76951 8.55018 5.73468 8.51531L1.98468 4.76531C1.93217 4.71287 1.89641 4.64602 1.88192 4.57324C1.86742 4.50046 1.87485 4.42501 1.90326 4.35645C1.93166 4.28789 1.97977 4.22931 2.0415 4.1881C2.10322 4.1469 2.17578 4.12494 2.24999 4.125H9.74999C9.8242 4.12494 9.89676 4.1469 9.95848 4.1881C10.0202 4.22931 10.0683 4.28789 10.0967 4.35645C10.1251 4.42501 10.1326 4.50046 10.1181 4.57324C10.1036 4.64602 10.0678 4.71287 10.0153 4.76531Z\"\n fill={tokens.blue300}\n />\n </>\n ),\n viewBox: '0 0 12 12',\n }),\n [IconVariant.Default]: generateIconComponent({\n path: (\n <>\n <path\n d=\"M10.0153 4.76531L6.2653 8.51531C6.23048 8.55018 6.18912 8.57784 6.14359 8.59671C6.09807 8.61558 6.04927 8.62529 5.99999 8.62529C5.95071 8.62529 5.90191 8.61558 5.85639 8.59671C5.81086 8.57784 5.76951 8.55018 5.73468 8.51531L1.98468 4.76531C1.93217 4.71287 1.89641 4.64602 1.88192 4.57324C1.86742 4.50046 1.87485 4.42501 1.90326 4.35645C1.93166 4.28789 1.97977 4.22931 2.0415 4.1881C2.10322 4.1469 2.17578 4.12494 2.24999 4.125H9.74999C9.8242 4.12494 9.89676 4.1469 9.95848 4.1881C10.0202 4.22931 10.0683 4.28789 10.0967 4.35645C10.1251 4.42501 10.1326 4.50046 10.1181 4.57324C10.1036 4.64602 10.0678 4.71287 10.0153 4.76531Z\"\n fill={tokens.gray400}\n />\n </>\n ),\n viewBox: '0 0 12 12',\n }),\n },\n});\n","import React from 'react';\nimport { generateIconComponent } from '@contentful/f36-icon';\n\nexport const ContentfulLogoIcon = /*#__PURE__*/ generateIconComponent({\n name: 'ContentfulLogoIcon',\n viewBox: '0 0 28 28',\n path: (\n <>\n <path\n fill=\"#1773EB\"\n d=\"M10.713 5.001c.845.843 1.167 2.079.845 3.228A6.663 6.663 0 0 1 15 7.276h.026a6.7 6.7 0 0 1 4.743 1.988 2.64 2.64 0 1 0 3.746-3.715A11.96 11.96 0 0 0 15.042 2h-.046a11.933 11.933 0 0 0-6.691 2.036h.074a3.287 3.287 0 0 1 2.334.967V5Z\"\n />\n <path\n fill=\"#E44F20\"\n d=\"M21.594 17.999a2.64 2.64 0 0 0-1.858.766 6.703 6.703 0 0 1-4.732 1.951h-.025a6.65 6.65 0 0 1-3.447-.968A3.3 3.3 0 0 1 8.35 23.93h-.086A11.926 11.926 0 0 0 14.96 26h.046a11.94 11.94 0 0 0 8.449-3.484 2.64 2.64 0 0 0-1.859-4.514V18h-.002Z\"\n />\n <path\n fill=\"#FFDA00\"\n d=\"M6.013 18.295a3.27 3.27 0 0 1 2.334-.967c.302 0 .603.04.894.122a6.7 6.7 0 0 1 .013-6.928A3.3 3.3 0 0 1 5.08 7.335v-.09a11.999 11.999 0 0 0-.032 13.453v-.07a3.27 3.27 0 0 1 .966-2.333Z\"\n />\n <path\n fill=\"#1773EB\"\n d=\"M8.379 4.62c-.75 0-1.276.312-1.913.949-.607.605-.798 1.135-.8 1.766A2.712 2.712 0 1 0 8.38 4.62Z\"\n />\n <path\n fill=\"#E44F20\"\n d=\"M5.628 20.631c0 .75.31 1.276.946 1.912.607.606 1.136.799 1.766.8a2.703 2.703 0 1 0-.017-5.407 2.703 2.703 0 0 0-2.695 2.704v-.009Z\"\n />\n </>\n ),\n});\n","import React from 'react';\nimport { Menu, type MenuListProps, type MenuProps } from '@contentful/f36-menu';\nimport { getNavbarMenuStyles } from './NavbarMenu.styles';\n\nexport type NavbarMenuProps = {\n trigger: React.ReactNode;\n children?: React.ReactNode;\n} & Pick<MenuListProps, 'testId'> &\n Pick<MenuProps, 'onOpen' | 'onClose'>;\n\nexport const NavbarMenu = (props: NavbarMenuProps) => {\n const {\n trigger,\n children,\n testId = 'cf-ui-navbar-menu-list',\n onOpen,\n onClose,\n } = props;\n const styles = getNavbarMenuStyles();\n\n return (\n <Menu onOpen={onOpen} onClose={onClose}>\n <Menu.Trigger>{trigger}</Menu.Trigger>\n <Menu.List className={styles.menuList} testId={testId}>\n {children}\n </Menu.List>\n </Menu>\n );\n};\n","import { css } from 'emotion';\nimport { mqs } from '../utils.styles';\n\nexport const getNavbarMenuStyles = () => ({\n menuList: css({\n minWidth: 0,\n [mqs.xsmall]: {\n minWidth: '250px',\n },\n }),\n});\n","import React from 'react';\nimport { cx } from 'emotion';\nimport { getNavbarAccountStyles } from './NavbarAccount.styles';\nimport {\n type PropsWithHTMLElement,\n type CommonProps,\n type ExpandProps,\n} from '@contentful/f36-core';\nimport { NavbarMenu } from '../NavbarMenu/NavbarMenu';\nimport { Flex } from '@contentful/f36-core';\nimport { Avatar } from '@contentful/f36-avatar';\nimport { Tooltip } from '@contentful/f36-tooltip';\n\ntype NavbarAccountOwnProps = CommonProps & {\n children: React.ReactNode;\n username: string;\n avatar?: string;\n initials?: string;\n hasNotification?: boolean;\n label?: string;\n /**\n * @default 'warning'\n */\n notificationVariant?: 'warning' | 'negative' | 'info';\n};\n\nexport type NavbarAccountProps = PropsWithHTMLElement<\n NavbarAccountOwnProps,\n 'button'\n>;\n\nfunction _NavbarAccount(\n props: ExpandProps<NavbarAccountProps>,\n ref: React.Ref<HTMLButtonElement>,\n) {\n const {\n children,\n className,\n testId = 'cf-ui-navbar-account-trigger',\n avatar,\n label = 'Account menu',\n initials,\n username,\n hasNotification,\n notificationVariant = 'warning',\n ...otherProps\n } = props;\n const styles = getNavbarAccountStyles();\n\n return (\n <NavbarMenu\n trigger={\n <div>\n <Tooltip placement=\"bottom\" content={label} showDelay={600} usePortal>\n <Flex\n as=\"button\"\n {...otherProps}\n ref={ref}\n className={cx(styles.navbarAccount, className)}\n testId={testId}\n alignItems=\"center\"\n aria-label={label}\n >\n <Avatar\n src={avatar}\n initials={initials}\n size=\"small\"\n variant=\"user\"\n />\n\n {hasNotification ? (\n <span\n className={styles.notificationIcon(notificationVariant)}\n />\n ) : null}\n </Flex>\n </Tooltip>\n </div>\n }\n >\n {children}\n </NavbarMenu>\n );\n}\n\nexport const NavbarAccount = React.forwardRef(_NavbarAccount);\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\nimport { NavbarAccountProps } from './NavbarAccount';\nimport { getGlowOnFocusStyles, increaseHitArea } from '../utils.styles';\n\nconst notificationVarianColorMap: Record<\n NavbarAccountProps['notificationVariant'],\n string\n> = {\n warning: tokens.colorWarning,\n negative: tokens.colorNegative,\n info: tokens.blue500,\n};\n\nexport const getNavbarAccountStyles = () => ({\n navbarAccount: css(\n {\n cursor: 'pointer',\n background: 'none',\n position: 'relative',\n outline: 'none',\n overflow: 'visible',\n borderRadius: '50%',\n border: 'none',\n padding: 0,\n '&:hover img': {\n filter: 'brightness(0.9)',\n },\n },\n getGlowOnFocusStyles(),\n increaseHitArea(),\n ),\n notificationIcon: (variant: NavbarAccountProps['notificationVariant']) =>\n css({\n position: 'absolute',\n top: 0,\n right: 0,\n height: tokens.spacingS,\n width: tokens.spacingS,\n borderRadius: '50%',\n border: `2px solid ${tokens.gray100}`,\n backgroundColor: notificationVarianColorMap[variant],\n transform: 'translate(30%, -30%)',\n zIndex: 1, // move above the avatar\n }),\n});\n","import React from 'react';\nimport { SkeletonContainer, SkeletonImage } from '@contentful/f36-skeleton';\nimport tokens from '@contentful/f36-tokens';\n\nexport function NavbarAccountSkeleton({ ariaLabel }: { ariaLabel?: string }) {\n return (\n <SkeletonContainer\n svgWidth={24}\n svgHeight={24}\n ariaLabel={ariaLabel}\n backgroundColor={tokens.gray300}\n foregroundColor={tokens.gray200}\n >\n <SkeletonImage width={24} height={24} radiusX={12} radiusY={12} />\n </SkeletonContainer>\n );\n}\n","import React from 'react';\nimport { cx } from 'emotion';\nimport { getNavbarItemStyles } from './NavbarItem.styles';\nimport { NavbarMenu, type NavbarMenuProps } from '../NavbarMenu/NavbarMenu';\nimport {\n NavbarItemIcon,\n type NavbarItemIconProps,\n} from '../NavbarItemIcon/NavbarItemIcon';\nimport { CaretIcon } from '../icons';\nimport type {\n CommonProps,\n ExpandProps,\n PolymorphicComponent,\n PolymorphicProps,\n} from '@contentful/f36-core';\nimport { Tooltip } from '@contentful/f36-tooltip';\n\nconst NAVBAR_ITEM_DEFAULT_TAG = 'button';\n\ntype NavbarItemTriggerProps = CommonProps & {\n label?: string;\n title?: string;\n icon?: NavbarItemIconProps['icon'];\n isActive?: boolean;\n as?: React.ElementType;\n};\n\ntype NavbarItemAsMenuProps = NavbarItemTriggerProps &\n Pick<NavbarMenuProps, 'onOpen' | 'onClose'> & {\n children: React.ReactNode;\n };\ntype NavbarItemAsItemProps = NavbarItemTriggerProps & {\n children?: never;\n onOpen?: never;\n onClose?: never;\n};\ntype NavbarItemOwnProps = NavbarItemAsItemProps | NavbarItemAsMenuProps;\n\nexport type NavbarItemProps<\n E extends React.ElementType = typeof NAVBAR_ITEM_DEFAULT_TAG,\n> = PolymorphicProps<NavbarItemOwnProps, E>;\n\nfunction _NavbarItem(\n props: NavbarItemProps<React.ElementType>,\n ref: React.Ref<any>,\n) {\n const {\n as: Comp = NAVBAR_ITEM_DEFAULT_TAG,\n icon,\n label,\n title,\n children,\n className,\n isActive,\n testId = 'cf-ui-navbar-item',\n onOpen,\n onClose,\n ...otherProps\n } = props;\n const styles = getNavbarItemStyles({ hasTitle: !!title });\n const isMenuTrigger = isNavbarItemHasMenu(props);\n const showCaret = title && isMenuTrigger;\n let item = (\n <Comp\n {...otherProps}\n ref={ref}\n data-test-id={testId}\n className={cx(styles.navbarItem, className, {\n [styles.navbarItemMenuTrigger]: showCaret,\n [styles.isActive]: isActive,\n })}\n aria-label={title ? '' : label}\n >\n {icon && (\n <NavbarItemIcon\n className={styles.icon}\n icon={icon}\n isActive={isActive}\n />\n )}\n {title && <span>{title}</span>}\n {showCaret && <CaretIcon size=\"tiny\" isActive={isActive} />}\n </Comp>\n );\n\n if (!title) {\n item = (\n <div>\n <Tooltip content={label} placement=\"bottom\" showDelay={600} usePortal>\n {item}\n </Tooltip>\n </div>\n );\n }\n\n if (isMenuTrigger) {\n return (\n <NavbarMenu\n trigger={item}\n testId={testId}\n onOpen={onOpen}\n onClose={onClose}\n >\n {children}\n </NavbarMenu>\n );\n }\n\n return item;\n}\n\nconst isNavbarItemHasMenu = <E extends React.ElementType>(\n props: NavbarItemProps<E>,\n): props is PolymorphicProps<NavbarItemAsMenuProps, E> =>\n Boolean(props.children);\n\nexport const NavbarItem: PolymorphicComponent<\n ExpandProps<NavbarItemOwnProps>,\n typeof NAVBAR_ITEM_DEFAULT_TAG\n> = React.forwardRef(_NavbarItem);\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\nimport { hexToRGBA } from '@contentful/f36-utils';\nimport { getGlowOnFocusStyles, increaseHitArea, mqs } from '../utils.styles';\n\nconst borderWidth = '1px';\n\nexport const getNavbarItemActiveStyles = () =>\n css({\n backgroundColor: tokens.blue100,\n border: `${borderWidth} solid ${tokens.blue400}`,\n color: tokens.blue600,\n '&:hover': {\n backgroundColor: tokens.blue100,\n },\n });\n\nconst commonItemStyles = {\n display: 'flex',\n justifyContent: 'center',\n padding: `calc(${tokens.spacing2Xs} - ${borderWidth}) calc(${tokens.spacingXs} - ${borderWidth})`,\n alignItems: 'center',\n background: 'none',\n gap: tokens.spacing2Xs,\n};\n\nexport const getNavbarItemStyles = ({ hasTitle }: { hasTitle: boolean }) => ({\n navbarItem: css(\n commonItemStyles,\n {\n appearance: 'none',\n background: 'none',\n border: `${borderWidth} solid transparent`,\n margin: 0,\n outline: 'none',\n fontSize: tokens.fontSizeM,\n lineHeight: tokens.lineHeightM,\n fontWeight: tokens.fontWeightMedium,\n position: 'relative',\n textAlign: 'left',\n whiteSpace: 'nowrap',\n cursor: 'pointer',\n hyphens: 'auto',\n textDecoration: 'none',\n color: tokens.gray800,\n boxSizing: 'border-box',\n transition: `color ${tokens.transitionDurationShort} ${tokens.transitionEasingCubicBezier}`,\n borderRadius: tokens.borderRadiusMedium,\n height: '30px',\n\n padding: hasTitle\n ? undefined\n : `calc(${tokens.spacing2Xs} - ${borderWidth})`, // square button for icon-only items\n\n '&:hover': {\n backgroundColor: hexToRGBA(tokens.gray900, 0.05),\n },\n\n '&:hover::before': {\n opacity: 1,\n scale: '1',\n },\n\n '&:active::before': {\n backgroundColor: `rgba(255, 255, 255, 0.1)`,\n },\n '&:disabled': {\n cursor: 'auto',\n },\n\n '& svg': {\n transition: `fill ${tokens.transitionDurationShort} ${tokens.transitionEasingCubicBezier}`,\n },\n '& > svg, & > span': {\n zIndex: tokens.zIndexDefault,\n },\n },\n getGlowOnFocusStyles(),\n increaseHitArea(),\n ),\n navbarItemMenuTrigger: css({\n paddingRight: tokens.spacingXs,\n }),\n isActive: getNavbarItemActiveStyles(),\n icon: css({\n height: '20px',\n width: '20px',\n boxSizing: 'content-box',\n display: hasTitle ? 'none' : 'block',\n [mqs.small]: {\n height: '16px',\n width: '16px',\n padding: hasTitle ? '2px 0' : '2px', // square for icon-only items\n },\n [mqs.large]: {\n display: 'block',\n },\n }),\n});\n\nexport const getNavbarItemSkeletonStyles = () => ({\n itemSkeleton: css(commonItemStyles),\n});\n","import React from 'react';\nimport type { IconProps } from '@contentful/f36-icons';\nimport { getNavbarItemIconStyles } from './NavbarItemIcon.styles';\nimport { cx } from 'emotion';\n\nexport type NavbarItemIconProps = {\n icon: React.ReactElement<IconProps>;\n className?: string;\n} & Partial<Pick<IconProps, 'isActive'>>;\n\nexport const NavbarItemIcon = ({\n icon,\n isActive,\n className,\n}: NavbarItemIconProps) => {\n const { className: iconClassName, size, ...rest } = icon.props;\n const styles = getNavbarItemIconStyles();\n\n return React.cloneElement(icon, {\n className: cx(iconClassName, styles.navbarItemIcon, className),\n size: size || 'small',\n isActive,\n ...rest,\n });\n};\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nexport const getNavbarItemIconStyles = () => ({\n navbarItemIcon: css({\n '&:last-child&:not(:only-child)': {\n marginLeft: tokens.spacing2Xs,\n },\n 'img&': {\n borderRadius: tokens.borderRadiusSmall,\n maxWidth: tokens.spacingM,\n maxHeight: tokens.spacingM,\n },\n }),\n});\n","import React from 'react';\nimport { SkeletonContainer, SkeletonText } from '@contentful/f36-skeleton';\nimport tokens from '@contentful/f36-tokens';\nimport { getNavbarItemSkeletonStyles } from './NavbarItem.styles';\n\nexport const NavbarItemSkeleton = ({\n estimatedWidth,\n}: {\n estimatedWidth: number;\n}) => {\n const styles = getNavbarItemSkeletonStyles();\n\n return (\n <SkeletonContainer\n className={styles.itemSkeleton}\n svgWidth={estimatedWidth}\n svgHeight={28}\n backgroundColor={tokens.gray300}\n foregroundColor={tokens.gray200}\n >\n <SkeletonText\n lineHeight={18}\n numberOfLines={1}\n offsetTop={2}\n radiusX={tokens.borderRadiusSmall}\n radiusY={tokens.borderRadiusSmall}\n />\n </SkeletonContainer>\n );\n};\n","import React from 'react';\nimport { cx } from 'emotion';\nimport { getNavbarMenuItemStyles } from './NavbarMenuItem.styles';\nimport { Menu, type MenuItemProps } from '@contentful/f36-menu';\nimport {\n NavbarItemIcon,\n type NavbarItemIconProps,\n} from '../NavbarItemIcon/NavbarItemIcon';\nimport { ArrowSquareOutIcon } from '@contentful/f36-icons';\nimport type {\n ExpandProps,\n PolymorphicComponent,\n PolymorphicProps,\n} from '@contentful/f36-core';\n\nconst NAVBAR_MENU_ITEM_DEFAULT_TAG = 'button';\n\ntype NavbarMenuItemOwnProps = {\n children?: null;\n title: string;\n icon?: NavbarItemIconProps['icon'];\n as?: React.ElementType;\n} & Omit<MenuItemProps, 'children' | 'as'>;\n\nexport type NavbarMenuItemProps<\n E extends React.ElementType = typeof NAVBAR_MENU_ITEM_DEFAULT_TAG,\n> = PolymorphicProps<NavbarMenuItemOwnProps, E>;\n\nfunction _NavbarMenuItem(\n props: NavbarMenuItemProps<React.ElementType>,\n ref: React.Ref<any>,\n) {\n const {\n as: Comp = NAVBAR_MENU_ITEM_DEFAULT_TAG,\n icon,\n title,\n className,\n ...otherProps\n } = props;\n const styles = getNavbarMenuItemStyles();\n\n const itemIsExternalLink = isExternalLink(\n props as unknown as NavbarMenuItemProps<'a'>,\n );\n\n return (\n <Menu.Item\n {...otherProps}\n ref={ref}\n as={Comp as MenuItemProps['as']}\n className={cx(styles.navbarMenuItem, className)}\n >\n {icon ? (\n <NavbarItemIcon icon={icon} />\n ) : (\n itemIsExternalLink && externalIcon\n )}\n <span>{title}</span>\n {icon && itemIsExternalLink ? externalIcon : null}\n </Menu.Item>\n );\n}\n\nconst externalIcon = <NavbarItemIcon icon={<ArrowSquareOutIcon />} />;\n\nconst isExternalLink = (props: NavbarMenuItemProps<'a'>) =>\n props.as === 'a' && props.target === '_blank';\n\nexport const NavbarMenuItem: PolymorphicComponent<\n ExpandProps<NavbarMenuItemOwnProps>,\n typeof NAVBAR_MENU_ITEM_DEFAULT_TAG\n> = React.forwardRef(_NavbarMenuItem);\n","import { css } from 'emotion';\nexport const getNavbarMenuItemStyles = () => ({\n navbarMenuItem: css({\n display: 'flex',\n justifyContent: 'flex-start',\n alignItems: 'center',\n }),\n});\n","import React from 'react';\nimport { Menu } from '@contentful/f36-menu';\nimport {\n SkeletonBodyText,\n SkeletonContainer,\n SkeletonImage,\n} from '@contentful/f36-skeleton';\nimport { Flex } from '@contentful/f36-core';\n\nimport tokens from '@contentful/f36-tokens';\n\nexport const NavbarMenuItemSkeleton = ({\n ariaLabel,\n}: {\n ariaLabel?: string;\n}) => (\n <Menu.Item>\n <Flex alignItems=\"center\" gap={tokens.spacingXs}>\n <SkeletonContainer svgHeight={16} svgWidth={18}>\n <SkeletonImage width={16} height={16} />\n </SkeletonContainer>\n <SkeletonContainer svgHeight={16} svgWidth={190} ariaLabel={ariaLabel}>\n <SkeletonBodyText numberOfLines={1} />\n </SkeletonContainer>\n </Flex>\n </Menu.Item>\n);\n","import React from 'react';\nimport { getNavbarSwitcherStyles } from './NavbarSwitcher.styles';\nimport { Button } from '@contentful/f36-button';\nimport {\n Flex,\n type CommonProps,\n type PropsWithHTMLElement,\n type ExpandProps,\n Box,\n} from '@contentful/f36-core';\nimport { cx } from 'emotion';\nimport { NavbarEnvVariant } from './NavbarEnvVariant';\nimport { NavbarSwitcherSkeleton } from './NavbarSwitcherSkeleton';\nimport { CaretRightIcon } from '@contentful/f36-icons';\nimport { Text } from '@contentful/f36-typography';\nimport tokens from '@contentful/f36-tokens';\n\ntype TruncateOptions = {\n /**\n * Number of characters to keep at the start of the string\n * @default 5\n */\n start?: number;\n /**\n * Number of characters to keep at the end of the string\n * @default 6\n */\n end?: number;\n};\n\nfunction splitString(\n string: string,\n {\n start: startLength = 5,\n end: endLength = 6,\n }: TruncateOptions | undefined = {},\n) {\n if (string.length <= startLength + endLength) {\n return [string, undefined, undefined];\n }\n\n const start = startLength > 0 ? string.slice(0, startLength) : '';\n const end = endLength > 0 ? string.slice(-endLength) : '';\n const remainder = string.slice(startLength, string.length - endLength);\n\n return [start, remainder, end];\n}\n\nexport type EnvVariant = 'master' | 'non-master';\n\ntype NavbarLoadingProps =\n | {\n isLoading?: true;\n children?: React.ReactNode;\n environment?: never;\n space?: never;\n }\n | {\n isLoading?: false;\n children?: never;\n environment?: string;\n space?: string;\n };\n\ntype NavbarSwitcherOwnProps = CommonProps &\n NavbarLoadingProps & {\n isCircle?: boolean;\n envVariant?: EnvVariant;\n isAlias?: boolean;\n ariaLabel?: string;\n };\n\nexport type NavbarSwitcherProps = PropsWithHTMLElement<\n NavbarSwitcherOwnProps,\n 'button'\n>;\n\ntype SwitcherLabelProps = {\n value: React.ReactNode;\n styles: ReturnType<typeof getNavbarSwitcherStyles>;\n envVariant?: EnvVariant;\n};\n\nconst SwitcherLabel = ({ value, styles }: SwitcherLabelProps) => {\n const [start, middle, end] =\n typeof value === 'string' ? splitString(value) : [];\n\n return start !== undefined ? (\n <Text className={styles.text}>\n <span>{start}</span>\n {middle && (\n <span className={styles.switcherSpaceNameTruncation}>{middle}</span>\n )}\n {end && <span>{end}</span>}\n </Text>\n ) : (\n <Text className={styles.text}>{value}</Text>\n );\n};\n\nfunction _NavbarSwitcher(\n props: ExpandProps<NavbarSwitcherProps>,\n ref: React.Ref<HTMLButtonElement>,\n) {\n const {\n children,\n className,\n envVariant,\n isAlias,\n testId = 'cf-ui-navbar-switcher',\n ariaLabel = 'Space and Environment Navigation',\n space,\n environment,\n isLoading,\n ...otherProps\n } = props;\n const isMaster = envVariant === 'master';\n const styles = getNavbarSwitcherStyles({ isMaster });\n\n return (\n <Button\n {...otherProps}\n aria-label={ariaLabel}\n className={cx(\n styles.navbarSwitcher({ showSpaceEnv: !isLoading && !children }),\n className,\n )}\n endIcon={\n envVariant && (\n <NavbarEnvVariant\n envVariant={envVariant}\n isAlias={isAlias}\n className={styles.switcherEnvIcon}\n />\n )\n }\n ref={ref}\n testId={testId}\n variant=\"transparent\"\n >\n <Flex\n alignItems=\"center\"\n className={styles.switcherSpaceName}\n flexDirection=\"row\"\n >\n {isLoading ? (\n <NavbarSwitcherSkeleton estimatedWidth={148} />\n ) : (\n <>\n {children ? (\n <Text className={styles.text}>{children}</Text>\n ) : (\n <Flex gap={tokens.spacingXs}>\n <Box className={styles.innerRectangle} />\n\n <Flex\n className={styles.innerSpaceEnv}\n gap={tokens.spacing2Xs}\n alignItems=\"center\"\n >\n <SwitcherLabel value={space} styles={styles} />\n\n {environment && (\n <>\n <CaretRightIcon\n size=\"tiny\"\n color={isMaster ? tokens.green700 : tokens.orange700}\n />\n <SwitcherLabel\n envVariant={envVariant}\n value={environment}\n styles={styles}\n />\n </>\n )}\n </Flex>\n </Flex>\n )}\n </>\n )}\n </Flex>\n </Button>\n );\n}\n\nexport const NavbarSwitcher = React.forwardRef(_NavbarSwitcher);\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\nimport { hexToRGBA } from '@contentful/f36-utils';\n\nimport { getGlowOnFocusStyles, increaseHitArea, mqs } from '../utils.styles';\n\nconst BORDER_WIDTH = 1;\n\nexport const getNavbarSwitcherStyles = ({\n isMaster,\n}: {\n isMaster: boolean;\n}) => ({\n text: css({\n color: 'currentcolor',\n fontWeight: 'inherit',\n }),\n\n navbarSwitcher: ({ showSpaceEnv }: { showSpaceEnv: boolean }) =>\n css(\n {\n color: tokens.gray600,\n flexShrink: 1,\n fontWeight: tokens.fontWeightMedium,\n maxWidth: '100%',\n minHeight: 'unset',\n padding: `${tokens.spacing2Xs} ${tokens.spacingXs}`,\n '&:hover': {\n backgroundColor: hexToRGBA(tokens.gray900, 0.05),\n },\n },\n showSpaceEnv && getEnvVariantColor(isMaster),\n getGlowOnFocusStyles(),\n increaseHitArea(),\n ),\n\n innerRectangle: css({\n width: `calc(8px - ${BORDER_WIDTH}px)`,\n borderTopLeftRadius: `calc(${tokens.borderRadiusMedium} - ${BORDER_WIDTH}px)`,\n borderBottomLeftRadius: `calc(${tokens.borderRadiusMedium} - ${BORDER_WIDTH}px)`,\n background: isMaster\n ? tokens.green300\n : `linear-gradient(\n -45deg, \n ${tokens.orange300} 28.57%, \n transparent 28.57%, \n transparent 50%, \n ${tokens.orange300} 50%, \n ${tokens.orange300} 78.57%, \n transparent 78.57%, \n transparent 100%\n )`,\n backgroundSize: isMaster ? 'inherit' : '9px 9px',\n backgroundPosition: 'bottom',\n }),\n\n innerSpaceEnv: css({\n height: '26px',\n }),\n\n switcherSpaceName: css({\n // Set min-width only when there are three span children\n '&:has(> span:last-child:nth-child(3))': {\n minWidth: '12ch',\n },\n maxWidth: '15vw',\n [mqs.xsmall]: {\n maxWidth: '50vw',\n },\n [mqs.small]: {\n maxWidth: '10vw',\n },\n [mqs.medium]: {\n maxWidth: '50vw',\n },\n }),\n\n switcherEnvIcon: css({\n [mqs.small]: {\n width: '16px',\n height: '16px',\n },\n }),\n\n switcherSpaceNameTruncation: css({\n flexShrink: 1,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }),\n});\n\nconst getEnvVariantColor = (isMaster: boolean) => ({\n padding: '0',\n paddingRight: tokens.spacingXs,\n color: isMaster ? tokens.green700 : tokens.orange700,\n backgroundColor: isMaster ? tokens.green100 : tokens.orange100,\n border: `${BORDER_WIDTH}px solid ${\n isMaster ? tokens.green400 : tokens.orange400\n }`,\n\n '&:hover, &:active': {\n backgroundColor: isMaster ? tokens.green200 : tokens.orange200,\n },\n});\n","import React from 'react';\nimport { NavbarSwitcherProps } from '../NavbarSwitcher/NavbarSwitcher';\nimport {\n EnvironmentAliasIcon,\n EnvironmentIcon,\n RocketLaunchIcon,\n} from '@contentful/f36-icons';\nimport tokens from '@contentful/f36-tokens';\n\nexport type NavbarEnvVariantProps = Pick<\n NavbarSwitcherProps,\n 'isAlias' | 'envVariant'\n> & {\n className?: string;\n};\n\nexport function NavbarEnvVariant({\n isAlias,\n envVariant,\n className,\n}: NavbarEnvVariantProps) {\n const isMaster = envVariant === 'master';\n const color = isMaster ? tokens.green700 : tokens.orange700;\n\n if (isMaster) {\n return (\n <RocketLaunchIcon color={color} className={className} size=\"medium\" />\n );\n } else if (isAlias) {\n return (\n <EnvironmentAliasIcon color={color} className={className} size=\"medium\" />\n );\n } else {\n return (\n <EnvironmentIcon color={color} className={className} size=\"medium\" />\n );\n }\n}\n","import React from 'react';\nimport { SkeletonContainer, SkeletonText } from '@contentful/f36-skeleton';\nimport tokens from '@contentful/f36-tokens';\n\nexport const NavbarSwitcherSkeleton = ({\n estimatedWidth,\n}: {\n estimatedWidth: number;\n}) => (\n <SkeletonContainer\n svgWidth={estimatedWidth}\n svgHeight={18}\n backgroundColor={tokens.gray300}\n foregroundColor={tokens.gray200}\n >\n <SkeletonText\n lineHeight={18}\n numberOfLines={1}\n radiusX={tokens.borderRadiusSmall}\n radiusY={tokens.borderRadiusSmall}\n />\n </SkeletonContainer>\n);\n","import React from 'react';\nimport { cx } from 'emotion';\nimport { getNavbarBadgeStyles } from './NavbarBadge.styles';\nimport type {\n CommonProps,\n ExpandProps,\n PolymorphicComponent,\n PolymorphicProps,\n} from '@contentful/f36-core';\n\nconst NAVBAR_BADGE_DEFAULT_TAG = 'div';\n\ntype NavbarBadgeOwnProps = CommonProps & {\n children?: React.ReactNode;\n as?: React.ElementType;\n};\n\nexport type NavbarBadgeProps<\n E extends React.ElementType = typeof NAVBAR_BADGE_DEFAULT_TAG,\n> = PolymorphicProps<NavbarBadgeOwnProps, E>;\n\nfunction _NavbarBadge(\n props: NavbarBadgeProps<React.ElementType>,\n ref: React.Ref<any>,\n) {\n const {\n as: Comp = NAVBAR_BADGE_DEFAULT_TAG,\n children,\n className,\n testId = 'cf-ui-navbar-badge',\n ...otherProps\n } = props;\n const styles = getNavbarBadgeStyles();\n\n return (\n <Comp\n {...otherProps}\n ref={ref}\n className={cx(styles.navbarBadge, className)}\n data-test-id={testId}\n >\n {children}\n </Comp>\n );\n}\n\nexport const NavbarBadge: PolymorphicComponent<\n ExpandProps<NavbarBadgeOwnProps>,\n typeof NAVBAR_BADGE_DEFAULT_TAG\n> = React.forwardRef(_NavbarBadge);\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nexport const getNavbarBadgeStyles = () => ({\n navbarBadge: css({\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n background: 'none',\n border: `1px solid ${tokens.purple600}`,\n margin: 0,\n outline: 'none',\n fontSize: tokens.fontSizeS,\n lineHeight: tokens.lineHeightS,\n fontWeight: tokens.fontWeightMedium,\n textAlign: 'center',\n padding: `0 ${tokens.spacingXs}`,\n textDecoration: 'none',\n color: `${tokens.purple600}!important`,\n borderRadius: '1.75rem',\n userSelect: 'none',\n }),\n});\n","import React from 'react';\nimport { Menu, type MenuListProps, type MenuProps } from '@contentful/f36-menu';\nimport { getNavbarSubmenuStyles } from './NavbarMenu.styles';\nimport {\n NavbarItemIcon,\n type NavbarItemIconProps,\n} from '../NavbarItemIcon/NavbarItemIcon';\nimport { Flex } from '@contentful/f36-core';\n\nexport type NavbarSubmenuProps = {\n title: string;\n icon?: NavbarItemIconProps['icon'];\n children?: React.ReactNode;\n} & Pick<MenuListProps, 'testId'> &\n Pick<MenuProps, 'onOpen' | 'onClose'>;\n\nexport const NavbarSubmenu = (props: NavbarSubmenuProps) => {\n const {\n title,\n icon,\n children,\n testId = 'cf-ui-navbar-submenu-list',\n onOpen,\n onClose,\n } = props;\n const styles = getNavbarSubmenuStyles();\n\n return (\n <Menu.Submenu onOpen={onOpen} onClose={onClose}>\n <Menu.SubmenuTrigger>\n <Flex className={styles.navbarMenuItem}>\n {icon && <NavbarItemIcon icon={icon} />}\n <span>{title}</span>\n </Flex>\n </Menu.SubmenuTrigger>\n <Menu.List className={styles.menuList} testId={testId}>\n {children}\n </Menu.List>\n </Menu.Submenu>\n );\n};\n","import tokens from '@contentful/f36-tokens';\nimport { css } from 'emotion';\nimport { mqs } from '../utils.styles';\n\nexport const getNavbarSubmenuStyles = () => ({\n navbarMenuItem: css({\n display: 'flex',\n justifyContent: 'flex-start',\n alignItems: 'center',\n gap: tokens.spacingXs,\n }),\n menuList: css({\n minWidth: 0,\n marginLeft: '-24px',\n marginTop: '10px',\n [mqs.xsmall]: {\n minWidth: '250px',\n margin: 0,\n },\n }),\n});\n"]}
|