{"version":3,"file":"ResponsiveNav.CcscefIB.mjs","names":["useState","useCallback","c","_Fragment"],"sources":["https:/framerusercontent.com/modules/SZsRu4CrjQ6Xg0ighBUg/rtYKuVl7DfZ99uZeJaqG/ResponsiveNav.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";import{useState,useEffect,useCallback}from\"react\";// The bar and the Resources dropdown are the same surface, so the gradient, the\n// radius and the bevel live here once rather than being restated in two places.\nconst GLASS_BG=\"linear-gradient(180deg, rgba(48,48,56,0.68) 0%, rgba(20,20,26,0.64) 100%)\";const GLASS_BORDER=\"rgba(255,255,255,0.14)\";const GLASS_BEVEL=\"inset 0 1px 0 rgba(255,255,255,0.22), inset 0 -1px 0 rgba(0,0,0,0.22)\";const GLASS_RADIUS=16;// The bar renders 53.5px tall and the dropdown about three times that, so the\n// same 0%-to-100% gradient fades three times more slowly inside the panel and\n// stops reading as the same material. Pinning the fade to the bar's own height\n// keeps the rate identical: the top 54px of both surfaces match, and the panel\n// just holds that end colour for the rest of its height.\n//\n// An opaque base sat here too, added when the panel looked too see-through.\n// That turned out to be the same bug as the missing blur - the panel is a\n// descendant of the bar, the bar used to carry the backdrop-filter, and an\n// element with backdrop-filter forms a backdrop root, so the panel's own blur\n// had nothing left to sample. With the glass moved to its own layer the blur\n// works and the base is gone: both surfaces are now 0.68 falling to 0.64.\nconst GLASS_FADE=54;const GLASS_BG_PANEL=\"linear-gradient(180deg, rgba(48,48,56,0.68) 0px, rgba(20,20,26,0.64) \"+GLASS_FADE+\"px)\";const DEFAULT_LOGO=\"https://framerusercontent.com/images/5gBRezNO1ZcAHwzD2UWFbAbzEw.svg?width=1882&height=351&kb=5\";const NAVCSS=`\n.rnav-a{color:rgba(255,255,255,0.62);text-decoration:none;transition:color .18s ease;cursor:pointer}\n.rnav-a:hover{color:#ffffff}\n.rnav-cta{transition:filter .18s ease, background .18s ease}\n.rnav-cta:hover{filter:brightness(1.08)}\n.rnav-trigger{font:inherit;background:none;border:0;color:rgba(255,255,255,0.62);cursor:pointer}\n.rnav-trigger:hover{color:#ffffff}\n.rnav-trigger:focus-visible{outline:2px solid rgba(255,255,255,0.55);outline-offset:3px;border-radius:4px}\n.rnav-caret{display:inline-flex;transition:transform .2s ease}\n.rnav-pop{position:absolute;top:100%;left:-10px;min-width:186px;\n padding:8px;display:flex;flex-direction:column;gap:2px;z-index:70;\n transition:opacity .2s ease, transform .2s cubic-bezier(.22,1,.36,1), visibility .2s}\n/* Dropdown items hover exactly like the bar's links: the text brightens from\n   0.62 to white via .rnav-a:hover, which they already carry, and nothing else\n   happens. The highlight background is deliberately absent, and the radius went\n   with it since it shaped nothing once the background was gone. */\n.rnav-pop-a{padding:10px 12px;white-space:nowrap;text-decoration:none}\n.rnav-group{font-family:'Hanken Grotesk', sans-serif;text-transform:uppercase;letter-spacing:.08em;\n color:rgba(255,255,255,0.40)}\n/* CookieYes consent banner fades in (2026-09-28, PageSpeed pass). Painted fully\n   opaque, the banner became the page's Largest Contentful Paint for every\n   first-time visitor: it arrives late (after its own scripts) and on a phone it\n   is the biggest block of text, so LCP measured the banner instead of the page.\n   Starting it at opacity 0 means Chrome does not count it, and LCP is the hero\n   copy that paints with the page. Lives here because the nav is on every page.\n   2026-09-30: the fade now starts 2s after the banner arrives. Anything that\n   repaints the banner mid-fade (Framer's hydration lands in that window) makes\n   Chrome count it after all: 5 of 10 test loads on home did, 0 of 10 with the\n   delay. Its buttons take no clicks until it is fully shown, so nobody can\n   accept or reject cookies they cannot see. */\n@keyframes rnavCkyIn{0%{opacity:0;pointer-events:none}99%{pointer-events:none}100%{opacity:1;pointer-events:auto}}\n.cky-consent-container{animation:rnavCkyIn .45s ease-out 2s both}\n@media (prefers-reduced-motion: reduce){.cky-consent-container{animation-duration:.01s}}\n`;const DESKTOP_LINK_HIT_AREA={display:\"inline-flex\",alignItems:\"center\",padding:\"8px 10px\",margin:\"-8px -10px\"};// Endorsement geometry, measured off the logo artwork by pixel scan rather than\n// eyeballed, so it still holds if logoHeight/logoWidth change. In the wordmark's\n// own 1000 x 152.67 viewBox: the mark occupies x 2-154, the wordmark starts at\n// x 192, ascenders top out at y 22 and the baseline sits at y 119.\nconst UNIT_RATIO=38/152.67// lockup's internal gap (mark -> wordmark), of logo height\n;const RULE_RATIO=(119-22)/152.67// wordmark ascender -> baseline, of logo height\n;const WORDMARK_X=192/1e3// where the wordmark starts, of logo width\n;// Inline, the endorsement costs roughly 100px of horizontal room, so the bar has\n// to collapse to the hamburger that much earlier. Measured: without this the two\n// gaps close to 0px between 1040 and 1120 and the endorsement ends up touching\n// the first nav link.\nconst ENDORSEMENT_COST=120;// Phones show the wordmark alone (feedback 2026-09-25). Flip to true to bring\n// back the lockup tucked under the wordmark below phoneBreakpoint.\nconst STACK_ON_PHONE=false;// ---------------------------------------------------------------------------\n// BLUE MIGRATION SHIM (2026-09-09)\n// The CTA colour is baked into every instance's props, and a ControlType.Color\n// prop cannot be pointed at a project colour style (Framer coerces a style path\n// to black), so there is no single token to flip: the ~19 nav instances across\n// the site each carry their own copy of the old value. Rather than edit all of\n// them page by page, legacy values are mapped to the platform ramp here at\n// render time - the same technique this file already uses for stale `links`\n// arrays in ensurePricing/ensureResourcesMenu.\n// Delete this block once every instance carries the new value in the document.\nconst PLATFORM_BLUE=\"rgb(76,167,249)\";const INK=\"rgb(18,18,18)\";const normalizeColour=c=>String(c||\"\").toLowerCase().replace(/\\s+/g,\"\");// Values the CTA fill is being migrated AWAY from: the old indigo accent, and\n// the deep blue an early pass wrongly used (it came from sampling the cookie\n// widget on the platform, not the app itself).\nconst LEGACY_FILLS=new Set([\"rgb(90,96,208)\",\"#5a60d0\",\"rgb(24,99,220)\",\"#1863dc\"]);const LIGHT_LABELS=new Set([\"rgb(255,255,255)\",\"#ffffff\",\"#fff\",\"rgb(255,253,245)\",\"#fffdf5\"]);function migrateCtaFill(colour){return LEGACY_FILLS.has(normalizeColour(colour))?PLATFORM_BLUE:colour;}// White on the light platform blue is 2.51:1 and fails; near-black on it is\n// 7.32:1. So whenever the fill resolves to that blue, a light label is corrected\n// to ink - including on an instance already switched to blue but still carrying\n// a white label.\nfunction migrateCtaLabel(colour,resolvedFill){if(normalizeColour(resolvedFill)!==normalizeColour(PLATFORM_BLUE))return colour;return LIGHT_LABELS.has(normalizeColour(colour))?INK:colour;}// ---------------------------------------------------------------------------\n// /pricing is live — make sure a Pricing link renders even on nav instances\n// that still have the old links array (without it) baked in.\nfunction ensurePricing(links){const list=(links||[]).filter(Boolean);const has=list.some(l=>String(l.url||\"\").replace(/\\/+$/,\"\").toLowerCase()===\"/pricing\"||String(l.label||\"\").trim().toLowerCase()===\"pricing\");if(has)return list;const pricing={label:\"Pricing\",url:\"/pricing\"};const aboutIdx=list.findIndex(l=>String(l.label||\"\").trim().toLowerCase()===\"about\");if(aboutIdx===-1)return[...list,pricing];return[...list.slice(0,aboutIdx),pricing,...list.slice(aboutIdx)];}// Blog had no nav link at all, and Resources sat beside it as a peer even though\n// both are just \"things to read\". Resources now carries them as a dropdown. The\n// label stays \"Resources\" because that is the word SaaS users already scan for,\n// and \"All Resources\" holds the /resources href so the listing keeps its\n// site-wide nav link. Instances that still carry the old flat array - including\n// the team branches still open against main - are converted here rather than\n// quietly rendering the previous menu.\nconst RESOURCES_CHILDREN=[{label:\"Blog\",url:\"/blog\"},{label:\"Guides & deepdives\",url:\"/resources?category=Guides%20%26%20Deepdives\"},{label:\"Client stories\",url:\"/resources?category=Client%20Stories\"},{label:\"All resources\",url:\"/resources\"}];function ensureResourcesMenu(links){const list=(links||[]).filter(Boolean);const norm=v=>String(v||\"\").trim().toLowerCase();// Strip any query before comparing, so an instance already pointing at a\n// filtered /resources URL is still recognised as the one to convert.\nconst path=v=>norm(v).replace(/\\?.*$/,\"\").replace(/\\/+$/,\"\");const i=list.findIndex(l=>path(l.url)===\"/resources\"||norm(l.label)===\"resources\");if(i===-1)return list;// Idempotent: an instance that already supplies children is left alone.\nif((list[i].children||[]).length)return list;const parent={label:\"Resources\",url:\"\",children:RESOURCES_CHILDREN};// Resources reads as the content shelf, so it sits after the product items\n// rather than splitting Data catalog from Developers. Falls back to its\n// original slot when an instance carries no Developers link.\nconst rest=[...list.slice(0,i),...list.slice(i+1)];const d=rest.findIndex(l=>path(l.url)===\"/developers\"||norm(l.label)===\"developers\");const at=d===-1?i:d+1;return[...rest.slice(0,at),parent,...rest.slice(at)];}/**\n * Responsive Nav — compact glass pill (frosted blur + subtle bevel) in three\n * zones: logo left, nav links, Sign in + CTA right. Collapses to logo +\n * actions + hamburger on narrow screens. On phones the logo, gap and padding\n * tighten so the hamburger stays inside the bar.\n * `transparent` makes the nav float bare over a (dark) hero at the very top, then\n * fade its glass pill back in once the page is scrolled — so it blends at the top\n * but stays legible over light sections below. Leave it off on light pages.\n * `conversionMode` strips the nav to logo + CTA only (no links, no Sign in, no\n * hamburger) — for focused landing pages where the only action is the CTA.\n *\n * `logoHref` is where the wordmark goes, \"/\" by default. On a conversion landing\n * page point it at the page's own path instead: the logo is the one control every\n * visitor already knows how to click, and sending it to the marketing home drops\n * them out of the funnel. When it resolves to the page you are already on, the\n * click is intercepted and scrolls to the top rather than reloading the route.\n *\n * `ctaLabelPhone` is the escape hatch for a long CTA. The bar is one flex row of\n * fixed-width parts, so a label that does not fit does not wrap or shrink — it\n * pushes the pill straight out past the glass and off the screen edge. Measured\n * on /corporate: \"Book a working session\" is 142.6px of text (Hanken Grotesk\n * 600/13.5) plus 28px of padding, against roughly 139px of room beside a 160px\n * logo at 390px, so it overflowed by 12px at 375 and 27px at 360. Empty (the\n * default) keeps ctaLabel at every width, so no other instance changes.\n *\n * `endorsement` puts \"by RavenPack\" next to the logo, joined by a hairline sized\n * to the wordmark (not to the mark — a full-height rule reads as a bar competing\n * with the graphic). Setting it also pulls the collapse breakpoint up by\n * ENDORSEMENT_COST, because the extra inline width would otherwise squeeze the\n * gaps shut just above the breakpoint.\n *\n * BELOW phoneBreakpoint it is HIDDEN (feedback 2026-09-25: tucked under the\n * wordmark at ~10px it made the logo look odd on a phone). A CSS media query\n * hides it from the first paint, before hydration measures the viewport, so it\n * never flashes in and out. Inline it did not fit between roughly 421 and 466px\n * anyway. STACK_ON_PHONE restores the tucked-under lockup (indented to the\n * wordmark's own start, x=192/1000 of the artwork) if it is ever wanted back.\n *\n * LAYOUT: space-between, not `1fr auto 1fr`. Equal side columns only look\n * balanced while the two side zones happen to have similar widths — which was\n * true by coincidence (logo 160px vs actions 163px) and stopped being true when\n * the endorsement added ~100px to the left. space-between keeps the two gaps\n * identical whatever the content measures, at the cost of the link row sitting\n * slightly off the pill's centre. Measured: 114/114 with a 52px offset, versus\n * 66/163 with the row centred.\n *\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight auto\n * @framerIntrinsicWidth 1120\n * @framerIntrinsicHeight 56\n * @framerDisableUnlink\n */export default function ResponsiveNav(props){// User request: hide CTA on viewports 420px wide and narrower while preserving\n// existing API, defaults, collapse/phone behavior, sign-in behavior, and styling.\nconst{logoUrl=DEFAULT_LOGO,logoHref=\"/\",logoWidth=132,logoHeight=28,links=[],navFontSize=14.5,endorsement=\"by RavenPack\",endorsementSize=12,endorsementColor=\"rgba(255,255,255,0.58)\",ruleColor=\"rgba(255,255,255,0.24)\",showRule=true,signInLabel=\"Sign in\",signInUrl=\"#\",ctaLabel=\"Try for Free\",ctaLabelPhone=\"\",ctaUrl=\"#\",ctaBg=PLATFORM_BLUE,ctaColor=INK,menuBg=\"rgba(24,24,28,0.82)\",blur=20,transparent=false,conversionMode=false,breakpoint=900,phoneBreakpoint=600}=props;// Legacy instance values are corrected here rather than page by page.\nconst ctaBgFinal=migrateCtaFill(ctaBg);const ctaColorFinal=migrateCtaLabel(ctaColor,ctaBgFinal);// Conversion mode: no links, no Sign in, no hamburger — just logo + CTA.\nconst navLinks=conversionMode?[]:ensureResourcesMenu(ensurePricing(links));const wantsEndorsement=!!String(endorsement||\"\").trim();const[vw,setVw]=useState(1200);const[open,setOpen]=useState(false);const[openMenu,setOpenMenu]=useState(null);const[scrolled,setScrolled]=useState(false);useEffect(()=>{const measure=()=>setVw(window.innerWidth||1200);const onScroll=()=>setScrolled((window.scrollY||window.pageYOffset||0)>32);measure();onScroll();window.addEventListener(\"resize\",measure);window.addEventListener(\"scroll\",onScroll,{passive:true});return()=>{window.removeEventListener(\"resize\",measure);window.removeEventListener(\"scroll\",onScroll);};},[]);// Escape closes whichever menu is open, the drawer included\nuseEffect(()=>{if(typeof document===\"undefined\")return;const onKey=e=>{if(e.key!==\"Escape\")return;setOpenMenu(null);setOpen(false);};document.addEventListener(\"keydown\",onKey);return()=>document.removeEventListener(\"keydown\",onKey);},[]);// collapse earlier when the endorsement is taking up room inline\nconst effBreakpoint=breakpoint+(wantsEndorsement&&!conversionMode?ENDORSEMENT_COST:0);const narrow=vw<effBreakpoint;const isPhone=vw<phoneBreakpoint;const isNarrowPhone=vw<=420;const logo=logoUrl||DEFAULT_LOGO;const home=String(logoHref||\"\").trim()||\"/\";const glass=`blur(${blur}px) saturate(170%)`;// bare (no pill) only when transparent AND still pinned at the very top\nconst solid=!transparent||scrolled||open;const barBlur=solid?glass:\"none\";const lw=isPhone?Math.round(logoWidth*.85):logoWidth;const lh=isPhone?Math.round(logoHeight*.85):logoHeight;const showSignIn=!conversionMode&&!isPhone;const showHamburger=narrow&&!conversionMode;const showCta=conversionMode||!isNarrowPhone;// A long CTA has nothing to give way to on a phone: swap in the short form.\nconst shortCta=String(ctaLabelPhone||\"\").trim();const ctaLabelFinal=isPhone&&shortCta?shortCta:ctaLabel;// Inline when there is room; hidden on phones unless STACK_ON_PHONE.\nconst showEndorsement=wantsEndorsement&&(!isPhone||STACK_ON_PHONE);const stacked=wantsEndorsement&&isPhone&&STACK_ON_PHONE;// Hides the inline lockup from the first paint on a phone, before the\n// viewport has been measured (the server renders at the 1200px default).\nconst phoneCss=STACK_ON_PHONE?\"\":`@media (max-width:${Math.max(0,phoneBreakpoint-.02)}px){.rnav-endorse{display:none !important}}`;const linkFont={fontFamily:\"'Hanken Grotesk', sans-serif\",fontWeight:400,fontSize:navFontSize,lineHeight:1,whiteSpace:\"nowrap\"};const ctaStyle={...linkFont,fontWeight:600,fontSize:13.5,color:ctaColorFinal,background:ctaBgFinal,borderRadius:10,padding:narrow?\"9px 14px\":\"10px 16px\",display:\"inline-flex\",alignItems:\"center\",textDecoration:\"none\"};// gaps either side of the rule are 2x the lockup's own internal gap, equal\n// on both sides — the endorsed-brand construction rule\nconst gutter=Math.round(lh*UNIT_RATIO*2);const ruleH=Math.round(lh*RULE_RATIO);// stacked: shrink with the logo, and hang off the wordmark's start\nconst enSize=stacked?Math.max(9,Math.round(endorsementSize*.85*10)/10):endorsementSize;const enIndent=Math.round(lw*WORDMARK_X);const endorsementText=extra=>/*#__PURE__*/_jsx(\"span\",{style:{...linkFont,fontSize:enSize,letterSpacing:\"0.006em\",color:endorsementColor,...extra},children:endorsement});const normalizePathname=useCallback(pathname=>{if(!pathname)return\"/\";return pathname.length>1?pathname.replace(/\\/+$/,\"\"):pathname;},[]);const shouldHandleSmoothScroll=useCallback((href,e)=>{if(typeof window===\"undefined\"||typeof document===\"undefined\")return false;// NOTE: deliberately no e.defaultPrevented check — Framer's client-side\n// router intercepts same-site anchor clicks at the capture phase and\n// preventDefaults them WITHOUT scrolling to the hash target, so by the\n// time this bubble-phase handler runs the event is always \"handled\".\n// For same-page #hash links we must scroll regardless.\nif(e.button!==0)return false;if(e.metaKey||e.ctrlKey||e.shiftKey||e.altKey)return false;if(!href)return false;try{const resolved=new URL(href,window.location.origin);const current=new URL(window.location.href);if(!resolved.hash)return false;if(resolved.origin!==current.origin)return false;if(normalizePathname(resolved.pathname)!==normalizePathname(current.pathname)){return false;}return true;}catch{return false;}},[normalizePathname]);const handleAnchorClick=useCallback((href,e,afterScroll)=>{if(!shouldHandleSmoothScroll(href,e)){afterScroll?.();return;}e.preventDefault();const hash=new URL(href,window.location.origin).hash;const targetId=decodeURIComponent(hash.slice(1));const target=targetId?document.getElementById(targetId):null;if(target){target.scrollIntoView({behavior:\"smooth\",block:\"start\"});if(window.location.hash!==hash){window.history.replaceState(null,\"\",hash);}}afterScroll?.();},[shouldHandleSmoothScroll]);// The logo is a plain link everywhere except when it points at the page the\n// visitor is already on — a landing page pointing its logo at itself. Letting\n// that navigate would re-run the route to land in the same place, so it is\n// intercepted and scrolled to the top instead. Hash targets fall through to\n// the shared anchor handler; modified clicks and other pages navigate.\nconst handleLogoClick=useCallback(e=>{if(typeof window===\"undefined\")return;if(e.button!==0||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey)return;let resolved;try{resolved=new URL(home,window.location.origin);}catch{return;}if(resolved.hash){handleAnchorClick(home,e);return;}const current=new URL(window.location.href);if(resolved.origin!==current.origin)return;if(normalizePathname(resolved.pathname)!==normalizePathname(current.pathname)){return;}e.preventDefault();window.scrollTo({top:0,behavior:\"smooth\"});if(current.hash){window.history.replaceState(null,\"\",current.pathname+current.search);}},[home,handleAnchorClick,normalizePathname]);// The artwork hugs the LEFT of its box. When an instance's logo box is wider\n// than the art's own ratio (measured on /pricing phones: a 167x20 box for\n// 131px of art), \"contain\" alone centres it and the wordmark drifts inward:\n// 35px from the bar edge against 19.5px for the menu icon. Pinned left, the\n// inset is the bar padding on every page and breakpoint.\nconst logoEl=/*#__PURE__*/_jsx(\"a\",{href:home,style:{display:\"inline-flex\"},\"aria-label\":\"Bigdata.com home\",onClick:handleLogoClick,children:/*#__PURE__*/_jsx(\"img\",{src:logo,alt:\"Bigdata.com\",width:lw,height:lh,style:{width:lw,height:lh,objectFit:\"contain\",objectPosition:\"left center\",display:\"block\"}})});const hamburger=/*#__PURE__*/_jsxs(\"button\",{\"aria-label\":\"Menu\",onClick:()=>setOpen(o=>!o),style:{flex:\"0 0 auto\",width:34,height:34,display:\"inline-flex\",flexDirection:\"column\",alignItems:\"center\",justifyContent:\"center\",gap:5,background:\"transparent\",border:\"none\",padding:0,cursor:\"pointer\"},children:[/*#__PURE__*/_jsx(\"span\",{style:{width:21,height:2,background:\"rgba(255,255,255,0.8)\",borderRadius:2,transition:\"transform .25s ease, opacity .2s ease\",transform:open?\"translateY(7px) rotate(45deg)\":\"none\"}}),/*#__PURE__*/_jsx(\"span\",{style:{width:21,height:2,background:\"rgba(255,255,255,0.8)\",borderRadius:2,transition:\"opacity .2s ease\",opacity:open?0:1}}),/*#__PURE__*/_jsx(\"span\",{style:{width:21,height:2,background:\"rgba(255,255,255,0.8)\",borderRadius:2,transition:\"transform .25s ease\",transform:open?\"translateY(-7px) rotate(-45deg)\":\"none\"}})]});return /*#__PURE__*/_jsxs(\"div\",{style:{// The bar no longer carries the backdrop-filter itself. An element with\n// backdrop-filter forms a backdrop root, and the dropdown panel is a\n// descendant of this bar - so the filter here left the panel nothing to\n// sample and its own blur rendered as nothing at all. The glass moved to\n// a sibling layer below; this element keeps only layout and the border.\n// zIndex 0 makes it a stacking context so that layer's -1 stays inside.\nposition:\"relative\",zIndex:0,width:\"100%\",maxWidth:1200,marginLeft:\"auto\",marginRight:\"auto\",display:\"flex\",justifyContent:\"space-between\",alignItems:\"center\",gap:narrow?12:24,borderRadius:GLASS_RADIUS,padding:narrow?\"8px 12px 8px 16px\":\"9px 14px 9px 22px\",border:\"1px solid \"+(solid?GLASS_BORDER:\"transparent\"),transition:\"border-color .25s ease\",...props.style},children:[/*#__PURE__*/_jsx(\"div\",{\"aria-hidden\":\"true\",style:{position:\"absolute\",inset:0,zIndex:-1,borderRadius:GLASS_RADIUS-1,background:solid?GLASS_BG:\"transparent\",backdropFilter:barBlur,WebkitBackdropFilter:barBlur,boxShadow:solid?GLASS_BEVEL:\"none\",pointerEvents:\"none\",transition:\"background .25s ease, box-shadow .25s ease\"}}),/*#__PURE__*/_jsx(\"style\",{dangerouslySetInnerHTML:{__html:NAVCSS+phoneCss}}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"inline-flex\",flexDirection:stacked?\"column\":\"row\",alignItems:stacked?\"flex-start\":\"center\",gap:stacked?2:0,minWidth:0,flex:\"0 0 auto\"},children:[logoEl,showEndorsement&&stacked&&endorsementText({paddingLeft:enIndent}),showEndorsement&&!stacked&&/*#__PURE__*/_jsxs(\"span\",{className:\"rnav-endorse\",style:{display:\"inline-flex\",alignItems:\"center\"},children:[showRule&&/*#__PURE__*/_jsx(\"span\",{\"aria-hidden\":\"true\",style:{flex:\"0 0 auto\",width:1,height:ruleH,background:ruleColor,margin:`0 ${gutter}px`}}),endorsementText({marginLeft:showRule?0:gutter+6})]})]}),!narrow&&!conversionMode&&// 0 1 auto: the safety valve if a future link is added — this zone\n// gives way before the logo or the CTA do\n/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",alignItems:\"center\",gap:24,flex:\"0 1 auto\",minWidth:0},children:navLinks.map((l,i)=>{const kids=(l.children||[]).filter(c=>c&&c.label);if(!kids.length)return /*#__PURE__*/_jsx(\"a\",{href:l.url,className:\"rnav-a\",style:{...linkFont,...DESKTOP_LINK_HIT_AREA},onClick:e=>handleAnchorClick(l.url,e),children:l.label},i);const isOpen=openMenu===i;return /*#__PURE__*/_jsxs(\"div\",{style:{position:\"relative\",display:\"inline-flex\",// the wrapper reaches down to meet the panel so the\n// pointer never crosses a dead gap and lose the hover\npaddingBottom:14,marginBottom:-14},onMouseEnter:()=>setOpenMenu(i),onMouseLeave:()=>setOpenMenu(null),// opened by keyboard, so it also has to close when\n// focus tabs past the last item in the panel\nonBlur:e=>{if(!e.currentTarget.contains(e.relatedTarget))setOpenMenu(null);},children:[/*#__PURE__*/_jsxs(\"button\",{type:\"button\",className:\"rnav-trigger\",\"aria-expanded\":isOpen,\"aria-haspopup\":\"true\",onClick:()=>setOpenMenu(isOpen?null:i),style:{...linkFont,...DESKTOP_LINK_HIT_AREA,gap:5},children:[l.label,/*#__PURE__*/_jsx(\"span\",{className:\"rnav-caret\",\"aria-hidden\":\"true\",style:{transform:isOpen?\"rotate(180deg)\":\"none\"},children:/*#__PURE__*/_jsx(\"svg\",{width:\"9\",height:\"6\",viewBox:\"0 0 9 6\",fill:\"none\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M1 1.5L4.5 4.5L8 1.5\",stroke:\"currentColor\",strokeWidth:\"1.4\",strokeLinecap:\"round\",strokeLinejoin:\"round\"})})})]}),/*#__PURE__*/_jsx(\"div\",{className:\"rnav-pop\",style:{background:GLASS_BG_PANEL,backdropFilter:glass,WebkitBackdropFilter:glass,borderRadius:GLASS_RADIUS,border:\"1px solid \"+GLASS_BORDER,boxShadow:GLASS_BEVEL+\", 0 16px 34px rgba(0,0,0,0.34)\",visibility:isOpen?\"visible\":\"hidden\",opacity:isOpen?1:0,transform:isOpen?\"translateY(0)\":\"translateY(-6px)\"},children:kids.map((c,j)=>/*#__PURE__*/_jsx(\"a\",{href:c.url,className:\"rnav-a rnav-pop-a\",style:linkFont,onClick:e=>handleAnchorClick(c.url,e,()=>setOpenMenu(null)),children:c.label},j))})]},i);})}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",gap:narrow?10:18,flex:\"0 0 auto\"},children:[showSignIn&&/*#__PURE__*/_jsx(\"a\",{href:signInUrl,className:\"rnav-a\",style:{...linkFont,...DESKTOP_LINK_HIT_AREA},onClick:e=>handleAnchorClick(signInUrl,e),children:signInLabel}),showCta&&/*#__PURE__*/_jsx(\"a\",{href:ctaUrl,className:\"rnav-cta\",style:ctaStyle,onClick:e=>handleAnchorClick(ctaUrl,e),children:ctaLabelFinal}),showHamburger&&hamburger]}),narrow&&!conversionMode&&/*#__PURE__*/_jsxs(\"div\",{style:{position:\"absolute\",top:\"calc(100% + 10px)\",right:0,minWidth:220,background:menuBg,backdropFilter:glass,WebkitBackdropFilter:glass,borderRadius:16,border:\"1px solid rgba(255,255,255,0.14)\",boxShadow:\"0 18px 40px rgba(0,0,0,0.40), inset 0 1px 0 rgba(255,255,255,0.18)\",padding:12,display:\"flex\",flexDirection:\"column\",gap:4,zIndex:60,transformOrigin:\"top right\",opacity:open?1:0,transform:open?\"translateY(0)\":\"translateY(-8px)\",pointerEvents:open?\"auto\":\"none\",transition:\"opacity .22s ease, transform .22s cubic-bezier(.22,1,.36,1)\"},children:[navLinks.map((l,i)=>{const kids=(l.children||[]).filter(c=>c&&c.label);if(!kids.length)return /*#__PURE__*/_jsx(\"a\",{href:l.url,className:\"rnav-a\",onClick:e=>handleAnchorClick(l.url,e,()=>setOpen(false)),style:{...linkFont,fontSize:navFontSize+1,padding:\"13px 14px\",borderRadius:8},children:l.label},i);// Hover cannot open anything on a touch screen, so in the drawer\n// the parent is a heading and its children are always listed.\nreturn /*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\"},children:[/*#__PURE__*/_jsx(\"div\",{className:\"rnav-group\",style:{fontSize:navFontSize-2,padding:\"12px 14px 5px\",lineHeight:1},children:l.label}),kids.map((c,j)=>/*#__PURE__*/_jsx(\"a\",{href:c.url,className:\"rnav-a\",onClick:e=>handleAnchorClick(c.url,e,()=>setOpen(false)),style:{...linkFont,fontSize:navFontSize+1,padding:\"13px 14px 13px 26px\",borderRadius:8},children:c.label},j))]},i);}),isPhone&&/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"div\",{style:{height:1,background:\"rgba(255,255,255,0.10)\",margin:\"8px 4px\"}}),/*#__PURE__*/_jsx(\"a\",{href:signInUrl,className:\"rnav-a\",onClick:e=>handleAnchorClick(signInUrl,e,()=>setOpen(false)),style:{...linkFont,fontSize:navFontSize+1,padding:\"13px 14px\",borderRadius:8},children:signInLabel})]}),isNarrowPhone&&/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"div\",{style:{height:1,background:\"rgba(255,255,255,0.10)\",margin:\"8px 4px\"}}),/*#__PURE__*/_jsx(\"a\",{href:ctaUrl,className:\"rnav-cta\",onClick:e=>handleAnchorClick(ctaUrl,e,()=>setOpen(false)),style:{...ctaStyle,padding:\"10px 14px\",width:\"100%\",justifyContent:\"center\",boxSizing:\"border-box\",marginTop:6},children:ctaLabelFinal})]})]})]});}addPropertyControls(ResponsiveNav,{logoUrl:{type:ControlType.String,title:\"Logo URL\",defaultValue:DEFAULT_LOGO},logoHref:{type:ControlType.String,title:\"Logo link\",description:\"Where the wordmark goes. On a landing page set it to that page's own path so the logo does not drop the visitor back onto the marketing site; pointing it at the current page scrolls to the top instead of reloading.\",defaultValue:\"/\",placeholder:\"/\"},logoWidth:{type:ControlType.Number,title:\"Logo W\",defaultValue:132,min:40,max:400},logoHeight:{type:ControlType.Number,title:\"Logo H\",defaultValue:28,min:16,max:120},navFontSize:{type:ControlType.Number,title:\"Nav Size\",defaultValue:14.5,min:10,max:24,step:.5},endorsement:{type:ControlType.String,title:\"Endorsement\",description:\"Sits right of the logo; hidden on phones. Empty hides it everywhere. Setting it also collapses the bar 120px earlier so the gaps never close.\",defaultValue:\"by RavenPack\",placeholder:\"by RavenPack\"},endorsementSize:{type:ControlType.Number,title:\"Endors. size\",defaultValue:12,min:8,max:20,step:.5},endorsementColor:{type:ControlType.Color,title:\"Endors. color\",defaultValue:\"rgba(255,255,255,0.58)\"},showRule:{type:ControlType.Boolean,title:\"Hairline\",defaultValue:true},ruleColor:{type:ControlType.Color,title:\"Hairline color\",defaultValue:\"rgba(255,255,255,0.24)\"},links:{type:ControlType.Array,title:\"Links\",control:{type:ControlType.Object,controls:{label:{type:ControlType.String,title:\"Label\",defaultValue:\"Link\"},url:{type:ControlType.String,title:\"URL\",defaultValue:\"/\"},children:{type:ControlType.Array,title:\"Dropdown\",description:\"Leave empty for a plain link. With items, the label becomes a menu and its own URL is ignored.\",control:{type:ControlType.Object,controls:{label:{type:ControlType.String,title:\"Label\",defaultValue:\"Item\"},url:{type:ControlType.String,title:\"URL\",defaultValue:\"/\"}}},maxCount:6}}},defaultValue:[{label:\"How it works\",url:\"/how-it-works\"},{label:\"Data catalog\",url:\"/data-catalog\"},{label:\"Developers\",url:\"/developers\"},{label:\"Resources\",url:\"\",children:RESOURCES_CHILDREN},{label:\"Pricing\",url:\"/pricing\"},{label:\"About\",url:\"/about\"}]},signInLabel:{type:ControlType.String,title:\"Sign in\",defaultValue:\"Sign in\"},signInUrl:{type:ControlType.String,title:\"Sign in URL\",defaultValue:\"#\"},ctaLabel:{type:ControlType.String,title:\"CTA\",defaultValue:\"Try for Free\"},ctaLabelPhone:{type:ControlType.String,title:\"CTA (phone)\",description:\"Short form used below the phone breakpoint. The bar cannot wrap or shrink a long CTA, so it overflows the pill instead. Empty keeps the main label at every width.\",defaultValue:\"\",placeholder:\"same as CTA\"},ctaUrl:{type:ControlType.String,title:\"CTA URL\",defaultValue:\"#\"},ctaBg:{type:ControlType.Color,title:\"CTA bg\",defaultValue:\"rgb(76,167,249)\"},ctaColor:{type:ControlType.Color,title:\"CTA text\",defaultValue:\"rgb(18,18,18)\"},menuBg:{type:ControlType.Color,title:\"Menu bg\",defaultValue:\"rgba(24,24,28,0.82)\"},blur:{type:ControlType.Number,title:\"Blur\",defaultValue:20,min:0,max:40},transparent:{type:ControlType.Boolean,title:\"Transparent at top\",defaultValue:false},conversionMode:{type:ControlType.Boolean,title:\"Conversion mode\",defaultValue:false},breakpoint:{type:ControlType.Number,title:\"Collapse <\",defaultValue:900,min:480,max:1280},phoneBreakpoint:{type:ControlType.Number,title:\"Phone <\",defaultValue:600,min:320,max:760}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ResponsiveNav\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any\",\"framerSupportedLayoutHeight\":\"auto\",\"framerIntrinsicWidth\":\"1120\",\"framerDisableUnlink\":\"\",\"framerIntrinsicHeight\":\"56\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ResponsiveNav.map"],"mappings":"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"}