{"version":3,"file":"DeliveryTimeline-CsglYlOF.js","names":["useEffect","useTimeline","$","_c","t0","Symbol","for","_temp7","section","document","querySelector","pin","parentElement","wrap","container","line","lineFill","steps","querySelectorAll","desktopQuery","window","matchMedia","reduceQuery","active","map","_temp","dotStops","slideX","slideOn","slideFrame","slideTime","snapped","clamp","_temp2","mix","_temp3","power2In","_temp4","power2Out","_temp5","expoInOut","t_1","t","setOn","index_0","on","index","classList","toggle","measure","desktop","matches","forEach","_temp6","style","width","transform","filter","scale","styles","getComputedStyle","content","clientWidth","parseFloat","paddingLeft","paddingRight","gap","columnGap","visible","length","basis","step_0","step","flexBasis","scrollWidth","spacer","top","offsetTop","offsetHeight","left","offsetLeft","height","lineSize","offsetWidth","step_1","dot","center","fillAt","time","stops","marks","i","span","paintFill","amount_0","amount","stopSlide","cancelAnimationFrame","applySlide","x","t1","undefined","blur","runSlide","forward","immediate","endTime","startTime","started","performance","now","frame","delta","elapsed","scale_0","blur_0","travel","requestAnimationFrame","syncSteps","time_0","immediate_0","add","index_1","on_0","remove","progress","scroll","scrollY","getBoundingClientRect","distance","top_0","start","innerHeight","end","render","time_1","forward_0","onScroll","onResize","addEventListener","passive","removeEventListener","t_0","from","to","value","min","max","Math","_","ScrollRevealHeading","Typography","useTimeline","defaultSteps","label","title","body","DeliveryTimeline","t0","$","_c","t1","undefined","heading","t2","accent","t3","paragraph","t4","steps","t5","t6","t7","t8","t9","Symbol","for","t10","map","_temp","t11","t12","step","index"],"sources":["../../src/components/features/povio/collaboration/useTimeline.ts","../../src/components/features/povio/collaboration/DeliveryTimeline.tsx"],"sourcesContent":["import { useEffect } from \"react\";\nexport function useTimeline() {\n  useEffect(() => {\n    const section = document.querySelector<HTMLElement>(\"[data-timeline-pin]\");\n    const pin = section?.parentElement;\n    if (section && pin) {\n      const wrap = section.querySelector<HTMLElement>(\".timeline_wrap\");\n      const container = section.querySelector<HTMLElement>(\".timeline_container\");\n      const line = section.querySelector<HTMLElement>(\".timeline_line\");\n      const lineFill = section.querySelector<HTMLElement>(\".timeline_line_fill\");\n      const steps = [...section.querySelectorAll<HTMLElement>(\".timeline_step_wrap\")];\n      const desktopQuery = window.matchMedia(\"(min-width: 992px)\");\n      const reduceQuery = window.matchMedia(\"(prefers-reduced-motion: reduce)\");\n      const active = steps.map((_, index) => index === 0);\n      let dotStops: number[] = [0, 0, 0, 0, 0];\n      let slideX = 0;\n      let slideOn = false;\n      let slideFrame = 0;\n      const slideDuration = 1.31;\n      let slideTime = 0;\n      let snapped = false;\n\n      const clamp = (value: number, min: number, max: number) => Math.min(max, Math.max(min, value));\n      const mix = (from: number, to: number, amount: number) => from + (to - from) * amount;\n      const power2In = (t: number) => t * t;\n      const power2Out = (t: number) => 1 - (1 - t) ** 2;\n      const expoInOut = (t: number) => {\n        if (t <= 0 || t >= 1) {\n          return clamp(t, 0, 1);\n        }\n        return t < 0.5 ? 2 ** (20 * t - 10) / 2 : (2 - 2 ** (-20 * t + 10)) / 2;\n      };\n\n      const setOn = (index: number, on: boolean) => {\n        active[index] = on;\n        steps[index].classList.toggle(\"is-on\", on);\n      };\n\n      const measure = () => {\n        if (!wrap || !container || !line) {\n          return;\n        }\n        const desktop = desktopQuery.matches;\n        steps.forEach((step) => {\n          step.style.flexBasis = \"\";\n        });\n        container.style.width = \"\";\n        container.style.transform = \"\";\n        container.style.filter = \"\";\n        container.style.scale = \"\";\n        if (desktop) {\n          const styles = getComputedStyle(wrap);\n          const content = wrap.clientWidth - parseFloat(styles.paddingLeft) - parseFloat(styles.paddingRight);\n          const gap = parseFloat(getComputedStyle(container).columnGap) || 0;\n          const visible = steps.length <= 4 ? steps.length : 3;\n          const basis = (content - (visible - 1) * gap) / visible;\n          steps.forEach((step) => {\n            step.style.flexBasis = `${basis}px`;\n          });\n          container.style.width = `${container.scrollWidth}px`;\n          const spacer = steps[0].querySelector<HTMLElement>(\".timeline_step_spacer\");\n          if (spacer) {\n            line.style.top = `${spacer.offsetTop + spacer.offsetHeight / 2}px`;\n            line.style.left = \"0px\";\n          }\n          slideX = steps.length >= 5 ? -(steps[2].offsetLeft - steps[0].offsetLeft) : 0;\n          pin.style.height = `${section.offsetHeight * (steps.length >= 5 ? 5 : 3.5)}px`;\n        } else {\n          line.style.top = \"0px\";\n          line.style.left = \"0px\";\n          pin.style.height = \"\";\n          slideX = 0;\n        }\n        const lineSize = desktop ? container.offsetWidth : container.offsetHeight;\n        dotStops = steps.map((step) => {\n          const dot = step.querySelector<HTMLElement>(\".timeline_dot\");\n          if (!dot || lineSize <= 0) {\n            return 0;\n          }\n          const center = desktop\n            ? step.offsetLeft + dot.offsetLeft + dot.offsetWidth / 2\n            : step.offsetTop + dot.offsetTop + dot.offsetHeight / 2;\n          return center / lineSize;\n        });\n      };\n\n      const fillAt = (time: number) => {\n        const stops = [0, dotStops[1] ?? 0, dotStops[2] ?? 0, dotStops[3] ?? 0, dotStops[4] ?? 0, 1];\n        const marks = [0, 1, 2, 3, 4, 4.5];\n        if (time <= 0) {\n          return 0;\n        }\n        if (time >= 4.5) {\n          return 1;\n        }\n        for (let i = 0; i < marks.length - 1; i += 1) {\n          if (time <= marks[i + 1]) {\n            const span = marks[i + 1] - marks[i];\n            return mix(stops[i], stops[i + 1], (time - marks[i]) / span);\n          }\n        }\n        return 1;\n      };\n\n      const paintFill = (amount: number) => {\n        if (!lineFill) {\n          return;\n        }\n        lineFill.style.transform = desktopQuery.matches ? `scaleX(${amount}) translateY(-50%)` : `scaleY(${amount})`;\n      };\n\n      const stopSlide = () => {\n        if (slideFrame) {\n          cancelAnimationFrame(slideFrame);\n        }\n        slideFrame = 0;\n      };\n\n      const applySlide = (x: number, scale = 1, blur = 0) => {\n        if (!container) {\n          return;\n        }\n        container.style.transform = `translate3d(${x}px, 0, 0) scale(${scale})`;\n        container.style.filter = blur > 0.01 ? `blur(${blur}px)` : \"none\";\n      };\n\n      const runSlide = (forward: boolean, immediate: boolean) => {\n        if (!desktopQuery.matches || !container) {\n          return;\n        }\n        if (forward === slideOn && slideFrame) {\n          return;\n        }\n        slideOn = forward;\n        stopSlide();\n        const endTime = forward ? slideDuration : 0;\n        if (immediate || reduceQuery.matches) {\n          slideTime = endTime;\n          applySlide(forward ? slideX : 0);\n          return;\n        }\n        // Reverse the same playhead so position, blur and scale stay continuous.\n        const startTime = slideTime;\n        const started = performance.now();\n        const frame = (now: number) => {\n          const delta = (now - started) / 1000;\n          slideTime = clamp(startTime + (forward ? delta : -delta), 0, slideDuration);\n          const elapsed = slideTime;\n          let scale = 1;\n          if (elapsed < 0.3) {\n            scale = mix(1, 0.985, power2In(elapsed / 0.3));\n          } else if (elapsed < 0.81) {\n            scale = 0.985;\n          } else if (elapsed < 1.31) {\n            scale = mix(0.985, 1, power2Out((elapsed - 0.81) / 0.5));\n          }\n          let blur = 0;\n          if (elapsed >= 0.15 && elapsed < 0.55) {\n            blur = mix(0, 2, power2In((elapsed - 0.15) / 0.4));\n          } else if (elapsed >= 0.55 && elapsed < 1.15) {\n            blur = mix(2, 0, power2Out((elapsed - 0.55) / 0.6));\n          }\n          const travel = clamp((elapsed - 0.15) / 1.1, 0, 1);\n          applySlide(slideX * expoInOut(travel), scale, blur);\n          slideFrame = slideTime !== endTime ? requestAnimationFrame(frame) : 0;\n        };\n        slideFrame = requestAnimationFrame(frame);\n      };\n\n      const syncSteps = (time: number, immediate: boolean) => {\n        if (immediate) {\n          section.classList.add(\"is-instant\");\n        }\n        for (let index = 1; index < steps.length; index += 1) {\n          const on = time >= index;\n          if (on !== active[index]) {\n            setOn(index, on);\n          }\n        }\n        if (immediate) {\n          void section.offsetWidth;\n          section.classList.remove(\"is-instant\");\n        }\n      };\n\n      const progress = () => {\n        const scroll = window.scrollY;\n        if (desktopQuery.matches) {\n          const top = pin.getBoundingClientRect().top + scroll;\n          const distance = pin.offsetHeight - section.offsetHeight;\n          if (distance <= 0) {\n            return 0;\n          }\n          return clamp((scroll - top) / distance, 0, 1);\n        }\n        const top = section.getBoundingClientRect().top + scroll;\n        const start = top - window.innerHeight * 0.4;\n        const end = top + section.offsetHeight - window.innerHeight * 0.4;\n        if (end <= start) {\n          return 0;\n        }\n        return clamp((scroll - start) / (end - start), 0, 1);\n      };\n\n      const render = () => {\n        const time = progress() * 4.5;\n        paintFill(fillAt(time));\n        syncSteps(time, !snapped);\n        if (desktopQuery.matches) {\n          const forward = time >= 2;\n          if (!snapped) {\n            runSlide(forward, true);\n          } else if (forward !== slideOn) {\n            runSlide(forward, reduceQuery.matches);\n          }\n        } else if (container) {\n          applySlide(0, 1, 0);\n          slideOn = false;\n        }\n        snapped = true;\n      };\n\n      const onScroll = () => {\n        render();\n      };\n\n      const onResize = () => {\n        snapped = false;\n        stopSlide();\n        slideOn = false;\n        measure();\n        render();\n      };\n\n      measure();\n      render();\n      window.addEventListener(\"scroll\", onScroll, { passive: true });\n      window.addEventListener(\"resize\", onResize);\n      desktopQuery.addEventListener(\"change\", onResize);\n      return () => {\n        stopSlide();\n        window.removeEventListener(\"scroll\", onScroll);\n        window.removeEventListener(\"resize\", onResize);\n        desktopQuery.removeEventListener(\"change\", onResize);\n      };\n    }\n  }, []);\n}\n","import { ScrollRevealHeading } from \"../ScrollRevealHeading\";\nimport { Typography } from \"@povio/ui\";\nimport { useTimeline } from \"./useTimeline\";\nconst defaultSteps = [\n  {\n    label: \"Step 01\",\n    title: \"Discovery Call\",\n    body: \"We’ll kick things off with a casual chat to get a feel for your goals, challenges, and what you’re looking for.\",\n  },\n  {\n    label: \"Step 02\",\n    title: \"Deep Dive / Interviews\",\n    body: \"Next, we dive into the details, technical, business, or both, to make sure we’re fully aligned. Then, you’ll meet the team we’ve handpicked for your project.\",\n  },\n  {\n    label: \"Step 03\",\n    title: \"KickOff\",\n    body: \"Once you’re ready, we hit the ground running. No drawn-out timelines or delays.\",\n  },\n  {\n    label: \"Step 04\",\n    title: \"Development\",\n    body: \"Our team designs, builds, and tests your website, keeping you in the loop through regular updates and feedback rounds.\",\n  },\n  {\n    label: \"Step 05\",\n    title: \"Ongoing Support\",\n    body: \"We are available for support, updates, and anything else you might need.\",\n  },\n];\nexport function DeliveryTimeline({\n  heading = \"How We Make\",\n  accent = \"It Happen\",\n  paragraph = \"Whether you need full project ownership or just a few extra hands on deck, we’re set up to support you at any scale. We guide you through every step, from scoping and talent matching to kickoff and ongoing support.\",\n  steps = defaultSteps,\n} = {}) {\n  useTimeline();\n  return (\n    <div className=\"happen_pin\">\n      <section\n        className=\"happen_wrap\"\n        data-fullscreen=\"true\"\n        data-timeline-pin\n      >\n        <div className=\"happen_contain\">\n          <div className=\"happen_layout\">\n            <div className=\"happen_content\">\n              <ScrollRevealHeading\n                title={heading}\n                accent={accent}\n              />\n              <Typography\n                as=\"p\"\n                size=\"body\"\n                className=\"main_paragraph\"\n              >\n                {paragraph}\n              </Typography>\n            </div>\n          </div>\n        </div>\n        <div className=\"timeline_wrap\">\n          <div className=\"timeline_container\">\n            <div className=\"timeline_line\">\n              <div className=\"timeline_line_fill\" />\n            </div>\n            {steps.map((step, index) => (\n              <div\n                key={step.label}\n                className={index === 0 ? \"timeline_step_wrap is-on\" : \"timeline_step_wrap\"}\n              >\n                <div className=\"timeline_step_number\">\n                  <Typography\n                    as=\"p\"\n                    size=\"body\"\n                    className=\"timeline_step_label\"\n                  >\n                    {step.label}\n                  </Typography>\n                  <div className=\"timeline_pill_fill\" />\n                </div>\n                <div className=\"timeline_step_spacer\">\n                  <div className=\"timeline_dot\">\n                    <div className=\"timeline_dot_inner\" />\n                  </div>\n                </div>\n                <div className=\"timeline_step_content\">\n                  <Typography\n                    as=\"p\"\n                    size=\"body\"\n                    className=\"timeline_step_title\"\n                  >\n                    {step.title}\n                  </Typography>\n                  <Typography\n                    as=\"p\"\n                    size=\"body\"\n                    className=\"timeline_step_body\"\n                  >\n                    {step.body}\n                  </Typography>\n                </div>\n              </div>\n            ))}\n          </div>\n        </div>\n      </section>\n    </div>\n  );\n}\n"],"mappings":"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"}