{"version":3,"file":"InteractiveAppTour.dwAxTCNX.mjs","names":["useRef","useState","startTransition","useCallback"],"sources":["https:/framerusercontent.com/modules/GH75TAdx9hqivAvTBUd1/pa2S17woTRS6yH0xDxsV/InteractiveAppTour.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useEffect,useRef,useState,useCallback,startTransition}from\"react\";import{motion,AnimatePresence,useInView}from\"framer-motion\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";// FieldHive brand tokens (matched to the hero PhoneDemo / InteractiveQuoteDemo)\nconst INK=\"#081E2B\";const AMBER=\"#F59E0B\";const WHITE=\"#FFFFFF\";const FONT='Inter, \"Inter Placeholder\", sans-serif';// Real iPhone frame PNG — transparent body background AND transparent screen,\n// opaque dark-navy body with the Dynamic Island baked in. Uploaded once and\n// reused across every FieldHive phone component.\nconst FRAME_URL=\"https://framerusercontent.com/images/zrj2jxrWzF5UjAXwrO9odzPaXM.png\";// The frame's transparent screen rectangle, as a % of the frame box. The app\n// screen (and all on-screen overlays: ring, pull-down layers) live inside it.\nconst SCREEN_LEFT=\"5.33%\";const SCREEN_TOP=\"2.61%\";const SCREEN_W=\"89.11%\";const SCREEN_H=\"94.67%\";// Which control each beat presses, and the section it opens:\n//  0 Bookings (month)  → tap the Quotes/Invoices bottom-nav tab   → Quotes\n//  1 Quotes list       → tap the Invoices toggle                  → Invoices\n//  2 Invoices list     → tap the More (hamburger) bottom-nav tab  → More hub\n//  3 More hub          → tap the Catalogue row                    → Catalogue\n//  4 Catalogue         → tap the back control                     → More hub\n//  5 More hub          → tap the Customers row                    → Customers\n//  6 Customers list    → tap the £12,450 customer card            → Customer detail\n//  7 Customer detail   → (no ring) revenue / active quotes / invoices → loop\nfunction transitionMode(prev,cur){if(prev===3&&cur===4||prev===5&&cur===6||prev===6&&cur===7)return\"drill\";if(prev===4&&cur===5)return\"back\";return\"slide\";}/**\n * FieldHive Interactive App Tour\n *\n * A realistic, fixed-ratio iPhone device (same titanium frame as the hero\n * PhoneDemo / InteractiveQuoteDemo) that runs a TAP-ONLY walkthrough which\n * PRESSES THROUGH the whole FieldHive app — the \"everything in one app\" story.\n * There is NO auto-advance: each beat waits on the amber pulsing ring sitting on\n * the REAL control, and a tap presses it to navigate to the next section, with\n * the ring flowing to the next control. The final beat loops back to the first.\n *\n *    1. Bookings   — pull the week view down into the full month calendar; ring\n *                    the Quotes/Invoices bottom-nav tab\n *                    \"Your whole month, organised\"\n *    2. Quotes     — ring the Invoices toggle   \"Every quote in one place\"\n *    3. Invoices   — ring the More nav tab       \"Every invoice — paid & unpaid\"\n *    4. More hub   — ring the Catalogue row      \"Everything under one menu\"\n *    5. Catalogue  — ring the back control       \"Your whole price list\"\n *    6. More hub   — ring the Customers row      \"Your customers\"\n *    7. Customers  — ring the £12,450 card       \"…and what each is worth\"\n *    8. Customer   — no ring; revenue / active quotes / invoices tiles → loop\n *       detail       \"Revenue, active quotes & invoices — per customer\"\n *\n * Beat 1 starts on the week view and animates a downward pull-down reveal into\n * the full-month calendar, framed so the bottom nav shows for the tap. Beats\n * that press a bottom-nav tab or toggle are horizontal slides; pressing a row or\n * card reads as drilling in (scale/slide-in); the back control reverses it.\n * Reduced-motion / SSR renders the first section statically (settled on the\n * month view, ring shown) and tapping still advances.\n *\n * @framerIntrinsicWidth 260\n * @framerIntrinsicHeight 640\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight auto\n */export default function InteractiveAppTour(props){const{screenBookingsWeek={src:\"https://framerusercontent.com/images/aPLtHlAiN2hgMysW4UTlOga2nho.png\",alt:\"FieldHive bookings week view for the day\"},screenBookingsMonth={src:\"https://framerusercontent.com/images/PRygQlJmJennPqlXKBNsVMgRM.png\",alt:\"FieldHive bookings full month calendar view\"},screenQuotes={src:\"https://framerusercontent.com/images/ZVtBuw6UwA5Za4sWEaX0iDUxNM.png\",alt:\"FieldHive quotes list — every quote in one place\"},screenInvoices={src:\"https://framerusercontent.com/images/3VNtcXIlngRVmZGiPN0Zrmivyc.png\",alt:\"FieldHive invoices — paid and unpaid\"},screenMoreHub={src:\"https://framerusercontent.com/images/PEMGrRnCkneaSExIcBt57pOUs.png\",alt:\"FieldHive More menu — Customers, Catalogue and Settings in one place\"},screenCatalogue={src:\"https://framerusercontent.com/images/SGSPxSbFA3XSgMv3fah1XeIsnjk.png\",alt:\"FieldHive catalogue price list, ready to quote\"},screenCustomers={src:\"https://framerusercontent.com/images/KgJBUz4un5Dk7Fi0dBG37o3Ivt8.png\",alt:\"FieldHive customers with per-customer totals\"},screenCustomerDetail={src:\"https://framerusercontent.com/images/Ib0m0cRJo1OYCxMRWw4sgiUFpb4.png\",alt:\"FieldHive customer detail — total revenue, active quotes, invoices\"},maxWidth=260}=props;const beats=[{// Bookings — full month; press the Quotes/Invoices bottom-nav tab.\nimg:screenBookingsMonth,alt:screenBookingsMonth?.alt??\"Bookings — full month\",caption:\"Your whole month, organised\",// Framed low enough that the month grid AND the bottom nav both show,\n// so the ring lands on the real Quotes/Invoices nav tab.\nobjectPosition:\"50% 80%\",ring:{top:\"91%\",left:\"38%\"},pullDown:true},{// Quotes list; press the Invoices toggle.\nimg:screenQuotes,alt:screenQuotes?.alt??\"Quotes\",caption:\"Every quote in one place\",objectPosition:\"50% 0%\",ring:{top:\"27%\",left:\"73%\"}},{// Invoices list; press the More (hamburger) bottom-nav tab.\nimg:screenInvoices,alt:screenInvoices?.alt??\"Invoices\",caption:\"Every invoice — paid & unpaid\",objectPosition:\"50% 100%\",ring:{top:\"91%\",left:\"84%\"}},{// More hub; press the Catalogue row.\nimg:screenMoreHub,alt:screenMoreHub?.alt??\"More menu\",caption:\"Everything under one menu\",objectPosition:\"50% 0%\",ring:{top:\"40%\",left:\"22%\"}},{// Catalogue (Electrical folder); press the back control to return.\nimg:screenCatalogue,alt:screenCatalogue?.alt??\"Catalogue\",caption:\"Your whole price list\",objectPosition:\"50% 0%\",ring:{top:\"11%\",left:\"8%\"}},{// More hub again; press the Customers row.\nimg:screenMoreHub,alt:screenMoreHub?.alt??\"More menu\",caption:\"Your customers\",objectPosition:\"50% 0%\",ring:{top:\"31%\",left:\"22%\"}},{// Customers list; press the £12,450 customer card.\nimg:screenCustomers,alt:screenCustomers?.alt??\"Customers\",caption:\"…and what each is worth\",objectPosition:\"50% 0%\",ring:{top:\"48%\",left:\"28%\"}},{// Customer detail; no ring — the revenue / active quotes / invoices\n// tiles are the payoff, then loop.\nimg:screenCustomerDetail,alt:screenCustomerDetail?.alt??\"Customer detail\",caption:\"Revenue, active quotes & invoices — per customer\",objectPosition:\"50% 0%\",ring:null}];const LAST=beats.length-1;const isStatic=useIsStaticRenderer();const containerRef=useRef(null);const deviceRef=useRef(null);const prevIndexRef=useRef(0);const indexRef=useRef(0);const lastTapRef=useRef(0);const pullRafRef=useRef(0);// Keeps the ring anchored to its last real control while a ring-less beat\n// (the customer detail) fades it out, so it can flow back in on loop.\nconst lastRingRef=useRef({top:\"50%\",left:\"50%\"});const isInView=useInView(containerRef,{amount:.35});const[reducedMotion,setReducedMotion]=useState(false);const[index,setIndex]=useState(0);// True once beat 1's pull-down reveal (week -> month) has been triggered.\nconst[pulled,setPulled]=useState(false);// Measured device width in px — drives proportional radius / island / home\n// bar / ring size. Falls back to maxWidth for the first paint and SSR.\nconst[deviceWidth,setDeviceWidth]=useState(maxWidth);// Detect prefers-reduced-motion (SSR-safe)\nuseEffect(()=>{if(typeof window===\"undefined\"||!window.matchMedia)return;const mq=window.matchMedia(\"(prefers-reduced-motion: reduce)\");const update=()=>startTransition(()=>setReducedMotion(mq.matches));update();if(mq.addEventListener)mq.addEventListener(\"change\",update);else if(mq.addListener)mq.addListener(update);return()=>{if(mq.removeEventListener)mq.removeEventListener(\"change\",update);else if(mq.removeListener)mq.removeListener(update);};},[]);// Measure the rendered device width so the corner radius / Dynamic Island /\n// home indicator / tap ring scale correctly at any size.\nuseEffect(()=>{if(typeof window===\"undefined\")return;const el=deviceRef.current;if(!el)return;const measure=()=>{const width=el.getBoundingClientRect().width;if(width>0)startTransition(()=>setDeviceWidth(width));};measure();if(typeof ResizeObserver===\"undefined\")return;const ro=new ResizeObserver(measure);ro.observe(el);return()=>ro.disconnect();},[]);// Full motion (cross-fades, drill-in, pull-down reveal, pulsing/flowing ring)\n// only when sensible.\nconst animationsOn=!isStatic&&!reducedMotion&&isInView;// On the static renderer (canvas / SSR / export) always show the first\n// section. Reduced-motion users keep their tapped position.\nuseEffect(()=>{if(isStatic&&index!==0)startTransition(()=>setIndex(0));},[isStatic,index]);// Keep the imperative tap handler / transition mode in sync.\nuseEffect(()=>{indexRef.current=index;},[index]);const mode=transitionMode(prevIndexRef.current,index);useEffect(()=>{prevIndexRef.current=index;},[index]);// Drive beat 1's pull-down: start on the week view, then flip `pulled` on the\n// next frame so the month calendar reveals downward (CSS-transitioned).\nuseEffect(()=>{setPulled(false);if(index!==0||!animationsOn||typeof window===\"undefined\")return;const r1=window.requestAnimationFrame(()=>{const r2=window.requestAnimationFrame(()=>startTransition(()=>setPulled(true)));pullRafRef.current=r2;});pullRafRef.current=r1;return()=>{window.cancelAnimationFrame(pullRafRef.current);};},[index,animationsOn]);// TAP-ONLY advance. No auto-advance anywhere. Terminal beat loops to beat 1.\nconst advance=useCallback(()=>{const cur=indexRef.current;startTransition(()=>setIndex(cur===LAST?0:cur+1));},[LAST]);// Debounced so onPointerDown + the synthetic click don't double-fire.\nconst handleTap=useCallback(()=>{const now=Date.now();if(now-lastTapRef.current<350)return;lastTapRef.current=now;advance();},[advance]);const onPointerDown=useCallback(e=>{e.preventDefault();handleTap();},[handleTap]);const onClick=useCallback(_e=>{handleTap();},[handleTap]);const onKeyDown=useCallback(e=>{if(e.key===\"Enter\"||e.key===\" \"){e.preventDefault();handleTap();}},[handleTap]);const active=beats[index]??beats[0];// Ring bookkeeping: remember the last real control so a ring-less beat can\n// fade the ring out in place, and it can flow back in on the next control.\nif(active.ring)lastRingRef.current=active.ring;const ringPos=active.ring??lastRingRef.current;const ringVisible=!!active.ring;// Proportional geometry (px) from the measured device width. The frame PNG\n// now provides the bezel / Dynamic Island / home indicator, so only the\n// screen corner radius and the tap-ring size are derived here.\nconst w=deviceWidth||maxWidth;const screenRadius=Math.round(w*.1);const ringSize=Math.max(40,Math.round(w*.22));const imgBaseStyle={position:\"absolute\",inset:0,width:\"100%\",height:\"100%\",objectFit:\"cover\",pointerEvents:\"none\",userSelect:\"none\"};// The interior of a beat: beat 1 is the two-image pull-down; the rest are a\n// single screenshot anchored per-beat.\nconst renderBeat=(beat,animated)=>{if(beat.pullDown){// Reduced-motion / SSR: no reveal, settle straight on the month view.\nif(!animated){return /*#__PURE__*/_jsx(\"img\",{src:screenBookingsMonth?.src,srcSet:screenBookingsMonth?.srcSet,alt:beat.alt,draggable:false,style:{...imgBaseStyle,objectPosition:beat.objectPosition}});}// Week view underneath; the month calendar reveals downward on top,\n// reading as \"pull the week down into the whole month\".\nconst revealBottom=pulled?0:100;return /*#__PURE__*/_jsxs(\"div\",{style:{position:\"absolute\",inset:0},children:[/*#__PURE__*/_jsx(\"img\",{src:screenBookingsWeek?.src,srcSet:screenBookingsWeek?.srcSet,alt:screenBookingsWeek?.alt??\"Bookings — week\",draggable:false,style:{...imgBaseStyle,objectPosition:beat.objectPosition,zIndex:1,opacity:pulled?0:1,transition:\"opacity 0.9s cubic-bezier(0.4,0,0.2,1) 0.25s\"}}),/*#__PURE__*/_jsx(\"img\",{src:screenBookingsMonth?.src,srcSet:screenBookingsMonth?.srcSet,alt:beat.alt,draggable:false,style:{...imgBaseStyle,objectPosition:beat.objectPosition,zIndex:2,clipPath:`inset(0px 0px ${revealBottom}% 0px)`,transition:\"clip-path 0.9s cubic-bezier(0.4,0,0.2,1)\"}}),/*#__PURE__*/_jsx(motion.div,{\"aria-hidden\":true,initial:{opacity:.9,y:0},animate:pulled?{opacity:0,y:Math.round(w*.14)}:{opacity:[.5,.95,.5],y:[0,Math.round(w*.03),0]},transition:pulled?{duration:.6,ease:\"easeOut\"}:{duration:1.2,ease:\"easeInOut\",repeat:Infinity},style:{position:\"absolute\",top:\"34%\",left:\"50%\",transform:\"translateX(-50%)\",width:Math.round(w*.14),height:Math.max(4,Math.round(w*.014)),borderRadius:999,background:\"rgba(8,30,43,0.28)\",zIndex:4,pointerEvents:\"none\"}})]});}return /*#__PURE__*/_jsx(\"img\",{src:beat.img?.src,srcSet:beat.img?.srcSet,alt:beat.alt,draggable:false,style:{...imgBaseStyle,objectPosition:beat.objectPosition}});};// Per-transition enter/exit variants for the whole beat layer.\nconst beatVariants={enter:m=>{switch(m){case\"drill\":return{opacity:0,x:\"4%\",scale:1.08};case\"back\":return{opacity:0,x:\"-5%\",scale:.94};default:return{opacity:0,x:\"6%\",scale:1};}},center:{opacity:1,x:0,scale:1},exit:m=>{switch(m){case\"drill\":return{opacity:0,x:0,scale:.95};case\"back\":return{opacity:0,x:\"5%\",scale:1.06};default:return{opacity:0,x:\"-6%\",scale:1};}}};const rootStyle={position:\"relative\",width:\"100%\",maxWidth,margin:\"0 auto\",display:\"flex\",flexDirection:\"column\",alignItems:\"center\",gap:14,boxSizing:\"border-box\",fontFamily:FONT,overflow:\"visible\",...props.style};return /*#__PURE__*/_jsxs(\"div\",{ref:containerRef,role:isStatic?undefined:\"button\",tabIndex:isStatic?undefined:0,\"aria-label\":`FieldHive app tour, section ${index+1} of ${beats.length}: ${active.caption}. Tap to continue.`,onPointerDown:isStatic?undefined:onPointerDown,onClick:isStatic?undefined:onClick,onKeyDown:isStatic?undefined:onKeyDown,style:{...rootStyle,cursor:isStatic?undefined:\"pointer\"},children:[/*#__PURE__*/_jsxs(\"div\",{ref:deviceRef,style:{position:\"relative\",width:\"100%\",aspectRatio:\"450 / 920\",overflow:\"visible\",boxSizing:\"border-box\",cursor:isStatic?\"default\":\"pointer\",userSelect:\"none\",WebkitTapHighlightColor:\"transparent\",touchAction:\"manipulation\",filter:\"drop-shadow(0 2px 4px rgba(0,0,0,0.28)) drop-shadow(0 22px 45px rgba(0,0,0,0.45))\"},children:[/*#__PURE__*/_jsxs(\"div\",{style:{position:\"absolute\",left:SCREEN_LEFT,top:SCREEN_TOP,width:SCREEN_W,height:SCREEN_H,borderRadius:screenRadius,overflow:\"hidden\",background:INK},children:[animationsOn?/*#__PURE__*/_jsx(AnimatePresence,{initial:false,custom:mode,mode:\"sync\",children:/*#__PURE__*/_jsx(motion.div,{custom:mode,variants:beatVariants,initial:\"enter\",animate:\"center\",exit:\"exit\",transition:{duration:.5,ease:[.4,0,.2,1]},style:{position:\"absolute\",inset:0},children:renderBeat(active,true)},index)}):// Static / reduced-motion / SSR: no transitions.\n/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",inset:0},children:renderBeat(active,false)}),/*#__PURE__*/_jsxs(motion.div,{\"aria-hidden\":true,initial:false,animate:{top:ringPos.top,left:ringPos.left,opacity:ringVisible?1:0},transition:animationsOn?{duration:.5,ease:[.4,0,.2,1]}:{duration:0},style:{position:\"absolute\",width:ringSize,height:ringSize,marginTop:-Math.round(ringSize/2),marginLeft:-Math.round(ringSize/2),zIndex:5,pointerEvents:\"none\"},children:[/*#__PURE__*/_jsx(motion.span,{style:{position:\"absolute\",inset:0,borderRadius:999,border:`2px solid ${AMBER}`,boxSizing:\"border-box\"},initial:false,animate:animationsOn?{scale:[1,1.6],opacity:[.75,0]}:{scale:1.25,opacity:.3},transition:animationsOn?{duration:1.6,ease:\"easeOut\",repeat:Infinity}:{duration:0}}),/*#__PURE__*/_jsx(motion.span,{style:{position:\"absolute\",top:\"50%\",left:\"50%\",width:Math.round(ringSize*.42),height:Math.round(ringSize*.42),marginTop:-Math.round(ringSize*.21),marginLeft:-Math.round(ringSize*.21),borderRadius:999,background:AMBER,boxShadow:\"0 4px 12px -2px rgba(245,158,11,0.7)\"},initial:false,animate:animationsOn?{scale:[1,.82,1]}:{scale:1},transition:animationsOn?{duration:1.6,ease:\"easeInOut\",repeat:Infinity}:{duration:0}})]})]}),/*#__PURE__*/_jsx(\"img\",{src:FRAME_URL,alt:\"FieldHive app shown on an iPhone\",draggable:false,style:{position:\"absolute\",inset:0,width:\"100%\",height:\"100%\",pointerEvents:\"none\",zIndex:8}})]}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",alignItems:\"center\",gap:10,width:\"100%\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{position:\"relative\",minHeight:22,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",width:\"100%\"},children:/*#__PURE__*/_jsx(AnimatePresence,{mode:\"wait\",initial:false,children:/*#__PURE__*/_jsxs(motion.span,{initial:animationsOn?{opacity:0,y:6}:{opacity:1,y:0},animate:{opacity:1,y:0},exit:{opacity:0,y:-6},transition:{duration:.3},style:{display:\"inline-flex\",alignItems:\"center\",gap:8,color:INK,fontFamily:FONT,fontSize:15,fontWeight:600,letterSpacing:\"-0.01em\",lineHeight:1.2,textAlign:\"center\"},children:[/*#__PURE__*/_jsx(\"span\",{\"aria-hidden\":true,style:{width:7,height:7,borderRadius:999,background:AMBER,flexShrink:0}}),active.caption]},`cap-${index}`)})}),/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",alignItems:\"center\",gap:6},children:beats.map((_,i)=>/*#__PURE__*/_jsx(\"span\",{\"aria-hidden\":true,style:{width:i===index?18:6,height:6,borderRadius:999,background:i===index?AMBER:\"rgba(8,30,43,0.18)\",transition:\"width 0.3s ease, background 0.3s ease\"}},i))}),/*#__PURE__*/_jsxs(motion.div,{\"aria-hidden\":true,animate:animationsOn?{opacity:[.55,1,.55]}:{opacity:.85},transition:animationsOn?{duration:1.8,ease:\"easeInOut\",repeat:Infinity}:{duration:0},style:{display:\"inline-flex\",alignItems:\"center\",gap:7,padding:\"5px 12px\",borderRadius:999,border:`1px solid rgba(245,158,11,0.55)`,background:\"rgba(245,158,11,0.08)\",color:\"#9A6300\",fontFamily:FONT,fontSize:12,fontWeight:600,lineHeight:1,whiteSpace:\"nowrap\"},children:[/*#__PURE__*/_jsx(\"span\",{style:{width:8,height:8,borderRadius:999,background:AMBER,flexShrink:0}}),\"Tap to continue\"]})]})]});}addPropertyControls(InteractiveAppTour,{screenBookingsWeek:{type:ControlType.ResponsiveImage,title:\"1 \\xb7 Bookings Week\"},screenBookingsMonth:{type:ControlType.ResponsiveImage,title:\"1 \\xb7 Bookings Month\"},screenQuotes:{type:ControlType.ResponsiveImage,title:\"2 \\xb7 Quotes\"},screenInvoices:{type:ControlType.ResponsiveImage,title:\"3 \\xb7 Invoices\"},screenMoreHub:{type:ControlType.ResponsiveImage,title:\"4 & 6 \\xb7 More Hub\"},screenCatalogue:{type:ControlType.ResponsiveImage,title:\"5 \\xb7 Catalogue\"},screenCustomers:{type:ControlType.ResponsiveImage,title:\"7 \\xb7 Customers\"},screenCustomerDetail:{type:ControlType.ResponsiveImage,title:\"8 \\xb7 Customer Detail\"},maxWidth:{type:ControlType.Number,title:\"Max Width\",defaultValue:260,min:160,max:420,step:10,unit:\"px\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"InteractiveAppTour\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"auto\",\"framerContractVersion\":\"1\",\"framerIntrinsicWidth\":\"260\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerIntrinsicHeight\":\"640\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./InteractiveAppTour.map"],"mappings":"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"}