@contentful/f36-navbar 5.0.0-alpha.32 → 5.0.0-alpha.34

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 CHANGED
@@ -1,18 +1,19 @@
1
1
  import { MenuDivider, MenuSectionTitle, Menu } from '@contentful/f36-menu';
2
2
  import { Flex } from '@contentful/f36-core';
3
- import l from 'react';
3
+ import l, { useMemo } from 'react';
4
4
  import { cx, css } from 'emotion';
5
- import c from '@contentful/f36-tokens';
5
+ import m from '@contentful/f36-tokens';
6
6
  import { generateComponentWithVariants, IconVariant, generateIconComponent } from '@contentful/f36-icon';
7
7
  import { Button } from '@contentful/f36-button';
8
8
  import { ArrowSquareOutIcon, ListIcon, CaretRightIcon, EnvironmentAliasIcon, EnvironmentIcon } from '@contentful/f36-icons';
9
- import { hexToRGBA } from '@contentful/f36-utils';
10
9
  import { Avatar } from '@contentful/f36-avatar';
11
- import { SkeletonContainer, SkeletonImage, SkeletonText, SkeletonBodyText, SkeletonDisplayText } from '@contentful/f36-skeleton';
10
+ import { Tooltip } from '@contentful/f36-tooltip';
11
+ import { SkeletonContainer, SkeletonImage, SkeletonText, SkeletonBodyText } from '@contentful/f36-skeleton';
12
+ import { hexToRGBA } from '@contentful/f36-utils';
12
13
  import { Text } from '@contentful/f36-typography';
13
14
 
14
- var Ge=Object.defineProperty,Xe=Object.defineProperties;var ze=Object.getOwnPropertyDescriptors;var z=Object.getOwnPropertySymbols;var ie=Object.prototype.hasOwnProperty,se=Object.prototype.propertyIsEnumerable;var ae=(e,t,o)=>t in e?Ge(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o,b=(e,t)=>{for(var o in t||(t={}))ie.call(t,o)&&ae(e,o,t[o]);if(z)for(var o of z(t))se.call(t,o)&&ae(e,o,t[o]);return e},f=(e,t)=>Xe(e,ze(t));var d=(e,t)=>{var o={};for(var r in e)ie.call(e,r)&&t.indexOf(r)<0&&(o[r]=e[r]);if(e!=null&&z)for(var r of z(e))t.indexOf(r)<0&&se.call(e,r)&&(o[r]=e[r]);return o};var p={xsmall:"@media (min-width: 576px)",small:"@media (min-width: 867px)",medium:"@media (min-width: 1024px)",large:"@media (min-width: 1200px)",xlarge:"@media (min-width: 1920px)"},A=(e=c.glowPrimary)=>({"&:focus":{boxShadow:e},"&:focus:not(:focus-visible)":{boxShadow:"unset"},"&:focus-visible":{boxShadow:e}}),k=(e="44px")=>({overflow:"visible",position:"relative","&:after":{minHeight:e,minWidth:e,position:"absolute",width:"100%",content:'""',left:"50%",top:"50%",transform:"translate(-50%, -50%)"}});var me=({contentMaxWidth:e,variant:t})=>({container:css({justifyContent:"center",backgroundColor:c.gray100,width:"100%"}),logo:css({display:"none",[p.small]:{display:"block",height:"28px",width:"28px"}}),navigation:css({width:"100%",maxWidth:t==="wide"?"1920px":e,padding:`${c.spacingS} ${c.spacingM}`,minHeight:c.spacingL,[p.small]:{padding:`${c.spacingM} ${c.spacingL}`}}),mainNavigation:css({display:"none",[p.small]:{display:"flex"}}),mobileNavigationButton:css({display:"flex",height:"36px",borderRadius:"10px",[p.small]:{display:"none"}}),mobileNavigationIcon:css({heigt:"20px",width:"20px"}),secondaryNavigationWrapper:css({"> *:not(:first-child)":{display:"none",[p.xsmall]:{display:"flex"}}}),account:css({display:"none",[p.xsmall]:{display:"flex"}})});var ue=generateComponentWithVariants({variants:{[IconVariant.Active]:generateIconComponent({path:l.createElement(l.Fragment,null,l.createElement("path",{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",fill:c.blue300})),viewBox:"0 0 12 12"}),[IconVariant.Default]:generateIconComponent({path:l.createElement(l.Fragment,null,l.createElement("path",{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",fill:c.gray400})),viewBox:"0 0 12 12"})}});var be=generateIconComponent({name:"ContentfulLogoIcon",viewBox:"0 0 28 28",path:l.createElement(l.Fragment,null,l.createElement("path",{fill:"#1773EB",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"}),l.createElement("path",{fill:"#E44F20",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"}),l.createElement("path",{fill:"#FFDA00",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"}),l.createElement("path",{fill:"#1773EB",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"}),l.createElement("path",{fill:"#E44F20",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"}))});var de=()=>({menuList:css({minWidth:0,[p.xsmall]:{minWidth:"250px"}})});var L=e=>{let{trigger:t,children:o,testId:r="cf-ui-navbar-menu-list",onOpen:a,onClose:n}=e,i=de();return l.createElement(Menu,{onOpen:a,onClose:n},l.createElement(Menu.Trigger,null,t),l.createElement(Menu.List,{className:i.menuList,testId:r},o))};function Ke(e,t){let V=e,{logo:o,promotions:r,switcher:a,mainNavigation:n,secondaryNavigation:i,account:s,mobileNavigation:m,className:N,contentMaxWidth:P="100%",testId:I="cf-ui-navbar",variant:g="wide"}=V,x=d(V,["logo","promotions","switcher","mainNavigation","secondaryNavigation","account","mobileNavigation","className","contentMaxWidth","testId","variant"]),h=me({contentMaxWidth:P,variant:g});return l.createElement(Flex,f(b({},x),{ref:t,testId:I,className:cx(h.container,N),as:"header"}),l.createElement(Flex,{as:"nav",className:h.navigation,justifyContent:"space-between",gap:"spacingXs"},l.createElement(Flex,{alignItems:"center",gap:"spacingL"},o||l.createElement(be,{className:h.logo}),m&&l.createElement(L,{trigger:l.createElement(Button,{className:h.mobileNavigationButton,startIcon:l.createElement(ListIcon,{size:"medium"})},"Menu")},m),n&&l.createElement(Flex,{className:h.mainNavigation,"aria-label":"Main Navigation",gap:"spacingXs"},n)),l.createElement(Flex,{alignItems:"center",gap:"spacingXs"},l.createElement(Flex,{alignItems:"center"},r),l.createElement(Flex,{alignItems:"center"},a),l.createElement(Flex,{alignItems:"center",gap:"spacingXs"},i&&l.createElement(Flex,{className:h.secondaryNavigationWrapper,"aria-label":"Secondary Navigation",gap:"spacingXs"},i),s&&l.createElement(Flex,{className:h.account,"aria-label":"Account Navigation",gap:"spacingXs"},s)))))}var ve=l.forwardRef(Ke);var et={warning:c.colorWarning,negative:c.colorNegative,info:c.blue500},ge=()=>({navbarAccount:css({margin:0,padding:0,border:0,cursor:"pointer",background:"none",position:"relative",outline:"none",overflow:"visible",borderRadius:"50%","&:before":css({content:'""',display:"block",position:"absolute",height:"24px",width:"24px",backgroundColor:"transparent",borderRadius:"50%"}),"&:hover:before":css({backgroundColor:hexToRGBA(c.gray300,.15)})},A(),k()),avatar:css({borderRadius:"50%",display:"block",height:"24px",width:"24px"}),notificationIcon:e=>css({position:"absolute",top:0,right:0,height:c.spacingS,width:c.spacingS,borderRadius:"50%",border:`2px solid ${c.gray100}`,backgroundColor:et[e],transform:"translate(30%, -30%)"})});function nt(e,t){let g=e,{children:o,className:r,testId:a="cf-ui-navbar-account-trigger",avatar:n,initials:i,username:s,hasNotification:m,notificationVariant:N="warning"}=g,P=d(g,["children","className","testId","avatar","initials","username","hasNotification","notificationVariant"]),I=ge();return l.createElement(L,{trigger:l.createElement(Flex,f(b({as:"button"},P),{ref:t,className:cx(I.navbarAccount,r),testId:a,alignItems:"center","aria-label":"Account Menu"}),l.createElement(Avatar,{src:n,initials:i,size:"small",variant:"user"}),m?l.createElement("span",{className:I.notificationIcon(N)}):null)},o)}var Y=l.forwardRef(nt);function J({ariaLabel:e}){return l.createElement(SkeletonContainer,{svgWidth:24,svgHeight:24,ariaLabel:e,backgroundColor:c.gray300,foregroundColor:c.gray200},l.createElement(SkeletonImage,{width:24,height:24,radiusX:12,radiusY:12}))}var he=()=>css({backgroundColor:c.blue100,border:`1px solid ${c.blue400}`,color:c.blue600,"&:hover":{backgroundColor:c.blue100}}),ye={display:"flex",justifyContent:"center",padding:`${c.spacing2Xs} ${c.spacingXs}`,alignItems:"center",background:"none",gap:c.spacing2Xs},xe=({title:e})=>({navbarItem:css(ye,{appearance:"none",background:"none",border:"1px solid transparent",margin:0,outline:"none",fontSize:c.fontSizeM,lineHeight:c.lineHeightM,fontWeight:c.fontWeightMedium,position:"relative",textAlign:"left",whiteSpace:"nowrap",cursor:"pointer",hyphens:"auto",textDecoration:"none",color:c.gray800,boxSizing:"border-box",transition:`color ${c.transitionDurationShort} ${c.transitionEasingCubicBezier}`,borderRadius:c.borderRadiusMedium,"&:hover":{backgroundColor:hexToRGBA(c.gray900,.05)},"&:hover::before":{opacity:1,scale:"1"},"&:active::before":{backgroundColor:"rgba(255, 255, 255, 0.1)"},"&:disabled":{cursor:"auto"},"& svg":{transition:`fill ${c.transitionDurationShort} ${c.transitionEasingCubicBezier}`},"& > svg, & > span":{zIndex:c.zIndexDefault}},A(),k()),navbarItemMenuTrigger:css({paddingRight:c.spacingXs}),isActive:he(),icon:css({height:"20px",width:"20px",display:e?"none":"block",[p.small]:{height:"16px",width:"16px"},[p.large]:{display:"block"}})}),Ie=()=>({itemSkeleton:css(ye)});var Se=()=>({navbarItemIcon:css({"&:last-child&:not(:only-child)":{marginLeft:c.spacing2Xs},"img&":{borderRadius:c.borderRadiusSmall,maxWidth:c.spacingM,maxHeight:c.spacingM}})});var C=({icon:e,isActive:t,className:o})=>{let s=e.props,{className:r,size:a}=s,n=d(s,["className","size"]),i=Se();return l.cloneElement(e,b({className:cx(r,i.navbarItemIcon,o),size:a||"small",isActive:t},n))};var ut="button";function bt(e,t){let ne=e,{as:o=ut,icon:r,label:a,title:n,children:i,className:s,isActive:m,testId:N="cf-ui-navbar-item",onOpen:P,onClose:I}=ne,g=d(ne,["as","icon","label","title","children","className","isActive","testId","onOpen","onClose"]),x=xe({title:n}),h=dt(e),V=l.createElement(o,f(b({},g),{ref:t,"data-test-id":N,className:cx(x.navbarItem,h&&x.navbarItemMenuTrigger,m&&x.isActive,s),"aria-label":n?"":a}),r&&l.createElement(C,{className:x.icon,icon:r,isActive:m}),n&&l.createElement("span",null,n),n&&h&&l.createElement(ue,{size:"tiny",isActive:m}));return h?l.createElement(L,{trigger:V,testId:N,onOpen:P,onClose:I},i):V}var dt=e=>!!e.children,K=l.forwardRef(bt);var Q=({estimatedWidth:e})=>{let t=Ie();return l.createElement(SkeletonContainer,{className:t.itemSkeleton,svgWidth:e,svgHeight:32,backgroundColor:c.gray300,foregroundColor:c.gray200},l.createElement(SkeletonText,{lineHeight:6,numberOfLines:1,offsetTop:10,radiusX:c.borderRadiusSmall,radiusY:c.borderRadiusSmall}))};var Me=()=>({navbarMenuItem:css({display:"flex",justifyContent:"flex-start",alignItems:"center"})});var xt="button";function It(e,t){let N=e,{as:o=xt,icon:r,title:a,className:n}=N,i=d(N,["as","icon","title","className"]),s=Me(),m=St(e);return l.createElement(Menu.Item,f(b({},i),{ref:t,as:o,className:cx(s.navbarMenuItem,n)}),r?l.createElement(C,{icon:r}):m&&we,l.createElement("span",null,a),r&&m?we:null)}var we=l.createElement(C,{icon:l.createElement(ArrowSquareOutIcon,null)}),St=e=>e.as==="a"&&e.target==="_blank",ee=l.forwardRef(It);var te=({ariaLabel:e})=>l.createElement(Menu.Item,null,l.createElement(Flex,{alignItems:"center",gap:c.spacingXs},l.createElement(SkeletonContainer,{svgHeight:16,svgWidth:18},l.createElement(SkeletonImage,{width:16,height:16})),l.createElement(SkeletonContainer,{svgHeight:16,svgWidth:190,ariaLabel:e},l.createElement(SkeletonBodyText,{numberOfLines:1}))));var Ae=()=>({navbarSwitcher:css({color:c.gray600,flexShrink:1,fontWeight:c.fontWeightMedium,maxWidth:"100%",minHeight:"unset",padding:`${c.spacing2Xs} ${c.spacingXs}`,"&:hover":{backgroundColor:hexToRGBA(c.gray900,.05)}},A(),k()),switcherSpaceName:css({"&:has(> span:last-child:nth-child(3))":{minWidth:"12ch"},maxWidth:"15vw",[p.xsmall]:{maxWidth:"50vw"},[p.small]:{maxWidth:"10vw"},[p.medium]:{maxWidth:"50vw"}}),switcherEnvIcon:css({[p.small]:{width:"16px",height:"16px"}}),switcherSpaceNameTruncation:css({flexShrink:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"})});function Te({isAlias:e,envVariant:t,className:o}){let r=t==="master"?c.green600:c.orange500;return e?l.createElement(EnvironmentAliasIcon,{color:r,className:o,size:"medium"}):l.createElement(EnvironmentIcon,{color:r,className:o,size:"medium"})}var X=({estimatedWidth:e})=>l.createElement(SkeletonContainer,{svgWidth:e,svgHeight:24,backgroundColor:c.gray300,foregroundColor:c.gray200},l.createElement(SkeletonDisplayText,{lineHeight:24,numberOfLines:1,radiusX:12,radiusY:12}));function Ht(e,{start:t=5,end:o=6}={}){if(e.length<=t+o)return [e,void 0,void 0];let r=t>0?e.slice(0,t):"",a=o>0?e.slice(-o):"",n=e.slice(t,e.length-o);return [r,n,a]}var We=({value:e,styles:t,envVariant:o,type:r})=>{let[a,n,i]=typeof e=="string"?Ht(e):[],s=r==="environment",m=o==="master"?"green600":"orange500";return a!==void 0?l.createElement(Text,{fontColor:s?m:void 0},l.createElement("span",null,a),n&&l.createElement("span",{className:t.switcherSpaceNameTruncation},n),i&&l.createElement("span",null,i)):l.createElement(Text,{fontColor:s?m:void 0},e)};function Rt(e,t){let x=e,{children:o,className:r,envVariant:a,isAlias:n,testId:i="cf-ui-navbar-switcher",ariaLabel:s="Space and Environment Navigation",space:m,environment:N,isLoading:P}=x,I=d(x,["children","className","envVariant","isAlias","testId","ariaLabel","space","environment","isLoading"]),g=Ae();return l.createElement(Button,f(b({},I),{"aria-label":s,className:cx(g.navbarSwitcher,r),endIcon:a&&l.createElement(Te,{envVariant:a,isAlias:n,className:g.switcherEnvIcon}),ref:t,testId:i,variant:"transparent"}),l.createElement(Flex,{alignItems:"center",className:g.switcherSpaceName,flexDirection:"row"},P?l.createElement(X,{estimatedWidth:148}):l.createElement(l.Fragment,null,l.createElement(We,{type:"space",value:m,styles:g}),l.createElement(CaretRightIcon,{size:"tiny",color:c.gray400}),l.createElement(We,{envVariant:a,type:"environment",value:N,styles:g}))))}var oe=l.forwardRef(Rt);var _e=()=>({navbarBadge:css({display:"flex",justifyContent:"center",alignItems:"center",background:"none",border:`1px solid ${c.purple600}`,margin:0,outline:"none",fontSize:c.fontSizeS,lineHeight:c.lineHeightS,fontWeight:c.fontWeightMedium,textAlign:"center",padding:`0 ${c.spacingXs}`,textDecoration:"none",color:`${c.purple600}!important`,borderRadius:"1.75rem",userSelect:"none"})});var Xt="div";function zt(e,t){let m=e,{as:o=Xt,children:r,className:a,testId:n="cf-ui-navbar-badge"}=m,i=d(m,["as","children","className","testId"]),s=_e();return l.createElement(o,f(b({},i),{ref:t,className:cx(s.navbarBadge,a),"data-test-id":n}),r)}var Ve=l.forwardRef(zt);var Re=()=>({navbarMenuItem:css({display:"flex",justifyContent:"flex-start",alignItems:"center",gap:c.spacingXs}),menuList:css({minWidth:0,marginLeft:"-24px",marginTop:"10px",[p.xsmall]:{minWidth:"250px",margin:0}})});var De=e=>{let{title:t,icon:o,children:r,testId:a="cf-ui-navbar-submenu-list",onOpen:n,onClose:i}=e,s=Re();return l.createElement(Menu.Submenu,{onOpen:n,onClose:i},l.createElement(Menu.SubmenuTrigger,null,l.createElement(Flex,{className:s.navbarMenuItem},o&&l.createElement(C,{icon:o}),l.createElement("span",null,t))),l.createElement(Menu.List,{className:s.menuList,testId:a},r))};var v=ve;v.Item=K;v.ItemSkeleton=Q;v.MenuItem=ee;v.MenuItemSkeleton=te;v.MenuDivider=MenuDivider;v.MenuSectionTitle=MenuSectionTitle;v.Submenu=De;v.Switcher=oe;v.SwitcherSkeleton=X;v.Account=Y;v.AccountSkeleton=J;v.Badge=Ve;
15
+ var Ue=Object.defineProperty,je=Object.defineProperties;var qe=Object.getOwnPropertyDescriptors;var G=Object.getOwnPropertySymbols;var pe=Object.prototype.hasOwnProperty,le=Object.prototype.propertyIsEnumerable;var me=(e,t,o)=>t in e?Ue(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o,d=(e,t)=>{for(var o in t||(t={}))pe.call(t,o)&&me(e,o,t[o]);if(G)for(var o of G(t))le.call(t,o)&&me(e,o,t[o]);return e},h=(e,t)=>je(e,qe(t));var b=(e,t)=>{var o={};for(var r in e)pe.call(e,r)&&t.indexOf(r)<0&&(o[r]=e[r]);if(e!=null&&G)for(var r of G(e))t.indexOf(r)<0&&le.call(e,r)&&(o[r]=e[r]);return o};var p={xsmall:"@media (min-width: 576px)",small:"@media (min-width: 867px)",medium:"@media (min-width: 1024px)",large:"@media (min-width: 1200px)",xlarge:"@media (min-width: 1920px)"},k=(e=m.glowPrimary)=>({"&:focus":{boxShadow:e},"&:focus:not(:focus-visible)":{boxShadow:"unset"},"&:focus-visible":{boxShadow:e}}),E=(e="44px")=>({overflow:"visible",position:"relative","&:after":{minHeight:e,minWidth:e,position:"absolute",width:"100%",content:'""',left:"50%",top:"50%",transform:"translate(-50%, -50%)"}});var ce=({contentMaxWidth:e,variant:t})=>({container:css({justifyContent:"center",backgroundColor:m.gray100,width:"100%"}),logo:css({display:"none",[p.small]:{display:"block",height:"28px",width:"28px"}}),navigation:css({width:"100%",maxWidth:t==="wide"?"1920px":e,padding:`${m.spacingS} ${m.spacingM}`,minHeight:m.spacingL,[p.small]:{padding:`${m.spacingM} ${m.spacingL}`}}),mainNavigation:css({display:"none",[p.small]:{display:"flex"}}),mobileNavigationButton:css({display:"flex",minHeight:"initial",height:"36px",padding:"0 12px",borderRadius:"10px",[p.small]:{display:"none"}}),mobileNavigationIcon:css({heigt:"20px",width:"20px"}),secondaryNavigationWrapper:css({"> *:not(:first-child)":{display:"none",[p.xsmall]:{display:"flex"}}}),account:css({display:"none",[p.xsmall]:{display:"flex"}})});var ve=generateComponentWithVariants({variants:{[IconVariant.Active]:generateIconComponent({path:l.createElement(l.Fragment,null,l.createElement("path",{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",fill:m.blue300})),viewBox:"0 0 12 12"}),[IconVariant.Default]:generateIconComponent({path:l.createElement(l.Fragment,null,l.createElement("path",{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",fill:m.gray400})),viewBox:"0 0 12 12"})}});var ge=generateIconComponent({name:"ContentfulLogoIcon",viewBox:"0 0 28 28",path:l.createElement(l.Fragment,null,l.createElement("path",{fill:"#1773EB",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"}),l.createElement("path",{fill:"#E44F20",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"}),l.createElement("path",{fill:"#FFDA00",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"}),l.createElement("path",{fill:"#1773EB",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"}),l.createElement("path",{fill:"#E44F20",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"}))});var fe=()=>({menuList:css({minWidth:0,[p.xsmall]:{minWidth:"250px"}})});var B=e=>{let{trigger:t,children:o,testId:r="cf-ui-navbar-menu-list",onOpen:a,onClose:n}=e,i=fe();return l.createElement(Menu,{onOpen:a,onClose:n},l.createElement(Menu.Trigger,null,t),l.createElement(Menu.List,{className:i.menuList,testId:r},o))};function ot(e,t){let V=e,{logo:o,promotions:r,switcher:a,mainNavigation:n,secondaryNavigation:i,account:s,mobileNavigation:c,className:g,contentMaxWidth:P="100%",testId:M="cf-ui-navbar",variant:f="wide"}=V,N=b(V,["logo","promotions","switcher","mainNavigation","secondaryNavigation","account","mobileNavigation","className","contentMaxWidth","testId","variant"]),y=ce({contentMaxWidth:P,variant:f});return l.createElement(Flex,h(d({},N),{ref:t,testId:M,className:cx(y.container,g),as:"header"}),l.createElement(Flex,{as:"nav",className:y.navigation,justifyContent:"space-between",gap:"spacingXs"},l.createElement(Flex,{alignItems:"center",gap:"spacingL"},o||l.createElement(ge,{className:y.logo}),c&&l.createElement(B,{trigger:l.createElement(Button,{className:y.mobileNavigationButton,startIcon:l.createElement(ListIcon,{size:"medium"})},"Menu")},c),n&&l.createElement(Flex,{className:y.mainNavigation,"aria-label":"Main Navigation",gap:"spacingXs"},n)),l.createElement(Flex,{alignItems:"center",gap:"spacingXs"},l.createElement(Flex,{alignItems:"center"},r),l.createElement(Flex,{alignItems:"center"},a),l.createElement(Flex,{alignItems:"center",gap:"spacingXs"},i&&l.createElement(Flex,{className:y.secondaryNavigationWrapper,"aria-label":"Secondary Navigation",gap:"spacingXs"},i),s&&l.createElement(Flex,{className:y.account,"aria-label":"Account Navigation",gap:"spacingXs"},s)))))}var Ne=l.forwardRef(ot);var rt={warning:m.colorWarning,negative:m.colorNegative,info:m.blue500},ye=()=>({navbarAccount:css({cursor:"pointer",background:"none",position:"relative",outline:"none",overflow:"visible",borderRadius:"50%",border:"none",padding:0,"&:hover img":{filter:"brightness(0.9)"}},k(),E()),notificationIcon:e=>css({position:"absolute",top:0,right:0,height:m.spacingS,width:m.spacingS,borderRadius:"50%",border:`2px solid ${m.gray100}`,backgroundColor:rt[e],transform:"translate(30%, -30%)"})});function mt(e,t){let N=e,{children:o,className:r,testId:a="cf-ui-navbar-account-trigger",avatar:n,label:i="Account menu",initials:s,username:c,hasNotification:g,notificationVariant:P="warning"}=N,M=b(N,["children","className","testId","avatar","label","initials","username","hasNotification","notificationVariant"]),f=ye();return l.createElement(B,{trigger:l.createElement("div",null,l.createElement(Tooltip,{placement:"bottom",content:i,showDelay:600,usePortal:!0},l.createElement(Flex,h(d({as:"button"},M),{ref:t,className:cx(f.navbarAccount,r),testId:a,alignItems:"center","aria-label":i}),l.createElement(Avatar,{src:n,initials:s,size:"small",variant:"user"}),g?l.createElement("span",{className:f.notificationIcon(P)}):null)))},o)}var K=l.forwardRef(mt);function Q({ariaLabel:e}){return l.createElement(SkeletonContainer,{svgWidth:24,svgHeight:24,ariaLabel:e,backgroundColor:m.gray300,foregroundColor:m.gray200},l.createElement(SkeletonImage,{width:24,height:24,radiusX:12,radiusY:12}))}var $="1px",Se=()=>css({backgroundColor:m.blue100,border:`${$} solid ${m.blue400}`,color:m.blue600,"&:hover":{backgroundColor:m.blue100}}),Pe={display:"flex",justifyContent:"center",padding:`calc(${m.spacing2Xs} - ${$}) calc(${m.spacingXs} - ${$})`,alignItems:"center",background:"none",gap:m.spacing2Xs},Me=({hasTitle:e})=>({navbarItem:css(Pe,{appearance:"none",background:"none",border:`${$} solid transparent`,margin:0,outline:"none",fontSize:m.fontSizeM,lineHeight:m.lineHeightM,fontWeight:m.fontWeightMedium,position:"relative",textAlign:"left",whiteSpace:"nowrap",cursor:"pointer",hyphens:"auto",textDecoration:"none",color:m.gray800,boxSizing:"border-box",transition:`color ${m.transitionDurationShort} ${m.transitionEasingCubicBezier}`,borderRadius:m.borderRadiusMedium,height:"30px",padding:e?void 0:`calc(${m.spacing2Xs} - ${$})`,"&:hover":{backgroundColor:hexToRGBA(m.gray900,.05)},"&:hover::before":{opacity:1,scale:"1"},"&:active::before":{backgroundColor:"rgba(255, 255, 255, 0.1)"},"&:disabled":{cursor:"auto"},"& svg":{transition:`fill ${m.transitionDurationShort} ${m.transitionEasingCubicBezier}`},"& > svg, & > span":{zIndex:m.zIndexDefault}},k(),E()),navbarItemMenuTrigger:css({paddingRight:m.spacingXs}),isActive:Se(),icon:css({height:"20px",width:"20px",boxSizing:"content-box",display:e?"none":"block",[p.small]:{height:"16px",width:"16px",padding:e?"2px 0":"2px"},[p.large]:{display:"block"}})}),we=()=>({itemSkeleton:css(Pe)});var Ce=()=>({navbarItemIcon:css({"&:last-child&:not(:only-child)":{marginLeft:m.spacing2Xs},"img&":{borderRadius:m.borderRadiusSmall,maxWidth:m.spacingM,maxHeight:m.spacingM}})});var A=({icon:e,isActive:t,className:o})=>{let s=e.props,{className:r,size:a}=s,n=b(s,["className","size"]),i=Ce();return l.cloneElement(e,d({className:cx(r,i.navbarItemIcon,o),size:a||"small",isActive:t},n))};var ft="button";function Nt(e,t){let se=e,{as:o=ft,icon:r,label:a,title:n,children:i,className:s,isActive:c,testId:g="cf-ui-navbar-item",onOpen:P,onClose:M}=se,f=b(se,["as","icon","label","title","children","className","isActive","testId","onOpen","onClose"]),N=Me({hasTitle:!!n}),y=ht(e),V=n&&y,z=l.createElement(o,h(d({},f),{ref:t,"data-test-id":g,className:cx(N.navbarItem,s,{[N.navbarItemMenuTrigger]:V,[N.isActive]:c}),"aria-label":n?"":a}),r&&l.createElement(A,{className:N.icon,icon:r,isActive:c}),n&&l.createElement("span",null,n),V&&l.createElement(ve,{size:"tiny",isActive:c}));return n||(z=l.createElement("div",null,l.createElement(Tooltip,{content:a,placement:"bottom",showDelay:600,usePortal:!0},z))),y?l.createElement(B,{trigger:z,testId:g,onOpen:P,onClose:M},i):z}var ht=e=>!!e.children,ee=l.forwardRef(Nt);var te=({estimatedWidth:e})=>{let t=we();return l.createElement(SkeletonContainer,{className:t.itemSkeleton,svgWidth:e,svgHeight:28,backgroundColor:m.gray300,foregroundColor:m.gray200},l.createElement(SkeletonText,{lineHeight:18,numberOfLines:1,offsetTop:2,radiusX:m.borderRadiusSmall,radiusY:m.borderRadiusSmall}))};var ke=()=>({navbarMenuItem:css({display:"flex",justifyContent:"flex-start",alignItems:"center"})});var wt="button";function Ct(e,t){let g=e,{as:o=wt,icon:r,title:a,className:n}=g,i=b(g,["as","icon","title","className"]),s=ke(),c=At(e);return l.createElement(Menu.Item,h(d({},i),{ref:t,as:o,className:cx(s.navbarMenuItem,n)}),r?l.createElement(A,{icon:r}):c&&Ee,l.createElement("span",null,a),r&&c?Ee:null)}var Ee=l.createElement(A,{icon:l.createElement(ArrowSquareOutIcon,null)}),At=e=>e.as==="a"&&e.target==="_blank",oe=l.forwardRef(Ct);var re=({ariaLabel:e})=>l.createElement(Menu.Item,null,l.createElement(Flex,{alignItems:"center",gap:m.spacingXs},l.createElement(SkeletonContainer,{svgHeight:16,svgWidth:18},l.createElement(SkeletonImage,{width:16,height:16})),l.createElement(SkeletonContainer,{svgHeight:16,svgWidth:190,ariaLabel:e},l.createElement(SkeletonBodyText,{numberOfLines:1}))));var Le=()=>({navbarSwitcher:css({color:m.gray600,flexShrink:1,fontWeight:m.fontWeightMedium,maxWidth:"100%",minHeight:"unset",padding:`${m.spacing2Xs} ${m.spacingXs}`,"&:hover":{backgroundColor:hexToRGBA(m.gray900,.05)}},k(),E()),switcherSpaceName:css({"&:has(> span:last-child:nth-child(3))":{minWidth:"12ch"},maxWidth:"15vw",[p.xsmall]:{maxWidth:"50vw"},[p.small]:{maxWidth:"10vw"},[p.medium]:{maxWidth:"50vw"}}),switcherEnvIcon:css({[p.small]:{width:"16px",height:"16px"}}),switcherSpaceNameTruncation:css({flexShrink:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"})});function We({isAlias:e,envVariant:t,className:o}){let r=t==="master"?m.green600:m.gray600;return e?l.createElement(EnvironmentAliasIcon,{color:r,className:o,size:"medium"}):l.createElement(EnvironmentIcon,{color:r,className:o,size:"medium"})}var X=({estimatedWidth:e})=>l.createElement(SkeletonContainer,{svgWidth:e,svgHeight:18,backgroundColor:m.gray300,foregroundColor:m.gray200},l.createElement(SkeletonText,{lineHeight:18,numberOfLines:1,radiusX:m.borderRadiusSmall,radiusY:m.borderRadiusSmall}));function Xt(e,{start:t=5,end:o=6}={}){if(e.length<=t+o)return [e,void 0,void 0];let r=t>0?e.slice(0,t):"",a=o>0?e.slice(-o):"",n=e.slice(t,e.length-o);return [r,n,a]}var Ve=({value:e,styles:t,envVariant:o,type:r})=>{let[a,n,i]=typeof e=="string"?Xt(e):[],s=useMemo(()=>r==="environment"&&o==="master"?"green600":"gray600",[r,o]);return a!==void 0?l.createElement(Text,{fontColor:s},l.createElement("span",null,a),n&&l.createElement("span",{className:t.switcherSpaceNameTruncation},n),i&&l.createElement("span",null,i)):l.createElement(Text,{fontColor:s},e)};function zt(e,t){let N=e,{children:o,className:r,envVariant:a,isAlias:n,testId:i="cf-ui-navbar-switcher",ariaLabel:s="Space and Environment Navigation",space:c,environment:g,isLoading:P}=N,M=b(N,["children","className","envVariant","isAlias","testId","ariaLabel","space","environment","isLoading"]),f=Le();return l.createElement(Button,h(d({},M),{"aria-label":s,className:cx(f.navbarSwitcher,r),endIcon:a&&l.createElement(We,{envVariant:a,isAlias:n,className:f.switcherEnvIcon}),ref:t,testId:i,variant:"transparent"}),l.createElement(Flex,{alignItems:"center",className:f.switcherSpaceName,flexDirection:"row"},P?l.createElement(X,{estimatedWidth:148}):l.createElement(Flex,{gap:m.spacing2Xs,alignItems:"center"},o?l.createElement(Text,{fontColor:"gray600"},o):l.createElement(l.Fragment,null,l.createElement(Ve,{type:"space",value:c,styles:f}),l.createElement(CaretRightIcon,{size:"tiny",color:m.gray500}),l.createElement(Ve,{envVariant:a,type:"environment",value:g,styles:f})))))}var ae=l.forwardRef(zt);var De=()=>({navbarBadge:css({display:"flex",justifyContent:"center",alignItems:"center",background:"none",border:`1px solid ${m.purple600}`,margin:0,outline:"none",fontSize:m.fontSizeS,lineHeight:m.lineHeightS,fontWeight:m.fontWeightMedium,textAlign:"center",padding:`0 ${m.spacingXs}`,textDecoration:"none",color:`${m.purple600}!important`,borderRadius:"1.75rem",userSelect:"none"})});var jt="div";function qt(e,t){let c=e,{as:o=jt,children:r,className:a,testId:n="cf-ui-navbar-badge"}=c,i=b(c,["as","children","className","testId"]),s=De();return l.createElement(o,h(d({},i),{ref:t,className:cx(s.navbarBadge,a),"data-test-id":n}),r)}var Re=l.forwardRef(qt);var ze=()=>({navbarMenuItem:css({display:"flex",justifyContent:"flex-start",alignItems:"center",gap:m.spacingXs}),menuList:css({minWidth:0,marginLeft:"-24px",marginTop:"10px",[p.xsmall]:{minWidth:"250px",margin:0}})});var Ge=e=>{let{title:t,icon:o,children:r,testId:a="cf-ui-navbar-submenu-list",onOpen:n,onClose:i}=e,s=ze();return l.createElement(Menu.Submenu,{onOpen:n,onClose:i},l.createElement(Menu.SubmenuTrigger,null,l.createElement(Flex,{className:s.navbarMenuItem},o&&l.createElement(A,{icon:o}),l.createElement("span",null,t))),l.createElement(Menu.List,{className:s.menuList,testId:a},r))};var v=Ne;v.Item=ee;v.ItemSkeleton=te;v.MenuItem=oe;v.MenuItemSkeleton=re;v.MenuDivider=MenuDivider;v.MenuSectionTitle=MenuSectionTitle;v.Submenu=Ge;v.Switcher=ae;v.SwitcherSkeleton=X;v.Account=K;v.AccountSkeleton=Q;v.Badge=Re;
15
16
 
16
- export { v as Navbar, he as getNavbarItemActiveStyles };
17
+ export { v as Navbar, Se as getNavbarItemActiveStyles };
17
18
  //# sourceMappingURL=out.js.map
18
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../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":["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","hexToRGBA","notificationVarianColorMap","getNavbarAccountStyles","Avatar","_NavbarAccount","avatar","initials","username","hasNotification","notificationVariant","NavbarAccount","SkeletonContainer","SkeletonImage","NavbarAccountSkeleton","ariaLabel","getNavbarItemActiveStyles","commonItemStyles","getNavbarItemStyles","title","getNavbarItemSkeletonStyles","getNavbarItemIconStyles","NavbarItemIcon","icon","isActive","iconClassName","size","rest","NAVBAR_ITEM_DEFAULT_TAG","_NavbarItem","Comp","label","isMenuTrigger","isNavbarItemHasMenu","item","NavbarItem","SkeletonText","NavbarItemSkeleton","estimatedWidth","getNavbarMenuItemStyles","ArrowSquareOutIcon","NAVBAR_MENU_ITEM_DEFAULT_TAG","_NavbarMenuItem","itemIsExternalLink","isExternalLink","externalIcon","NavbarMenuItem","SkeletonBodyText","NavbarMenuItemSkeleton","getNavbarSwitcherStyles","EnvironmentAliasIcon","EnvironmentIcon","NavbarEnvVariant","isAlias","envVariant","color","SkeletonDisplayText","NavbarSwitcherSkeleton","CaretRightIcon","Text","splitString","string","startLength","endLength","start","end","remainder","SwitcherLabel","value","type","middle","isEnv","envColor","_NavbarSwitcher","space","environment","isLoading","NavbarSwitcher","getNavbarBadgeStyles","NAVBAR_BADGE_DEFAULT_TAG","_NavbarBadge","NavbarBadge","getNavbarSubmenuStyles","NavbarSubmenu"],"mappings":"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","sourcesContent":["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';\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 minHeight: tokens.spacingL,\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 height: '36px',\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 { Avatar } from '@contentful/f36-avatar';\nimport { Flex } from '@contentful/f36-core';\n\ntype NavbarAccountOwnProps = CommonProps & {\n children: React.ReactNode;\n username: string;\n avatar?: string;\n initials?: string;\n hasNotification?: boolean;\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 initials,\n username,\n hasNotification,\n notificationVariant = 'warning',\n ...otherProps\n } = props;\n const styles = getNavbarAccountStyles();\n\n return (\n <NavbarMenu\n trigger={\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=\"Account Menu\"\n >\n <Avatar\n src={avatar}\n initials={initials}\n size=\"small\"\n variant=\"user\"\n />\n {hasNotification ? (\n <span className={styles.notificationIcon(notificationVariant)} />\n ) : null}\n </Flex>\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';\nimport { hexToRGBA } from '@contentful/f36-utils';\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 // default button reset styles\n margin: 0,\n padding: 0,\n border: 0,\n cursor: 'pointer',\n background: 'none',\n position: 'relative',\n outline: 'none',\n overflow: 'visible',\n borderRadius: '50%',\n '&:before': css({\n content: '\"\"',\n display: 'block',\n position: 'absolute',\n height: '24px',\n width: '24px',\n backgroundColor: 'transparent',\n borderRadius: '50%',\n }),\n '&:hover:before': css({\n backgroundColor: hexToRGBA(tokens.gray300, 0.15),\n }),\n },\n getGlowOnFocusStyles(),\n increaseHitArea(),\n ),\n avatar: css({\n borderRadius: '50%',\n display: 'block',\n height: '24px',\n width: '24px',\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 }),\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';\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({ title });\n const isMenuTrigger = isNavbarItemHasMenu(props);\n const item = (\n <Comp\n {...otherProps}\n ref={ref}\n data-test-id={testId}\n className={cx(\n styles.navbarItem,\n isMenuTrigger && styles.navbarItemMenuTrigger,\n isActive && styles.isActive,\n className,\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 {title && isMenuTrigger && <CaretIcon size=\"tiny\" isActive={isActive} />}\n </Comp>\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\nexport const getNavbarItemActiveStyles = () =>\n css({\n backgroundColor: tokens.blue100,\n border: `1px 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: `${tokens.spacing2Xs} ${tokens.spacingXs}`,\n alignItems: 'center',\n background: 'none',\n gap: tokens.spacing2Xs,\n};\n\nexport const getNavbarItemStyles = ({ title }) => ({\n navbarItem: css(\n commonItemStyles,\n {\n appearance: 'none',\n background: 'none',\n border: '1px 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\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 display: !title ? 'block' : 'none',\n [mqs.small]: {\n height: '16px',\n width: '16px',\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={32}\n backgroundColor={tokens.gray300}\n foregroundColor={tokens.gray200}\n >\n <SkeletonText\n lineHeight={6}\n numberOfLines={1}\n offsetTop={10}\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} 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\ntype NavbarLoadingProps =\n | {\n isLoading?: true;\n environemnt?: never;\n space?: never;\n }\n | {\n isLoading?: false;\n environemnt?: string;\n space?: string;\n };\n\ntype NavbarSwitcherOwnProps = CommonProps &\n NavbarLoadingProps & {\n isCircle?: boolean;\n envVariant?: 'master' | 'non-master';\n isAlias?: boolean;\n ariaLabel?: string;\n environment?: React.ReactNode;\n space?: React.ReactNode;\n };\n\nexport type NavbarSwitcherProps = PropsWithHTMLElement<\n NavbarSwitcherOwnProps,\n 'button'\n>;\n\ntype SwitcherLabelEnvVariantProps =\n | {\n type: 'environment';\n envVariant?: 'master' | 'non-master';\n }\n | {\n type: 'space';\n envVariant?: never;\n };\n\ntype SwitcherLabelProps = SwitcherLabelEnvVariantProps & {\n value: React.ReactNode;\n styles: ReturnType<typeof getNavbarSwitcherStyles>;\n type: 'space' | 'environment';\n envVariant?: 'master' | 'non-master';\n};\n\nconst SwitcherLabel = ({\n value,\n styles,\n envVariant,\n type,\n}: SwitcherLabelProps) => {\n const [start, middle, end] =\n typeof value === 'string' ? splitString(value) : [];\n const isEnv = type === 'environment';\n const envColor = envVariant === 'master' ? 'green600' : 'orange500';\n\n return start !== undefined ? (\n <Text fontColor={isEnv ? envColor : undefined}>\n <span>{start}</span>\n {middle && (\n <span className={styles.switcherSpaceNameTruncation}>{middle}</span>\n )}\n {end && <span>{end}</span>}\n </Text>\n ) : (\n <Text fontColor={isEnv ? envColor : undefined}>{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 styles = getNavbarSwitcherStyles();\n\n return (\n <Button\n {...otherProps}\n aria-label={ariaLabel}\n className={cx(styles.navbarSwitcher, className)}\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 <SwitcherLabel type=\"space\" value={space} styles={styles} />\n <CaretRightIcon size=\"tiny\" color={tokens.gray400} />\n <SwitcherLabel\n envVariant={envVariant}\n type=\"environment\"\n value={environment}\n styles={styles}\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\nexport const getNavbarSwitcherStyles = () => ({\n navbarSwitcher: 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 getGlowOnFocusStyles(),\n increaseHitArea(),\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","import React from 'react';\nimport { NavbarSwitcherProps } from '../NavbarSwitcher/NavbarSwitcher';\nimport { EnvironmentAliasIcon, EnvironmentIcon } 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 color = envVariant === 'master' ? tokens.green600 : tokens.orange500;\n\n return isAlias ? (\n <EnvironmentAliasIcon color={color} className={className} size=\"medium\" />\n ) : (\n <EnvironmentIcon color={color} className={className} size=\"medium\" />\n );\n}\n","import React from 'react';\nimport {\n SkeletonContainer,\n SkeletonDisplayText,\n} 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={24}\n backgroundColor={tokens.gray300}\n foregroundColor={tokens.gray200}\n >\n <SkeletonDisplayText\n lineHeight={24}\n numberOfLines={1}\n radiusX={12}\n radiusY={12}\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/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":["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","useMemo","getNavbarSwitcherStyles","EnvironmentAliasIcon","EnvironmentIcon","NavbarEnvVariant","isAlias","envVariant","color","NavbarSwitcherSkeleton","CaretRightIcon","Text","splitString","string","startLength","endLength","start","end","remainder","SwitcherLabel","value","type","middle","envColor","_NavbarSwitcher","space","environment","isLoading","NavbarSwitcher","getNavbarBadgeStyles","NAVBAR_BADGE_DEFAULT_TAG","_NavbarBadge","NavbarBadge","getNavbarSubmenuStyles","NavbarSubmenu"],"mappings":"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","sourcesContent":["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';\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 minHeight: tokens.spacingL,\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 }),\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, { useMemo } 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} 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\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?: 'master' | 'non-master';\n isAlias?: boolean;\n ariaLabel?: string;\n };\n\nexport type NavbarSwitcherProps = PropsWithHTMLElement<\n NavbarSwitcherOwnProps,\n 'button'\n>;\n\ntype SwitcherLabelEnvVariantProps =\n | {\n type: 'environment';\n envVariant?: 'master' | 'non-master';\n }\n | {\n type: 'space';\n envVariant?: never;\n };\n\ntype SwitcherLabelProps = SwitcherLabelEnvVariantProps & {\n value: React.ReactNode;\n styles: ReturnType<typeof getNavbarSwitcherStyles>;\n type: 'space' | 'environment';\n envVariant?: 'master' | 'non-master';\n};\n\nconst SwitcherLabel = ({\n value,\n styles,\n envVariant,\n type,\n}: SwitcherLabelProps) => {\n const [start, middle, end] =\n typeof value === 'string' ? splitString(value) : [];\n const envColor = useMemo(() => {\n const isEnv = type === 'environment';\n const isMaster = envVariant === 'master';\n if (isEnv && isMaster) {\n return 'green600';\n }\n return 'gray600';\n }, [type, envVariant]);\n\n return start !== undefined ? (\n <Text fontColor={envColor}>\n <span>{start}</span>\n {middle && (\n <span className={styles.switcherSpaceNameTruncation}>{middle}</span>\n )}\n {end && <span>{end}</span>}\n </Text>\n ) : (\n <Text fontColor={envColor}>{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 styles = getNavbarSwitcherStyles();\n\n return (\n <Button\n {...otherProps}\n aria-label={ariaLabel}\n className={cx(styles.navbarSwitcher, className)}\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 <Flex gap={tokens.spacing2Xs} alignItems=\"center\">\n {children ? (\n <Text fontColor=\"gray600\">{children}</Text>\n ) : (\n <>\n <SwitcherLabel type=\"space\" value={space} styles={styles} />\n <CaretRightIcon size=\"tiny\" color={tokens.gray500} />\n <SwitcherLabel\n envVariant={envVariant}\n type=\"environment\"\n value={environment}\n styles={styles}\n />\n </>\n )}\n </Flex>\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\nexport const getNavbarSwitcherStyles = () => ({\n navbarSwitcher: 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 getGlowOnFocusStyles(),\n increaseHitArea(),\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","import React from 'react';\nimport { NavbarSwitcherProps } from '../NavbarSwitcher/NavbarSwitcher';\nimport { EnvironmentAliasIcon, EnvironmentIcon } 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 color = envVariant === 'master' ? tokens.green600 : tokens.gray600;\n\n return isAlias ? (\n <EnvironmentAliasIcon color={color} className={className} size=\"medium\" />\n ) : (\n <EnvironmentIcon color={color} className={className} size=\"medium\" />\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.d.mts CHANGED
@@ -64,12 +64,13 @@ declare const Navbar$1: React.ForwardRefExoticComponent<NavbarHTMLElementProps &
64
64
  variant?: 'wide' | 'fullscreen';
65
65
  } & React.RefAttributes<HTMLElement>>;
66
66
 
67
- declare const NavbarAccount: React.ForwardRefExoticComponent<Omit<Omit<Pick<React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "key" | keyof React.ButtonHTMLAttributes<HTMLButtonElement>>, never>, "children" | keyof CommonProps | "username" | "avatar" | "initials" | "hasNotification" | "notificationVariant"> & CommonProps & {
67
+ declare const NavbarAccount: React.ForwardRefExoticComponent<Omit<Omit<Pick<React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "key" | keyof React.ButtonHTMLAttributes<HTMLButtonElement>>, never>, "label" | "children" | keyof CommonProps | "username" | "avatar" | "initials" | "hasNotification" | "notificationVariant"> & CommonProps & {
68
68
  children: React.ReactNode;
69
69
  username: string;
70
70
  avatar?: string;
71
71
  initials?: string;
72
72
  hasNotification?: boolean;
73
+ label?: string;
73
74
  /**
74
75
  * @default 'warning'
75
76
  */
@@ -128,11 +129,13 @@ declare const NavbarMenuItemSkeleton: ({ ariaLabel, }: {
128
129
 
129
130
  declare type NavbarLoadingProps = {
130
131
  isLoading?: true;
131
- environemnt?: never;
132
+ children?: React.ReactNode;
133
+ environment?: never;
132
134
  space?: never;
133
135
  } | {
134
136
  isLoading?: false;
135
- environemnt?: string;
137
+ children?: never;
138
+ environment?: string;
136
139
  space?: string;
137
140
  };
138
141
  declare type NavbarSwitcherOwnProps = CommonProps & NavbarLoadingProps & {
@@ -140,8 +143,6 @@ declare type NavbarSwitcherOwnProps = CommonProps & NavbarLoadingProps & {
140
143
  envVariant?: 'master' | 'non-master';
141
144
  isAlias?: boolean;
142
145
  ariaLabel?: string;
143
- environment?: React.ReactNode;
144
- space?: React.ReactNode;
145
146
  };
146
147
  declare type NavbarSwitcherProps = PropsWithHTMLElement<NavbarSwitcherOwnProps, 'button'>;
147
148
  declare const NavbarSwitcher: React.ForwardRefExoticComponent<NavbarSwitcherProps & React.RefAttributes<HTMLButtonElement>>;
package/dist/index.d.ts CHANGED
@@ -64,12 +64,13 @@ declare const Navbar$1: React.ForwardRefExoticComponent<NavbarHTMLElementProps &
64
64
  variant?: 'wide' | 'fullscreen';
65
65
  } & React.RefAttributes<HTMLElement>>;
66
66
 
67
- declare const NavbarAccount: React.ForwardRefExoticComponent<Omit<Omit<Pick<React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "key" | keyof React.ButtonHTMLAttributes<HTMLButtonElement>>, never>, "children" | keyof CommonProps | "username" | "avatar" | "initials" | "hasNotification" | "notificationVariant"> & CommonProps & {
67
+ declare const NavbarAccount: React.ForwardRefExoticComponent<Omit<Omit<Pick<React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "key" | keyof React.ButtonHTMLAttributes<HTMLButtonElement>>, never>, "label" | "children" | keyof CommonProps | "username" | "avatar" | "initials" | "hasNotification" | "notificationVariant"> & CommonProps & {
68
68
  children: React.ReactNode;
69
69
  username: string;
70
70
  avatar?: string;
71
71
  initials?: string;
72
72
  hasNotification?: boolean;
73
+ label?: string;
73
74
  /**
74
75
  * @default 'warning'
75
76
  */
@@ -128,11 +129,13 @@ declare const NavbarMenuItemSkeleton: ({ ariaLabel, }: {
128
129
 
129
130
  declare type NavbarLoadingProps = {
130
131
  isLoading?: true;
131
- environemnt?: never;
132
+ children?: React.ReactNode;
133
+ environment?: never;
132
134
  space?: never;
133
135
  } | {
134
136
  isLoading?: false;
135
- environemnt?: string;
137
+ children?: never;
138
+ environment?: string;
136
139
  space?: string;
137
140
  };
138
141
  declare type NavbarSwitcherOwnProps = CommonProps & NavbarLoadingProps & {
@@ -140,8 +143,6 @@ declare type NavbarSwitcherOwnProps = CommonProps & NavbarLoadingProps & {
140
143
  envVariant?: 'master' | 'non-master';
141
144
  isAlias?: boolean;
142
145
  ariaLabel?: string;
143
- environment?: React.ReactNode;
144
- space?: React.ReactNode;
145
146
  };
146
147
  declare type NavbarSwitcherProps = PropsWithHTMLElement<NavbarSwitcherOwnProps, 'button'>;
147
148
  declare const NavbarSwitcher: React.ForwardRefExoticComponent<NavbarSwitcherProps & React.RefAttributes<HTMLButtonElement>>;
package/dist/index.js CHANGED
@@ -4,23 +4,24 @@ var f36Menu = require('@contentful/f36-menu');
4
4
  var f36Core = require('@contentful/f36-core');
5
5
  var l = require('react');
6
6
  var emotion = require('emotion');
7
- var c = require('@contentful/f36-tokens');
7
+ var m = require('@contentful/f36-tokens');
8
8
  var f36Icon = require('@contentful/f36-icon');
9
9
  var f36Button = require('@contentful/f36-button');
10
10
  var f36Icons = require('@contentful/f36-icons');
11
- var f36Utils = require('@contentful/f36-utils');
12
11
  var f36Avatar = require('@contentful/f36-avatar');
12
+ var f36Tooltip = require('@contentful/f36-tooltip');
13
13
  var f36Skeleton = require('@contentful/f36-skeleton');
14
+ var f36Utils = require('@contentful/f36-utils');
14
15
  var f36Typography = require('@contentful/f36-typography');
15
16
 
16
17
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
17
18
 
18
19
  var l__default = /*#__PURE__*/_interopDefault(l);
19
- var c__default = /*#__PURE__*/_interopDefault(c);
20
+ var m__default = /*#__PURE__*/_interopDefault(m);
20
21
 
21
- var Ge=Object.defineProperty,Xe=Object.defineProperties;var ze=Object.getOwnPropertyDescriptors;var z=Object.getOwnPropertySymbols;var ie=Object.prototype.hasOwnProperty,se=Object.prototype.propertyIsEnumerable;var ae=(e,t,o)=>t in e?Ge(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o,b=(e,t)=>{for(var o in t||(t={}))ie.call(t,o)&&ae(e,o,t[o]);if(z)for(var o of z(t))se.call(t,o)&&ae(e,o,t[o]);return e},f=(e,t)=>Xe(e,ze(t));var d=(e,t)=>{var o={};for(var r in e)ie.call(e,r)&&t.indexOf(r)<0&&(o[r]=e[r]);if(e!=null&&z)for(var r of z(e))t.indexOf(r)<0&&se.call(e,r)&&(o[r]=e[r]);return o};var p={xsmall:"@media (min-width: 576px)",small:"@media (min-width: 867px)",medium:"@media (min-width: 1024px)",large:"@media (min-width: 1200px)",xlarge:"@media (min-width: 1920px)"},A=(e=c__default.default.glowPrimary)=>({"&:focus":{boxShadow:e},"&:focus:not(:focus-visible)":{boxShadow:"unset"},"&:focus-visible":{boxShadow:e}}),k=(e="44px")=>({overflow:"visible",position:"relative","&:after":{minHeight:e,minWidth:e,position:"absolute",width:"100%",content:'""',left:"50%",top:"50%",transform:"translate(-50%, -50%)"}});var me=({contentMaxWidth:e,variant:t})=>({container:emotion.css({justifyContent:"center",backgroundColor:c__default.default.gray100,width:"100%"}),logo:emotion.css({display:"none",[p.small]:{display:"block",height:"28px",width:"28px"}}),navigation:emotion.css({width:"100%",maxWidth:t==="wide"?"1920px":e,padding:`${c__default.default.spacingS} ${c__default.default.spacingM}`,minHeight:c__default.default.spacingL,[p.small]:{padding:`${c__default.default.spacingM} ${c__default.default.spacingL}`}}),mainNavigation:emotion.css({display:"none",[p.small]:{display:"flex"}}),mobileNavigationButton:emotion.css({display:"flex",height:"36px",borderRadius:"10px",[p.small]:{display:"none"}}),mobileNavigationIcon:emotion.css({heigt:"20px",width:"20px"}),secondaryNavigationWrapper:emotion.css({"> *:not(:first-child)":{display:"none",[p.xsmall]:{display:"flex"}}}),account:emotion.css({display:"none",[p.xsmall]:{display:"flex"}})});var ue=f36Icon.generateComponentWithVariants({variants:{[f36Icon.IconVariant.Active]:f36Icon.generateIconComponent({path:l__default.default.createElement(l__default.default.Fragment,null,l__default.default.createElement("path",{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",fill:c__default.default.blue300})),viewBox:"0 0 12 12"}),[f36Icon.IconVariant.Default]:f36Icon.generateIconComponent({path:l__default.default.createElement(l__default.default.Fragment,null,l__default.default.createElement("path",{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",fill:c__default.default.gray400})),viewBox:"0 0 12 12"})}});var be=f36Icon.generateIconComponent({name:"ContentfulLogoIcon",viewBox:"0 0 28 28",path:l__default.default.createElement(l__default.default.Fragment,null,l__default.default.createElement("path",{fill:"#1773EB",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"}),l__default.default.createElement("path",{fill:"#E44F20",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"}),l__default.default.createElement("path",{fill:"#FFDA00",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"}),l__default.default.createElement("path",{fill:"#1773EB",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"}),l__default.default.createElement("path",{fill:"#E44F20",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"}))});var de=()=>({menuList:emotion.css({minWidth:0,[p.xsmall]:{minWidth:"250px"}})});var L=e=>{let{trigger:t,children:o,testId:r="cf-ui-navbar-menu-list",onOpen:a,onClose:n}=e,i=de();return l__default.default.createElement(f36Menu.Menu,{onOpen:a,onClose:n},l__default.default.createElement(f36Menu.Menu.Trigger,null,t),l__default.default.createElement(f36Menu.Menu.List,{className:i.menuList,testId:r},o))};function Ke(e,t){let V=e,{logo:o,promotions:r,switcher:a,mainNavigation:n,secondaryNavigation:i,account:s,mobileNavigation:m,className:N,contentMaxWidth:P="100%",testId:I="cf-ui-navbar",variant:g="wide"}=V,x=d(V,["logo","promotions","switcher","mainNavigation","secondaryNavigation","account","mobileNavigation","className","contentMaxWidth","testId","variant"]),h=me({contentMaxWidth:P,variant:g});return l__default.default.createElement(f36Core.Flex,f(b({},x),{ref:t,testId:I,className:emotion.cx(h.container,N),as:"header"}),l__default.default.createElement(f36Core.Flex,{as:"nav",className:h.navigation,justifyContent:"space-between",gap:"spacingXs"},l__default.default.createElement(f36Core.Flex,{alignItems:"center",gap:"spacingL"},o||l__default.default.createElement(be,{className:h.logo}),m&&l__default.default.createElement(L,{trigger:l__default.default.createElement(f36Button.Button,{className:h.mobileNavigationButton,startIcon:l__default.default.createElement(f36Icons.ListIcon,{size:"medium"})},"Menu")},m),n&&l__default.default.createElement(f36Core.Flex,{className:h.mainNavigation,"aria-label":"Main Navigation",gap:"spacingXs"},n)),l__default.default.createElement(f36Core.Flex,{alignItems:"center",gap:"spacingXs"},l__default.default.createElement(f36Core.Flex,{alignItems:"center"},r),l__default.default.createElement(f36Core.Flex,{alignItems:"center"},a),l__default.default.createElement(f36Core.Flex,{alignItems:"center",gap:"spacingXs"},i&&l__default.default.createElement(f36Core.Flex,{className:h.secondaryNavigationWrapper,"aria-label":"Secondary Navigation",gap:"spacingXs"},i),s&&l__default.default.createElement(f36Core.Flex,{className:h.account,"aria-label":"Account Navigation",gap:"spacingXs"},s)))))}var ve=l__default.default.forwardRef(Ke);var et={warning:c__default.default.colorWarning,negative:c__default.default.colorNegative,info:c__default.default.blue500},ge=()=>({navbarAccount:emotion.css({margin:0,padding:0,border:0,cursor:"pointer",background:"none",position:"relative",outline:"none",overflow:"visible",borderRadius:"50%","&:before":emotion.css({content:'""',display:"block",position:"absolute",height:"24px",width:"24px",backgroundColor:"transparent",borderRadius:"50%"}),"&:hover:before":emotion.css({backgroundColor:f36Utils.hexToRGBA(c__default.default.gray300,.15)})},A(),k()),avatar:emotion.css({borderRadius:"50%",display:"block",height:"24px",width:"24px"}),notificationIcon:e=>emotion.css({position:"absolute",top:0,right:0,height:c__default.default.spacingS,width:c__default.default.spacingS,borderRadius:"50%",border:`2px solid ${c__default.default.gray100}`,backgroundColor:et[e],transform:"translate(30%, -30%)"})});function nt(e,t){let g=e,{children:o,className:r,testId:a="cf-ui-navbar-account-trigger",avatar:n,initials:i,username:s,hasNotification:m,notificationVariant:N="warning"}=g,P=d(g,["children","className","testId","avatar","initials","username","hasNotification","notificationVariant"]),I=ge();return l__default.default.createElement(L,{trigger:l__default.default.createElement(f36Core.Flex,f(b({as:"button"},P),{ref:t,className:emotion.cx(I.navbarAccount,r),testId:a,alignItems:"center","aria-label":"Account Menu"}),l__default.default.createElement(f36Avatar.Avatar,{src:n,initials:i,size:"small",variant:"user"}),m?l__default.default.createElement("span",{className:I.notificationIcon(N)}):null)},o)}var Y=l__default.default.forwardRef(nt);function J({ariaLabel:e}){return l__default.default.createElement(f36Skeleton.SkeletonContainer,{svgWidth:24,svgHeight:24,ariaLabel:e,backgroundColor:c__default.default.gray300,foregroundColor:c__default.default.gray200},l__default.default.createElement(f36Skeleton.SkeletonImage,{width:24,height:24,radiusX:12,radiusY:12}))}var he=()=>emotion.css({backgroundColor:c__default.default.blue100,border:`1px solid ${c__default.default.blue400}`,color:c__default.default.blue600,"&:hover":{backgroundColor:c__default.default.blue100}}),ye={display:"flex",justifyContent:"center",padding:`${c__default.default.spacing2Xs} ${c__default.default.spacingXs}`,alignItems:"center",background:"none",gap:c__default.default.spacing2Xs},xe=({title:e})=>({navbarItem:emotion.css(ye,{appearance:"none",background:"none",border:"1px solid transparent",margin:0,outline:"none",fontSize:c__default.default.fontSizeM,lineHeight:c__default.default.lineHeightM,fontWeight:c__default.default.fontWeightMedium,position:"relative",textAlign:"left",whiteSpace:"nowrap",cursor:"pointer",hyphens:"auto",textDecoration:"none",color:c__default.default.gray800,boxSizing:"border-box",transition:`color ${c__default.default.transitionDurationShort} ${c__default.default.transitionEasingCubicBezier}`,borderRadius:c__default.default.borderRadiusMedium,"&:hover":{backgroundColor:f36Utils.hexToRGBA(c__default.default.gray900,.05)},"&:hover::before":{opacity:1,scale:"1"},"&:active::before":{backgroundColor:"rgba(255, 255, 255, 0.1)"},"&:disabled":{cursor:"auto"},"& svg":{transition:`fill ${c__default.default.transitionDurationShort} ${c__default.default.transitionEasingCubicBezier}`},"& > svg, & > span":{zIndex:c__default.default.zIndexDefault}},A(),k()),navbarItemMenuTrigger:emotion.css({paddingRight:c__default.default.spacingXs}),isActive:he(),icon:emotion.css({height:"20px",width:"20px",display:e?"none":"block",[p.small]:{height:"16px",width:"16px"},[p.large]:{display:"block"}})}),Ie=()=>({itemSkeleton:emotion.css(ye)});var Se=()=>({navbarItemIcon:emotion.css({"&:last-child&:not(:only-child)":{marginLeft:c__default.default.spacing2Xs},"img&":{borderRadius:c__default.default.borderRadiusSmall,maxWidth:c__default.default.spacingM,maxHeight:c__default.default.spacingM}})});var C=({icon:e,isActive:t,className:o})=>{let s=e.props,{className:r,size:a}=s,n=d(s,["className","size"]),i=Se();return l__default.default.cloneElement(e,b({className:emotion.cx(r,i.navbarItemIcon,o),size:a||"small",isActive:t},n))};var ut="button";function bt(e,t){let ne=e,{as:o=ut,icon:r,label:a,title:n,children:i,className:s,isActive:m,testId:N="cf-ui-navbar-item",onOpen:P,onClose:I}=ne,g=d(ne,["as","icon","label","title","children","className","isActive","testId","onOpen","onClose"]),x=xe({title:n}),h=dt(e),V=l__default.default.createElement(o,f(b({},g),{ref:t,"data-test-id":N,className:emotion.cx(x.navbarItem,h&&x.navbarItemMenuTrigger,m&&x.isActive,s),"aria-label":n?"":a}),r&&l__default.default.createElement(C,{className:x.icon,icon:r,isActive:m}),n&&l__default.default.createElement("span",null,n),n&&h&&l__default.default.createElement(ue,{size:"tiny",isActive:m}));return h?l__default.default.createElement(L,{trigger:V,testId:N,onOpen:P,onClose:I},i):V}var dt=e=>!!e.children,K=l__default.default.forwardRef(bt);var Q=({estimatedWidth:e})=>{let t=Ie();return l__default.default.createElement(f36Skeleton.SkeletonContainer,{className:t.itemSkeleton,svgWidth:e,svgHeight:32,backgroundColor:c__default.default.gray300,foregroundColor:c__default.default.gray200},l__default.default.createElement(f36Skeleton.SkeletonText,{lineHeight:6,numberOfLines:1,offsetTop:10,radiusX:c__default.default.borderRadiusSmall,radiusY:c__default.default.borderRadiusSmall}))};var Me=()=>({navbarMenuItem:emotion.css({display:"flex",justifyContent:"flex-start",alignItems:"center"})});var xt="button";function It(e,t){let N=e,{as:o=xt,icon:r,title:a,className:n}=N,i=d(N,["as","icon","title","className"]),s=Me(),m=St(e);return l__default.default.createElement(f36Menu.Menu.Item,f(b({},i),{ref:t,as:o,className:emotion.cx(s.navbarMenuItem,n)}),r?l__default.default.createElement(C,{icon:r}):m&&we,l__default.default.createElement("span",null,a),r&&m?we:null)}var we=l__default.default.createElement(C,{icon:l__default.default.createElement(f36Icons.ArrowSquareOutIcon,null)}),St=e=>e.as==="a"&&e.target==="_blank",ee=l__default.default.forwardRef(It);var te=({ariaLabel:e})=>l__default.default.createElement(f36Menu.Menu.Item,null,l__default.default.createElement(f36Core.Flex,{alignItems:"center",gap:c__default.default.spacingXs},l__default.default.createElement(f36Skeleton.SkeletonContainer,{svgHeight:16,svgWidth:18},l__default.default.createElement(f36Skeleton.SkeletonImage,{width:16,height:16})),l__default.default.createElement(f36Skeleton.SkeletonContainer,{svgHeight:16,svgWidth:190,ariaLabel:e},l__default.default.createElement(f36Skeleton.SkeletonBodyText,{numberOfLines:1}))));var Ae=()=>({navbarSwitcher:emotion.css({color:c__default.default.gray600,flexShrink:1,fontWeight:c__default.default.fontWeightMedium,maxWidth:"100%",minHeight:"unset",padding:`${c__default.default.spacing2Xs} ${c__default.default.spacingXs}`,"&:hover":{backgroundColor:f36Utils.hexToRGBA(c__default.default.gray900,.05)}},A(),k()),switcherSpaceName:emotion.css({"&:has(> span:last-child:nth-child(3))":{minWidth:"12ch"},maxWidth:"15vw",[p.xsmall]:{maxWidth:"50vw"},[p.small]:{maxWidth:"10vw"},[p.medium]:{maxWidth:"50vw"}}),switcherEnvIcon:emotion.css({[p.small]:{width:"16px",height:"16px"}}),switcherSpaceNameTruncation:emotion.css({flexShrink:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"})});function Te({isAlias:e,envVariant:t,className:o}){let r=t==="master"?c__default.default.green600:c__default.default.orange500;return e?l__default.default.createElement(f36Icons.EnvironmentAliasIcon,{color:r,className:o,size:"medium"}):l__default.default.createElement(f36Icons.EnvironmentIcon,{color:r,className:o,size:"medium"})}var X=({estimatedWidth:e})=>l__default.default.createElement(f36Skeleton.SkeletonContainer,{svgWidth:e,svgHeight:24,backgroundColor:c__default.default.gray300,foregroundColor:c__default.default.gray200},l__default.default.createElement(f36Skeleton.SkeletonDisplayText,{lineHeight:24,numberOfLines:1,radiusX:12,radiusY:12}));function Ht(e,{start:t=5,end:o=6}={}){if(e.length<=t+o)return [e,void 0,void 0];let r=t>0?e.slice(0,t):"",a=o>0?e.slice(-o):"",n=e.slice(t,e.length-o);return [r,n,a]}var We=({value:e,styles:t,envVariant:o,type:r})=>{let[a,n,i]=typeof e=="string"?Ht(e):[],s=r==="environment",m=o==="master"?"green600":"orange500";return a!==void 0?l__default.default.createElement(f36Typography.Text,{fontColor:s?m:void 0},l__default.default.createElement("span",null,a),n&&l__default.default.createElement("span",{className:t.switcherSpaceNameTruncation},n),i&&l__default.default.createElement("span",null,i)):l__default.default.createElement(f36Typography.Text,{fontColor:s?m:void 0},e)};function Rt(e,t){let x=e,{children:o,className:r,envVariant:a,isAlias:n,testId:i="cf-ui-navbar-switcher",ariaLabel:s="Space and Environment Navigation",space:m,environment:N,isLoading:P}=x,I=d(x,["children","className","envVariant","isAlias","testId","ariaLabel","space","environment","isLoading"]),g=Ae();return l__default.default.createElement(f36Button.Button,f(b({},I),{"aria-label":s,className:emotion.cx(g.navbarSwitcher,r),endIcon:a&&l__default.default.createElement(Te,{envVariant:a,isAlias:n,className:g.switcherEnvIcon}),ref:t,testId:i,variant:"transparent"}),l__default.default.createElement(f36Core.Flex,{alignItems:"center",className:g.switcherSpaceName,flexDirection:"row"},P?l__default.default.createElement(X,{estimatedWidth:148}):l__default.default.createElement(l__default.default.Fragment,null,l__default.default.createElement(We,{type:"space",value:m,styles:g}),l__default.default.createElement(f36Icons.CaretRightIcon,{size:"tiny",color:c__default.default.gray400}),l__default.default.createElement(We,{envVariant:a,type:"environment",value:N,styles:g}))))}var oe=l__default.default.forwardRef(Rt);var _e=()=>({navbarBadge:emotion.css({display:"flex",justifyContent:"center",alignItems:"center",background:"none",border:`1px solid ${c__default.default.purple600}`,margin:0,outline:"none",fontSize:c__default.default.fontSizeS,lineHeight:c__default.default.lineHeightS,fontWeight:c__default.default.fontWeightMedium,textAlign:"center",padding:`0 ${c__default.default.spacingXs}`,textDecoration:"none",color:`${c__default.default.purple600}!important`,borderRadius:"1.75rem",userSelect:"none"})});var Xt="div";function zt(e,t){let m=e,{as:o=Xt,children:r,className:a,testId:n="cf-ui-navbar-badge"}=m,i=d(m,["as","children","className","testId"]),s=_e();return l__default.default.createElement(o,f(b({},i),{ref:t,className:emotion.cx(s.navbarBadge,a),"data-test-id":n}),r)}var Ve=l__default.default.forwardRef(zt);var Re=()=>({navbarMenuItem:emotion.css({display:"flex",justifyContent:"flex-start",alignItems:"center",gap:c__default.default.spacingXs}),menuList:emotion.css({minWidth:0,marginLeft:"-24px",marginTop:"10px",[p.xsmall]:{minWidth:"250px",margin:0}})});var De=e=>{let{title:t,icon:o,children:r,testId:a="cf-ui-navbar-submenu-list",onOpen:n,onClose:i}=e,s=Re();return l__default.default.createElement(f36Menu.Menu.Submenu,{onOpen:n,onClose:i},l__default.default.createElement(f36Menu.Menu.SubmenuTrigger,null,l__default.default.createElement(f36Core.Flex,{className:s.navbarMenuItem},o&&l__default.default.createElement(C,{icon:o}),l__default.default.createElement("span",null,t))),l__default.default.createElement(f36Menu.Menu.List,{className:s.menuList,testId:a},r))};var v=ve;v.Item=K;v.ItemSkeleton=Q;v.MenuItem=ee;v.MenuItemSkeleton=te;v.MenuDivider=f36Menu.MenuDivider;v.MenuSectionTitle=f36Menu.MenuSectionTitle;v.Submenu=De;v.Switcher=oe;v.SwitcherSkeleton=X;v.Account=Y;v.AccountSkeleton=J;v.Badge=Ve;
22
+ var Ue=Object.defineProperty,je=Object.defineProperties;var qe=Object.getOwnPropertyDescriptors;var G=Object.getOwnPropertySymbols;var pe=Object.prototype.hasOwnProperty,le=Object.prototype.propertyIsEnumerable;var me=(e,t,o)=>t in e?Ue(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o,d=(e,t)=>{for(var o in t||(t={}))pe.call(t,o)&&me(e,o,t[o]);if(G)for(var o of G(t))le.call(t,o)&&me(e,o,t[o]);return e},h=(e,t)=>je(e,qe(t));var b=(e,t)=>{var o={};for(var r in e)pe.call(e,r)&&t.indexOf(r)<0&&(o[r]=e[r]);if(e!=null&&G)for(var r of G(e))t.indexOf(r)<0&&le.call(e,r)&&(o[r]=e[r]);return o};var p={xsmall:"@media (min-width: 576px)",small:"@media (min-width: 867px)",medium:"@media (min-width: 1024px)",large:"@media (min-width: 1200px)",xlarge:"@media (min-width: 1920px)"},k=(e=m__default.default.glowPrimary)=>({"&:focus":{boxShadow:e},"&:focus:not(:focus-visible)":{boxShadow:"unset"},"&:focus-visible":{boxShadow:e}}),E=(e="44px")=>({overflow:"visible",position:"relative","&:after":{minHeight:e,minWidth:e,position:"absolute",width:"100%",content:'""',left:"50%",top:"50%",transform:"translate(-50%, -50%)"}});var ce=({contentMaxWidth:e,variant:t})=>({container:emotion.css({justifyContent:"center",backgroundColor:m__default.default.gray100,width:"100%"}),logo:emotion.css({display:"none",[p.small]:{display:"block",height:"28px",width:"28px"}}),navigation:emotion.css({width:"100%",maxWidth:t==="wide"?"1920px":e,padding:`${m__default.default.spacingS} ${m__default.default.spacingM}`,minHeight:m__default.default.spacingL,[p.small]:{padding:`${m__default.default.spacingM} ${m__default.default.spacingL}`}}),mainNavigation:emotion.css({display:"none",[p.small]:{display:"flex"}}),mobileNavigationButton:emotion.css({display:"flex",minHeight:"initial",height:"36px",padding:"0 12px",borderRadius:"10px",[p.small]:{display:"none"}}),mobileNavigationIcon:emotion.css({heigt:"20px",width:"20px"}),secondaryNavigationWrapper:emotion.css({"> *:not(:first-child)":{display:"none",[p.xsmall]:{display:"flex"}}}),account:emotion.css({display:"none",[p.xsmall]:{display:"flex"}})});var ve=f36Icon.generateComponentWithVariants({variants:{[f36Icon.IconVariant.Active]:f36Icon.generateIconComponent({path:l__default.default.createElement(l__default.default.Fragment,null,l__default.default.createElement("path",{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",fill:m__default.default.blue300})),viewBox:"0 0 12 12"}),[f36Icon.IconVariant.Default]:f36Icon.generateIconComponent({path:l__default.default.createElement(l__default.default.Fragment,null,l__default.default.createElement("path",{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",fill:m__default.default.gray400})),viewBox:"0 0 12 12"})}});var ge=f36Icon.generateIconComponent({name:"ContentfulLogoIcon",viewBox:"0 0 28 28",path:l__default.default.createElement(l__default.default.Fragment,null,l__default.default.createElement("path",{fill:"#1773EB",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"}),l__default.default.createElement("path",{fill:"#E44F20",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"}),l__default.default.createElement("path",{fill:"#FFDA00",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"}),l__default.default.createElement("path",{fill:"#1773EB",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"}),l__default.default.createElement("path",{fill:"#E44F20",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"}))});var fe=()=>({menuList:emotion.css({minWidth:0,[p.xsmall]:{minWidth:"250px"}})});var B=e=>{let{trigger:t,children:o,testId:r="cf-ui-navbar-menu-list",onOpen:a,onClose:n}=e,i=fe();return l__default.default.createElement(f36Menu.Menu,{onOpen:a,onClose:n},l__default.default.createElement(f36Menu.Menu.Trigger,null,t),l__default.default.createElement(f36Menu.Menu.List,{className:i.menuList,testId:r},o))};function ot(e,t){let V=e,{logo:o,promotions:r,switcher:a,mainNavigation:n,secondaryNavigation:i,account:s,mobileNavigation:c,className:g,contentMaxWidth:P="100%",testId:M="cf-ui-navbar",variant:f="wide"}=V,N=b(V,["logo","promotions","switcher","mainNavigation","secondaryNavigation","account","mobileNavigation","className","contentMaxWidth","testId","variant"]),y=ce({contentMaxWidth:P,variant:f});return l__default.default.createElement(f36Core.Flex,h(d({},N),{ref:t,testId:M,className:emotion.cx(y.container,g),as:"header"}),l__default.default.createElement(f36Core.Flex,{as:"nav",className:y.navigation,justifyContent:"space-between",gap:"spacingXs"},l__default.default.createElement(f36Core.Flex,{alignItems:"center",gap:"spacingL"},o||l__default.default.createElement(ge,{className:y.logo}),c&&l__default.default.createElement(B,{trigger:l__default.default.createElement(f36Button.Button,{className:y.mobileNavigationButton,startIcon:l__default.default.createElement(f36Icons.ListIcon,{size:"medium"})},"Menu")},c),n&&l__default.default.createElement(f36Core.Flex,{className:y.mainNavigation,"aria-label":"Main Navigation",gap:"spacingXs"},n)),l__default.default.createElement(f36Core.Flex,{alignItems:"center",gap:"spacingXs"},l__default.default.createElement(f36Core.Flex,{alignItems:"center"},r),l__default.default.createElement(f36Core.Flex,{alignItems:"center"},a),l__default.default.createElement(f36Core.Flex,{alignItems:"center",gap:"spacingXs"},i&&l__default.default.createElement(f36Core.Flex,{className:y.secondaryNavigationWrapper,"aria-label":"Secondary Navigation",gap:"spacingXs"},i),s&&l__default.default.createElement(f36Core.Flex,{className:y.account,"aria-label":"Account Navigation",gap:"spacingXs"},s)))))}var Ne=l__default.default.forwardRef(ot);var rt={warning:m__default.default.colorWarning,negative:m__default.default.colorNegative,info:m__default.default.blue500},ye=()=>({navbarAccount:emotion.css({cursor:"pointer",background:"none",position:"relative",outline:"none",overflow:"visible",borderRadius:"50%",border:"none",padding:0,"&:hover img":{filter:"brightness(0.9)"}},k(),E()),notificationIcon:e=>emotion.css({position:"absolute",top:0,right:0,height:m__default.default.spacingS,width:m__default.default.spacingS,borderRadius:"50%",border:`2px solid ${m__default.default.gray100}`,backgroundColor:rt[e],transform:"translate(30%, -30%)"})});function mt(e,t){let N=e,{children:o,className:r,testId:a="cf-ui-navbar-account-trigger",avatar:n,label:i="Account menu",initials:s,username:c,hasNotification:g,notificationVariant:P="warning"}=N,M=b(N,["children","className","testId","avatar","label","initials","username","hasNotification","notificationVariant"]),f=ye();return l__default.default.createElement(B,{trigger:l__default.default.createElement("div",null,l__default.default.createElement(f36Tooltip.Tooltip,{placement:"bottom",content:i,showDelay:600,usePortal:!0},l__default.default.createElement(f36Core.Flex,h(d({as:"button"},M),{ref:t,className:emotion.cx(f.navbarAccount,r),testId:a,alignItems:"center","aria-label":i}),l__default.default.createElement(f36Avatar.Avatar,{src:n,initials:s,size:"small",variant:"user"}),g?l__default.default.createElement("span",{className:f.notificationIcon(P)}):null)))},o)}var K=l__default.default.forwardRef(mt);function Q({ariaLabel:e}){return l__default.default.createElement(f36Skeleton.SkeletonContainer,{svgWidth:24,svgHeight:24,ariaLabel:e,backgroundColor:m__default.default.gray300,foregroundColor:m__default.default.gray200},l__default.default.createElement(f36Skeleton.SkeletonImage,{width:24,height:24,radiusX:12,radiusY:12}))}var $="1px",Se=()=>emotion.css({backgroundColor:m__default.default.blue100,border:`${$} solid ${m__default.default.blue400}`,color:m__default.default.blue600,"&:hover":{backgroundColor:m__default.default.blue100}}),Pe={display:"flex",justifyContent:"center",padding:`calc(${m__default.default.spacing2Xs} - ${$}) calc(${m__default.default.spacingXs} - ${$})`,alignItems:"center",background:"none",gap:m__default.default.spacing2Xs},Me=({hasTitle:e})=>({navbarItem:emotion.css(Pe,{appearance:"none",background:"none",border:`${$} solid transparent`,margin:0,outline:"none",fontSize:m__default.default.fontSizeM,lineHeight:m__default.default.lineHeightM,fontWeight:m__default.default.fontWeightMedium,position:"relative",textAlign:"left",whiteSpace:"nowrap",cursor:"pointer",hyphens:"auto",textDecoration:"none",color:m__default.default.gray800,boxSizing:"border-box",transition:`color ${m__default.default.transitionDurationShort} ${m__default.default.transitionEasingCubicBezier}`,borderRadius:m__default.default.borderRadiusMedium,height:"30px",padding:e?void 0:`calc(${m__default.default.spacing2Xs} - ${$})`,"&:hover":{backgroundColor:f36Utils.hexToRGBA(m__default.default.gray900,.05)},"&:hover::before":{opacity:1,scale:"1"},"&:active::before":{backgroundColor:"rgba(255, 255, 255, 0.1)"},"&:disabled":{cursor:"auto"},"& svg":{transition:`fill ${m__default.default.transitionDurationShort} ${m__default.default.transitionEasingCubicBezier}`},"& > svg, & > span":{zIndex:m__default.default.zIndexDefault}},k(),E()),navbarItemMenuTrigger:emotion.css({paddingRight:m__default.default.spacingXs}),isActive:Se(),icon:emotion.css({height:"20px",width:"20px",boxSizing:"content-box",display:e?"none":"block",[p.small]:{height:"16px",width:"16px",padding:e?"2px 0":"2px"},[p.large]:{display:"block"}})}),we=()=>({itemSkeleton:emotion.css(Pe)});var Ce=()=>({navbarItemIcon:emotion.css({"&:last-child&:not(:only-child)":{marginLeft:m__default.default.spacing2Xs},"img&":{borderRadius:m__default.default.borderRadiusSmall,maxWidth:m__default.default.spacingM,maxHeight:m__default.default.spacingM}})});var A=({icon:e,isActive:t,className:o})=>{let s=e.props,{className:r,size:a}=s,n=b(s,["className","size"]),i=Ce();return l__default.default.cloneElement(e,d({className:emotion.cx(r,i.navbarItemIcon,o),size:a||"small",isActive:t},n))};var ft="button";function Nt(e,t){let se=e,{as:o=ft,icon:r,label:a,title:n,children:i,className:s,isActive:c,testId:g="cf-ui-navbar-item",onOpen:P,onClose:M}=se,f=b(se,["as","icon","label","title","children","className","isActive","testId","onOpen","onClose"]),N=Me({hasTitle:!!n}),y=ht(e),V=n&&y,z=l__default.default.createElement(o,h(d({},f),{ref:t,"data-test-id":g,className:emotion.cx(N.navbarItem,s,{[N.navbarItemMenuTrigger]:V,[N.isActive]:c}),"aria-label":n?"":a}),r&&l__default.default.createElement(A,{className:N.icon,icon:r,isActive:c}),n&&l__default.default.createElement("span",null,n),V&&l__default.default.createElement(ve,{size:"tiny",isActive:c}));return n||(z=l__default.default.createElement("div",null,l__default.default.createElement(f36Tooltip.Tooltip,{content:a,placement:"bottom",showDelay:600,usePortal:!0},z))),y?l__default.default.createElement(B,{trigger:z,testId:g,onOpen:P,onClose:M},i):z}var ht=e=>!!e.children,ee=l__default.default.forwardRef(Nt);var te=({estimatedWidth:e})=>{let t=we();return l__default.default.createElement(f36Skeleton.SkeletonContainer,{className:t.itemSkeleton,svgWidth:e,svgHeight:28,backgroundColor:m__default.default.gray300,foregroundColor:m__default.default.gray200},l__default.default.createElement(f36Skeleton.SkeletonText,{lineHeight:18,numberOfLines:1,offsetTop:2,radiusX:m__default.default.borderRadiusSmall,radiusY:m__default.default.borderRadiusSmall}))};var ke=()=>({navbarMenuItem:emotion.css({display:"flex",justifyContent:"flex-start",alignItems:"center"})});var wt="button";function Ct(e,t){let g=e,{as:o=wt,icon:r,title:a,className:n}=g,i=b(g,["as","icon","title","className"]),s=ke(),c=At(e);return l__default.default.createElement(f36Menu.Menu.Item,h(d({},i),{ref:t,as:o,className:emotion.cx(s.navbarMenuItem,n)}),r?l__default.default.createElement(A,{icon:r}):c&&Ee,l__default.default.createElement("span",null,a),r&&c?Ee:null)}var Ee=l__default.default.createElement(A,{icon:l__default.default.createElement(f36Icons.ArrowSquareOutIcon,null)}),At=e=>e.as==="a"&&e.target==="_blank",oe=l__default.default.forwardRef(Ct);var re=({ariaLabel:e})=>l__default.default.createElement(f36Menu.Menu.Item,null,l__default.default.createElement(f36Core.Flex,{alignItems:"center",gap:m__default.default.spacingXs},l__default.default.createElement(f36Skeleton.SkeletonContainer,{svgHeight:16,svgWidth:18},l__default.default.createElement(f36Skeleton.SkeletonImage,{width:16,height:16})),l__default.default.createElement(f36Skeleton.SkeletonContainer,{svgHeight:16,svgWidth:190,ariaLabel:e},l__default.default.createElement(f36Skeleton.SkeletonBodyText,{numberOfLines:1}))));var Le=()=>({navbarSwitcher:emotion.css({color:m__default.default.gray600,flexShrink:1,fontWeight:m__default.default.fontWeightMedium,maxWidth:"100%",minHeight:"unset",padding:`${m__default.default.spacing2Xs} ${m__default.default.spacingXs}`,"&:hover":{backgroundColor:f36Utils.hexToRGBA(m__default.default.gray900,.05)}},k(),E()),switcherSpaceName:emotion.css({"&:has(> span:last-child:nth-child(3))":{minWidth:"12ch"},maxWidth:"15vw",[p.xsmall]:{maxWidth:"50vw"},[p.small]:{maxWidth:"10vw"},[p.medium]:{maxWidth:"50vw"}}),switcherEnvIcon:emotion.css({[p.small]:{width:"16px",height:"16px"}}),switcherSpaceNameTruncation:emotion.css({flexShrink:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"})});function We({isAlias:e,envVariant:t,className:o}){let r=t==="master"?m__default.default.green600:m__default.default.gray600;return e?l__default.default.createElement(f36Icons.EnvironmentAliasIcon,{color:r,className:o,size:"medium"}):l__default.default.createElement(f36Icons.EnvironmentIcon,{color:r,className:o,size:"medium"})}var X=({estimatedWidth:e})=>l__default.default.createElement(f36Skeleton.SkeletonContainer,{svgWidth:e,svgHeight:18,backgroundColor:m__default.default.gray300,foregroundColor:m__default.default.gray200},l__default.default.createElement(f36Skeleton.SkeletonText,{lineHeight:18,numberOfLines:1,radiusX:m__default.default.borderRadiusSmall,radiusY:m__default.default.borderRadiusSmall}));function Xt(e,{start:t=5,end:o=6}={}){if(e.length<=t+o)return [e,void 0,void 0];let r=t>0?e.slice(0,t):"",a=o>0?e.slice(-o):"",n=e.slice(t,e.length-o);return [r,n,a]}var Ve=({value:e,styles:t,envVariant:o,type:r})=>{let[a,n,i]=typeof e=="string"?Xt(e):[],s=l.useMemo(()=>r==="environment"&&o==="master"?"green600":"gray600",[r,o]);return a!==void 0?l__default.default.createElement(f36Typography.Text,{fontColor:s},l__default.default.createElement("span",null,a),n&&l__default.default.createElement("span",{className:t.switcherSpaceNameTruncation},n),i&&l__default.default.createElement("span",null,i)):l__default.default.createElement(f36Typography.Text,{fontColor:s},e)};function zt(e,t){let N=e,{children:o,className:r,envVariant:a,isAlias:n,testId:i="cf-ui-navbar-switcher",ariaLabel:s="Space and Environment Navigation",space:c,environment:g,isLoading:P}=N,M=b(N,["children","className","envVariant","isAlias","testId","ariaLabel","space","environment","isLoading"]),f=Le();return l__default.default.createElement(f36Button.Button,h(d({},M),{"aria-label":s,className:emotion.cx(f.navbarSwitcher,r),endIcon:a&&l__default.default.createElement(We,{envVariant:a,isAlias:n,className:f.switcherEnvIcon}),ref:t,testId:i,variant:"transparent"}),l__default.default.createElement(f36Core.Flex,{alignItems:"center",className:f.switcherSpaceName,flexDirection:"row"},P?l__default.default.createElement(X,{estimatedWidth:148}):l__default.default.createElement(f36Core.Flex,{gap:m__default.default.spacing2Xs,alignItems:"center"},o?l__default.default.createElement(f36Typography.Text,{fontColor:"gray600"},o):l__default.default.createElement(l__default.default.Fragment,null,l__default.default.createElement(Ve,{type:"space",value:c,styles:f}),l__default.default.createElement(f36Icons.CaretRightIcon,{size:"tiny",color:m__default.default.gray500}),l__default.default.createElement(Ve,{envVariant:a,type:"environment",value:g,styles:f})))))}var ae=l__default.default.forwardRef(zt);var De=()=>({navbarBadge:emotion.css({display:"flex",justifyContent:"center",alignItems:"center",background:"none",border:`1px solid ${m__default.default.purple600}`,margin:0,outline:"none",fontSize:m__default.default.fontSizeS,lineHeight:m__default.default.lineHeightS,fontWeight:m__default.default.fontWeightMedium,textAlign:"center",padding:`0 ${m__default.default.spacingXs}`,textDecoration:"none",color:`${m__default.default.purple600}!important`,borderRadius:"1.75rem",userSelect:"none"})});var jt="div";function qt(e,t){let c=e,{as:o=jt,children:r,className:a,testId:n="cf-ui-navbar-badge"}=c,i=b(c,["as","children","className","testId"]),s=De();return l__default.default.createElement(o,h(d({},i),{ref:t,className:emotion.cx(s.navbarBadge,a),"data-test-id":n}),r)}var Re=l__default.default.forwardRef(qt);var ze=()=>({navbarMenuItem:emotion.css({display:"flex",justifyContent:"flex-start",alignItems:"center",gap:m__default.default.spacingXs}),menuList:emotion.css({minWidth:0,marginLeft:"-24px",marginTop:"10px",[p.xsmall]:{minWidth:"250px",margin:0}})});var Ge=e=>{let{title:t,icon:o,children:r,testId:a="cf-ui-navbar-submenu-list",onOpen:n,onClose:i}=e,s=ze();return l__default.default.createElement(f36Menu.Menu.Submenu,{onOpen:n,onClose:i},l__default.default.createElement(f36Menu.Menu.SubmenuTrigger,null,l__default.default.createElement(f36Core.Flex,{className:s.navbarMenuItem},o&&l__default.default.createElement(A,{icon:o}),l__default.default.createElement("span",null,t))),l__default.default.createElement(f36Menu.Menu.List,{className:s.menuList,testId:a},r))};var v=Ne;v.Item=ee;v.ItemSkeleton=te;v.MenuItem=oe;v.MenuItemSkeleton=re;v.MenuDivider=f36Menu.MenuDivider;v.MenuSectionTitle=f36Menu.MenuSectionTitle;v.Submenu=Ge;v.Switcher=ae;v.SwitcherSkeleton=X;v.Account=K;v.AccountSkeleton=Q;v.Badge=Re;
22
23
 
23
24
  exports.Navbar = v;
24
- exports.getNavbarItemActiveStyles = he;
25
+ exports.getNavbarItemActiveStyles = Se;
25
26
  //# sourceMappingURL=out.js.map
26
27
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../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":["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","hexToRGBA","notificationVarianColorMap","getNavbarAccountStyles","Avatar","_NavbarAccount","avatar","initials","username","hasNotification","notificationVariant","NavbarAccount","SkeletonContainer","SkeletonImage","NavbarAccountSkeleton","ariaLabel","getNavbarItemActiveStyles","commonItemStyles","getNavbarItemStyles","title","getNavbarItemSkeletonStyles","getNavbarItemIconStyles","NavbarItemIcon","icon","isActive","iconClassName","size","rest","NAVBAR_ITEM_DEFAULT_TAG","_NavbarItem","Comp","label","isMenuTrigger","isNavbarItemHasMenu","item","NavbarItem","SkeletonText","NavbarItemSkeleton","estimatedWidth","getNavbarMenuItemStyles","ArrowSquareOutIcon","NAVBAR_MENU_ITEM_DEFAULT_TAG","_NavbarMenuItem","itemIsExternalLink","isExternalLink","externalIcon","NavbarMenuItem","SkeletonBodyText","NavbarMenuItemSkeleton","getNavbarSwitcherStyles","EnvironmentAliasIcon","EnvironmentIcon","NavbarEnvVariant","isAlias","envVariant","color","SkeletonDisplayText","NavbarSwitcherSkeleton","CaretRightIcon","Text","splitString","string","startLength","endLength","start","end","remainder","SwitcherLabel","value","type","middle","isEnv","envColor","_NavbarSwitcher","space","environment","isLoading","NavbarSwitcher","getNavbarBadgeStyles","NAVBAR_BADGE_DEFAULT_TAG","_NavbarBadge","NavbarBadge","getNavbarSubmenuStyles","NavbarSubmenu"],"mappings":"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","sourcesContent":["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';\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 minHeight: tokens.spacingL,\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 height: '36px',\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 { Avatar } from '@contentful/f36-avatar';\nimport { Flex } from '@contentful/f36-core';\n\ntype NavbarAccountOwnProps = CommonProps & {\n children: React.ReactNode;\n username: string;\n avatar?: string;\n initials?: string;\n hasNotification?: boolean;\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 initials,\n username,\n hasNotification,\n notificationVariant = 'warning',\n ...otherProps\n } = props;\n const styles = getNavbarAccountStyles();\n\n return (\n <NavbarMenu\n trigger={\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=\"Account Menu\"\n >\n <Avatar\n src={avatar}\n initials={initials}\n size=\"small\"\n variant=\"user\"\n />\n {hasNotification ? (\n <span className={styles.notificationIcon(notificationVariant)} />\n ) : null}\n </Flex>\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';\nimport { hexToRGBA } from '@contentful/f36-utils';\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 // default button reset styles\n margin: 0,\n padding: 0,\n border: 0,\n cursor: 'pointer',\n background: 'none',\n position: 'relative',\n outline: 'none',\n overflow: 'visible',\n borderRadius: '50%',\n '&:before': css({\n content: '\"\"',\n display: 'block',\n position: 'absolute',\n height: '24px',\n width: '24px',\n backgroundColor: 'transparent',\n borderRadius: '50%',\n }),\n '&:hover:before': css({\n backgroundColor: hexToRGBA(tokens.gray300, 0.15),\n }),\n },\n getGlowOnFocusStyles(),\n increaseHitArea(),\n ),\n avatar: css({\n borderRadius: '50%',\n display: 'block',\n height: '24px',\n width: '24px',\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 }),\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';\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({ title });\n const isMenuTrigger = isNavbarItemHasMenu(props);\n const item = (\n <Comp\n {...otherProps}\n ref={ref}\n data-test-id={testId}\n className={cx(\n styles.navbarItem,\n isMenuTrigger && styles.navbarItemMenuTrigger,\n isActive && styles.isActive,\n className,\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 {title && isMenuTrigger && <CaretIcon size=\"tiny\" isActive={isActive} />}\n </Comp>\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\nexport const getNavbarItemActiveStyles = () =>\n css({\n backgroundColor: tokens.blue100,\n border: `1px 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: `${tokens.spacing2Xs} ${tokens.spacingXs}`,\n alignItems: 'center',\n background: 'none',\n gap: tokens.spacing2Xs,\n};\n\nexport const getNavbarItemStyles = ({ title }) => ({\n navbarItem: css(\n commonItemStyles,\n {\n appearance: 'none',\n background: 'none',\n border: '1px 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\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 display: !title ? 'block' : 'none',\n [mqs.small]: {\n height: '16px',\n width: '16px',\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={32}\n backgroundColor={tokens.gray300}\n foregroundColor={tokens.gray200}\n >\n <SkeletonText\n lineHeight={6}\n numberOfLines={1}\n offsetTop={10}\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} 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\ntype NavbarLoadingProps =\n | {\n isLoading?: true;\n environemnt?: never;\n space?: never;\n }\n | {\n isLoading?: false;\n environemnt?: string;\n space?: string;\n };\n\ntype NavbarSwitcherOwnProps = CommonProps &\n NavbarLoadingProps & {\n isCircle?: boolean;\n envVariant?: 'master' | 'non-master';\n isAlias?: boolean;\n ariaLabel?: string;\n environment?: React.ReactNode;\n space?: React.ReactNode;\n };\n\nexport type NavbarSwitcherProps = PropsWithHTMLElement<\n NavbarSwitcherOwnProps,\n 'button'\n>;\n\ntype SwitcherLabelEnvVariantProps =\n | {\n type: 'environment';\n envVariant?: 'master' | 'non-master';\n }\n | {\n type: 'space';\n envVariant?: never;\n };\n\ntype SwitcherLabelProps = SwitcherLabelEnvVariantProps & {\n value: React.ReactNode;\n styles: ReturnType<typeof getNavbarSwitcherStyles>;\n type: 'space' | 'environment';\n envVariant?: 'master' | 'non-master';\n};\n\nconst SwitcherLabel = ({\n value,\n styles,\n envVariant,\n type,\n}: SwitcherLabelProps) => {\n const [start, middle, end] =\n typeof value === 'string' ? splitString(value) : [];\n const isEnv = type === 'environment';\n const envColor = envVariant === 'master' ? 'green600' : 'orange500';\n\n return start !== undefined ? (\n <Text fontColor={isEnv ? envColor : undefined}>\n <span>{start}</span>\n {middle && (\n <span className={styles.switcherSpaceNameTruncation}>{middle}</span>\n )}\n {end && <span>{end}</span>}\n </Text>\n ) : (\n <Text fontColor={isEnv ? envColor : undefined}>{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 styles = getNavbarSwitcherStyles();\n\n return (\n <Button\n {...otherProps}\n aria-label={ariaLabel}\n className={cx(styles.navbarSwitcher, className)}\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 <SwitcherLabel type=\"space\" value={space} styles={styles} />\n <CaretRightIcon size=\"tiny\" color={tokens.gray400} />\n <SwitcherLabel\n envVariant={envVariant}\n type=\"environment\"\n value={environment}\n styles={styles}\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\nexport const getNavbarSwitcherStyles = () => ({\n navbarSwitcher: 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 getGlowOnFocusStyles(),\n increaseHitArea(),\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","import React from 'react';\nimport { NavbarSwitcherProps } from '../NavbarSwitcher/NavbarSwitcher';\nimport { EnvironmentAliasIcon, EnvironmentIcon } 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 color = envVariant === 'master' ? tokens.green600 : tokens.orange500;\n\n return isAlias ? (\n <EnvironmentAliasIcon color={color} className={className} size=\"medium\" />\n ) : (\n <EnvironmentIcon color={color} className={className} size=\"medium\" />\n );\n}\n","import React from 'react';\nimport {\n SkeletonContainer,\n SkeletonDisplayText,\n} 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={24}\n backgroundColor={tokens.gray300}\n foregroundColor={tokens.gray200}\n >\n <SkeletonDisplayText\n lineHeight={24}\n numberOfLines={1}\n radiusX={12}\n radiusY={12}\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/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":["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","useMemo","getNavbarSwitcherStyles","EnvironmentAliasIcon","EnvironmentIcon","NavbarEnvVariant","isAlias","envVariant","color","NavbarSwitcherSkeleton","CaretRightIcon","Text","splitString","string","startLength","endLength","start","end","remainder","SwitcherLabel","value","type","middle","envColor","_NavbarSwitcher","space","environment","isLoading","NavbarSwitcher","getNavbarBadgeStyles","NAVBAR_BADGE_DEFAULT_TAG","_NavbarBadge","NavbarBadge","getNavbarSubmenuStyles","NavbarSubmenu"],"mappings":"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","sourcesContent":["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';\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 minHeight: tokens.spacingL,\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 }),\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, { useMemo } 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} 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\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?: 'master' | 'non-master';\n isAlias?: boolean;\n ariaLabel?: string;\n };\n\nexport type NavbarSwitcherProps = PropsWithHTMLElement<\n NavbarSwitcherOwnProps,\n 'button'\n>;\n\ntype SwitcherLabelEnvVariantProps =\n | {\n type: 'environment';\n envVariant?: 'master' | 'non-master';\n }\n | {\n type: 'space';\n envVariant?: never;\n };\n\ntype SwitcherLabelProps = SwitcherLabelEnvVariantProps & {\n value: React.ReactNode;\n styles: ReturnType<typeof getNavbarSwitcherStyles>;\n type: 'space' | 'environment';\n envVariant?: 'master' | 'non-master';\n};\n\nconst SwitcherLabel = ({\n value,\n styles,\n envVariant,\n type,\n}: SwitcherLabelProps) => {\n const [start, middle, end] =\n typeof value === 'string' ? splitString(value) : [];\n const envColor = useMemo(() => {\n const isEnv = type === 'environment';\n const isMaster = envVariant === 'master';\n if (isEnv && isMaster) {\n return 'green600';\n }\n return 'gray600';\n }, [type, envVariant]);\n\n return start !== undefined ? (\n <Text fontColor={envColor}>\n <span>{start}</span>\n {middle && (\n <span className={styles.switcherSpaceNameTruncation}>{middle}</span>\n )}\n {end && <span>{end}</span>}\n </Text>\n ) : (\n <Text fontColor={envColor}>{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 styles = getNavbarSwitcherStyles();\n\n return (\n <Button\n {...otherProps}\n aria-label={ariaLabel}\n className={cx(styles.navbarSwitcher, className)}\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 <Flex gap={tokens.spacing2Xs} alignItems=\"center\">\n {children ? (\n <Text fontColor=\"gray600\">{children}</Text>\n ) : (\n <>\n <SwitcherLabel type=\"space\" value={space} styles={styles} />\n <CaretRightIcon size=\"tiny\" color={tokens.gray500} />\n <SwitcherLabel\n envVariant={envVariant}\n type=\"environment\"\n value={environment}\n styles={styles}\n />\n </>\n )}\n </Flex>\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\nexport const getNavbarSwitcherStyles = () => ({\n navbarSwitcher: 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 getGlowOnFocusStyles(),\n increaseHitArea(),\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","import React from 'react';\nimport { NavbarSwitcherProps } from '../NavbarSwitcher/NavbarSwitcher';\nimport { EnvironmentAliasIcon, EnvironmentIcon } 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 color = envVariant === 'master' ? tokens.green600 : tokens.gray600;\n\n return isAlias ? (\n <EnvironmentAliasIcon color={color} className={className} size=\"medium\" />\n ) : (\n <EnvironmentIcon color={color} className={className} size=\"medium\" />\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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contentful/f36-navbar",
3
- "version": "5.0.0-alpha.32",
3
+ "version": "5.0.0-alpha.34",
4
4
  "description": "Forma 36: Navbar component",
5
5
  "scripts": {
6
6
  "build": "tsup"